@domql/element
Advanced tools
Comparing version 2.5.75 to 2.5.77
@@ -108,8 +108,12 @@ "use strict"; | ||
return; | ||
let val = element[v]; | ||
const val = element[v]; | ||
if (v === "state") { | ||
if (element.__ref && element.__ref.__hasRootState) | ||
if (element.__ref && !element.__ref.__hasRootState) | ||
return; | ||
if ((0, import_utils.isFunction)(val && val.parse)) | ||
val = val.parse(); | ||
const parsedVal = (0, import_utils.isFunction)(val && val.parse) ? val.parse() : val; | ||
obj[v] = (0, import_utils.isFunction)(parsedVal) ? parsedVal : JSON.parse(JSON.stringify(parsedVal || {})); | ||
} else if (v === "scope") { | ||
if (element.__ref && !element.__ref.__hasRootScope) | ||
return; | ||
obj[v] = JSON.parse(JSON.stringify(val || {})); | ||
} else if (v === "props") { | ||
@@ -116,0 +120,0 @@ const { __element, update, ...props } = element[v]; |
@@ -50,3 +50,3 @@ "use strict"; | ||
if (element.content) { | ||
if (element.content.node) { | ||
if (element.content.node && element.node) { | ||
if (element.content.tag === "fragment") | ||
@@ -53,0 +53,0 @@ element.node.innerHTML = ""; |
@@ -21,2 +21,3 @@ "use strict"; | ||
__export(registry_exports, { | ||
collectionFilters: () => collectionFilters, | ||
default: () => registry_default, | ||
@@ -92,3 +93,11 @@ parseFilters: () => parseFilters | ||
"on", | ||
"key" | ||
"key", | ||
"extend", | ||
"childExtend", | ||
"childExtendRecursive", | ||
"scope", | ||
"query", | ||
"$collection", | ||
"$stateCollection", | ||
"$propsCollection" | ||
], | ||
@@ -98,1 +107,2 @@ propsKeys: ["__element", "update"], | ||
}; | ||
const collectionFilters = ["$collection", "$stateCollection", "$propsCollection"]; |
@@ -173,2 +173,3 @@ "use strict"; | ||
const checkIfOnUpdate = (element, parent, options) => { | ||
var _a; | ||
if (!(0, import_utils.isFunction)(element.if) || !parent) | ||
@@ -183,2 +184,3 @@ return; | ||
delete element.__hash; | ||
delete element.__text; | ||
delete element.extend; | ||
@@ -193,11 +195,22 @@ if (!ref.__hasRootState) { | ||
} | ||
element.node && element.node.remove(); | ||
if (element.node) { | ||
element.node.remove(); | ||
delete element.node; | ||
} | ||
if (element.$collection || element.$stateCollection || element.$propsCollection) { | ||
element.removeContent(); | ||
} else if ((_a = element.content) == null ? void 0 : _a.parseDeep) | ||
element.content = element.content.parseDeep(); | ||
const previousElement = element.previousElement(); | ||
const previousNode = previousElement == null ? void 0 : previousElement.node; | ||
const hasPrevious = previousNode == null ? void 0 : previousNode.parentNode; | ||
const nextElement = element.nextElement(); | ||
const hasPrevious = previousElement && previousElement.node; | ||
const hasNext = nextElement && nextElement.node; | ||
const attachOptions = (hasPrevious && hasPrevious.parentNode || hasNext && hasNext.parentNode) && { | ||
const nextNode = nextElement == null ? void 0 : nextElement.node; | ||
const hasNext = nextNode == null ? void 0 : nextNode.parentNode; | ||
const attachOptions = (hasPrevious || hasNext) && { | ||
position: hasPrevious ? "after" : hasNext ? "before" : null, | ||
node: hasPrevious || hasNext | ||
node: hasPrevious && previousNode || hasNext && nextNode | ||
}; | ||
delete element.__ref; | ||
delete element.parent; | ||
const created = (0, import_create.default)(element, parent, element.key, import_options.default.create, attachOptions); | ||
@@ -204,0 +217,0 @@ if (options.preventUpdate !== true && element.on && (0, import_utils.isFunction)(element.on.update)) { |
@@ -22,3 +22,2 @@ "use strict"; | ||
cloneAndMergeArrayExtend: () => cloneAndMergeArrayExtend, | ||
deepCloneExtend: () => deepCloneExtend, | ||
deepExtend: () => deepExtend, | ||
@@ -85,17 +84,2 @@ deepMergeExtend: () => deepMergeExtend, | ||
}; | ||
const deepCloneExtend = (obj) => { | ||
const o = {}; | ||
for (const prop in obj) { | ||
if (["parent", "node", "__element"].indexOf(prop) > -1) | ||
continue; | ||
const objProp = obj[prop]; | ||
if ((0, import_utils.isObject)(objProp)) { | ||
o[prop] = deepCloneExtend(objProp); | ||
} else if ((0, import_utils.isArray)(objProp)) { | ||
o[prop] = objProp.map((x) => x); | ||
} else | ||
o[prop] = objProp; | ||
} | ||
return o; | ||
}; | ||
const deepMergeExtend = (element, extend) => { | ||
@@ -124,3 +108,3 @@ for (const e in extend) { | ||
return stack.reduce((a, c) => { | ||
return deepMergeExtend(a, deepCloneExtend(c)); | ||
return deepMergeExtend(a, (0, import_utils.deepCloneWithExtend)(c)); | ||
}, {}); | ||
@@ -127,0 +111,0 @@ }; |
@@ -86,6 +86,10 @@ 'use strict' | ||
if (excl.includes(v)) return | ||
let val = element[v] | ||
const val = element[v] | ||
if (v === 'state') { | ||
if (element.__ref && element.__ref.__hasRootState) return | ||
if (isFunction(val && val.parse)) val = val.parse() | ||
if (element.__ref && !element.__ref.__hasRootState) return | ||
const parsedVal = isFunction(val && val.parse) ? val.parse() : val | ||
obj[v] = isFunction(parsedVal) ? parsedVal : JSON.parse(JSON.stringify(parsedVal || {})) | ||
} else if (v === 'scope') { | ||
if (element.__ref && !element.__ref.__hasRootScope) return | ||
obj[v] = JSON.parse(JSON.stringify(val || {})) | ||
} else if (v === 'props') { | ||
@@ -92,0 +96,0 @@ const { __element, update, ...props } = element[v] |
@@ -18,3 +18,3 @@ 'use strict' | ||
if (element.content) { | ||
if (element.content.node) { | ||
if (element.content.node && element.node) { | ||
if (element.content.tag === 'fragment') element.node.innerHTML = '' | ||
@@ -21,0 +21,0 @@ else element.node.removeChild(element.content.node) |
@@ -69,3 +69,5 @@ 'use strict' | ||
'tag', 'text', 'style', 'attr', 'class', 'state', 'props', | ||
'data', 'content', 'html', 'on', 'key' | ||
'data', 'content', 'html', 'on', 'key', 'extend', 'childExtend', | ||
'childExtendRecursive', 'scope', 'query', | ||
'$collection', '$stateCollection', '$propsCollection' | ||
], | ||
@@ -75,1 +77,3 @@ propsKeys: ['__element', 'update'], | ||
} | ||
export const collectionFilters = ['$collection', '$stateCollection', '$propsCollection'] |
{ | ||
"name": "@domql/element", | ||
"version": "2.5.75", | ||
"version": "2.5.77", | ||
"license": "MIT", | ||
@@ -34,3 +34,3 @@ "type": "module", | ||
}, | ||
"gitHead": "aed026de97492c8c0e4da1f47cb027bc6db63362", | ||
"gitHead": "20db0bd2a45b9f1037d8ca6a7fb3fd66197a3056", | ||
"devDependencies": { | ||
@@ -37,0 +37,0 @@ "@babel/core": "^7.12.0" |
@@ -186,2 +186,3 @@ 'use strict' | ||
delete element.__hash | ||
delete element.__text | ||
delete element.extend | ||
@@ -198,15 +199,27 @@ if (!ref.__hasRootState) { | ||
element.node && element.node.remove() | ||
if (element.node) { | ||
element.node.remove() | ||
delete element.node | ||
} | ||
if (element.$collection || element.$stateCollection || element.$propsCollection) { | ||
element.removeContent() | ||
} else if (element.content?.parseDeep) element.content = element.content.parseDeep() | ||
const previousElement = element.previousElement() | ||
const previousNode = previousElement?.node // document.body.contains(previousElement.node) | ||
const hasPrevious = previousNode?.parentNode // document.body.contains(previousElement.node) | ||
const nextElement = element.nextElement() | ||
const nextNode = nextElement?.node // document.body.contains(previousElement.node) | ||
const hasNext = nextNode?.parentNode // && document.body.contains(nextElement.node) | ||
// const hasNext = nextElement && document.body.contains(nextElement.node) | ||
const hasPrevious = previousElement && previousElement.node | ||
const hasNext = nextElement && nextElement.node | ||
const attachOptions = ((hasPrevious && hasPrevious.parentNode) || (hasNext && hasNext.parentNode)) && { | ||
const attachOptions = (hasPrevious || hasNext) && { | ||
position: hasPrevious ? 'after' : hasNext ? 'before' : null, | ||
node: hasPrevious || hasNext | ||
node: (hasPrevious && previousNode) || (hasNext && nextNode) | ||
} | ||
delete element.__ref | ||
delete element.parent | ||
const created = create(element, parent, element.key, OPTIONS.create, attachOptions) | ||
@@ -213,0 +226,0 @@ // check preventUpdate for an array (Line: 87) |
'use strict' | ||
import { isArray, isFunction, isObject, isString } from '@domql/utils' | ||
import { isArray, isFunction, isObject, isString, deepCloneWithExtend } from '@domql/utils' | ||
const ENV = process.env.NODE_ENV | ||
@@ -51,17 +51,2 @@ | ||
// merging | ||
export const deepCloneExtend = obj => { | ||
const o = {} | ||
for (const prop in obj) { | ||
if (['parent', 'node', '__element'].indexOf(prop) > -1) continue | ||
const objProp = obj[prop] | ||
if (isObject(objProp)) { | ||
o[prop] = deepCloneExtend(objProp) | ||
} else if (isArray(objProp)) { | ||
o[prop] = objProp.map(x => x) | ||
} else o[prop] = objProp | ||
} | ||
return o | ||
} | ||
export const deepMergeExtend = (element, extend) => { | ||
@@ -90,3 +75,3 @@ for (const e in extend) { | ||
return stack.reduce((a, c) => { | ||
return deepMergeExtend(a, deepCloneExtend(c)) | ||
return deepMergeExtend(a, deepCloneWithExtend(c)) | ||
}, {}) | ||
@@ -93,0 +78,0 @@ } |
182642
4944