@studiometa/js-toolkit 2.0.0-beta.9 → 2.0.0-rc.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/index.cjs +285 -0
- package/Base/index.d.ts +11 -2
- package/Base/index.js +114 -197
- package/Base/managers/ChildrenManager.cjs +146 -0
- package/Base/managers/ChildrenManager.d.ts +9 -1
- package/Base/managers/ChildrenManager.js +60 -59
- package/Base/managers/EventsManager.cjs +183 -0
- package/Base/managers/EventsManager.js +72 -112
- package/Base/managers/OptionsManager.cjs +174 -0
- package/Base/managers/OptionsManager.d.ts +9 -5
- package/Base/managers/OptionsManager.js +60 -90
- package/Base/managers/RefsManager.cjs +99 -0
- package/Base/managers/RefsManager.js +28 -38
- package/Base/managers/ServicesManager.cjs +131 -0
- package/Base/managers/ServicesManager.js +39 -67
- package/Base/utils.cjs +41 -0
- package/Base/utils.js +12 -11
- package/decorators/index.cjs +45 -0
- package/decorators/index.d.ts +1 -0
- package/decorators/index.js +20 -8
- package/decorators/withBreakpointManager.cjs +85 -0
- package/decorators/withBreakpointManager.js +18 -39
- package/decorators/withBreakpointObserver.cjs +115 -0
- package/decorators/withBreakpointObserver.js +44 -86
- package/decorators/withDrag.cjs +53 -0
- package/decorators/withDrag.js +24 -26
- package/decorators/withExtraConfig.cjs +43 -0
- package/decorators/withExtraConfig.js +17 -12
- package/decorators/withFreezedOptions.cjs +36 -0
- package/decorators/withFreezedOptions.d.ts +14 -0
- package/decorators/withFreezedOptions.js +14 -0
- package/decorators/withIntersectionObserver.cjs +62 -0
- package/decorators/withIntersectionObserver.js +29 -32
- package/decorators/withMountWhenInView.cjs +69 -0
- package/decorators/withMountWhenInView.js +31 -52
- package/decorators/withScrolledInView.cjs +114 -0
- package/decorators/withScrolledInView.js +35 -39
- package/decorators/withVue2.cjs +60 -0
- package/decorators/withVue2.js +26 -32
- package/helpers/createApp.cjs +52 -0
- package/helpers/createApp.d.ts +2 -2
- package/helpers/createApp.js +12 -12
- package/helpers/importOnInteraction.cjs +52 -0
- package/helpers/importOnInteraction.js +17 -18
- package/helpers/importWhenIdle.cjs +49 -0
- package/helpers/importWhenIdle.js +14 -17
- package/helpers/importWhenVisible.cjs +50 -0
- package/helpers/importWhenVisible.js +16 -18
- package/helpers/index.cjs +35 -0
- package/helpers/index.js +10 -4
- package/helpers/utils.cjs +35 -0
- package/helpers/utils.js +7 -6
- package/index.cjs +33 -0
- package/index.js +7 -4
- package/package.json +14 -4
- package/services/Service.cjs +76 -0
- package/services/Service.js +19 -32
- package/services/drag.cjs +213 -0
- package/services/drag.d.ts +1 -0
- package/services/drag.js +64 -68
- package/services/index.cjs +41 -0
- package/services/index.js +16 -7
- package/services/key.cjs +104 -0
- package/services/key.js +28 -36
- package/services/load.cjs +72 -0
- package/services/load.js +17 -19
- package/services/pointer.cjs +162 -0
- package/services/pointer.js +43 -60
- package/services/raf.cjs +83 -0
- package/services/raf.js +20 -28
- package/services/resize.cjs +108 -0
- package/services/resize.js +33 -42
- package/services/scroll.cjs +131 -0
- package/services/scroll.js +26 -35
- package/utils/collide/boundingRectToCircle.cjs +34 -0
- package/utils/collide/boundingRectToCircle.d.ts +1 -1
- package/utils/collide/boundingRectToCircle.js +7 -10
- package/utils/collide/collideCircleCircle.cjs +34 -0
- package/utils/collide/collideCircleCircle.js +8 -7
- package/utils/collide/collideCircleRect.cjs +46 -0
- package/utils/collide/collideCircleRect.js +10 -12
- package/utils/collide/collidePointCircle.cjs +31 -0
- package/utils/collide/collidePointCircle.js +8 -5
- package/utils/collide/collidePointRect.cjs +28 -0
- package/utils/collide/collidePointRect.js +5 -2
- package/utils/collide/collideRectRect.cjs +28 -0
- package/utils/collide/collideRectRect.js +5 -2
- package/utils/collide/index.cjs +39 -0
- package/utils/collide/index.js +14 -6
- package/utils/css/classes.cjs +47 -0
- package/utils/css/classes.d.ts +10 -9
- package/utils/css/classes.js +18 -14
- package/utils/css/index.cjs +38 -0
- package/utils/css/index.d.ts +2 -2
- package/utils/css/index.js +13 -6
- package/utils/css/matrix.cjs +30 -0
- package/utils/css/matrix.js +7 -5
- package/utils/css/styles.cjs +44 -0
- package/utils/css/styles.d.ts +6 -18
- package/utils/css/styles.js +12 -12
- package/utils/css/transition.cjs +120 -0
- package/utils/css/transition.d.ts +15 -9
- package/utils/css/transition.js +70 -119
- package/utils/debounce.cjs +34 -0
- package/utils/debounce.js +7 -9
- package/utils/focusTrap.cjs +82 -0
- package/utils/focusTrap.js +30 -21
- package/utils/history.cjs +89 -0
- package/utils/history.js +28 -57
- package/utils/index.cjs +54 -0
- package/utils/index.d.ts +4 -1
- package/utils/index.js +32 -11
- package/utils/keyCodes.cjs +35 -0
- package/utils/keyCodes.js +5 -2
- package/utils/math/clamp.cjs +28 -0
- package/utils/math/clamp.js +5 -2
- package/utils/math/clamp01.cjs +32 -0
- package/utils/math/clamp01.js +6 -3
- package/utils/math/damp.cjs +28 -0
- package/utils/math/damp.js +5 -4
- package/utils/math/ease.cjs +88 -0
- package/utils/math/ease.js +50 -25
- package/utils/math/index.cjs +43 -0
- package/utils/math/index.js +17 -8
- package/utils/math/inertiaFinalValue.cjs +37 -0
- package/utils/math/inertiaFinalValue.js +8 -10
- package/utils/math/lerp.cjs +28 -0
- package/utils/math/lerp.js +5 -2
- package/utils/math/map.cjs +28 -0
- package/utils/math/map.js +5 -2
- package/utils/math/round.cjs +28 -0
- package/utils/math/round.js +5 -3
- package/utils/memoize.cjs +43 -0
- package/utils/memoize.js +10 -19
- package/utils/nextFrame.cjs +38 -0
- package/utils/nextFrame.d.ts +4 -3
- package/utils/nextFrame.js +13 -10
- package/utils/nextMicrotask.cjs +28 -0
- package/utils/nextMicrotask.d.ts +8 -0
- package/utils/nextMicrotask.js +6 -0
- package/utils/nextTick.cjs +30 -0
- package/utils/nextTick.d.ts +8 -0
- package/utils/nextTick.js +8 -0
- package/utils/object/autoBind.cjs +49 -0
- package/utils/object/autoBind.js +12 -22
- package/utils/object/getAllProperties.cjs +37 -0
- package/utils/object/getAllProperties.js +10 -13
- package/utils/object/index.cjs +33 -0
- package/utils/object/index.js +8 -3
- package/utils/object/isObject.cjs +28 -0
- package/utils/object/isObject.js +6 -3
- package/utils/scrollTo.cjs +80 -0
- package/utils/scrollTo.js +20 -40
- package/utils/string/index.cjs +47 -0
- package/utils/string/index.js +22 -10
- package/utils/string/withLeadingCharacters.cjs +32 -0
- package/utils/string/withLeadingCharacters.js +7 -4
- package/utils/string/withLeadingSlash.cjs +32 -0
- package/utils/string/withLeadingSlash.js +7 -4
- package/utils/string/withTrailingCharacters.cjs +32 -0
- package/utils/string/withTrailingCharacters.js +7 -4
- package/utils/string/withTrailingSlash.cjs +32 -0
- package/utils/string/withTrailingSlash.js +7 -4
- package/utils/string/withoutLeadingCharacters.cjs +28 -0
- package/utils/string/withoutLeadingCharacters.js +6 -3
- package/utils/string/withoutLeadingCharactersRecursive.cjs +37 -0
- package/utils/string/withoutLeadingCharactersRecursive.js +8 -7
- package/utils/string/withoutLeadingSlash.cjs +32 -0
- package/utils/string/withoutLeadingSlash.js +7 -4
- package/utils/string/withoutTrailingCharacters.cjs +28 -0
- package/utils/string/withoutTrailingCharacters.js +6 -3
- package/utils/string/withoutTrailingCharactersRecursive.cjs +37 -0
- package/utils/string/withoutTrailingCharactersRecursive.js +8 -7
- package/utils/string/withoutTrailingSlash.cjs +32 -0
- package/utils/string/withoutTrailingSlash.js +7 -4
- package/utils/throttle.cjs +36 -0
- package/utils/throttle.js +9 -9
- package/index.modern.js +0 -1
- package/index.umd.js +0 -1
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
|
|
21
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
22
|
+
var __publicField = (obj, key, value) => {
|
|
23
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
24
|
+
return value;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
// packages/js-toolkit/Base/managers/OptionsManager.js
|
|
28
|
+
var OptionsManager_exports = {};
|
|
29
|
+
__export(OptionsManager_exports, {
|
|
30
|
+
default: () => OptionsManager
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(OptionsManager_exports);
|
|
33
|
+
var import_deepmerge = __toESM(require("deepmerge"), 1);
|
|
34
|
+
var import_isObject = __toESM(require("../../utils/object/isObject.cjs"), 1);
|
|
35
|
+
var _OptionsManager = class {
|
|
36
|
+
constructor(element, schema, baseConfig) {
|
|
37
|
+
__publicField(this, "__element");
|
|
38
|
+
__publicField(this, "__values", {});
|
|
39
|
+
__publicField(this, "__defaultValues", {
|
|
40
|
+
String: "",
|
|
41
|
+
Number: 0,
|
|
42
|
+
Boolean: false,
|
|
43
|
+
Array: () => [],
|
|
44
|
+
Object: () => ({})
|
|
45
|
+
});
|
|
46
|
+
__publicField(this, "name", "Base");
|
|
47
|
+
__publicField(this, "debug", false);
|
|
48
|
+
__publicField(this, "log", false);
|
|
49
|
+
var _a, _b;
|
|
50
|
+
Object.defineProperties(this, {
|
|
51
|
+
__element: {
|
|
52
|
+
enumerable: false,
|
|
53
|
+
writable: false,
|
|
54
|
+
value: element
|
|
55
|
+
},
|
|
56
|
+
__values: {
|
|
57
|
+
enumerable: false,
|
|
58
|
+
writable: false,
|
|
59
|
+
value: this.__values
|
|
60
|
+
},
|
|
61
|
+
__defaultValues: {
|
|
62
|
+
enumerable: false,
|
|
63
|
+
writable: false,
|
|
64
|
+
value: this.__defaultValues
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
this.name = baseConfig.name;
|
|
68
|
+
schema.debug = {
|
|
69
|
+
type: Boolean,
|
|
70
|
+
default: (_a = baseConfig.debug) != null ? _a : false
|
|
71
|
+
};
|
|
72
|
+
schema.log = {
|
|
73
|
+
type: Boolean,
|
|
74
|
+
default: (_b = baseConfig.log) != null ? _b : false
|
|
75
|
+
};
|
|
76
|
+
Object.entries(schema).forEach(([name, config]) => {
|
|
77
|
+
this.__register(name, config);
|
|
78
|
+
});
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
__register(name, config) {
|
|
82
|
+
const isObjectConfig = typeof config === "object";
|
|
83
|
+
const hasDefaultValue = !_OptionsManager.types.includes(config);
|
|
84
|
+
const type = isObjectConfig ? config.type : config;
|
|
85
|
+
if (!_OptionsManager.types.includes(type)) {
|
|
86
|
+
throw new Error(`The "${name}" option has an invalid type. The allowed types are: String, Number, Boolean, Array and Object.`);
|
|
87
|
+
}
|
|
88
|
+
const defaultValue = hasDefaultValue ? config.default : this.__defaultValues[type.name];
|
|
89
|
+
if ((type === Array || type === Object) && typeof defaultValue !== "function") {
|
|
90
|
+
throw new Error(`The default value for options of type "${type.name}" must be returned by a function.`);
|
|
91
|
+
}
|
|
92
|
+
Object.defineProperty(this, name, {
|
|
93
|
+
get: () => {
|
|
94
|
+
return this.get(name, type, defaultValue, isObjectConfig ? config.merge : void 0);
|
|
95
|
+
},
|
|
96
|
+
set: (value) => {
|
|
97
|
+
this.set(name, type, value, defaultValue);
|
|
98
|
+
},
|
|
99
|
+
enumerable: true
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
get(name, type, defaultValue, merge) {
|
|
103
|
+
const propertyName = _OptionsManager.__getPropertyName(name);
|
|
104
|
+
const hasProperty = this.__hasProperty(propertyName);
|
|
105
|
+
if (type === Boolean) {
|
|
106
|
+
if (defaultValue) {
|
|
107
|
+
const negatedPropertyName = _OptionsManager.__getPropertyName(name, "No");
|
|
108
|
+
const hasNegatedProperty = this.__hasProperty(negatedPropertyName);
|
|
109
|
+
return !hasNegatedProperty;
|
|
110
|
+
}
|
|
111
|
+
return hasProperty || defaultValue;
|
|
112
|
+
}
|
|
113
|
+
const value = this.__element.dataset[propertyName];
|
|
114
|
+
if (type === Number) {
|
|
115
|
+
return hasProperty ? Number(value) : defaultValue;
|
|
116
|
+
}
|
|
117
|
+
if (type === Array || type === Object) {
|
|
118
|
+
if (!this.__values[name]) {
|
|
119
|
+
let val = hasProperty ? JSON.parse(value) : defaultValue();
|
|
120
|
+
if (typeof merge !== "undefined") {
|
|
121
|
+
val = typeof merge === "boolean" ? (0, import_deepmerge.default)(defaultValue(), val) : (0, import_deepmerge.default)(defaultValue(), val, merge);
|
|
122
|
+
}
|
|
123
|
+
this.__values[name] = val;
|
|
124
|
+
}
|
|
125
|
+
return this.__values[name];
|
|
126
|
+
}
|
|
127
|
+
return hasProperty ? value : defaultValue;
|
|
128
|
+
}
|
|
129
|
+
set(name, type, value, defaultValue) {
|
|
130
|
+
const propertyName = _OptionsManager.__getPropertyName(name);
|
|
131
|
+
if (value.constructor.name !== type.name) {
|
|
132
|
+
const val = Array.isArray(value) || (0, import_isObject.default)(value) ? JSON.stringify(value) : value;
|
|
133
|
+
throw new TypeError(`The "${val}" value for the "${name}" option must be of type "${type.name}"`);
|
|
134
|
+
}
|
|
135
|
+
switch (type) {
|
|
136
|
+
case Boolean:
|
|
137
|
+
if (defaultValue) {
|
|
138
|
+
const negatedPropertyName = _OptionsManager.__getPropertyName(name, "No");
|
|
139
|
+
if (value) {
|
|
140
|
+
delete this.__element.dataset[negatedPropertyName];
|
|
141
|
+
} else {
|
|
142
|
+
this.__element.dataset[negatedPropertyName] = "";
|
|
143
|
+
}
|
|
144
|
+
} else if (value) {
|
|
145
|
+
this.__element.dataset[propertyName] = "";
|
|
146
|
+
} else {
|
|
147
|
+
delete this.__element.dataset[propertyName];
|
|
148
|
+
}
|
|
149
|
+
break;
|
|
150
|
+
case Array:
|
|
151
|
+
case Object:
|
|
152
|
+
this.__values[name] = value;
|
|
153
|
+
break;
|
|
154
|
+
default:
|
|
155
|
+
this.__element.dataset[propertyName] = value;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
__hasProperty(prop) {
|
|
159
|
+
return typeof this.__element.dataset[prop] !== "undefined";
|
|
160
|
+
}
|
|
161
|
+
static __getPropertyName(name, prefix = "") {
|
|
162
|
+
const key = name + prefix;
|
|
163
|
+
if (_OptionsManager.__propertyNameCache.has(key)) {
|
|
164
|
+
return _OptionsManager.__propertyNameCache.get(key);
|
|
165
|
+
}
|
|
166
|
+
const propertyName = `option${prefix}${name.replace(/^\w/, (c) => c.toUpperCase())}`;
|
|
167
|
+
_OptionsManager.__propertyNameCache.set(key, propertyName);
|
|
168
|
+
return propertyName;
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
var OptionsManager = _OptionsManager;
|
|
172
|
+
__publicField(OptionsManager, "types", [String, Number, Boolean, Array, Object]);
|
|
173
|
+
__publicField(OptionsManager, "__propertyNameCache", /* @__PURE__ */ new Map());
|
|
174
|
+
if (module.exports.default) module.exports = module.exports.default;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* @typedef {import('deepmerge').Options} DeepmergeOptions
|
|
2
3
|
* @typedef {import('../index.js').BaseConfig} BaseConfig
|
|
3
4
|
* @typedef {StringConstructor|NumberConstructor|BooleanConstructor|ArrayConstructor|ObjectConstructor} OptionType
|
|
4
|
-
* @typedef {{ type: OptionType, default: String|Number|Boolean|(() => Array|Object)}}
|
|
5
|
-
* @typedef {OptionType |
|
|
5
|
+
* @typedef {{ type: OptionType, default: String|Number|Boolean|(() => Array|Object), merge?: boolean|DeepmergeOptions }} OptionObject
|
|
6
|
+
* @typedef {OptionType | OptionObject} OptionValue
|
|
6
7
|
* @typedef {{ [name:string]: OptionValue }} OptionsSchema
|
|
7
8
|
* @typedef {{ [optionName:string]: any }} OptionsInterface
|
|
8
9
|
*/
|
|
@@ -89,8 +90,9 @@ export default class OptionsManager {
|
|
|
89
90
|
* @param {String} name The option name.
|
|
90
91
|
* @param {OptionType} type The option data's type.
|
|
91
92
|
* @param {any} defaultValue The default value for this option.
|
|
93
|
+
* @param {boolean|DeepmergeOptions} [merge] Wether to merge the value with the default or not.
|
|
92
94
|
*/
|
|
93
|
-
get(name: string, type: OptionType, defaultValue: any): any;
|
|
95
|
+
get(name: string, type: OptionType, defaultValue: any, merge?: boolean | DeepmergeOptions): any;
|
|
94
96
|
/**
|
|
95
97
|
* Set an option value.
|
|
96
98
|
*
|
|
@@ -107,13 +109,15 @@ export default class OptionsManager {
|
|
|
107
109
|
*/
|
|
108
110
|
__hasProperty(prop: string): boolean;
|
|
109
111
|
}
|
|
112
|
+
export type DeepmergeOptions = import('deepmerge').Options;
|
|
110
113
|
export type BaseConfig = import('../index.js').BaseConfig;
|
|
111
114
|
export type OptionType = StringConstructor | NumberConstructor | BooleanConstructor | ArrayConstructor | ObjectConstructor;
|
|
112
|
-
export type
|
|
115
|
+
export type OptionObject = {
|
|
113
116
|
type: OptionType;
|
|
114
117
|
default: string | number | boolean | (() => any[] | any);
|
|
118
|
+
merge?: boolean | DeepmergeOptions;
|
|
115
119
|
};
|
|
116
|
-
export type OptionValue = OptionType |
|
|
120
|
+
export type OptionValue = OptionType | OptionObject;
|
|
117
121
|
export type OptionsSchema = {
|
|
118
122
|
[name: string]: OptionValue;
|
|
119
123
|
};
|
|
@@ -1,28 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __publicField = (obj, key, value) => {
|
|
4
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
+
return value;
|
|
6
|
+
};
|
|
7
|
+
import deepmerge from "deepmerge";
|
|
8
|
+
import isObject from "../../utils/object/isObject.js";
|
|
9
|
+
const _OptionsManager = class {
|
|
5
10
|
constructor(element, schema, baseConfig) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
_defineProperty(this, "__values", {});
|
|
11
|
-
|
|
12
|
-
_defineProperty(this, "__defaultValues", {
|
|
13
|
-
String: '',
|
|
11
|
+
__publicField(this, "__element");
|
|
12
|
+
__publicField(this, "__values", {});
|
|
13
|
+
__publicField(this, "__defaultValues", {
|
|
14
|
+
String: "",
|
|
14
15
|
Number: 0,
|
|
15
16
|
Boolean: false,
|
|
16
17
|
Array: () => [],
|
|
17
18
|
Object: () => ({})
|
|
18
19
|
});
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
_defineProperty(this, "log", false);
|
|
25
|
-
|
|
20
|
+
__publicField(this, "name", "Base");
|
|
21
|
+
__publicField(this, "debug", false);
|
|
22
|
+
__publicField(this, "log", false);
|
|
23
|
+
var _a, _b;
|
|
26
24
|
Object.defineProperties(this, {
|
|
27
25
|
__element: {
|
|
28
26
|
enumerable: false,
|
|
@@ -43,138 +41,110 @@ export default class OptionsManager {
|
|
|
43
41
|
this.name = baseConfig.name;
|
|
44
42
|
schema.debug = {
|
|
45
43
|
type: Boolean,
|
|
46
|
-
default: (
|
|
44
|
+
default: (_a = baseConfig.debug) != null ? _a : false
|
|
47
45
|
};
|
|
48
46
|
schema.log = {
|
|
49
47
|
type: Boolean,
|
|
50
|
-
default: (
|
|
48
|
+
default: (_b = baseConfig.log) != null ? _b : false
|
|
51
49
|
};
|
|
52
|
-
Object.entries(schema).forEach(
|
|
53
|
-
var [name, config] = _ref;
|
|
54
|
-
|
|
50
|
+
Object.entries(schema).forEach(([name, config]) => {
|
|
55
51
|
this.__register(name, config);
|
|
56
52
|
});
|
|
57
53
|
return this;
|
|
58
54
|
}
|
|
59
|
-
|
|
60
55
|
__register(name, config) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (!
|
|
65
|
-
throw new Error(
|
|
56
|
+
const isObjectConfig = typeof config === "object";
|
|
57
|
+
const hasDefaultValue = !_OptionsManager.types.includes(config);
|
|
58
|
+
const type = isObjectConfig ? config.type : config;
|
|
59
|
+
if (!_OptionsManager.types.includes(type)) {
|
|
60
|
+
throw new Error(`The "${name}" option has an invalid type. The allowed types are: String, Number, Boolean, Array and Object.`);
|
|
66
61
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
if ((type === Array || type === Object) && typeof defaultValue !== 'function') {
|
|
71
|
-
throw new Error("The default value for options of type \"".concat(type.name, "\" must be returned by a function."));
|
|
62
|
+
const defaultValue = hasDefaultValue ? config.default : this.__defaultValues[type.name];
|
|
63
|
+
if ((type === Array || type === Object) && typeof defaultValue !== "function") {
|
|
64
|
+
throw new Error(`The default value for options of type "${type.name}" must be returned by a function.`);
|
|
72
65
|
}
|
|
73
|
-
|
|
74
66
|
Object.defineProperty(this, name, {
|
|
75
67
|
get: () => {
|
|
76
|
-
return this.get(name, type, defaultValue);
|
|
68
|
+
return this.get(name, type, defaultValue, isObjectConfig ? config.merge : void 0);
|
|
77
69
|
},
|
|
78
|
-
set: value => {
|
|
70
|
+
set: (value) => {
|
|
79
71
|
this.set(name, type, value, defaultValue);
|
|
80
72
|
},
|
|
81
73
|
enumerable: true
|
|
82
74
|
});
|
|
83
75
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
var hasProperty = this.__hasProperty(propertyName);
|
|
89
|
-
|
|
76
|
+
get(name, type, defaultValue, merge) {
|
|
77
|
+
const propertyName = _OptionsManager.__getPropertyName(name);
|
|
78
|
+
const hasProperty = this.__hasProperty(propertyName);
|
|
90
79
|
if (type === Boolean) {
|
|
91
80
|
if (defaultValue) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
var hasNegatedProperty = this.__hasProperty(negatedPropertyName);
|
|
95
|
-
|
|
81
|
+
const negatedPropertyName = _OptionsManager.__getPropertyName(name, "No");
|
|
82
|
+
const hasNegatedProperty = this.__hasProperty(negatedPropertyName);
|
|
96
83
|
return !hasNegatedProperty;
|
|
97
84
|
}
|
|
98
|
-
|
|
99
85
|
return hasProperty || defaultValue;
|
|
100
86
|
}
|
|
101
|
-
|
|
102
|
-
var value = this.__element.dataset[propertyName];
|
|
103
|
-
|
|
87
|
+
const value = this.__element.dataset[propertyName];
|
|
104
88
|
if (type === Number) {
|
|
105
89
|
return hasProperty ? Number(value) : defaultValue;
|
|
106
90
|
}
|
|
107
|
-
|
|
108
91
|
if (type === Array || type === Object) {
|
|
109
|
-
var val = deepmerge(defaultValue(), hasProperty ? JSON.parse(value) : this.__defaultValues[type.name]());
|
|
110
|
-
|
|
111
92
|
if (!this.__values[name]) {
|
|
93
|
+
let val = hasProperty ? JSON.parse(value) : defaultValue();
|
|
94
|
+
if (typeof merge !== "undefined") {
|
|
95
|
+
val = typeof merge === "boolean" ? deepmerge(defaultValue(), val) : deepmerge(defaultValue(), val, merge);
|
|
96
|
+
}
|
|
112
97
|
this.__values[name] = val;
|
|
113
98
|
}
|
|
114
|
-
|
|
115
99
|
return this.__values[name];
|
|
116
100
|
}
|
|
117
|
-
|
|
118
101
|
return hasProperty ? value : defaultValue;
|
|
119
102
|
}
|
|
120
|
-
|
|
121
103
|
set(name, type, value, defaultValue) {
|
|
122
|
-
|
|
123
|
-
|
|
104
|
+
const propertyName = _OptionsManager.__getPropertyName(name);
|
|
124
105
|
if (value.constructor.name !== type.name) {
|
|
125
|
-
|
|
126
|
-
throw new TypeError(
|
|
106
|
+
const val = Array.isArray(value) || isObject(value) ? JSON.stringify(value) : value;
|
|
107
|
+
throw new TypeError(`The "${val}" value for the "${name}" option must be of type "${type.name}"`);
|
|
127
108
|
}
|
|
128
|
-
|
|
129
109
|
switch (type) {
|
|
130
110
|
case Boolean:
|
|
131
111
|
if (defaultValue) {
|
|
132
|
-
|
|
133
|
-
|
|
112
|
+
const negatedPropertyName = _OptionsManager.__getPropertyName(name, "No");
|
|
134
113
|
if (value) {
|
|
135
114
|
delete this.__element.dataset[negatedPropertyName];
|
|
136
115
|
} else {
|
|
137
|
-
this.__element.dataset[negatedPropertyName] =
|
|
116
|
+
this.__element.dataset[negatedPropertyName] = "";
|
|
138
117
|
}
|
|
139
118
|
} else if (value) {
|
|
140
|
-
this.__element.dataset[propertyName] =
|
|
119
|
+
this.__element.dataset[propertyName] = "";
|
|
141
120
|
} else {
|
|
142
121
|
delete this.__element.dataset[propertyName];
|
|
143
122
|
}
|
|
144
|
-
|
|
145
123
|
break;
|
|
146
|
-
|
|
147
124
|
case Array:
|
|
148
125
|
case Object:
|
|
149
126
|
this.__values[name] = value;
|
|
150
127
|
break;
|
|
151
|
-
|
|
152
128
|
default:
|
|
153
129
|
this.__element.dataset[propertyName] = value;
|
|
154
130
|
}
|
|
155
131
|
}
|
|
156
|
-
|
|
157
132
|
__hasProperty(prop) {
|
|
158
|
-
return typeof this.__element.dataset[prop] !==
|
|
133
|
+
return typeof this.__element.dataset[prop] !== "undefined";
|
|
159
134
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
if (OptionsManager.__propertyNameCache.has(key)) {
|
|
166
|
-
return OptionsManager.__propertyNameCache.get(key);
|
|
135
|
+
static __getPropertyName(name, prefix = "") {
|
|
136
|
+
const key = name + prefix;
|
|
137
|
+
if (_OptionsManager.__propertyNameCache.has(key)) {
|
|
138
|
+
return _OptionsManager.__propertyNameCache.get(key);
|
|
167
139
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
OptionsManager.__propertyNameCache.set(key, propertyName);
|
|
172
|
-
|
|
140
|
+
const propertyName = `option${prefix}${name.replace(/^\w/, (c) => c.toUpperCase())}`;
|
|
141
|
+
_OptionsManager.__propertyNameCache.set(key, propertyName);
|
|
173
142
|
return propertyName;
|
|
174
143
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
144
|
+
};
|
|
145
|
+
let OptionsManager = _OptionsManager;
|
|
146
|
+
__publicField(OptionsManager, "types", [String, Number, Boolean, Array, Object]);
|
|
147
|
+
__publicField(OptionsManager, "__propertyNameCache", /* @__PURE__ */ new Map());
|
|
148
|
+
export {
|
|
149
|
+
OptionsManager as default
|
|
150
|
+
};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var __publicField = (obj, key, value) => {
|
|
20
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
21
|
+
return value;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
// packages/js-toolkit/Base/managers/RefsManager.js
|
|
25
|
+
var RefsManager_exports = {};
|
|
26
|
+
__export(RefsManager_exports, {
|
|
27
|
+
default: () => RefsManager
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(RefsManager_exports);
|
|
30
|
+
var RefsManager = class {
|
|
31
|
+
constructor(base, element, refs, eventsManager) {
|
|
32
|
+
__publicField(this, "__element");
|
|
33
|
+
__publicField(this, "__refs");
|
|
34
|
+
__publicField(this, "__base");
|
|
35
|
+
__publicField(this, "__eventsManager");
|
|
36
|
+
Object.defineProperties(this, {
|
|
37
|
+
__element: {
|
|
38
|
+
enumerable: false,
|
|
39
|
+
writable: false,
|
|
40
|
+
value: element
|
|
41
|
+
},
|
|
42
|
+
__refs: {
|
|
43
|
+
enumerable: false,
|
|
44
|
+
writable: false,
|
|
45
|
+
value: refs
|
|
46
|
+
},
|
|
47
|
+
__base: {
|
|
48
|
+
enumerable: false,
|
|
49
|
+
writable: false,
|
|
50
|
+
value: base
|
|
51
|
+
},
|
|
52
|
+
__eventsManager: {
|
|
53
|
+
enumerable: false,
|
|
54
|
+
writable: false,
|
|
55
|
+
value: eventsManager
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
registerAll() {
|
|
60
|
+
this.__refs.forEach((refName) => this.__register(refName));
|
|
61
|
+
}
|
|
62
|
+
unregisterAll() {
|
|
63
|
+
this.__refs.forEach((refName) => this.__unregister(refName));
|
|
64
|
+
}
|
|
65
|
+
__register(refName) {
|
|
66
|
+
const isMultiple = refName.endsWith("[]");
|
|
67
|
+
const propName = RefsManager.normalizeRefName(refName);
|
|
68
|
+
const refs = Array.from(this.__element.querySelectorAll(`[data-ref="${refName}"]`)).filter((ref) => this.__filterRefsBelongingToInstance(ref));
|
|
69
|
+
if (!isMultiple && refs.length > 1) {
|
|
70
|
+
console.warn(`[${this.__base.$options.name}]`, `The "${refName}" ref has been found multiple times.`, "Did you forgot to add the `[]` suffix to its name?");
|
|
71
|
+
}
|
|
72
|
+
if (!isMultiple && refs.length <= 1 && refs[0] === void 0) {
|
|
73
|
+
console.warn(`[${this.__base.$options.name}]`, `The "${refName}" ref is missing.`, `Is there an \`[data-ref="${refName}"]\` element in the component's scope?`);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
this.__eventsManager.bindRef(refName, refs);
|
|
77
|
+
Object.defineProperty(this, propName, {
|
|
78
|
+
value: isMultiple || refs.length > 1 ? refs : refs[0],
|
|
79
|
+
enumerable: true,
|
|
80
|
+
configurable: true
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
__unregister(refName) {
|
|
84
|
+
const propName = RefsManager.normalizeRefName(refName);
|
|
85
|
+
const refs = Array.isArray(this[propName]) ? this[propName] : [this[propName]];
|
|
86
|
+
this.__eventsManager.unbindRef(refName, refs);
|
|
87
|
+
}
|
|
88
|
+
static normalizeRefName(name) {
|
|
89
|
+
return name.endsWith("[]") ? name.replace(/\[\]$/, "") : name;
|
|
90
|
+
}
|
|
91
|
+
__filterRefsBelongingToInstance(ref) {
|
|
92
|
+
let ancestor = ref.parentElement;
|
|
93
|
+
while (ancestor && ancestor.dataset.component === void 0) {
|
|
94
|
+
ancestor = ancestor.parentElement;
|
|
95
|
+
}
|
|
96
|
+
return ancestor === null || ancestor === this.__element;
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
if (module.exports.default) module.exports = module.exports.default;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __publicField = (obj, key, value) => {
|
|
4
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
+
return value;
|
|
6
|
+
};
|
|
7
|
+
class RefsManager {
|
|
3
8
|
constructor(base, element, refs, eventsManager) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
_defineProperty(this, "__base", void 0);
|
|
9
|
-
|
|
10
|
-
_defineProperty(this, "__eventsManager", void 0);
|
|
11
|
-
|
|
9
|
+
__publicField(this, "__element");
|
|
10
|
+
__publicField(this, "__refs");
|
|
11
|
+
__publicField(this, "__base");
|
|
12
|
+
__publicField(this, "__eventsManager");
|
|
12
13
|
Object.defineProperties(this, {
|
|
13
14
|
__element: {
|
|
14
15
|
enumerable: false,
|
|
@@ -32,57 +33,46 @@ export default class RefsManager {
|
|
|
32
33
|
}
|
|
33
34
|
});
|
|
34
35
|
}
|
|
35
|
-
|
|
36
36
|
registerAll() {
|
|
37
|
-
this.__refs.forEach(refName => this.__register(refName));
|
|
37
|
+
this.__refs.forEach((refName) => this.__register(refName));
|
|
38
38
|
}
|
|
39
|
-
|
|
40
39
|
unregisterAll() {
|
|
41
|
-
this.__refs.forEach(refName => this.__unregister(refName));
|
|
40
|
+
this.__refs.forEach((refName) => this.__unregister(refName));
|
|
42
41
|
}
|
|
43
|
-
|
|
44
42
|
__register(refName) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
const isMultiple = refName.endsWith("[]");
|
|
44
|
+
const propName = RefsManager.normalizeRefName(refName);
|
|
45
|
+
const refs = Array.from(this.__element.querySelectorAll(`[data-ref="${refName}"]`)).filter((ref) => this.__filterRefsBelongingToInstance(ref));
|
|
49
46
|
if (!isMultiple && refs.length > 1) {
|
|
50
|
-
console.warn(
|
|
47
|
+
console.warn(`[${this.__base.$options.name}]`, `The "${refName}" ref has been found multiple times.`, "Did you forgot to add the `[]` suffix to its name?");
|
|
51
48
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
console.warn("[".concat(this.__base.$options.name, "]"), "The \"".concat(refName, "\" ref is missing."), "Is there an `[data-ref=\"".concat(refName, "\"]` element in the component's scope?"));
|
|
49
|
+
if (!isMultiple && refs.length <= 1 && refs[0] === void 0) {
|
|
50
|
+
console.warn(`[${this.__base.$options.name}]`, `The "${refName}" ref is missing.`, `Is there an \`[data-ref="${refName}"]\` element in the component's scope?`);
|
|
55
51
|
return;
|
|
56
52
|
}
|
|
57
|
-
|
|
58
53
|
this.__eventsManager.bindRef(refName, refs);
|
|
59
|
-
|
|
60
54
|
Object.defineProperty(this, propName, {
|
|
61
55
|
value: isMultiple || refs.length > 1 ? refs : refs[0],
|
|
62
56
|
enumerable: true,
|
|
63
57
|
configurable: true
|
|
64
58
|
});
|
|
65
59
|
}
|
|
66
|
-
|
|
67
60
|
__unregister(refName) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
61
|
+
const propName = RefsManager.normalizeRefName(refName);
|
|
62
|
+
const refs = Array.isArray(this[propName]) ? this[propName] : [this[propName]];
|
|
71
63
|
this.__eventsManager.unbindRef(refName, refs);
|
|
72
64
|
}
|
|
73
|
-
|
|
74
65
|
static normalizeRefName(name) {
|
|
75
|
-
return name.endsWith(
|
|
66
|
+
return name.endsWith("[]") ? name.replace(/\[\]$/, "") : name;
|
|
76
67
|
}
|
|
77
|
-
|
|
78
68
|
__filterRefsBelongingToInstance(ref) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
while (ancestor && ancestor.dataset.component === undefined) {
|
|
69
|
+
let ancestor = ref.parentElement;
|
|
70
|
+
while (ancestor && ancestor.dataset.component === void 0) {
|
|
82
71
|
ancestor = ancestor.parentElement;
|
|
83
72
|
}
|
|
84
|
-
|
|
85
73
|
return ancestor === null || ancestor === this.__element;
|
|
86
74
|
}
|
|
87
|
-
|
|
88
|
-
|
|
75
|
+
}
|
|
76
|
+
export {
|
|
77
|
+
RefsManager as default
|
|
78
|
+
};
|