@hypen-space/web 0.2.6 → 0.2.7
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/dist/src/canvas/accessibility.js +29 -4
- package/dist/src/canvas/accessibility.js.map +2 -2
- package/dist/src/canvas/events.js +152 -8
- package/dist/src/canvas/events.js.map +4 -3
- package/dist/src/canvas/index.js +2116 -20
- package/dist/src/canvas/index.js.map +11 -3
- package/dist/src/canvas/input.js +152 -7
- package/dist/src/canvas/input.js.map +4 -3
- package/dist/src/canvas/layout.js +256 -11
- package/dist/src/canvas/layout.js.map +5 -3
- package/dist/src/canvas/paint.js +256 -8
- package/dist/src/canvas/paint.js.map +5 -3
- package/dist/src/canvas/renderer.js +1866 -22
- package/dist/src/canvas/renderer.js.map +10 -3
- package/dist/src/canvas/text.js +152 -7
- package/dist/src/canvas/text.js.map +4 -3
- package/dist/src/canvas/utils.js +29 -4
- package/dist/src/canvas/utils.js.map +2 -2
- package/dist/src/dom/applicators/advanced-layout.js +29 -7
- package/dist/src/dom/applicators/advanced-layout.js.map +2 -2
- package/dist/src/dom/applicators/background.js +29 -7
- package/dist/src/dom/applicators/background.js.map +2 -2
- package/dist/src/dom/applicators/border.js +29 -7
- package/dist/src/dom/applicators/border.js.map +2 -2
- package/dist/src/dom/applicators/color.js +29 -7
- package/dist/src/dom/applicators/color.js.map +2 -2
- package/dist/src/dom/applicators/display.js +29 -7
- package/dist/src/dom/applicators/display.js.map +2 -2
- package/dist/src/dom/applicators/effects.js +29 -7
- package/dist/src/dom/applicators/effects.js.map +2 -2
- package/dist/src/dom/applicators/events.js +29 -7
- package/dist/src/dom/applicators/events.js.map +2 -2
- package/dist/src/dom/applicators/font.js +29 -7
- package/dist/src/dom/applicators/font.js.map +2 -2
- package/dist/src/dom/applicators/index.js +1244 -94
- package/dist/src/dom/applicators/index.js.map +18 -3
- package/dist/src/dom/applicators/layout.js +29 -7
- package/dist/src/dom/applicators/layout.js.map +2 -2
- package/dist/src/dom/applicators/margin.js +29 -6
- package/dist/src/dom/applicators/margin.js.map +2 -2
- package/dist/src/dom/applicators/padding.js +29 -9
- package/dist/src/dom/applicators/padding.js.map +2 -2
- package/dist/src/dom/applicators/size.js +29 -7
- package/dist/src/dom/applicators/size.js.map +2 -2
- package/dist/src/dom/applicators/transform.js +29 -7
- package/dist/src/dom/applicators/transform.js.map +2 -2
- package/dist/src/dom/applicators/transition.js +29 -7
- package/dist/src/dom/applicators/transition.js.map +2 -2
- package/dist/src/dom/applicators/typography.js +29 -7
- package/dist/src/dom/applicators/typography.js.map +2 -2
- package/dist/src/dom/canvas/index.js +29 -4
- package/dist/src/dom/canvas/index.js.map +2 -2
- package/dist/src/dom/components/audio.js +29 -7
- package/dist/src/dom/components/audio.js.map +2 -2
- package/dist/src/dom/components/avatar.js +29 -7
- package/dist/src/dom/components/avatar.js.map +2 -2
- package/dist/src/dom/components/badge.js +29 -7
- package/dist/src/dom/components/badge.js.map +2 -2
- package/dist/src/dom/components/button.js +29 -7
- package/dist/src/dom/components/button.js.map +2 -2
- package/dist/src/dom/components/card.js +29 -7
- package/dist/src/dom/components/card.js.map +2 -2
- package/dist/src/dom/components/center.js +29 -7
- package/dist/src/dom/components/center.js.map +2 -2
- package/dist/src/dom/components/checkbox.js +29 -7
- package/dist/src/dom/components/checkbox.js.map +2 -2
- package/dist/src/dom/components/column.js +29 -7
- package/dist/src/dom/components/column.js.map +2 -2
- package/dist/src/dom/components/container.js +29 -7
- package/dist/src/dom/components/container.js.map +2 -2
- package/dist/src/dom/components/divider.js +29 -7
- package/dist/src/dom/components/divider.js.map +2 -2
- package/dist/src/dom/components/grid.js +29 -7
- package/dist/src/dom/components/grid.js.map +2 -2
- package/dist/src/dom/components/heading.js +29 -7
- package/dist/src/dom/components/heading.js.map +2 -2
- package/dist/src/dom/components/image.js +29 -7
- package/dist/src/dom/components/image.js.map +2 -2
- package/dist/src/dom/components/index.js +1036 -187
- package/dist/src/dom/components/index.js.map +33 -3
- package/dist/src/dom/components/input.js +29 -7
- package/dist/src/dom/components/input.js.map +2 -2
- package/dist/src/dom/components/link.js +29 -7
- package/dist/src/dom/components/link.js.map +2 -2
- package/dist/src/dom/components/list.js +29 -7
- package/dist/src/dom/components/list.js.map +2 -2
- package/dist/src/dom/components/paragraph.js +29 -7
- package/dist/src/dom/components/paragraph.js.map +2 -2
- package/dist/src/dom/components/progressbar.js +29 -7
- package/dist/src/dom/components/progressbar.js.map +2 -2
- package/dist/src/dom/components/route.js +29 -7
- package/dist/src/dom/components/route.js.map +2 -2
- package/dist/src/dom/components/router.js +29 -7
- package/dist/src/dom/components/router.js.map +2 -2
- package/dist/src/dom/components/row.js +29 -7
- package/dist/src/dom/components/row.js.map +2 -2
- package/dist/src/dom/components/select.js +29 -7
- package/dist/src/dom/components/select.js.map +2 -2
- package/dist/src/dom/components/slider.js +29 -7
- package/dist/src/dom/components/slider.js.map +2 -2
- package/dist/src/dom/components/spacer.js +29 -7
- package/dist/src/dom/components/spacer.js.map +2 -2
- package/dist/src/dom/components/spinner.js +29 -7
- package/dist/src/dom/components/spinner.js.map +2 -2
- package/dist/src/dom/components/stack.js +29 -7
- package/dist/src/dom/components/stack.js.map +2 -2
- package/dist/src/dom/components/switch.js +29 -7
- package/dist/src/dom/components/switch.js.map +2 -2
- package/dist/src/dom/components/text.js +29 -7
- package/dist/src/dom/components/text.js.map +2 -2
- package/dist/src/dom/components/textarea.js +29 -7
- package/dist/src/dom/components/textarea.js.map +2 -2
- package/dist/src/dom/components/video.js +29 -7
- package/dist/src/dom/components/video.js.map +2 -2
- package/dist/src/dom/debug.js +29 -4
- package/dist/src/dom/debug.js.map +2 -2
- package/dist/src/dom/events.js +29 -4
- package/dist/src/dom/events.js.map +2 -2
- package/dist/src/dom/index.js +2999 -64
- package/dist/src/dom/index.js.map +54 -3
- package/dist/src/dom/renderer.js +2677 -63
- package/dist/src/dom/renderer.js.map +52 -3
- package/dist/src/hypen.js +2895 -56
- package/dist/src/hypen.js.map +53 -3
- package/dist/src/index.js +5419 -81
- package/dist/src/index.js.map +63 -3
- package/package.json +2 -2
- package/dist/chunk-2s02mkzs.js +0 -32
- package/dist/chunk-2s02mkzs.js.map +0 -9
|
@@ -1,4 +1,31 @@
|
|
|
1
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
6
|
+
var __toCommonJS = (from) => {
|
|
7
|
+
var entry = __moduleCache.get(from), desc;
|
|
8
|
+
if (entry)
|
|
9
|
+
return entry;
|
|
10
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
}));
|
|
16
|
+
__moduleCache.set(from, entry);
|
|
17
|
+
return entry;
|
|
18
|
+
};
|
|
19
|
+
var __export = (target, all) => {
|
|
20
|
+
for (var name in all)
|
|
21
|
+
__defProp(target, name, {
|
|
22
|
+
get: all[name],
|
|
23
|
+
enumerable: true,
|
|
24
|
+
configurable: true,
|
|
25
|
+
set: (newValue) => all[name] = () => newValue
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
2
29
|
|
|
3
30
|
// src/canvas/accessibility.ts
|
|
4
31
|
class AccessibilityLayer {
|
|
@@ -147,6 +174,4 @@ export {
|
|
|
147
174
|
AccessibilityLayer
|
|
148
175
|
};
|
|
149
176
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
//# debugId=FEB7D90D0DE68F0B64756E2164756E21
|
|
177
|
+
//# debugId=5BEB72ED23D5405664756E2164756E21
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * Accessibility Layer\n *\n * Maintain shadow DOM for screen readers\n */\n\nimport type { VirtualNode } from \"./types.js\";\nimport { walkTree } from \"./utils.js\";\n\n/**\n * Accessibility Manager\n */\nexport class AccessibilityLayer {\n private shadowRoot: HTMLElement;\n private nodeMap = new Map<string, HTMLElement>();\n private enabled: boolean;\n\n constructor(container: HTMLElement | null, enabled: boolean = true) {\n this.enabled = enabled && typeof document !== \"undefined\";\n\n // Create shadow root container (only in browser)\n if (this.enabled && typeof document !== \"undefined\") {\n this.shadowRoot = document.createElement(\"div\");\n this.shadowRoot.setAttribute(\"role\", \"application\");\n this.shadowRoot.setAttribute(\"aria-label\", \"Hypen Canvas Application\");\n this.shadowRoot.style.position = \"absolute\";\n this.shadowRoot.style.left = \"-9999px\";\n this.shadowRoot.style.width = \"1px\";\n this.shadowRoot.style.height = \"1px\";\n this.shadowRoot.style.overflow = \"hidden\";\n\n if (container) {\n container.appendChild(this.shadowRoot);\n }\n } else {\n // Fallback for non-browser environments\n this.shadowRoot = {} as HTMLElement;\n }\n }\n\n /**\n * Sync shadow DOM with virtual tree\n */\n syncTree(root: VirtualNode): void {\n if (!this.enabled) return;\n\n // Clear existing\n this.shadowRoot.innerHTML = \"\";\n this.nodeMap.clear();\n\n // Build shadow DOM\n const shadowNode = this.createShadowNode(root);\n if (shadowNode) {\n this.shadowRoot.appendChild(shadowNode);\n }\n }\n\n /**\n * Create shadow DOM element for virtual node\n */\n private createShadowNode(node: VirtualNode): HTMLElement | null {\n if (!node.visible) return null;\n\n let element: HTMLElement;\n\n // Create appropriate HTML element\n switch (node.type.toLowerCase()) {\n case \"button\":\n element = document.createElement(\"button\");\n element.textContent = this.getNodeText(node);\n if (node.props.onclick) {\n element.setAttribute(\"aria-label\", \"Clickable button\");\n }\n break;\n\n case \"input\":\n element = document.createElement(\"input\");\n (element as HTMLInputElement).type = node.props.type || \"text\";\n (element as HTMLInputElement).value = node.props.value || \"\";\n if (node.props.placeholder) {\n (element as HTMLInputElement).placeholder = node.props.placeholder;\n }\n break;\n\n case \"textarea\":\n element = document.createElement(\"textarea\");\n (element as HTMLTextAreaElement).value = node.props.value || \"\";\n if (node.props.placeholder) {\n (element as HTMLTextAreaElement).placeholder = node.props.placeholder;\n }\n break;\n\n case \"image\":\n element = document.createElement(\"img\");\n (element as HTMLImageElement).src = node.props.src || \"\";\n (element as HTMLImageElement).alt = node.props.alt || \"Image\";\n break;\n\n case \"text\":\n element = document.createElement(\"span\");\n element.textContent = String(node.props[0] || node.props.text || \"\");\n break;\n\n case \"column\":\n case \"row\":\n case \"container\":\n case \"box\":\n element = document.createElement(\"div\");\n element.setAttribute(\"role\", node.type === \"column\" ? \"group\" : \"group\");\n break;\n\n default:\n element = document.createElement(\"div\");\n }\n\n // Set common attributes\n element.setAttribute(\"data-hypen-id\", node.id);\n\n if (node.props[\"aria-label\"]) {\n element.setAttribute(\"aria-label\", node.props[\"aria-label\"]);\n }\n\n if (node.focusable) {\n element.tabIndex = 0;\n }\n\n // Store mapping\n this.nodeMap.set(node.id, element);\n\n // Add children\n for (const child of node.children) {\n const childElement = this.createShadowNode(child);\n if (childElement) {\n element.appendChild(childElement);\n }\n }\n\n return element;\n }\n\n /**\n * Get text content from node tree\n */\n private getNodeText(node: VirtualNode): string {\n if (node.type === \"text\") {\n return String(node.props[0] || node.props.text || \"\");\n }\n\n let text = \"\";\n for (const child of node.children) {\n text += this.getNodeText(child);\n }\n return text;\n }\n\n /**\n * Focus node in shadow DOM\n */\n focusNode(nodeId: string): void {\n if (!this.enabled) return;\n\n const element = this.nodeMap.get(nodeId);\n if (element) {\n element.focus();\n }\n }\n\n /**\n * Update single node\n */\n updateNode(node: VirtualNode): void {\n if (!this.enabled) return;\n\n const element = this.nodeMap.get(node.id);\n if (!element) return;\n\n // Update text content\n if (node.type === \"text\") {\n element.textContent = String(node.props[0] || node.props.text || \"\");\n }\n\n // Update input value\n if (node.type === \"input\" || node.type === \"textarea\") {\n (element as HTMLInputElement | HTMLTextAreaElement).value = node.props.value || \"\";\n }\n\n // Update visibility\n element.style.display = node.visible ? \"\" : \"none\";\n }\n\n /**\n * Get shadow element by node ID\n */\n getElement(nodeId: string): HTMLElement | undefined {\n return this.nodeMap.get(nodeId);\n }\n\n /**\n * Enable or disable accessibility layer\n */\n setEnabled(enabled: boolean): void {\n this.enabled = enabled;\n if (!enabled && this.shadowRoot.parentElement) {\n this.shadowRoot.remove();\n }\n }\n\n /**\n * Cleanup\n */\n destroy(): void {\n if (this.shadowRoot.parentElement) {\n this.shadowRoot.remove();\n }\n this.nodeMap.clear();\n }\n}\n\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "5BEB72ED23D5405664756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -1,8 +1,154 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
6
|
+
var __toCommonJS = (from) => {
|
|
7
|
+
var entry = __moduleCache.get(from), desc;
|
|
8
|
+
if (entry)
|
|
9
|
+
return entry;
|
|
10
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
}));
|
|
16
|
+
__moduleCache.set(from, entry);
|
|
17
|
+
return entry;
|
|
18
|
+
};
|
|
19
|
+
var __export = (target, all) => {
|
|
20
|
+
for (var name in all)
|
|
21
|
+
__defProp(target, name, {
|
|
22
|
+
get: all[name],
|
|
23
|
+
enumerable: true,
|
|
24
|
+
configurable: true,
|
|
25
|
+
set: (newValue) => all[name] = () => newValue
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
29
|
+
|
|
30
|
+
// src/canvas/utils.ts
|
|
31
|
+
function parseSpacing(value) {
|
|
32
|
+
if (typeof value === "number") {
|
|
33
|
+
return { top: value, right: value, bottom: value, left: value };
|
|
34
|
+
}
|
|
35
|
+
if (typeof value === "string") {
|
|
36
|
+
const parts = value.split(/\s+/).map((v) => parseFloat(v) || 0);
|
|
37
|
+
if (parts.length === 1) {
|
|
38
|
+
return { top: parts[0], right: parts[0], bottom: parts[0], left: parts[0] };
|
|
39
|
+
}
|
|
40
|
+
if (parts.length === 2) {
|
|
41
|
+
return { top: parts[0], right: parts[1], bottom: parts[0], left: parts[1] };
|
|
42
|
+
}
|
|
43
|
+
if (parts.length === 4) {
|
|
44
|
+
return { top: parts[0], right: parts[1], bottom: parts[2], left: parts[3] };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (typeof value === "object" && value !== null) {
|
|
48
|
+
return {
|
|
49
|
+
top: parseFloat(value.top) || 0,
|
|
50
|
+
right: parseFloat(value.right) || 0,
|
|
51
|
+
bottom: parseFloat(value.bottom) || 0,
|
|
52
|
+
left: parseFloat(value.left) || 0
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return { top: 0, right: 0, bottom: 0, left: 0 };
|
|
56
|
+
}
|
|
57
|
+
function parseSize(value) {
|
|
58
|
+
if (typeof value === "number")
|
|
59
|
+
return value;
|
|
60
|
+
if (typeof value === "string") {
|
|
61
|
+
if (value === "auto")
|
|
62
|
+
return null;
|
|
63
|
+
const num = parseFloat(value);
|
|
64
|
+
return isNaN(num) ? null : num;
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
function isPointInRect(point, rect) {
|
|
69
|
+
return point.x >= rect.x && point.x <= rect.x + rect.width && point.y >= rect.y && point.y <= rect.y + rect.height;
|
|
70
|
+
}
|
|
71
|
+
function isPointInRoundedRect(point, rect, radius) {
|
|
72
|
+
const { x, y, width, height } = rect;
|
|
73
|
+
if (!isPointInRect(point, rect))
|
|
74
|
+
return false;
|
|
75
|
+
if (radius <= 0)
|
|
76
|
+
return true;
|
|
77
|
+
const px = point.x;
|
|
78
|
+
const py = point.y;
|
|
79
|
+
if (px < x + radius && py < y + radius) {
|
|
80
|
+
return Math.pow(px - (x + radius), 2) + Math.pow(py - (y + radius), 2) <= Math.pow(radius, 2);
|
|
81
|
+
}
|
|
82
|
+
if (px > x + width - radius && py < y + radius) {
|
|
83
|
+
return Math.pow(px - (x + width - radius), 2) + Math.pow(py - (y + radius), 2) <= Math.pow(radius, 2);
|
|
84
|
+
}
|
|
85
|
+
if (px < x + radius && py > y + height - radius) {
|
|
86
|
+
return Math.pow(px - (x + radius), 2) + Math.pow(py - (y + height - radius), 2) <= Math.pow(radius, 2);
|
|
87
|
+
}
|
|
88
|
+
if (px > x + width - radius && py > y + height - radius) {
|
|
89
|
+
return Math.pow(px - (x + width - radius), 2) + Math.pow(py - (y + height - radius), 2) <= Math.pow(radius, 2);
|
|
90
|
+
}
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
function mergeRects(rects) {
|
|
94
|
+
if (rects.length === 0)
|
|
95
|
+
return null;
|
|
96
|
+
if (rects.length === 1)
|
|
97
|
+
return rects[0];
|
|
98
|
+
let minX = Infinity;
|
|
99
|
+
let minY = Infinity;
|
|
100
|
+
let maxX = -Infinity;
|
|
101
|
+
let maxY = -Infinity;
|
|
102
|
+
for (const rect of rects) {
|
|
103
|
+
minX = Math.min(minX, rect.x);
|
|
104
|
+
minY = Math.min(minY, rect.y);
|
|
105
|
+
maxX = Math.max(maxX, rect.x + rect.width);
|
|
106
|
+
maxY = Math.max(maxY, rect.y + rect.height);
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
x: minX,
|
|
110
|
+
y: minY,
|
|
111
|
+
width: maxX - minX,
|
|
112
|
+
height: maxY - minY
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function createFontString(fontSize, fontWeight, fontFamily) {
|
|
116
|
+
return `${fontWeight} ${fontSize}px ${fontFamily}`;
|
|
117
|
+
}
|
|
118
|
+
function walkTree(node, callback) {
|
|
119
|
+
callback(node);
|
|
120
|
+
for (const child of node.children) {
|
|
121
|
+
walkTree(child, callback);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function findNodeById(root, id) {
|
|
125
|
+
if (root.id === id)
|
|
126
|
+
return root;
|
|
127
|
+
for (const child of root.children) {
|
|
128
|
+
const found = findNodeById(child, id);
|
|
129
|
+
if (found)
|
|
130
|
+
return found;
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
function getAbsoluteBounds(node) {
|
|
135
|
+
if (!node.layout)
|
|
136
|
+
return null;
|
|
137
|
+
let x = node.layout.x;
|
|
138
|
+
let y = node.layout.y;
|
|
139
|
+
let current = node.parent;
|
|
140
|
+
while (current && current.layout) {
|
|
141
|
+
x += current.layout.contentX;
|
|
142
|
+
y += current.layout.contentY;
|
|
143
|
+
current = current.parent;
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
x,
|
|
147
|
+
y,
|
|
148
|
+
width: node.layout.width,
|
|
149
|
+
height: node.layout.height
|
|
150
|
+
};
|
|
151
|
+
}
|
|
6
152
|
|
|
7
153
|
// src/canvas/events.ts
|
|
8
154
|
class CanvasEventManager {
|
|
@@ -193,6 +339,4 @@ export {
|
|
|
193
339
|
CanvasEventManager
|
|
194
340
|
};
|
|
195
341
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
//# debugId=4735E18D82AF967764756E2164756E21
|
|
342
|
+
//# debugId=9F00A92219A2903C64756E2164756E21
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/canvas/events.ts"],
|
|
3
|
+
"sources": ["../src/canvas/utils.ts", "../src/canvas/events.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
+
"/**\n * Canvas Renderer Utilities\n *\n * Common utility functions\n */\n\nimport type { BoxSpacing, Rectangle, Point, VirtualNode } from \"./types.js\";\n\n/**\n * Parse spacing value (margin, padding)\n * Supports: number, \"10\", \"10 20\", \"10 20 30 40\"\n */\nexport function parseSpacing(value: any): BoxSpacing {\n if (typeof value === \"number\") {\n return { top: value, right: value, bottom: value, left: value };\n }\n\n if (typeof value === \"string\") {\n const parts = value.split(/\\s+/).map((v) => parseFloat(v) || 0);\n if (parts.length === 1) {\n return { top: parts[0], right: parts[0], bottom: parts[0], left: parts[0] };\n }\n if (parts.length === 2) {\n return { top: parts[0], right: parts[1], bottom: parts[0], left: parts[1] };\n }\n if (parts.length === 4) {\n return { top: parts[0], right: parts[1], bottom: parts[2], left: parts[3] };\n }\n }\n\n if (typeof value === \"object\" && value !== null) {\n return {\n top: parseFloat(value.top) || 0,\n right: parseFloat(value.right) || 0,\n bottom: parseFloat(value.bottom) || 0,\n left: parseFloat(value.left) || 0,\n };\n }\n\n return { top: 0, right: 0, bottom: 0, left: 0 };\n}\n\n/**\n * Parse size value (width, height)\n * Returns pixel value or null for \"auto\"\n */\nexport function parseSize(value: any): number | null {\n if (typeof value === \"number\") return value;\n if (typeof value === \"string\") {\n if (value === \"auto\") return null;\n const num = parseFloat(value);\n return isNaN(num) ? null : num;\n }\n return null;\n}\n\n/**\n * Check if point is inside rectangle\n */\nexport function isPointInRect(point: Point, rect: Rectangle): boolean {\n return (\n point.x >= rect.x &&\n point.x <= rect.x + rect.width &&\n point.y >= rect.y &&\n point.y <= rect.y + rect.height\n );\n}\n\n/**\n * Check if point is inside rounded rectangle\n */\nexport function isPointInRoundedRect(\n point: Point,\n rect: Rectangle,\n radius: number\n): boolean {\n const { x, y, width, height } = rect;\n\n // Quick reject if outside bounding box\n if (!isPointInRect(point, rect)) return false;\n\n // No radius means simple rectangle\n if (radius <= 0) return true;\n\n const px = point.x;\n const py = point.y;\n\n // Check corners\n // Top-left\n if (px < x + radius && py < y + radius) {\n return Math.pow(px - (x + radius), 2) + Math.pow(py - (y + radius), 2) <= Math.pow(radius, 2);\n }\n\n // Top-right\n if (px > x + width - radius && py < y + radius) {\n return (\n Math.pow(px - (x + width - radius), 2) + Math.pow(py - (y + radius), 2) <=\n Math.pow(radius, 2)\n );\n }\n\n // Bottom-left\n if (px < x + radius && py > y + height - radius) {\n return (\n Math.pow(px - (x + radius), 2) + Math.pow(py - (y + height - radius), 2) <=\n Math.pow(radius, 2)\n );\n }\n\n // Bottom-right\n if (px > x + width - radius && py > y + height - radius) {\n return (\n Math.pow(px - (x + width - radius), 2) + Math.pow(py - (y + height - radius), 2) <=\n Math.pow(radius, 2)\n );\n }\n\n // Inside rectangle\n return true;\n}\n\n/**\n * Merge rectangles into bounding box\n */\nexport function mergeRects(rects: Rectangle[]): Rectangle | null {\n if (rects.length === 0) return null;\n if (rects.length === 1) return rects[0];\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const rect of rects) {\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\n\n/**\n * Create a canvas font string from font style\n */\nexport function createFontString(\n fontSize: number,\n fontWeight: string | number,\n fontFamily: string\n): string {\n return `${fontWeight} ${fontSize}px ${fontFamily}`;\n}\n\n/**\n * Walk tree depth-first\n */\nexport function walkTree(node: VirtualNode, callback: (node: VirtualNode) => void): void {\n callback(node);\n for (const child of node.children) {\n walkTree(child, callback);\n }\n}\n\n/**\n * Find node by ID in tree\n */\nexport function findNodeById(root: VirtualNode, id: string): VirtualNode | null {\n if (root.id === id) return root;\n\n for (const child of root.children) {\n const found = findNodeById(child, id);\n if (found) return found;\n }\n\n return null;\n}\n\n/**\n * Get absolute bounds of node (including transformations)\n */\nexport function getAbsoluteBounds(node: VirtualNode): Rectangle | null {\n if (!node.layout) return null;\n\n let x = node.layout.x;\n let y = node.layout.y;\n\n // Walk up tree to accumulate offsets\n let current = node.parent;\n while (current && current.layout) {\n x += current.layout.contentX;\n y += current.layout.contentY;\n current = current.parent;\n }\n\n return {\n x,\n y,\n width: node.layout.width,\n height: node.layout.height,\n };\n}\n\n\n\n\n\n\n\n\n\n\n\n",
|
|
5
6
|
"/**\n * Event System\n *\n * Hit testing and event handling for canvas nodes\n */\n\nimport type { VirtualNode, Point } from \"./types.js\";\nimport { isPointInRoundedRect, getAbsoluteBounds } from \"./utils.js\";\n\n// Interface for the engine that CanvasEventManager needs\ninterface IEngine {\n dispatchAction(name: string, payload?: any): void;\n}\n\n/**\n * Canvas Event Manager\n */\nexport class CanvasEventManager {\n private canvas: HTMLCanvasElement;\n private engine: IEngine;\n private rootNode: VirtualNode | null = null;\n private hoveredNode: VirtualNode | null = null;\n private focusedNode: VirtualNode | null = null;\n private mouseDownNode: VirtualNode | null = null;\n\n constructor(canvas: HTMLCanvasElement, engine: IEngine) {\n this.canvas = canvas;\n this.engine = engine;\n this.setupEventListeners();\n }\n\n /**\n * Set the root node for hit testing\n */\n setRootNode(node: VirtualNode | null): void {\n this.rootNode = node;\n }\n\n /**\n * Setup canvas event listeners\n */\n private setupEventListeners(): void {\n this.canvas.addEventListener(\"mousemove\", this.onMouseMove.bind(this));\n this.canvas.addEventListener(\"mousedown\", this.onMouseDown.bind(this));\n this.canvas.addEventListener(\"mouseup\", this.onMouseUp.bind(this));\n this.canvas.addEventListener(\"click\", this.onClick.bind(this));\n this.canvas.addEventListener(\"dblclick\", this.onDoubleClick.bind(this));\n this.canvas.addEventListener(\"keydown\", this.onKeyDown.bind(this));\n this.canvas.addEventListener(\"keyup\", this.onKeyUp.bind(this));\n }\n\n /**\n * Get canvas coordinates from mouse event\n */\n private getCanvasCoordinates(e: MouseEvent): Point {\n const rect = this.canvas.getBoundingClientRect();\n const scaleX = this.canvas.width / rect.width;\n const scaleY = this.canvas.height / rect.height;\n\n return {\n x: (e.clientX - rect.left) * scaleX,\n y: (e.clientY - rect.top) * scaleY,\n };\n }\n\n /**\n * Find node at canvas coordinates\n */\n private hitTest(point: Point): VirtualNode | null {\n if (!this.rootNode) return null;\n return this.hitTestNode(this.rootNode, point);\n }\n\n /**\n * Recursively test node and children\n */\n private hitTestNode(node: VirtualNode, point: Point): VirtualNode | null {\n if (!node.visible || !node.layout) return null;\n\n const bounds = getAbsoluteBounds(node);\n if (!bounds) return null;\n\n // Test children first (front to back)\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n const hit = this.hitTestNode(child, point);\n if (hit) return hit;\n }\n\n // Test this node\n const radius = node.layout.border.radius;\n if (isPointInRoundedRect(point, bounds, radius)) {\n return node;\n }\n\n return null;\n }\n\n /**\n * Handle mouse move\n */\n private onMouseMove(e: MouseEvent): void {\n const point = this.getCanvasCoordinates(e);\n const node = this.hitTest(point);\n\n // Update hover state\n if (node !== this.hoveredNode) {\n // Leave old node\n if (this.hoveredNode) {\n this.hoveredNode.hovered = false;\n this.dispatchNodeEvent(this.hoveredNode, \"mouseleave\", {});\n }\n\n // Enter new node\n this.hoveredNode = node;\n if (node) {\n node.hovered = true;\n this.dispatchNodeEvent(node, \"mouseenter\", {});\n }\n\n // Update cursor\n this.updateCursor(node);\n\n // Request redraw for hover effects\n this.requestRedraw();\n }\n }\n\n /**\n * Handle mouse down\n */\n private onMouseDown(e: MouseEvent): void {\n const point = this.getCanvasCoordinates(e);\n const node = this.hitTest(point);\n\n this.mouseDownNode = node;\n\n if (node && node.clickable) {\n this.dispatchNodeEvent(node, \"mousedown\", {\n button: e.button,\n clientX: e.clientX,\n clientY: e.clientY,\n });\n }\n\n // Update focus\n if (node && node.focusable) {\n this.setFocus(node);\n } else {\n this.setFocus(null);\n }\n }\n\n /**\n * Handle mouse up\n */\n private onMouseUp(e: MouseEvent): void {\n const point = this.getCanvasCoordinates(e);\n const node = this.hitTest(point);\n\n if (node && node.clickable) {\n this.dispatchNodeEvent(node, \"mouseup\", {\n button: e.button,\n clientX: e.clientX,\n clientY: e.clientY,\n });\n }\n\n this.mouseDownNode = null;\n }\n\n /**\n * Handle click\n */\n private onClick(e: MouseEvent): void {\n const point = this.getCanvasCoordinates(e);\n const node = this.hitTest(point);\n\n if (node && node.clickable && node === this.mouseDownNode) {\n this.dispatchNodeEvent(node, \"click\", {\n button: e.button,\n clientX: e.clientX,\n clientY: e.clientY,\n });\n }\n }\n\n /**\n * Handle double click\n */\n private onDoubleClick(e: MouseEvent): void {\n const point = this.getCanvasCoordinates(e);\n const node = this.hitTest(point);\n\n if (node && node.clickable) {\n this.dispatchNodeEvent(node, \"dblclick\", {\n button: e.button,\n clientX: e.clientX,\n clientY: e.clientY,\n });\n }\n }\n\n /**\n * Handle keyboard events\n */\n private onKeyDown(e: KeyboardEvent): void {\n if (this.focusedNode) {\n this.dispatchNodeEvent(this.focusedNode, \"keydown\", {\n key: e.key,\n code: e.code,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n });\n }\n }\n\n private onKeyUp(e: KeyboardEvent): void {\n if (this.focusedNode) {\n this.dispatchNodeEvent(this.focusedNode, \"keyup\", {\n key: e.key,\n code: e.code,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n });\n }\n }\n\n /**\n * Set focused node\n */\n private setFocus(node: VirtualNode | null): void {\n if (node === this.focusedNode) return;\n\n if (this.focusedNode) {\n this.focusedNode.focused = false;\n this.dispatchNodeEvent(this.focusedNode, \"blur\", {});\n }\n\n this.focusedNode = node;\n\n if (node) {\n node.focused = true;\n this.dispatchNodeEvent(node, \"focus\", {});\n }\n\n this.requestRedraw();\n }\n\n /**\n * Update cursor based on node\n */\n private updateCursor(node: VirtualNode | null): void {\n if (!node) {\n this.canvas.style.cursor = \"default\";\n return;\n }\n\n const cursor = node.props.cursor || (node.clickable ? \"pointer\" : \"default\");\n this.canvas.style.cursor = cursor;\n }\n\n /**\n * Dispatch event to engine\n */\n private dispatchNodeEvent(node: VirtualNode, eventType: string, data: any): void {\n // Check if node has action handler for this event\n const actionName = node.props[`on${eventType}`] || node.props[eventType];\n\n if (actionName && typeof actionName === \"string\") {\n // Dispatch to engine\n this.engine.dispatchAction(actionName, {\n type: eventType,\n nodeId: node.id,\n timestamp: Date.now(),\n ...data,\n });\n }\n }\n\n /**\n * Request redraw from renderer\n */\n private requestRedraw(): void {\n // This will be called via a callback set by the renderer\n // For now, dispatch a custom event\n this.canvas.dispatchEvent(new CustomEvent(\"hypen:redraw\"));\n }\n\n /**\n * Cleanup\n */\n destroy(): void {\n // Remove event listeners if needed\n }\n}\n\n\n\n\n\n\n\n\n\n"
|
|
6
7
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "9F00A92219A2903C64756E2164756E21",
|
|
9
10
|
"names": []
|
|
10
11
|
}
|