html-overlay-node 0.1.6 → 0.1.10

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/index.css CHANGED
@@ -1,232 +1,391 @@
1
- html,
2
- body {
3
- height: 100%;
4
- margin: 0;
5
- overflow: hidden;
6
- /* Prevent page scroll */
7
- }
8
-
9
- #wrap {
10
- height: 100%;
11
- width: 100%;
12
- display: flex;
13
- overflow: hidden;
14
- /* Prevent grid overflow */
15
- }
16
-
17
- .content-root {
18
- width: 100%;
19
- height: 100%;
20
- position: relative;
21
- overflow: hidden;
22
- /* KEY FIX: Prevent scroll on zoom/pan */
23
- }
24
-
25
- #cv {
26
- width: 100%;
27
- height: 100%;
28
- display: block;
29
- position: absolute;
30
- top: 0;
31
- left: 0;
32
- }
33
-
34
- button {
35
- margin-right: 8px;
36
- }
37
-
38
- /* Toolbar buttons */
39
- #toolbar button {
40
- padding: 6px 12px;
41
- background: #6366f1;
42
- color: #fff;
43
- border: none;
44
- border-radius: 4px;
45
- font-size: 12px;
46
- font-weight: 500;
47
- cursor: pointer;
48
- transition: all 0.2s ease;
49
- display: flex;
50
- align-items: center;
51
- gap: 4px;
52
- margin: 0;
53
- }
54
-
55
- #toolbar button:hover {
56
- background: #818cf8;
57
- transform: translateY(-1px);
58
- box-shadow: 0 2px 4px rgba(99, 102, 241, 0.3);
59
- }
60
-
61
- #toolbar button:active {
62
- transform: translateY(0);
63
- }
64
-
65
- /* Toolbar */
66
- #toolbar {
67
- z-index: 1000;
68
- position: absolute;
69
- top: 20px;
70
- left: 20px;
71
- display: flex;
72
- gap: 12px;
73
- align-items: center;
74
- padding: 12px 16px;
75
- background: rgba(30, 30, 36, 0.95);
76
- border-radius: 8px;
77
- border: 1px solid #444;
78
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
79
- font-family:
80
- system-ui,
81
- -apple-system,
82
- sans-serif;
83
- font-size: 13px;
84
- color: #e9e9ef;
85
- }
86
-
87
- #toolbar label {
88
- display: flex;
89
- align-items: center;
90
- gap: 6px;
91
- cursor: pointer;
92
- }
93
-
94
- #toolbar select {
95
- padding: 4px 8px;
96
- background: #1a1a1e;
97
- border: 1px solid #555;
98
- border-radius: 4px;
99
- color: #e9e9ef;
100
- font-size: 12px;
101
- }
102
-
103
- .indicator {
104
- padding: 4px 8px;
105
- background: #2a2a31;
106
- border-radius: 4px;
107
- font-size: 11px;
108
- font-weight: 500;
109
- }
110
-
111
- .indicator.active {
112
- background: #3a4a5a;
113
- color: #6cf;
114
- }
115
-
116
- /* Help Overlay */
117
- #helpOverlay {
118
- position: absolute;
119
- bottom: 20px;
120
- left: 20px;
121
- width: 320px;
122
- max-height: 500px;
123
- background: rgba(20, 20, 23, 0.95);
124
- border: 2px solid #444;
125
- border-radius: 8px;
126
- padding: 16px;
127
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.6);
128
- font-family:
129
- system-ui,
130
- -apple-system,
131
- sans-serif;
132
- font-size: 13px;
133
- color: #e9e9ef;
134
- overflow-y: auto;
135
- display: none;
136
- z-index: 1000;
137
- /* Ensure it appears above canvas */
138
- }
139
-
140
- #helpOverlay.visible {
141
- display: block;
142
- }
143
-
144
- #helpOverlay h3 {
145
- margin: 0 0 12px 0;
146
- font-size: 16px;
147
- color: #6cf;
148
- border-bottom: 1px solid #444;
149
- padding-bottom: 8px;
150
- display: flex;
151
- justify-content: space-between;
152
- align-items: center;
153
- }
154
-
155
- #helpOverlay .close-btn {
156
- cursor: pointer;
157
- font-size: 24px;
158
- line-height: 1;
159
- color: #888;
160
- transition: color 0.2s;
161
- background: none;
162
- border: none;
163
- padding: 0;
164
- width: 24px;
165
- height: 24px;
166
- display: flex;
167
- align-items: center;
168
- justify-content: center;
169
- }
170
-
171
- #helpOverlay .close-btn:hover {
172
- color: #6cf;
173
- }
174
-
175
- #helpOverlay h4 {
176
- margin: 16px 0 8px 0;
177
- font-size: 13px;
178
- color: #8aa1ff;
179
- font-weight: 600;
180
- }
181
-
182
- .shortcut-item {
183
- display: flex;
184
- justify-content: space-between;
185
- align-items: center;
186
- padding: 6px 8px;
187
- margin: 4px 0;
188
- background: rgba(42, 42, 49, 0.5);
189
- border-radius: 4px;
190
- }
191
-
192
- .shortcut-key {
193
- font-family: monospace;
194
- font-weight: bold;
195
- padding: 2px 6px;
196
- background: #1a1a1e;
197
- border: 1px solid #555;
198
- border-radius: 3px;
199
- font-size: 11px;
200
- color: #6cf;
201
- }
202
-
203
- #helpToggle {
204
- position: absolute;
205
- bottom: 20px;
206
- left: 20px;
207
- width: 40px;
208
- height: 40px;
209
- background: rgba(30, 30, 36, 0.95);
210
- border: 2px solid #444;
211
- border-radius: 50%;
212
- display: flex;
213
- align-items: center;
214
- justify-content: center;
215
- font-size: 20px;
216
- font-weight: bold;
217
- color: #6cf;
218
- cursor: pointer;
219
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
220
- transition: all 0.2s ease;
221
- z-index: 1000;
222
- /* Ensure it appears above canvas */
223
- }
224
-
225
- #helpToggle:hover {
226
- background: rgba(42, 42, 49, 0.95);
227
- transform: scale(1.05);
228
- }
229
-
230
- #helpToggle.active {
231
- background: #3a4a5a;
232
- }
1
+ :root {
2
+ /* Colors */
3
+ --color-primary: #6366f1;
4
+ --color-primary-hover: #818cf8;
5
+ --color-primary-active: #5568d0;
6
+ --color-bg-deep: rgba(10, 10, 18, 0.96);
7
+ --color-bg-surface: rgba(255, 255, 255, 0.05);
8
+ --color-bg-toolbar: rgba(12, 12, 20, 0.92);
9
+ --color-border: rgba(255, 255, 255, 0.08);
10
+ --color-border-light: rgba(255, 255, 255, 0.04);
11
+ --color-border-focus: rgba(99, 102, 241, 0.4);
12
+ --color-text-main: #f5f5f5;
13
+ --color-text-dim: #a0a0c0;
14
+ --color-text-muted: #8080a0;
15
+ --color-text-disabled: #4a4a68;
16
+
17
+ /* Layout */
18
+ --radius-xs: 1px;
19
+ --radius-sm: 2px;
20
+ --radius-md: 2px;
21
+ --radius-lg: 4px;
22
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
23
+ --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.5);
24
+ --shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.6);
25
+
26
+ /* Node Categories - Premium Palette */
27
+ --color-node-default: #3b3b4f;
28
+ --color-node-logic: #7c3aed;
29
+ --color-node-action: #059669;
30
+ --color-node-data: #2563eb;
31
+ --color-node-info: #4f46e5;
32
+ --color-node-event: #d97706;
33
+ --color-node-math: #db2777;
34
+
35
+ --font-main: "Inter", system-ui, -apple-system, sans-serif;
36
+ --font-mono: "JetBrains Mono", "SF Mono", "Cascadia Code", monospace;
37
+ }
38
+
39
+ html,
40
+ body {
41
+ height: 100%;
42
+ margin: 0;
43
+ overflow: hidden;
44
+ font-family: var(--font-main);
45
+ background-color: #0c0c14;
46
+ }
47
+
48
+ #wrap {
49
+ height: 100%;
50
+ width: 100%;
51
+ display: flex;
52
+ overflow: hidden;
53
+ }
54
+
55
+ .content-root {
56
+ width: 100%;
57
+ height: 100%;
58
+ position: relative;
59
+ overflow: hidden;
60
+ }
61
+
62
+ #cv {
63
+ width: 100%;
64
+ height: 100%;
65
+ display: block;
66
+ position: absolute;
67
+ top: 0;
68
+ left: 0;
69
+ }
70
+
71
+ /* ── Toolbar ─────────────────────────────────────────────────── */
72
+ #toolbar {
73
+ z-index: 1000;
74
+ position: absolute;
75
+ top: 16px;
76
+ left: 16px;
77
+ display: flex;
78
+ gap: 4px;
79
+ align-items: center;
80
+ padding: 6px 10px;
81
+ background: var(--color-bg-toolbar);
82
+ backdrop-filter: blur(8px);
83
+ border-radius: var(--radius-md);
84
+ border: 1px solid var(--color-border);
85
+ box-shadow: var(--shadow-sm), var(--shadow-md);
86
+ font-size: 12px;
87
+ color: var(--color-text-muted);
88
+ }
89
+
90
+ #toolbar button {
91
+ padding: 4px 10px;
92
+ background: transparent;
93
+ color: var(--color-text-muted);
94
+ border: 1px solid transparent;
95
+ border-radius: var(--radius-sm);
96
+ font-size: 11px;
97
+ font-weight: 500;
98
+ cursor: pointer;
99
+ letter-spacing: 0.4px;
100
+ transition: all 0.12s ease;
101
+ margin: 0;
102
+ white-space: nowrap;
103
+ }
104
+
105
+ #toolbar button:hover {
106
+ background: rgba(255, 255, 255, 0.05);
107
+ color: #b0b0d0;
108
+ border-color: rgba(255, 255, 255, 0.08);
109
+ }
110
+
111
+ #toolbar button:active {
112
+ background: rgba(255, 255, 255, 0.03);
113
+ }
114
+
115
+ .toolbar-sep {
116
+ width: 1px;
117
+ height: 16px;
118
+ background: rgba(255, 255, 255, 0.08);
119
+ margin: 0 6px;
120
+ flex-shrink: 0;
121
+ }
122
+
123
+ #toolbar label {
124
+ display: flex;
125
+ align-items: center;
126
+ gap: 6px;
127
+ cursor: pointer;
128
+ color: #606080;
129
+ font-size: 11px;
130
+ }
131
+
132
+ #toolbar select {
133
+ padding: 3px 24px 3px 8px;
134
+ background: var(--color-bg-surface);
135
+ border: 1px solid var(--color-border);
136
+ border-radius: var(--radius-md);
137
+ color: var(--color-text-dim);
138
+ font-size: 11px;
139
+ cursor: pointer;
140
+ outline: none;
141
+ transition: all 0.15s ease;
142
+ appearance: none;
143
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23606080' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
144
+ background-repeat: no-repeat;
145
+ background-position: right 8px center;
146
+ }
147
+
148
+ #toolbar select:hover {
149
+ border-color: var(--color-border-focus);
150
+ color: var(--color-text-main);
151
+ background-color: var(--color-bg-toolbar);
152
+ }
153
+
154
+ #toolbar select:focus {
155
+ border-color: var(--color-primary);
156
+ box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.15);
157
+ }
158
+
159
+ .indicator {
160
+ padding: 3px 8px;
161
+ background: transparent;
162
+ border: 1px solid rgba(255, 255, 255, 0.06);
163
+ border-radius: 3px;
164
+ font-size: 10px;
165
+ font-weight: 500;
166
+ letter-spacing: 0.4px;
167
+ color: #4a4a68;
168
+ text-transform: uppercase;
169
+ transition: all 0.15s ease;
170
+ }
171
+
172
+ .indicator.active {
173
+ color: #5568d0;
174
+ border-color: rgba(85, 104, 208, 0.3);
175
+ background: rgba(85, 104, 208, 0.06);
176
+ }
177
+
178
+ /* ── Help Overlay ─────────────────────────────────────────────── */
179
+ #helpOverlay {
180
+ position: absolute;
181
+ bottom: 16px;
182
+ left: 16px;
183
+ width: 300px;
184
+ max-height: 480px;
185
+ background: var(--color-bg-deep);
186
+ backdrop-filter: blur(12px);
187
+ border: 1px solid var(--color-border);
188
+ border-radius: var(--radius-lg);
189
+ padding: 14px;
190
+ box-shadow: var(--shadow-md), var(--shadow-lg);
191
+ font-size: 12px;
192
+ color: var(--color-text-muted);
193
+ overflow-y: auto;
194
+ display: none;
195
+ z-index: 1000;
196
+ scrollbar-width: thin;
197
+ scrollbar-color: rgba(255, 255, 255, 0.1) transparent;
198
+ }
199
+
200
+ #helpOverlay::-webkit-scrollbar {
201
+ width: 5px;
202
+ }
203
+
204
+ #helpOverlay::-webkit-scrollbar-track {
205
+ background: transparent;
206
+ }
207
+
208
+ #helpOverlay::-webkit-scrollbar-thumb {
209
+ background: rgba(255, 255, 255, 0.12);
210
+ border-radius: 10px;
211
+ }
212
+
213
+ #helpOverlay::-webkit-scrollbar-thumb:hover {
214
+ background: rgba(255, 255, 255, 0.2);
215
+ }
216
+
217
+ #helpOverlay.visible {
218
+ display: block;
219
+ }
220
+
221
+ #helpOverlay h3 {
222
+ margin: 0 0 10px 0;
223
+ font-size: 12px;
224
+ font-weight: 600;
225
+ color: var(--color-text-dim);
226
+ border-bottom: 1px solid var(--color-border);
227
+ padding-bottom: 8px;
228
+ display: flex;
229
+ justify-content: space-between;
230
+ align-items: center;
231
+ letter-spacing: 0.5px;
232
+ text-transform: uppercase;
233
+ }
234
+
235
+ #helpOverlay .close-btn {
236
+ cursor: pointer;
237
+ font-size: 18px;
238
+ line-height: 1;
239
+ color: #4a4a68;
240
+ transition: color 0.15s;
241
+ background: none;
242
+ border: none;
243
+ padding: 0;
244
+ width: 20px;
245
+ height: 20px;
246
+ display: flex;
247
+ align-items: center;
248
+ justify-content: center;
249
+ }
250
+
251
+ #helpOverlay .close-btn:hover {
252
+ color: #8888a8;
253
+ }
254
+
255
+ #helpOverlay h4 {
256
+ margin: 12px 0 6px 0;
257
+ font-size: 10px;
258
+ color: #4a4a68;
259
+ font-weight: 600;
260
+ text-transform: uppercase;
261
+ letter-spacing: 0.8px;
262
+ }
263
+
264
+ .shortcut-item {
265
+ display: flex;
266
+ justify-content: space-between;
267
+ align-items: center;
268
+ padding: 4px 6px;
269
+ margin: 2px 0;
270
+ border-radius: 3px;
271
+ }
272
+
273
+ .shortcut-item:hover {
274
+ background: rgba(255, 255, 255, 0.03);
275
+ }
276
+
277
+ .shortcut-item span:first-child {
278
+ font-size: 11px;
279
+ color: #68688a;
280
+ }
281
+
282
+ .shortcut-key {
283
+ font-family: var(--font-mono);
284
+ font-weight: 600;
285
+ padding: 2px 5px;
286
+ background: var(--color-bg-surface);
287
+ border: 1px solid var(--color-border);
288
+ border-radius: var(--radius-sm);
289
+ font-size: 10px;
290
+ color: var(--color-primary);
291
+ letter-spacing: 0.2px;
292
+ }
293
+
294
+ #helpToggle {
295
+ position: absolute;
296
+ bottom: 16px;
297
+ left: 16px;
298
+ width: 28px;
299
+ height: 28px;
300
+ background: var(--color-bg-toolbar);
301
+ backdrop-filter: blur(8px);
302
+ border: 1px solid var(--color-border);
303
+ border-radius: var(--radius-sm);
304
+ display: flex;
305
+ align-items: center;
306
+ justify-content: center;
307
+ font-size: 13px;
308
+ font-weight: 600;
309
+ color: var(--color-text-disabled);
310
+ cursor: pointer;
311
+ box-shadow: var(--shadow-sm);
312
+ transition: all 0.12s ease;
313
+ z-index: 1000;
314
+ }
315
+
316
+ #helpToggle:hover {
317
+ background: var(--color-bg-deep);
318
+ color: var(--color-text-dim);
319
+ border-color: var(--color-border-focus);
320
+ }
321
+
322
+ #helpToggle.active {
323
+ color: var(--color-primary);
324
+ border-color: var(--color-primary-active);
325
+ background: rgba(99, 102, 241, 0.08);
326
+ }
327
+
328
+ /* ── Premium Components ───────────────────────────────────────── */
329
+ .premium-input {
330
+ width: 100%;
331
+ padding: 6px 10px;
332
+ background: rgba(0, 0, 0, 0.4) !important;
333
+ border: 1px solid rgba(255, 255, 255, 0.1) !important;
334
+ border-radius: var(--radius-sm) !important;
335
+ color: var(--color-text-main) !important;
336
+ font-size: 11px !important;
337
+ font-family: var(--font-mono) !important;
338
+ outline: none !important;
339
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1) !important;
340
+ box-sizing: border-box !important;
341
+ pointer-events: auto !important;
342
+ }
343
+
344
+ .premium-input:focus {
345
+ border-color: var(--color-primary) !important;
346
+ background: rgba(0, 0, 0, 0.6) !important;
347
+ box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.15) !important;
348
+ }
349
+
350
+ .premium-button {
351
+ padding: 4px 12px;
352
+ background: rgba(99, 102, 241, 0.1);
353
+ border: 1px solid rgba(99, 102, 241, 0.3);
354
+ border-radius: var(--radius-sm);
355
+ color: var(--color-primary-hover);
356
+ font-size: 11px;
357
+ font-weight: 600;
358
+ cursor: pointer;
359
+ transition: all 0.2s ease;
360
+ pointer-events: auto;
361
+ }
362
+
363
+ .premium-button:hover {
364
+ background: var(--color-primary);
365
+ color: white;
366
+ border-color: var(--color-primary);
367
+ }
368
+
369
+ .premium-label {
370
+ color: var(--color-text-muted);
371
+ font-size: 10px;
372
+ font-weight: 600;
373
+ letter-spacing: 0.05em;
374
+ text-transform: uppercase;
375
+ margin-bottom: 6px;
376
+ display: block;
377
+ }
378
+
379
+ .node-overlay {
380
+ /* Let the canvas renderer handle the box rendering */
381
+ border-radius: var(--radius-md);
382
+ pointer-events: none;
383
+ }
384
+
385
+ .node-body {
386
+ padding-top: 10px; /* Offset to clear port labels */
387
+ }
388
+
389
+ .node-header-accent {
390
+ display: none; /* Redundant now */
391
+ }
package/package.json CHANGED
@@ -1,15 +1,16 @@
1
1
  {
2
2
  "name": "html-overlay-node",
3
- "version": "0.1.6",
4
- "description": "A customizable, LiteGraph-style node editor library with canvas rendering, HTML overlays, and flexible execution control",
5
- "main": "dist/html-overlay-node.umd.js",
6
- "module": "dist/html-overlay-node.es.js",
3
+ "version": "0.1.10",
4
+ "description": "LiteGraph-style node editor with HTML overlay support",
5
+ "main": "./src/index.js",
6
+ "module": "./src/index.js",
7
7
  "type": "module",
8
8
  "exports": {
9
- ".": {
10
- "import": "./dist/html-overlay-node.es.js",
11
- "require": "./dist/html-overlay-node.umd.js"
12
- }
9
+ ".": "./src/index.js",
10
+ "./nodes": "./src/nodes/index.js",
11
+ "./defaults": "./src/defaults/index.js",
12
+ "./index.css": "./index.css",
13
+ "./src/ui/PropertyPanel.css": "./src/ui/PropertyPanel.css"
13
14
  },
14
15
  "files": [
15
16
  "dist",