@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 CHANGED
@@ -1,13 +1,18 @@
1
1
  'use strict';
2
2
 
3
- const ElemAttributeName = "uiElement";
4
- const ElemPropertyName = "brandupUiElement";
5
- const CommandAttributeName = "command";
6
- const CommandExecutingCssClassName = "executing";
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 = null;
9
- __events = {};
10
- __commandHandlers = {};
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
- this.__element[ElemPropertyName] = this;
20
- this.__element.dataset[ElemAttributeName] = this.typeName;
21
- this.defineEvent("command", { cancelable: false, bubbles: true });
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
- if (eventOptions.bubbles)
39
- eventInit.bubbles = eventOptions.bubbles;
40
- if (eventOptions.cancelable)
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 ? eventArgs : {};
46
- const event = new CustomEvent(eventName, eventInit);
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
- name = this.verifyCommandName(name);
63
- this.__commandHandlers[name] = {
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.__commandHandlers;
77
+ return this.__commands && name.toLowerCase() in this.__commands;
72
78
  }
73
- execCommand(name, elem) {
74
- if (!this.__element)
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 handler = this.__commandHandlers[key];
78
- if (!handler)
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: elem,
82
- uiElem: this,
83
- transparent: false
88
+ target,
89
+ uiElem: this
84
90
  };
85
- if (handler.isExecuting)
91
+ if (command.isExecuting)
86
92
  return { status: "already", context };
87
- handler.isExecuting = true;
88
- if (!this._onCanExecCommand(name, elem)) {
89
- handler.isExecuting = false;
93
+ command.isExecuting = true;
94
+ if (!this._onCanExecCommand(name, target)) {
95
+ delete command.isExecuting;
90
96
  return { status: "disallow", context };
91
97
  }
92
- if (handler.canExecute && !handler.canExecute(context)) {
93
- handler.isExecuting = false;
98
+ if (command.canExecute && !command.canExecute(context)) {
99
+ delete command.isExecuting;
94
100
  return { status: "disallow", context };
95
101
  }
96
- this.raiseEvent("command", {
97
- name: handler.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 handlerResult = handler.execute(context);
104
- if (handlerResult && handlerResult instanceof Promise) {
109
+ const commandResult = command.execute(context);
110
+ if (commandResult && commandResult instanceof Promise) {
105
111
  isAsync = true;
106
- elem.classList.add(CommandExecutingCssClassName);
107
- handlerResult
112
+ target.classList.add(constants$1.CommandExecutingCssClassName);
113
+ commandResult
108
114
  .finally(() => {
109
- elem.classList.remove(CommandExecutingCssClassName);
110
- handler.isExecuting = false;
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
- handler.isExecuting = false;
122
+ delete command.isExecuting;
117
123
  }
118
124
  return { status: "success", context: context };
119
125
  }
120
- verifyCommandName(name) {
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
- this.__element = null;
137
- delete elem.dataset[ElemAttributeName];
138
- delete elem[ElemPropertyName];
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.execCommand(commandName, commandElem);
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;
@@ -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 ElemAttributeName = "uiElement";
2
- const ElemPropertyName = "brandupUiElement";
3
- const CommandAttributeName = "command";
4
- const CommandExecutingCssClassName = "executing";
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 = null;
7
- __events = {};
8
- __commandHandlers = {};
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
- this.__element[ElemPropertyName] = this;
18
- this.__element.dataset[ElemAttributeName] = this.typeName;
19
- this.defineEvent("command", { cancelable: false, bubbles: true });
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
- if (eventOptions.bubbles)
37
- eventInit.bubbles = eventOptions.bubbles;
38
- if (eventOptions.cancelable)
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 ? eventArgs : {};
44
- const event = new CustomEvent(eventName, eventInit);
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
- name = this.verifyCommandName(name);
61
- this.__commandHandlers[name] = {
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.__commandHandlers;
75
+ return this.__commands && name.toLowerCase() in this.__commands;
70
76
  }
71
- execCommand(name, elem) {
72
- if (!this.__element)
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 handler = this.__commandHandlers[key];
76
- if (!handler)
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: elem,
80
- uiElem: this,
81
- transparent: false
86
+ target,
87
+ uiElem: this
82
88
  };
83
- if (handler.isExecuting)
89
+ if (command.isExecuting)
84
90
  return { status: "already", context };
85
- handler.isExecuting = true;
86
- if (!this._onCanExecCommand(name, elem)) {
87
- handler.isExecuting = false;
91
+ command.isExecuting = true;
92
+ if (!this._onCanExecCommand(name, target)) {
93
+ delete command.isExecuting;
88
94
  return { status: "disallow", context };
89
95
  }
90
- if (handler.canExecute && !handler.canExecute(context)) {
91
- handler.isExecuting = false;
96
+ if (command.canExecute && !command.canExecute(context)) {
97
+ delete command.isExecuting;
92
98
  return { status: "disallow", context };
93
99
  }
94
- this.raiseEvent("command", {
95
- name: handler.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 handlerResult = handler.execute(context);
102
- if (handlerResult && handlerResult instanceof Promise) {
107
+ const commandResult = command.execute(context);
108
+ if (commandResult && commandResult instanceof Promise) {
103
109
  isAsync = true;
104
- elem.classList.add(CommandExecutingCssClassName);
105
- handlerResult
110
+ target.classList.add(constants$1.CommandExecutingCssClassName);
111
+ commandResult
106
112
  .finally(() => {
107
- elem.classList.remove(CommandExecutingCssClassName);
108
- handler.isExecuting = false;
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
- handler.isExecuting = false;
120
+ delete command.isExecuting;
115
121
  }
116
122
  return { status: "success", context: context };
117
123
  }
118
- verifyCommandName(name) {
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
- this.__element = null;
135
- delete elem.dataset[ElemAttributeName];
136
- delete elem[ElemPropertyName];
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.execCommand(commandName, commandElem);
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;
@@ -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":"AAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC;AACtC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAC5C,MAAM,oBAAoB,GAAG,SAAS,CAAC;AACvC,MAAM,4BAA4B,GAAG,WAAW,CAAC;AACjD,MAAM,SAAS,CAAC;AAChB,IAAI,SAAS,GAAG,IAAI,CAAC;AACrB,IAAI,QAAQ,GAAG,EAAE,CAAC;AAClB,IAAI,iBAAiB,GAAG,EAAE,CAAC;AAC3B;AACA,IAAI,IAAI,OAAO,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAC5C,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,IAAI,CAAC,IAAI;AACjB,YAAY,MAAM,qBAAqB,CAAC;AACxC,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;AACxD,YAAY,MAAM,2BAA2B,CAAC;AAC9C,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC9B,QAAQ,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;AAChD,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AAClE,QAAQ,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1E,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpC,KAAK;AACL;AACA,IAAI,OAAO,UAAU,CAAC,IAAI,EAAE;AAC5B,QAAQ,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,WAAW,CAAC,SAAS,EAAE,YAAY,EAAE;AACzC,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC;AACtE,KAAK;AACL,IAAI,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE;AACrC,QAAQ,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC;AACzC,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACtD,QAAQ,MAAM,SAAS,GAAG,EAAE,CAAC;AAC7B,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,IAAI,YAAY,CAAC,OAAO;AACpC,gBAAgB,SAAS,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;AACzD,YAAY,IAAI,YAAY,CAAC,UAAU;AACvC,gBAAgB,SAAS,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;AAC/D,YAAY,IAAI,YAAY,CAAC,QAAQ;AACrC,gBAAgB,SAAS,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;AAC3D,SAAS;AACT,QAAQ,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,EAAE,CAAC;AACtD,QAAQ,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC5D,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC9C,QAAQ,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;AACjD,QAAQ,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrE,KAAK;AACL,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS;AAC3B,YAAY,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAC3D,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACnD,KAAK;AACL;AACA,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;AAC/C,QAAQ,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG;AACvC,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,OAAO;AACnB,YAAY,UAAU;AACtB,YAAY,WAAW,EAAE,KAAK;AAC9B,SAAS,CAAC;AACV,KAAK;AACL,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC;AAC5D,KAAK;AACL,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS;AAC3B,YAAY,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACjE,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACvC,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AACpD,QAAQ,IAAI,CAAC,OAAO;AACpB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACpE,QAAQ,MAAM,OAAO,GAAG;AACxB,YAAY,MAAM,EAAE,IAAI;AACxB,YAAY,MAAM,EAAE,IAAI;AACxB,YAAY,WAAW,EAAE,KAAK;AAC9B,SAAS,CAAC;AACV,QAAQ,IAAI,OAAO,CAAC,WAAW;AAC/B,YAAY,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAClD,QAAQ,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;AACnC,QAAQ,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;AACjD,YAAY,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;AACxC,YAAY,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACnD,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AAChE,YAAY,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;AACxC,YAAY,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACnD,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AACnC,YAAY,IAAI,EAAE,OAAO,CAAC,IAAI;AAC9B,YAAY,MAAM,EAAE,IAAI;AACxB,YAAY,IAAI,EAAE,IAAI,CAAC,SAAS;AAChC,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,OAAO,CAAC;AACpB,QAAQ,IAAI;AACZ,YAAY,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3D,YAAY,IAAI,aAAa,IAAI,aAAa,YAAY,OAAO,EAAE;AACnE,gBAAgB,OAAO,GAAG,IAAI,CAAC;AAC/B,gBAAgB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AACjE,gBAAgB,aAAa;AAC7B,qBAAqB,OAAO,CAAC,MAAM;AACnC,oBAAoB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;AACxE,oBAAoB,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;AAChD,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,SAAS;AACT,gBAAgB;AAChB,YAAY,IAAI,CAAC,OAAO;AACxB,gBAAgB,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;AAC5C,SAAS;AACT,QAAQ,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACvD,KAAK;AACL,IAAI,iBAAiB,CAAC,IAAI,EAAE;AAC5B,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACvC,QAAQ,IAAI,GAAG,IAAI,IAAI,CAAC,iBAAiB;AACzC,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;AACrE,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;AACpC,QAAQ,IAAI,CAAC,IAAI;AACjB,YAAY,OAAO;AACnB,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAC/C,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACtC,KAAK;AACL,CAAC;AACD,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE,WAAW,KAAK;AACtD,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;AAC7C,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAClD,YAAY,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;AAC9C,gBAAgB,OAAO,MAAM,CAAC;AAC9B,SAAS;AACT,QAAQ,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,WAAW;AACrD,YAAY,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;AACnC,aAAa,IAAI,IAAI,CAAC,aAAa;AACnC,YAAY,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;AACtC;AACA,YAAY,MAAM;AAClB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AACF,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK;AACnC,IAAI,IAAI,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;AAC/B,IAAI,OAAO,WAAW,EAAE;AACxB,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,oBAAoB,CAAC;AACrD,YAAY,MAAM;AAClB,QAAQ,IAAI,WAAW,KAAK,CAAC,CAAC,aAAa;AAC3C,YAAY,OAAO;AACnB,QAAQ,WAAW,GAAG,WAAW,CAAC,aAAa,CAAC;AAChD,KAAK;AACL,IAAI,IAAI,CAAC,WAAW;AACpB,QAAQ,OAAO;AACf,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAClE,IAAI,IAAI,CAAC,WAAW;AACpB,QAAQ,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AACrE,IAAI,MAAM,MAAM,GAAG,sBAAsB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACpE,IAAI,IAAI,MAAM,EAAE;AAChB,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACpE,QAAQ,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW;AACpE,YAAY,OAAO;AACnB,KAAK;AACL;AACA,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,8BAA8B,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AACvE,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,IAAI,CAAC,CAAC,wBAAwB,EAAE,CAAC;AACjC,CAAC,CAAC;AACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
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
@@ -24,9 +24,9 @@
24
24
  "module": "dist/mjs/index.js",
25
25
  "types": "dist/types.d.ts",
26
26
  "license": "Apache-2.0",
27
- "version": "1.0.2",
27
+ "version": "1.0.3",
28
28
  "dependencies": {
29
- "@brandup/ui": "^1.0.2"
29
+ "@brandup/ui": "^1.0.3"
30
30
  },
31
31
  "files": [
32
32
  "dist",