jails-js 4.2.2 → 5.0.0-beta.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/src/element.js DELETED
@@ -1,57 +0,0 @@
1
- import Component from './component'
2
- import { trigger } from './utils/events'
3
- import { nextFrame } from './utils'
4
-
5
- export const create = ({ element, view, modules }) => {
6
-
7
- element.__instances__ = {}
8
- element.__model__ = {}
9
-
10
- const names = element.dataset.component.split(/\s/)
11
-
12
- if(!element.dataset.reactorId){
13
- view.setNewElement(element)
14
- }
15
-
16
- names.forEach( name => {
17
-
18
- if( name in modules && (!element.__instances__[name]) ){
19
-
20
- const component = modules[name]
21
-
22
- nextFrame(_ => {
23
- if( element.__instances__ ) {
24
- const base = Component({ name, element, view, component })
25
-
26
- element.__instances__[name] = { base, methods: {} }
27
-
28
- element.__update__ = (state) => {
29
- for ( let name in element.__instances__ )
30
- element.__instances__[name].base.update(state)
31
- }
32
-
33
- component.module.default(base)
34
- base.__initialize(base)
35
- delete base.__initialize
36
- }
37
- })
38
- }
39
- })
40
-
41
- }
42
-
43
- export const ismounted = (element) => {
44
- return Boolean( element.__instances__ )
45
- }
46
-
47
- export const destroy = ({ element }) => {
48
-
49
- trigger(element, ':destroy')
50
-
51
- for (let ev in element.__events)
52
- element.removeEventListener(ev, element.__events[ev].listener)
53
-
54
- delete element.__events
55
- delete element.__instances__
56
- delete element.__model__
57
- }
package/src/index.js DELETED
@@ -1,51 +0,0 @@
1
- import View from './view'
2
- import { ismounted, create, destroy } from './element'
3
-
4
- const modules = {}
5
-
6
- export default {
7
-
8
- register( name, module, dependencies ){
9
- modules[ name ] = { name, module, dependencies }
10
- },
11
-
12
- start(){
13
- const view = getView()
14
- view.mode = 'production'
15
- view.observe()
16
- },
17
-
18
- devStart(){
19
- console.time('jails')
20
- const view = getView()
21
- view.mode = 'development'
22
- view.observe()
23
- console.timeEnd('jails')
24
- }
25
- }
26
-
27
- const getView = () => {
28
-
29
- const view = View({
30
-
31
- onAdd(elements) {
32
- elements
33
- .filter(el => !ismounted(el))
34
- .forEach(element => create({ element, view, modules }))
35
- },
36
-
37
- onRemove(removedNodes) {
38
- removedNodes.forEach(removedNode => {
39
- if (removedNode.nodeType === 1) {
40
- const children = Array.from(removedNode.querySelectorAll('[data-component]'))
41
- children
42
- .concat(removedNode.dataset.component ? removedNode : [])
43
- .filter(element => !document.body.contains(element))
44
- .forEach(element => destroy({ element }))
45
- }
46
- })
47
- }
48
- })
49
-
50
- return view
51
- }
package/src/view.js DELETED
@@ -1,126 +0,0 @@
1
- import morphdom from 'morphdom'
2
- import sodajs from 'sodajs'
3
-
4
- import * as animation from './animation'
5
- import { dup, createTemplates, setIds } from './utils'
6
- import repeatDirective from './repeat'
7
-
8
- const STATIC = 'static'
9
- const COMPONENT = '[data-component]'
10
-
11
- export default function View( callback ) {
12
-
13
- const root = document.body
14
- const { templates, html } = createTemplates(root.innerHTML, 'html')
15
- const models = {}
16
- const SST = {}
17
-
18
- sodajs.prefix('v-')
19
- repeatDirective({ sodajs, models })
20
-
21
- return {
22
-
23
- mode : 'production',
24
- templates,
25
- models,
26
- SST,
27
-
28
- update( element, data ){
29
- if (element) {
30
- const id = element.dataset.reactorId
31
- const template = templates[id]
32
- const newstate = Object.assign({}, element.__model__, dup(data))
33
- const newhtml = sodajs(template, newstate)
34
- morphdom( element, newhtml, lifecycle(element, data, SST))
35
- if( element.__model__ ){
36
- Object.assign( element.__model__, newstate )
37
- }
38
- }
39
- },
40
-
41
- observe() {
42
- const observer = observe( callback )
43
- root.innerHTML = sodajs(html, {})
44
- return observer
45
- },
46
-
47
- setNewElement(element){
48
- setIds(templates, element)
49
- }
50
- }
51
- }
52
-
53
- const observe = ( callback ) => {
54
- const observer = new MutationObserver(mutations => mutations.forEach(onMutation(callback)))
55
- observer.observe(document.body, { childList: true, subtree: true })
56
- return observer;
57
- }
58
-
59
- const onMutation = (callback) => (mutation) => {
60
- if (mutation.type === 'childList') {
61
- if (mutation.addedNodes.length) {
62
- callback.onAdd(scan())
63
- } else if (mutation.removedNodes.length) {
64
- callback.onRemove(mutation.removedNodes)
65
- }
66
- }
67
- }
68
-
69
- const scan = () => {
70
- return Array
71
- .from( document.querySelectorAll(COMPONENT) )
72
- .reverse()
73
- }
74
-
75
- const lifecycle = (elm, data, SST) => ({
76
-
77
- getNodeKey(node) {
78
- if (node.nodeType === 1) {
79
- return node.dataset.key || node.dataset.reactorId
80
- }
81
- return false
82
- },
83
-
84
- onBeforeElUpdated(node) {
85
- return update( elm, data, SST, node )
86
- },
87
-
88
- onBeforeElChildrenUpdated(node, tonode) {
89
- return update( elm, data, SST, node )
90
- },
91
-
92
- onNodeAdded(node) {
93
- animation.animateNodes(node, animation.onAdd)
94
- },
95
-
96
- onBeforeNodeAdded(node) {
97
- animation.animateNodes(node, animation.onBeforeAdd)
98
- },
99
-
100
- onBeforeNodeDiscarded(node) {
101
- return !animation.animateNodes(node, animation.onRemove)
102
- }
103
- })
104
-
105
- const update = (elm, data, SST, node) => {
106
-
107
- if (node.nodeType === 1) {
108
- // If element has static property, don't update
109
- if ( STATIC in node.dataset )
110
- return false
111
-
112
- // If element is child and a component, don't update
113
- if (node !== elm && node.dataset.component && node.__update__) {
114
-
115
- const newdata = Object.assign(SST, data)
116
- node.__update__(newdata)
117
-
118
- Array.from(node.querySelectorAll(COMPONENT)).forEach(el => {
119
- if (el.dataset.component && el.__update__)
120
- el.__update__(newdata)
121
- })
122
-
123
- return false
124
- }
125
- }
126
- }
@@ -1,16 +0,0 @@
1
- const path = require('path')
2
-
3
- module.exports = {
4
-
5
- entry: {
6
- 'jails': './src/index.js'
7
- },
8
-
9
- output: {
10
- path : path.resolve(__dirname, './dist'),
11
- filename : '[name].js',
12
- libraryTarget : 'umd',
13
- library : 'jails',
14
- umdNamedDefine: true
15
- }
16
- }