@domql/element 3.2.3 → 3.2.8
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/children.js +40 -12
- package/create.js +40 -26
- package/define.js +1 -1
- package/dist/cjs/children.js +39 -11
- package/dist/cjs/create.js +41 -11
- package/dist/cjs/define.js +1 -1
- package/dist/cjs/event/animationFrame.js +96 -0
- package/dist/cjs/event/can.js +28 -0
- package/dist/cjs/event/index.js +20 -0
- package/dist/cjs/event/on.js +84 -0
- package/dist/cjs/event/store.js +27 -0
- package/dist/cjs/extend.js +6 -6
- package/dist/cjs/index.js +9 -6
- package/dist/cjs/iterate.js +13 -13
- package/dist/cjs/methods/set.js +5 -0
- package/dist/cjs/methods/v2.js +1 -1
- package/dist/cjs/mixins/attr.js +3 -2
- package/dist/cjs/mixins/classList.js +11 -1
- package/dist/cjs/mixins/content.js +1 -2
- package/dist/cjs/mixins/html.js +1 -2
- package/dist/cjs/mixins/state.js +2 -2
- package/dist/cjs/mixins/style.js +11 -2
- package/dist/cjs/mixins/text.js +5 -1
- package/dist/cjs/node.js +8 -5
- package/dist/cjs/render/append.js +72 -0
- package/dist/cjs/render/cache.js +80 -0
- package/dist/cjs/render/create.js +25 -0
- package/dist/cjs/render/index.js +20 -0
- package/dist/cjs/set.js +12 -14
- package/dist/cjs/update.js +80 -40
- package/dist/cjs/utils/applyParam.js +3 -3
- package/dist/cjs/utils/extendUtils.js +5 -5
- package/dist/cjs/utils/index.js +2 -0
- package/dist/cjs/utils/propEvents.js +21 -4
- package/dist/esm/children.js +39 -11
- package/dist/esm/create.js +42 -11
- package/dist/esm/define.js +1 -1
- package/dist/esm/event/animationFrame.js +76 -0
- package/dist/esm/event/can.js +8 -0
- package/dist/esm/event/index.js +3 -0
- package/dist/esm/event/on.js +64 -0
- package/dist/esm/event/store.js +7 -0
- package/dist/esm/extend.js +7 -7
- package/dist/esm/index.js +8 -6
- package/dist/esm/iterate.js +13 -13
- package/dist/esm/methods/set.js +10 -0
- package/dist/esm/methods/v2.js +1 -1
- package/dist/esm/mixins/attr.js +4 -3
- package/dist/esm/mixins/classList.js +11 -1
- package/dist/esm/mixins/content.js +1 -2
- package/dist/esm/mixins/html.js +1 -2
- package/dist/esm/mixins/state.js +2 -2
- package/dist/esm/mixins/style.js +12 -3
- package/dist/esm/mixins/text.js +6 -2
- package/dist/esm/node.js +8 -5
- package/dist/esm/render/append.js +52 -0
- package/dist/esm/render/cache.js +60 -0
- package/dist/esm/render/create.js +5 -0
- package/dist/esm/render/index.js +3 -0
- package/dist/esm/set.js +12 -14
- package/dist/esm/update.js +80 -42
- package/dist/esm/utils/applyParam.js +3 -3
- package/dist/esm/utils/extendUtils.js +5 -5
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/propEvents.js +21 -4
- package/dist/iife/index.js +4718 -0
- package/extend.js +7 -10
- package/index.js +9 -6
- package/iterate.js +20 -13
- package/node.js +10 -8
- package/package.json +42 -18
- package/set.js +6 -5
- package/update.js +90 -52
- package/__tests__/checkIfOnUpdate.test.js +0 -103
- package/__tests__/children.test.js +0 -209
- package/__tests__/define.test.js +0 -75
- package/__tests__/inheritStateUpdates.test.js +0 -79
- package/__tests__/renderElement.test.js +0 -131
- package/__tests__/resetElement.test.js +0 -44
- package/__tests__/set.test.js +0 -312
- package/__tests__/throughExecProps.test.js +0 -86
- package/__tests__/throughInitialDefine.test.js +0 -104
- package/__tests__/throughInitialExec.test.js +0 -92
- package/__tests__/throughUpdatedDefine.test.js +0 -92
- package/__tests__/throughUpdatedExec.test.js +0 -111
- package/__tests__/tree.test.js +0 -15
- package/__tests__/update.test.js +0 -256
- package/dist/cjs/package.json +0 -4
- package/methods/set.js +0 -63
- package/methods/v2.js +0 -83
- package/mixins/attr.js +0 -32
- package/mixins/classList.js +0 -54
- package/mixins/content.js +0 -65
- package/mixins/data.js +0 -26
- package/mixins/html.js +0 -21
- package/mixins/index.js +0 -23
- package/mixins/registry.js +0 -46
- package/mixins/scope.js +0 -23
- package/mixins/state.js +0 -19
- package/mixins/style.js +0 -16
- package/mixins/text.js +0 -26
- package/utils/applyParam.js +0 -34
- package/utils/extendUtils.js +0 -149
- package/utils/index.js +0 -3
- package/utils/propEvents.js +0 -19
package/mixins/data.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import { isObject, deepMerge, exec } from '@domql/utils'
|
|
4
|
-
import { report } from '@domql/report'
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Apply data parameters on the DOM nodes
|
|
8
|
-
* this should only work if `showOnNode: true` is passed
|
|
9
|
-
*/
|
|
10
|
-
export function data (params, element, node) {
|
|
11
|
-
if (params) {
|
|
12
|
-
if (element.props.data) deepMerge(params, element.props.data)
|
|
13
|
-
if (params.showOnNode) {
|
|
14
|
-
if (!isObject(params)) report('HTMLInvalidData', params)
|
|
15
|
-
|
|
16
|
-
// Apply data params on node
|
|
17
|
-
for (const dataset in params) {
|
|
18
|
-
if (dataset !== 'showOnNode') {
|
|
19
|
-
node.dataset[dataset] = exec(params[dataset], element)
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export default data
|
package/mixins/html.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import { exec } from '@domql/utils'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Appends raw HTML as content
|
|
7
|
-
* an original one as a child
|
|
8
|
-
*/
|
|
9
|
-
export function html (param, element, node) {
|
|
10
|
-
const prop = exec(element?.props?.html || param, element)
|
|
11
|
-
const { __ref } = element
|
|
12
|
-
if (prop !== __ref.__html) {
|
|
13
|
-
// const parser = new window.DOMParser()
|
|
14
|
-
// param = parser.parseFromString(param, 'text/html')
|
|
15
|
-
if (node.nodeName === 'SVG') node.textContent = prop
|
|
16
|
-
else node.innerHTML = prop
|
|
17
|
-
__ref.__html = prop
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export default html
|
package/mixins/index.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import { attr } from './attr.js'
|
|
4
|
-
import { applyClasslist } from './classList.js'
|
|
5
|
-
import { data } from './data.js'
|
|
6
|
-
import { html } from './html.js'
|
|
7
|
-
import { style } from './style.js'
|
|
8
|
-
import { text } from './text.js'
|
|
9
|
-
import { state } from './state.js'
|
|
10
|
-
import { scope } from './scope.js'
|
|
11
|
-
|
|
12
|
-
export {
|
|
13
|
-
applyClasslist as classList,
|
|
14
|
-
attr,
|
|
15
|
-
data,
|
|
16
|
-
style,
|
|
17
|
-
text,
|
|
18
|
-
html,
|
|
19
|
-
state,
|
|
20
|
-
scope
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export * from './registry.js'
|
package/mixins/registry.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import { attr } from './attr.js'
|
|
4
|
-
import { classList } from './classList.js'
|
|
5
|
-
import data from './data.js'
|
|
6
|
-
import html from './html.js'
|
|
7
|
-
import scope from './scope.js'
|
|
8
|
-
import state from './state.js'
|
|
9
|
-
import style from './style.js'
|
|
10
|
-
import text from './text.js'
|
|
11
|
-
|
|
12
|
-
export const REGISTRY = {
|
|
13
|
-
attr,
|
|
14
|
-
style,
|
|
15
|
-
text,
|
|
16
|
-
html,
|
|
17
|
-
data,
|
|
18
|
-
classlist: classList,
|
|
19
|
-
state,
|
|
20
|
-
scope,
|
|
21
|
-
deps: (param, el) => param || el.parent.deps,
|
|
22
|
-
|
|
23
|
-
extends: {},
|
|
24
|
-
children: {},
|
|
25
|
-
content: {},
|
|
26
|
-
childExtends: {},
|
|
27
|
-
childExtendsRecursive: {},
|
|
28
|
-
props: {},
|
|
29
|
-
if: {},
|
|
30
|
-
define: {},
|
|
31
|
-
__name: {},
|
|
32
|
-
__ref: {},
|
|
33
|
-
__hash: {},
|
|
34
|
-
__text: {},
|
|
35
|
-
key: {},
|
|
36
|
-
tag: {},
|
|
37
|
-
query: {},
|
|
38
|
-
parent: {},
|
|
39
|
-
node: {},
|
|
40
|
-
variables: {},
|
|
41
|
-
on: {},
|
|
42
|
-
component: {},
|
|
43
|
-
context: {}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export default REGISTRY
|
package/mixins/scope.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import { isFunction, isObject } from '@domql/utils'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Apply data parameters on the DOM nodes
|
|
7
|
-
* this should only work if `showOnNode: true` is passed
|
|
8
|
-
*/
|
|
9
|
-
export function scope (params, element, node) {
|
|
10
|
-
if (!isObject(params)) return
|
|
11
|
-
|
|
12
|
-
// Apply data params on node
|
|
13
|
-
for (const scopeItem in params) {
|
|
14
|
-
const value = params[scopeItem]
|
|
15
|
-
if (isFunction(value)) {
|
|
16
|
-
element.scope[scopeItem] = value.bind(element)
|
|
17
|
-
} else {
|
|
18
|
-
element.scope[scopeItem] = value
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export default scope
|
package/mixins/state.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import { exec, isObject, STATE_METHODS } from '@domql/utils'
|
|
4
|
-
|
|
5
|
-
export function state (params, element, node) {
|
|
6
|
-
const state = exec(params, element)
|
|
7
|
-
|
|
8
|
-
if (isObject(state)) {
|
|
9
|
-
for (const param in state) {
|
|
10
|
-
if (STATE_METHODS.includes(param)) continue
|
|
11
|
-
if (!Object.hasOwnProperty.call(state, param)) continue
|
|
12
|
-
// element.state[param] = exec(state[param], element)
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return element
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export default state
|
package/mixins/style.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import { isObject, map } from '@domql/utils'
|
|
4
|
-
import { report } from '@domql/report'
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Recursively add styles to a DOM node
|
|
8
|
-
*/
|
|
9
|
-
export function style (params, element, node) {
|
|
10
|
-
if (params) {
|
|
11
|
-
if (isObject(params)) map(node.style, params, element)
|
|
12
|
-
else report('HTMLInvalidStyles', params)
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export default style
|
package/mixins/text.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import { create } from '../create.js'
|
|
4
|
-
import { exec, isString } from '@domql/utils'
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Creates a text node and appends into
|
|
8
|
-
* an original one as a child
|
|
9
|
-
*/
|
|
10
|
-
export function text (param, element, node) {
|
|
11
|
-
let prop = exec(element.props.text || param, element)
|
|
12
|
-
if (isString(prop) && prop.includes('{{')) {
|
|
13
|
-
prop = element.call('replaceLiteralsWithObjectFields', prop, element.state)
|
|
14
|
-
}
|
|
15
|
-
if (element.tag === 'string') {
|
|
16
|
-
node.nodeValue = prop
|
|
17
|
-
} else if (param !== undefined || param !== null) {
|
|
18
|
-
if (element.__text) {
|
|
19
|
-
if (element.__text.text === prop) return
|
|
20
|
-
element.__text.text = prop
|
|
21
|
-
if (element.__text.node) element.__text.node.nodeValue = prop
|
|
22
|
-
} else create({ tag: 'string', text: prop }, element, '__text')
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export default text
|
package/utils/applyParam.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import { exec, isFunction } from '@domql/utils'
|
|
4
|
-
import { REGISTRY } from '../mixins/index.js'
|
|
5
|
-
|
|
6
|
-
export const applyParam = (param, element, options) => {
|
|
7
|
-
const { node, context, __ref: ref } = element
|
|
8
|
-
const prop = exec(element[param], element)
|
|
9
|
-
|
|
10
|
-
const { onlyUpdate } = options
|
|
11
|
-
|
|
12
|
-
const DOMQLProperty = REGISTRY[param]
|
|
13
|
-
const DOMQLPropertyFromContext =
|
|
14
|
-
context && context.registry && context.registry[param]
|
|
15
|
-
const isGlobalTransformer = DOMQLPropertyFromContext || DOMQLProperty
|
|
16
|
-
|
|
17
|
-
const hasDefine = element.define && element.define[param]
|
|
18
|
-
const hasContextDefine = context && context.define && context.define[param]
|
|
19
|
-
|
|
20
|
-
if (!ref.__if) return
|
|
21
|
-
|
|
22
|
-
const hasOnlyUpdate = onlyUpdate
|
|
23
|
-
? onlyUpdate === param || element.lookup(onlyUpdate)
|
|
24
|
-
: true
|
|
25
|
-
|
|
26
|
-
if (isGlobalTransformer && !hasContextDefine && hasOnlyUpdate) {
|
|
27
|
-
if (isFunction(isGlobalTransformer)) {
|
|
28
|
-
isGlobalTransformer(prop, element, node, options)
|
|
29
|
-
}
|
|
30
|
-
return
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return { hasDefine, hasContextDefine }
|
|
34
|
-
}
|
package/utils/extendUtils.js
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
isArray,
|
|
5
|
-
isFunction,
|
|
6
|
-
isObject,
|
|
7
|
-
isString,
|
|
8
|
-
deepClone,
|
|
9
|
-
isNotProduction
|
|
10
|
-
} from '@domql/utils'
|
|
11
|
-
|
|
12
|
-
export const generateHash = () => Math.random().toString(36).substring(2)
|
|
13
|
-
|
|
14
|
-
// hashing
|
|
15
|
-
export const extendStackRegistry = {}
|
|
16
|
-
export const extendCachedRegistry = {}
|
|
17
|
-
|
|
18
|
-
export const getHashedExtend = extend => {
|
|
19
|
-
return extendStackRegistry[extend.__hash]
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export const setHashedExtend = (extend, stack) => {
|
|
23
|
-
const hash = generateHash()
|
|
24
|
-
if (!isString(extend)) {
|
|
25
|
-
extend.__hash = hash
|
|
26
|
-
}
|
|
27
|
-
extendStackRegistry[hash] = stack
|
|
28
|
-
return stack
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export const getExtendStackRegistry = (extend, stack) => {
|
|
32
|
-
if (extend.__hash) {
|
|
33
|
-
return stack.concat(getHashedExtend(extend))
|
|
34
|
-
}
|
|
35
|
-
return setHashedExtend(extend, stack) // stack .concat(hashedExtend)
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// stacking
|
|
39
|
-
export const extractArrayExtend = (extend, stack, context) => {
|
|
40
|
-
extend.forEach(each => flattenExtend(each, stack, context))
|
|
41
|
-
return stack
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export const deepExtend = (extend, stack, context) => {
|
|
45
|
-
const extendOflattenExtend = extend.extend
|
|
46
|
-
if (extendOflattenExtend) {
|
|
47
|
-
flattenExtend(extendOflattenExtend, stack, context)
|
|
48
|
-
}
|
|
49
|
-
return stack
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export const flattenExtend = (extend, stack, context) => {
|
|
53
|
-
if (!extend) return stack
|
|
54
|
-
if (isArray(extend)) return extractArrayExtend(extend, stack, context)
|
|
55
|
-
if (isString(extend)) extend = fallbackStringExtend(extend, context)
|
|
56
|
-
stack.push(extend)
|
|
57
|
-
if (extend.extend) deepExtend(extend, stack, context)
|
|
58
|
-
return stack
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
export const deepMergeExtend = (element, extend) => {
|
|
62
|
-
for (const e in extend) {
|
|
63
|
-
if (['parent', 'node', '__element'].indexOf(e) > -1) continue
|
|
64
|
-
const elementProp = element[e]
|
|
65
|
-
const extendProp = extend[e]
|
|
66
|
-
if (elementProp === undefined) {
|
|
67
|
-
element[e] = extendProp
|
|
68
|
-
} else if (isObject(elementProp) && isObject(extendProp)) {
|
|
69
|
-
deepMergeExtend(elementProp, extendProp)
|
|
70
|
-
} else if (isArray(elementProp) && isArray(extendProp)) {
|
|
71
|
-
element[e] = elementProp.concat(extendProp)
|
|
72
|
-
} else if (isArray(elementProp) && isObject(extendProp)) {
|
|
73
|
-
const obj = deepMergeExtend({}, elementProp)
|
|
74
|
-
element[e] = deepMergeExtend(obj, extendProp)
|
|
75
|
-
} else if (elementProp === undefined && isFunction(extendProp)) {
|
|
76
|
-
element[e] = extendProp
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return element
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export const cloneAndMergeArrayExtend = stack => {
|
|
83
|
-
return stack.reduce((a, c) => {
|
|
84
|
-
return deepMergeExtend(a, deepClone(c))
|
|
85
|
-
}, {})
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
export const fallbackStringExtend = (
|
|
89
|
-
extend,
|
|
90
|
-
context,
|
|
91
|
-
options = {},
|
|
92
|
-
variant
|
|
93
|
-
) => {
|
|
94
|
-
const COMPONENTS = (context && context.components) || options.components
|
|
95
|
-
const PAGES = (context && context.pages) || options.pages
|
|
96
|
-
if (isString(extend)) {
|
|
97
|
-
const componentExists =
|
|
98
|
-
COMPONENTS &&
|
|
99
|
-
(COMPONENTS[extend + '.' + variant] ||
|
|
100
|
-
COMPONENTS[extend] ||
|
|
101
|
-
COMPONENTS['smbls.' + extend])
|
|
102
|
-
const pageExists = PAGES && extend.startsWith('/') && PAGES[extend]
|
|
103
|
-
if (componentExists) return componentExists
|
|
104
|
-
else if (pageExists) return pageExists
|
|
105
|
-
else {
|
|
106
|
-
if (options.verbose && isNotProduction()) {
|
|
107
|
-
console.warn('Extend is string but component was not found:', extend)
|
|
108
|
-
}
|
|
109
|
-
return {}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return extend
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// joint stacks
|
|
116
|
-
export const jointStacks = (extendStack, childExtendStack) => {
|
|
117
|
-
return []
|
|
118
|
-
.concat(extendStack.slice(0, 1))
|
|
119
|
-
.concat(childExtendStack.slice(0, 1))
|
|
120
|
-
.concat(extendStack.slice(1))
|
|
121
|
-
.concat(childExtendStack.slice(1))
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// init
|
|
125
|
-
export const getExtendStack = (extend, context) => {
|
|
126
|
-
if (!extend) return []
|
|
127
|
-
if (extend.__hash) return getHashedExtend(extend) || []
|
|
128
|
-
const stack = flattenExtend(extend, [], context)
|
|
129
|
-
return getExtendStackRegistry(extend, stack)
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
export const getExtendMerged = extend => {
|
|
133
|
-
const stack = getExtendStack(extend)
|
|
134
|
-
return cloneAndMergeArrayExtend(stack)
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// export const replaceStringsWithComponents = (stack, context, options) => {
|
|
138
|
-
// const COMPONENTS = (context && context.components) || options.components
|
|
139
|
-
// return stack.map(v => {
|
|
140
|
-
// if (isString(v)) {
|
|
141
|
-
// const component = COMPONENTS[v]
|
|
142
|
-
// return component
|
|
143
|
-
// }
|
|
144
|
-
// if (isString(v.extend)) {
|
|
145
|
-
// v.extend = getExtendMerged(COMPONENTS[v.extend])
|
|
146
|
-
// }
|
|
147
|
-
// return v
|
|
148
|
-
// })
|
|
149
|
-
// }
|
package/utils/index.js
DELETED
package/utils/propEvents.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import { isFunction, lowercaseFirstLetter } from '@domql/utils'
|
|
4
|
-
|
|
5
|
-
export const propagateEventsFromProps = (element) => {
|
|
6
|
-
const { props, on } = element
|
|
7
|
-
const eventKeysFromProps = Object.keys(props).filter(key => key.startsWith('on'))
|
|
8
|
-
eventKeysFromProps.forEach(v => {
|
|
9
|
-
const eventName = lowercaseFirstLetter(v.split('on')[1])
|
|
10
|
-
const origEvent = on[eventName]
|
|
11
|
-
const funcFromProps = props[v]
|
|
12
|
-
if (isFunction(origEvent)) {
|
|
13
|
-
on[eventName] = (...args) => {
|
|
14
|
-
const originalEventRetunrs = origEvent(...args)
|
|
15
|
-
if (originalEventRetunrs !== false) return funcFromProps(...args)
|
|
16
|
-
}
|
|
17
|
-
} else on[eventName] = funcFromProps
|
|
18
|
-
})
|
|
19
|
-
}
|