{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { WalkerOS } from '@elbwalker/types';\nimport type { ITagger } from './types';\n\nfunction Tagger(config: Partial<ITagger.Config> = {}): ITagger.Instance {\n  const instance: ITagger.Instance = {\n    config: {\n      prefix: config.prefix || 'data-elb',\n    },\n    entity,\n    action: actionMethod,\n    property: propertyMethod,\n    context: contextMethod,\n    globals: globalsMethod,\n  };\n\n  // data-elb=\"entity\"\n  function entity(name: string) {\n    return { [attrName()]: name };\n  }\n\n  // data-elbaction=\"trigger:action\"\n  function actionMethod(\n    triggerActions: ITagger.Trigger | ITagger.KevVal,\n    action?: string,\n  ): WalkerOS.Properties {\n    if (typeof triggerActions === 'string')\n      triggerActions = { [triggerActions]: action || triggerActions };\n\n    return {\n      [attrName('action', false)]: getStr(triggerActions),\n    };\n  }\n\n  // data-elb-entity=\"key:val\"\n  function propertyMethod(\n    entity: string,\n    properties: string | ITagger.KevVal,\n    value?: WalkerOS.Property,\n  ): WalkerOS.Properties {\n    if (typeof properties === 'string')\n      properties = { [properties]: value || '' };\n\n    return { [attrName(entity)]: getStr(properties) };\n  }\n\n  // data-elbcontext=\"key:val\"\n  function contextMethod(\n    context: string | ITagger.KevVal,\n    value?: WalkerOS.Property,\n  ): WalkerOS.Properties {\n    if (typeof context === 'string') context = { [context]: value || '' };\n\n    return { [attrName('context', false)]: getStr(context) };\n  }\n\n  // data-elbglobals=\"key:val\"\n  function globalsMethod(\n    globals: string | ITagger.KevVal,\n    value?: WalkerOS.Property,\n  ): WalkerOS.Properties {\n    if (typeof globals === 'string') globals = { [globals]: value || '' };\n\n    return { [attrName('globals', false)]: getStr(globals) };\n  }\n\n  function attrName(name?: string, isProperty = true) {\n    const separator = isProperty ? '-' : '';\n    name = name ? separator + name : '';\n\n    return instance.config.prefix + name;\n  }\n\n  function getStr(obj: ITagger.KevVal): string {\n    let str = '';\n    let separator = '';\n\n    Object.entries(obj).forEach(([key, val]) => {\n      str += `${separator}${key}:${val}`;\n      separator = ';';\n    });\n\n    return str;\n  }\n\n  return instance;\n}\n\nexport default Tagger;\n"],"mappings":";AAGA,SAAS,OAAO,SAAkC,CAAC,GAAqB;AACtE,QAAM,WAA6B;AAAA,IACjC,QAAQ;AAAA,MACN,QAAQ,OAAO,UAAU;AAAA,IAC3B;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAGA,WAAS,OAAO,MAAc;AAC5B,WAAO,EAAE,CAAC,SAAS,CAAC,GAAG,KAAK;AAAA,EAC9B;AAGA,WAAS,aACP,gBACA,QACqB;AACrB,QAAI,OAAO,mBAAmB;AAC5B,uBAAiB,EAAE,CAAC,cAAc,GAAG,UAAU,eAAe;AAEhE,WAAO;AAAA,MACL,CAAC,SAAS,UAAU,KAAK,CAAC,GAAG,OAAO,cAAc;AAAA,IACpD;AAAA,EACF;AAGA,WAAS,eACPA,SACA,YACA,OACqB;AACrB,QAAI,OAAO,eAAe;AACxB,mBAAa,EAAE,CAAC,UAAU,GAAG,SAAS,GAAG;AAE3C,WAAO,EAAE,CAAC,SAASA,OAAM,CAAC,GAAG,OAAO,UAAU,EAAE;AAAA,EAClD;AAGA,WAAS,cACP,SACA,OACqB;AACrB,QAAI,OAAO,YAAY,SAAU,WAAU,EAAE,CAAC,OAAO,GAAG,SAAS,GAAG;AAEpE,WAAO,EAAE,CAAC,SAAS,WAAW,KAAK,CAAC,GAAG,OAAO,OAAO,EAAE;AAAA,EACzD;AAGA,WAAS,cACP,SACA,OACqB;AACrB,QAAI,OAAO,YAAY,SAAU,WAAU,EAAE,CAAC,OAAO,GAAG,SAAS,GAAG;AAEpE,WAAO,EAAE,CAAC,SAAS,WAAW,KAAK,CAAC,GAAG,OAAO,OAAO,EAAE;AAAA,EACzD;AAEA,WAAS,SAAS,MAAe,aAAa,MAAM;AAClD,UAAM,YAAY,aAAa,MAAM;AACrC,WAAO,OAAO,YAAY,OAAO;AAEjC,WAAO,SAAS,OAAO,SAAS;AAAA,EAClC;AAEA,WAAS,OAAO,KAA6B;AAC3C,QAAI,MAAM;AACV,QAAI,YAAY;AAEhB,WAAO,QAAQ,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,GAAG,MAAM;AAC1C,aAAO,GAAG,SAAS,GAAG,GAAG,IAAI,GAAG;AAChC,kBAAY;AAAA,IACd,CAAC;AAED,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,IAAO,gBAAQ;","names":["entity"]}