foldkit 0.129.0 → 0.130.0
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/THIRD-PARTY-NOTICES.md +30 -0
- package/dist/brand/brand.d.ts +25 -0
- package/dist/brand/brand.d.ts.map +1 -0
- package/dist/brand/brand.js +50 -0
- package/dist/brand/index.d.ts +2 -0
- package/dist/brand/index.d.ts.map +1 -0
- package/dist/brand/index.js +1 -0
- package/dist/brand/public.d.ts +2 -0
- package/dist/brand/public.d.ts.map +1 -0
- package/dist/brand/public.js +1 -0
- package/dist/canvas/view.d.ts.map +1 -1
- package/dist/canvas/view.js +1 -1
- package/dist/devTools/protocol.d.ts +1 -1
- package/dist/devTools/protocol.d.ts.map +1 -1
- package/dist/devTools/protocol.js +1 -1
- package/dist/devTools/store.js +2 -2
- package/dist/devTools/webSocketBridge.d.ts +1 -1
- package/dist/devTools/webSocketBridge.js +1 -1
- package/dist/html/index.d.ts +18 -18
- package/dist/html/index.d.ts.map +1 -1
- package/dist/html/index.js +530 -460
- package/dist/html/lazy.d.ts +1 -1
- package/dist/html/lazy.d.ts.map +1 -1
- package/dist/html/lazy.js +11 -2
- package/dist/propsModule.d.ts +1 -1
- package/dist/propsModule.d.ts.map +1 -1
- package/dist/propsModule.js +6 -1
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +468 -278
- package/dist/snabbdom/attributes.d.ts +4 -0
- package/dist/snabbdom/attributes.d.ts.map +1 -0
- package/dist/snabbdom/attributes.js +63 -0
- package/dist/snabbdom/class.d.ts +4 -0
- package/dist/snabbdom/class.d.ts.map +1 -0
- package/dist/snabbdom/class.js +31 -0
- package/dist/snabbdom/dataset.d.ts +4 -0
- package/dist/snabbdom/dataset.d.ts.map +1 -0
- package/dist/snabbdom/dataset.js +42 -0
- package/dist/snabbdom/eventlisteners.d.ts +11 -0
- package/dist/snabbdom/eventlisteners.d.ts.map +1 -0
- package/dist/snabbdom/eventlisteners.js +85 -0
- package/dist/snabbdom/h.d.ts +11 -0
- package/dist/snabbdom/h.d.ts.map +1 -0
- package/dist/snabbdom/h.js +61 -0
- package/dist/snabbdom/hooks.d.ts +24 -0
- package/dist/snabbdom/hooks.d.ts.map +1 -0
- package/dist/snabbdom/hooks.js +1 -0
- package/dist/snabbdom/htmldomapi.d.ts +34 -0
- package/dist/snabbdom/htmldomapi.d.ts.map +1 -0
- package/dist/snabbdom/htmldomapi.js +111 -0
- package/dist/snabbdom/index.d.ts +15 -0
- package/dist/snabbdom/index.d.ts.map +1 -0
- package/dist/snabbdom/index.js +9 -0
- package/dist/snabbdom/init.d.ts +14 -0
- package/dist/snabbdom/init.d.ts.map +1 -0
- package/dist/snabbdom/init.js +486 -0
- package/dist/snabbdom/is.d.ts +3 -0
- package/dist/snabbdom/is.d.ts.map +1 -0
- package/dist/snabbdom/is.js +7 -0
- package/dist/snabbdom/module.d.ts +11 -0
- package/dist/snabbdom/module.d.ts.map +1 -0
- package/dist/snabbdom/module.js +1 -0
- package/dist/snabbdom/props.d.ts +2 -0
- package/dist/snabbdom/props.d.ts.map +1 -0
- package/dist/snabbdom/props.js +1 -0
- package/dist/snabbdom/style.d.ts +9 -0
- package/dist/snabbdom/style.d.ts.map +1 -0
- package/dist/snabbdom/style.js +123 -0
- package/dist/snabbdom/tovnode.d.ts +4 -0
- package/dist/snabbdom/tovnode.d.ts.map +1 -0
- package/dist/snabbdom/tovnode.js +69 -0
- package/dist/snabbdom/vnode.d.ts +46 -0
- package/dist/snabbdom/vnode.d.ts.map +1 -0
- package/dist/snabbdom/vnode.js +13 -0
- package/dist/vdom.d.ts +2 -2
- package/dist/vdom.d.ts.map +1 -1
- package/dist/vdom.js +1 -1
- package/package.json +7 -5
- package/dist/runtime/messagePriority.d.ts +0 -17
- package/dist/runtime/messagePriority.d.ts.map +0 -1
- package/dist/runtime/messagePriority.js +0 -33
- package/dist/runtime/renderLoop.d.ts +0 -27
- package/dist/runtime/renderLoop.d.ts.map +0 -1
- package/dist/runtime/renderLoop.js +0 -25
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../src/snabbdom/attributes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAwD7D,eAAO,MAAM,gBAAgB,EAAE,MAI9B,CAAA"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { VNodeDataMask } from './vnode.js';
|
|
2
|
+
const xlinkNS = 'http://www.w3.org/1999/xlink';
|
|
3
|
+
const xmlnsNS = 'http://www.w3.org/2000/xmlns/';
|
|
4
|
+
const xmlNS = 'http://www.w3.org/XML/1998/namespace';
|
|
5
|
+
const colonChar = 58;
|
|
6
|
+
const xChar = 120;
|
|
7
|
+
const mChar = 109;
|
|
8
|
+
function updateAttrs(oldVnode, vnode) {
|
|
9
|
+
let key;
|
|
10
|
+
const elm = vnode.elm;
|
|
11
|
+
let oldAttrs = oldVnode.data.attrs;
|
|
12
|
+
let attrs = vnode.data.attrs;
|
|
13
|
+
if (!oldAttrs && !attrs)
|
|
14
|
+
return;
|
|
15
|
+
if (oldAttrs === attrs)
|
|
16
|
+
return;
|
|
17
|
+
oldAttrs = oldAttrs || {};
|
|
18
|
+
attrs = attrs || {};
|
|
19
|
+
// update modified attributes, add new attributes
|
|
20
|
+
for (key in attrs) {
|
|
21
|
+
const cur = attrs[key];
|
|
22
|
+
const old = oldAttrs[key];
|
|
23
|
+
if (old !== cur) {
|
|
24
|
+
if (cur === true) {
|
|
25
|
+
elm.setAttribute(key, '');
|
|
26
|
+
}
|
|
27
|
+
else if (cur === false) {
|
|
28
|
+
elm.removeAttribute(key);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
if (key.charCodeAt(0) !== xChar) {
|
|
32
|
+
elm.setAttribute(key, cur);
|
|
33
|
+
}
|
|
34
|
+
else if (key.charCodeAt(3) === colonChar) {
|
|
35
|
+
// Assume xml namespace
|
|
36
|
+
elm.setAttributeNS(xmlNS, key, cur);
|
|
37
|
+
}
|
|
38
|
+
else if (key.charCodeAt(5) === colonChar) {
|
|
39
|
+
// Assume 'xmlns' or 'xlink' namespace
|
|
40
|
+
key.charCodeAt(1) === mChar
|
|
41
|
+
? elm.setAttributeNS(xmlnsNS, key, cur)
|
|
42
|
+
: elm.setAttributeNS(xlinkNS, key, cur);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
elm.setAttribute(key, cur);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// remove removed attributes
|
|
51
|
+
// use `in` operator since the previous `for` iteration uses it (.i.e. add even attributes with undefined value)
|
|
52
|
+
// the other option is to remove all attributes with value == undefined
|
|
53
|
+
for (key in oldAttrs) {
|
|
54
|
+
if (!(key in attrs)) {
|
|
55
|
+
elm.removeAttribute(key);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export const attributesModule = {
|
|
60
|
+
dataMask: VNodeDataMask.Attrs,
|
|
61
|
+
create: updateAttrs,
|
|
62
|
+
update: updateAttrs,
|
|
63
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../src/snabbdom/class.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AA4B7C,eAAO,MAAM,WAAW,EAAE,MAIzB,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { VNodeDataMask } from './vnode.js';
|
|
2
|
+
function updateClass(oldVnode, vnode) {
|
|
3
|
+
let cur;
|
|
4
|
+
let name;
|
|
5
|
+
const elm = vnode.elm;
|
|
6
|
+
let oldClass = oldVnode.data.class;
|
|
7
|
+
let klass = vnode.data.class;
|
|
8
|
+
if (!oldClass && !klass)
|
|
9
|
+
return;
|
|
10
|
+
if (oldClass === klass)
|
|
11
|
+
return;
|
|
12
|
+
oldClass = oldClass || {};
|
|
13
|
+
klass = klass || {};
|
|
14
|
+
for (name in oldClass) {
|
|
15
|
+
if (oldClass[name] && !Object.prototype.hasOwnProperty.call(klass, name)) {
|
|
16
|
+
// was `true` and now not provided
|
|
17
|
+
elm.classList.remove(name);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
for (name in klass) {
|
|
21
|
+
cur = klass[name];
|
|
22
|
+
if (cur !== oldClass[name]) {
|
|
23
|
+
elm.classList[cur ? 'add' : 'remove'](name);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export const classModule = {
|
|
28
|
+
dataMask: VNodeDataMask.Class,
|
|
29
|
+
create: updateClass,
|
|
30
|
+
update: updateClass,
|
|
31
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataset.d.ts","sourceRoot":"","sources":["../../src/snabbdom/dataset.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AA2C5C,eAAO,MAAM,aAAa,EAAE,MAI3B,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { VNodeDataMask } from './vnode.js';
|
|
2
|
+
const CAPS_REGEX = /[A-Z]/g;
|
|
3
|
+
function updateDataset(oldVnode, vnode) {
|
|
4
|
+
const elm = vnode.elm;
|
|
5
|
+
let oldDataset = oldVnode.data.dataset;
|
|
6
|
+
let dataset = vnode.data.dataset;
|
|
7
|
+
let key;
|
|
8
|
+
if (!oldDataset && !dataset)
|
|
9
|
+
return;
|
|
10
|
+
if (oldDataset === dataset)
|
|
11
|
+
return;
|
|
12
|
+
oldDataset = oldDataset || {};
|
|
13
|
+
dataset = dataset || {};
|
|
14
|
+
const d = elm.dataset;
|
|
15
|
+
for (key in oldDataset) {
|
|
16
|
+
if (!(key in dataset)) {
|
|
17
|
+
if (d) {
|
|
18
|
+
if (key in d) {
|
|
19
|
+
delete d[key];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
elm.removeAttribute('data-' + key.replace(CAPS_REGEX, '-$&').toLowerCase());
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
for (key in dataset) {
|
|
28
|
+
if (oldDataset[key] !== dataset[key]) {
|
|
29
|
+
if (d) {
|
|
30
|
+
d[key] = dataset[key];
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
elm.setAttribute('data-' + key.replace(CAPS_REGEX, '-$&').toLowerCase(), dataset[key]);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export const datasetModule = {
|
|
39
|
+
dataMask: VNodeDataMask.Dataset,
|
|
40
|
+
create: updateDataset,
|
|
41
|
+
update: updateDataset,
|
|
42
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Module } from './module.js';
|
|
2
|
+
import { type VNode } from './vnode.js';
|
|
3
|
+
type Listener<T> = (this: VNode, ev: T, vnode: VNode) => void;
|
|
4
|
+
export type On = {
|
|
5
|
+
[N in keyof HTMLElementEventMap]?: Listener<HTMLElementEventMap[N]> | Array<Listener<HTMLElementEventMap[N]>>;
|
|
6
|
+
} & {
|
|
7
|
+
[event: string]: Listener<any> | Array<Listener<any>>;
|
|
8
|
+
};
|
|
9
|
+
export declare const eventListenersModule: Module;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=eventlisteners.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventlisteners.d.ts","sourceRoot":"","sources":["../../src/snabbdom/eventlisteners.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,KAAK,KAAK,EAAiC,MAAM,YAAY,CAAA;AAEtE,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;AAE7D,MAAM,MAAM,EAAE,GAAG;KACd,CAAC,IAAI,MAAM,mBAAmB,CAAC,CAAC,EAC7B,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAChC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C,GAAG;IACF,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;CACtD,CAAA;AA8FD,eAAO,MAAM,oBAAoB,EAAE,MAKlC,CAAA"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { VNodeDataMask } from './vnode.js';
|
|
2
|
+
function invokeHandler(handler, vnode, event) {
|
|
3
|
+
if (typeof handler === 'function') {
|
|
4
|
+
// call function handler
|
|
5
|
+
handler.call(vnode, event, vnode);
|
|
6
|
+
}
|
|
7
|
+
else if (typeof handler === 'object') {
|
|
8
|
+
// call multiple handlers
|
|
9
|
+
for (let i = 0; i < handler.length; i++) {
|
|
10
|
+
invokeHandler(handler[i], vnode, event);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function handleEvent(event, vnode) {
|
|
15
|
+
const name = event.type;
|
|
16
|
+
const on = vnode.data.on;
|
|
17
|
+
// call event handler(s) if exists
|
|
18
|
+
if (on && on[name]) {
|
|
19
|
+
invokeHandler(on[name], vnode, event);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function createListener() {
|
|
23
|
+
return function handler(event) {
|
|
24
|
+
handleEvent(event, handler.vnode);
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function updateEventListeners(oldVnode, vnode) {
|
|
28
|
+
const oldOn = oldVnode.data.on;
|
|
29
|
+
const oldListener = oldVnode.listener;
|
|
30
|
+
const oldElm = oldVnode.elm;
|
|
31
|
+
const on = vnode && vnode.data.on;
|
|
32
|
+
const elm = (vnode && vnode.elm);
|
|
33
|
+
let name;
|
|
34
|
+
// optimization for reused immutable handlers
|
|
35
|
+
if (oldOn === on) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
// remove existing listeners which no longer used
|
|
39
|
+
if (oldOn && oldListener) {
|
|
40
|
+
// if element changed or deleted we remove all existing listeners unconditionally
|
|
41
|
+
if (!on) {
|
|
42
|
+
for (name in oldOn) {
|
|
43
|
+
// remove listener if element was changed or existing listeners removed
|
|
44
|
+
oldElm.removeEventListener(name, oldListener, false);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
for (name in oldOn) {
|
|
49
|
+
// remove listener if existing listener removed
|
|
50
|
+
if (!on[name]) {
|
|
51
|
+
oldElm.removeEventListener(name, oldListener, false);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// add new listeners which has not already attached
|
|
57
|
+
if (on) {
|
|
58
|
+
// reuse existing listener or create new
|
|
59
|
+
const listener = (vnode.listener =
|
|
60
|
+
oldVnode.listener || createListener());
|
|
61
|
+
// update vnode for listener
|
|
62
|
+
listener.vnode = vnode;
|
|
63
|
+
// if element changed or added we add all needed listeners unconditionally
|
|
64
|
+
if (!oldOn) {
|
|
65
|
+
for (name in on) {
|
|
66
|
+
// add listener if element was changed or new listeners added
|
|
67
|
+
elm.addEventListener(name, listener, false);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
for (name in on) {
|
|
72
|
+
// add listener if new listener added
|
|
73
|
+
if (!oldOn[name]) {
|
|
74
|
+
elm.addEventListener(name, listener, false);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export const eventListenersModule = {
|
|
81
|
+
dataMask: VNodeDataMask.On,
|
|
82
|
+
create: updateEventListeners,
|
|
83
|
+
update: updateEventListeners,
|
|
84
|
+
destroy: updateEventListeners,
|
|
85
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type VNode, type VNodeData } from './vnode.js';
|
|
2
|
+
export type VNodes = Array<VNode>;
|
|
3
|
+
export type VNodeChildElement = VNode | string | number | String | Number | undefined | null;
|
|
4
|
+
export type ArrayOrElement<T> = T | Array<T>;
|
|
5
|
+
export type VNodeChildren = ArrayOrElement<VNodeChildElement>;
|
|
6
|
+
export declare function addNS(data: any, children: Array<VNode | string> | undefined, sel: string | undefined): void;
|
|
7
|
+
export declare function h(sel: string): VNode;
|
|
8
|
+
export declare function h(sel: string, data: VNodeData | null): VNode;
|
|
9
|
+
export declare function h(sel: string, children: VNodeChildren): VNode;
|
|
10
|
+
export declare function h(sel: string, data: VNodeData | null, children: VNodeChildren): VNode;
|
|
11
|
+
//# sourceMappingURL=h.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"h.d.ts","sourceRoot":"","sources":["../../src/snabbdom/h.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAS,MAAM,YAAY,CAAA;AAE9D,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;AACjC,MAAM,MAAM,iBAAiB,GACzB,KAAK,GACL,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,SAAS,GACT,IAAI,CAAA;AACR,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;AAC5C,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAA;AAE7D,wBAAgB,KAAK,CACnB,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,SAAS,EAC3C,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,IAAI,CAYN;AAED,wBAAgB,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAA;AACrC,wBAAgB,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,KAAK,CAAA;AAC7D,wBAAgB,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK,CAAA;AAC9D,wBAAgB,CAAC,CACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,GAAG,IAAI,EACtB,QAAQ,EAAE,aAAa,GACtB,KAAK,CAAA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import * as is from './is.js';
|
|
2
|
+
import { vnode } from './vnode.js';
|
|
3
|
+
export function addNS(data, children, sel) {
|
|
4
|
+
data.ns = 'http://www.w3.org/2000/svg';
|
|
5
|
+
if (sel !== 'foreignObject' && children !== undefined) {
|
|
6
|
+
for (let i = 0; i < children.length; ++i) {
|
|
7
|
+
const child = children[i];
|
|
8
|
+
if (typeof child === 'string')
|
|
9
|
+
continue;
|
|
10
|
+
const childData = child.data;
|
|
11
|
+
if (childData !== undefined) {
|
|
12
|
+
addNS(childData, child.children, child.sel);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function h(sel, b, c) {
|
|
18
|
+
let data = {};
|
|
19
|
+
let children;
|
|
20
|
+
let text;
|
|
21
|
+
let i;
|
|
22
|
+
if (c !== undefined) {
|
|
23
|
+
if (b !== null) {
|
|
24
|
+
data = b;
|
|
25
|
+
}
|
|
26
|
+
if (is.array(c)) {
|
|
27
|
+
children = c;
|
|
28
|
+
}
|
|
29
|
+
else if (is.primitive(c)) {
|
|
30
|
+
text = c.toString();
|
|
31
|
+
}
|
|
32
|
+
else if (c && c.sel) {
|
|
33
|
+
children = [c];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else if (b !== undefined && b !== null) {
|
|
37
|
+
if (is.array(b)) {
|
|
38
|
+
children = b;
|
|
39
|
+
}
|
|
40
|
+
else if (is.primitive(b)) {
|
|
41
|
+
text = b.toString();
|
|
42
|
+
}
|
|
43
|
+
else if (b && b.sel) {
|
|
44
|
+
children = [b];
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
data = b;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (children !== undefined) {
|
|
51
|
+
for (i = 0; i < children.length; ++i) {
|
|
52
|
+
if (is.primitive(children[i]))
|
|
53
|
+
children[i] = vnode(undefined, undefined, undefined, children[i], undefined);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (sel.startsWith('svg') &&
|
|
57
|
+
(sel.length === 3 || sel[3] === '.' || sel[3] === '#')) {
|
|
58
|
+
addNS(data, children, sel);
|
|
59
|
+
}
|
|
60
|
+
return vnode(sel, data, children, text, undefined);
|
|
61
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { VNode } from './vnode.js';
|
|
2
|
+
export type PreHook = () => any;
|
|
3
|
+
export type InitHook = (vNode: VNode) => any;
|
|
4
|
+
export type CreateHook = (emptyVNode: VNode, vNode: VNode) => any;
|
|
5
|
+
export type InsertHook = (vNode: VNode) => any;
|
|
6
|
+
export type PrePatchHook = (oldVNode: VNode, vNode: VNode) => any;
|
|
7
|
+
export type UpdateHook = (oldVNode: VNode, vNode: VNode) => any;
|
|
8
|
+
export type PostPatchHook = (oldVNode: VNode, vNode: VNode) => any;
|
|
9
|
+
export type DestroyHook = (vNode: VNode) => any;
|
|
10
|
+
export type RemoveHook = (vNode: VNode, removeCallback: () => void) => any;
|
|
11
|
+
export type PostHook = () => any;
|
|
12
|
+
export interface Hooks {
|
|
13
|
+
pre?: PreHook;
|
|
14
|
+
init?: InitHook;
|
|
15
|
+
create?: CreateHook;
|
|
16
|
+
insert?: InsertHook;
|
|
17
|
+
prepatch?: PrePatchHook;
|
|
18
|
+
update?: UpdateHook;
|
|
19
|
+
postpatch?: PostPatchHook;
|
|
20
|
+
destroy?: DestroyHook;
|
|
21
|
+
remove?: RemoveHook;
|
|
22
|
+
post?: PostHook;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/snabbdom/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,CAAA;AAC/B,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AAC5C,MAAM,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AACjE,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AAC9C,MAAM,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AACjE,MAAM,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AAC/D,MAAM,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AAClE,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AAC/C,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,KAAK,GAAG,CAAA;AAC1E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAA;AAEhC,MAAM,WAAW,KAAK;IACpB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface SnabbdomFragment extends DocumentFragment {
|
|
2
|
+
parent: Node | null;
|
|
3
|
+
firstChildNode: ChildNode | null;
|
|
4
|
+
lastChildNode: ChildNode | null;
|
|
5
|
+
}
|
|
6
|
+
export interface DOMAPI {
|
|
7
|
+
createElement: (tagName: any, options?: ElementCreationOptions) => HTMLElement;
|
|
8
|
+
createElementNS: (namespaceURI: string, qualifiedName: string, options?: ElementCreationOptions) => Element;
|
|
9
|
+
/**
|
|
10
|
+
* @experimental
|
|
11
|
+
* @todo Make it required when the fragment is considered stable.
|
|
12
|
+
*/
|
|
13
|
+
createDocumentFragment?: () => SnabbdomFragment;
|
|
14
|
+
createTextNode: (text: string) => Text;
|
|
15
|
+
createComment: (text: string) => Comment;
|
|
16
|
+
insertBefore: (parentNode: Node, newNode: Node, referenceNode: Node | null) => void;
|
|
17
|
+
removeChild: (node: Node, child: Node) => void;
|
|
18
|
+
appendChild: (node: Node, child: Node) => void;
|
|
19
|
+
parentNode: (node: Node) => Node | null;
|
|
20
|
+
nextSibling: (node: Node) => Node | null;
|
|
21
|
+
tagName: (elm: Element) => string;
|
|
22
|
+
setTextContent: (node: Node, text: string | null) => void;
|
|
23
|
+
getTextContent: (node: Node) => string | null;
|
|
24
|
+
isElement: (node: Node) => node is Element;
|
|
25
|
+
isText: (node: Node) => node is Text;
|
|
26
|
+
isComment: (node: Node) => node is Comment;
|
|
27
|
+
/**
|
|
28
|
+
* @experimental
|
|
29
|
+
* @todo Make it required when the fragment is considered stable.
|
|
30
|
+
*/
|
|
31
|
+
isDocumentFragment?: (node: Node) => node is DocumentFragment;
|
|
32
|
+
}
|
|
33
|
+
export declare const htmlDomApi: DOMAPI;
|
|
34
|
+
//# sourceMappingURL=htmldomapi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"htmldomapi.d.ts","sourceRoot":"","sources":["../../src/snabbdom/htmldomapi.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;IACnB,cAAc,EAAE,SAAS,GAAG,IAAI,CAAA;IAChC,aAAa,EAAE,SAAS,GAAG,IAAI,CAAA;CAChC;AAED,MAAM,WAAW,MAAM;IACrB,aAAa,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,sBAAsB,KAAK,WAAW,CAAA;IAC9E,eAAe,EAAE,CACf,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,sBAAsB,KAC7B,OAAO,CAAA;IACZ;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,gBAAgB,CAAA;IAC/C,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IACxC,YAAY,EAAE,CACZ,UAAU,EAAE,IAAI,EAChB,OAAO,EAAE,IAAI,EACb,aAAa,EAAE,IAAI,GAAG,IAAI,KACvB,IAAI,CAAA;IACT,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,IAAI,CAAA;IAC9C,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,IAAI,CAAA;IAC9C,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI,CAAA;IACvC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI,CAAA;IACxC,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAA;IACjC,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACzD,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,GAAG,IAAI,CAAA;IAC7C,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,OAAO,CAAA;IAC1C,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,IAAI,CAAA;IACpC,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,OAAO,CAAA;IAC1C;;;OAGG;IACH,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,gBAAgB,CAAA;CAC9D;AA8HD,eAAO,MAAM,UAAU,EAAE,MAkBxB,CAAA"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
function createElement(tagName, options) {
|
|
2
|
+
return document.createElement(tagName, options);
|
|
3
|
+
}
|
|
4
|
+
function createElementNS(namespaceURI, qualifiedName, options) {
|
|
5
|
+
return document.createElementNS(namespaceURI, qualifiedName, options);
|
|
6
|
+
}
|
|
7
|
+
function createDocumentFragment() {
|
|
8
|
+
return parseFragment(document.createDocumentFragment());
|
|
9
|
+
}
|
|
10
|
+
function createTextNode(text) {
|
|
11
|
+
return document.createTextNode(text);
|
|
12
|
+
}
|
|
13
|
+
function createComment(text) {
|
|
14
|
+
return document.createComment(text);
|
|
15
|
+
}
|
|
16
|
+
function insertBefore(parentNode, newNode, referenceNode) {
|
|
17
|
+
if (isDocumentFragment(parentNode)) {
|
|
18
|
+
let node = parentNode;
|
|
19
|
+
while (node && isDocumentFragment(node)) {
|
|
20
|
+
const fragment = parseFragment(node);
|
|
21
|
+
node = fragment.parent;
|
|
22
|
+
}
|
|
23
|
+
parentNode = node ?? parentNode;
|
|
24
|
+
}
|
|
25
|
+
if (isDocumentFragment(newNode)) {
|
|
26
|
+
newNode = parseFragment(newNode, parentNode);
|
|
27
|
+
}
|
|
28
|
+
if (referenceNode && isDocumentFragment(referenceNode)) {
|
|
29
|
+
referenceNode = parseFragment(referenceNode).firstChildNode;
|
|
30
|
+
}
|
|
31
|
+
parentNode.insertBefore(newNode, referenceNode);
|
|
32
|
+
}
|
|
33
|
+
function removeChild(node, child) {
|
|
34
|
+
node.removeChild(child);
|
|
35
|
+
}
|
|
36
|
+
function appendChild(node, child) {
|
|
37
|
+
if (isDocumentFragment(child)) {
|
|
38
|
+
child = parseFragment(child, node);
|
|
39
|
+
}
|
|
40
|
+
node.appendChild(child);
|
|
41
|
+
}
|
|
42
|
+
function parentNode(node) {
|
|
43
|
+
if (isDocumentFragment(node)) {
|
|
44
|
+
while (node && isDocumentFragment(node)) {
|
|
45
|
+
const fragment = parseFragment(node);
|
|
46
|
+
node = fragment.parent;
|
|
47
|
+
}
|
|
48
|
+
return node ?? null;
|
|
49
|
+
}
|
|
50
|
+
return node.parentNode;
|
|
51
|
+
}
|
|
52
|
+
function nextSibling(node) {
|
|
53
|
+
if (isDocumentFragment(node)) {
|
|
54
|
+
const fragment = parseFragment(node);
|
|
55
|
+
const parent = parentNode(fragment);
|
|
56
|
+
if (parent && fragment.lastChildNode) {
|
|
57
|
+
const children = Array.from(parent.childNodes);
|
|
58
|
+
const index = children.indexOf(fragment.lastChildNode);
|
|
59
|
+
return children[index + 1] ?? null;
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
return node.nextSibling;
|
|
64
|
+
}
|
|
65
|
+
function tagName(elm) {
|
|
66
|
+
return elm.tagName;
|
|
67
|
+
}
|
|
68
|
+
function setTextContent(node, text) {
|
|
69
|
+
node.textContent = text;
|
|
70
|
+
}
|
|
71
|
+
function getTextContent(node) {
|
|
72
|
+
return node.textContent;
|
|
73
|
+
}
|
|
74
|
+
function isElement(node) {
|
|
75
|
+
return node.nodeType === 1;
|
|
76
|
+
}
|
|
77
|
+
function isText(node) {
|
|
78
|
+
return node.nodeType === 3;
|
|
79
|
+
}
|
|
80
|
+
function isComment(node) {
|
|
81
|
+
return node.nodeType === 8;
|
|
82
|
+
}
|
|
83
|
+
function isDocumentFragment(node) {
|
|
84
|
+
return node.nodeType === 11;
|
|
85
|
+
}
|
|
86
|
+
function parseFragment(fragmentNode, parentNode) {
|
|
87
|
+
const fragment = fragmentNode;
|
|
88
|
+
fragment.parent ??= parentNode ?? null;
|
|
89
|
+
fragment.firstChildNode ??= fragmentNode.firstChild;
|
|
90
|
+
fragment.lastChildNode ??= fragmentNode.lastChild;
|
|
91
|
+
return fragment;
|
|
92
|
+
}
|
|
93
|
+
export const htmlDomApi = {
|
|
94
|
+
createElement,
|
|
95
|
+
createElementNS,
|
|
96
|
+
createTextNode,
|
|
97
|
+
createDocumentFragment,
|
|
98
|
+
createComment,
|
|
99
|
+
insertBefore,
|
|
100
|
+
removeChild,
|
|
101
|
+
appendChild,
|
|
102
|
+
parentNode,
|
|
103
|
+
nextSibling,
|
|
104
|
+
tagName,
|
|
105
|
+
setTextContent,
|
|
106
|
+
getTextContent,
|
|
107
|
+
isElement,
|
|
108
|
+
isText,
|
|
109
|
+
isComment,
|
|
110
|
+
isDocumentFragment,
|
|
111
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { attributesModule } from './attributes.js';
|
|
2
|
+
export type { Attrs } from './attributes.js';
|
|
3
|
+
export { classModule } from './class.js';
|
|
4
|
+
export type { Classes } from './class.js';
|
|
5
|
+
export { datasetModule } from './dataset.js';
|
|
6
|
+
export { eventListenersModule } from './eventlisteners.js';
|
|
7
|
+
export type { On } from './eventlisteners.js';
|
|
8
|
+
export { h } from './h.js';
|
|
9
|
+
export { init } from './init.js';
|
|
10
|
+
export type { Module } from './module.js';
|
|
11
|
+
export type { Props } from './props.js';
|
|
12
|
+
export { styleModule } from './style.js';
|
|
13
|
+
export { toVNode } from './tovnode.js';
|
|
14
|
+
export { VNodeDataMask, vnodeDataMaskKey, type Key, type VNode, type VNodeData, } from './vnode.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/snabbdom/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,YAAY,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,YAAY,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,KAAK,GAAG,EACR,KAAK,KAAK,EACV,KAAK,SAAS,GACf,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { attributesModule } from './attributes.js';
|
|
2
|
+
export { classModule } from './class.js';
|
|
3
|
+
export { datasetModule } from './dataset.js';
|
|
4
|
+
export { eventListenersModule } from './eventlisteners.js';
|
|
5
|
+
export { h } from './h.js';
|
|
6
|
+
export { init } from './init.js';
|
|
7
|
+
export { styleModule } from './style.js';
|
|
8
|
+
export { toVNode } from './tovnode.js';
|
|
9
|
+
export { VNodeDataMask, vnodeDataMaskKey, } from './vnode.js';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type DOMAPI } from './htmldomapi.js';
|
|
2
|
+
import type { Module } from './module.js';
|
|
3
|
+
import { type VNode } from './vnode.js';
|
|
4
|
+
export type Options = {
|
|
5
|
+
experimental?: {
|
|
6
|
+
fragments?: boolean;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
/** Overrides the `import.meta.hot` gate on the dev-only duplicate sibling key
|
|
10
|
+
* warning so unit tests can force it on or off. Pass `undefined` to restore
|
|
11
|
+
* the gate. Internal, test-only. */
|
|
12
|
+
export declare const __overrideDuplicateKeyWarning: (isActive: boolean | undefined) => void;
|
|
13
|
+
export declare function init(modules: Array<Partial<Module>>, domApi?: DOMAPI, options?: Options): (oldVnode: VNode | Element | DocumentFragment, vnode: VNode) => VNode;
|
|
14
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/snabbdom/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,iBAAiB,CAAA;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAY,KAAK,KAAK,EAA2B,MAAM,YAAY,CAAA;AAwF1E,MAAM,MAAM,OAAO,GAAG;IACpB,YAAY,CAAC,EAAE;QACb,SAAS,CAAC,EAAE,OAAO,CAAA;KACpB,CAAA;CACF,CAAA;AAID;;qCAEqC;AACrC,eAAO,MAAM,6BAA6B,GACxC,UAAU,OAAO,GAAG,SAAS,KAC5B,IAEF,CAAA;AASD,wBAAgB,IAAI,CAClB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,IAmiBf,UAAU,KAAK,GAAG,OAAO,GAAG,gBAAgB,EAC5C,OAAO,KAAK,KACX,KAAK,CAiDT"}
|