@studiometa/js-toolkit 2.0.0-alpha.1 → 2.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Base/index.d.ts +29 -47
- package/Base/index.js +144 -171
- package/Base/managers/ChildrenManager.d.ts +6 -6
- package/Base/managers/ChildrenManager.js +95 -119
- package/Base/managers/EventsManager.d.ts +9 -9
- package/Base/managers/EventsManager.js +128 -161
- package/Base/managers/OptionsManager.d.ts +50 -5
- package/Base/managers/OptionsManager.js +115 -116
- package/Base/managers/RefsManager.js +62 -73
- package/Base/managers/ServicesManager.d.ts +14 -3
- package/Base/managers/ServicesManager.js +78 -77
- package/Base/utils.js +5 -8
- package/README.md +12 -70
- package/decorators/index.js +1 -2
- package/decorators/withBreakpointManager.d.ts +4 -4
- package/decorators/withBreakpointManager.js +37 -75
- package/decorators/withBreakpointObserver.d.ts +2 -2
- package/decorators/withBreakpointObserver.js +54 -77
- package/decorators/withDrag.d.ts +3 -3
- package/decorators/withDrag.js +17 -41
- package/decorators/withExtraConfig.d.ts +3 -3
- package/decorators/withExtraConfig.js +2 -24
- package/decorators/withIntersectionObserver.d.ts +2 -2
- package/decorators/withIntersectionObserver.js +17 -56
- package/decorators/withMountWhenInView.d.ts +3 -3
- package/decorators/withMountWhenInView.js +23 -51
- package/helpers/createApp.d.ts +3 -3
- package/helpers/createApp.js +10 -12
- package/helpers/importOnInteraction.d.ts +3 -3
- package/helpers/importOnInteraction.js +7 -8
- package/helpers/importWhenIdle.d.ts +3 -3
- package/helpers/importWhenIdle.js +7 -8
- package/helpers/importWhenVisible.d.ts +3 -3
- package/helpers/importWhenVisible.js +9 -16
- package/helpers/index.d.ts +1 -3
- package/helpers/index.js +1 -4
- package/helpers/utils.js +1 -2
- package/index.d.ts +14 -4
- package/index.js +4 -4
- package/index.modern.js +1 -2
- package/index.umd.js +1 -2
- package/package.json +4 -6
- package/services/Service.js +48 -67
- package/services/drag.js +143 -179
- package/services/index.js +1 -2
- package/services/key.js +55 -97
- package/services/load.d.ts +1 -1
- package/services/load.js +21 -50
- package/services/pointer.js +117 -156
- package/services/raf.js +36 -64
- package/services/resize.js +47 -86
- package/services/scroll.js +81 -120
- package/utils/collide/boundingRectToCircle.js +7 -6
- package/utils/collide/collideCircleCircle.js +1 -2
- package/utils/collide/collideCircleRect.js +1 -2
- package/utils/collide/collidePointCircle.js +1 -2
- package/utils/collide/collidePointRect.js +1 -2
- package/utils/collide/collideRectRect.js +1 -2
- package/utils/collide/index.js +1 -2
- package/utils/css/classes.js +2 -3
- package/utils/css/index.js +1 -2
- package/utils/css/matrix.js +1 -2
- package/utils/css/styles.js +3 -8
- package/utils/css/transition.js +67 -140
- package/utils/debounce.js +3 -4
- package/utils/focusTrap.js +4 -5
- package/utils/history.js +13 -20
- package/utils/index.d.ts +2 -1
- package/utils/index.js +2 -2
- package/utils/keyCodes.js +1 -2
- package/utils/math/clamp.js +1 -2
- package/utils/math/clamp01.js +1 -2
- package/utils/math/damp.js +1 -2
- package/utils/math/index.js +1 -2
- package/utils/math/inertiaFinalValue.js +1 -2
- package/utils/math/lerp.js +1 -2
- package/utils/math/map.js +1 -2
- package/utils/math/round.js +1 -2
- package/utils/memoize.d.ts +30 -0
- package/utils/memoize.js +30 -0
- package/utils/nextFrame.js +4 -9
- package/utils/object/autoBind.js +11 -19
- package/utils/object/getAllProperties.js +3 -11
- package/utils/object/index.js +1 -2
- package/utils/object/isObject.js +2 -4
- package/utils/string/index.js +1 -2
- package/utils/string/withLeadingCharacters.js +1 -2
- package/utils/string/withLeadingSlash.js +1 -2
- package/utils/string/withTrailingCharacters.js +1 -2
- package/utils/string/withTrailingSlash.js +1 -2
- package/utils/string/withoutLeadingCharacters.js +1 -2
- package/utils/string/withoutLeadingCharactersRecursive.js +1 -2
- package/utils/string/withoutLeadingSlash.js +1 -2
- package/utils/string/withoutTrailingCharacters.js +1 -2
- package/utils/string/withoutTrailingCharactersRecursive.js +1 -2
- package/utils/string/withoutTrailingSlash.js +1 -2
- package/utils/throttle.js +2 -3
- package/Base/index.js.map +0 -1
- package/Base/managers/ChildrenManager.js.map +0 -1
- package/Base/managers/EventsManager.js.map +0 -1
- package/Base/managers/OptionsManager.js.map +0 -1
- package/Base/managers/RefsManager.js.map +0 -1
- package/Base/managers/ServicesManager.js.map +0 -1
- package/Base/utils.js.map +0 -1
- package/components/Accordion/Accordion.d.ts +0 -83
- package/components/Accordion/Accordion.js +0 -121
- package/components/Accordion/Accordion.js.map +0 -1
- package/components/Accordion/AccordionItem.d.ts +0 -122
- package/components/Accordion/AccordionItem.js +0 -327
- package/components/Accordion/AccordionItem.js.map +0 -1
- package/components/Accordion/index.d.ts +0 -27
- package/components/Accordion/index.js +0 -39
- package/components/Accordion/index.js.map +0 -1
- package/components/Cursor.d.ts +0 -138
- package/components/Cursor.js +0 -167
- package/components/Cursor.js.map +0 -1
- package/components/Draggable.d.ts +0 -49
- package/components/Draggable.js +0 -77
- package/components/Draggable.js.map +0 -1
- package/components/Modal.d.ts +0 -158
- package/components/Modal.js +0 -270
- package/components/Modal.js.map +0 -1
- package/components/Tabs.d.ts +0 -108
- package/components/Tabs.js +0 -195
- package/components/Tabs.js.map +0 -1
- package/components/index.d.ts +0 -6
- package/components/index.js +0 -7
- package/components/index.js.map +0 -1
- package/decorators/index.js.map +0 -1
- package/decorators/withBreakpointManager.js.map +0 -1
- package/decorators/withBreakpointObserver.js.map +0 -1
- package/decorators/withDrag.js.map +0 -1
- package/decorators/withExtraConfig.js.map +0 -1
- package/decorators/withIntersectionObserver.js.map +0 -1
- package/decorators/withMountWhenInView.js.map +0 -1
- package/helpers/createApp.js.map +0 -1
- package/helpers/createBase.d.ts +0 -7
- package/helpers/createBase.js +0 -7
- package/helpers/createBase.js.map +0 -1
- package/helpers/defineComponent.d.ts +0 -11
- package/helpers/defineComponent.js +0 -68
- package/helpers/defineComponent.js.map +0 -1
- package/helpers/importOnInteraction.js.map +0 -1
- package/helpers/importWhenIdle.js.map +0 -1
- package/helpers/importWhenVisible.js.map +0 -1
- package/helpers/index.js.map +0 -1
- package/helpers/utils.js.map +0 -1
- package/index.js.map +0 -1
- package/index.modern.js.map +0 -1
- package/index.umd.js.map +0 -1
- package/services/Service.js.map +0 -1
- package/services/drag.js.map +0 -1
- package/services/index.js.map +0 -1
- package/services/key.js.map +0 -1
- package/services/load.js.map +0 -1
- package/services/pointer.js.map +0 -1
- package/services/raf.js.map +0 -1
- package/services/resize.js.map +0 -1
- package/services/scroll.js.map +0 -1
- package/utils/collide/boundingRectToCircle.js.map +0 -1
- package/utils/collide/collideCircleCircle.js.map +0 -1
- package/utils/collide/collideCircleRect.js.map +0 -1
- package/utils/collide/collidePointCircle.js.map +0 -1
- package/utils/collide/collidePointRect.js.map +0 -1
- package/utils/collide/collideRectRect.js.map +0 -1
- package/utils/collide/index.js.map +0 -1
- package/utils/css/classes.js.map +0 -1
- package/utils/css/index.js.map +0 -1
- package/utils/css/matrix.js.map +0 -1
- package/utils/css/styles.js.map +0 -1
- package/utils/css/transition.js.map +0 -1
- package/utils/debounce.js.map +0 -1
- package/utils/focusTrap.js.map +0 -1
- package/utils/history.js.map +0 -1
- package/utils/index.js.map +0 -1
- package/utils/keyCodes.js.map +0 -1
- package/utils/math/clamp.js.map +0 -1
- package/utils/math/clamp01.js.map +0 -1
- package/utils/math/damp.js.map +0 -1
- package/utils/math/index.js.map +0 -1
- package/utils/math/inertiaFinalValue.js.map +0 -1
- package/utils/math/lerp.js.map +0 -1
- package/utils/math/map.js.map +0 -1
- package/utils/math/round.js.map +0 -1
- package/utils/nextFrame.js.map +0 -1
- package/utils/object/autoBind.js.map +0 -1
- package/utils/object/getAllProperties.js.map +0 -1
- package/utils/object/index.js.map +0 -1
- package/utils/object/isObject.js.map +0 -1
- package/utils/string/index.js.map +0 -1
- package/utils/string/withLeadingCharacters.js.map +0 -1
- package/utils/string/withLeadingSlash.js.map +0 -1
- package/utils/string/withTrailingCharacters.js.map +0 -1
- package/utils/string/withTrailingSlash.js.map +0 -1
- package/utils/string/withoutLeadingCharacters.js.map +0 -1
- package/utils/string/withoutLeadingCharactersRecursive.js.map +0 -1
- package/utils/string/withoutLeadingSlash.js.map +0 -1
- package/utils/string/withoutTrailingCharacters.js.map +0 -1
- package/utils/string/withoutTrailingCharactersRecursive.js.map +0 -1
- package/utils/string/withoutTrailingSlash.js.map +0 -1
- package/utils/throttle.js.map +0 -1
package/utils/throttle.js
CHANGED
package/Base/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../packages/js-toolkit/Base/index.js"],"names":["autoBind","callMethod","getComponentElements","ChildrenManager","RefsManager","ServicesManager","EventsManager","OptionsManager","id","noop","Base","element","Error","__config","name","$id","$el","Object","defineProperty","get","configurable","__options","options","__services","__events","__children","components","__refs","refs","exclude","__excludeFromAutoBind","__debug","proto","getPrototypeOf","config","constructor","$isBase","services","$emit","children","log","window","console","bind","debug","__DEV__","$children","registerAll","$refs","bindRootElement","$services","enableAll","mountAll","$isMounted","unregisterAll","disableAll","updateAll","unbindRootElement","destroyAll","$destroy","value","writable","event","listener","addEventListener","$off","removeEventListener","args","dispatchEvent","CustomEvent","detail","nameOrSelector","map","el","$mount"],"mappings":"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","sourcesContent":["import autoBind from '../utils/object/autoBind.js';\nimport { callMethod, getComponentElements } from './utils.js';\nimport ChildrenManager from './managers/ChildrenManager.js';\nimport RefsManager from './managers/RefsManager.js';\nimport ServicesManager from './managers/ServicesManager.js';\nimport EventsManager from './managers/EventsManager.js';\nimport OptionsManager from './managers/OptionsManager.js';\n\nlet id = 0;\n\nconst noop = function noop() {};\n\n/**\n * @typedef {typeof Base} BaseComponent\n * @typedef {(Base) => Promise<BaseComponent | { default: BaseComponent }>} BaseAsyncComponent\n * @typedef {OptionsManager & { [name:string]: any }} BaseOptions\n * @typedef {{ [name:string]: HTMLElement | HTMLElement[] }} BaseRefs\n * @typedef {{ [nameOrSelector:string]: Base[] | Promise<Base>[] }} BaseChildren\n * @typedef {{ [nameOrSelector:string]: BaseComponent | BaseAsyncComponent }} BaseConfigComponents\n * @typedef {import('./managers/OptionsManager').OptionsSchema} BaseConfigOptions\n * @typedef {import('./managers/ServicesManager.js').ServiceName} ServiceName\n */\n\n/**\n * @typedef {Object} BaseConfig\n * @property {String} name\n * @property {Boolean} [debug]\n * @property {Boolean} [log]\n * @property {String[]} [refs]\n * @property {BaseConfigComponents} [components]\n * @property {BaseConfigOptions} [options]\n */\n\n/**\n * Base class to easily create components.\n *\n * @example\n * ```js\n * class Component extends Base {\n * static config = {\n * name: 'Component',\n * log: true,\n * };\n *\n * mounted() {\n * this.$log('Component is mounted!');\n * }\n * }\n *\n * class App extends Base {\n * static config = {\n * name: 'App',\n * components: {\n * Component,\n * },\n * };\n * }\n *\n * new App(document.body).$mount();\n * ```\n */\nexport default class Base {\n /**\n * The instance parent.\n * @type {Base}\n */\n $parent = null;\n\n /**\n * The instance id.\n * @type {string}\n */\n $id;\n\n /**\n * The root element.\n * @type {HTMLElement}\n */\n $el;\n\n /**\n * The state of the component.\n * @type {Boolean}\n */\n $isMounted = false;\n\n /**\n * This is a Base instance.\n * @type {Boolean}\n */\n static $isBase = true;\n\n /**\n * Get properties to exclude from the autobind call.\n * @return {Array<String|RegExp>}\n */\n get __excludeFromAutoBind() {\n return [\n '$mount',\n '$update',\n '$destroy',\n '$terminate',\n '$log',\n '$on',\n '$once',\n '$off',\n '$emit',\n 'mounted',\n 'loaded',\n 'ticked',\n 'resized',\n 'moved',\n 'keyed',\n 'scrolled',\n 'destroyed',\n 'terminated',\n ];\n }\n\n /**\n * Merge configuration with the parents' configurations.\n *\n * @return {BaseConfig}\n * @private\n */\n get __config() {\n let proto = Object.getPrototypeOf(this);\n let { config } = proto.constructor;\n\n while (proto.constructor.config && proto.constructor.$isBase) {\n config = {\n ...proto.constructor.config,\n ...config,\n };\n\n if (proto.constructor.config.options) {\n config.options = {\n ...proto.constructor.config.options,\n ...config.options,\n };\n }\n\n proto = Object.getPrototypeOf(proto);\n }\n\n return config;\n }\n\n /**\n * @type {BaseConfig}\n */\n static config;\n\n /**\n * @type {ServicesManager}\n */\n __services;\n\n /**\n * The instance services.\n * @type {ServicesManager}\n */\n get $services() {\n const services = this.__services;\n this.$emit('get:services', services);\n return services;\n }\n\n /**\n * @type {RefsManager}\n */\n __refs;\n\n /**\n * @return {RefsManager}\n */\n get $refs() {\n const refs = this.__refs;\n this.$emit('get:refs', refs);\n return refs;\n }\n\n /**\n * @type {BaseOptions}\n */\n __options;\n\n /**\n * @return {BaseOptions}\n */\n get $options() {\n const options = this.__options;\n this.$emit('get:options', options);\n return options;\n }\n\n /**\n * @type {ChildrenManager}\n */\n __children;\n\n /**\n * @return {ChildrenManager}\n */\n get $children() {\n this.__debug('before:getChildren', this.$el, this.__config.components);\n\n const children = this.__children;\n this.$emit('get:children', children);\n\n this.__debug(this, 'after:getChildren', children);\n\n return children;\n }\n\n /**\n * @type {EventsManager}\n */\n __events;\n\n /**\n * Small helper to log stuff.\n *\n * @return {(...args: any) => void}\n */\n get $log() {\n return this.__options.log ? window.console.log.bind(window, `[${this.__config.name}]`) : noop;\n }\n\n /**\n * Small helper to debug information.\n *\n * @return {(...args:any) => void}\n */\n get __debug() {\n return this.__options.debug && typeof window.__DEV__ !== 'undefined' && window.__DEV__\n ? window.console.log.bind(window, `[debug] [${this.$id}]`)\n : noop;\n }\n\n /**\n * Class constructor where all the magic takes place.\n *\n * @param {HTMLElement} element The component's root element dd.\n */\n constructor(element) {\n if (!element) {\n throw new Error('The root element must be defined.');\n }\n\n const { __config } = this;\n\n if (!__config) {\n throw new Error('The `config` static property must be defined.');\n }\n\n if (!__config.name) {\n throw new Error('The `config.name` property is required.');\n }\n\n this.$id = `${__config.name}-${id}`;\n id += 1;\n\n this.$el = element;\n\n if (!('__base__' in this.$el)) {\n Object.defineProperty(this.$el, '__base__', {\n get: () => this,\n configurable: true,\n });\n }\n\n this.__options = new OptionsManager(element, __config.options || {}, __config);\n this.__services = new ServicesManager(this);\n this.__events = new EventsManager(element, this);\n this.__children = new ChildrenManager(this, element, __config.components || {}, this.__events);\n this.__refs = new RefsManager(this, element, __config.refs || [], this.__events);\n\n // Autobind all methods to the instance\n // @todo Maybe remove for performance reason? This pattern can use a lot of memory when creating\n // a large number of instances.\n autoBind(this, {\n exclude: [...this.__excludeFromAutoBind],\n });\n\n this.__debug('constructor', this);\n\n return this;\n }\n\n /**\n * Trigger the `mounted` callback.\n */\n $mount() {\n this.__debug('$mount');\n\n this.$children.registerAll();\n this.$refs.registerAll();\n this.__events.bindRootElement();\n this.$services.enableAll();\n this.$children.mountAll();\n\n callMethod(this, 'mounted');\n this.$isMounted = true;\n return this;\n }\n\n /**\n * Update the instance children.\n */\n $update() {\n this.__debug('$update');\n\n // Undo\n this.$refs.unregisterAll();\n this.$services.disableAll();\n\n // Redo\n this.$children.registerAll();\n this.$refs.registerAll();\n this.$services.enableAll();\n\n // Update\n this.$children.updateAll();\n\n callMethod(this, 'updated');\n return this;\n }\n\n /**\n * Trigger the `destroyed` callback.\n */\n $destroy() {\n this.__debug('$destroy');\n\n this.__events.unbindRootElement();\n this.$refs.unregisterAll();\n this.$services.disableAll();\n this.$children.destroyAll();\n callMethod(this, 'destroyed');\n this.$isMounted = false;\n return this;\n }\n\n /**\n * Terminate a child instance when it is not needed anymore.\n * @return {void}\n */\n $terminate() {\n this.__debug('$terminate');\n\n // First, destroy the component.\n this.$destroy();\n\n // Execute the `terminated` hook if it exists\n callMethod(this, 'terminated');\n\n // Delete the reference to the instance\n // delete this.$el.__base__;\n\n // And update its status to prevent re-instantiation when accessing the\n // parent's `$children` property\n Object.defineProperty(this.$el, '__base__', {\n value: 'terminated',\n configurable: false,\n writable: false,\n });\n }\n\n /**\n * Factory method to generate multiple instance of the class.\n *\n * @param {String} nameOrSelector The selector on which to mount each instance.\n * @return {Array<Base>} A list of the created instance.\n */\n static $factory(nameOrSelector) {\n if (!nameOrSelector) {\n throw new Error(\n 'The $factory method requires a component’s name or selector to be specified.'\n );\n }\n\n return getComponentElements(nameOrSelector).map((el) => new this(el).$mount());\n }\n\n /**\n * Bind a listener function to an event.\n *\n * @param {string} event\n * Name of the event.\n * @param {EventListenerOrEventListenerObject} listener\n * Function to be called.\n * @param {boolean|AddEventListenerOptions} [options]\n * Options for the `removeEventListener` method.\n * @return {() => void}\n * A function to unbind the listener.\n */\n $on(event, listener, options) {\n this.__debug('$on', event, listener, options);\n\n this.$el.addEventListener(event, listener, options);\n\n return () => {\n this.$off(event, listener, options);\n };\n }\n\n /**\n * Unbind a listener function from an event.\n *\n * @param {string} event\n * Name of the event.\n * @param {EventListenerOrEventListenerObject} listener\n * Function to be removed.\n * @param {boolean|EventListenerOptions} [options]\n * Options for the `removeEventListener` method.\n *\n * @return {void}\n */\n $off(event, listener, options) {\n this.__debug('$off', event, listener);\n\n this.$el.removeEventListener(event, listener, options);\n }\n\n /**\n * Emits an event.\n *\n * @param {string} event\n * Name of the event.\n * @param {any[]} args The arguments to apply to the functions bound to this event.\n * @return {void}\n */\n $emit(event, ...args) {\n this.__debug('$emit', event, args);\n\n this.$el.dispatchEvent(\n new CustomEvent(event, {\n detail: args,\n })\n );\n }\n}\n"],"file":"index.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/js-toolkit/Base/managers/ChildrenManager.js"],"names":["getComponentElements","ChildrenManager","base","element","components","eventsManager","__base","__element","__components","__eventsManager","Object","keys","filter","key","startsWith","entries","forEach","name","component","__register","defineProperty","enumerable","configurable","get","elements","length","map","__getChild","instance","el","ComponentClass","__base__","child","then","module","default","__triggerHookForAll","hook","registeredNames","Promise","resolvedInstance","__triggerHook","$isMounted","unbindChild","bindChild"],"mappings":"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","sourcesContent":["import { getComponentElements } from '../utils.js';\n\n/**\n * @typedef {import('../index.js').default} Base\n * @typedef {import('../index.js').BaseComponent} BaseComponent\n * @typedef {import('../index.js').BaseAsyncComponent} BaseAsyncComponent\n * @typedef {import('../index.js').BaseConfigComponents} BaseConfigComponents\n * @typedef {import('./EventsManager.js').default} EventsManager\n */\n\n/**\n * Children manager.\n */\nexport default class ChildrenManager {\n /**\n * @type {Base}\n * @private\n */\n __base;\n\n /**\n * @type {HTMLElement}\n * @private\n */\n __element;\n\n /**\n * @type {BaseConfigComponents}\n * @private\n */\n __components;\n\n /**\n * @type {EventsManager}\n * @private\n */\n __eventsManager;\n\n /**\n * @return {string[]}\n */\n get registeredNames() {\n return Object.keys(this).filter((key) => !key.startsWith('__'));\n }\n\n /**\n * Class constructor.\n * @param {Base} base\n * The component's instance.\n * @param {HTMLElement} element\n * The component's root element\n * @param {BaseConfigComponents} components\n * The children components' classes\n * @param {EventsManager} eventsManager\n */\n constructor(base, element, components, eventsManager) {\n this.__base = base;\n this.__element = element;\n this.__components = components;\n this.__eventsManager = eventsManager;\n }\n\n /**\n * Register instances of all children components.\n */\n registerAll() {\n Object.entries(this.__components).forEach(([name, component]) =>\n this.__register(name, component)\n );\n }\n\n /**\n * Register instance of a child component.\n *\n * @param {string} name\n * The name of the child component.\n * @param {BaseComponent|BaseAsyncComponent} component\n * A Base class or a Promise for async components.\n * @private\n */\n __register(name, component) {\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: true,\n get: () => {\n const elements = getComponentElements(name, this.__element);\n\n if (elements.length === 0) {\n return [];\n }\n\n return elements\n .map((element) => this.__getChild(element, component, name))\n .filter((instance) => instance !== 'terminated');\n },\n });\n }\n\n /**\n * Get a child component's instance.\n *\n * @param {HTMLElement & { __base__?: Base | 'terminated' }} el\n * The root element of the child component.\n * @param {BaseComponent|BaseAsyncComponent} ComponentClass\n * A Base class or a Promise for async components.\n * @param {string} name\n * The name of the child component.\n * @return {Base|Promise|'terminated'}\n * A Base instance or a Promise resolving to a Base instance.\n * @private\n */\n __getChild(el, ComponentClass, name) {\n // Return existing instance if it exists\n if (el.__base__) {\n return el.__base__;\n }\n\n // Return a new instance if the component class is a child of the Base class\n if ('$isBase' in ComponentClass) {\n const child = new ComponentClass(el);\n Object.defineProperty(child, '$parent', { get: () => this.__base });\n return child;\n }\n\n // Resolve async components\n return ComponentClass(this.__base).then((module) => {\n // @ts-ignore\n return this.__getChild(el, module.default ?? module, name);\n });\n }\n\n /**\n * Mount all child component instances.\n */\n mountAll() {\n this.__triggerHookForAll('$mount');\n }\n\n /**\n * Update all child component instances.\n */\n updateAll() {\n this.__triggerHookForAll('$update');\n }\n\n /**\n * Destroy all child component instances.\n */\n destroyAll() {\n this.__triggerHookForAll('$destroy');\n }\n\n /**\n * Execute the given hook for all children instances.\n *\n * @param {'$mount'|'$update'|'$destroy'} hook The hook to execute.\n * @private\n */\n __triggerHookForAll(hook) {\n this.registeredNames.forEach((name) => {\n this[name].forEach((instance) => {\n if (instance instanceof Promise) {\n instance.then((resolvedInstance) => this.__triggerHook(hook, resolvedInstance, name));\n } else {\n this.__triggerHook(hook, instance, name);\n }\n });\n });\n }\n\n /**\n * Execute the given hook for the given instance.\n *\n * @param {'$mount'|'$update'|'$destroy'} hook The hook to trigger.\n * @param {Base} instance The target instance.\n * @param {string} name The name of the component.\n * @private\n */\n __triggerHook(hook, instance, name) {\n if (hook === '$update' && !instance.$isMounted) {\n // eslint-disable-next-line no-param-reassign\n hook = '$mount';\n }\n\n if (hook === '$update' || hook === '$destroy') {\n this.__eventsManager.unbindChild(name, instance);\n }\n\n if (hook === '$update' || hook === '$mount') {\n this.__eventsManager.bindChild(name, instance);\n }\n\n instance[hook]();\n }\n}\n"],"file":"ChildrenManager.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/js-toolkit/Base/managers/EventsManager.js"],"names":["getAllProperties","RefsManager","EventsManager","rootElement","base","WeakMap","handleEvent","event","normalizedEventName","normalizeName","type","method","__base","ref","currentTarget","refName","normalizeRefName","dataset","normalizedRefName","index","Array","isArray","$refs","indexOf","child","__base__","childName","childrenManager","$children","registeredNames","find","name","includes","args","detail","__rootElement","elements","mode","action","methods","__getEventMethodsByName","forEach","__getEventNameByMethod","element","__refsHandler","__manageRef","instance","__childrenHandler","__manageChild","modeMethod","__rootElementHandler","__manageRootElement","normalizedName","regex","RegExp","match","normalizeEventName","__methodsCache","get","test","set","reduce","acc","push","replace","c","toLowerCase","trim","toUpperCase"],"mappings":"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","sourcesContent":["import getAllProperties from '../../utils/object/getAllProperties.js';\nimport RefsManager from './RefsManager.js';\n\n/**\n * @typedef {import('../index.js').default} Base\n * @typedef {import('./ChildrenManager.js').default} ChildrenManager\n */\n\n/**\n * Event management class.\n */\nexport default class EventsManager {\n /**\n * @type {HTMLElement}\n * @private\n */\n __rootElement;\n\n /**\n * @type {Base}\n * @private\n */\n __base;\n\n /**\n * @type {WeakMap}\n * @private\n */\n __methodsCache = new WeakMap();\n\n /**\n * Event listener object for the root element.\n *\n * @type {EventListenerObject}\n */\n __rootElementHandler = {\n handleEvent: (event) => {\n const normalizedEventName = EventsManager.normalizeName(event.type);\n const method = `on${normalizedEventName}`;\n\n if (typeof this.__base[method] === 'function') {\n this.__base[method](event);\n }\n },\n };\n\n /**\n * Event listener object for the refs.\n *\n * @type {EventListenerObject}\n */\n __refsHandler = {\n handleEvent: (event) => {\n const ref = /** @type {HTMLElement} */ (event.currentTarget);\n const refName = RefsManager.normalizeRefName(ref.dataset.ref);\n\n const normalizedRefName = EventsManager.normalizeName(refName);\n const normalizedEventName = EventsManager.normalizeName(event.type);\n const method = `on${normalizedRefName}${normalizedEventName}`;\n\n if (typeof this.__base[method] === 'function') {\n let index = 0;\n if (Array.isArray(this.__base.$refs[refName])) {\n index = this.__base.$refs[refName].indexOf(ref);\n }\n\n this.__base[method](event, index);\n }\n },\n };\n\n /**\n * Event listener object for the children.\n *\n * @type {EventListenerObject}\n */\n __childrenHandler = {\n /**\n * @param {CustomEvent} event\n * @return {void}\n */\n handleEvent: (event) => {\n const child = /** @type {HTMLElement & { __base__: Base }} */ (event.currentTarget).__base__;\n let childName;\n let index = 0;\n\n const childrenManager = this.__base.$children;\n\n childrenManager.registeredNames.find((name) => {\n if (childrenManager[name].includes(child)) {\n childName = name;\n index = childrenManager[name].indexOf(child);\n return true;\n }\n\n return false;\n });\n\n const normalizedRefName = EventsManager.normalizeName(childName);\n const normalizedEventName = EventsManager.normalizeName(event.type);\n const method = `on${normalizedRefName}${normalizedEventName}`;\n\n if (typeof this.__base[method] === 'function') {\n const args = event.detail ?? [];\n this.__base[method](...args, index, event);\n }\n },\n };\n\n /**\n * Class constructor.\n *\n * @param {HTMLElement} rootElement\n * @param {Base} base\n */\n constructor(rootElement, base) {\n this.__rootElement = rootElement;\n this.__base = base;\n }\n\n /**\n * Manage a ref event methods.\n *\n * @param {string} name\n * The name of the ref.\n * @param {HTMLElement[]} elements\n * The elements of the ref.\n * @param {'add'|'remove'} [mode]\n * The action to perform: add or remove the event listeners.\n *\n * @return {void}\n * @private\n */\n __manageRef(name, elements, mode = 'add') {\n const action = `${mode}EventListener`;\n const methods = this.__getEventMethodsByName(name);\n methods.forEach((method) => {\n const event = this.__getEventNameByMethod(method, name);\n elements.forEach((element) => element[action](event, this.__refsHandler));\n });\n }\n\n /**\n * Bind event methods to the given ref elements.\n *\n * @param {string} name\n * The name of the ref.\n * @param {HTMLElement[]} elements\n * The elements of the ref.\n *\n * @return {void}\n */\n bindRef(name, elements) {\n this.__manageRef(name, elements);\n }\n\n /**\n * Bind event methods to the given ref elements.\n *\n * @param {string} name\n * The name of the ref.\n * @param {HTMLElement[]} elements\n * The elements of the ref.\n *\n * @return {void}\n */\n unbindRef(name, elements) {\n this.__manageRef(name, elements, 'remove');\n }\n\n /**\n * Manage event methods to the given child instance.\n *\n * @param {string} name\n * The name of the ref.\n * @param {Base} instance\n * A base instance.\n * @param {'add'|'remove'} [mode]\n * The action to perform: add or remove the event listeners.\n *\n * @return {void}\n * @private\n */\n __manageChild(name, instance, mode = 'add') {\n const action = mode === 'add' ? '$on' : '$off';\n const methods = this.__getEventMethodsByName(name);\n methods.forEach((method) => {\n const event = this.__getEventNameByMethod(method, name);\n instance[action](event, this.__childrenHandler);\n });\n }\n\n /**\n * Bind event methods to the given child instance.\n *\n * @param {string} name\n * The name of the ref.\n * @param {Base} instance\n * A base instance.\n *\n * @return {void}\n */\n bindChild(name, instance) {\n this.__manageChild(name, instance);\n }\n\n /**\n * Unbind event methods to the given child instance.\n *\n * @param {string} name\n * The name of the ref.\n * @param {Base} instance\n * A base instance.\n *\n * @return {void}\n */\n unbindChild(name, instance) {\n this.__manageChild(name, instance, 'remove');\n }\n\n /**\n * Manage event methods on the root element.\n *\n * @param {'add'|'remove'} [mode]\n * The action to perform: add or remove the event listeners.\n *\n * @return {void}\n * @private\n */\n __manageRootElement(mode = 'add') {\n const modeMethod = `${mode}EventListener`;\n const methods = this.__getEventMethodsByName();\n methods.forEach((method) => {\n const event = this.__getEventNameByMethod(method);\n this.__rootElement[modeMethod](event, this.__rootElementHandler);\n });\n }\n\n /**\n * Bind event methods on the root element.\n *\n * @return {void}\n */\n bindRootElement() {\n this.__manageRootElement();\n }\n\n /**\n * Unbind event method from the root element.\n *\n * @return {void}\n */\n unbindRootElement() {\n this.__manageRootElement('remove');\n }\n\n /**\n * Get the event name from the given method and its tied ref or children name.\n *\n * @param {string} method\n * @param {string} name\n * @return {string}\n * @private\n */\n __getEventNameByMethod(method, name = '') {\n const normalizedName = EventsManager.normalizeName(name);\n const regex = new RegExp(`^on${normalizedName}([A-Z].*)$`);\n const [, event] = method.match(regex);\n return EventsManager.normalizeEventName(event);\n }\n\n /**\n * Get the base instance methods matching the `onSomething` pattern.\n *\n * @param {string} [name]\n * @return {string[]}\n * @private\n */\n __getEventMethodsByName(name = '') {\n const normalizedName = EventsManager.normalizeName(name);\n const regex = new RegExp(`^on${normalizedName}[A-Z].*$`);\n\n let methods = this.__methodsCache.get(regex);\n\n if (!methods) {\n methods = getAllProperties(this.__base, [], (method) => regex.test(method));\n this.__methodsCache.set(regex, methods);\n }\n\n return methods.reduce((acc, [method]) => {\n if (!acc.includes(method)) {\n acc.push(method);\n }\n return acc;\n }, []);\n }\n\n /**\n * Normalize the given name to PascalCase, such as:\n *\n * ```\n * sentence case => SentenceCase\n * lowercase => Lowercase\n * UPPERCASE => Uppercase\n * kebab-case => KebabCase\n * snake_case => SnakeCase\n * camelCase => CamelCase\n * PascalCase => PascalCase\n * .class-selector => ClassSelector\n * .bem__selector => BemSelector\n * __id-selector => IdSelector\n * .complex[class^ =\"__\"] => ComplexClass\n * ```\n *\n * @param {string} name\n * @return {string}\n */\n static normalizeName(name) {\n return name\n .replace(/[A-Z]([A-Z].*)/g, (c) => c.toLowerCase())\n .replace(/[^a-zA-Z\\d\\s:]/g, ' ')\n .replace(/(^\\w|\\s+\\w)/g, (c) => c.trim().toUpperCase())\n .trim();\n }\n\n /**\n * Normalize the event names from PascalCase to kebab-case.\n *\n * @param {string} name\n * @return {string}\n */\n static normalizeEventName(name) {\n return name.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`).replace(/^-/, '');\n }\n}\n"],"file":"EventsManager.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/js-toolkit/Base/managers/OptionsManager.js"],"names":["deepmerge","noCase","mem","isObject","getAttributeName","name","delimiter","memoizedGetAttributeName","OptionsManager","element","schema","baseConfig","String","Number","Boolean","Array","Object","__element","debug","type","default","log","entries","forEach","config","isObjectConfig","types","includes","Error","defaultValue","__defaultValues","defineProperty","get","set","value","enumerable","attributeName","hasAttribute","negatedAttributeName","hasNegatedAttribute","getAttribute","val","JSON","parse","__values","setTimeout","setAttribute","stringify","constructor","isArray","TypeError","removeAttribute"],"mappings":"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","sourcesContent":["import deepmerge from 'deepmerge';\nimport { noCase } from 'no-case';\nimport mem from 'mem';\nimport isObject from '../../utils/object/isObject.js';\n\n/**\n * @typedef {import('../index.js').BaseConfig} BaseConfig\n * @typedef {StringConstructor|NumberConstructor|BooleanConstructor|ArrayConstructor|ObjectConstructor} OptionType\n * @typedef {{ [name:string]: OptionType | { type: OptionType, default: String|Number|Boolean|(() => Array|Object)} }} OptionsSchema\n * @typedef {{ [optionName:string]: any }} OptionsInterface\n */\n\n/**\n * Get the attribute name based on the given option name.\n * @param {String} name The option name.\n */\nfunction getAttributeName(name) {\n return `data-option-${noCase(name, { delimiter: '-' })}`;\n}\n\nconst memoizedGetAttributeName = mem(getAttributeName);\n\n/**\n * Class options to manage options as data attributes on an HTML element.\n * @augments {OptionsInterface}\n */\nexport default class OptionsManager {\n /**\n * The HTML element holding the options attributes.\n * @type {HTMLElement}\n * @private\n */\n __element;\n\n /**\n * An object to store Array and Object values for reference.\n * @type {Object}\n * @private\n */\n __values = {};\n\n /**\n * List of allowed types.\n * @type {Array}\n * @private\n */\n static types = [String, Number, Boolean, Array, Object];\n\n /**\n * The default values to return for each available type.\n * @type {Object}\n * @private\n */\n __defaultValues = {\n String: '',\n Number: 0,\n Boolean: false,\n Array: () => [],\n Object: () => ({}),\n };\n\n /**\n * Default value for the name property.\n * @type {string}\n */\n name = 'Base';\n\n /**\n * Default value for the debug property.\n * @type {boolean}\n */\n debug = false;\n\n /**\n * Default value for the log property.\n * @type {Boolean}\n */\n log = false;\n\n /**\n * Class constructor.\n *\n * @param {HTMLElement} element The HTML element storing the options.\n * @param {OptionsSchema} schema A Base class config options.\n * @param {BaseConfig} baseConfig A Base class config.\n */\n constructor(element, schema, baseConfig) {\n this.__element = element;\n this.name = baseConfig.name;\n\n schema.debug = {\n type: Boolean,\n default: baseConfig.debug ?? false,\n };\n\n schema.log = {\n type: Boolean,\n default: baseConfig.log ?? false,\n };\n\n Object.entries(schema).forEach(([name, config]) => {\n const isObjectConfig = !OptionsManager.types.includes(config);\n /** @type {OptionType} */\n // @ts-ignore\n const type = isObjectConfig ? config.type : config;\n\n if (!OptionsManager.types.includes(type)) {\n throw new Error(\n `The \"${name}\" option has an invalid type. The allowed types are: String, Number, Boolean, Array and Object.`\n );\n }\n\n // @ts-ignore\n const defaultValue = isObjectConfig ? config.default : this.__defaultValues[type.name];\n\n if ((type === Array || type === Object) && typeof defaultValue !== 'function') {\n throw new Error(\n `The default value for options of type \"${type.name}\" must be returned by a function.`\n );\n }\n\n Object.defineProperty(this, name, {\n get: () => {\n return this.get(name, type, defaultValue);\n },\n set: (value) => {\n this.set(name, type, value, defaultValue);\n },\n enumerable: true,\n });\n });\n\n return this;\n }\n\n /**\n * Get an option value.\n *\n * @param {String} name The option name.\n * @param {ArrayConstructor|ObjectConstructor|StringConstructor|NumberConstructor|BooleanConstructor} type The option data's type.\n * @param {any} defaultValue The default value for this option.\n */\n get(name, type, defaultValue) {\n const attributeName = memoizedGetAttributeName(name);\n const hasAttribute = this.__element.hasAttribute(attributeName);\n\n if (type === Boolean) {\n if (defaultValue) {\n const negatedAttributeName = memoizedGetAttributeName(`no-${name}`);\n const hasNegatedAttribute = this.__element.hasAttribute(negatedAttributeName);\n\n return !hasNegatedAttribute;\n }\n\n return hasAttribute || defaultValue;\n }\n\n const value = this.__element.getAttribute(attributeName);\n\n if (type === Number) {\n return hasAttribute ? Number(value) : defaultValue;\n }\n\n if (type === Array || type === Object) {\n const val = deepmerge(\n defaultValue(),\n hasAttribute ? JSON.parse(value) : this.__defaultValues[type.name]()\n );\n\n if (!this.__values[name]) {\n this.__values[name] = val;\n } else if (val !== this.__values[name]) {\n // When getting the value, wait for the next loop to update the data attribute\n // with the new value. This is a simple trick to avoid using a Proxy to watch\n // for any deep changes on an array or object. It should not break anything as\n // the original value is read once from the data attribute and is then read from\n // the private property `__values`.\n setTimeout(() => {\n this.__element.setAttribute(attributeName, JSON.stringify(this.__values[name]));\n }, 0);\n }\n\n return this.__values[name];\n }\n\n return hasAttribute ? value : defaultValue;\n }\n\n /**\n * Set an option value.\n *\n * @param {String} name The option name.\n * @param {ArrayConstructor|ObjectConstructor|StringConstructor|NumberConstructor|BooleanConstructor} type The option data's type.\n * @param {any} value The new value for this option.\n */\n set(name, type, value, defaultValue) {\n const attributeName = memoizedGetAttributeName(name);\n\n if (value.constructor.name !== type.name) {\n const val = Array.isArray(value) || isObject(value) ? JSON.stringify(value) : value;\n throw new TypeError(\n `The \"${val}\" value for the \"${name}\" option must be of type \"${type.name}\"`\n );\n }\n\n switch (type) {\n case Boolean:\n if (defaultValue) {\n const negatedAttributeName = memoizedGetAttributeName(`no-${name}`);\n\n if (value) {\n this.__element.removeAttribute(negatedAttributeName);\n } else {\n this.__element.setAttribute(negatedAttributeName, '');\n }\n } else if (value) {\n this.__element.setAttribute(attributeName, '');\n } else {\n this.__element.removeAttribute(attributeName);\n }\n break;\n case Array:\n case Object:\n this.__values[name] = value;\n this.__element.setAttribute(attributeName, JSON.stringify(value));\n break;\n default:\n this.__element.setAttribute(attributeName, value);\n }\n }\n}\n"],"file":"OptionsManager.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/js-toolkit/Base/managers/RefsManager.js"],"names":["RefsManager","base","element","refs","eventsManager","__element","__refs","__base","__eventsManager","forEach","refName","__register","__unregister","isMultiple","endsWith","propName","normalizeRefName","Array","from","querySelectorAll","filter","ref","__filterRefsBelongingToInstance","length","console","warn","$options","name","bindRef","Object","defineProperty","value","enumerable","configurable","isArray","unbindRef","ancestor","parentElement","dataset","component","undefined","replace"],"mappings":";;;;IAQqBA,W;AAoCnB,uBAAYC,IAAZ,EAAkBC,OAAlB,EAA2BC,IAA3B,EAAiCC,aAAjC,EAAgD;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAC9C,SAAKC,SAAL,GAAiBH,OAAjB;AACA,SAAKI,MAAL,GAAcH,IAAd;AACA,SAAKI,MAAL,GAAcN,IAAd;AACA,SAAKO,eAAL,GAAuBJ,aAAvB;AACD;;;;WAOD,uBAAc;AAAA;;AACZ,WAAKE,MAAL,CAAYG,OAAZ,CAAoB,UAACC,OAAD;AAAA,eAAa,KAAI,CAACC,UAAL,CAAgBD,OAAhB,CAAb;AAAA,OAApB;AACD;;;WAOD,yBAAgB;AAAA;;AACd,WAAKJ,MAAL,CAAYG,OAAZ,CAAoB,UAACC,OAAD;AAAA,eAAa,MAAI,CAACE,YAAL,CAAkBF,OAAlB,CAAb;AAAA,OAApB;AACD;;;WAQD,oBAAWA,OAAX,EAAoB;AAAA;;AAClB,UAAMG,UAAU,GAAGH,OAAO,CAACI,QAAR,CAAiB,IAAjB,CAAnB;AACA,UAAMC,QAAQ,GAAGf,WAAW,CAACgB,gBAAZ,CAA6BN,OAA7B,CAAjB;AAEA,UAAMP,IAAI,GACRc,KAAK,CAACC,IAAN,CAAW,KAAKb,SAAL,CAAec,gBAAf,uBAA8CT,OAA9C,SAAX,CADwC,CAExCU,MAFwC,CAMxC,UAACC,GAAD;AAAA,eAAS,MAAI,CAACC,+BAAL,CAAqCD,GAArC,CAAT;AAAA,OANwC,CAA1C;;AASA,UAAI,CAACR,UAAD,IAAeV,IAAI,CAACoB,MAAL,GAAc,CAAjC,EAAoC;AAClCC,QAAAA,OAAO,CAACC,IAAR,YACM,KAAKlB,MAAL,CAAYmB,QAAZ,CAAqBC,IAD3B,wBAEUjB,OAFV,4CAGE,oDAHF;AAKD;;AAED,WAAKF,eAAL,CAAqBoB,OAArB,CAA6BlB,OAA7B,EAAsCP,IAAtC;;AAEA0B,MAAAA,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4Bf,QAA5B,EAAsC;AAEpCgB,QAAAA,KAAK,EAAElB,UAAU,IAAIV,IAAI,CAACoB,MAAL,GAAc,CAA5B,GAAgCpB,IAAhC,GAAuCA,IAAI,CAAC,CAAD,CAFd;AAGpC6B,QAAAA,UAAU,EAAE,IAHwB;AAIpCC,QAAAA,YAAY,EAAE;AAJsB,OAAtC;AAMD;;;WAQD,sBAAavB,OAAb,EAAsB;AACpB,UAAMK,QAAQ,GAAGf,WAAW,CAACgB,gBAAZ,CAA6BN,OAA7B,CAAjB;AACA,UAAMP,IAAI,GAAGc,KAAK,CAACiB,OAAN,CAAc,KAAKnB,QAAL,CAAd,IAAgC,KAAKA,QAAL,CAAhC,GAAiD,CAAC,KAAKA,QAAL,CAAD,CAA9D;;AACA,WAAKP,eAAL,CAAqB2B,SAArB,CAA+BzB,OAA/B,EAAwCP,IAAxC;AACD;;;WAmBD,yCAAgCkB,GAAhC,EAAqC;AACnC,UAAIe,QAAQ,GAAGf,GAAG,CAACgB,aAAnB;;AAEA,aAAOD,QAAQ,IAAIA,QAAQ,CAACE,OAAT,CAAiBC,SAAjB,KAA+BC,SAAlD,EAA6D;AAC3DJ,QAAAA,QAAQ,GAAGA,QAAQ,CAACC,aAApB;AACD;;AAED,aAAOD,QAAQ,KAAK,IAAb,IAAqBA,QAAQ,KAAK,KAAK/B,SAA9C;AACD;;;WAnBD,0BAAwBsB,IAAxB,EAA8B;AAC5B,aAAOA,IAAI,CAACb,QAAL,CAAc,IAAd,IAAsBa,IAAI,CAACc,OAAL,CAAa,OAAb,EAAsB,EAAtB,CAAtB,GAAkDd,IAAzD;AACD;;;;;;SAtHkB3B,W","sourcesContent":["/**\n * @typedef {import('../index.js').default} Base\n * @typedef {import('./EventsManager.js').default} EventsManager\n */\n\n/**\n * Refs Manager\n */\nexport default class RefsManager {\n /**\n * @type {HTMLElement}\n * @private\n */\n __element;\n\n /**\n * @type {string[]}\n * @private\n */\n __refs;\n\n /**\n * @type {Base}\n * @private\n */\n __base;\n\n /**\n * @type {EventsManager}\n * @private\n */\n __eventsManager;\n\n /**\n * Class constructor.\n *\n * @param {Base} base\n * The base instance tied to this manager.\n * @param {HTMLElement} element\n * The root element of a Base component.\n * @param {string[]} refs\n * The list of refs of this component.\n * @param {EventsManager} eventsManager\n */\n constructor(base, element, refs, eventsManager) {\n this.__element = element;\n this.__refs = refs;\n this.__base = base;\n this.__eventsManager = eventsManager;\n }\n\n /**\n * Register all refs.\n *\n * @return {void}\n */\n registerAll() {\n this.__refs.forEach((refName) => this.__register(refName));\n }\n\n /**\n * Unregister all refs.\n *\n * @return {void}\n */\n unregisterAll() {\n this.__refs.forEach((refName) => this.__unregister(refName));\n }\n\n /**\n * Register one ref.\n *\n * @param {string} refName The ref name.\n * @private\n */\n __register(refName) {\n const isMultiple = refName.endsWith('[]');\n const propName = RefsManager.normalizeRefName(refName);\n\n const refs = /** @type {HTMLElement[]} */ (\n Array.from(this.__element.querySelectorAll(`[data-ref=\"${refName}\"]`))\n ).filter(\n /**\n * @param {HTMLElement} ref\n */\n (ref) => this.__filterRefsBelongingToInstance(ref)\n );\n\n if (!isMultiple && refs.length > 1) {\n console.warn(\n `[${this.__base.$options.name}]`,\n `The \"${refName}\" ref has been found multiple times.`,\n 'Did you forgot to add the `[]` suffix to its name?'\n );\n }\n\n this.__eventsManager.bindRef(refName, refs);\n\n Object.defineProperty(this, propName, {\n // @todo remove usage of non-multiple refs as array\n value: isMultiple || refs.length > 1 ? refs : refs[0],\n enumerable: true,\n configurable: true,\n });\n }\n\n /**\n * Unregister one ref.\n *\n * @param {string} refName The ref name.\n * @private\n */\n __unregister(refName) {\n const propName = RefsManager.normalizeRefName(refName);\n const refs = Array.isArray(this[propName]) ? this[propName] : [this[propName]];\n this.__eventsManager.unbindRef(refName, refs);\n }\n\n /**\n * Normalize the name of ref.\n *\n * @param {string} name The original name.\n * @return {string} The normalized name.\n */\n static normalizeRefName(name) {\n return name.endsWith('[]') ? name.replace(/\\[\\]$/, '') : name;\n }\n\n /**\n * Filter refs belonging to the related Base instance.\n *\n * @param {HTMLElement} ref The ref to test.\n * @return {boolean}\n * @private\n */\n __filterRefsBelongingToInstance(ref) {\n let ancestor = ref.parentElement;\n\n while (ancestor && ancestor.dataset.component === undefined) {\n ancestor = ancestor.parentElement;\n }\n\n return ancestor === null || ancestor === this.__element;\n }\n}\n"],"file":"RefsManager.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/js-toolkit/Base/managers/ServicesManager.js"],"names":["usePointer","useRaf","useResize","useScroll","useKey","useLoad","hasMethod","callMethod","SERVICES_MAP","scrolled","resized","ticked","moved","keyed","loaded","ServicesManager","instance","__base","service","has","$id","disable","bind","noop","add","self","serviceHandler","args","Object","keys","map","serviceName","enable","forEach","remove","name","useFunction"],"mappings":"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","sourcesContent":["import usePointer from '../../services/pointer.js';\nimport useRaf from '../../services/raf.js';\nimport useResize from '../../services/resize.js';\nimport useScroll from '../../services/scroll.js';\nimport useKey from '../../services/key.js';\nimport useLoad from '../../services/load.js';\nimport { hasMethod, callMethod } from '../utils.js';\n\n/**\n * @typedef {import('../index').default} Base\n * @typedef {import('../../services').ServiceInterface} ServiceInterface\n */\n\n/**\n * @type {Record<string, () => ServiceInterface>}\n */\nconst SERVICES_MAP = {\n scrolled: useScroll,\n resized: useResize,\n ticked: useRaf,\n moved: usePointer,\n keyed: useKey,\n loaded: useLoad,\n};\n\n/**\n * @typedef {keyof SERVICES_MAP} ServiceName\n */\n\n/**\n * Services management for the Base class.\n */\nexport default class ServicesManager {\n /**\n * @type {Base}\n * @private\n */\n __base;\n\n /**\n * Class constructor.\n * @param {Base} instance The Base instance.\n */\n constructor(instance) {\n this.__base = instance;\n }\n\n /**\n * Test if the given service is registered.\n *\n * @param {ServiceName} service The name of the service.\n * @return {Boolean}\n */\n has(service) {\n if (!hasMethod(this.__base, service) && !SERVICES_MAP[service]) {\n return false;\n }\n\n const { has } = SERVICES_MAP[service]();\n return has(this.__base.$id);\n }\n\n /**\n * Init the given service and bind it to the given instance.\n *\n * @param {ServiceName} service The name of the service.\n * @return {() => void} A function to unbind the service.\n */\n enable(service) {\n if (this.has(service)) {\n return this.disable.bind(this, service);\n }\n\n if (!hasMethod(this.__base, service) || !SERVICES_MAP[service]) {\n return function noop() {};\n }\n\n const { add } = SERVICES_MAP[service]();\n const self = this;\n\n /**\n * @param {any[]} args\n */\n function serviceHandler(...args) {\n callMethod(self.__base, service, ...args);\n }\n\n add(this.__base.$id, serviceHandler);\n\n return this.disable.bind(this, service);\n }\n\n /**\n * Enable all services and return methods to disable them.\n *\n * @return {Function[]}\n */\n enableAll() {\n return Object.keys(SERVICES_MAP).map(\n /** @param {ServiceName} serviceName */\n (serviceName) => this.enable(serviceName)\n );\n }\n\n /**\n * Disable all services.\n *\n * @return {void}\n */\n disableAll() {\n Object.keys(SERVICES_MAP).forEach(\n /** @param {ServiceName} serviceName */\n (serviceName) => {\n this.disable(serviceName);\n }\n );\n }\n\n /**\n * Disable a service.\n *\n * @param {String} service The name of the service.\n * @return {void}\n */\n disable(service) {\n if (!SERVICES_MAP[service]) {\n return;\n }\n\n const { remove } = SERVICES_MAP[service]();\n remove(this.__base.$id);\n }\n\n /**\n * Register a new service to be enabled/disabled.\n *\n * @param {string} name The name of the service hook.\n * @param {() => ServiceInterface} useFunction The `use...` function for the service.\n */\n register(name, useFunction) {\n SERVICES_MAP[name] = useFunction;\n }\n\n /**\n * Unregister a new service to be enabled disabled.\n *\n * @param {string} name The name of the service hooK\n */\n unregister(name) {\n delete SERVICES_MAP[name];\n }\n}\n"],"file":"ServicesManager.js"}
|
package/Base/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../packages/js-toolkit/Base/utils.js"],"names":["hasMethod","obj","name","callMethod","instance","method","args","__debug","$isMounted","$emit","call","getComponentElements","nameOrSelector","element","document","selector","elements","Array","from","querySelectorAll","length"],"mappings":"AAWA,OAAO,SAASA,SAAT,CAAmBC,GAAnB,EAAwBC,IAAxB,EAA8B;AACnC,SAAO,OAAOD,GAAG,CAACC,IAAD,CAAV,KAAqB,UAA5B;AACD;AASD,OAAO,SAASC,UAAT,CAAoBC,QAApB,EAA8BC,MAA9B,EAA+C;AAAA;;AAAA,oCAANC,IAAM;AAANA,IAAAA,IAAM;AAAA;;AACpDF,EAAAA,QAAQ,CAACG,OAAT,OAAAH,QAAQ,GAAS,YAAT,EAAuBC,MAAvB,SAAkCC,IAAlC,EAAR;;AAIA,MACGD,MAAM,KAAK,WAAX,IAA0B,CAACD,QAAQ,CAACI,UAArC,IACCH,MAAM,KAAK,SAAX,IAAwBD,QAAQ,CAACI,UAFpC,EAGE;AACAJ,IAAAA,QAAQ,CAACG,OAAT,CAAiB,KAAjB,EAAwBF,MAAxB,EAAgC,qDAAhC;;AACA,WAAOD,QAAP;AACD;;AAEDA,EAAAA,QAAQ,CAACK,KAAT,OAAAL,QAAQ,GAAOC,MAAP,SAAkBC,IAAlB,EAAR;;AAGA,MAAI,CAACN,SAAS,CAACI,QAAD,EAAWC,MAAX,CAAd,EAAkC;AAChC,WAAOD,QAAP;AACD;;AAED,sBAAAA,QAAQ,CAACC,MAAD,CAAR,EAAiBK,IAAjB,0BAAsBN,QAAtB,SAAmCE,IAAnC;;AACAF,EAAAA,QAAQ,CAACG,OAAT,OAAAH,QAAQ,GAASC,MAAT,EAAiBD,QAAjB,SAA8BE,IAA9B,EAAR;;AAEA,SAAOF,QAAP;AACD;AAYD,OAAO,SAASO,oBAAT,CAA8BC,cAA9B,EAAkE;AAAA,MAApBC,OAAoB,uEAAVC,QAAU;AACvE,MAAMC,QAAQ,+BAAuBH,cAAvB,QAAd;AACA,MAAII,QAAQ,GAAG,EAAf;;AAEA,MAAI;AACFA,IAAAA,QAAQ,GAAGC,KAAK,CAACC,IAAN,CAAWL,OAAO,CAACM,gBAAR,CAAyBJ,QAAzB,CAAX,CAAX;AAED,GAHD,CAGE,gBAAM,CAAE;;AAGV,MAAIC,QAAQ,CAACI,MAAT,KAAoB,CAAxB,EAA2B;AACzBJ,IAAAA,QAAQ,GAAGC,KAAK,CAACC,IAAN,CAAWL,OAAO,CAACM,gBAAR,CAAyBP,cAAzB,CAAX,CAAX;AACD;;AAED,SAAOI,QAAP;AACD","sourcesContent":["/**\n * @typedef {import('./index.js').default} Base\n */\n\n/**\n * Test if an object has a method.\n *\n * @param {Object} obj The object to test\n * @param {String} name The method's name\n * @return {Boolean}\n */\nexport function hasMethod(obj, name) {\n return typeof obj[name] === 'function';\n}\n\n/**\n * Call the given method while applying the given arguments.\n *\n * @param {Base} instance The Base instance on which to trigger the method.\n * @param {String} method The method to call.\n * @param {...any} args The arguments to pass to the method.\n */\nexport function callMethod(instance, method, ...args) {\n instance.__debug('callMethod', method, ...args);\n\n // Prevent duplicate call of `mounted` and `destroyed`\n // methods based on the component status\n if (\n (method === 'destroyed' && !instance.$isMounted) ||\n (method === 'mounted' && instance.$isMounted)\n ) {\n instance.__debug('not', method, 'because the method has already been triggered once.');\n return instance;\n }\n\n instance.$emit(method, ...args);\n\n // We always emit an event, but we do not call the method if it does not exist\n if (!hasMethod(instance, method)) {\n return instance;\n }\n\n instance[method].call(instance, ...args);\n instance.__debug(method, instance, ...args);\n\n return instance;\n}\n\n/**\n * Get a list of elements based on the name of a component.\n *\n * @param {String} nameOrSelector\n * The name or selector to used for this component.\n * @param {HTMLElement|Document} element\n * The root element on which to query the selector, defaults to `document`.\n * @return {Array<HTMLElement>}\n * A list of elements on which the component should be mounted.\n */\nexport function getComponentElements(nameOrSelector, element = document) {\n const selector = `[data-component=\"${nameOrSelector}\"]`;\n let elements = [];\n\n try {\n elements = Array.from(element.querySelectorAll(selector));\n // eslint-disable-next-line no-empty\n } catch {}\n\n // If no child component found with the default selector, try a classic DOM selector\n if (elements.length === 0) {\n elements = Array.from(element.querySelectorAll(nameOrSelector));\n }\n\n return elements;\n}\n"],"file":"utils.js"}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @typedef {import('./AccordionItem').default} AccordionItem
|
|
3
|
-
* @typedef {import('./AccordionItem').AccordionItemOptions} AccordionItemOptions
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* @typedef {Object} AccordionRefs
|
|
7
|
-
* @property {HTMLElement[]} btn
|
|
8
|
-
* @property {HTMLElement[]} content
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* @typedef {Object} AccordionOptions
|
|
12
|
-
* @property {Boolean} autoclose
|
|
13
|
-
* @property {AccordionItemOptions} item
|
|
14
|
-
*/
|
|
15
|
-
/**
|
|
16
|
-
* @typedef {Object} AccordionChildren
|
|
17
|
-
* @property {AccordionItem[]} AccordionItem
|
|
18
|
-
*/
|
|
19
|
-
/**
|
|
20
|
-
* @typedef {Object} AccordionPrivateInterface
|
|
21
|
-
* @property {AccordionOptions} $options
|
|
22
|
-
* @property {AccordionRefs} $refs
|
|
23
|
-
* @property {AccordionChildren} $children
|
|
24
|
-
*/
|
|
25
|
-
/**
|
|
26
|
-
* @typedef {Accordion & AccordionPrivateInterface} AccordionInterface
|
|
27
|
-
*/
|
|
28
|
-
/**
|
|
29
|
-
* Accordion class.
|
|
30
|
-
*/
|
|
31
|
-
export default class Accordion extends Base {
|
|
32
|
-
/**
|
|
33
|
-
* Accordion config.
|
|
34
|
-
*/
|
|
35
|
-
static config: {
|
|
36
|
-
name: string;
|
|
37
|
-
options: {
|
|
38
|
-
autoclose: BooleanConstructor;
|
|
39
|
-
item: {
|
|
40
|
-
type: ObjectConstructor;
|
|
41
|
-
/**
|
|
42
|
-
* @return {Partial<AccordionItemOptions>}
|
|
43
|
-
*/
|
|
44
|
-
default: () => Partial<AccordionItemOptions>;
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* @type {Array<Function>}
|
|
50
|
-
*/
|
|
51
|
-
unbindMethods: Array<Function>;
|
|
52
|
-
/**
|
|
53
|
-
* Init autoclose behavior on mounted.
|
|
54
|
-
* @this {AccordionInterface}
|
|
55
|
-
* @return {Promise<void>}
|
|
56
|
-
*/
|
|
57
|
-
mounted(): Promise<void>;
|
|
58
|
-
/**
|
|
59
|
-
* Destroy autoclose behavior on destroyed.
|
|
60
|
-
* @return {void}
|
|
61
|
-
*/
|
|
62
|
-
destroyed(): void;
|
|
63
|
-
}
|
|
64
|
-
export type AccordionItem = import('./AccordionItem').default;
|
|
65
|
-
export type AccordionItemOptions = import('./AccordionItem').AccordionItemOptions;
|
|
66
|
-
export type AccordionRefs = {
|
|
67
|
-
btn: HTMLElement[];
|
|
68
|
-
content: HTMLElement[];
|
|
69
|
-
};
|
|
70
|
-
export type AccordionOptions = {
|
|
71
|
-
autoclose: boolean;
|
|
72
|
-
item: AccordionItemOptions;
|
|
73
|
-
};
|
|
74
|
-
export type AccordionChildren = {
|
|
75
|
-
AccordionItem: AccordionItem[];
|
|
76
|
-
};
|
|
77
|
-
export type AccordionPrivateInterface = {
|
|
78
|
-
$options: AccordionOptions;
|
|
79
|
-
$refs: AccordionRefs;
|
|
80
|
-
$children: AccordionChildren;
|
|
81
|
-
};
|
|
82
|
-
export type AccordionInterface = Accordion & AccordionPrivateInterface;
|
|
83
|
-
import Base from "../../Base/index.js";
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
-
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
3
|
-
import _createClass from "@babel/runtime/helpers/createClass";
|
|
4
|
-
import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
|
|
5
|
-
import _inherits from "@babel/runtime/helpers/inherits";
|
|
6
|
-
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
|
|
7
|
-
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
8
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
9
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
10
|
-
|
|
11
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
12
|
-
|
|
13
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
14
|
-
|
|
15
|
-
import Base from '../../Base/index.js';
|
|
16
|
-
|
|
17
|
-
var Accordion = function (_Base) {
|
|
18
|
-
_inherits(Accordion, _Base);
|
|
19
|
-
|
|
20
|
-
var _super = _createSuper(Accordion);
|
|
21
|
-
|
|
22
|
-
function Accordion() {
|
|
23
|
-
var _this;
|
|
24
|
-
|
|
25
|
-
_classCallCheck(this, Accordion);
|
|
26
|
-
|
|
27
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
28
|
-
args[_key] = arguments[_key];
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
_this = _super.call.apply(_super, [this].concat(args));
|
|
32
|
-
|
|
33
|
-
_defineProperty(_assertThisInitialized(_this), "unbindMethods", []);
|
|
34
|
-
|
|
35
|
-
return _this;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
_createClass(Accordion, [{
|
|
39
|
-
key: "mounted",
|
|
40
|
-
value: function () {
|
|
41
|
-
var _mounted = _asyncToGenerator(_regeneratorRuntime.mark(function _callee() {
|
|
42
|
-
var _this2 = this;
|
|
43
|
-
|
|
44
|
-
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
45
|
-
while (1) {
|
|
46
|
-
switch (_context.prev = _context.next) {
|
|
47
|
-
case 0:
|
|
48
|
-
if (Array.isArray(this.$children.AccordionItem)) {
|
|
49
|
-
_context.next = 2;
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
throw new Error('The Accordion component must be used with the AccordionItem component.');
|
|
54
|
-
|
|
55
|
-
case 2:
|
|
56
|
-
this.unbindMethods = this.$children.AccordionItem.map(function (item, index) {
|
|
57
|
-
if (item instanceof Promise) {
|
|
58
|
-
throw new Error('The AccordionItem component can not be used asynchronously.');
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
var unbindOpen = item.$on('open', function () {
|
|
62
|
-
_this2.$emit('open', item, index);
|
|
63
|
-
|
|
64
|
-
if (_this2.$options.autoclose) {
|
|
65
|
-
_this2.$children.AccordionItem.filter(function (el, i) {
|
|
66
|
-
return index !== i;
|
|
67
|
-
}).forEach(function (it) {
|
|
68
|
-
return it.close();
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
var unbindClose = item.$on('close', function () {
|
|
73
|
-
_this2.$emit('close', item, index);
|
|
74
|
-
});
|
|
75
|
-
return function () {
|
|
76
|
-
unbindOpen();
|
|
77
|
-
unbindClose();
|
|
78
|
-
};
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
case 3:
|
|
82
|
-
case "end":
|
|
83
|
-
return _context.stop();
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}, _callee, this);
|
|
87
|
-
}));
|
|
88
|
-
|
|
89
|
-
function mounted() {
|
|
90
|
-
return _mounted.apply(this, arguments);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return mounted;
|
|
94
|
-
}()
|
|
95
|
-
}, {
|
|
96
|
-
key: "destroyed",
|
|
97
|
-
value: function destroyed() {
|
|
98
|
-
this.unbindMethods.forEach(function (unbind) {
|
|
99
|
-
return unbind();
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
}]);
|
|
103
|
-
|
|
104
|
-
return Accordion;
|
|
105
|
-
}(Base);
|
|
106
|
-
|
|
107
|
-
_defineProperty(Accordion, "config", {
|
|
108
|
-
name: 'Accordion',
|
|
109
|
-
options: {
|
|
110
|
-
autoclose: Boolean,
|
|
111
|
-
item: {
|
|
112
|
-
type: Object,
|
|
113
|
-
default: function _default() {
|
|
114
|
-
return {};
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
export { Accordion as default };
|
|
121
|
-
//# sourceMappingURL=Accordion.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/js-toolkit/components/Accordion/Accordion.js"],"names":["Base","Accordion","Array","isArray","$children","AccordionItem","Error","unbindMethods","map","item","index","Promise","unbindOpen","$on","$emit","$options","autoclose","filter","el","i","forEach","it","close","unbindClose","unbind","name","options","Boolean","type","Object","default"],"mappings":";;;;;;;;;;;;;;AAAA,OAAOA,IAAP,MAAiB,qBAAjB;;IAsCqBC,S;;;;;;;;;;;;;;;;oEAqBH,E;;;;;;;;gEAOhB;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,oBACOC,KAAK,CAACC,OAAN,CAAc,KAAKC,SAAL,CAAeC,aAA7B,CADP;AAAA;AAAA;AAAA;;AAAA,sBAEU,IAAIC,KAAJ,CAAU,wEAAV,CAFV;;AAAA;AAKE,qBAAKC,aAAL,GAAqB,KAAKH,SAAL,CAAeC,aAAf,CAA6BG,GAA7B,CAAiC,UAACC,IAAD,EAAOC,KAAP,EAAiB;AACrE,sBAAID,IAAI,YAAYE,OAApB,EAA6B;AAC3B,0BAAM,IAAIL,KAAJ,CAAU,6DAAV,CAAN;AACD;;AAED,sBAAMM,UAAU,GAAGH,IAAI,CAACI,GAAL,CAAS,MAAT,EAAiB,YAAM;AACxC,oBAAA,MAAI,CAACC,KAAL,CAAW,MAAX,EAAmBL,IAAnB,EAAyBC,KAAzB;;AACA,wBAAI,MAAI,CAACK,QAAL,CAAcC,SAAlB,EAA6B;AAC3B,sBAAA,MAAI,CAACZ,SAAL,CAAeC,aAAf,CAA6BY,MAA7B,CAAoC,UAACC,EAAD,EAAKC,CAAL;AAAA,+BAAWT,KAAK,KAAKS,CAArB;AAAA,uBAApC,EAA4DC,OAA5D,CAAoE,UAACC,EAAD;AAAA,+BAAQA,EAAE,CAACC,KAAH,EAAR;AAAA,uBAApE;AACD;AACF,mBALkB,CAAnB;AAMA,sBAAMC,WAAW,GAAGd,IAAI,CAACI,GAAL,CAAS,OAAT,EAAkB,YAAM;AAC1C,oBAAA,MAAI,CAACC,KAAL,CAAW,OAAX,EAAoBL,IAApB,EAA0BC,KAA1B;AACD,mBAFmB,CAApB;AAIA,yBAAO,YAAM;AACXE,oBAAAA,UAAU;AACVW,oBAAAA,WAAW;AACZ,mBAHD;AAID,iBAnBoB,CAArB;;AALF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WA+BA,qBAAY;AACV,WAAKhB,aAAL,CAAmBa,OAAnB,CAA2B,UAACI,MAAD;AAAA,eAAYA,MAAM,EAAlB;AAAA,OAA3B;AACD;;;;EA7DoCxB,I;;gBAAlBC,S,YAIH;AACdwB,EAAAA,IAAI,EAAE,WADQ;AAEdC,EAAAA,OAAO,EAAE;AACPV,IAAAA,SAAS,EAAEW,OADJ;AAEPlB,IAAAA,IAAI,EAAE;AACJmB,MAAAA,IAAI,EAAEC,MADF;AAKJC,MAAAA,OAAO,EAAE;AAAA,eAAO,EAAP;AAAA;AALL;AAFC;AAFK,C;;SAJG7B,S","sourcesContent":["import Base from '../../Base/index.js';\n\n/**\n * @typedef {import('./AccordionItem').default} AccordionItem\n * @typedef {import('./AccordionItem').AccordionItemOptions} AccordionItemOptions\n */\n\n/**\n * @typedef {Object} AccordionRefs\n * @property {HTMLElement[]} btn\n * @property {HTMLElement[]} content\n */\n\n/**\n * @typedef {Object} AccordionOptions\n * @property {Boolean} autoclose\n * @property {AccordionItemOptions} item\n */\n\n/**\n * @typedef {Object} AccordionChildren\n * @property {AccordionItem[]} AccordionItem\n */\n\n/**\n * @typedef {Object} AccordionPrivateInterface\n * @property {AccordionOptions} $options\n * @property {AccordionRefs} $refs\n * @property {AccordionChildren} $children\n */\n\n/**\n * @typedef {Accordion & AccordionPrivateInterface} AccordionInterface\n */\n\n/**\n * Accordion class.\n */\nexport default class Accordion extends Base {\n /**\n * Accordion config.\n */\n static config = {\n name: 'Accordion',\n options: {\n autoclose: Boolean,\n item: {\n type: Object,\n /**\n * @return {Partial<AccordionItemOptions>}\n */\n default: () => ({}),\n },\n },\n };\n\n /**\n * @type {Array<Function>}\n */\n unbindMethods = [];\n\n /**\n * Init autoclose behavior on mounted.\n * @this {AccordionInterface}\n * @return {Promise<void>}\n */\n async mounted() {\n if (!Array.isArray(this.$children.AccordionItem)) {\n throw new Error('The Accordion component must be used with the AccordionItem component.');\n }\n\n this.unbindMethods = this.$children.AccordionItem.map((item, index) => {\n if (item instanceof Promise) {\n throw new Error('The AccordionItem component can not be used asynchronously.');\n }\n\n const unbindOpen = item.$on('open', () => {\n this.$emit('open', item, index);\n if (this.$options.autoclose) {\n this.$children.AccordionItem.filter((el, i) => index !== i).forEach((it) => it.close());\n }\n });\n const unbindClose = item.$on('close', () => {\n this.$emit('close', item, index);\n });\n\n return () => {\n unbindOpen();\n unbindClose();\n };\n });\n }\n\n /**\n * Destroy autoclose behavior on destroyed.\n * @return {void}\n */\n destroyed() {\n this.unbindMethods.forEach((unbind) => unbind());\n }\n}\n"],"file":"Accordion.js"}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @typedef {import('../../Base').BaseOptions} BaseOptions
|
|
3
|
-
* @typedef {import('./Accordion.js').AccordionInterface} AccordionInterface
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* @typedef {Object} AccordionItemRefs
|
|
7
|
-
* @property {HTMLElement} btn
|
|
8
|
-
* @property {HTMLElement} content
|
|
9
|
-
* @property {HTMLElement} container
|
|
10
|
-
*/
|
|
11
|
-
/**
|
|
12
|
-
* @typedef {Object} StylesOption
|
|
13
|
-
* @property {String|CssStyleObject} open
|
|
14
|
-
* @property {String|CssStyleObject} active
|
|
15
|
-
* @property {String|CssStyleObject} closed
|
|
16
|
-
*/
|
|
17
|
-
/**
|
|
18
|
-
* @typedef {import('../../utils/css/styles.js').CssStyleObject} CssStyleObject
|
|
19
|
-
* @typedef {Partial<Record<'open'|'active'|'closed', string|CssStyleObject>>} AccordionItemStates
|
|
20
|
-
* @typedef {Partial<Record<keyof AccordionItemRefs, AccordionItemStates>>} AccordionItemStylesOption
|
|
21
|
-
*/
|
|
22
|
-
/**
|
|
23
|
-
* @typedef {Object} AccordionItemOptions
|
|
24
|
-
* @property {Boolean} isOpen
|
|
25
|
-
* @property {AccordionItemStylesOption} styles
|
|
26
|
-
*/
|
|
27
|
-
/**
|
|
28
|
-
* @typedef {Object} AccordionItemPrivateInterface
|
|
29
|
-
* @property {AccordionItemOptions} $options
|
|
30
|
-
* @property {AccordionItemRefs} $refs
|
|
31
|
-
* @property {Accordion & AccordionInterface} $parent
|
|
32
|
-
*/
|
|
33
|
-
/**
|
|
34
|
-
* @typedef {AccordionItem & AccordionItemPrivateInterface} AccordionItemInterface
|
|
35
|
-
*/
|
|
36
|
-
/**
|
|
37
|
-
* AccordionItem class.
|
|
38
|
-
*/
|
|
39
|
-
export default class AccordionItem extends Base {
|
|
40
|
-
/**
|
|
41
|
-
* AccordionItem config
|
|
42
|
-
* @return {Object}
|
|
43
|
-
*/
|
|
44
|
-
static config: {
|
|
45
|
-
name: string;
|
|
46
|
-
refs: string[];
|
|
47
|
-
options: {
|
|
48
|
-
isOpen: BooleanConstructor;
|
|
49
|
-
styles: {
|
|
50
|
-
type: ObjectConstructor;
|
|
51
|
-
/**
|
|
52
|
-
* @return {AccordionItemStylesOption}
|
|
53
|
-
*/
|
|
54
|
-
default: () => AccordionItemStylesOption;
|
|
55
|
-
};
|
|
56
|
-
};
|
|
57
|
-
};
|
|
58
|
-
/**
|
|
59
|
-
* Add aria-attributes on mounted.
|
|
60
|
-
* @this {AccordionItemInterface}
|
|
61
|
-
*/
|
|
62
|
-
mounted(): void;
|
|
63
|
-
/**
|
|
64
|
-
* Remove styles on destroy.
|
|
65
|
-
* @this {AccordionItemInterface}
|
|
66
|
-
*/
|
|
67
|
-
destroyed(): void;
|
|
68
|
-
/**
|
|
69
|
-
* Handler for the click event on the `btn` ref.
|
|
70
|
-
* @this {AccordionItemInterface}
|
|
71
|
-
*/
|
|
72
|
-
onBtnClick(): void;
|
|
73
|
-
/**
|
|
74
|
-
* Get the content ID.
|
|
75
|
-
* @return {String}
|
|
76
|
-
*/
|
|
77
|
-
get contentId(): string;
|
|
78
|
-
/**
|
|
79
|
-
* Update the refs' attributes according to the given type.
|
|
80
|
-
*
|
|
81
|
-
* @this {AccordionItemInterface}
|
|
82
|
-
* @param {Boolean} isOpen The state of the item.
|
|
83
|
-
*/
|
|
84
|
-
updateAttributes(isOpen: boolean): void;
|
|
85
|
-
/**
|
|
86
|
-
* Open an item.
|
|
87
|
-
* @this {AccordionItemInterface}
|
|
88
|
-
*/
|
|
89
|
-
open(): Promise<void>;
|
|
90
|
-
/**
|
|
91
|
-
* Close an item.
|
|
92
|
-
* @this {AccordionItemInterface}
|
|
93
|
-
*/
|
|
94
|
-
close(): Promise<void>;
|
|
95
|
-
}
|
|
96
|
-
export type BaseOptions = import('../../Base').BaseOptions;
|
|
97
|
-
export type AccordionInterface = import('./Accordion.js').AccordionInterface;
|
|
98
|
-
export type AccordionItemRefs = {
|
|
99
|
-
btn: HTMLElement;
|
|
100
|
-
content: HTMLElement;
|
|
101
|
-
container: HTMLElement;
|
|
102
|
-
};
|
|
103
|
-
export type StylesOption = {
|
|
104
|
-
open: string | CssStyleObject;
|
|
105
|
-
active: string | CssStyleObject;
|
|
106
|
-
closed: string | CssStyleObject;
|
|
107
|
-
};
|
|
108
|
-
export type CssStyleObject = import('../../utils/css/styles.js').CssStyleObject;
|
|
109
|
-
export type AccordionItemStates = Partial<Record<'open' | 'active' | 'closed', string | CssStyleObject>>;
|
|
110
|
-
export type AccordionItemStylesOption = Partial<Record<keyof AccordionItemRefs, AccordionItemStates>>;
|
|
111
|
-
export type AccordionItemOptions = {
|
|
112
|
-
isOpen: boolean;
|
|
113
|
-
styles: AccordionItemStylesOption;
|
|
114
|
-
};
|
|
115
|
-
export type AccordionItemPrivateInterface = {
|
|
116
|
-
$options: AccordionItemOptions;
|
|
117
|
-
$refs: AccordionItemRefs;
|
|
118
|
-
$parent: Accordion & AccordionInterface;
|
|
119
|
-
};
|
|
120
|
-
export type AccordionItemInterface = AccordionItem & AccordionItemPrivateInterface;
|
|
121
|
-
import Base from "../../Base/index.js";
|
|
122
|
-
import Accordion from "./Accordion.js";
|