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.
Files changed (84) hide show
  1. package/THIRD-PARTY-NOTICES.md +30 -0
  2. package/dist/brand/brand.d.ts +25 -0
  3. package/dist/brand/brand.d.ts.map +1 -0
  4. package/dist/brand/brand.js +50 -0
  5. package/dist/brand/index.d.ts +2 -0
  6. package/dist/brand/index.d.ts.map +1 -0
  7. package/dist/brand/index.js +1 -0
  8. package/dist/brand/public.d.ts +2 -0
  9. package/dist/brand/public.d.ts.map +1 -0
  10. package/dist/brand/public.js +1 -0
  11. package/dist/canvas/view.d.ts.map +1 -1
  12. package/dist/canvas/view.js +1 -1
  13. package/dist/devTools/protocol.d.ts +1 -1
  14. package/dist/devTools/protocol.d.ts.map +1 -1
  15. package/dist/devTools/protocol.js +1 -1
  16. package/dist/devTools/store.js +2 -2
  17. package/dist/devTools/webSocketBridge.d.ts +1 -1
  18. package/dist/devTools/webSocketBridge.js +1 -1
  19. package/dist/html/index.d.ts +18 -18
  20. package/dist/html/index.d.ts.map +1 -1
  21. package/dist/html/index.js +530 -460
  22. package/dist/html/lazy.d.ts +1 -1
  23. package/dist/html/lazy.d.ts.map +1 -1
  24. package/dist/html/lazy.js +11 -2
  25. package/dist/propsModule.d.ts +1 -1
  26. package/dist/propsModule.d.ts.map +1 -1
  27. package/dist/propsModule.js +6 -1
  28. package/dist/runtime/runtime.d.ts.map +1 -1
  29. package/dist/runtime/runtime.js +468 -278
  30. package/dist/snabbdom/attributes.d.ts +4 -0
  31. package/dist/snabbdom/attributes.d.ts.map +1 -0
  32. package/dist/snabbdom/attributes.js +63 -0
  33. package/dist/snabbdom/class.d.ts +4 -0
  34. package/dist/snabbdom/class.d.ts.map +1 -0
  35. package/dist/snabbdom/class.js +31 -0
  36. package/dist/snabbdom/dataset.d.ts +4 -0
  37. package/dist/snabbdom/dataset.d.ts.map +1 -0
  38. package/dist/snabbdom/dataset.js +42 -0
  39. package/dist/snabbdom/eventlisteners.d.ts +11 -0
  40. package/dist/snabbdom/eventlisteners.d.ts.map +1 -0
  41. package/dist/snabbdom/eventlisteners.js +85 -0
  42. package/dist/snabbdom/h.d.ts +11 -0
  43. package/dist/snabbdom/h.d.ts.map +1 -0
  44. package/dist/snabbdom/h.js +61 -0
  45. package/dist/snabbdom/hooks.d.ts +24 -0
  46. package/dist/snabbdom/hooks.d.ts.map +1 -0
  47. package/dist/snabbdom/hooks.js +1 -0
  48. package/dist/snabbdom/htmldomapi.d.ts +34 -0
  49. package/dist/snabbdom/htmldomapi.d.ts.map +1 -0
  50. package/dist/snabbdom/htmldomapi.js +111 -0
  51. package/dist/snabbdom/index.d.ts +15 -0
  52. package/dist/snabbdom/index.d.ts.map +1 -0
  53. package/dist/snabbdom/index.js +9 -0
  54. package/dist/snabbdom/init.d.ts +14 -0
  55. package/dist/snabbdom/init.d.ts.map +1 -0
  56. package/dist/snabbdom/init.js +486 -0
  57. package/dist/snabbdom/is.d.ts +3 -0
  58. package/dist/snabbdom/is.d.ts.map +1 -0
  59. package/dist/snabbdom/is.js +7 -0
  60. package/dist/snabbdom/module.d.ts +11 -0
  61. package/dist/snabbdom/module.d.ts.map +1 -0
  62. package/dist/snabbdom/module.js +1 -0
  63. package/dist/snabbdom/props.d.ts +2 -0
  64. package/dist/snabbdom/props.d.ts.map +1 -0
  65. package/dist/snabbdom/props.js +1 -0
  66. package/dist/snabbdom/style.d.ts +9 -0
  67. package/dist/snabbdom/style.d.ts.map +1 -0
  68. package/dist/snabbdom/style.js +123 -0
  69. package/dist/snabbdom/tovnode.d.ts +4 -0
  70. package/dist/snabbdom/tovnode.d.ts.map +1 -0
  71. package/dist/snabbdom/tovnode.js +69 -0
  72. package/dist/snabbdom/vnode.d.ts +46 -0
  73. package/dist/snabbdom/vnode.d.ts.map +1 -0
  74. package/dist/snabbdom/vnode.js +13 -0
  75. package/dist/vdom.d.ts +2 -2
  76. package/dist/vdom.d.ts.map +1 -1
  77. package/dist/vdom.js +1 -1
  78. package/package.json +7 -5
  79. package/dist/runtime/messagePriority.d.ts +0 -17
  80. package/dist/runtime/messagePriority.d.ts.map +0 -1
  81. package/dist/runtime/messagePriority.js +0 -33
  82. package/dist/runtime/renderLoop.d.ts +0 -27
  83. package/dist/runtime/renderLoop.d.ts.map +0 -1
  84. package/dist/runtime/renderLoop.js +0 -25
@@ -0,0 +1,4 @@
1
+ import type { Module } from './module.js';
2
+ export type Attrs = Record<string, string | number | boolean>;
3
+ export declare const attributesModule: Module;
4
+ //# sourceMappingURL=attributes.d.ts.map
@@ -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,4 @@
1
+ import type { Module } from './module.js';
2
+ export type Classes = Record<string, boolean>;
3
+ export declare const classModule: Module;
4
+ //# sourceMappingURL=class.d.ts.map
@@ -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,4 @@
1
+ import type { Module } from './module.js';
2
+ export type Dataset = Record<string, string>;
3
+ export declare const datasetModule: Module;
4
+ //# sourceMappingURL=dataset.d.ts.map
@@ -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"}