native-document 1.0.81 → 1.0.83

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.
@@ -1,77 +1,81 @@
1
1
  import DebugManager from "./debug-manager";
2
2
 
3
- const PluginsManager = (function() {
3
+ let PluginsManager = null;
4
4
 
5
- const $plugins = new Map();
6
- const $pluginByEvents = new Map();
5
+ if(process.env.NODE_ENV === 'development') {
6
+ PluginsManager = (function() {
7
7
 
8
- return {
9
- list() {
10
- return $pluginByEvents;
11
- },
12
- add(plugin, name){
13
- if (!plugin || typeof plugin !== 'object') {
14
- throw new Error(`Plugin ${name} must be an object`);
15
- }
16
- name = name || plugin.name;
17
- if (!name || typeof name !== 'string') {
18
- throw new Error(`Please, provide a valid plugin name`);
19
- }
20
- if($plugins.has(name)) {
21
- return;
22
- }
8
+ const $plugins = new Map();
9
+ const $pluginByEvents = new Map();
23
10
 
24
- plugin.$name = name;
25
- $plugins.set(name ,plugin);
26
- if(typeof plugin?.init === 'function') {
27
- plugin.init();
28
- }
29
- for(const methodName in plugin) {
30
- if(/^on[A-Z]/.test(methodName)) {
31
- const eventName = methodName.replace(/^on/, '');
32
- if(!$pluginByEvents.has(eventName)) {
33
- $pluginByEvents.set(eventName, new Set());
11
+ return {
12
+ list() {
13
+ return $pluginByEvents;
14
+ },
15
+ add(plugin, name){
16
+ if (!plugin || typeof plugin !== 'object') {
17
+ throw new Error(`Plugin ${name} must be an object`);
18
+ }
19
+ name = name || plugin.name;
20
+ if (!name || typeof name !== 'string') {
21
+ throw new Error(`Please, provide a valid plugin name`);
22
+ }
23
+ if($plugins.has(name)) {
24
+ return;
25
+ }
26
+
27
+ plugin.$name = name;
28
+ $plugins.set(name ,plugin);
29
+ if(typeof plugin?.init === 'function') {
30
+ plugin.init();
31
+ }
32
+ for(const methodName in plugin) {
33
+ if(/^on[A-Z]/.test(methodName)) {
34
+ const eventName = methodName.replace(/^on/, '');
35
+ if(!$pluginByEvents.has(eventName)) {
36
+ $pluginByEvents.set(eventName, new Set());
37
+ }
38
+ $pluginByEvents.get(eventName).add(plugin);
34
39
  }
35
- $pluginByEvents.get(eventName).add(plugin);
36
40
  }
37
- }
38
- },
39
- remove(pluginName){
40
- if(!$plugins.has(pluginName)) {
41
- return;
42
- }
43
- const plugin = $plugins.get(pluginName);
44
- if(typeof plugin.cleanup === 'function') {
45
- plugin.cleanup();
46
- }
47
- for(const [name, sets] of $pluginByEvents.entries() ) {
48
- if(sets.has(plugin)) {
49
- sets.delete(plugin);
41
+ },
42
+ remove(pluginName){
43
+ if(!$plugins.has(pluginName)) {
44
+ return;
50
45
  }
51
- if(sets.size === 0) {
52
- $pluginByEvents.delete(name);
46
+ const plugin = $plugins.get(pluginName);
47
+ if(typeof plugin.cleanup === 'function') {
48
+ plugin.cleanup();
53
49
  }
54
- }
55
- $plugins.delete(pluginName);
56
- },
57
- emit(eventName, ...data) {
58
- if(!$pluginByEvents.has(eventName)) {
59
- return;
60
- }
61
- const plugins = $pluginByEvents.get(eventName);
50
+ for(const [name, sets] of $pluginByEvents.entries() ) {
51
+ if(sets.has(plugin)) {
52
+ sets.delete(plugin);
53
+ }
54
+ if(sets.size === 0) {
55
+ $pluginByEvents.delete(name);
56
+ }
57
+ }
58
+ $plugins.delete(pluginName);
59
+ },
60
+ emit(eventName, ...data) {
61
+ if(!$pluginByEvents.has(eventName)) {
62
+ return;
63
+ }
64
+ const plugins = $pluginByEvents.get(eventName);
62
65
 
63
- for(const plugin of plugins) {
64
- const callback = plugin['on'+eventName];
65
- if(typeof callback === 'function') {
66
- try{
67
- callback.call(plugin, ...data);
68
- } catch (error) {
69
- DebugManager.error('Plugin Manager', `Error in plugin ${plugin.$name} for event ${eventName}`, error);
66
+ for(const plugin of plugins) {
67
+ const callback = plugin['on'+eventName];
68
+ if(typeof callback === 'function') {
69
+ try{
70
+ callback.call(plugin, ...data);
71
+ } catch (error) {
72
+ DebugManager.error('Plugin Manager', `Error in plugin ${plugin.$name} for event ${eventName}`, error);
73
+ }
70
74
  }
71
75
  }
72
76
  }
73
- }
74
- };
75
- }());
77
+ };
78
+ }());
79
+ }
76
80
 
77
81
  export default PluginsManager;
@@ -15,10 +15,10 @@ const COMMON_NODE_TYPES = {
15
15
 
16
16
  const Validator = {
17
17
  isObservable(value) {
18
- return value?.__$isObservable || value instanceof ObservableItem || value instanceof ObservableChecker;
18
+ return value?.__$isObservable;
19
19
  },
20
20
  isTemplateBinding(value) {
21
- return value?.__$isTemplateBinding || value instanceof TemplateBinding;
21
+ return value?.__$isTemplateBinding;
22
22
  },
23
23
  isObservableWhenResult(value) {
24
24
  return value && (value.__$isObservableWhen || (typeof value === 'object' && '$target' in value && '$observer' in value));
@@ -59,8 +59,9 @@ export const ElementCreator = {
59
59
  */
60
60
  createElement(name) {
61
61
  if(name) {
62
- if($nodeCache.has(name)) {
63
- return $nodeCache.get(name).cloneNode();
62
+ const cacheNode = $nodeCache.get(name);
63
+ if(cacheNode) {
64
+ return cacheNode.cloneNode();
64
65
  }
65
66
  const node = document.createElement(name);
66
67
  $nodeCache.set(name, node);
@@ -75,12 +76,16 @@ export const ElementCreator = {
75
76
  */
76
77
  processChildren(children, parent) {
77
78
  if(children === null) return;
78
- PluginsManager.emit('BeforeProcessChildren', parent);
79
+ if(process.env.NODE_ENV === 'development') {
80
+ PluginsManager.emit('BeforeProcessChildren', parent);
81
+ }
79
82
  let child = this.getChild(children);
80
83
  if(child) {
81
84
  parent.appendChild(child);
82
85
  }
83
- PluginsManager.emit('AfterProcessChildren', parent);
86
+ if(process.env.NODE_ENV === 'development') {
87
+ PluginsManager.emit('AfterProcessChildren', parent);
88
+ }
84
89
  },
85
90
  getChild(child) {
86
91
  if(child == null) {
@@ -103,20 +108,8 @@ export const ElementCreator = {
103
108
  * @param {Object} attributes
104
109
  */
105
110
  processAttributes(element, attributes) {
106
- if(Validator.isFragment(element)) return;
107
111
  if (attributes) {
108
112
  AttributesWrapper(element, attributes);
109
113
  }
110
- },
111
- /**
112
- *
113
- * @param {HTMLElement} element
114
- * @param {Object} attributes
115
- * @param {?Function} customWrapper
116
- * @returns {HTMLElement|DocumentFragment}
117
- */
118
- setup(element, attributes, customWrapper) {
119
- PluginsManager.emit('Setup', element, attributes, customWrapper);
120
- return element;
121
114
  }
122
115
  };
@@ -20,14 +20,9 @@ function createHtmlElement($tagName, customWrapper, _attributes, _children = nul
20
20
  let element = ElementCreator.createElement($tagName);
21
21
  let finalElement = (customWrapper && typeof customWrapper === 'function') ? customWrapper(element) : element;
22
22
 
23
- if(attributes) {
24
- ElementCreator.processAttributes(finalElement, attributes);
25
- }
26
- if(children) {
27
- ElementCreator.processChildren(children, finalElement);
28
- }
29
-
30
- return ElementCreator.setup(finalElement, attributes, customWrapper);
23
+ ElementCreator.processAttributes(finalElement, attributes);
24
+ ElementCreator.processChildren(children, finalElement);
25
+ return finalElement;
31
26
  }
32
27
 
33
28
  /**
@@ -6,7 +6,9 @@ import DebugManager from "../utils/debug-manager.js";
6
6
  export function NDElement(element) {
7
7
  this.$element = element;
8
8
  this.$observer = null;
9
- PluginsManager.emit('NDElementCreated', element, this);
9
+ if(process.env.NODE_ENV === 'development') {
10
+ PluginsManager.emit('NDElementCreated', element, this);
11
+ }
10
12
  }
11
13
 
12
14
  NDElement.prototype.__$isNDElement = true;
@@ -175,8 +177,9 @@ NDElement.extend = function(methods) {
175
177
 
176
178
  NDElement.prototype[name] = method;
177
179
  }
178
-
179
- PluginsManager.emit('NDElementExtended', methods);
180
+ if(process.env.NODE_ENV === 'development') {
181
+ PluginsManager.emit('NDElementExtended', methods);
182
+ }
180
183
 
181
184
  return NDElement;
182
185
  };
@@ -49,7 +49,9 @@ Array.prototype.toNdElement = function () {
49
49
 
50
50
  Function.prototype.toNdElement = function () {
51
51
  const child = this;
52
- PluginsManager.emit('BeforeProcessComponent', child);
52
+ if(process.env.NODE_ENV === 'development') {
53
+ PluginsManager.emit('BeforeProcessComponent', child);
54
+ }
53
55
  return ElementCreator.getChild(child());
54
56
  };
55
57