-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdist.map
More file actions
1 lines (1 loc) · 10.6 KB
/
dist.map
File metadata and controls
1 lines (1 loc) · 10.6 KB
1
{"version":3,"sources":["src/index.js","src/indexService.js","src/loader.js","src/registry.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;IAEqB,S;AAMnB,qBAAY,OAAZ,EAAmD;AAAA,QAA9B,OAA8B,uEAApB,EAAoB;AAAA,QAAhB,cAAgB;;AAAA;;AAAA;AAAA;AAAA;AAAA;AACjD,SAAK,GAAL,iBAAkB,+BAAlB;AACA,SAAK,UAAL,GAAkB,OAAlB;AACA,SAAK,QAAL,qBAAqB,OAArB;AACA,0EAAuB,cAAvB;AACD;;;;gCAEW,O,EAAwB;AAAA,UAAf,QAAe,uEAAJ,EAAI;AAClC,MAAA,MAAM,CAAC,MAAP,CAAc,KAAK,QAAnB,EAA6B,QAA7B,EAAuC,OAAvC;AACD;;;6BAEe;AAAA;;AAAA,wCAAN,IAAM;AAAN,QAAA,IAAM;AAAA;;AACd,kBAAA,OAAO,EAAC,KAAR,kBAAc,KAAK,GAAnB,SAA2B,IAA3B;AACD;;;6BAEQ,Y,EAAuB;AAAA;;AAAA,yCAAN,IAAM;AAAN,QAAA,IAAM;AAAA;;AAC9B,oGAAqB,OAArB,+BAA6B,YAA7B,EAA2C,KAAK,GAAhD,SAAwD,IAAxD;AACD;;;+BAEU,Y,EAAc,Q,EAAU;AACjC,0EAAqB,SAArB,CAA+B,YAA/B,EAA6C,QAA7C,EAAuD,IAAvD;AACD;;;iCAEY,Y,EAAc,Q,EAAU;AACnC,0EAAqB,WAArB,CAAiC,YAAjC,EAA+C,QAA/C,EAAyD,IAAzD;AACD;;;;;;;AA/BkB,S,CACZ,c,GAAiB,M;AADL,S,CAEZ,mB,GAAsB,C;;;;;;;ACL/B,IAAI,CAAC,GAAG,CAAR;;AAEe,SAAS,QAAT,GAAoB;AACjC,EAAA,CAAC,IAAI,CAAL;AACA,SAAO,CAAP;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLD;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEqB,e;AAanB,2BAAY,SAAZ,EAAuB,UAAvB,EAAqE;AAAA;;AAAA,QAAlC,qBAAkC,uEAAV,YAAM,CAAE,CAAE;;AAAA;;AAAA;AAAA;AAAA,aAZxD;AAYwD;AAAA;AAAA;AAAA,aAXpD;AAWoD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aARzD,IAAI,GAAJ;AAQyD;AAAA;AAAA;AAAA,aAN1D;AACT,QAAA,IAAI,EAAE,cAAA,KAAK;AAAA,iBAAI,8BAAc,KAAK,CAAC,OAApB,EAA6B,KAA7B,CAAJ;AAAA,SADF;AAET,QAAA,IAAI,EAAE,cAAC,KAAD,EAAQ,KAAR;AAAA,iBAAkB,KAAK,CAAC,IAAN,CAAW,KAAX,CAAlB;AAAA,SAFG;AAGT,mBAAW,gBAAA,KAAK;AAAA,iBAAI,qBAAU,KAAK,CAAC,OAAhB,EAAyB;AAAA,mBAAM,8BAAc,KAAd,EAAqB,KAArB,CAAN;AAAA,WAAzB,CAAJ;AAAA;AAHP;AAM0D;AACnE,gEAAkB,SAAlB;AACA,wFAA8B,qBAA9B;AAEA,IAAA,UAAU,CAAC,OAAX,CAAmB,UAAA,IAAI,EAAI;AACzB;AACA,MAAA,KAAK,CAAC,OAAN,CAAc,IAAd,IAAsB,KAAI,CAAC,kBAAL,CAAwB,IAAI,CAAC,CAAD,CAA5B,EAAiC,IAAI,CAAC,CAAD,CAArC,CAAtB,GAAkE,KAAI,CAAC,kBAAL,CAAwB,IAAxB,CAAlE;AACD,KAHD;;AAIA,SAAK,QAAL;;AACA,SAAK,aAAL;AACD;AAED;AACF;AACA;AACA;;;;;uCACqB,S,EAAW,O,EAAS;AAAA;;AACrC,UAAI,CAAC,gBAAgB,CAAC,SAAD,CAArB,EAAkC;;AAClC,gEAAgB,gBAAhB,CAAiC,SAAS,CAAC,QAA3C,EACG,OADH,CACW,UAAA,OAAO;AAAA,eAAI,MAAI,CAAC,cAAL,CAAoB,OAApB,EAA6B,SAA7B,EAAwC,OAAxC,CAAJ;AAAA,OADlB;AAED;;;mCAEc,O,EAAS,S,EAAW,O,EAAS;AAC1C,UAAM,KAAK,GAAG,oCAAoB,OAApB,EAA6B,SAA7B,EAAwC,OAAxC,CAAd;;AACA,8DAAe,GAAf,CAAmB,KAAK,CAAC,EAAzB,EAA6B,KAA7B;AACD;;;kCAEa,K,EAAO;AACnB,UAAI,CAAC,KAAL,EAAY;AACZ,UAAM,IAAI,GAAG,KAAK,SAAL,CAAe,KAAK,CAAC,SAAN,CAAgB,cAA/B,CAAb;;AACA,UAAI,KAAK,CAAC,SAAN,CAAgB,cAAhB,KAAmC,MAAvC,EAA+C;AAC7C,QAAA,MAAM,CAAC,MAAP,CAAc,KAAd,EAAqB;AACnB,UAAA,QAAQ,EAAE,IAAI,CAAC,KAAD,8BAAQ,IAAR,0BADK;AAEnB,UAAA,MAAM,EAAE;AAFW,SAArB;AAID,OALD,MAKO;AACL,QAAA,MAAM,CAAC,MAAP,CAAc,KAAd,EAAqB;AACnB,UAAA,QAAQ,EAAE,IAAI,CAAC,KAAD,CADK;AAEnB,UAAA,MAAM,EAAE;AAFW,SAArB;AAID;AACF;;;+BAEU;AAAA;;AACT,yBAAI,wDAAe,MAAf,EAAJ,EAA6B,OAA7B,CAAqC,UAAA,KAAK;AAAA,eAAI,MAAI,CAAC,aAAL,CAAmB,KAAnB,CAAJ;AAAA,OAA1C;AACD;;;kCAEoB;AAAA,wCAAN,IAAM;AAAN,QAAA,IAAM;AAAA;;AACnB,gEAAgB,IAAhB,CAAqB;AAAE,QAAA,IAAI,EAAJ;AAAF,OAArB;AACD;;;oCAEe;AAAA;;AACd,gEAAgB,OAAhB,CAAwB,UAAC,KAAD,EAAQ,CAAR,EAAc;AACpC,YAAI,CAAC,MAAM,CAAC,mBAAZ,EAAiC;AAC/B,UAAA,MAAM,CAAC,qBAAP,CAA6B,YAAM;AACjC,0CAAc,KAAd,EAAqB,MAArB;;AACA,gBAAI,CAAC,KAAK,4BAAA,MAAI,aAAJ,aAAgB,MAAhB,GAAyB,CAAnC,EAAsC;AACpC,0CAAA,MAAI,yBAAJ;AACD;AACF,WALD;AAMD,SAPD,MAOO;AACL,UAAA,MAAM,CAAC,mBAAP,CAA2B,YAAM;AAC/B,0CAAc,KAAd,EAAqB,MAArB;;AACA,gBAAI,CAAC,KAAK,4BAAA,MAAI,aAAJ,aAAgB,MAAhB,GAAyB,CAAnC,EAAsC;AACpC,0CAAA,MAAI,yBAAJ;AACD;AACF,WALD,EAKG;AAAE,YAAA,OAAO,EAAE;AAAX,WALH;AAMD;AACF,OAhBD;AAiBD;;;6CAEwB,Q,EAAU;AACjC,aAAO,wDAAe,GAAf,CAAmB,QAAnB,CAAP;AACD;;;8BAES,Y,EAAc,Q,EAAU,O,EAAS;AACzC,UAAI,CAAC,kEAAoB,YAApB,CAAL,EAAwC;AACtC,0EAAoB,YAApB,IAAoC,EAApC;AACD;;AAED,wEAAoB,YAApB,EAAkC,IAAlC,CAAuC;AAAE,QAAA,OAAO,EAAP,OAAF;AAAW,QAAA,QAAQ,EAAR;AAAX,OAAvC;AACD;;;gCAEW,Y,EAAc;AACxB,UAAI,CAAC,kEAAoB,YAApB,CAAL,EAAwC;AACtC,QAAA,OAAO,CAAC,IAAR,0BAA+B,YAA/B;AACA,eAAO,KAAP;AACD;;AAED,wEAAoB,YAApB,EAAkC,OAAlC,CAA0C,UAAC,GAAD,EAAM,CAAN;AAAA,eAAY,GAAG,CAAC,MAAJ,CAAW,CAAX,EAAc,CAAd,CAAZ;AAAA,OAA1C;;AAEA,aAAO,KAAP;AACD;;;4BAEO,Y,EAAc,Q,EAAmB;AAAA,yCAAN,IAAM;AAAN,QAAA,IAAM;AAAA;;AACvC,UAAI,CAAC,kEAAoB,YAApB,CAAL,EAAwC,OAAO,KAAP;;AACxC,wEAAoB,YAApB,EAAkC,OAAlC,CAA0C,UAAA,GAAG,EAAI;AAC/C;AACA,YAAI,GAAG,CAAC,OAAJ,CAAY,GAAZ,KAAoB,QAAxB,EAAkC;AAClC,QAAA,GAAG,SAAH,IAAA,GAAG,WAAH,YAAA,GAAG,CAAE,QAAL,CAAc,KAAd,CAAoB,GAAG,CAAC,OAAxB,EAAiC,IAAjC;AACD,OAJD;;AAMA,aAAO,IAAP;AACD;;;8BAES,M,EAAQ;AAChB,aAAO,sDAAc,MAAd,CAAP;AACD;;;;;;;;AAGH,SAAS,gBAAT,CAA0B,SAA1B,EAAqC;AACnC,MAAI,CAAC,2BAAgB,SAAS,CAAC,QAA1B,CAAL,EAA0C;AACxC,IAAA,OAAO,CAAC,KAAR,qDAC+C,SAAS,CAAC,IADzD,4CAEE,SAFF;AAIA,WAAO,KAAP;AACD;;AACD,SAAO,IAAP;AACD;;;;;;;;;;;ACvID;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAT,CAAuB,KAAvB,EAA8B,cAA9B,EAA8C;AACnD,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,SAAV,CAAoB,KAAK,CAAC,OAA1B,EAAmC,KAAK,CAAC,OAAzC,EAAkD,cAAlD,CAAjB,CADmD,CAEnD;;AACA,EAAA,KAAK,CAAC,OAAN,CAAc,SAAd,GAA0B,QAA1B;AACA,SAAO,MAAM,CAAC,MAAP,CAAc,KAAd,EAAqB;AAC1B,IAAA,QAAQ,EAAR,QAD0B;AAE1B,IAAA,cAAc,EAAd,cAF0B;AAG1B,IAAA,MAAM,EAAE;AAHkB,GAArB,CAAP;AAKD;;AAEM,SAAS,mBAAT,CAA6B,OAA7B,EAAsC,SAAtC,EAAiD,OAAjD,EAA0D;AAC/D,SAAO;AACL,IAAA,EAAE,EAAE,iBADC;AAEL,IAAA,MAAM,EAAE,KAFH;AAGL,IAAA,OAAO,EAAP,OAHK;AAIL,IAAA,SAAS,EAAT,SAJK;AAKL,IAAA,OAAO,EAAP;AALK,GAAP;AAOD","file":"dist","sourcesContent":["import ComponentLoader from './loader';\nimport setIndex from './indexService';\n\nexport default class Component {\n static loaderPriority = 'idle'\n static loaderPriorityDelay = 0\n\n #loaderInstance\n\n constructor(element, options = {}, loaderInstance) {\n this.$id = `$id_${setIndex()}`;\n this.$container = element;\n this.$options = { ...options };\n this.#loaderInstance = loaderInstance;\n }\n\n $setOptions(options, DEFAULTS = {}) {\n Object.assign(this.$options, DEFAULTS, options);\n }\n\n $debug(...args) {\n console.debug(this.$id, ...args);\n }\n\n $publish(subscription, ...args) {\n this.#loaderInstance.publish(subscription, this.$id, ...args);\n }\n\n $subscribe(subscription, callback) {\n this.#loaderInstance.subscribe(subscription, callback, this);\n }\n\n $unsubscribe(subscription, callback) {\n this.#loaderInstance.unsubscribe(subscription, callback, this);\n }\n}\n\nexport { ComponentLoader };\n","let i = 0;\n\nexport default function setIndex() {\n i += 1;\n return i;\n}\n","import { runInView, isValidSelector } from './util';\nimport { bindComponent, createRegistryEntry } from './registry';\n\nexport default class ComponentLoader {\n #idleQueue = [];\n #subscriptions = {};\n #idleQueueDoneCallback\n #container\n #registry = new Map();\n\n #loaders = {\n high: entry => bindComponent(entry.element, this),\n idle: (entry, queue) => queue.push(entry),\n 'in-view': entry => runInView(entry.element, () => bindComponent(entry, this)),\n };\n\n constructor(container, components, idleQueueDoneCallback = () => {}) {\n this.#container = container;\n this.#idleQueueDoneCallback = idleQueueDoneCallback;\n\n components.forEach(comp => {\n // eslint-disable-next-line no-unused-expressions\n Array.isArray(comp) ? this._registerComponent(comp[0], comp[1]) : this._registerComponent(comp);\n });\n this._loadAll();\n this._runIdleQueue();\n }\n\n /**\n * Binds a component to the DOM, and registers the instance\n * @param {Component} Component\n */\n _registerComponent(Component, options) {\n if (!isValidComponent(Component)) return;\n this.#container.querySelectorAll(Component.selector)\n .forEach(element => this._addToRegistry(element, Component, options));\n }\n\n _addToRegistry(element, Component, options) {\n const entry = createRegistryEntry(element, Component, options);\n this.#registry.set(entry.id, entry);\n }\n\n loadComponent(entry) {\n if (!entry) return;\n const load = this.getLoader(entry.Component.loaderPriority);\n if (entry.Component.loaderPriority === 'idle') {\n Object.assign(entry, {\n instance: load(entry, this.#idleQueue),\n loaded: 'pending',\n });\n } else {\n Object.assign(entry, {\n instance: load(entry),\n loaded: true,\n });\n }\n }\n\n _loadAll() {\n [...this.#registry.values()].forEach(entry => this.loadComponent(entry));\n }\n\n _addToQueue(...args) {\n this.#idleQueue.push({ args });\n }\n\n _runIdleQueue() {\n this.#idleQueue.forEach((entry, i) => {\n if (!window.requestIdleCallback) {\n window.requestAnimationFrame(() => {\n bindComponent(entry, this);\n if (i === this.#idleQueue.length - 1) {\n this.#idleQueueDoneCallback();\n }\n });\n } else {\n window.requestIdleCallback(() => {\n bindComponent(entry, this);\n if (i === this.#idleQueue.length - 1) {\n this.#idleQueueDoneCallback();\n }\n }, { timeout: 4000 });\n }\n });\n }\n\n _getComponentsBySelector(selector) {\n return this.#registry.get(selector);\n }\n\n subscribe(subscription, callback, context) {\n if (!this.#subscriptions[subscription]) {\n this.#subscriptions[subscription] = [];\n }\n\n this.#subscriptions[subscription].push({ context, callback });\n }\n\n unsubscribe(subscription) {\n if (!this.#subscriptions[subscription]) {\n console.warn(`The subscript '${subscription}' doesn't exist.`);\n return false;\n }\n\n this.#subscriptions[subscription].forEach((sub, i) => sub.splice(i, 1));\n\n return false;\n }\n\n publish(subscription, originId, ...args) {\n if (!this.#subscriptions[subscription]) return false;\n this.#subscriptions[subscription].forEach(sub => {\n // Don't pass the message to the origin component\n if (sub.context.$id === originId) return;\n sub?.callback.apply(sub.context, args);\n });\n\n return true;\n }\n\n getLoader(loader) {\n return this.#loaders[loader];\n }\n}\n\nfunction isValidComponent(Component) {\n if (!isValidSelector(Component.selector)) {\n console.error(\n `ComponentLoader: The Component subclass, '${Component.name}', needs a valid 'selector' property.`,\n Component,\n );\n return false;\n }\n return true;\n}\n","import { guid } from './util';\n\n/**\n * Binds a component to the DOM\n * @param {HTMLElement} DOMElement\n * @param {Component} Component\n */\nexport function bindComponent(entry, loaderInstance) {\n const instance = new entry.Component(entry.element, entry.options, loaderInstance);\n // eslint-disable-next-line no-param-reassign\n entry.element.component = instance;\n return Object.assign(entry, {\n instance,\n loaderInstance,\n loaded: true,\n });\n}\n\nexport function createRegistryEntry(element, Component, options) {\n return {\n id: guid(),\n loaded: false,\n element,\n Component,\n options,\n };\n}\n"]}