@domql/element 2.5.141 → 2.5.143

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/create.js CHANGED
@@ -252,6 +252,9 @@ const renderElement = (element, parent, options, attachOptions) => {
252
252
 
253
253
  // run `on.done`
254
254
  triggerEventOn('done', element, options)
255
+
256
+ // run `on.done`
257
+ triggerEventOn('create', element, options)
255
258
  }
256
259
 
257
260
  const checkIfPrimitive = (element) => is(element)('string', 'number')
@@ -362,7 +365,7 @@ const onlyResolveExtends = (element, parent, key, options) => {
362
365
  for (const k in element) {
363
366
  if (
364
367
  isUndefined(element[k]) ||
365
- isMethod(k) ||
368
+ isMethod(k, element) ||
366
369
  isObject(registry[k]) ||
367
370
  isVariant(k)
368
371
  ) continue
@@ -203,6 +203,7 @@ const renderElement = (element, parent, options, attachOptions) => {
203
203
  (0, import_event.triggerEventOn)("renderRouter", element, options);
204
204
  (0, import_event.triggerEventOn)("render", element, options);
205
205
  (0, import_event.triggerEventOn)("done", element, options);
206
+ (0, import_event.triggerEventOn)("create", element, options);
206
207
  };
207
208
  const checkIfPrimitive = (element) => (0, import_utils.is)(element)("string", "number");
208
209
  const applyValueAsText = (element, parent, key) => {
@@ -290,7 +291,7 @@ const onlyResolveExtends = (element, parent, key, options) => {
290
291
  (0, import_iterate.throughInitialDefine)(element);
291
292
  (0, import_iterate.throughInitialExec)(element);
292
293
  for (const k in element) {
293
- if ((0, import_utils.isUndefined)(element[k]) || (0, import_methods.isMethod)(k) || (0, import_utils.isObject)(import_mixins.registry[k]) || (0, import_utils.isVariant)(k))
294
+ if ((0, import_utils.isUndefined)(element[k]) || (0, import_methods.isMethod)(k, element) || (0, import_utils.isObject)(import_mixins.registry[k]) || (0, import_utils.isVariant)(k))
294
295
  continue;
295
296
  const hasDefine = element.define && element.define[k];
296
297
  const contextHasDefine = element.context && element.context.define && element.context.define[k];
@@ -60,11 +60,11 @@ const applyExtend = (element, parent, options = {}) => {
60
60
  stack = extendStack;
61
61
  } else if (childExtendLength) {
62
62
  stack = childExtendStack;
63
- } else if (!options.extend)
63
+ } else if (!context.defaultExtends)
64
64
  return element;
65
- if (options.extend) {
65
+ if (context.defaultExtends) {
66
66
  if (!mainExtend) {
67
- const defaultOptionsExtend = (0, import_utils2.getExtendStack)(options.extend, context);
67
+ const defaultOptionsExtend = (0, import_utils2.getExtendStack)(context.defaultExtends, context);
68
68
  mainExtend = (0, import_utils2.cloneAndMergeArrayExtend)(defaultOptionsExtend);
69
69
  delete mainExtend.extend;
70
70
  }
@@ -33,7 +33,7 @@ const throughInitialExec = (element, exclude = {}) => {
33
33
  if (exclude[param])
34
34
  continue;
35
35
  const prop = element[param];
36
- if ((0, import_utils.isFunction)(prop) && !(0, import_methods.isMethod)(param) && !(0, import_utils.isVariant)(param)) {
36
+ if ((0, import_utils.isFunction)(prop) && !(0, import_methods.isMethod)(param, element) && !(0, import_utils.isVariant)(param)) {
37
37
  ref.__exec[param] = prop;
38
38
  element[param] = prop(element, element.state, element.context);
39
39
  }
@@ -73,7 +73,7 @@ const throughInitialDefine = (element) => {
73
73
  defineObj = { ...defineObj, ...context.define };
74
74
  for (const param in defineObj) {
75
75
  let elementProp = element[param];
76
- if ((0, import_utils.isFunction)(elementProp) && !(0, import_methods.isMethod)(param) && !(0, import_utils.isVariant)(param)) {
76
+ if ((0, import_utils.isFunction)(elementProp) && !(0, import_methods.isMethod)(param, element) && !(0, import_utils.isVariant)(param)) {
77
77
  ref.__exec[param] = elementProp;
78
78
  const execParam2 = elementProp = (0, import_utils.exec)(elementProp, element);
79
79
  if (execParam2) {
@@ -297,6 +297,7 @@ const METHODS = [
297
297
  "nextElement",
298
298
  "previousElement"
299
299
  ];
300
- const isMethod = function(param) {
301
- return METHODS.includes(param);
300
+ const isMethod = function(param, element) {
301
+ var _a, _b;
302
+ return METHODS.includes(param) || ((_b = (_a = element == null ? void 0 : element.context) == null ? void 0 : _a.methods) == null ? void 0 : _b[param]);
302
303
  };
@@ -36,28 +36,30 @@ var import_set = __toESM(require("../set"), 1);
36
36
  var import_update = __toESM(require("../update"), 1);
37
37
  var import__ = require("./");
38
38
  var import_content = require("../mixins/content");
39
- const addMethods = (element, parent) => {
39
+ const addMethods = (element, parent, options) => {
40
40
  const proto = {
41
- set: import_set.default.bind(element),
42
- reset: import_set.reset.bind(element),
43
- update: import_update.default.bind(element),
44
- variables: import__.variables.bind(element),
45
- remove: import__.remove.bind(element),
46
- updateContent: import_content.updateContent.bind(element),
47
- removeContent: import_content.removeContent.bind(element),
48
- setProps: import__.setProps.bind(element),
49
- lookup: import__.lookup.bind(element),
50
- lookdown: import__.lookdown.bind(element),
51
- lookdownAll: import__.lookdownAll.bind(element),
52
- setNodeStyles: import__.setNodeStyles.bind(element),
53
- spotByPath: import__.spotByPath.bind(element),
54
- parse: import__.parse.bind(element),
55
- parseDeep: import__.parseDeep.bind(element),
56
- keys: import__.keys.bind(element),
57
- nextElement: import__.nextElement.bind(element),
58
- previousElement: import__.previousElement.bind(element)
41
+ set: import_set.default,
42
+ reset: import_set.reset,
43
+ update: import_update.default,
44
+ variables: import__.variables,
45
+ remove: import__.remove,
46
+ updateContent: import_content.updateContent,
47
+ removeContent: import_content.removeContent,
48
+ setProps: import__.setProps,
49
+ lookup: import__.lookup,
50
+ lookdown: import__.lookdown,
51
+ lookdownAll: import__.lookdownAll,
52
+ setNodeStyles: import__.setNodeStyles,
53
+ spotByPath: import__.spotByPath,
54
+ parse: import__.parse,
55
+ parseDeep: import__.parseDeep,
56
+ keys: import__.keys,
57
+ nextElement: import__.nextElement,
58
+ previousElement: import__.previousElement
59
59
  };
60
+ if (element.context.methods)
61
+ (0, import_utils.merge)(proto, element.context.methods);
60
62
  if ((0, import_utils.isDevelopment)())
61
- proto.log = import__.log.bind(element);
63
+ proto.log = import__.log;
62
64
  Object.setPrototypeOf(element, proto);
63
65
  };
package/dist/cjs/node.js CHANGED
@@ -73,7 +73,7 @@ const createNode = (element, options) => {
73
73
  const value = element[param];
74
74
  if (!Object.hasOwnProperty.call(element, param))
75
75
  continue;
76
- if ((0, import_utils.isUndefined)(value) || (0, import_methods.isMethod)(param) || (0, import_utils.isVariant)(param) || (0, import_utils.isObject)(import_mixins.registry[param]))
76
+ if ((0, import_utils.isUndefined)(value) || (0, import_methods.isMethod)(param, element) || (0, import_utils.isVariant)(param) || (0, import_utils.isObject)(import_mixins.registry[param]))
77
77
  continue;
78
78
  const isElement = (0, import_applyParam.applyParam)(param, element, options);
79
79
  if (isElement) {
@@ -136,7 +136,7 @@ const update = function(params = {}, opts) {
136
136
  const isInPreventUpdate = (0, import_utils.isArray)(preventUpdate) && preventUpdate.includes(param);
137
137
  const isInPreventDefineUpdate = (0, import_utils.isArray)(preventDefineUpdate) && preventDefineUpdate.includes(param);
138
138
  const hasCollection = element.$collection || element.$stateCollection || element.$propsCollection;
139
- if ((0, import_utils.isUndefined)(prop) || isInPreventUpdate || isInPreventDefineUpdate || preventDefineUpdate === true || preventDefineUpdate === param || preventContentUpdate && param === "content" && !hasCollection || (preventStateUpdate && param) === "state" || (0, import_methods.isMethod)(param) || (0, import_utils.isObject)(import_mixins.registry[param]) || (0, import_utils.isVariant)(param))
139
+ if ((0, import_utils.isUndefined)(prop) || isInPreventUpdate || isInPreventDefineUpdate || preventDefineUpdate === true || preventDefineUpdate === param || preventContentUpdate && param === "content" && !hasCollection || (preventStateUpdate && param) === "state" || (0, import_methods.isMethod)(param, element) || (0, import_utils.isObject)(import_mixins.registry[param]) || (0, import_utils.isVariant)(param))
140
140
  continue;
141
141
  if (preventStateUpdate === "once")
142
142
  options.preventStateUpdate = false;
@@ -147,6 +147,9 @@ const update = function(params = {}, opts) {
147
147
  if (!canUpdate)
148
148
  continue;
149
149
  const lazyLoad = element.props.lazyLoad || options.lazyLoad;
150
+ if (options.onEachUpdate) {
151
+ options.onEachUpdate(param, element, element.state, element.context);
152
+ }
150
153
  const childUpdateCall = () => update.call(prop, params[prop], {
151
154
  ...options,
152
155
  currentSnapshot: snapshotOnCallee,
@@ -174,11 +177,11 @@ const captureSnapshot = (element, options) => {
174
177
  return [snapshotOnCallee, calleeElement];
175
178
  };
176
179
  const checkIfOnUpdate = (element, parent, options) => {
177
- var _a, _b;
178
- if (!(0, import_utils.isFunction)(element.if) && !(0, import_utils.isFunction)(element.props.if) || !parent)
180
+ var _a, _b, _c;
181
+ if (!(0, import_utils.isFunction)(element.if) && !(0, import_utils.isFunction)((_a = element.props) == null ? void 0 : _a.if) || !parent)
179
182
  return;
180
183
  const ref = element.__ref;
181
- const ifPassed = (element.if || ((_a = element.props) == null ? void 0 : _a.if))(element, element.state, element.context, options);
184
+ const ifPassed = (element.if || ((_b = element.props) == null ? void 0 : _b.if))(element, element.state, element.context, options);
182
185
  const itWasFalse = ref.__if !== true;
183
186
  if (ifPassed) {
184
187
  ref.__if = true;
@@ -201,7 +204,7 @@ const checkIfOnUpdate = (element, parent, options) => {
201
204
  const contentKey = ref.contentElementKey;
202
205
  if (element.$collection || element.$stateCollection || element.$propsCollection) {
203
206
  element.removeContent();
204
- } else if ((_b = element[contentKey]) == null ? void 0 : _b.parseDeep)
207
+ } else if ((_c = element[contentKey]) == null ? void 0 : _c.parseDeep)
205
208
  element[contentKey] = element[contentKey].parseDeep();
206
209
  const previousElement = element.previousElement();
207
210
  const previousNode = previousElement == null ? void 0 : previousElement.node;
@@ -30,6 +30,7 @@ const replaceOnKeys = (key) => key.replace(/on\w+/g, (match) => match.substring(
30
30
  const createValidDomqlObjectFromSugar = (el, parent, key, options) => {
31
31
  const newElem = {
32
32
  props: {},
33
+ define: {},
33
34
  on: {}
34
35
  };
35
36
  for (const k in el) {
@@ -39,6 +40,10 @@ const createValidDomqlObjectFromSugar = (el, parent, key, options) => {
39
40
  const onKey = replaceOnKeys(prop);
40
41
  newElem.on[onKey] = prop;
41
42
  }
43
+ const isDefine = k.startsWith("is") || k.startsWith("has") || k.startsWith("use");
44
+ if (isDefine) {
45
+ newElem.define[k] = prop;
46
+ }
42
47
  const isComponent = (0, import_utils.checkIfKeyIsComponent)(k);
43
48
  const isRegistry = import_mixins.registry[k];
44
49
  if (isComponent || isRegistry) {
@@ -74,7 +74,7 @@ const onlyResolveExtends = (element, parent, key, options) => {
74
74
  (0, import_iterate.throughInitialExec)(element);
75
75
  for (const param in element) {
76
76
  const prop = element[param];
77
- if ((0, import_utils.isUndefined)(prop) || (0, import_methods.isMethod)(param) || (0, import_utils.isObject)(import_mixins.registry[param]) || (0, import__2.isVariant)(param))
77
+ if ((0, import_utils.isUndefined)(prop) || (0, import_methods.isMethod)(param, element) || (0, import_utils.isObject)(import_mixins.registry[param]) || (0, import__2.isVariant)(param))
78
78
  continue;
79
79
  const hasDefine = element.define && element.define[param];
80
80
  const contextHasDefine = element.context && element.context.define && element.context.define[param];
package/extend.js CHANGED
@@ -63,22 +63,20 @@ export const applyExtend = (element, parent, options = {}) => {
63
63
  stack = extendStack
64
64
  } else if (childExtendLength) {
65
65
  stack = childExtendStack
66
- } else if (!options.extend) return element
66
+ } else if (!context.defaultExtends) return element
67
67
 
68
- if (options.extend) {
68
+ if (context.defaultExtends) {
69
69
  if (!mainExtend) {
70
- const defaultOptionsExtend = getExtendStack(options.extend, context)
70
+ const defaultOptionsExtend = getExtendStack(context.defaultExtends, context)
71
71
  mainExtend = cloneAndMergeArrayExtend(defaultOptionsExtend)
72
72
  delete mainExtend.extend
73
73
  }
74
74
  stack = [].concat(stack, mainExtend)
75
75
  }
76
76
 
77
- // check if array contains string extends
78
77
  if (__ref) __ref.__extend = stack
79
78
  let mergedExtend = cloneAndMergeArrayExtend(stack)
80
79
 
81
- // apply `component:` property
82
80
  const COMPONENTS = (context && context.components) || options.components
83
81
  const component = exec(element.component || mergedExtend.component, element)
84
82
  if (component && COMPONENTS && COMPONENTS[component]) {
package/iterate.js CHANGED
@@ -19,7 +19,7 @@ export const throughInitialExec = (element, exclude = {}) => {
19
19
  for (const param in element) {
20
20
  if (exclude[param]) continue
21
21
  const prop = element[param]
22
- if (isFunction(prop) && !isMethod(param) && !isVariant(param)) {
22
+ if (isFunction(prop) && !isMethod(param, element) && !isVariant(param)) {
23
23
  ref.__exec[param] = prop
24
24
  element[param] = prop(element, element.state, element.context)
25
25
  // if (isComponent)
@@ -69,7 +69,7 @@ export const throughInitialDefine = (element) => {
69
69
  for (const param in defineObj) {
70
70
  let elementProp = element[param]
71
71
 
72
- if (isFunction(elementProp) && !isMethod(param) && !isVariant(param)) {
72
+ if (isFunction(elementProp) && !isMethod(param, element) && !isVariant(param)) {
73
73
  ref.__exec[param] = elementProp
74
74
  const execParam = elementProp = exec(elementProp, element)
75
75
 
package/methods/index.js CHANGED
@@ -267,6 +267,6 @@ export const METHODS = [
267
267
  'previousElement'
268
268
  ]
269
269
 
270
- export const isMethod = function (param) {
271
- return METHODS.includes(param)
270
+ export const isMethod = function (param, element) {
271
+ return METHODS.includes(param) || element?.context?.methods?.[param]
272
272
  }
package/methods/set.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict'
2
2
 
3
- import { isDevelopment } from '@domql/utils'
3
+ import { isDevelopment, merge } from '@domql/utils'
4
4
 
5
5
  import set, { reset } from '../set'
6
6
  import update from '../update'
@@ -24,27 +24,28 @@ import {
24
24
 
25
25
  import { removeContent, updateContent } from '../mixins/content'
26
26
 
27
- export const addMethods = (element, parent) => {
27
+ export const addMethods = (element, parent, options) => {
28
28
  const proto = {
29
- set: set.bind(element),
30
- reset: reset.bind(element),
31
- update: update.bind(element),
32
- variables: variables.bind(element),
33
- remove: remove.bind(element),
34
- updateContent: updateContent.bind(element),
35
- removeContent: removeContent.bind(element),
36
- setProps: setProps.bind(element),
37
- lookup: lookup.bind(element),
38
- lookdown: lookdown.bind(element),
39
- lookdownAll: lookdownAll.bind(element),
40
- setNodeStyles: setNodeStyles.bind(element),
41
- spotByPath: spotByPath.bind(element),
42
- parse: parse.bind(element),
43
- parseDeep: parseDeep.bind(element),
44
- keys: keys.bind(element),
45
- nextElement: nextElement.bind(element),
46
- previousElement: previousElement.bind(element)
29
+ set,
30
+ reset,
31
+ update,
32
+ variables,
33
+ remove,
34
+ updateContent,
35
+ removeContent,
36
+ setProps,
37
+ lookup,
38
+ lookdown,
39
+ lookdownAll,
40
+ setNodeStyles,
41
+ spotByPath,
42
+ parse,
43
+ parseDeep,
44
+ keys,
45
+ nextElement,
46
+ previousElement
47
47
  }
48
- if (isDevelopment()) proto.log = log.bind(element)
48
+ if (element.context.methods) merge(proto, element.context.methods)
49
+ if (isDevelopment()) proto.log = log
49
50
  Object.setPrototypeOf(element, proto)
50
51
  }
package/node.js CHANGED
@@ -68,7 +68,7 @@ export const createNode = (element, options) => {
68
68
 
69
69
  if (
70
70
  isUndefined(value) ||
71
- isMethod(param) ||
71
+ isMethod(param, element) ||
72
72
  isVariant(param) ||
73
73
  isObject(registry[param])
74
74
  ) continue
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@domql/element",
3
- "version": "2.5.141",
3
+ "version": "2.5.143",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "module": "index.js",
@@ -26,12 +26,12 @@
26
26
  "prepublish": "rimraf -I dist && yarn build && yarn copy:package:cjs"
27
27
  },
28
28
  "dependencies": {
29
- "@domql/event": "^2.5.141",
30
- "@domql/render": "^2.5.141",
31
- "@domql/state": "^2.5.141",
32
- "@domql/utils": "^2.5.141"
29
+ "@domql/event": "^2.5.143",
30
+ "@domql/render": "^2.5.143",
31
+ "@domql/state": "^2.5.143",
32
+ "@domql/utils": "^2.5.143"
33
33
  },
34
- "gitHead": "c77d004ddb710821445be4dce056410b004f13ea",
34
+ "gitHead": "46440d5034244c18657bf272df1bdc3e8ff666c5",
35
35
  "devDependencies": {
36
36
  "@babel/core": "^7.12.0"
37
37
  }
package/update.js CHANGED
@@ -133,7 +133,7 @@ const update = function (params = {}, opts) {
133
133
  preventDefineUpdate === param ||
134
134
  (preventContentUpdate && param === 'content' && !hasCollection) ||
135
135
  (preventStateUpdate && param) === 'state' ||
136
- isMethod(param) || isObject(registry[param]) || isVariant(param)
136
+ isMethod(param, element) || isObject(registry[param]) || isVariant(param)
137
137
  ) continue
138
138
 
139
139
  if (preventStateUpdate === 'once') options.preventStateUpdate = false
@@ -146,6 +146,10 @@ const update = function (params = {}, opts) {
146
146
 
147
147
  const lazyLoad = element.props.lazyLoad || options.lazyLoad
148
148
 
149
+ if (options.onEachUpdate) {
150
+ options.onEachUpdate(param, element, element.state, element.context)
151
+ }
152
+
149
153
  const childUpdateCall = () => update.call(prop, params[prop], {
150
154
  ...options,
151
155
  currentSnapshot: snapshotOnCallee,
@@ -180,7 +184,7 @@ const captureSnapshot = (element, options) => {
180
184
  }
181
185
 
182
186
  const checkIfOnUpdate = (element, parent, options) => {
183
- if ((!isFunction(element.if) && !isFunction(element.props.if)) || !parent) return
187
+ if ((!isFunction(element.if) && !isFunction(element.props?.if)) || !parent) return
184
188
 
185
189
  const ref = element.__ref
186
190
  const ifPassed = (element.if || element.props?.if)(element, element.state, element.context, options)
@@ -18,6 +18,7 @@ const replaceOnKeys = key => key.replace(/on\w+/g, match => match.substring(2))
18
18
  export const createValidDomqlObjectFromSugar = (el, parent, key, options) => {
19
19
  const newElem = {
20
20
  props: {},
21
+ define: {},
21
22
  on: {}
22
23
  }
23
24
  for (const k in el) {
@@ -29,6 +30,12 @@ export const createValidDomqlObjectFromSugar = (el, parent, key, options) => {
29
30
  // } else if (!isMethod && checkIfKeyIsProperty(k)) {
30
31
  }
31
32
 
33
+ const isDefine = k.startsWith('is') || k.startsWith('has') || k.startsWith('use')
34
+ if (isDefine) {
35
+ newElem.define[k] = prop
36
+ // } else if (!isMethod && checkIfKeyIsProperty(k)) {
37
+ }
38
+
32
39
  const isComponent = checkIfKeyIsComponent(k)
33
40
  const isRegistry = registry[k]
34
41
  if (isComponent || isRegistry) {
@@ -80,7 +80,7 @@ export const onlyResolveExtends = (element, parent, key, options) => {
80
80
  const prop = element[param]
81
81
  if (
82
82
  isUndefined(prop) ||
83
- isMethod(param) ||
83
+ isMethod(param, element) ||
84
84
  isObject(registry[param]) ||
85
85
  isVariant(param)
86
86
  ) continue