@brandup/ui-app 1.0.2 → 1.0.3
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/dist/cjs/index.js +96 -65
- package/dist/cjs/index.js.map +1 -1
- package/dist/mjs/index.js +96 -65
- package/dist/mjs/index.js.map +1 -1
- package/package.json +2 -2
package/dist/cjs/index.js
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
const constants$1 = {
|
|
4
|
+
ElemAttributeName: "uiElement",
|
|
5
|
+
ElemPropertyName: "uielement",
|
|
6
|
+
CommandAttributeName: "command",
|
|
7
|
+
CommandExecutingCssClassName: "executing",
|
|
8
|
+
CommandEventName: "uicommand"
|
|
9
|
+
};
|
|
10
|
+
|
|
7
11
|
class UIElement {
|
|
8
|
-
__element
|
|
9
|
-
__events
|
|
10
|
-
|
|
12
|
+
__element;
|
|
13
|
+
__events;
|
|
14
|
+
__commands;
|
|
15
|
+
__destroyCallbacks;
|
|
11
16
|
// Element members
|
|
12
17
|
get element() { return this.__element; }
|
|
13
18
|
setElement(elem) {
|
|
@@ -16,35 +21,33 @@ class UIElement {
|
|
|
16
21
|
if (this.__element || UIElement.hasElement(elem))
|
|
17
22
|
throw "UIElement already defined";
|
|
18
23
|
this.__element = elem;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
this.defineEvent(
|
|
24
|
+
elem[constants$1.ElemPropertyName] = this;
|
|
25
|
+
elem.dataset[constants$1.ElemAttributeName] = this.typeName;
|
|
26
|
+
this.defineEvent(constants$1.CommandEventName, { cancelable: false, bubbles: true });
|
|
22
27
|
this._onRenderElement(elem);
|
|
23
28
|
}
|
|
24
29
|
// static members
|
|
25
30
|
static hasElement(elem) {
|
|
26
|
-
return !!elem.dataset[ElemAttributeName];
|
|
31
|
+
return !!elem.dataset[constants$1.ElemAttributeName];
|
|
27
32
|
}
|
|
28
33
|
// HTMLElement event members
|
|
29
34
|
defineEvent(eventName, eventOptions) {
|
|
35
|
+
if (!this.__events)
|
|
36
|
+
this.__events = {};
|
|
30
37
|
this.__events[eventName] = eventOptions ? eventOptions : null;
|
|
31
38
|
}
|
|
32
39
|
raiseEvent(eventName, eventArgs) {
|
|
33
|
-
if (!(eventName in this.__events))
|
|
40
|
+
if (!this.__events || !(eventName in this.__events))
|
|
34
41
|
throw new Error(`Not found event "${eventName}".`);
|
|
35
42
|
const eventOptions = this.__events[eventName];
|
|
36
43
|
const eventInit = {};
|
|
37
44
|
if (eventOptions) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
eventInit.cancelable = eventOptions.cancelable;
|
|
42
|
-
if (eventOptions.composed)
|
|
43
|
-
eventInit.composed = eventOptions.composed;
|
|
45
|
+
eventInit.bubbles = eventOptions.bubbles;
|
|
46
|
+
eventInit.cancelable = eventOptions.cancelable;
|
|
47
|
+
eventInit.composed = eventOptions.composed;
|
|
44
48
|
}
|
|
45
|
-
eventInit.detail = eventArgs
|
|
46
|
-
|
|
47
|
-
return this.dispatchEvent(event);
|
|
49
|
+
eventInit.detail = eventArgs;
|
|
50
|
+
return this.dispatchEvent(new CustomEvent(eventName, eventInit));
|
|
48
51
|
}
|
|
49
52
|
addEventListener(type, listener, options) {
|
|
50
53
|
this.__element?.addEventListener(type, listener, options);
|
|
@@ -59,89 +62,112 @@ class UIElement {
|
|
|
59
62
|
}
|
|
60
63
|
// Command members
|
|
61
64
|
registerCommand(name, execute, canExecute) {
|
|
62
|
-
|
|
63
|
-
|
|
65
|
+
if (!this.__commands)
|
|
66
|
+
this.__commands = {};
|
|
67
|
+
const nornalizedName = name.toLowerCase();
|
|
68
|
+
if (nornalizedName in this.__commands)
|
|
69
|
+
throw new Error(`Command "${name}" already registered.`);
|
|
70
|
+
this.__commands[nornalizedName] = {
|
|
64
71
|
name: name,
|
|
65
72
|
execute,
|
|
66
|
-
canExecute
|
|
67
|
-
isExecuting: false
|
|
73
|
+
canExecute
|
|
68
74
|
};
|
|
69
75
|
}
|
|
70
76
|
hasCommand(name) {
|
|
71
|
-
return name.toLowerCase() in this.
|
|
77
|
+
return this.__commands && name.toLowerCase() in this.__commands;
|
|
72
78
|
}
|
|
73
|
-
|
|
74
|
-
|
|
79
|
+
/** @internal */
|
|
80
|
+
__execCommand(name, target) {
|
|
81
|
+
if (!this.__element || !this.__commands)
|
|
75
82
|
throw new Error("UIElement is not set HTMLElement.");
|
|
76
83
|
const key = name.toLowerCase();
|
|
77
|
-
const
|
|
78
|
-
if (!
|
|
84
|
+
const command = this.__commands[key];
|
|
85
|
+
if (!command)
|
|
79
86
|
throw new Error(`Command "${name}" is not registered.`);
|
|
80
87
|
const context = {
|
|
81
|
-
target
|
|
82
|
-
uiElem: this
|
|
83
|
-
transparent: false
|
|
88
|
+
target,
|
|
89
|
+
uiElem: this
|
|
84
90
|
};
|
|
85
|
-
if (
|
|
91
|
+
if (command.isExecuting)
|
|
86
92
|
return { status: "already", context };
|
|
87
|
-
|
|
88
|
-
if (!this._onCanExecCommand(name,
|
|
89
|
-
|
|
93
|
+
command.isExecuting = true;
|
|
94
|
+
if (!this._onCanExecCommand(name, target)) {
|
|
95
|
+
delete command.isExecuting;
|
|
90
96
|
return { status: "disallow", context };
|
|
91
97
|
}
|
|
92
|
-
if (
|
|
93
|
-
|
|
98
|
+
if (command.canExecute && !command.canExecute(context)) {
|
|
99
|
+
delete command.isExecuting;
|
|
94
100
|
return { status: "disallow", context };
|
|
95
101
|
}
|
|
96
|
-
this.raiseEvent(
|
|
97
|
-
name:
|
|
102
|
+
this.raiseEvent(constants$1.CommandEventName, {
|
|
103
|
+
name: command.name,
|
|
98
104
|
uiElem: this,
|
|
99
105
|
elem: this.__element
|
|
100
106
|
});
|
|
101
107
|
let isAsync;
|
|
102
108
|
try {
|
|
103
|
-
const
|
|
104
|
-
if (
|
|
109
|
+
const commandResult = command.execute(context);
|
|
110
|
+
if (commandResult && commandResult instanceof Promise) {
|
|
105
111
|
isAsync = true;
|
|
106
|
-
|
|
107
|
-
|
|
112
|
+
target.classList.add(constants$1.CommandExecutingCssClassName);
|
|
113
|
+
commandResult
|
|
108
114
|
.finally(() => {
|
|
109
|
-
|
|
110
|
-
|
|
115
|
+
target.classList.remove(constants$1.CommandExecutingCssClassName);
|
|
116
|
+
delete command.isExecuting;
|
|
111
117
|
});
|
|
112
118
|
}
|
|
113
119
|
}
|
|
114
120
|
finally {
|
|
115
121
|
if (!isAsync)
|
|
116
|
-
|
|
122
|
+
delete command.isExecuting;
|
|
117
123
|
}
|
|
118
124
|
return { status: "success", context: context };
|
|
119
125
|
}
|
|
120
|
-
|
|
121
|
-
const key = name.toLowerCase();
|
|
122
|
-
if (key in this.__commandHandlers)
|
|
123
|
-
throw new Error(`Command "${name}" already registered.`);
|
|
124
|
-
return key;
|
|
125
|
-
}
|
|
126
|
-
_onRenderElement(_elem) {
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
126
|
+
_onRenderElement(_elem) { }
|
|
129
127
|
_onCanExecCommand(_name, _elem) {
|
|
130
128
|
return true;
|
|
131
129
|
}
|
|
130
|
+
onDestroy(callback) {
|
|
131
|
+
if (!this.__element)
|
|
132
|
+
return;
|
|
133
|
+
if (!this.__destroyCallbacks)
|
|
134
|
+
this.__destroyCallbacks = [];
|
|
135
|
+
if (callback instanceof UIElement)
|
|
136
|
+
this.__destroyCallbacks.push(() => callback.destroy());
|
|
137
|
+
else if (callback instanceof Element)
|
|
138
|
+
this.__destroyCallbacks.push(() => callback.remove());
|
|
139
|
+
else
|
|
140
|
+
this.__destroyCallbacks.push(callback);
|
|
141
|
+
}
|
|
142
|
+
toString() {
|
|
143
|
+
return this.typeName;
|
|
144
|
+
}
|
|
132
145
|
destroy() {
|
|
133
146
|
const elem = this.__element;
|
|
134
147
|
if (!elem)
|
|
135
148
|
return;
|
|
136
|
-
|
|
137
|
-
delete elem.
|
|
138
|
-
delete
|
|
149
|
+
delete elem.dataset[constants$1.ElemAttributeName];
|
|
150
|
+
delete elem[constants$1.ElemPropertyName];
|
|
151
|
+
delete this.__element;
|
|
152
|
+
delete this.__events;
|
|
153
|
+
delete this.__commands;
|
|
154
|
+
if (this.__destroyCallbacks) {
|
|
155
|
+
this.__destroyCallbacks.map(callback => {
|
|
156
|
+
try {
|
|
157
|
+
callback();
|
|
158
|
+
}
|
|
159
|
+
catch (reason) {
|
|
160
|
+
console.error(`Error in call "${this.typeName}" destroy callback.`);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
delete this.__destroyCallbacks;
|
|
164
|
+
}
|
|
139
165
|
}
|
|
140
166
|
}
|
|
141
167
|
const fundUiElementByCommand = (elem, commandName) => {
|
|
142
168
|
while (elem) {
|
|
143
|
-
if (elem.dataset[ElemAttributeName]) {
|
|
144
|
-
const uiElem = elem[ElemPropertyName];
|
|
169
|
+
if (elem.dataset[constants$1.ElemAttributeName]) {
|
|
170
|
+
const uiElem = elem[constants$1.ElemPropertyName];
|
|
145
171
|
if (uiElem.hasCommand(commandName))
|
|
146
172
|
return uiElem;
|
|
147
173
|
}
|
|
@@ -157,7 +183,7 @@ const fundUiElementByCommand = (elem, commandName) => {
|
|
|
157
183
|
const commandClickHandler = (e) => {
|
|
158
184
|
let commandElem = e.target;
|
|
159
185
|
while (commandElem) {
|
|
160
|
-
if (commandElem.dataset[CommandAttributeName])
|
|
186
|
+
if (commandElem.dataset[constants$1.CommandAttributeName])
|
|
161
187
|
break;
|
|
162
188
|
if (commandElem === e.currentTarget)
|
|
163
189
|
return;
|
|
@@ -165,12 +191,12 @@ const commandClickHandler = (e) => {
|
|
|
165
191
|
}
|
|
166
192
|
if (!commandElem)
|
|
167
193
|
return;
|
|
168
|
-
const commandName = commandElem.dataset[CommandAttributeName];
|
|
194
|
+
const commandName = commandElem.dataset[constants$1.CommandAttributeName];
|
|
169
195
|
if (!commandName)
|
|
170
196
|
throw new Error("Command data attribute is not have value.");
|
|
171
197
|
const uiElem = fundUiElementByCommand(commandElem, commandName);
|
|
172
198
|
if (uiElem) {
|
|
173
|
-
const result = uiElem.
|
|
199
|
+
const result = uiElem.__execCommand(commandName, commandElem);
|
|
174
200
|
if (result.status == "success" && result.context.transparent)
|
|
175
201
|
return;
|
|
176
202
|
}
|
|
@@ -182,6 +208,11 @@ const commandClickHandler = (e) => {
|
|
|
182
208
|
};
|
|
183
209
|
window.addEventListener("click", commandClickHandler, false);
|
|
184
210
|
|
|
211
|
+
HTMLElement.prototype.ui = function (factory) {
|
|
212
|
+
factory(this);
|
|
213
|
+
return this;
|
|
214
|
+
};
|
|
215
|
+
|
|
185
216
|
class MiddlewareInvoker {
|
|
186
217
|
middleware;
|
|
187
218
|
__next = null;
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../brandup-ui/dist/mjs/index.js"],"sourcesContent":["const ElemAttributeName = \"uiElement\";\nconst ElemPropertyName = \"brandupUiElement\";\nconst CommandAttributeName = \"command\";\nconst CommandExecutingCssClassName = \"executing\";\nclass UIElement {\n __element = null;\n __events = {};\n __commandHandlers = {};\n // Element members\n get element() { return this.__element; }\n setElement(elem) {\n if (!elem)\n throw \"Not set value elem.\";\n if (this.__element || UIElement.hasElement(elem))\n throw \"UIElement already defined\";\n this.__element = elem;\n this.__element[ElemPropertyName] = this;\n this.__element.dataset[ElemAttributeName] = this.typeName;\n this.defineEvent(\"command\", { cancelable: false, bubbles: true });\n this._onRenderElement(elem);\n }\n // static members\n static hasElement(elem) {\n return !!elem.dataset[ElemAttributeName];\n }\n // HTMLElement event members\n defineEvent(eventName, eventOptions) {\n this.__events[eventName] = eventOptions ? eventOptions : null;\n }\n raiseEvent(eventName, eventArgs) {\n if (!(eventName in this.__events))\n throw new Error(`Not found event \"${eventName}\".`);\n const eventOptions = this.__events[eventName];\n const eventInit = {};\n if (eventOptions) {\n if (eventOptions.bubbles)\n eventInit.bubbles = eventOptions.bubbles;\n if (eventOptions.cancelable)\n eventInit.cancelable = eventOptions.cancelable;\n if (eventOptions.composed)\n eventInit.composed = eventOptions.composed;\n }\n eventInit.detail = eventArgs ? eventArgs : {};\n const event = new CustomEvent(eventName, eventInit);\n return this.dispatchEvent(event);\n }\n addEventListener(type, listener, options) {\n this.__element?.addEventListener(type, listener, options);\n }\n removeEventListener(type, listener, options) {\n this.__element?.removeEventListener(type, listener, options);\n }\n dispatchEvent(event) {\n if (!this.__element)\n throw new Error(\"HTMLElement is not defined.\");\n return this.__element.dispatchEvent(event);\n }\n // Command members\n registerCommand(name, execute, canExecute) {\n name = this.verifyCommandName(name);\n this.__commandHandlers[name] = {\n name: name,\n execute,\n canExecute,\n isExecuting: false\n };\n }\n hasCommand(name) {\n return name.toLowerCase() in this.__commandHandlers;\n }\n execCommand(name, elem) {\n if (!this.__element)\n throw new Error(\"UIElement is not set HTMLElement.\");\n const key = name.toLowerCase();\n const handler = this.__commandHandlers[key];\n if (!handler)\n throw new Error(`Command \"${name}\" is not registered.`);\n const context = {\n target: elem,\n uiElem: this,\n transparent: false\n };\n if (handler.isExecuting)\n return { status: \"already\", context };\n handler.isExecuting = true;\n if (!this._onCanExecCommand(name, elem)) {\n handler.isExecuting = false;\n return { status: \"disallow\", context };\n }\n if (handler.canExecute && !handler.canExecute(context)) {\n handler.isExecuting = false;\n return { status: \"disallow\", context };\n }\n this.raiseEvent(\"command\", {\n name: handler.name,\n uiElem: this,\n elem: this.__element\n });\n let isAsync;\n try {\n const handlerResult = handler.execute(context);\n if (handlerResult && handlerResult instanceof Promise) {\n isAsync = true;\n elem.classList.add(CommandExecutingCssClassName);\n handlerResult\n .finally(() => {\n elem.classList.remove(CommandExecutingCssClassName);\n handler.isExecuting = false;\n });\n }\n }\n finally {\n if (!isAsync)\n handler.isExecuting = false;\n }\n return { status: \"success\", context: context };\n }\n verifyCommandName(name) {\n const key = name.toLowerCase();\n if (key in this.__commandHandlers)\n throw new Error(`Command \"${name}\" already registered.`);\n return key;\n }\n _onRenderElement(_elem) {\n return;\n }\n _onCanExecCommand(_name, _elem) {\n return true;\n }\n destroy() {\n const elem = this.__element;\n if (!elem)\n return;\n this.__element = null;\n delete elem.dataset[ElemAttributeName];\n delete elem[ElemPropertyName];\n }\n}\nconst fundUiElementByCommand = (elem, commandName) => {\n while (elem) {\n if (elem.dataset[ElemAttributeName]) {\n const uiElem = elem[ElemPropertyName];\n if (uiElem.hasCommand(commandName))\n return uiElem;\n }\n if (typeof elem.parentElement === \"undefined\")\n elem = elem.parentNode;\n else if (elem.parentElement)\n elem = elem.parentElement;\n else\n break;\n }\n return null;\n};\nconst commandClickHandler = (e) => {\n let commandElem = e.target;\n while (commandElem) {\n if (commandElem.dataset[CommandAttributeName])\n break;\n if (commandElem === e.currentTarget)\n return;\n commandElem = commandElem.parentElement;\n }\n if (!commandElem)\n return;\n const commandName = commandElem.dataset[CommandAttributeName];\n if (!commandName)\n throw new Error(\"Command data attribute is not have value.\");\n const uiElem = fundUiElementByCommand(commandElem, commandName);\n if (uiElem) {\n const result = uiElem.execCommand(commandName, commandElem);\n if (result.status == \"success\" && result.context.transparent)\n return;\n }\n else\n console.warn(`Not find handler for command \"${commandName}\".`);\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n};\nwindow.addEventListener(\"click\", commandClickHandler, false);\n\nexport { CommandAttributeName, CommandExecutingCssClassName, ElemAttributeName, ElemPropertyName, UIElement };\n//# sourceMappingURL=index.js.map\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../brandup-ui/dist/mjs/index.js"],"sourcesContent":["const constants = {\n ElemAttributeName: \"uiElement\",\n ElemPropertyName: \"uielement\",\n CommandAttributeName: \"command\",\n CommandExecutingCssClassName: \"executing\",\n CommandEventName: \"uicommand\"\n};\n\nclass UIElement {\n __element;\n __events;\n __commands;\n __destroyCallbacks;\n // Element members\n get element() { return this.__element; }\n setElement(elem) {\n if (!elem)\n throw \"Not set value elem.\";\n if (this.__element || UIElement.hasElement(elem))\n throw \"UIElement already defined\";\n this.__element = elem;\n elem[constants.ElemPropertyName] = this;\n elem.dataset[constants.ElemAttributeName] = this.typeName;\n this.defineEvent(constants.CommandEventName, { cancelable: false, bubbles: true });\n this._onRenderElement(elem);\n }\n // static members\n static hasElement(elem) {\n return !!elem.dataset[constants.ElemAttributeName];\n }\n // HTMLElement event members\n defineEvent(eventName, eventOptions) {\n if (!this.__events)\n this.__events = {};\n this.__events[eventName] = eventOptions ? eventOptions : null;\n }\n raiseEvent(eventName, eventArgs) {\n if (!this.__events || !(eventName in this.__events))\n throw new Error(`Not found event \"${eventName}\".`);\n const eventOptions = this.__events[eventName];\n const eventInit = {};\n if (eventOptions) {\n eventInit.bubbles = eventOptions.bubbles;\n eventInit.cancelable = eventOptions.cancelable;\n eventInit.composed = eventOptions.composed;\n }\n eventInit.detail = eventArgs;\n return this.dispatchEvent(new CustomEvent(eventName, eventInit));\n }\n addEventListener(type, listener, options) {\n this.__element?.addEventListener(type, listener, options);\n }\n removeEventListener(type, listener, options) {\n this.__element?.removeEventListener(type, listener, options);\n }\n dispatchEvent(event) {\n if (!this.__element)\n throw new Error(\"HTMLElement is not defined.\");\n return this.__element.dispatchEvent(event);\n }\n // Command members\n registerCommand(name, execute, canExecute) {\n if (!this.__commands)\n this.__commands = {};\n const nornalizedName = name.toLowerCase();\n if (nornalizedName in this.__commands)\n throw new Error(`Command \"${name}\" already registered.`);\n this.__commands[nornalizedName] = {\n name: name,\n execute,\n canExecute\n };\n }\n hasCommand(name) {\n return this.__commands && name.toLowerCase() in this.__commands;\n }\n /** @internal */\n __execCommand(name, target) {\n if (!this.__element || !this.__commands)\n throw new Error(\"UIElement is not set HTMLElement.\");\n const key = name.toLowerCase();\n const command = this.__commands[key];\n if (!command)\n throw new Error(`Command \"${name}\" is not registered.`);\n const context = {\n target,\n uiElem: this\n };\n if (command.isExecuting)\n return { status: \"already\", context };\n command.isExecuting = true;\n if (!this._onCanExecCommand(name, target)) {\n delete command.isExecuting;\n return { status: \"disallow\", context };\n }\n if (command.canExecute && !command.canExecute(context)) {\n delete command.isExecuting;\n return { status: \"disallow\", context };\n }\n this.raiseEvent(constants.CommandEventName, {\n name: command.name,\n uiElem: this,\n elem: this.__element\n });\n let isAsync;\n try {\n const commandResult = command.execute(context);\n if (commandResult && commandResult instanceof Promise) {\n isAsync = true;\n target.classList.add(constants.CommandExecutingCssClassName);\n commandResult\n .finally(() => {\n target.classList.remove(constants.CommandExecutingCssClassName);\n delete command.isExecuting;\n });\n }\n }\n finally {\n if (!isAsync)\n delete command.isExecuting;\n }\n return { status: \"success\", context: context };\n }\n _onRenderElement(_elem) { }\n _onCanExecCommand(_name, _elem) {\n return true;\n }\n onDestroy(callback) {\n if (!this.__element)\n return;\n if (!this.__destroyCallbacks)\n this.__destroyCallbacks = [];\n if (callback instanceof UIElement)\n this.__destroyCallbacks.push(() => callback.destroy());\n else if (callback instanceof Element)\n this.__destroyCallbacks.push(() => callback.remove());\n else\n this.__destroyCallbacks.push(callback);\n }\n toString() {\n return this.typeName;\n }\n destroy() {\n const elem = this.__element;\n if (!elem)\n return;\n delete elem.dataset[constants.ElemAttributeName];\n delete elem[constants.ElemPropertyName];\n delete this.__element;\n delete this.__events;\n delete this.__commands;\n if (this.__destroyCallbacks) {\n this.__destroyCallbacks.map(callback => {\n try {\n callback();\n }\n catch (reason) {\n console.error(`Error in call \"${this.typeName}\" destroy callback.`);\n }\n });\n delete this.__destroyCallbacks;\n }\n }\n}\nconst fundUiElementByCommand = (elem, commandName) => {\n while (elem) {\n if (elem.dataset[constants.ElemAttributeName]) {\n const uiElem = elem[constants.ElemPropertyName];\n if (uiElem.hasCommand(commandName))\n return uiElem;\n }\n if (typeof elem.parentElement === \"undefined\")\n elem = elem.parentNode;\n else if (elem.parentElement)\n elem = elem.parentElement;\n else\n break;\n }\n return null;\n};\nconst commandClickHandler = (e) => {\n let commandElem = e.target;\n while (commandElem) {\n if (commandElem.dataset[constants.CommandAttributeName])\n break;\n if (commandElem === e.currentTarget)\n return;\n commandElem = commandElem.parentElement;\n }\n if (!commandElem)\n return;\n const commandName = commandElem.dataset[constants.CommandAttributeName];\n if (!commandName)\n throw new Error(\"Command data attribute is not have value.\");\n const uiElem = fundUiElementByCommand(commandElem, commandName);\n if (uiElem) {\n const result = uiElem.__execCommand(commandName, commandElem);\n if (result.status == \"success\" && result.context.transparent)\n return;\n }\n else\n console.warn(`Not find handler for command \"${commandName}\".`);\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n};\nwindow.addEventListener(\"click\", commandClickHandler, false);\n\nHTMLElement.prototype.ui = function (factory) {\n factory(this);\n return this;\n};\n\nconst UICONSTANTS = constants;\n\nexport { UICONSTANTS, UIElement };\n//# sourceMappingURL=index.js.map\n"],"names":["constants"],"mappings":"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"}
|
package/dist/mjs/index.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
const constants$1 = {
|
|
2
|
+
ElemAttributeName: "uiElement",
|
|
3
|
+
ElemPropertyName: "uielement",
|
|
4
|
+
CommandAttributeName: "command",
|
|
5
|
+
CommandExecutingCssClassName: "executing",
|
|
6
|
+
CommandEventName: "uicommand"
|
|
7
|
+
};
|
|
8
|
+
|
|
5
9
|
class UIElement {
|
|
6
|
-
__element
|
|
7
|
-
__events
|
|
8
|
-
|
|
10
|
+
__element;
|
|
11
|
+
__events;
|
|
12
|
+
__commands;
|
|
13
|
+
__destroyCallbacks;
|
|
9
14
|
// Element members
|
|
10
15
|
get element() { return this.__element; }
|
|
11
16
|
setElement(elem) {
|
|
@@ -14,35 +19,33 @@ class UIElement {
|
|
|
14
19
|
if (this.__element || UIElement.hasElement(elem))
|
|
15
20
|
throw "UIElement already defined";
|
|
16
21
|
this.__element = elem;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
this.defineEvent(
|
|
22
|
+
elem[constants$1.ElemPropertyName] = this;
|
|
23
|
+
elem.dataset[constants$1.ElemAttributeName] = this.typeName;
|
|
24
|
+
this.defineEvent(constants$1.CommandEventName, { cancelable: false, bubbles: true });
|
|
20
25
|
this._onRenderElement(elem);
|
|
21
26
|
}
|
|
22
27
|
// static members
|
|
23
28
|
static hasElement(elem) {
|
|
24
|
-
return !!elem.dataset[ElemAttributeName];
|
|
29
|
+
return !!elem.dataset[constants$1.ElemAttributeName];
|
|
25
30
|
}
|
|
26
31
|
// HTMLElement event members
|
|
27
32
|
defineEvent(eventName, eventOptions) {
|
|
33
|
+
if (!this.__events)
|
|
34
|
+
this.__events = {};
|
|
28
35
|
this.__events[eventName] = eventOptions ? eventOptions : null;
|
|
29
36
|
}
|
|
30
37
|
raiseEvent(eventName, eventArgs) {
|
|
31
|
-
if (!(eventName in this.__events))
|
|
38
|
+
if (!this.__events || !(eventName in this.__events))
|
|
32
39
|
throw new Error(`Not found event "${eventName}".`);
|
|
33
40
|
const eventOptions = this.__events[eventName];
|
|
34
41
|
const eventInit = {};
|
|
35
42
|
if (eventOptions) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
eventInit.cancelable = eventOptions.cancelable;
|
|
40
|
-
if (eventOptions.composed)
|
|
41
|
-
eventInit.composed = eventOptions.composed;
|
|
43
|
+
eventInit.bubbles = eventOptions.bubbles;
|
|
44
|
+
eventInit.cancelable = eventOptions.cancelable;
|
|
45
|
+
eventInit.composed = eventOptions.composed;
|
|
42
46
|
}
|
|
43
|
-
eventInit.detail = eventArgs
|
|
44
|
-
|
|
45
|
-
return this.dispatchEvent(event);
|
|
47
|
+
eventInit.detail = eventArgs;
|
|
48
|
+
return this.dispatchEvent(new CustomEvent(eventName, eventInit));
|
|
46
49
|
}
|
|
47
50
|
addEventListener(type, listener, options) {
|
|
48
51
|
this.__element?.addEventListener(type, listener, options);
|
|
@@ -57,89 +60,112 @@ class UIElement {
|
|
|
57
60
|
}
|
|
58
61
|
// Command members
|
|
59
62
|
registerCommand(name, execute, canExecute) {
|
|
60
|
-
|
|
61
|
-
|
|
63
|
+
if (!this.__commands)
|
|
64
|
+
this.__commands = {};
|
|
65
|
+
const nornalizedName = name.toLowerCase();
|
|
66
|
+
if (nornalizedName in this.__commands)
|
|
67
|
+
throw new Error(`Command "${name}" already registered.`);
|
|
68
|
+
this.__commands[nornalizedName] = {
|
|
62
69
|
name: name,
|
|
63
70
|
execute,
|
|
64
|
-
canExecute
|
|
65
|
-
isExecuting: false
|
|
71
|
+
canExecute
|
|
66
72
|
};
|
|
67
73
|
}
|
|
68
74
|
hasCommand(name) {
|
|
69
|
-
return name.toLowerCase() in this.
|
|
75
|
+
return this.__commands && name.toLowerCase() in this.__commands;
|
|
70
76
|
}
|
|
71
|
-
|
|
72
|
-
|
|
77
|
+
/** @internal */
|
|
78
|
+
__execCommand(name, target) {
|
|
79
|
+
if (!this.__element || !this.__commands)
|
|
73
80
|
throw new Error("UIElement is not set HTMLElement.");
|
|
74
81
|
const key = name.toLowerCase();
|
|
75
|
-
const
|
|
76
|
-
if (!
|
|
82
|
+
const command = this.__commands[key];
|
|
83
|
+
if (!command)
|
|
77
84
|
throw new Error(`Command "${name}" is not registered.`);
|
|
78
85
|
const context = {
|
|
79
|
-
target
|
|
80
|
-
uiElem: this
|
|
81
|
-
transparent: false
|
|
86
|
+
target,
|
|
87
|
+
uiElem: this
|
|
82
88
|
};
|
|
83
|
-
if (
|
|
89
|
+
if (command.isExecuting)
|
|
84
90
|
return { status: "already", context };
|
|
85
|
-
|
|
86
|
-
if (!this._onCanExecCommand(name,
|
|
87
|
-
|
|
91
|
+
command.isExecuting = true;
|
|
92
|
+
if (!this._onCanExecCommand(name, target)) {
|
|
93
|
+
delete command.isExecuting;
|
|
88
94
|
return { status: "disallow", context };
|
|
89
95
|
}
|
|
90
|
-
if (
|
|
91
|
-
|
|
96
|
+
if (command.canExecute && !command.canExecute(context)) {
|
|
97
|
+
delete command.isExecuting;
|
|
92
98
|
return { status: "disallow", context };
|
|
93
99
|
}
|
|
94
|
-
this.raiseEvent(
|
|
95
|
-
name:
|
|
100
|
+
this.raiseEvent(constants$1.CommandEventName, {
|
|
101
|
+
name: command.name,
|
|
96
102
|
uiElem: this,
|
|
97
103
|
elem: this.__element
|
|
98
104
|
});
|
|
99
105
|
let isAsync;
|
|
100
106
|
try {
|
|
101
|
-
const
|
|
102
|
-
if (
|
|
107
|
+
const commandResult = command.execute(context);
|
|
108
|
+
if (commandResult && commandResult instanceof Promise) {
|
|
103
109
|
isAsync = true;
|
|
104
|
-
|
|
105
|
-
|
|
110
|
+
target.classList.add(constants$1.CommandExecutingCssClassName);
|
|
111
|
+
commandResult
|
|
106
112
|
.finally(() => {
|
|
107
|
-
|
|
108
|
-
|
|
113
|
+
target.classList.remove(constants$1.CommandExecutingCssClassName);
|
|
114
|
+
delete command.isExecuting;
|
|
109
115
|
});
|
|
110
116
|
}
|
|
111
117
|
}
|
|
112
118
|
finally {
|
|
113
119
|
if (!isAsync)
|
|
114
|
-
|
|
120
|
+
delete command.isExecuting;
|
|
115
121
|
}
|
|
116
122
|
return { status: "success", context: context };
|
|
117
123
|
}
|
|
118
|
-
|
|
119
|
-
const key = name.toLowerCase();
|
|
120
|
-
if (key in this.__commandHandlers)
|
|
121
|
-
throw new Error(`Command "${name}" already registered.`);
|
|
122
|
-
return key;
|
|
123
|
-
}
|
|
124
|
-
_onRenderElement(_elem) {
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
124
|
+
_onRenderElement(_elem) { }
|
|
127
125
|
_onCanExecCommand(_name, _elem) {
|
|
128
126
|
return true;
|
|
129
127
|
}
|
|
128
|
+
onDestroy(callback) {
|
|
129
|
+
if (!this.__element)
|
|
130
|
+
return;
|
|
131
|
+
if (!this.__destroyCallbacks)
|
|
132
|
+
this.__destroyCallbacks = [];
|
|
133
|
+
if (callback instanceof UIElement)
|
|
134
|
+
this.__destroyCallbacks.push(() => callback.destroy());
|
|
135
|
+
else if (callback instanceof Element)
|
|
136
|
+
this.__destroyCallbacks.push(() => callback.remove());
|
|
137
|
+
else
|
|
138
|
+
this.__destroyCallbacks.push(callback);
|
|
139
|
+
}
|
|
140
|
+
toString() {
|
|
141
|
+
return this.typeName;
|
|
142
|
+
}
|
|
130
143
|
destroy() {
|
|
131
144
|
const elem = this.__element;
|
|
132
145
|
if (!elem)
|
|
133
146
|
return;
|
|
134
|
-
|
|
135
|
-
delete elem.
|
|
136
|
-
delete
|
|
147
|
+
delete elem.dataset[constants$1.ElemAttributeName];
|
|
148
|
+
delete elem[constants$1.ElemPropertyName];
|
|
149
|
+
delete this.__element;
|
|
150
|
+
delete this.__events;
|
|
151
|
+
delete this.__commands;
|
|
152
|
+
if (this.__destroyCallbacks) {
|
|
153
|
+
this.__destroyCallbacks.map(callback => {
|
|
154
|
+
try {
|
|
155
|
+
callback();
|
|
156
|
+
}
|
|
157
|
+
catch (reason) {
|
|
158
|
+
console.error(`Error in call "${this.typeName}" destroy callback.`);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
delete this.__destroyCallbacks;
|
|
162
|
+
}
|
|
137
163
|
}
|
|
138
164
|
}
|
|
139
165
|
const fundUiElementByCommand = (elem, commandName) => {
|
|
140
166
|
while (elem) {
|
|
141
|
-
if (elem.dataset[ElemAttributeName]) {
|
|
142
|
-
const uiElem = elem[ElemPropertyName];
|
|
167
|
+
if (elem.dataset[constants$1.ElemAttributeName]) {
|
|
168
|
+
const uiElem = elem[constants$1.ElemPropertyName];
|
|
143
169
|
if (uiElem.hasCommand(commandName))
|
|
144
170
|
return uiElem;
|
|
145
171
|
}
|
|
@@ -155,7 +181,7 @@ const fundUiElementByCommand = (elem, commandName) => {
|
|
|
155
181
|
const commandClickHandler = (e) => {
|
|
156
182
|
let commandElem = e.target;
|
|
157
183
|
while (commandElem) {
|
|
158
|
-
if (commandElem.dataset[CommandAttributeName])
|
|
184
|
+
if (commandElem.dataset[constants$1.CommandAttributeName])
|
|
159
185
|
break;
|
|
160
186
|
if (commandElem === e.currentTarget)
|
|
161
187
|
return;
|
|
@@ -163,12 +189,12 @@ const commandClickHandler = (e) => {
|
|
|
163
189
|
}
|
|
164
190
|
if (!commandElem)
|
|
165
191
|
return;
|
|
166
|
-
const commandName = commandElem.dataset[CommandAttributeName];
|
|
192
|
+
const commandName = commandElem.dataset[constants$1.CommandAttributeName];
|
|
167
193
|
if (!commandName)
|
|
168
194
|
throw new Error("Command data attribute is not have value.");
|
|
169
195
|
const uiElem = fundUiElementByCommand(commandElem, commandName);
|
|
170
196
|
if (uiElem) {
|
|
171
|
-
const result = uiElem.
|
|
197
|
+
const result = uiElem.__execCommand(commandName, commandElem);
|
|
172
198
|
if (result.status == "success" && result.context.transparent)
|
|
173
199
|
return;
|
|
174
200
|
}
|
|
@@ -180,6 +206,11 @@ const commandClickHandler = (e) => {
|
|
|
180
206
|
};
|
|
181
207
|
window.addEventListener("click", commandClickHandler, false);
|
|
182
208
|
|
|
209
|
+
HTMLElement.prototype.ui = function (factory) {
|
|
210
|
+
factory(this);
|
|
211
|
+
return this;
|
|
212
|
+
};
|
|
213
|
+
|
|
183
214
|
class MiddlewareInvoker {
|
|
184
215
|
middleware;
|
|
185
216
|
__next = null;
|
package/dist/mjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../brandup-ui/dist/mjs/index.js"],"sourcesContent":["const ElemAttributeName = \"uiElement\";\nconst ElemPropertyName = \"brandupUiElement\";\nconst CommandAttributeName = \"command\";\nconst CommandExecutingCssClassName = \"executing\";\nclass UIElement {\n __element = null;\n __events = {};\n __commandHandlers = {};\n // Element members\n get element() { return this.__element; }\n setElement(elem) {\n if (!elem)\n throw \"Not set value elem.\";\n if (this.__element || UIElement.hasElement(elem))\n throw \"UIElement already defined\";\n this.__element = elem;\n this.__element[ElemPropertyName] = this;\n this.__element.dataset[ElemAttributeName] = this.typeName;\n this.defineEvent(\"command\", { cancelable: false, bubbles: true });\n this._onRenderElement(elem);\n }\n // static members\n static hasElement(elem) {\n return !!elem.dataset[ElemAttributeName];\n }\n // HTMLElement event members\n defineEvent(eventName, eventOptions) {\n this.__events[eventName] = eventOptions ? eventOptions : null;\n }\n raiseEvent(eventName, eventArgs) {\n if (!(eventName in this.__events))\n throw new Error(`Not found event \"${eventName}\".`);\n const eventOptions = this.__events[eventName];\n const eventInit = {};\n if (eventOptions) {\n if (eventOptions.bubbles)\n eventInit.bubbles = eventOptions.bubbles;\n if (eventOptions.cancelable)\n eventInit.cancelable = eventOptions.cancelable;\n if (eventOptions.composed)\n eventInit.composed = eventOptions.composed;\n }\n eventInit.detail = eventArgs ? eventArgs : {};\n const event = new CustomEvent(eventName, eventInit);\n return this.dispatchEvent(event);\n }\n addEventListener(type, listener, options) {\n this.__element?.addEventListener(type, listener, options);\n }\n removeEventListener(type, listener, options) {\n this.__element?.removeEventListener(type, listener, options);\n }\n dispatchEvent(event) {\n if (!this.__element)\n throw new Error(\"HTMLElement is not defined.\");\n return this.__element.dispatchEvent(event);\n }\n // Command members\n registerCommand(name, execute, canExecute) {\n name = this.verifyCommandName(name);\n this.__commandHandlers[name] = {\n name: name,\n execute,\n canExecute,\n isExecuting: false\n };\n }\n hasCommand(name) {\n return name.toLowerCase() in this.__commandHandlers;\n }\n execCommand(name, elem) {\n if (!this.__element)\n throw new Error(\"UIElement is not set HTMLElement.\");\n const key = name.toLowerCase();\n const handler = this.__commandHandlers[key];\n if (!handler)\n throw new Error(`Command \"${name}\" is not registered.`);\n const context = {\n target: elem,\n uiElem: this,\n transparent: false\n };\n if (handler.isExecuting)\n return { status: \"already\", context };\n handler.isExecuting = true;\n if (!this._onCanExecCommand(name, elem)) {\n handler.isExecuting = false;\n return { status: \"disallow\", context };\n }\n if (handler.canExecute && !handler.canExecute(context)) {\n handler.isExecuting = false;\n return { status: \"disallow\", context };\n }\n this.raiseEvent(\"command\", {\n name: handler.name,\n uiElem: this,\n elem: this.__element\n });\n let isAsync;\n try {\n const handlerResult = handler.execute(context);\n if (handlerResult && handlerResult instanceof Promise) {\n isAsync = true;\n elem.classList.add(CommandExecutingCssClassName);\n handlerResult\n .finally(() => {\n elem.classList.remove(CommandExecutingCssClassName);\n handler.isExecuting = false;\n });\n }\n }\n finally {\n if (!isAsync)\n handler.isExecuting = false;\n }\n return { status: \"success\", context: context };\n }\n verifyCommandName(name) {\n const key = name.toLowerCase();\n if (key in this.__commandHandlers)\n throw new Error(`Command \"${name}\" already registered.`);\n return key;\n }\n _onRenderElement(_elem) {\n return;\n }\n _onCanExecCommand(_name, _elem) {\n return true;\n }\n destroy() {\n const elem = this.__element;\n if (!elem)\n return;\n this.__element = null;\n delete elem.dataset[ElemAttributeName];\n delete elem[ElemPropertyName];\n }\n}\nconst fundUiElementByCommand = (elem, commandName) => {\n while (elem) {\n if (elem.dataset[ElemAttributeName]) {\n const uiElem = elem[ElemPropertyName];\n if (uiElem.hasCommand(commandName))\n return uiElem;\n }\n if (typeof elem.parentElement === \"undefined\")\n elem = elem.parentNode;\n else if (elem.parentElement)\n elem = elem.parentElement;\n else\n break;\n }\n return null;\n};\nconst commandClickHandler = (e) => {\n let commandElem = e.target;\n while (commandElem) {\n if (commandElem.dataset[CommandAttributeName])\n break;\n if (commandElem === e.currentTarget)\n return;\n commandElem = commandElem.parentElement;\n }\n if (!commandElem)\n return;\n const commandName = commandElem.dataset[CommandAttributeName];\n if (!commandName)\n throw new Error(\"Command data attribute is not have value.\");\n const uiElem = fundUiElementByCommand(commandElem, commandName);\n if (uiElem) {\n const result = uiElem.execCommand(commandName, commandElem);\n if (result.status == \"success\" && result.context.transparent)\n return;\n }\n else\n console.warn(`Not find handler for command \"${commandName}\".`);\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n};\nwindow.addEventListener(\"click\", commandClickHandler, false);\n\nexport { CommandAttributeName, CommandExecutingCssClassName, ElemAttributeName, ElemPropertyName, UIElement };\n//# sourceMappingURL=index.js.map\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../brandup-ui/dist/mjs/index.js"],"sourcesContent":["const constants = {\n ElemAttributeName: \"uiElement\",\n ElemPropertyName: \"uielement\",\n CommandAttributeName: \"command\",\n CommandExecutingCssClassName: \"executing\",\n CommandEventName: \"uicommand\"\n};\n\nclass UIElement {\n __element;\n __events;\n __commands;\n __destroyCallbacks;\n // Element members\n get element() { return this.__element; }\n setElement(elem) {\n if (!elem)\n throw \"Not set value elem.\";\n if (this.__element || UIElement.hasElement(elem))\n throw \"UIElement already defined\";\n this.__element = elem;\n elem[constants.ElemPropertyName] = this;\n elem.dataset[constants.ElemAttributeName] = this.typeName;\n this.defineEvent(constants.CommandEventName, { cancelable: false, bubbles: true });\n this._onRenderElement(elem);\n }\n // static members\n static hasElement(elem) {\n return !!elem.dataset[constants.ElemAttributeName];\n }\n // HTMLElement event members\n defineEvent(eventName, eventOptions) {\n if (!this.__events)\n this.__events = {};\n this.__events[eventName] = eventOptions ? eventOptions : null;\n }\n raiseEvent(eventName, eventArgs) {\n if (!this.__events || !(eventName in this.__events))\n throw new Error(`Not found event \"${eventName}\".`);\n const eventOptions = this.__events[eventName];\n const eventInit = {};\n if (eventOptions) {\n eventInit.bubbles = eventOptions.bubbles;\n eventInit.cancelable = eventOptions.cancelable;\n eventInit.composed = eventOptions.composed;\n }\n eventInit.detail = eventArgs;\n return this.dispatchEvent(new CustomEvent(eventName, eventInit));\n }\n addEventListener(type, listener, options) {\n this.__element?.addEventListener(type, listener, options);\n }\n removeEventListener(type, listener, options) {\n this.__element?.removeEventListener(type, listener, options);\n }\n dispatchEvent(event) {\n if (!this.__element)\n throw new Error(\"HTMLElement is not defined.\");\n return this.__element.dispatchEvent(event);\n }\n // Command members\n registerCommand(name, execute, canExecute) {\n if (!this.__commands)\n this.__commands = {};\n const nornalizedName = name.toLowerCase();\n if (nornalizedName in this.__commands)\n throw new Error(`Command \"${name}\" already registered.`);\n this.__commands[nornalizedName] = {\n name: name,\n execute,\n canExecute\n };\n }\n hasCommand(name) {\n return this.__commands && name.toLowerCase() in this.__commands;\n }\n /** @internal */\n __execCommand(name, target) {\n if (!this.__element || !this.__commands)\n throw new Error(\"UIElement is not set HTMLElement.\");\n const key = name.toLowerCase();\n const command = this.__commands[key];\n if (!command)\n throw new Error(`Command \"${name}\" is not registered.`);\n const context = {\n target,\n uiElem: this\n };\n if (command.isExecuting)\n return { status: \"already\", context };\n command.isExecuting = true;\n if (!this._onCanExecCommand(name, target)) {\n delete command.isExecuting;\n return { status: \"disallow\", context };\n }\n if (command.canExecute && !command.canExecute(context)) {\n delete command.isExecuting;\n return { status: \"disallow\", context };\n }\n this.raiseEvent(constants.CommandEventName, {\n name: command.name,\n uiElem: this,\n elem: this.__element\n });\n let isAsync;\n try {\n const commandResult = command.execute(context);\n if (commandResult && commandResult instanceof Promise) {\n isAsync = true;\n target.classList.add(constants.CommandExecutingCssClassName);\n commandResult\n .finally(() => {\n target.classList.remove(constants.CommandExecutingCssClassName);\n delete command.isExecuting;\n });\n }\n }\n finally {\n if (!isAsync)\n delete command.isExecuting;\n }\n return { status: \"success\", context: context };\n }\n _onRenderElement(_elem) { }\n _onCanExecCommand(_name, _elem) {\n return true;\n }\n onDestroy(callback) {\n if (!this.__element)\n return;\n if (!this.__destroyCallbacks)\n this.__destroyCallbacks = [];\n if (callback instanceof UIElement)\n this.__destroyCallbacks.push(() => callback.destroy());\n else if (callback instanceof Element)\n this.__destroyCallbacks.push(() => callback.remove());\n else\n this.__destroyCallbacks.push(callback);\n }\n toString() {\n return this.typeName;\n }\n destroy() {\n const elem = this.__element;\n if (!elem)\n return;\n delete elem.dataset[constants.ElemAttributeName];\n delete elem[constants.ElemPropertyName];\n delete this.__element;\n delete this.__events;\n delete this.__commands;\n if (this.__destroyCallbacks) {\n this.__destroyCallbacks.map(callback => {\n try {\n callback();\n }\n catch (reason) {\n console.error(`Error in call \"${this.typeName}\" destroy callback.`);\n }\n });\n delete this.__destroyCallbacks;\n }\n }\n}\nconst fundUiElementByCommand = (elem, commandName) => {\n while (elem) {\n if (elem.dataset[constants.ElemAttributeName]) {\n const uiElem = elem[constants.ElemPropertyName];\n if (uiElem.hasCommand(commandName))\n return uiElem;\n }\n if (typeof elem.parentElement === \"undefined\")\n elem = elem.parentNode;\n else if (elem.parentElement)\n elem = elem.parentElement;\n else\n break;\n }\n return null;\n};\nconst commandClickHandler = (e) => {\n let commandElem = e.target;\n while (commandElem) {\n if (commandElem.dataset[constants.CommandAttributeName])\n break;\n if (commandElem === e.currentTarget)\n return;\n commandElem = commandElem.parentElement;\n }\n if (!commandElem)\n return;\n const commandName = commandElem.dataset[constants.CommandAttributeName];\n if (!commandName)\n throw new Error(\"Command data attribute is not have value.\");\n const uiElem = fundUiElementByCommand(commandElem, commandName);\n if (uiElem) {\n const result = uiElem.__execCommand(commandName, commandElem);\n if (result.status == \"success\" && result.context.transparent)\n return;\n }\n else\n console.warn(`Not find handler for command \"${commandName}\".`);\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n};\nwindow.addEventListener(\"click\", commandClickHandler, false);\n\nHTMLElement.prototype.ui = function (factory) {\n factory(this);\n return this;\n};\n\nconst UICONSTANTS = constants;\n\nexport { UICONSTANTS, UIElement };\n//# sourceMappingURL=index.js.map\n"],"names":["constants"],"mappings":"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"}
|
package/package.json
CHANGED