@derivesome/tree 0.1.1

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 (113) hide show
  1. package/.package.json.~undo-tree~ +4 -0
  2. package/.tsconfig.json.~undo-tree~ +4 -0
  3. package/dist/cjs/brands.d.ts +3 -0
  4. package/dist/cjs/brands.d.ts.map +1 -0
  5. package/dist/cjs/brands.js +5 -0
  6. package/dist/cjs/brands.js.map +1 -0
  7. package/dist/cjs/context.d.ts +28 -0
  8. package/dist/cjs/context.d.ts.map +1 -0
  9. package/dist/cjs/context.js +48 -0
  10. package/dist/cjs/context.js.map +1 -0
  11. package/dist/cjs/index.d.ts +6 -0
  12. package/dist/cjs/index.d.ts.map +1 -0
  13. package/dist/cjs/index.js +22 -0
  14. package/dist/cjs/index.js.map +1 -0
  15. package/dist/cjs/mount.d.ts +6 -0
  16. package/dist/cjs/mount.d.ts.map +1 -0
  17. package/dist/cjs/mount.js +209 -0
  18. package/dist/cjs/mount.js.map +1 -0
  19. package/dist/cjs/props.d.ts +12 -0
  20. package/dist/cjs/props.d.ts.map +1 -0
  21. package/dist/cjs/props.js +80 -0
  22. package/dist/cjs/props.js.map +1 -0
  23. package/dist/cjs/renderer.d.ts +29 -0
  24. package/dist/cjs/renderer.d.ts.map +1 -0
  25. package/dist/cjs/renderer.js +3 -0
  26. package/dist/cjs/renderer.js.map +1 -0
  27. package/dist/cjs/tree-node-like.d.ts +8 -0
  28. package/dist/cjs/tree-node-like.d.ts.map +1 -0
  29. package/dist/cjs/tree-node-like.js +4 -0
  30. package/dist/cjs/tree-node-like.js.map +1 -0
  31. package/dist/cjs/tree.d.ts +46 -0
  32. package/dist/cjs/tree.d.ts.map +1 -0
  33. package/dist/cjs/tree.js +154 -0
  34. package/dist/cjs/tree.js.map +1 -0
  35. package/dist/cjs/velement.d.ts +185 -0
  36. package/dist/cjs/velement.d.ts.map +1 -0
  37. package/dist/cjs/velement.js +874 -0
  38. package/dist/cjs/velement.js.map +1 -0
  39. package/dist/esm/brands.d.ts +3 -0
  40. package/dist/esm/brands.d.ts.map +1 -0
  41. package/dist/esm/brands.js +5 -0
  42. package/dist/esm/brands.js.map +1 -0
  43. package/dist/esm/context.d.ts +28 -0
  44. package/dist/esm/context.d.ts.map +1 -0
  45. package/dist/esm/context.js +48 -0
  46. package/dist/esm/context.js.map +1 -0
  47. package/dist/esm/index.d.ts +6 -0
  48. package/dist/esm/index.d.ts.map +1 -0
  49. package/dist/esm/index.js +22 -0
  50. package/dist/esm/index.js.map +1 -0
  51. package/dist/esm/mount.d.ts +6 -0
  52. package/dist/esm/mount.d.ts.map +1 -0
  53. package/dist/esm/mount.js +209 -0
  54. package/dist/esm/mount.js.map +1 -0
  55. package/dist/esm/props.d.ts +12 -0
  56. package/dist/esm/props.d.ts.map +1 -0
  57. package/dist/esm/props.js +80 -0
  58. package/dist/esm/props.js.map +1 -0
  59. package/dist/esm/renderer.d.ts +29 -0
  60. package/dist/esm/renderer.d.ts.map +1 -0
  61. package/dist/esm/renderer.js +3 -0
  62. package/dist/esm/renderer.js.map +1 -0
  63. package/dist/esm/tree-node-like.d.ts +8 -0
  64. package/dist/esm/tree-node-like.d.ts.map +1 -0
  65. package/dist/esm/tree-node-like.js +4 -0
  66. package/dist/esm/tree-node-like.js.map +1 -0
  67. package/dist/esm/tree.d.ts +46 -0
  68. package/dist/esm/tree.d.ts.map +1 -0
  69. package/dist/esm/tree.js +154 -0
  70. package/dist/esm/tree.js.map +1 -0
  71. package/dist/esm/velement.d.ts +185 -0
  72. package/dist/esm/velement.d.ts.map +1 -0
  73. package/dist/esm/velement.js +874 -0
  74. package/dist/esm/velement.js.map +1 -0
  75. package/package.json +46 -0
  76. package/package.json~ +52 -0
  77. package/src/#mount.test.ts# +372 -0
  78. package/src/.brands.ts.~undo-tree~ +6 -0
  79. package/src/.context.ts.~undo-tree~ +6 -0
  80. package/src/.index.ts.~undo-tree~ +11 -0
  81. package/src/.mount.test.ts.~undo-tree~ +438 -0
  82. package/src/.mount.ts.~undo-tree~ +70 -0
  83. package/src/.node-like.ts.~undo-tree~ +8 -0
  84. package/src/.props.ts.~undo-tree~ +125 -0
  85. package/src/.renderer.ts.~undo-tree~ +18 -0
  86. package/src/.tree-node-like.ts.~undo-tree~ +12 -0
  87. package/src/.tree.ts.~undo-tree~ +46 -0
  88. package/src/.velement.ts.~undo-tree~ +1739 -0
  89. package/src/brands.ts +2 -0
  90. package/src/brands.ts~ +0 -0
  91. package/src/context.ts +61 -0
  92. package/src/context.ts~ +0 -0
  93. package/src/index.ts +5 -0
  94. package/src/index.ts~ +4 -0
  95. package/src/mount.test.ts +405 -0
  96. package/src/mount.test.ts~ +375 -0
  97. package/src/mount.ts +332 -0
  98. package/src/mount.ts~ +306 -0
  99. package/src/node-like.ts~ +0 -0
  100. package/src/props.ts +99 -0
  101. package/src/props.ts~ +86 -0
  102. package/src/renderer.ts +37 -0
  103. package/src/renderer.ts~ +37 -0
  104. package/src/tree-node-like.ts +8 -0
  105. package/src/tree-node-like.ts~ +6 -0
  106. package/src/tree.ts +226 -0
  107. package/src/tree.ts~ +227 -0
  108. package/src/velement.ts +990 -0
  109. package/src/velement.ts~ +966 -0
  110. package/tsconfig.cjs.json +10 -0
  111. package/tsconfig.esm.json +10 -0
  112. package/tsconfig.json +23 -0
  113. package/tsconfig.json~ +23 -0
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tnu = exports.tn = void 0;
4
+ exports.isTreeNode = isTreeNode;
5
+ exports.createNode = createNode;
6
+ const core_1 = require("@derivesome/core");
7
+ const brands_1 = require("./brands");
8
+ const makeBase = (t) => {
9
+ return {
10
+ type: t,
11
+ [brands_1.TreeNodeBrand]: true,
12
+ };
13
+ };
14
+ function isTreeNode(x) {
15
+ return (0, core_1.has)(x, brands_1.TreeNodeBrand) && x[brands_1.TreeNodeBrand] === true;
16
+ }
17
+ // tn - short for (TreeNode)
18
+ var tn;
19
+ (function (tn) {
20
+ function none() {
21
+ return {
22
+ ...makeBase("void"),
23
+ props: {},
24
+ };
25
+ }
26
+ tn.none = none;
27
+ function list(items, map) {
28
+ const mapFn = map || ((x) => tnu.normalizeOne(x));
29
+ const its = (0, core_1.isReference)(items) ? items : (0, core_1.ref)(items);
30
+ return {
31
+ ...makeBase("list"),
32
+ props: {
33
+ children: its,
34
+ },
35
+ map: mapFn,
36
+ items: (0, core_1.derived)(() => its.get().map(mapFn)),
37
+ };
38
+ }
39
+ tn.list = list;
40
+ function value(v) {
41
+ return {
42
+ ...makeBase("value"),
43
+ props: {},
44
+ value: v,
45
+ };
46
+ }
47
+ tn.value = value;
48
+ function element(tag, props) {
49
+ return {
50
+ ...makeBase("element"),
51
+ tag,
52
+ props,
53
+ children: tnu.normalizeChildren(props.children),
54
+ };
55
+ }
56
+ tn.element = element;
57
+ function fn(fun, props = {}) {
58
+ return {
59
+ ...makeBase("function"),
60
+ fn: fun,
61
+ props: props,
62
+ };
63
+ }
64
+ tn.fn = fn;
65
+ })(tn || (exports.tn = tn = {}));
66
+ // tnu - short for (TreeNode Utils)
67
+ var tnu;
68
+ (function (tnu) {
69
+ tnu.normalizeOne = (x) => {
70
+ if (isTreeNode(x))
71
+ return x;
72
+ if (typeof x === "undefined" || x === null || x === false)
73
+ return tn.none();
74
+ if (typeof x === "string" ||
75
+ typeof x === "number" ||
76
+ typeof x === "boolean")
77
+ return tn.value(x);
78
+ if (Array.isArray(x)) {
79
+ if (x.length === 1) {
80
+ const first = x[0];
81
+ if (isTreeNode(first) && first.type === "list")
82
+ return first;
83
+ }
84
+ return tn.list(x.map((v) => tnu.normalizeOne(v)));
85
+ }
86
+ if (typeof x === "function")
87
+ return tn.fn((props) => tnu.normalizeOne(x(props)));
88
+ throw new Error(`normalizeOne: unhandled ${typeof x}`);
89
+ };
90
+ tnu.normalizeChildren = (x) => {
91
+ if (isTreeNode(x))
92
+ return [x];
93
+ if (typeof x === "function")
94
+ return [tn.value(x)];
95
+ if (Array.isArray(x))
96
+ return x.flatMap((v) => tnu.normalizeChildren(v));
97
+ if ((0, core_1.isReference)(x)) {
98
+ // Try to understand the intent by peeking at the value
99
+ const val = x.peek();
100
+ if (Array.isArray(val)) {
101
+ // assume we're trying to render a list
102
+ return [
103
+ tn.list((0, core_1.derived)(() => (x.get() || []).flatMap((v) => tnu.normalizeChildren(v)))),
104
+ ];
105
+ }
106
+ else if (isTreeNode(val)) {
107
+ /*
108
+ we turn this into a list so that we can allow syntax like:
109
+ ```
110
+ <div>
111
+ {derived(() => <span/>)}
112
+ </div>
113
+ ```
114
+ instead of
115
+ ```
116
+ <div>
117
+ {derived(() => [<span/>])}
118
+ </div>
119
+ ```
120
+ */
121
+ return [
122
+ tn.list((0, core_1.derived)(() => {
123
+ return tnu.normalizeChildren(x.get());
124
+ })),
125
+ ];
126
+ }
127
+ return [tn.value(x)];
128
+ }
129
+ return [tnu.normalizeOne(x)];
130
+ };
131
+ tnu.assertGetKey = (x) => {
132
+ const k = x.props.key;
133
+ if (!(typeof k === "string" || typeof k === "number"))
134
+ throw new Error(`Each item in a list must have a key`);
135
+ return k;
136
+ };
137
+ })(tnu || (exports.tnu = tnu = {}));
138
+ function createNode(tag, props, ...children) {
139
+ const normalizedProps = props ?? {};
140
+ const normalizedChildren = tnu.normalizeChildren(children);
141
+ if (typeof tag === "function") {
142
+ return tn.fn(tag, {
143
+ ...normalizedProps,
144
+ ...(normalizedChildren.length > 0
145
+ ? { children: normalizedChildren }
146
+ : {}),
147
+ });
148
+ }
149
+ return tn.element(tag, {
150
+ ...props,
151
+ children: normalizedChildren,
152
+ });
153
+ }
154
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/tree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,185 @@
1
+ export declare const enum NodeType {
2
+ ELEMENT_NODE = 1,
3
+ TEXT_NODE = 3,
4
+ COMMENT_NODE = 8,
5
+ DOCUMENT_NODE = 9,
6
+ DOCUMENT_TYPE_NODE = 10,
7
+ DOCUMENT_FRAGMENT_NODE = 11
8
+ }
9
+ export declare abstract class VNode {
10
+ abstract readonly nodeType: NodeType;
11
+ abstract readonly nodeName: string;
12
+ abstract textContent: string | null;
13
+ parentNode: VNode | null;
14
+ childNodes: VNode[];
15
+ ownerDocument: VDocument | null;
16
+ get firstChild(): VNode | null;
17
+ get lastChild(): VNode | null;
18
+ get nextSibling(): VNode | null;
19
+ get previousSibling(): VNode | null;
20
+ get parentElement(): VElement | null;
21
+ appendChild<T extends VNode>(child: T): T;
22
+ insertBefore<T extends VNode>(newChild: T, refChild: VNode | null): T;
23
+ removeChild<T extends VNode>(child: T): T;
24
+ replaceChild<T extends VNode>(newChild: VNode, oldChild: T): T;
25
+ hasChildNodes(): boolean;
26
+ contains(other: VNode | null): boolean;
27
+ cloneNode(deep?: boolean): VNode;
28
+ protected abstract _clone(deep: boolean): VNode;
29
+ /** Remove a node from its current parent before re-parenting. */
30
+ protected _removeFromParent(child: VNode): void;
31
+ }
32
+ export declare class VText extends VNode {
33
+ data: string;
34
+ readonly nodeType: NodeType.TEXT_NODE;
35
+ readonly nodeName = "#text";
36
+ constructor(data: string);
37
+ get textContent(): string;
38
+ set textContent(value: string | null);
39
+ get nodeValue(): string;
40
+ set nodeValue(value: string | null);
41
+ protected _clone(_deep: boolean): VText;
42
+ }
43
+ export declare class VComment extends VNode {
44
+ data: string;
45
+ readonly nodeType: NodeType.COMMENT_NODE;
46
+ readonly nodeName = "#comment";
47
+ constructor(data: string);
48
+ get textContent(): string;
49
+ set textContent(value: string | null);
50
+ get nodeValue(): string;
51
+ set nodeValue(value: string | null);
52
+ protected _clone(_deep: boolean): VComment;
53
+ }
54
+ export declare class VClassList {
55
+ private _el;
56
+ constructor(_el: VElement);
57
+ private _tokens;
58
+ private _write;
59
+ add(...tokens: string[]): void;
60
+ remove(...tokens: string[]): void;
61
+ toggle(token: string, force?: boolean): boolean;
62
+ contains(token: string): boolean;
63
+ replace(oldToken: string, newToken: string): boolean;
64
+ get length(): number;
65
+ toString(): string;
66
+ }
67
+ export declare class VStyle {
68
+ [prop: string]: string | ((...args: any[]) => any);
69
+ private _props;
70
+ getPropertyValue(name: string): string;
71
+ setProperty(name: string, value: string | null): void;
72
+ removeProperty(name: string): string;
73
+ get cssText(): string;
74
+ set cssText(value: string);
75
+ }
76
+ export declare class VElement extends VNode {
77
+ readonly nodeType: NodeType.ELEMENT_NODE;
78
+ readonly tagName: string;
79
+ readonly classList: VClassList;
80
+ readonly style: VStyle;
81
+ private _attrs;
82
+ private _eventListeners;
83
+ private _dataset;
84
+ constructor(tagName: string);
85
+ get nodeName(): string;
86
+ get id(): string;
87
+ set id(value: string);
88
+ get className(): string;
89
+ set className(value: string);
90
+ get dataset(): Record<string, string>;
91
+ get textContent(): string;
92
+ set textContent(value: string | null);
93
+ get innerHTML(): string;
94
+ set innerHTML(html: string);
95
+ get outerHTML(): string;
96
+ getAttribute(name: string): string | null;
97
+ setAttribute(name: string, value: string): void;
98
+ removeAttribute(name: string): void;
99
+ hasAttribute(name: string): boolean;
100
+ getAttributeNames(): string[];
101
+ getElementById(id: string): VElement | null;
102
+ getElementsByClassName(className: string): VElement[];
103
+ getElementsByTagName(tag: string): VElement[];
104
+ querySelector(selector: string): VElement | null;
105
+ querySelectorAll(selector: string): VElement[];
106
+ closest(selector: string): VElement | null;
107
+ matches(selector: string): boolean;
108
+ addEventListener(type: string, listener: VEventListenerOrObject): void;
109
+ removeEventListener(type: string, listener: VEventListenerOrObject): void;
110
+ dispatchEvent(event: VEvent): boolean;
111
+ /** Click shorthand — dispatches a "click" VEvent. */
112
+ click(): void;
113
+ get children(): VElement[];
114
+ get childElementCount(): number;
115
+ get firstElementChild(): VElement | null;
116
+ get lastElementChild(): VElement | null;
117
+ protected _clone(deep: boolean): VElement;
118
+ private _query;
119
+ private _queryAll;
120
+ }
121
+ export declare class VDocumentFragment extends VNode {
122
+ readonly nodeType: NodeType.DOCUMENT_FRAGMENT_NODE;
123
+ readonly nodeName = "#document-fragment";
124
+ get textContent(): string;
125
+ set textContent(value: string | null);
126
+ protected _clone(deep: boolean): VDocumentFragment;
127
+ }
128
+ export declare class VDocument extends VNode {
129
+ readonly nodeType: NodeType.DOCUMENT_NODE;
130
+ readonly nodeName = "#document";
131
+ body: VElement;
132
+ head: VElement;
133
+ documentElement: VElement;
134
+ constructor();
135
+ get textContent(): string | null;
136
+ set textContent(_value: string | null);
137
+ createElement(tagName: string): VElement;
138
+ createTextNode(data: string): VText;
139
+ createComment(data: string): VComment;
140
+ createDocumentFragment(): VDocumentFragment;
141
+ getElementById(id: string): VElement | null;
142
+ getElementsByClassName(className: string): VElement[];
143
+ getElementsByTagName(tag: string): VElement[];
144
+ querySelector(selector: string): VElement | null;
145
+ querySelectorAll(selector: string): VElement[];
146
+ protected _clone(deep: boolean): VDocument;
147
+ private _make;
148
+ }
149
+ export declare class VEvent {
150
+ readonly type: string;
151
+ bubbles: boolean;
152
+ cancelable: boolean;
153
+ defaultPrevented: boolean;
154
+ target: VNode | null;
155
+ currentTarget: VNode | null;
156
+ constructor(type: string, opts?: {
157
+ bubbles?: boolean;
158
+ cancelable?: boolean;
159
+ });
160
+ preventDefault(): void;
161
+ stopPropagation(): void;
162
+ stopImmediatePropagation(): void;
163
+ }
164
+ export type VEventListener = (event: VEvent) => void;
165
+ export interface VEventListenerObject {
166
+ handleEvent(event: VEvent): void;
167
+ }
168
+ export type VEventListenerOrObject = VEventListener | VEventListenerObject;
169
+ /**
170
+ * Convert any virtual DOM node to an HTML string.
171
+ *
172
+ * @param node The node to serialise.
173
+ * @param indent Indentation per level (default: `" "` — two spaces).
174
+ * Pass `""` for compact / non-indented output.
175
+ *
176
+ * - `VDocument` → `<!DOCTYPE html>\n<html>…</html>`
177
+ * - `VElement` → `<tag attrs>\n …children…\n</tag>`
178
+ * - `VText` → escaped text content
179
+ * - `VComment` → `<!--…-->`
180
+ * - `VDocumentFragment` → concatenated children
181
+ */
182
+ export declare function toHTML(node: VNode, indent?: string): string;
183
+ /** Create a fresh virtual document, ready to use like `window.document`. */
184
+ export declare function createDocument(): VDocument;
185
+ //# sourceMappingURL=velement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"velement.d.ts","sourceRoot":"","sources":["../../src/velement.ts"],"names":[],"mappings":"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"}