domql 1.4.11 → 1.4.14

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.4.11",
6
+ "version": "1.4.14",
7
7
  "repository": "https://github.com/rackai/domql",
8
8
  "publishConfig": {
9
9
  "registry": "https://registry.npmjs.org"
@@ -6,45 +6,49 @@ import { classList } from '../../src/element/mixins'
6
6
  import createEmotion from '@emotion/css/create-instance'
7
7
  const ENV = process.env.NODE_ENV
8
8
 
9
- const {
10
- flush,
11
- hydrate,
12
- cx,
13
- merge,
14
- getRegisteredStyles,
15
- injectGlobal,
16
- keyframes,
17
- css,
18
- sheet,
19
- cache
20
- } = createEmotion({ key: 'smbls' })
9
+ export const initEmotion = (container, options) => {
10
+ const {
11
+ flush,
12
+ hydrate,
13
+ cx,
14
+ merge,
15
+ getRegisteredStyles,
16
+ injectGlobal,
17
+ keyframes,
18
+ css,
19
+ sheet,
20
+ cache
21
+ } = createEmotion({ key: 'smbls', container })
21
22
 
22
- const style = (params, element, node) => {
23
- const execPareams = exec(params, element)
24
- if (params) {
25
- if (isObjectLike(element.class)) element.class.style = execPareams
26
- else element.class = { style: execPareams }
23
+ const style = (params, element, node) => {
24
+ const execPareams = exec(params, element)
25
+ if (params) {
26
+ if (isObjectLike(element.class)) element.class.style = execPareams
27
+ else element.class = { style: execPareams }
28
+ }
29
+ classf(element.class, element, node)
27
30
  }
28
- classf(element.class, element, node)
29
- }
30
31
 
31
- const classf = (params, element, node) => {
32
- if (isObjectLike(params)) {
33
- const classObjHelper = {}
34
- for (const key in params) {
35
- const prop = exec(params[key], element)
36
- if (!prop) continue
37
- if ((ENV === 'test' || ENV === 'development') && isObject(prop)) prop.label = key || element.key
38
- const CSSed = css(prop)
39
- classObjHelper[key] = CSSed
32
+ const classf = (params, element, node) => {
33
+ if (isObjectLike(params)) {
34
+ const classObjHelper = {}
35
+ for (const key in params) {
36
+ const prop = exec(params[key], element)
37
+ if (!prop) continue
38
+ if ((ENV === 'test' || ENV === 'development') && isObject(prop)) prop.label = key || element.key
39
+ const CSSed = css(prop)
40
+ classObjHelper[key] = CSSed
41
+ }
42
+ classList(classObjHelper, element, node)
40
43
  }
41
- classList(classObjHelper, element, node)
42
44
  }
45
+
46
+ DOM.define({
47
+ style,
48
+ class: classf
49
+ }, {
50
+ overwrite: true
51
+ })
43
52
  }
44
53
 
45
- DOM.define({
46
- style,
47
- class: classf
48
- }, {
49
- overwrite: true
50
- })
54
+ initEmotion()
@@ -117,7 +117,7 @@ const create = (element, parent, key, options = {}) => {
117
117
  // enable CHANGES storing
118
118
  if (!element.__changes) element.__changes = []
119
119
 
120
- // enable CHANGES storing
120
+ // Add _root element property
121
121
  const hasRoot = parent.parent && parent.parent.key === ':root'
122
122
  if (!element.__root) element.__root = hasRoot ? parent : parent.__root
123
123
 
@@ -129,6 +129,11 @@ const create = (element, parent, key, options = {}) => {
129
129
  on.init(element.on.init, element, element.state)
130
130
  }
131
131
 
132
+ // run `on.init`
133
+ if (element.on && isFunction(element.on.beforeClassAssign)) {
134
+ on.beforeClassAssign(element.on.beforeClassAssign, element, element.state)
135
+ }
136
+
132
137
  // generate a CLASS name
133
138
  assignClass(element)
134
139
 
@@ -87,10 +87,10 @@ export const updateProps = (newProps, element, parent) => {
87
87
  return element
88
88
  }
89
89
 
90
- function update (props) {
90
+ function update (props, options) {
91
91
  const element = this.__element
92
92
  // element.update({ props })
93
- element.update()
93
+ element.update({ props }, options)
94
94
  }
95
95
 
96
96
  export default createProps
@@ -10,7 +10,7 @@ import { exec } from '../../utils'
10
10
  export default (param, element, node) => {
11
11
  const prop = exec(param, element)
12
12
  if (element.tag === 'string') node.nodeValue = prop
13
- else if (param) {
13
+ else if (param !== undefined || param !== null) {
14
14
  if (element.__text) {
15
15
  element.__text.text = prop
16
16
  if (element.__text.node) element.__text.node.nodeValue = prop
@@ -29,15 +29,7 @@ const update = function (params = {}, options = UPDATE_DEFAULT_OPTIONS) {
29
29
  // TODO: move as fragment
30
30
  const ifPassed = element.if(element, element.state)
31
31
 
32
- // console.group('updateLoop')
33
- // console.log(element)
34
- // console.log(element.__ifFalsy)
35
- // console.log(ifPassed)
36
- // console.groupEnd('updateLoop')
37
-
38
- // if (element.__ifFalsy && ifPassed) {
39
32
  if (ifPassed) delete element.__ifFalsy
40
-
41
33
  if (element.__ifFalsy && ifPassed) {
42
34
  createNode(element)
43
35
  appendNode(element.node, element.__ifFragment)
@@ -51,19 +43,8 @@ const update = function (params = {}, options = UPDATE_DEFAULT_OPTIONS) {
51
43
  preventUpdate = on.initUpdate(element.on.initUpdate, element, element.state)
52
44
  }
53
45
 
54
- // console.group('update')
55
- // console.log(element.path)
56
- // console.log(element)
57
- // if (params.props) {
58
- // console.log('INSIDE:')
59
- // console.log(params.props)
60
- // }
61
46
  if (!element.__ifFalsy) updateProps(params.props, element, parent)
62
47
 
63
-
64
- // const state = params.state || element.state
65
- // element.state = createState({ state }, parent)
66
-
67
48
  const overwriteChanges = overwrite(element, params, UPDATE_DEFAULT_OPTIONS)
68
49
  const execChanges = throughUpdatedExec(element, UPDATE_DEFAULT_OPTIONS)
69
50
  const definedChanges = throughUpdatedDefine(element)
@@ -72,29 +53,16 @@ const update = function (params = {}, options = UPDATE_DEFAULT_OPTIONS) {
72
53
  const stackChanges = merge(definedChanges, merge(execChanges, overwriteChanges))
73
54
  element.__stackChanges.push(stackChanges)
74
55
  }
75
- // const stackChanges = merge(definedChanges, merge(execChanges, overwriteChanges))
76
- // if (Object.keys(stackChanges).length === 0) return
77
- // else console.log(element.path, '\n\n', stackChanges)
78
56
 
79
- // console.log(element.key, element.__ifFalsy)
80
57
  if (element.__ifFalsy) return element
81
58
  if (!node) {
82
- return
83
59
  // return createNode(element, options)
60
+ return
84
61
  }
85
62
 
86
- // console.warn(element.key)
87
- // console.groupEnd('update')
88
-
89
63
  for (const param in element) {
90
64
  const prop = element[param]
91
65
 
92
- // console.group('updateLoop')
93
- // console.log(param)
94
- // console.log(prop)
95
- // console.groupEnd('updateLoop')
96
- // if (element.key === 'span' && param === 'node') debugger
97
-
98
66
  if (options.preventContentUpdate && param === 'content') continue
99
67
  if (isMethod(param) || isObject(registry[param]) || prop === undefined) continue
100
68
 
package/src/event/on.js CHANGED
@@ -1,5 +1,9 @@
1
1
  'use strict'
2
2
 
3
+ export const beforeClassAssign = (param, element, state) => {
4
+ param(element, state)
5
+ }
6
+
3
7
  export const init = (param, element, state) => {
4
8
  param(element, state)
5
9
  }