@studiometa/js-toolkit 2.11.2 → 3.0.0-alpha.1
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/Base.d.ts +2 -2
- package/Base/Base.js +142 -79
- package/Base/Base.js.map +2 -2
- package/Base/features.d.ts +10 -2
- package/Base/features.js +23 -1
- package/Base/features.js.map +2 -2
- package/Base/managers/AbstractManager.d.ts +3 -3
- package/Base/managers/AbstractManager.js +21 -0
- package/Base/managers/AbstractManager.js.map +1 -1
- package/Base/managers/ActionManager.d.ts +4 -0
- package/Base/managers/ActionManager.js +10 -0
- package/Base/managers/ActionManager.js.map +7 -0
- package/Base/managers/ChildrenManager.d.ts +1 -1
- package/Base/managers/ChildrenManager.js +41 -8
- package/Base/managers/ChildrenManager.js.map +2 -2
- package/Base/managers/EventsManager.js +88 -7
- package/Base/managers/EventsManager.js.map +2 -2
- package/Base/managers/OptionsManager.js +25 -2
- package/Base/managers/OptionsManager.js.map +2 -2
- package/Base/managers/RefsManager.js +27 -6
- package/Base/managers/RefsManager.js.map +2 -2
- package/Base/managers/ResponsiveOptionsManager.js +22 -6
- package/Base/managers/ResponsiveOptionsManager.js.map +2 -2
- package/Base/managers/ServicesManager.d.ts +2 -4
- package/Base/managers/ServicesManager.js +56 -7
- package/Base/managers/ServicesManager.js.map +2 -2
- package/Base/utils.js +5 -1
- package/Base/utils.js.map +2 -2
- package/decorators/index.d.ts +0 -1
- package/decorators/index.js +0 -1
- package/decorators/index.js.map +2 -2
- package/decorators/withBreakpointManager.js +14 -4
- package/decorators/withBreakpointManager.js.map +2 -2
- package/decorators/withBreakpointObserver.js +13 -3
- package/decorators/withBreakpointObserver.js.map +2 -2
- package/decorators/withDrag.js +6 -0
- package/decorators/withDrag.js.map +1 -1
- package/decorators/withExtraConfig.js +3 -0
- package/decorators/withExtraConfig.js.map +1 -1
- package/decorators/withFreezedOptions.js +8 -0
- package/decorators/withFreezedOptions.js.map +1 -1
- package/decorators/withIntersectionObserver.js +10 -1
- package/decorators/withIntersectionObserver.js.map +2 -2
- package/decorators/withMountOnMediaQuery.js +17 -1
- package/decorators/withMountOnMediaQuery.js.map +2 -2
- package/decorators/withMountWhenInView.js +22 -1
- package/decorators/withMountWhenInView.js.map +2 -2
- package/decorators/withRelativePointer.js +6 -0
- package/decorators/withRelativePointer.js.map +1 -1
- package/decorators/withResponsiveOptions.js +3 -0
- package/decorators/withResponsiveOptions.js.map +1 -1
- package/decorators/withScrolledInView/utils.d.ts +12 -1
- package/decorators/withScrolledInView/utils.js +7 -7
- package/decorators/withScrolledInView/utils.js.map +2 -2
- package/decorators/withScrolledInView/withScrolledInView.js +13 -35
- package/decorators/withScrolledInView/withScrolledInView.js.map +2 -2
- package/helpers/createApp.d.ts +2 -1
- package/helpers/createApp.js +2 -2
- package/helpers/createApp.js.map +2 -2
- package/helpers/getDirectChildren.js.map +1 -1
- package/helpers/importOnInteraction.js +4 -4
- package/helpers/importOnInteraction.js.map +2 -2
- package/helpers/importWhenVisible.js +2 -1
- package/helpers/importWhenVisible.js.map +2 -2
- package/package.json +2 -10
- package/services/drag.js +8 -8
- package/services/drag.js.map +2 -2
- package/services/index.d.ts +1 -1
- package/services/index.js.map +2 -2
- package/services/key.js +2 -2
- package/services/key.js.map +2 -2
- package/services/load.js +3 -0
- package/services/load.js.map +1 -1
- package/services/pointer.d.ts +1 -1
- package/services/pointer.js +7 -7
- package/services/pointer.js.map +2 -2
- package/services/raf.js +4 -6
- package/services/raf.js.map +2 -2
- package/services/resize.d.ts +7 -6
- package/services/resize.js +19 -26
- package/services/resize.js.map +2 -2
- package/services/scroll.js +8 -8
- package/services/scroll.js.map +2 -2
- package/services/service.js +2 -2
- package/services/service.js.map +2 -2
- package/utils/Queue.js +30 -0
- package/utils/Queue.js.map +1 -1
- package/utils/SmartQueue.d.ts +1 -1
- package/utils/SmartQueue.js +13 -1
- package/utils/SmartQueue.js.map +2 -2
- package/utils/collide/collidePointRect.js +4 -1
- package/utils/collide/collidePointRect.js.map +1 -1
- package/utils/collide/collideRectRect.js +4 -1
- package/utils/collide/collideRectRect.js.map +1 -1
- package/utils/css/animate.d.ts +33 -15
- package/utils/css/animate.js +80 -34
- package/utils/css/animate.js.map +2 -2
- package/utils/css/classes.js +2 -3
- package/utils/css/classes.js.map +2 -2
- package/utils/css/getOffsetSizes.js +2 -2
- package/utils/css/getOffsetSizes.js.map +1 -1
- package/utils/css/index.d.ts +2 -1
- package/utils/css/index.js +4 -4
- package/utils/css/index.js.map +2 -2
- package/utils/css/matrix.d.ts +1 -1
- package/utils/css/matrix.js.map +2 -2
- package/utils/css/styles.js +2 -2
- package/utils/css/styles.js.map +2 -2
- package/utils/css/transform.d.ts +1 -1
- package/utils/css/transform.js +1 -1
- package/utils/css/transform.js.map +2 -2
- package/utils/css/transition.js +15 -0
- package/utils/css/transition.js.map +1 -1
- package/utils/css/utils.d.ts +1 -1
- package/utils/css/utils.js +1 -1
- package/utils/css/utils.js.map +2 -2
- package/utils/history.js +6 -5
- package/utils/history.js.map +2 -2
- package/utils/index.d.ts +5 -4
- package/utils/index.js +16 -16
- package/utils/index.js.map +2 -2
- package/utils/is.d.ts +12 -0
- package/utils/is.js +17 -0
- package/utils/is.js.map +2 -2
- package/utils/math/ease.d.ts +1 -0
- package/utils/math/ease.js +2 -0
- package/utils/math/ease.js.map +2 -2
- package/utils/math/index.d.ts +4 -3
- package/utils/math/index.js +5 -3
- package/utils/math/index.js.map +2 -2
- package/utils/math/mean.d.ts +1 -0
- package/utils/math/mean.js +17 -0
- package/utils/math/mean.js.map +7 -0
- package/utils/nextFrame.d.ts +4 -22
- package/utils/nextFrame.js +3 -10
- package/utils/nextFrame.js.map +2 -2
- package/utils/nextMicrotask.d.ts +4 -1
- package/utils/nextMicrotask.js +3 -3
- package/utils/nextMicrotask.js.map +2 -2
- package/utils/nextTick.d.ts +4 -1
- package/utils/nextTick.js +3 -3
- package/utils/nextTick.js.map +2 -2
- package/utils/random.d.ts +15 -0
- package/utils/random.js +15 -0
- package/utils/random.js.map +7 -0
- package/utils/scheduler.js +4 -4
- package/utils/scheduler.js.map +2 -2
- package/utils/scrollTo.d.ts +30 -6
- package/utils/scrollTo.js +97 -43
- package/utils/scrollTo.js.map +2 -2
- package/utils/string/endsWith.d.ts +8 -0
- package/utils/string/endsWith.js +13 -0
- package/utils/string/endsWith.js.map +7 -0
- package/utils/string/index.d.ts +2 -0
- package/utils/string/index.js +2 -0
- package/utils/string/index.js.map +2 -2
- package/utils/string/startsWith.d.ts +8 -0
- package/utils/string/startsWith.js +13 -0
- package/utils/string/startsWith.js.map +7 -0
- package/utils/string/withLeadingCharacters.js.map +1 -1
- package/utils/string/withTrailingCharacters.js.map +1 -1
- package/utils/string/withoutLeadingCharacters.js.map +1 -1
- package/utils/string/withoutLeadingCharactersRecursive.js.map +1 -1
- package/utils/string/withoutTrailingCharacters.js.map +1 -1
- package/utils/string/withoutTrailingCharactersRecursive.js.map +1 -1
- package/utils/{focusTrap.d.ts → trapFocus.d.ts} +2 -10
- package/utils/{focusTrap.js → trapFocus.js} +5 -9
- package/utils/trapFocus.js.map +7 -0
- package/utils/tween.d.ts +59 -10
- package/utils/tween.js +24 -18
- package/utils/tween.js.map +2 -2
- package/Base/Base.cjs +0 -325
- package/Base/Base.cjs.map +0 -7
- package/Base/features.cjs +0 -27
- package/Base/features.cjs.map +0 -7
- package/Base/index.cjs +0 -21
- package/Base/index.cjs.map +0 -7
- package/Base/managers/AbstractManager.cjs +0 -57
- package/Base/managers/AbstractManager.cjs.map +0 -7
- package/Base/managers/ChildrenManager.cjs +0 -123
- package/Base/managers/ChildrenManager.cjs.map +0 -7
- package/Base/managers/EventsManager.cjs +0 -220
- package/Base/managers/EventsManager.cjs.map +0 -7
- package/Base/managers/OptionsManager.cjs +0 -171
- package/Base/managers/OptionsManager.cjs.map +0 -7
- package/Base/managers/RefsManager.cjs +0 -104
- package/Base/managers/RefsManager.cjs.map +0 -7
- package/Base/managers/ResponsiveOptionsManager.cjs +0 -63
- package/Base/managers/ResponsiveOptionsManager.cjs.map +0 -7
- package/Base/managers/ServicesManager.cjs +0 -111
- package/Base/managers/ServicesManager.cjs.map +0 -7
- package/Base/managers/index.cjs +0 -39
- package/Base/managers/index.cjs.map +0 -7
- package/Base/types.cjs +0 -19
- package/Base/types.cjs.map +0 -7
- package/Base/utils.cjs +0 -91
- package/Base/utils.cjs.map +0 -7
- package/decorators/index.cjs +0 -33
- package/decorators/index.cjs.map +0 -7
- package/decorators/withBreakpointManager.cjs +0 -92
- package/decorators/withBreakpointManager.cjs.map +0 -7
- package/decorators/withBreakpointObserver.cjs +0 -118
- package/decorators/withBreakpointObserver.cjs.map +0 -7
- package/decorators/withDrag.cjs +0 -50
- package/decorators/withDrag.cjs.map +0 -7
- package/decorators/withExtraConfig.cjs +0 -43
- package/decorators/withExtraConfig.cjs.map +0 -7
- package/decorators/withFreezedOptions.cjs +0 -42
- package/decorators/withFreezedOptions.cjs.map +0 -7
- package/decorators/withIntersectionObserver.cjs +0 -62
- package/decorators/withIntersectionObserver.cjs.map +0 -7
- package/decorators/withMountOnMediaQuery.cjs +0 -70
- package/decorators/withMountOnMediaQuery.cjs.map +0 -7
- package/decorators/withMountWhenInView.cjs +0 -71
- package/decorators/withMountWhenInView.cjs.map +0 -7
- package/decorators/withMountWhenPrefersMotion.cjs +0 -30
- package/decorators/withMountWhenPrefersMotion.cjs.map +0 -7
- package/decorators/withRelativePointer.cjs +0 -50
- package/decorators/withRelativePointer.cjs.map +0 -7
- package/decorators/withResponsiveOptions.cjs +0 -38
- package/decorators/withResponsiveOptions.cjs.map +0 -7
- package/decorators/withScrolledInView/index.cjs +0 -22
- package/decorators/withScrolledInView/index.cjs.map +0 -7
- package/decorators/withScrolledInView/types.cjs +0 -19
- package/decorators/withScrolledInView/types.cjs.map +0 -7
- package/decorators/withScrolledInView/utils.cjs +0 -99
- package/decorators/withScrolledInView/utils.cjs.map +0 -7
- package/decorators/withScrolledInView/withScrolledInView.cjs +0 -216
- package/decorators/withScrolledInView/withScrolledInView.cjs.map +0 -7
- package/decorators/withVue2.cjs +0 -65
- package/decorators/withVue2.cjs.map +0 -7
- package/decorators/withVue2.d.ts +0 -16
- package/decorators/withVue2.js +0 -43
- package/decorators/withVue2.js.map +0 -7
- package/helpers/createApp.cjs +0 -58
- package/helpers/createApp.cjs.map +0 -7
- package/helpers/getClosestParent.cjs +0 -41
- package/helpers/getClosestParent.cjs.map +0 -7
- package/helpers/getDirectChildren.cjs +0 -47
- package/helpers/getDirectChildren.cjs.map +0 -7
- package/helpers/getInstanceFromElement.cjs +0 -32
- package/helpers/getInstanceFromElement.cjs.map +0 -7
- package/helpers/importOnInteraction.cjs +0 -48
- package/helpers/importOnInteraction.cjs.map +0 -7
- package/helpers/importOnMediaQuery.cjs +0 -44
- package/helpers/importOnMediaQuery.cjs.map +0 -7
- package/helpers/importWhenIdle.cjs +0 -46
- package/helpers/importWhenIdle.cjs.map +0 -7
- package/helpers/importWhenPrefersMotion.cjs +0 -36
- package/helpers/importWhenPrefersMotion.cjs.map +0 -7
- package/helpers/importWhenVisible.cjs +0 -43
- package/helpers/importWhenVisible.cjs.map +0 -7
- package/helpers/index.cjs +0 -49
- package/helpers/index.cjs.map +0 -7
- package/helpers/utils.cjs +0 -37
- package/helpers/utils.cjs.map +0 -7
- package/index.cjs +0 -31
- package/index.cjs.map +0 -7
- package/services/drag.cjs +0 -227
- package/services/drag.cjs.map +0 -7
- package/services/index.cjs +0 -47
- package/services/index.cjs.map +0 -7
- package/services/key.cjs +0 -93
- package/services/key.cjs.map +0 -7
- package/services/load.cjs +0 -57
- package/services/load.cjs.map +0 -7
- package/services/pointer.cjs +0 -145
- package/services/pointer.cjs.map +0 -7
- package/services/raf.cjs +0 -80
- package/services/raf.cjs.map +0 -7
- package/services/resize.cjs +0 -103
- package/services/resize.cjs.map +0 -7
- package/services/scroll.cjs +0 -115
- package/services/scroll.cjs.map +0 -7
- package/services/service.cjs +0 -69
- package/services/service.cjs.map +0 -7
- package/utils/Queue.cjs +0 -63
- package/utils/Queue.cjs.map +0 -7
- package/utils/SmartQueue.cjs +0 -57
- package/utils/SmartQueue.cjs.map +0 -7
- package/utils/collide/boundingRectToCircle.cjs +0 -36
- package/utils/collide/boundingRectToCircle.cjs.map +0 -7
- package/utils/collide/collideCircleCircle.cjs +0 -35
- package/utils/collide/collideCircleCircle.cjs.map +0 -7
- package/utils/collide/collideCircleRect.cjs +0 -47
- package/utils/collide/collideCircleRect.cjs.map +0 -7
- package/utils/collide/collidePointCircle.cjs +0 -32
- package/utils/collide/collidePointCircle.cjs.map +0 -7
- package/utils/collide/collidePointRect.cjs +0 -29
- package/utils/collide/collidePointRect.cjs.map +0 -7
- package/utils/collide/collideRectRect.cjs +0 -29
- package/utils/collide/collideRectRect.cjs.map +0 -7
- package/utils/collide/index.cjs +0 -43
- package/utils/collide/index.cjs.map +0 -7
- package/utils/css/animate.cjs +0 -193
- package/utils/css/animate.cjs.map +0 -7
- package/utils/css/classes.cjs +0 -52
- package/utils/css/classes.cjs.map +0 -7
- package/utils/css/getOffsetSizes.cjs +0 -48
- package/utils/css/getOffsetSizes.cjs.map +0 -7
- package/utils/css/index.cjs +0 -48
- package/utils/css/index.cjs.map +0 -7
- package/utils/css/matrix.cjs +0 -30
- package/utils/css/matrix.cjs.map +0 -7
- package/utils/css/styles.cjs +0 -45
- package/utils/css/styles.cjs.map +0 -7
- package/utils/css/transform.cjs +0 -91
- package/utils/css/transform.cjs.map +0 -7
- package/utils/css/transition.cjs +0 -126
- package/utils/css/transition.cjs.map +0 -7
- package/utils/css/utils.cjs +0 -32
- package/utils/css/utils.cjs.map +0 -7
- package/utils/debounce.cjs +0 -35
- package/utils/debounce.cjs.map +0 -7
- package/utils/dom/ancestors.cjs +0 -37
- package/utils/dom/ancestors.cjs.map +0 -7
- package/utils/dom/index.cjs +0 -21
- package/utils/dom/index.cjs.map +0 -7
- package/utils/focusTrap.cjs +0 -89
- package/utils/focusTrap.cjs.map +0 -7
- package/utils/focusTrap.js.map +0 -7
- package/utils/getComponentResolver.cjs +0 -38
- package/utils/getComponentResolver.cjs.map +0 -7
- package/utils/has.cjs +0 -29
- package/utils/has.cjs.map +0 -7
- package/utils/history.cjs +0 -91
- package/utils/history.cjs.map +0 -7
- package/utils/index.cjs +0 -72
- package/utils/index.cjs.map +0 -7
- package/utils/is.cjs +0 -41
- package/utils/is.cjs.map +0 -7
- package/utils/keyCodes.cjs +0 -36
- package/utils/keyCodes.cjs.map +0 -7
- package/utils/math/clamp.cjs +0 -29
- package/utils/math/clamp.cjs.map +0 -7
- package/utils/math/clamp01.cjs +0 -36
- package/utils/math/clamp01.cjs.map +0 -7
- package/utils/math/createEases.cjs +0 -33
- package/utils/math/createEases.cjs.map +0 -7
- package/utils/math/damp.cjs +0 -29
- package/utils/math/damp.cjs.map +0 -7
- package/utils/math/ease.cjs +0 -82
- package/utils/math/ease.cjs.map +0 -7
- package/utils/math/index.cjs +0 -50
- package/utils/math/index.cjs.map +0 -7
- package/utils/math/inertiaFinalValue.cjs +0 -43
- package/utils/math/inertiaFinalValue.cjs.map +0 -7
- package/utils/math/lerp.cjs +0 -29
- package/utils/math/lerp.cjs.map +0 -7
- package/utils/math/map.cjs +0 -29
- package/utils/math/map.cjs.map +0 -7
- package/utils/math/round.cjs +0 -29
- package/utils/math/round.cjs.map +0 -7
- package/utils/memoize.cjs +0 -48
- package/utils/memoize.cjs.map +0 -7
- package/utils/nextFrame.cjs +0 -41
- package/utils/nextFrame.cjs.map +0 -7
- package/utils/nextMicrotask.cjs +0 -30
- package/utils/nextMicrotask.cjs.map +0 -7
- package/utils/nextTick.cjs +0 -31
- package/utils/nextTick.cjs.map +0 -7
- package/utils/noop.cjs +0 -32
- package/utils/noop.cjs.map +0 -7
- package/utils/object/autoBind.cjs +0 -54
- package/utils/object/autoBind.cjs.map +0 -7
- package/utils/object/autoBind.d.ts +0 -14
- package/utils/object/autoBind.js +0 -26
- package/utils/object/autoBind.js.map +0 -7
- package/utils/object/getAllProperties.cjs +0 -39
- package/utils/object/getAllProperties.cjs.map +0 -7
- package/utils/object/index.cjs +0 -35
- package/utils/object/index.cjs.map +0 -7
- package/utils/object/index.d.ts +0 -2
- package/utils/object/index.js +0 -7
- package/utils/object/index.js.map +0 -7
- package/utils/scheduler.cjs +0 -75
- package/utils/scheduler.cjs.map +0 -7
- package/utils/scrollTo.cjs +0 -84
- package/utils/scrollTo.cjs.map +0 -7
- package/utils/string/index.cjs +0 -51
- package/utils/string/index.cjs.map +0 -7
- package/utils/string/withLeadingCharacters.cjs +0 -36
- package/utils/string/withLeadingCharacters.cjs.map +0 -7
- package/utils/string/withLeadingSlash.cjs +0 -36
- package/utils/string/withLeadingSlash.cjs.map +0 -7
- package/utils/string/withTrailingCharacters.cjs +0 -36
- package/utils/string/withTrailingCharacters.cjs.map +0 -7
- package/utils/string/withTrailingSlash.cjs +0 -36
- package/utils/string/withTrailingSlash.cjs.map +0 -7
- package/utils/string/withoutLeadingCharacters.cjs +0 -29
- package/utils/string/withoutLeadingCharacters.cjs.map +0 -7
- package/utils/string/withoutLeadingCharactersRecursive.cjs +0 -41
- package/utils/string/withoutLeadingCharactersRecursive.cjs.map +0 -7
- package/utils/string/withoutLeadingSlash.cjs +0 -36
- package/utils/string/withoutLeadingSlash.cjs.map +0 -7
- package/utils/string/withoutTrailingCharacters.cjs +0 -29
- package/utils/string/withoutTrailingCharacters.cjs.map +0 -7
- package/utils/string/withoutTrailingCharactersRecursive.cjs +0 -41
- package/utils/string/withoutTrailingCharactersRecursive.cjs.map +0 -7
- package/utils/string/withoutTrailingSlash.cjs +0 -36
- package/utils/string/withoutTrailingSlash.cjs.map +0 -7
- package/utils/throttle.cjs +0 -37
- package/utils/throttle.cjs.map +0 -7
- package/utils/tween.cjs +0 -118
- package/utils/tween.cjs.map +0 -7
- package/utils/wait.cjs +0 -31
- package/utils/wait.cjs.map +0 -7
package/Base/Base.d.ts
CHANGED
|
@@ -191,7 +191,7 @@ export declare class Base<T extends BaseProps = BaseProps> extends EventTarget {
|
|
|
191
191
|
*/
|
|
192
192
|
$emit(event: string, ...args: unknown[]): void;
|
|
193
193
|
/**
|
|
194
|
-
*
|
|
194
|
+
* Register and mount all instances of the component.
|
|
195
195
|
*/
|
|
196
|
-
static $
|
|
196
|
+
static $register(nameOrSelector?: string): Base[];
|
|
197
197
|
}
|
package/Base/Base.js
CHANGED
|
@@ -8,49 +8,34 @@ import {
|
|
|
8
8
|
} from "./managers/index.js";
|
|
9
9
|
import { noop, isDev, isFunction, isArray } from "../utils/index.js";
|
|
10
10
|
let id = 0;
|
|
11
|
-
function createAndTestManagers(instance) {
|
|
12
|
-
[
|
|
13
|
-
{
|
|
14
|
-
prop: "__options",
|
|
15
|
-
constructorName: "OptionsManager",
|
|
16
|
-
constructor: OptionsManager
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
prop: "__services",
|
|
20
|
-
constructorName: "ServicesManager",
|
|
21
|
-
constructor: ServicesManager
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
prop: "__events",
|
|
25
|
-
constructorName: "EventsManager",
|
|
26
|
-
constructor: EventsManager
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
prop: "__refs",
|
|
30
|
-
constructorName: "RefsManager",
|
|
31
|
-
constructor: RefsManager
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
prop: "__children",
|
|
35
|
-
constructorName: "ChildrenManager",
|
|
36
|
-
constructor: ChildrenManager
|
|
37
|
-
}
|
|
38
|
-
].forEach(({ prop, constructorName, constructor }) => {
|
|
39
|
-
instance[prop] = new instance.__managers[constructorName](instance);
|
|
40
|
-
if (isDev && !(instance[prop] instanceof constructor)) {
|
|
41
|
-
throw new Error(
|
|
42
|
-
`The \`$managers.${constructorName}\` must extend the \`${constructorName}\` class.`
|
|
43
|
-
);
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
11
|
class Base extends EventTarget {
|
|
12
|
+
/**
|
|
13
|
+
* This is a Base instance.
|
|
14
|
+
*/
|
|
48
15
|
static $isBase = true;
|
|
16
|
+
/**
|
|
17
|
+
* The instance parent.
|
|
18
|
+
*/
|
|
49
19
|
$parent = null;
|
|
20
|
+
/**
|
|
21
|
+
* The instance id.
|
|
22
|
+
*/
|
|
50
23
|
$id;
|
|
24
|
+
/**
|
|
25
|
+
* The root element.
|
|
26
|
+
*/
|
|
51
27
|
$el;
|
|
28
|
+
/**
|
|
29
|
+
* The state of the component.
|
|
30
|
+
*/
|
|
52
31
|
$isMounted = false;
|
|
32
|
+
/**
|
|
33
|
+
* Store the event handlers.
|
|
34
|
+
*/
|
|
53
35
|
__eventHandlers = /* @__PURE__ */ new Map();
|
|
36
|
+
/**
|
|
37
|
+
* Get the root instance of the app.
|
|
38
|
+
*/
|
|
54
39
|
get $root() {
|
|
55
40
|
if (!this.$parent) {
|
|
56
41
|
return this;
|
|
@@ -65,6 +50,9 @@ class Base extends EventTarget {
|
|
|
65
50
|
}
|
|
66
51
|
return root;
|
|
67
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Merge configuration with the parents' configurations.
|
|
55
|
+
*/
|
|
68
56
|
get __config() {
|
|
69
57
|
let proto = Object.getPrototypeOf(this);
|
|
70
58
|
let { config } = proto.constructor;
|
|
@@ -86,11 +74,13 @@ class Base extends EventTarget {
|
|
|
86
74
|
static config = {
|
|
87
75
|
name: "Base",
|
|
88
76
|
emits: [
|
|
77
|
+
// hook events
|
|
89
78
|
"before-mounted",
|
|
90
79
|
"mounted",
|
|
91
80
|
"updated",
|
|
92
81
|
"destroyed",
|
|
93
82
|
"terminated",
|
|
83
|
+
// default services' events
|
|
94
84
|
"ticked",
|
|
95
85
|
"scrolled",
|
|
96
86
|
"resized",
|
|
@@ -116,15 +106,27 @@ class Base extends EventTarget {
|
|
|
116
106
|
return this.__children;
|
|
117
107
|
}
|
|
118
108
|
__events;
|
|
109
|
+
/**
|
|
110
|
+
* Small helper to log stuff.
|
|
111
|
+
*/
|
|
119
112
|
get $log() {
|
|
120
113
|
return this.__options.log ? window.console.log.bind(window, `[${this.__config.name}]`) : noop;
|
|
121
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Small helper to make warning easier.
|
|
117
|
+
*/
|
|
122
118
|
get $warn() {
|
|
123
119
|
return this.__options.log ? window.console.warn.bind(window, `[${this.__config.name}]`) : noop;
|
|
124
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Small helper to debug information.
|
|
123
|
+
*/
|
|
125
124
|
get __debug() {
|
|
126
125
|
return isDev && this.__options.debug ? window.console.log.bind(window, `[debug] [${this.$id}]`) : noop;
|
|
127
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Get manager constructors.
|
|
129
|
+
*/
|
|
128
130
|
get __managers() {
|
|
129
131
|
return {
|
|
130
132
|
ChildrenManager,
|
|
@@ -134,6 +136,9 @@ class Base extends EventTarget {
|
|
|
134
136
|
ServicesManager
|
|
135
137
|
};
|
|
136
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Call an instance method and emit corresponding events.
|
|
141
|
+
*/
|
|
137
142
|
__callMethod(method, ...args) {
|
|
138
143
|
if (isDev) {
|
|
139
144
|
this.__debug("callMethod", method, ...args);
|
|
@@ -147,10 +152,21 @@ class Base extends EventTarget {
|
|
|
147
152
|
}
|
|
148
153
|
return this[method].call(this, ...args);
|
|
149
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Test if the given event has been bound to the instance.
|
|
157
|
+
*
|
|
158
|
+
* @param {string} event The event's name.
|
|
159
|
+
* @returns {boolean} Wether the given event has been bound or not.
|
|
160
|
+
*/
|
|
150
161
|
__hasEvent(event) {
|
|
151
162
|
const eventHandlers = this.__eventHandlers.get(event);
|
|
152
163
|
return eventHandlers && eventHandlers.size > 0;
|
|
153
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Class constructor where all the magic takes place.
|
|
167
|
+
*
|
|
168
|
+
* @param {HTMLElement} element The component's root element dd.
|
|
169
|
+
*/
|
|
154
170
|
constructor(element) {
|
|
155
171
|
super();
|
|
156
172
|
if (!element) {
|
|
@@ -173,11 +189,16 @@ class Base extends EventTarget {
|
|
|
173
189
|
this.$el.__base__ = /* @__PURE__ */ new WeakMap();
|
|
174
190
|
}
|
|
175
191
|
this.$el.__base__.set(this.__ctor, this);
|
|
176
|
-
|
|
192
|
+
for (const service of ["Options", "Services", "Events", "Refs", "Children"]) {
|
|
193
|
+
this[`__${service.toLowerCase()}`] = new this.__managers[`${service}Manager`](this);
|
|
194
|
+
}
|
|
177
195
|
if (isDev) {
|
|
178
196
|
this.__debug("constructor", this);
|
|
179
197
|
}
|
|
180
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Trigger the `mounted` callback.
|
|
201
|
+
*/
|
|
181
202
|
$mount() {
|
|
182
203
|
if (this.$isMounted) {
|
|
183
204
|
return this;
|
|
@@ -186,34 +207,34 @@ class Base extends EventTarget {
|
|
|
186
207
|
if (isDev) {
|
|
187
208
|
this.__debug("$mount");
|
|
188
209
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
this.$isMounted = true;
|
|
197
|
-
},
|
|
198
|
-
() => this.__callMethod("mounted")
|
|
199
|
-
].forEach(addToQueue);
|
|
210
|
+
addToQueue(() => this.$children.registerAll());
|
|
211
|
+
addToQueue(() => this.$refs.registerAll());
|
|
212
|
+
addToQueue(() => this.__events.bindRootElement());
|
|
213
|
+
addToQueue(() => this.$services.enableAll());
|
|
214
|
+
addToQueue(() => this.$children.mountAll());
|
|
215
|
+
addToQueue(() => this.$isMounted = true);
|
|
216
|
+
addToQueue(() => this.__callMethod("mounted"));
|
|
200
217
|
return this;
|
|
201
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* Update the instance children.
|
|
221
|
+
*/
|
|
202
222
|
$update() {
|
|
203
223
|
if (isDev) {
|
|
204
224
|
this.__debug("$update");
|
|
205
225
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
() => this.__callMethod("updated")
|
|
214
|
-
].forEach(addToQueue);
|
|
226
|
+
addToQueue(() => this.$refs.unregisterAll());
|
|
227
|
+
addToQueue(() => this.$services.disableAll());
|
|
228
|
+
addToQueue(() => this.$children.registerAll());
|
|
229
|
+
addToQueue(() => this.$refs.registerAll());
|
|
230
|
+
addToQueue(() => this.$services.enableAll());
|
|
231
|
+
addToQueue(() => this.$children.updateAll());
|
|
232
|
+
addToQueue(() => this.__callMethod("updated"));
|
|
215
233
|
return this;
|
|
216
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* Trigger the `destroyed` callback.
|
|
237
|
+
*/
|
|
217
238
|
$destroy() {
|
|
218
239
|
if (!this.$isMounted) {
|
|
219
240
|
return this;
|
|
@@ -221,28 +242,31 @@ class Base extends EventTarget {
|
|
|
221
242
|
if (isDev) {
|
|
222
243
|
this.__debug("$destroy");
|
|
223
244
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
() => this.$services.disableAll(),
|
|
231
|
-
() => this.$children.destroyAll(),
|
|
232
|
-
() => this.__callMethod("destroyed")
|
|
233
|
-
].forEach(addToQueue);
|
|
245
|
+
addToQueue(() => this.$isMounted = false);
|
|
246
|
+
addToQueue(() => this.__events.unbindRootElement());
|
|
247
|
+
addToQueue(() => this.$refs.unregisterAll());
|
|
248
|
+
addToQueue(() => this.$services.disableAll());
|
|
249
|
+
addToQueue(() => this.$children.destroyAll());
|
|
250
|
+
addToQueue(() => this.__callMethod("destroyed"));
|
|
234
251
|
return this;
|
|
235
252
|
}
|
|
253
|
+
/**
|
|
254
|
+
* Terminate a child instance when it is not needed anymore.
|
|
255
|
+
*/
|
|
236
256
|
$terminate() {
|
|
237
257
|
if (isDev) {
|
|
238
258
|
this.__debug("$terminate");
|
|
239
259
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
() => this.$el.__base__.set(this.__ctor, "terminated")
|
|
244
|
-
].forEach(addToQueue);
|
|
260
|
+
addToQueue(() => this.$destroy());
|
|
261
|
+
addToQueue(() => this.__callMethod("terminated"));
|
|
262
|
+
addToQueue(() => this.$el.__base__.set(this.__ctor, "terminated"));
|
|
245
263
|
}
|
|
264
|
+
/**
|
|
265
|
+
* Add an emitted event.
|
|
266
|
+
*
|
|
267
|
+
* @param {string} event The event name.
|
|
268
|
+
* @returns {void}
|
|
269
|
+
*/
|
|
246
270
|
__addEmits(event) {
|
|
247
271
|
const ctor = this.__ctor;
|
|
248
272
|
if (isArray(ctor.config.emits)) {
|
|
@@ -251,14 +275,35 @@ class Base extends EventTarget {
|
|
|
251
275
|
ctor.config.emits = [event];
|
|
252
276
|
}
|
|
253
277
|
}
|
|
278
|
+
/**
|
|
279
|
+
* Remove an emitted event.
|
|
280
|
+
*
|
|
281
|
+
* @param {string} event The event name.
|
|
282
|
+
* @returns {void}
|
|
283
|
+
*/
|
|
254
284
|
__removeEmits(event) {
|
|
255
285
|
const ctor = this.__ctor;
|
|
256
286
|
const index = ctor.config.emits.indexOf(event);
|
|
257
287
|
ctor.config.emits.splice(index, 1);
|
|
258
288
|
}
|
|
289
|
+
/**
|
|
290
|
+
* Get the instance constructor.
|
|
291
|
+
*/
|
|
259
292
|
get __ctor() {
|
|
260
293
|
return this.constructor;
|
|
261
294
|
}
|
|
295
|
+
/**
|
|
296
|
+
* Bind a listener function to an event.
|
|
297
|
+
*
|
|
298
|
+
* @param {string} event
|
|
299
|
+
* Name of the event.
|
|
300
|
+
* @param {EventListenerOrEventListenerObject} listener
|
|
301
|
+
* Function to be called.
|
|
302
|
+
* @param {boolean|AddEventListenerOptions} [options]
|
|
303
|
+
* Options for the `removeEventListener` method.
|
|
304
|
+
* @returns {() => void}
|
|
305
|
+
* A function to unbind the listener.
|
|
306
|
+
*/
|
|
262
307
|
$on(event, listener, options) {
|
|
263
308
|
if (isDev) {
|
|
264
309
|
this.__debug("$on", event, listener, options);
|
|
@@ -275,6 +320,17 @@ class Base extends EventTarget {
|
|
|
275
320
|
this.$off(event, listener, options);
|
|
276
321
|
};
|
|
277
322
|
}
|
|
323
|
+
/**
|
|
324
|
+
* Unbind a listener function from an event.
|
|
325
|
+
*
|
|
326
|
+
* @param {string} event
|
|
327
|
+
* Name of the event.
|
|
328
|
+
* @param {EventListenerOrEventListenerObject} listener
|
|
329
|
+
* Function to be removed.
|
|
330
|
+
* @param {boolean|EventListenerOptions} [options]
|
|
331
|
+
* Options for the `removeEventListener` method.
|
|
332
|
+
* @returns {void}
|
|
333
|
+
*/
|
|
278
334
|
$off(event, listener, options) {
|
|
279
335
|
if (isDev) {
|
|
280
336
|
this.__debug("$off", event, listener);
|
|
@@ -283,19 +339,26 @@ class Base extends EventTarget {
|
|
|
283
339
|
const target = getEventTarget(this, event, this.__config);
|
|
284
340
|
target.removeEventListener(event, listener, options);
|
|
285
341
|
}
|
|
342
|
+
/**
|
|
343
|
+
* Emits an event.
|
|
344
|
+
*
|
|
345
|
+
* @param {string} event Name of the event.
|
|
346
|
+
* @param {any[]} args The arguments to apply to the functions bound to this event.
|
|
347
|
+
* @returns {void}
|
|
348
|
+
*/
|
|
286
349
|
$emit(event, ...args) {
|
|
287
350
|
if (isDev) {
|
|
288
351
|
this.__debug("$emit", event, args);
|
|
289
352
|
}
|
|
290
353
|
this.dispatchEvent(new CustomEvent(event, { detail: args }));
|
|
291
354
|
}
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
355
|
+
/**
|
|
356
|
+
* Register and mount all instances of the component.
|
|
357
|
+
*/
|
|
358
|
+
static $register(nameOrSelector) {
|
|
359
|
+
return getComponentElements(nameOrSelector ?? this.config.name).map(
|
|
360
|
+
(el) => new this(el).$mount()
|
|
361
|
+
);
|
|
299
362
|
}
|
|
300
363
|
}
|
|
301
364
|
export {
|
package/Base/Base.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../packages/js-toolkit/Base/Base.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable no-use-before-define */\nimport { getComponentElements, getEventTarget, addToQueue } from './utils.js';\nimport {\n ChildrenManager,\n RefsManager,\n ServicesManager,\n EventsManager,\n OptionsManager,\n} from './managers/index.js';\nimport { noop, isDev, isFunction, isArray } from '../utils/index.js';\n\nlet id = 0;\n\n/**\n * Test if the managers' instances implement the default manager.\n *\n * @throws\n */\nfunction createAndTestManagers(instance: Base): void {\n [\n {\n prop: '__options',\n constructorName: 'OptionsManager',\n constructor: OptionsManager,\n },\n {\n prop: '__services',\n constructorName: 'ServicesManager',\n constructor: ServicesManager,\n },\n {\n prop: '__events',\n constructorName: 'EventsManager',\n constructor: EventsManager,\n },\n {\n prop: '__refs',\n constructorName: 'RefsManager',\n constructor: RefsManager,\n },\n {\n prop: '__children',\n constructorName: 'ChildrenManager',\n constructor: ChildrenManager,\n },\n ].forEach(({ prop, constructorName, constructor }) => {\n instance[prop] = new instance.__managers[constructorName](instance);\n if (isDev && !(instance[prop] instanceof constructor)) {\n throw new Error(\n `The \\`$managers.${constructorName}\\` must extend the \\`${constructorName}\\` class.`,\n );\n }\n });\n}\n\nexport type BaseEl = HTMLElement & { __base__?: WeakMap<BaseConstructor, Base | 'terminated'> };\nexport type BaseConstructor<T extends Base = Base> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n prototype: Base;\n} & Pick<typeof Base, keyof typeof Base>;\nexport type BaseAsyncConstructor<T extends Base = Base> = (\n instance: Base,\n) => Promise<BaseConstructor<T> | { default: BaseConstructor<T> }>;\nexport type BaseOptions = { [name: string]: unknown };\nexport type BaseRefs = { [name: string]: HTMLElement | HTMLElement[] };\nexport type BaseChildren = { [nameOrSelector: string]: Base[] | Promise<Base>[] };\nexport type BaseConfigComponents = {\n [nameOrSelector: string]: BaseConstructor | BaseAsyncConstructor;\n};\n\nexport type BaseConfig = {\n name: string;\n debug?: boolean;\n log?: boolean;\n refs?: string[];\n emits?: string[];\n components?: BaseConfigComponents;\n options?: import('./managers/OptionsManager').OptionsSchema;\n};\n\nexport type BaseProps = {\n $el?: HTMLElement;\n $options?: BaseOptions;\n $refs?: BaseRefs;\n $children?: BaseChildren;\n $parent?: Base;\n};\n\nexport type Managers = {\n ChildrenManager: typeof ChildrenManager;\n EventsManager: typeof EventsManager;\n OptionsManager: typeof OptionsManager;\n RefsManager: typeof RefsManager;\n ServicesManager: typeof ServicesManager;\n};\n\n/**\n * Base class.\n */\nexport class Base<T extends BaseProps = BaseProps> extends EventTarget {\n /**\n * This is a Base instance.\n */\n static readonly $isBase = true as const;\n\n /**\n * The instance parent.\n */\n $parent: T['$parent'] & Base = null;\n\n /**\n * The instance id.\n */\n $id: string;\n\n /**\n * The root element.\n */\n $el: T['$el'] & BaseEl;\n\n /**\n * The state of the component.\n */\n $isMounted = false;\n\n /**\n * Store the event handlers.\n */\n __eventHandlers: Map<string, Set<EventListenerOrEventListenerObject>> = new Map();\n\n /**\n * Get the root instance of the app.\n */\n get $root(): Base {\n if (!this.$parent) {\n return this;\n }\n\n let parent = this.$parent;\n let root = this.$parent;\n\n while (parent) {\n if (!parent.$parent) {\n root = parent;\n }\n\n parent = parent.$parent;\n }\n\n return root;\n }\n\n /**\n * Merge configuration with the parents' configurations.\n */\n get __config(): BaseConfig {\n let proto = Object.getPrototypeOf(this);\n let { config } = proto.constructor;\n\n while (proto.constructor.config && proto.constructor.$isBase) {\n config = { ...proto.constructor.config, ...config };\n\n if (proto.constructor.config.options) {\n config.options = { ...proto.constructor.config.options, ...config.options };\n }\n\n if (proto.constructor.config.emits && config.emits) {\n config.emits = [...proto.constructor.config.emits, ...config.emits];\n }\n\n proto = Object.getPrototypeOf(proto);\n }\n\n config.options = config.options ?? {};\n config.refs = config.refs ?? [];\n config.components = config.components ?? {};\n\n return config;\n }\n\n static config: BaseConfig = {\n name: 'Base',\n emits: [\n // hook events\n 'before-mounted',\n 'mounted',\n 'updated',\n 'destroyed',\n 'terminated',\n // default services' events\n 'ticked',\n 'scrolled',\n 'resized',\n 'moved',\n 'loaded',\n 'keyed',\n ],\n };\n\n __services: ServicesManager;\n\n get $services(): ServicesManager {\n return this.__services;\n }\n\n __refs: RefsManager & T['$refs'] & BaseRefs;\n\n get $refs(): RefsManager & T['$refs'] & BaseRefs {\n return this.__refs;\n }\n\n __options: OptionsManager & T['$options'] & BaseOptions;\n\n get $options(): OptionsManager & T['$options'] & BaseOptions {\n return this.__options;\n }\n\n __children: ChildrenManager & T['$children'] & BaseChildren;\n\n get $children(): ChildrenManager & T['$children'] & BaseChildren {\n return this.__children;\n }\n\n __events: EventsManager;\n\n /**\n * Small helper to log stuff.\n */\n get $log(): (...args: unknown[]) => void {\n return this.__options.log ? window.console.log.bind(window, `[${this.__config.name}]`) : noop;\n }\n\n /**\n * Small helper to make warning easier.\n */\n get $warn(): (...args: unknown[]) => void {\n return this.__options.log ? window.console.warn.bind(window, `[${this.__config.name}]`) : noop;\n }\n\n /**\n * Small helper to debug information.\n */\n get __debug(): (...args: unknown[]) => void {\n return isDev && this.__options.debug\n ? window.console.log.bind(window, `[debug] [${this.$id}]`)\n : noop;\n }\n\n /**\n * Get manager constructors.\n */\n get __managers(): Managers {\n return {\n ChildrenManager,\n EventsManager,\n OptionsManager,\n RefsManager,\n ServicesManager,\n };\n }\n\n /**\n * Call an instance method and emit corresponding events.\n */\n __callMethod(method: string, ...args: unknown[]): unknown {\n if (isDev) {\n this.__debug('callMethod', method, ...args);\n }\n\n this.$emit(method, ...args);\n\n // We always emit an event, but we do not call the method if it does not exist\n if (!isFunction(this[method])) {\n return null;\n }\n\n if (isDev) {\n this.__debug(method, this, ...args);\n }\n\n return this[method].call(this, ...args);\n }\n\n /**\n * Test if the given event has been bound to the instance.\n *\n * @param {string} event The event's name.\n * @returns {boolean} Wether the given event has been bound or not.\n */\n __hasEvent(event: string): boolean {\n const eventHandlers = this.__eventHandlers.get(event);\n return eventHandlers && eventHandlers.size > 0;\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: HTMLElement) {\n super();\n\n if (!element) {\n if (isDev) {\n throw new Error('The root element must be defined.');\n }\n return;\n }\n\n const { __config } = this;\n\n if (__config.name === 'Base') {\n if (isDev) {\n throw new Error('The `config.name` property is required.');\n }\n return;\n }\n\n this.$id = `${__config.name}-${id}`;\n id += 1;\n\n this.$el = element;\n\n if (!this.$el.__base__) {\n this.$el.__base__ = new WeakMap();\n }\n\n this.$el.__base__.set(this.__ctor, this);\n\n createAndTestManagers(this);\n\n if (isDev) {\n this.__debug('constructor', this);\n }\n }\n\n /**\n * Trigger the `mounted` callback.\n */\n $mount(): this {\n if (this.$isMounted) {\n return this;\n }\n\n this.$emit('before-mounted');\n\n if (isDev) {\n this.__debug('$mount');\n }\n\n [\n () => this.$children.registerAll(),\n () => this.$refs.registerAll(),\n () => this.__events.bindRootElement(),\n () => this.$services.enableAll(),\n () => this.$children.mountAll(),\n // eslint-disable-next-line prettier/prettier\n () => {\n this.$isMounted = true;\n },\n () => this.__callMethod('mounted'),\n ].forEach(addToQueue);\n\n return this;\n }\n\n /**\n * Update the instance children.\n */\n $update(): this {\n if (isDev) {\n this.__debug('$update');\n }\n\n [\n // Undo\n () => this.$refs.unregisterAll(),\n () => this.$services.disableAll(),\n // Redo\n () => this.$children.registerAll(),\n () => this.$refs.registerAll(),\n () => this.$services.enableAll(),\n // Update\n () => this.$children.updateAll(),\n () => this.__callMethod('updated'),\n ].forEach(addToQueue);\n\n return this;\n }\n\n /**\n * Trigger the `destroyed` callback.\n */\n $destroy(): this {\n if (!this.$isMounted) {\n return this;\n }\n\n if (isDev) {\n this.__debug('$destroy');\n }\n\n [\n // eslint-disable-next-line prettier/prettier\n () => {\n this.$isMounted = false;\n },\n () => this.__events.unbindRootElement(),\n () => this.$refs.unregisterAll(),\n () => this.$services.disableAll(),\n () => this.$children.destroyAll(),\n () => this.__callMethod('destroyed'),\n ].forEach(addToQueue);\n\n return this;\n }\n\n /**\n * Terminate a child instance when it is not needed anymore.\n */\n $terminate(): void {\n if (isDev) {\n this.__debug('$terminate');\n }\n\n [\n // First, destroy the component.\n () => this.$destroy(),\n // Execute the `terminated` hook if it exists\n () => this.__callMethod('terminated'),\n // Delete instance\n () => this.$el.__base__.set(this.__ctor, 'terminated'),\n ].forEach(addToQueue);\n }\n\n /**\n * Add an emitted event.\n *\n * @param {string} event The event name.\n * @returns {void}\n */\n __addEmits(event: string): void {\n const ctor = this.__ctor;\n if (isArray(ctor.config.emits)) {\n ctor.config.emits.push(event);\n } else {\n ctor.config.emits = [event];\n }\n }\n\n /**\n * Remove an emitted event.\n *\n * @param {string} event The event name.\n * @returns {void}\n */\n __removeEmits(event: string): void {\n const ctor = this.__ctor;\n const index = ctor.config.emits.indexOf(event);\n ctor.config.emits.splice(index, 1);\n }\n\n /**\n * Get the instance constructor.\n */\n get __ctor(): BaseConstructor {\n return this.constructor as BaseConstructor;\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 * @returns {() => void}\n * A function to unbind the listener.\n */\n $on(\n event: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): () => void {\n if (isDev) {\n this.__debug('$on', event, listener, options);\n }\n\n let set = this.__eventHandlers.get(event);\n\n if (!set) {\n set = new Set();\n this.__eventHandlers.set(event, set);\n }\n\n set.add(listener);\n\n const target = getEventTarget(this, event, this.__config);\n target.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 * @returns {void}\n */\n $off(\n event: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ) {\n if (isDev) {\n this.__debug('$off', event, listener);\n }\n\n this.__eventHandlers.get(event).delete(listener);\n\n const target = getEventTarget(this, event, this.__config);\n target.removeEventListener(event, listener, options);\n }\n\n /**\n * Emits an event.\n *\n * @param {string} event Name of the event.\n * @param {any[]} args The arguments to apply to the functions bound to this event.\n * @returns {void}\n */\n $emit(event: string, ...args: unknown[]) {\n if (isDev) {\n this.__debug('$emit', event, args);\n }\n\n this.dispatchEvent(new CustomEvent(event, { detail: args }));\n }\n\n /**\n * Factory method to generate multiple instance of the class.\n */\n static $factory(nameOrSelector: string): Base[] {\n if (isDev && !nameOrSelector) {\n throw new Error(\n 'The $factory method requires a component\u2019s name or selector to be specified.',\n );\n }\n\n return getComponentElements(nameOrSelector).map((el) => new this(el).$mount());\n }\n}\n"],
|
|
5
|
-
"mappings": "AACA,SAAS,sBAAsB,gBAAgB,kBAAkB;AACjE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,MAAM,OAAO,YAAY,eAAe;AAEjD,IAAI,KAAK;
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-use-before-define */\nimport { getComponentElements, getEventTarget, addToQueue } from './utils.js';\nimport {\n ChildrenManager,\n RefsManager,\n ServicesManager,\n EventsManager,\n OptionsManager,\n} from './managers/index.js';\nimport { noop, isDev, isFunction, isArray } from '../utils/index.js';\n\nlet id = 0;\n\nexport type BaseEl = HTMLElement & { __base__?: WeakMap<BaseConstructor, Base | 'terminated'> };\nexport type BaseConstructor<T extends Base = Base> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n prototype: Base;\n} & Pick<typeof Base, keyof typeof Base>;\nexport type BaseAsyncConstructor<T extends Base = Base> = (\n instance: Base,\n) => Promise<BaseConstructor<T> | { default: BaseConstructor<T> }>;\nexport type BaseOptions = { [name: string]: unknown };\nexport type BaseRefs = { [name: string]: HTMLElement | HTMLElement[] };\nexport type BaseChildren = { [nameOrSelector: string]: Base[] | Promise<Base>[] };\nexport type BaseConfigComponents = {\n [nameOrSelector: string]: BaseConstructor | BaseAsyncConstructor;\n};\n\nexport type BaseConfig = {\n name: string;\n debug?: boolean;\n log?: boolean;\n refs?: string[];\n emits?: string[];\n components?: BaseConfigComponents;\n options?: import('./managers/OptionsManager').OptionsSchema;\n};\n\nexport type BaseProps = {\n $el?: HTMLElement;\n $options?: BaseOptions;\n $refs?: BaseRefs;\n $children?: BaseChildren;\n $parent?: Base;\n};\n\nexport type Managers = {\n ChildrenManager: typeof ChildrenManager;\n EventsManager: typeof EventsManager;\n OptionsManager: typeof OptionsManager;\n RefsManager: typeof RefsManager;\n ServicesManager: typeof ServicesManager;\n};\n\n/**\n * Base class.\n */\nexport class Base<T extends BaseProps = BaseProps> extends EventTarget {\n /**\n * This is a Base instance.\n */\n static readonly $isBase = true as const;\n\n /**\n * The instance parent.\n */\n $parent: T['$parent'] & Base = null;\n\n /**\n * The instance id.\n */\n $id: string;\n\n /**\n * The root element.\n */\n $el: T['$el'] & BaseEl;\n\n /**\n * The state of the component.\n */\n $isMounted = false;\n\n /**\n * Store the event handlers.\n */\n __eventHandlers: Map<string, Set<EventListenerOrEventListenerObject>> = new Map();\n\n /**\n * Get the root instance of the app.\n */\n get $root(): Base {\n if (!this.$parent) {\n return this;\n }\n\n let parent = this.$parent;\n let root = this.$parent;\n\n while (parent) {\n if (!parent.$parent) {\n root = parent;\n }\n\n parent = parent.$parent;\n }\n\n return root;\n }\n\n /**\n * Merge configuration with the parents' configurations.\n */\n get __config(): BaseConfig {\n let proto = Object.getPrototypeOf(this);\n let { config } = proto.constructor;\n\n while (proto.constructor.config && proto.constructor.$isBase) {\n config = { ...proto.constructor.config, ...config };\n\n if (proto.constructor.config.options) {\n config.options = { ...proto.constructor.config.options, ...config.options };\n }\n\n if (proto.constructor.config.emits && config.emits) {\n config.emits = [...proto.constructor.config.emits, ...config.emits];\n }\n\n proto = Object.getPrototypeOf(proto);\n }\n\n config.options = config.options ?? {};\n config.refs = config.refs ?? [];\n config.components = config.components ?? {};\n\n return config;\n }\n\n static config: BaseConfig = {\n name: 'Base',\n emits: [\n // hook events\n 'before-mounted',\n 'mounted',\n 'updated',\n 'destroyed',\n 'terminated',\n // default services' events\n 'ticked',\n 'scrolled',\n 'resized',\n 'moved',\n 'loaded',\n 'keyed',\n ],\n };\n\n __services: ServicesManager;\n\n get $services(): ServicesManager {\n return this.__services;\n }\n\n __refs: RefsManager & T['$refs'] & BaseRefs;\n\n get $refs(): RefsManager & T['$refs'] & BaseRefs {\n return this.__refs;\n }\n\n __options: OptionsManager & T['$options'] & BaseOptions;\n\n get $options(): OptionsManager & T['$options'] & BaseOptions {\n return this.__options;\n }\n\n __children: ChildrenManager & T['$children'] & BaseChildren;\n\n get $children(): ChildrenManager & T['$children'] & BaseChildren {\n return this.__children;\n }\n\n __events: EventsManager;\n\n /**\n * Small helper to log stuff.\n */\n get $log(): (...args: unknown[]) => void {\n return this.__options.log ? window.console.log.bind(window, `[${this.__config.name}]`) : noop;\n }\n\n /**\n * Small helper to make warning easier.\n */\n get $warn(): (...args: unknown[]) => void {\n return this.__options.log ? window.console.warn.bind(window, `[${this.__config.name}]`) : noop;\n }\n\n /**\n * Small helper to debug information.\n */\n get __debug(): (...args: unknown[]) => void {\n return isDev && this.__options.debug\n ? window.console.log.bind(window, `[debug] [${this.$id}]`)\n : noop;\n }\n\n /**\n * Get manager constructors.\n */\n get __managers(): Managers {\n return {\n ChildrenManager,\n EventsManager,\n OptionsManager,\n RefsManager,\n ServicesManager,\n };\n }\n\n /**\n * Call an instance method and emit corresponding events.\n */\n __callMethod(method: string, ...args: unknown[]): unknown {\n if (isDev) {\n this.__debug('callMethod', method, ...args);\n }\n\n this.$emit(method, ...args);\n\n // We always emit an event, but we do not call the method if it does not exist\n if (!isFunction(this[method])) {\n return null;\n }\n\n if (isDev) {\n this.__debug(method, this, ...args);\n }\n\n return this[method].call(this, ...args);\n }\n\n /**\n * Test if the given event has been bound to the instance.\n *\n * @param {string} event The event's name.\n * @returns {boolean} Wether the given event has been bound or not.\n */\n __hasEvent(event: string): boolean {\n const eventHandlers = this.__eventHandlers.get(event);\n return eventHandlers && eventHandlers.size > 0;\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: HTMLElement) {\n super();\n\n if (!element) {\n if (isDev) {\n throw new Error('The root element must be defined.');\n }\n return;\n }\n\n const { __config } = this;\n\n if (__config.name === 'Base') {\n if (isDev) {\n throw new Error('The `config.name` property is required.');\n }\n return;\n }\n\n this.$id = `${__config.name}-${id}`;\n id += 1;\n\n this.$el = element;\n\n if (!this.$el.__base__) {\n this.$el.__base__ = new WeakMap();\n }\n\n this.$el.__base__.set(this.__ctor, this);\n\n for (const service of ['Options', 'Services', 'Events', 'Refs', 'Children']) {\n this[`__${service.toLowerCase()}`] = new this.__managers[`${service}Manager`](this);\n }\n\n if (isDev) {\n this.__debug('constructor', this);\n }\n }\n\n /**\n * Trigger the `mounted` callback.\n */\n $mount(): this {\n if (this.$isMounted) {\n return this;\n }\n\n this.$emit('before-mounted');\n\n if (isDev) {\n this.__debug('$mount');\n }\n\n addToQueue(() => this.$children.registerAll());\n addToQueue(() => this.$refs.registerAll());\n addToQueue(() => this.__events.bindRootElement());\n addToQueue(() => this.$services.enableAll());\n addToQueue(() => this.$children.mountAll());\n // eslint-disable-next-line no-return-assign\n addToQueue(() => (this.$isMounted = true));\n addToQueue(() => this.__callMethod('mounted'));\n\n return this;\n }\n\n /**\n * Update the instance children.\n */\n $update(): this {\n if (isDev) {\n this.__debug('$update');\n }\n\n // Undo\n addToQueue(() => this.$refs.unregisterAll());\n addToQueue(() => this.$services.disableAll());\n // Redo\n addToQueue(() => this.$children.registerAll());\n addToQueue(() => this.$refs.registerAll());\n addToQueue(() => this.$services.enableAll());\n // Update\n addToQueue(() => this.$children.updateAll());\n addToQueue(() => this.__callMethod('updated'));\n\n return this;\n }\n\n /**\n * Trigger the `destroyed` callback.\n */\n $destroy(): this {\n if (!this.$isMounted) {\n return this;\n }\n\n if (isDev) {\n this.__debug('$destroy');\n }\n\n // eslint-disable-next-line no-return-assign\n addToQueue(() => (this.$isMounted = false));\n addToQueue(() => this.__events.unbindRootElement());\n addToQueue(() => this.$refs.unregisterAll());\n addToQueue(() => this.$services.disableAll());\n addToQueue(() => this.$children.destroyAll());\n addToQueue(() => this.__callMethod('destroyed'));\n\n return this;\n }\n\n /**\n * Terminate a child instance when it is not needed anymore.\n */\n $terminate(): void {\n if (isDev) {\n this.__debug('$terminate');\n }\n\n // First, destroy the component.\n addToQueue(() => this.$destroy());\n // Execute the `terminated` hook if it exists\n addToQueue(() => this.__callMethod('terminated'));\n // Delete instance\n addToQueue(() => this.$el.__base__.set(this.__ctor, 'terminated'));\n }\n\n /**\n * Add an emitted event.\n *\n * @param {string} event The event name.\n * @returns {void}\n */\n __addEmits(event: string): void {\n const ctor = this.__ctor;\n if (isArray(ctor.config.emits)) {\n ctor.config.emits.push(event);\n } else {\n ctor.config.emits = [event];\n }\n }\n\n /**\n * Remove an emitted event.\n *\n * @param {string} event The event name.\n * @returns {void}\n */\n __removeEmits(event: string): void {\n const ctor = this.__ctor;\n const index = ctor.config.emits.indexOf(event);\n ctor.config.emits.splice(index, 1);\n }\n\n /**\n * Get the instance constructor.\n */\n get __ctor(): BaseConstructor {\n return this.constructor as BaseConstructor;\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 * @returns {() => void}\n * A function to unbind the listener.\n */\n $on(\n event: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): () => void {\n if (isDev) {\n this.__debug('$on', event, listener, options);\n }\n\n let set = this.__eventHandlers.get(event);\n\n if (!set) {\n set = new Set();\n this.__eventHandlers.set(event, set);\n }\n\n set.add(listener);\n\n const target = getEventTarget(this, event, this.__config);\n target.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 * @returns {void}\n */\n $off(\n event: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ) {\n if (isDev) {\n this.__debug('$off', event, listener);\n }\n\n this.__eventHandlers.get(event).delete(listener);\n\n const target = getEventTarget(this, event, this.__config);\n target.removeEventListener(event, listener, options);\n }\n\n /**\n * Emits an event.\n *\n * @param {string} event Name of the event.\n * @param {any[]} args The arguments to apply to the functions bound to this event.\n * @returns {void}\n */\n $emit(event: string, ...args: unknown[]) {\n if (isDev) {\n this.__debug('$emit', event, args);\n }\n\n this.dispatchEvent(new CustomEvent(event, { detail: args }));\n }\n\n /**\n * Register and mount all instances of the component.\n */\n static $register(nameOrSelector?: string): Base[] {\n return getComponentElements(nameOrSelector ?? this.config.name).map((el) =>\n new this(el).$mount(),\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/Base/features.d.ts
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
export type Features =
|
|
2
|
-
|
|
1
|
+
export type Features = {
|
|
2
|
+
asyncChildren: boolean;
|
|
3
|
+
breakpoints: Record<string, string>;
|
|
4
|
+
};
|
|
5
|
+
interface FeaturesMap extends Map<keyof Features, Features[keyof Features]> {
|
|
6
|
+
get<T extends keyof Features>(key: T): Features[T];
|
|
7
|
+
set<T extends keyof Features>(key: T, value: Features[T]): this;
|
|
8
|
+
}
|
|
9
|
+
export declare const features: FeaturesMap;
|
|
10
|
+
export {};
|
package/Base/features.js
CHANGED
|
@@ -1,4 +1,26 @@
|
|
|
1
|
-
const features = /* @__PURE__ */ new Map([
|
|
1
|
+
const features = /* @__PURE__ */ new Map([
|
|
2
|
+
["asyncChildren", false],
|
|
3
|
+
[
|
|
4
|
+
"breakpoints",
|
|
5
|
+
{
|
|
6
|
+
xxs: "0rem",
|
|
7
|
+
xs: "30rem",
|
|
8
|
+
// 480px
|
|
9
|
+
s: "48rem",
|
|
10
|
+
// 768px
|
|
11
|
+
m: "64rem",
|
|
12
|
+
// 1024px
|
|
13
|
+
l: "80rem",
|
|
14
|
+
// 1280px
|
|
15
|
+
xl: "90rem",
|
|
16
|
+
// 1440px
|
|
17
|
+
xxl: "120rem",
|
|
18
|
+
// 1920px
|
|
19
|
+
xxxl: "160rem"
|
|
20
|
+
// 2560px
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
]);
|
|
2
24
|
export {
|
|
3
25
|
features
|
|
4
26
|
};
|
package/Base/features.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../packages/js-toolkit/Base/features.ts"],
|
|
4
|
-
"sourcesContent": ["export type Features = Record<
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["export type Features = {\n asyncChildren: boolean;\n breakpoints: Record<string, string>;\n};\n\ninterface FeaturesMap extends Map<keyof Features, Features[keyof Features]> {\n get<T extends keyof Features>(key: T): Features[T];\n set<T extends keyof Features>(key: T, value: Features[T]): this;\n}\n\nexport const features = new Map<keyof Features, Features[keyof Features]>([\n ['asyncChildren', false],\n [\n 'breakpoints',\n {\n xxs: '0rem',\n xs: '30rem', // 480px\n s: '48rem', // 768px\n m: '64rem', // 1024px\n l: '80rem', // 1280px\n xl: '90rem', // 1440px\n xxl: '120rem', // 1920px\n xxxl: '160rem', // 2560px\n },\n ],\n]) as FeaturesMap;\n"],
|
|
5
|
+
"mappings": "AAUO,MAAM,WAAW,oBAAI,IAA8C;AAAA,EACxE,CAAC,iBAAiB,KAAK;AAAA,EACvB;AAAA,IACE;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,IAAI;AAAA;AAAA,MACJ,GAAG;AAAA;AAAA,MACH,GAAG;AAAA;AAAA,MACH,GAAG;AAAA;AAAA,MACH,IAAI;AAAA;AAAA,MACJ,KAAK;AAAA;AAAA,MACL,MAAM;AAAA;AAAA,IACR;AAAA,EACF;AACF,CAAC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -11,16 +11,16 @@ export declare class AbstractManager {
|
|
|
11
11
|
* Get the base instance root element.
|
|
12
12
|
*/
|
|
13
13
|
get __element(): HTMLElement & {
|
|
14
|
-
__base__?: WeakMap<import("
|
|
14
|
+
__base__?: WeakMap<import("Base/Base.js").BaseConstructor<Base<import("Base/Base.js").BaseProps>>, Base<import("Base/Base.js").BaseProps> | "terminated">;
|
|
15
15
|
};
|
|
16
16
|
/**
|
|
17
17
|
* Get the base instance config.
|
|
18
18
|
*/
|
|
19
|
-
get __config(): import("
|
|
19
|
+
get __config(): import("Base/Base.js").BaseConfig;
|
|
20
20
|
/**
|
|
21
21
|
* Get the events manager.
|
|
22
22
|
*/
|
|
23
|
-
get __eventsManager(): import("
|
|
23
|
+
get __eventsManager(): import("Base/managers/EventsManager.js").EventsManager;
|
|
24
24
|
/**
|
|
25
25
|
* Class constructor.
|
|
26
26
|
*/
|
|
@@ -1,18 +1,39 @@
|
|
|
1
1
|
class AbstractManager {
|
|
2
|
+
/**
|
|
3
|
+
* Base instance.
|
|
4
|
+
*/
|
|
2
5
|
__base;
|
|
6
|
+
/**
|
|
7
|
+
* Get the base instance root element.
|
|
8
|
+
*/
|
|
3
9
|
get __element() {
|
|
4
10
|
return this.__base.$el;
|
|
5
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Get the base instance config.
|
|
14
|
+
*/
|
|
6
15
|
get __config() {
|
|
7
16
|
return this.__base.__config;
|
|
8
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Get the events manager.
|
|
20
|
+
*/
|
|
9
21
|
get __eventsManager() {
|
|
10
22
|
return this.__base.__events;
|
|
11
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Class constructor.
|
|
26
|
+
*/
|
|
12
27
|
constructor(base) {
|
|
13
28
|
this.__base = base;
|
|
14
29
|
this.__hideProperties(["__base"]);
|
|
15
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Prevent a list of properties from being enumerable and writable.
|
|
33
|
+
*
|
|
34
|
+
* @param {string[]} properties
|
|
35
|
+
* @returns {void}
|
|
36
|
+
*/
|
|
16
37
|
__hideProperties(properties) {
|
|
17
38
|
Object.defineProperties(
|
|
18
39
|
this,
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/js-toolkit/Base/managers/AbstractManager.ts"],
|
|
4
4
|
"sourcesContent": ["import type { Base } from '../index.js';\n\n/**\n * AbstractManager class.\n */\nexport class AbstractManager {\n /**\n * Base instance.\n */\n __base: Base;\n\n /**\n * Get the base instance root element.\n */\n get __element() {\n return this.__base.$el;\n }\n\n /**\n * Get the base instance config.\n */\n get __config() {\n return this.__base.__config;\n }\n\n /**\n * Get the events manager.\n */\n get __eventsManager() {\n return this.__base.__events;\n }\n\n /**\n * Class constructor.\n */\n constructor(base: Base) {\n this.__base = base;\n this.__hideProperties(['__base']);\n }\n\n /**\n * Prevent a list of properties from being enumerable and writable.\n *\n * @param {string[]} properties\n * @returns {void}\n */\n __hideProperties(properties: string[]) {\n Object.defineProperties(\n this,\n Object.fromEntries(\n properties.map((property) => [\n property,\n {\n enumerable: false,\n writable: false,\n value: this[property],\n },\n ]),\n ),\n );\n }\n}\n"],
|
|
5
|
-
"mappings": "AAKO,MAAM,gBAAgB;AAAA,EAI3B;AAAA,EAKA,IAAI,YAAY;AACd,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAKA,IAAI,WAAW;AACb,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAKA,IAAI,kBAAkB;AACpB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAKA,YAAY,MAAY;AACtB,SAAK,SAAS;AACd,SAAK,iBAAiB,CAAC,QAAQ,CAAC;AAAA,EAClC;AAAA,EAQA,iBAAiB,YAAsB;AACrC,WAAO;AAAA,MACL;AAAA,MACA,OAAO;AAAA,QACL,WAAW,IAAI,CAAC,aAAa;AAAA,UAC3B;AAAA,UACA;AAAA,YACE,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,OAAO,KAAK;AAAA,
|
|
5
|
+
"mappings": "AAKO,MAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA,EAI3B;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,YAAY;AACd,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,WAAW;AACb,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,kBAAkB;AACpB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,MAAY;AACtB,SAAK,SAAS;AACd,SAAK,iBAAiB,CAAC,QAAQ,CAAC;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,iBAAiB,YAAsB;AACrC,WAAO;AAAA,MACL;AAAA,MACA,OAAO;AAAA,QACL,WAAW,IAAI,CAAC,aAAa;AAAA,UAC3B;AAAA,UACA;AAAA,YACE,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,OAAO,KAAK,QAAQ;AAAA,UACtB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../packages/js-toolkit/Base/managers/ActionManager.ts"],
|
|
4
|
+
"sourcesContent": ["import { AbstractManager } from './AbstractManager.js';\n\nexport class ActionManager extends AbstractManager {\n registerAll() {\n this.__element.querySelectorAll('[data-on]');\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,uBAAuB;AAEzB,MAAM,sBAAsB,gBAAgB;AAAA,EACjD,cAAc;AACZ,SAAK,UAAU,iBAAiB,WAAW;AAAA,EAC7C;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -49,5 +49,5 @@ export declare class ChildrenManager extends AbstractManager {
|
|
|
49
49
|
* @private
|
|
50
50
|
*/
|
|
51
51
|
__register(name: string, component: BaseConstructor | BaseAsyncConstructor): void;
|
|
52
|
-
__getValue(name: string, component: BaseConstructor | BaseAsyncConstructor): (Base<import("
|
|
52
|
+
__getValue(name: string, component: BaseConstructor | BaseAsyncConstructor): (Base<import("Base/Base.js").BaseProps> | "terminated" | Promise<Base<import("Base/Base.js").BaseProps> | "terminated">)[];
|
|
53
53
|
}
|