domql 1.5.0 → 1.5.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/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "DOM rendering Javascript framework at early stage.",
4
4
  "private": false,
5
5
  "author": "rackai",
6
- "version": "1.5.0",
6
+ "version": "1.5.3",
7
7
  "repository": "https://github.com/rackai/domql",
8
8
  "publishConfig": {
9
9
  "registry": "https://registry.npmjs.org"
@@ -31,14 +31,14 @@
31
31
  "@babel/preset-env": "^7.16.4",
32
32
  "@emotion/css": "^11.10.0",
33
33
  "@parcel/babel-preset-env": "^2.0.1",
34
- "babel-jest": "^28.1.3",
35
- "esbuild": "^0.14.47",
34
+ "babel-jest": "^29.0.0",
35
+ "esbuild": "^0.15.5",
36
36
  "eslint": "^8.4.0",
37
37
  "eslint-config-standard": "^17.0.0",
38
38
  "eslint-plugin-import": "^2.25.3",
39
39
  "eslint-plugin-jest": "^26.8.2",
40
40
  "eslint-plugin-node": "^11.1.0",
41
- "jest": "^27.4.4",
41
+ "jest": "^29.0.0",
42
42
  "jsdom": "^19.0.0",
43
43
  "nodemon": "^2.0.6",
44
44
  "np": "^7.2.0",
@@ -3,7 +3,7 @@
3
3
  import root from './root'
4
4
  import createNode from './node'
5
5
  import { appendNode, assignNode } from './assign'
6
- import { applyExtendtype } from './extend'
6
+ import { applyExtend } from './extend'
7
7
  import nodes from './nodes'
8
8
  import set from './set'
9
9
  import createState from './state'
@@ -56,9 +56,8 @@ const create = (element, parent, key, options = {}) => {
56
56
  }
57
57
  }
58
58
 
59
- // create PROTOtypal inheritance
60
-
61
- applyExtendtype(element, parent, options)
59
+ // create EXTEND inheritance
60
+ applyExtend(element, parent, options)
62
61
 
63
62
  if (Object.keys(options).length) {
64
63
  registry.defaultOptions = options
@@ -137,12 +136,6 @@ const create = (element, parent, key, options = {}) => {
137
136
  // generate a CLASS name
138
137
  assignClass(element)
139
138
 
140
- // console.group('create')
141
- // console.log(element.path)
142
- // console.log(element)
143
- // console.groupEnd('create')
144
- // if (parent.key === 'footer' && key === '0') debugger
145
-
146
139
  // CREATE a real NODE
147
140
  createNode(element, options)
148
141
 
@@ -8,7 +8,7 @@ const ENV = process.env.NODE_ENV
8
8
  * Checks whether element has `extend` or is a part
9
9
  * of parent's `childExtend` extend
10
10
  */
11
- export const applyExtendtype = (element, parent, options = {}) => {
11
+ export const applyExtend = (element, parent, options = {}) => {
12
12
  if (isFunction(element)) element = exec(element, parent)
13
13
 
14
14
  const { extend } = element
@@ -22,9 +22,9 @@ export default {
22
22
  state,
23
23
 
24
24
  extend: {},
25
+ childExtend: {},
25
26
  props: {},
26
27
  path: {},
27
- childExtend: {},
28
28
  if: {},
29
29
  define: {},
30
30
  transform: {},
@@ -1,6 +1,7 @@
1
1
  'use strict'
2
2
 
3
3
  import create from './create'
4
+ import { isEqualDeep } from '../utils'
4
5
  import { registry } from './mixins'
5
6
 
6
7
  const removeContentElement = (params, element) => {
@@ -11,8 +12,9 @@ const removeContentElement = (params, element) => {
11
12
  }
12
13
 
13
14
  if (element.__cached && element.__cached.content) {
15
+ console.log(element.__cached.content)
14
16
  if (element.__cached.content.tag === 'fragment') element.__cached.content.parent.node.innerHTML = ''
15
- else element.__cached.content.remove()
17
+ else if (element.__cached.content) element.__cached.content?.remove()
16
18
  }
17
19
 
18
20
  delete element.content
@@ -22,6 +24,9 @@ const removeContentElement = (params, element) => {
22
24
  const set = function (params, options) {
23
25
  const element = this
24
26
 
27
+ const isEqual = isEqualDeep(params, element.content)
28
+ if (isEqual && element.content.__cached) return element
29
+
25
30
  removeContentElement(params, element)
26
31
 
27
32
  if (params) {
@@ -38,11 +43,3 @@ const set = function (params, options) {
38
43
 
39
44
  export default set
40
45
 
41
- // if (element.content && (isFunction(element.content) || element.content.node)) {
42
- // // leave(element, () => {
43
- // // console.log('remove', element.content)
44
- // // element.content.remove()
45
- // // element.content.update(params)
46
- // // element.node.removeChild(element.content.node)
47
- // // delete element.content
48
- // }
@@ -45,6 +45,7 @@ export default function (element, parent) {
45
45
  state.__element = element
46
46
  state.parse = parseState
47
47
  state.update = updateState
48
+ state.parent = element.parent.state
48
49
 
49
50
  // run `on.stateCreated`
50
51
  if (element.on && isFunction(element.on.stateCreated)) {
@@ -115,6 +115,26 @@ export const deepClone = (obj, excluding = ['parent', 'node', '__element', '__ro
115
115
  return o
116
116
  }
117
117
 
118
+ /**
119
+ * Overwrites object properties with another
120
+ */
121
+ export const isEqualDeep = (param, element) => {
122
+ if (param === element) return true
123
+ if (!param || !element) return false
124
+ for (const prop in param) {
125
+ const paramProp = param[prop]
126
+ const elementProp = element[prop]
127
+ if (isObjectLike(paramProp)) {
128
+ const isEqual = isEqualDeep(paramProp, elementProp)
129
+ if (!isEqual) return false
130
+ } else {
131
+ const isEqual = paramProp === elementProp
132
+ if (!isEqual) return false
133
+ }
134
+ }
135
+ return true
136
+ }
137
+
118
138
  /**
119
139
  * Overwrites object properties with another
120
140
  */