domql 1.4.13 → 1.4.16

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/README.md CHANGED
@@ -7,14 +7,12 @@ DOM rendering Javascript framework.
7
7
  - No transpilations, simple ES6 code
8
8
  - One-time import and subtrees
9
9
 
10
- You can start with [starter-kit](https://github.com/rackai/starter-kit) as a boilerplate, or jump into the [playground](https://domql.com/playground/).
10
+ You can start with [starter-kit](https://github.com/domql/starter-kit) as a boilerplate, or jump into the [playground](https://domql.com/playground/).
11
11
 
12
- [![npm version](https://badge.fury.io/js/%40rackai%2Fdomql.svg)](https://badge.fury.io/js/%40rackai%2Fdomql)
13
- [![Build Status](https://travis-ci.org/rackai/domql.svg?branch=master)](https://travis-ci.org/rackai/domql)
14
- [![Coverage Status](https://coveralls.io/repos/github/rackai/domql/badge.svg?branch=main)](https://coveralls.io/github/rackai/domql?branch=main)
12
+ [![npm version](https://badge.fury.io/js/domql.svg)](https://badge.fury.io/js/domql)
15
13
 
16
14
  ```javascript
17
- import DOM from '@rackai/domql'
15
+ import DOM from 'domql'
18
16
 
19
17
  DOM.create({ text: 'Rendered' })
20
18
  ```
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.13",
6
+ "version": "1.4.16",
7
7
  "repository": "https://github.com/rackai/domql",
8
8
  "publishConfig": {
9
9
  "registry": "https://registry.npmjs.org"
@@ -30,7 +30,7 @@
30
30
  "@babel/eslint-parser": "^7.16.3",
31
31
  "@babel/preset-env": "^7.16.4",
32
32
  "@parcel/babel-preset-env": "^2.0.1",
33
- "babel-jest": "^27.4.4",
33
+ "babel-jest": "^28.1.3",
34
34
  "esbuild": "^0.14.47",
35
35
  "eslint": "^8.4.0",
36
36
  "eslint-config-standard": "^16.0.3",
@@ -1,13 +1,13 @@
1
1
  'use strict'
2
2
 
3
3
  import root from './root'
4
- import createNode from './createNode'
4
+ import createNode from './node'
5
5
  import { appendNode, assignNode } from './assign'
6
6
  import { applyPrototype } from './proto'
7
7
  import nodes from './nodes'
8
8
  import set from './set'
9
- import createState from './createState'
10
- import createProps from './createProps'
9
+ import createState from './state'
10
+ import createProps from './props'
11
11
  import update from './update'
12
12
  import * as on from '../event/on'
13
13
  import { assignClass } from './mixins/classList'
@@ -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
 
@@ -5,7 +5,7 @@ import root from './root'
5
5
  import tree from './tree'
6
6
  import cache from './cache'
7
7
  import create from './create'
8
- import createNode from './createNode'
8
+ import createNode from './node'
9
9
  import * as assign from './assign'
10
10
  import define from './define'
11
11
  import update from './update'
File without changes
@@ -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
File without changes
@@ -8,8 +8,8 @@ import { throughUpdatedDefine, throughUpdatedExec } from './iterate'
8
8
  import { merge } from '../utils/object'
9
9
  import { appendNode } from './assign'
10
10
  import { createNode } from '.'
11
- import { updateProps } from './createProps'
12
- import createState from './createState'
11
+ import { updateProps } from './props'
12
+ import createState from './state'
13
13
 
14
14
  const UPDATE_DEFAULT_OPTIONS = {
15
15
  stackChanges: false,
@@ -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)
@@ -47,54 +39,30 @@ const update = function (params = {}, options = UPDATE_DEFAULT_OPTIONS) {
47
39
  }
48
40
  }
49
41
 
50
- if (element.on && isFunction(element.on.initUpdate) && !options.ignoreInitUpdate) {
51
- preventUpdate = on.initUpdate(element.on.initUpdate, element, element.state)
52
- }
53
-
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
- if (!element.__ifFalsy) updateProps(params.props, element, parent)
62
-
63
-
64
- // const state = params.state || element.state
65
- // element.state = createState({ state }, parent)
42
+ if (!element.__ifFalsy && !options.preventPropsUpdate) updateProps(params.props, element, parent)
66
43
 
67
44
  const overwriteChanges = overwrite(element, params, UPDATE_DEFAULT_OPTIONS)
68
45
  const execChanges = throughUpdatedExec(element, UPDATE_DEFAULT_OPTIONS)
69
46
  const definedChanges = throughUpdatedDefine(element)
70
47
 
71
- if (UPDATE_DEFAULT_OPTIONS.stackChanges && element.__stackChanges) {
48
+ if (options.stackChanges && element.__stackChanges) {
72
49
  const stackChanges = merge(definedChanges, merge(execChanges, overwriteChanges))
73
50
  element.__stackChanges.push(stackChanges)
74
51
  }
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
52
 
79
- // console.log(element.key, element.__ifFalsy)
80
53
  if (element.__ifFalsy) return element
81
54
  if (!node) {
82
- return
83
55
  // return createNode(element, options)
56
+ return
84
57
  }
85
58
 
86
- // console.warn(element.key)
87
- // console.groupEnd('update')
59
+ if (element.on && isFunction(element.on.initUpdate) && !options.ignoreInitUpdate) {
60
+ preventUpdate = on.initUpdate(element.on.initUpdate, element, element.state)
61
+ }
88
62
 
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
  }