@design.estate/dees-wcctools 1.0.101 → 1.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.
@@ -19,33 +19,59 @@ let WccProperties = class WccProperties extends DeesElement {
19
19
  this.selectedViewport = 'native';
20
20
  this.selectedTheme = 'dark';
21
21
  this.warning = null;
22
+ this.isFullscreen = false;
22
23
  this.propertyContent = [];
24
+ this.editingProperties = [];
25
+ this.editorHeight = 300;
23
26
  }
24
27
  render() {
25
28
  return html `
26
29
  <style>
27
30
  :host {
28
- font-family: 'Roboto', sans-serif;
31
+ /* CSS Variables - Always dark theme */
32
+ --background: #0a0a0a;
33
+ --foreground: #e5e5e5;
34
+ --card: #0f0f0f;
35
+ --card-foreground: #f0f0f0;
36
+ --muted: #1a1a1a;
37
+ --muted-foreground: #666;
38
+ --accent: #222;
39
+ --accent-foreground: #fff;
40
+ --border: rgba(255, 255, 255, 0.06);
41
+ --input: #141414;
42
+ --primary: #3b82f6;
43
+ --primary-foreground: #fff;
44
+ --ring: #3b82f6;
45
+ --radius: 4px;
46
+ --radius-sm: 2px;
47
+ --radius-md: 4px;
48
+ --radius-lg: 6px;
49
+
50
+ /* Base styles */
51
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
29
52
  box-sizing: border-box;
30
53
  position: absolute;
31
54
  left: 200px;
32
- height: 100px;
55
+ height: ${this.editingProperties.length > 0 ? 100 + this.editorHeight : 100}px;
33
56
  bottom: 0px;
34
57
  right: 0px;
35
58
  overflow: hidden;
36
- background: #111;
37
- color: #fff;
59
+ background: var(--background);
60
+ color: var(--foreground);
61
+ display: ${this.isFullscreen ? 'none' : 'block'};
38
62
  }
39
63
  .grid {
40
64
  display: grid;
41
- grid-template-columns: auto 150px 300px 70px;
65
+ grid-template-columns: 1fr 150px 300px 70px;
66
+ height: 100%;
42
67
  }
43
68
  .properties {
44
- border-right: 1px solid #999;
45
- height: 100px;
69
+ background: transparent;
46
70
  overflow-y: auto;
47
71
  display: grid;
48
- grid-template-columns: 33% 33% 33%;
72
+ grid-template-columns: repeat(3, 1fr);
73
+ border-right: 1px solid var(--border);
74
+ align-content: start;
49
75
  }
50
76
 
51
77
  .material-symbols-outlined {
@@ -64,152 +90,547 @@ let WccProperties = class WccProperties extends DeesElement {
64
90
  }
65
91
 
66
92
  .properties .property {
67
- padding: 5px;
68
- background: #444;
69
- border: 1px solid #000;
93
+ padding: 0.4rem;
94
+ background: transparent;
95
+ border-right: 1px solid var(--border);
96
+ border-bottom: 1px solid var(--border);
97
+ transition: all 0.15s ease;
98
+ }
99
+
100
+ .properties .property:hover {
101
+ background: rgba(255, 255, 255, 0.02);
102
+ }
103
+
104
+ .properties .property-label {
105
+ font-size: 0.65rem;
106
+ font-weight: 400;
107
+ color: #888;
108
+ margin-bottom: 0.2rem;
109
+ text-transform: capitalize;
110
+ white-space: nowrap;
111
+ overflow: hidden;
112
+ text-overflow: ellipsis;
70
113
  }
71
114
 
72
- .properties input,
115
+ .properties input[type="text"],
116
+ .properties input[type="number"],
73
117
  .properties select {
74
118
  display: block;
75
119
  width: 100%;
76
- background: #333;
77
- border: none;
78
- color: #fff;
120
+ padding: 0.25rem 0.4rem;
121
+ background: var(--input);
122
+ border: 1px solid transparent;
123
+ color: var(--foreground);
124
+ border-radius: var(--radius-sm);
125
+ font-size: 0.7rem;
126
+ transition: all 0.15s ease;
127
+ outline: none;
128
+ }
129
+
130
+ .properties input[type="text"]:focus,
131
+ .properties input[type="number"]:focus,
132
+ .properties select:focus {
133
+ border-color: var(--primary);
134
+ background: rgba(59, 130, 246, 0.1);
135
+ }
136
+
137
+ .properties input[type="checkbox"] {
138
+ width: 1rem;
139
+ height: 1rem;
140
+ cursor: pointer;
141
+ accent-color: var(--primary);
142
+ }
143
+
144
+ .properties .editor-button {
145
+ padding: 0.25rem 0.5rem;
146
+ background: var(--input);
147
+ border: 1px solid transparent;
148
+ border-radius: var(--radius-sm);
149
+ color: var(--foreground);
150
+ font-size: 0.7rem;
151
+ cursor: pointer;
152
+ transition: all 0.15s ease;
153
+ text-align: center;
154
+ }
155
+
156
+ .properties .editor-button:hover {
157
+ border-color: var(--primary);
158
+ background: rgba(59, 130, 246, 0.1);
79
159
  }
80
160
 
81
161
  .viewportSelector,
82
162
  .themeSelector {
83
163
  user-select: none;
84
- border-right: 1px solid #999;
164
+ background: transparent;
165
+ display: flex;
166
+ flex-direction: column;
167
+ border-right: 1px solid var(--border);
85
168
  }
86
169
  .selectorButtons2 {
87
170
  display: grid;
88
- grid-template-columns: 50% 50%;
171
+ grid-template-columns: 1fr 1fr;
172
+ flex: 1;
89
173
  }
90
174
  .selectorButtons4 {
91
175
  display: grid;
92
- grid-template-columns: 25% 25% 25% 25%;
176
+ grid-template-columns: repeat(4, 1fr);
177
+ flex: 1;
93
178
  }
94
179
  .button {
95
- padding: 10px;
180
+ display: flex;
181
+ flex-direction: column;
182
+ align-items: center;
183
+ justify-content: center;
184
+ padding: 0.5rem 0.25rem;
96
185
  text-align: center;
97
- border: 1px solid #000;
98
- transition: all 0.2s;
186
+ background: transparent;
187
+ border: 1px solid var(--border);
188
+ transition: all 0.15s ease;
189
+ cursor: pointer;
190
+ font-size: 0.65rem;
191
+ gap: 0.2rem;
192
+ color: #999;
99
193
  }
194
+
100
195
  .button:hover {
101
- color: #333;
102
- background: #fff;
196
+ background: rgba(59, 130, 246, 0.05);
197
+ color: #bbb;
103
198
  }
104
199
 
105
200
  .button.selected {
106
- background: #455a64;
201
+ background: rgba(59, 130, 246, 0.15);
202
+ color: var(--primary);
203
+ border-color: rgba(59, 130, 246, 0.3);
107
204
  }
108
205
 
109
206
  .button.selected:hover {
110
- color: #ffffff;
111
- background: #455a64;
207
+ background: rgba(59, 130, 246, 0.2);
208
+ }
209
+
210
+ .button .material-symbols-outlined {
211
+ font-size: 18px;
212
+ font-variation-settings: 'FILL' 0, 'wght' 300;
213
+ }
214
+
215
+ .button.selected .material-symbols-outlined {
216
+ font-variation-settings: 'FILL' 1, 'wght' 400;
112
217
  }
113
218
 
114
219
  .panelheading {
115
- padding: 5px;
116
- font-weight: bold;
117
- background: #444;
118
- border: 1px solid #000;
220
+ padding: 0.3rem 0.5rem;
221
+ font-weight: 500;
222
+ font-size: 0.65rem;
223
+ background: rgba(59, 130, 246, 0.03);
224
+ border-bottom: 1px solid var(--border);
225
+ color: #888;
226
+ text-transform: uppercase;
227
+ letter-spacing: 0.08em;
119
228
  }
120
229
  .docs {
121
- text-align: center;
122
- line-height: 100px;
230
+ display: flex;
231
+ align-items: center;
232
+ justify-content: center;
123
233
  text-transform: uppercase;
234
+ background: transparent;
235
+ cursor: pointer;
236
+ font-size: 0.65rem;
237
+ font-weight: 500;
238
+ letter-spacing: 0.08em;
239
+ transition: all 0.15s ease;
240
+ color: #666;
124
241
  }
125
242
 
126
243
  .docs:hover {
127
- color: #333;
128
- background: #fff;
244
+ background: rgba(59, 130, 246, 0.05);
245
+ color: #999;
129
246
  }
130
247
 
131
248
  .warning {
132
249
  position: absolute;
133
- background: #222;
134
- color: #CCC;
135
- top: 0px;
136
- bottom: 0px;
137
- left: 0px;
138
- right: 520px;
139
- text-align: center;
140
- padding: 35px;
141
- font-size: 25px;
250
+ background: rgba(20, 20, 20, 0.8);
251
+ color: #888;
252
+ top: 0.5rem;
253
+ bottom: 0.5rem;
254
+ left: 0.5rem;
255
+ right: calc(520px + 0.5rem);
256
+ display: flex;
257
+ align-items: center;
258
+ justify-content: center;
259
+ padding: 1.5rem;
260
+ font-size: 0.85rem;
261
+ border-radius: var(--radius-md);
262
+ border: 1px solid var(--border);
263
+ backdrop-filter: blur(8px);
264
+ }
265
+
266
+ .advanced-editor-container {
267
+ position: absolute;
268
+ left: 0;
269
+ right: 0;
270
+ top: 0;
271
+ height: ${this.editorHeight}px;
272
+ background: #050505;
273
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
274
+ display: flex;
275
+ flex-direction: column;
276
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
277
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -1px rgba(0, 0, 0, 0.2);
278
+ }
279
+
280
+ .editor-header-bar {
281
+ padding: 0.5rem 0.75rem;
282
+ background: transparent;
283
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
284
+ display: flex;
285
+ justify-content: space-between;
286
+ align-items: center;
287
+ height: 36px;
288
+ }
289
+
290
+ .editor-header-title {
291
+ font-size: 0.7rem;
292
+ font-weight: 500;
293
+ color: #666;
294
+ text-transform: uppercase;
295
+ letter-spacing: 0.08em;
296
+ }
297
+
298
+ .editor-close-all {
299
+ padding: 0.25rem 0.5rem;
300
+ background: transparent;
301
+ border: 1px solid rgba(255, 255, 255, 0.08);
302
+ border-radius: var(--radius-sm);
303
+ color: #999;
304
+ font-size: 0.65rem;
305
+ font-weight: 500;
306
+ cursor: pointer;
307
+ transition: all 0.15s ease;
308
+ }
309
+
310
+ .editor-close-all:hover {
311
+ background: rgba(255, 255, 255, 0.05);
312
+ border-color: rgba(255, 255, 255, 0.12);
313
+ color: #f87171;
314
+ }
315
+
316
+ .editors-container {
317
+ flex: 1;
318
+ display: flex;
319
+ overflow-x: auto;
320
+ overflow-y: hidden;
321
+ gap: 0;
322
+ background: rgba(255, 255, 255, 0.02);
323
+ padding: 0.75rem;
324
+ }
325
+
326
+ .editors-container::-webkit-scrollbar {
327
+ height: 8px;
328
+ }
329
+
330
+ .editors-container::-webkit-scrollbar-track {
331
+ background: rgba(255, 255, 255, 0.02);
332
+ border-radius: 4px;
333
+ }
334
+
335
+ .editors-container::-webkit-scrollbar-thumb {
336
+ background: rgba(255, 255, 255, 0.08);
337
+ border-radius: 4px;
338
+ }
339
+
340
+ .editors-container::-webkit-scrollbar-thumb:hover {
341
+ background: rgba(255, 255, 255, 0.12);
342
+ }
343
+
344
+ .editor-instance {
345
+ min-width: 320px;
346
+ flex: 1;
347
+ max-width: 480px;
348
+ background: rgba(10, 10, 10, 0.6);
349
+ display: flex;
350
+ flex-direction: column;
351
+ border-radius: var(--radius);
352
+ overflow: hidden;
353
+ margin-right: 0.75rem;
354
+ border: 1px solid rgba(255, 255, 255, 0.06);
355
+ transition: all 0.2s ease;
356
+ }
357
+
358
+ .editor-instance:hover {
359
+ border-color: rgba(255, 255, 255, 0.1);
360
+ }
361
+
362
+ .editor-instance:last-child {
363
+ margin-right: 0;
364
+ }
365
+
366
+ .editor-header {
367
+ padding: 0.5rem 0.75rem;
368
+ background: rgba(255, 255, 255, 0.02);
369
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
370
+ display: flex;
371
+ justify-content: space-between;
372
+ align-items: center;
373
+ height: 36px;
374
+ }
375
+
376
+ .editor-title {
377
+ font-size: 0.75rem;
378
+ font-weight: 500;
379
+ color: #999;
380
+ overflow: hidden;
381
+ text-overflow: ellipsis;
382
+ white-space: nowrap;
383
+ font-family: 'Consolas', 'Monaco', monospace;
384
+ }
385
+
386
+ .editor-actions {
387
+ display: flex;
388
+ gap: 0.25rem;
389
+ }
390
+
391
+ .editor-button {
392
+ width: 24px;
393
+ height: 24px;
394
+ padding: 0;
395
+ background: transparent;
396
+ border: none;
397
+ color: #666;
398
+ font-size: 1rem;
399
+ cursor: pointer;
400
+ transition: all 0.15s ease;
401
+ border-radius: var(--radius-sm);
402
+ display: flex;
403
+ align-items: center;
404
+ justify-content: center;
405
+ }
406
+
407
+ .editor-button:hover {
408
+ background: rgba(255, 255, 255, 0.05);
409
+ color: #999;
410
+ }
411
+
412
+ .editor-button.primary {
413
+ color: #4ade80;
414
+ }
415
+
416
+ .editor-button.primary:hover {
417
+ background: rgba(74, 222, 128, 0.1);
418
+ }
419
+
420
+ .editor-content {
421
+ flex: 1;
422
+ display: flex;
423
+ flex-direction: column;
424
+ overflow: hidden;
425
+ min-height: 0;
426
+ position: relative;
427
+ }
428
+
429
+ .editor-textarea {
430
+ width: 100%;
431
+ height: 100%;
432
+ background: transparent;
433
+ border: none;
434
+ color: #d0d0d0;
435
+ font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
436
+ font-size: 0.8125rem;
437
+ line-height: 1.6;
438
+ padding: 0.75rem;
439
+ resize: none;
440
+ outline: none;
441
+ transition: all 0.15s ease;
442
+ overflow: auto;
443
+ }
444
+
445
+ .editor-textarea:focus {
446
+ background: rgba(255, 255, 255, 0.01);
447
+ }
448
+
449
+ .editor-textarea::selection {
450
+ background: rgba(59, 130, 246, 0.3);
451
+ }
452
+
453
+ .editor-error {
454
+ position: absolute;
455
+ bottom: 0;
456
+ left: 0;
457
+ right: 0;
458
+ padding: 0.5rem 0.75rem;
459
+ background: rgba(239, 68, 68, 0.9);
460
+ backdrop-filter: blur(4px);
461
+ color: #fff;
462
+ font-size: 0.7rem;
463
+ font-weight: 500;
464
+ display: flex;
465
+ align-items: center;
466
+ gap: 0.375rem;
467
+ border-top: 1px solid rgba(239, 68, 68, 0.5);
468
+ }
469
+
470
+ .editor-error::before {
471
+ content: '!';
472
+ display: inline-flex;
473
+ width: 16px;
474
+ height: 16px;
475
+ align-items: center;
476
+ justify-content: center;
477
+ background: rgba(255, 255, 255, 0.2);
478
+ border-radius: 50%;
479
+ font-size: 0.65rem;
480
+ font-weight: bold;
481
+ }
482
+
483
+ .main-content {
484
+ position: absolute;
485
+ left: 0;
486
+ right: 0;
487
+ bottom: 0;
488
+ height: 100px;
142
489
  }
143
490
  </style>
144
- <div class="grid">
145
- <div class="properties">
146
- <div class="panelheading">Properties</div>
147
- ${this.propertyContent}
491
+ ${this.editingProperties.length > 0 ? html `
492
+ <div class="advanced-editor-container">
493
+ <div class="editor-header-bar">
494
+ <div class="editor-header-title">Property Editors</div>
495
+ <button class="editor-close-all" @click=${this.closeAllEditors}>
496
+ Close All
497
+ </button>
498
+ </div>
499
+ <div class="editors-container">
500
+ ${this.editingProperties.length === 0 ? html `
501
+ <div style="
502
+ flex: 1;
503
+ display: flex;
504
+ align-items: center;
505
+ justify-content: center;
506
+ color: #666;
507
+ font-size: 0.875rem;
508
+ text-align: center;
509
+ padding: 2rem;
510
+ ">
511
+ <div>
512
+ <div style="margin-bottom: 0.5rem; font-size: 1.5rem; opacity: 0.5;">{ }</div>
513
+ <div>No properties being edited</div>
514
+ <div style="font-size: 0.75rem; margin-top: 0.25rem; opacity: 0.7;">Click "Edit Object/Array" buttons to start editing</div>
515
+ </div>
516
+ </div>
517
+ ` : null}
518
+ ${this.editingProperties.map(prop => html `
519
+ <div class="editor-instance">
520
+ <div class="editor-header">
521
+ <div class="editor-title">${prop.name}</div>
522
+ <div class="editor-actions">
523
+ <button class="editor-button" @click=${() => this.handleEditorCancel(prop.id)}>✕</button>
524
+ <button class="editor-button primary" @click=${() => this.handleEditorSave(prop.id)}>✓</button>
525
+ </div>
526
+ </div>
527
+ <div class="editor-content">
528
+ <textarea
529
+ class="editor-textarea"
530
+ .value=${prop.editorValue}
531
+ @input=${(e) => {
532
+ const editor = this.editingProperties.find(p => p.id === prop.id);
533
+ if (editor) {
534
+ editor.editorValue = e.target.value;
535
+ editor.editorError = '';
536
+ this.requestUpdate();
537
+ }
538
+ }}
539
+ @keydown=${(e) => {
540
+ if (e.key === 'Tab') {
541
+ e.preventDefault();
542
+ const target = e.target;
543
+ const start = target.selectionStart;
544
+ const end = target.selectionEnd;
545
+ const value = target.value;
546
+ target.value = value.substring(0, start) + ' ' + value.substring(end);
547
+ target.selectionStart = target.selectionEnd = start + 2;
548
+ }
549
+ }}
550
+ ></textarea>
551
+ ${prop.editorError ? html `
552
+ <div class="editor-error">${prop.editorError}</div>
553
+ ` : null}
554
+ </div>
555
+ </div>
556
+ `)}
557
+ </div>
148
558
  </div>
149
- <div class="themeSelector">
150
- <div class="panelheading">Theme</div>
151
- <div class="selectorButtons2">
152
- <div
153
- class="button ${this.selectedTheme === 'dark' ? 'selected' : null}"
154
- @click=${() => {
559
+ ` : null}
560
+ <div class="main-content">
561
+ <div class="grid">
562
+ <div class="properties">
563
+ ${this.propertyContent}
564
+ </div>
565
+ <div class="themeSelector">
566
+ <div class="panelheading">Theme</div>
567
+ <div class="selectorButtons2">
568
+ <div
569
+ class="button ${this.selectedTheme === 'dark' ? 'selected' : null}"
570
+ @click=${() => {
155
571
  this.selectTheme('dark');
156
572
  }}
157
- >
158
- Dark<br /><i class="material-symbols-outlined">brightness_3</i>
159
- </div>
160
- <div
161
- class="button ${this.selectedTheme === 'bright' ? 'selected' : null}"
162
- @click=${() => {
573
+ >
574
+ Dark<i class="material-symbols-outlined">brightness_3</i>
575
+ </div>
576
+ <div
577
+ class="button ${this.selectedTheme === 'bright' ? 'selected' : null}"
578
+ @click=${() => {
163
579
  this.selectTheme('bright');
164
580
  }}
165
- >
166
- Bright<br /><i class="material-symbols-outlined">flare</i>
581
+ >
582
+ Bright<i class="material-symbols-outlined">flare</i>
583
+ </div>
167
584
  </div>
168
585
  </div>
169
- </div>
170
- <div class="viewportSelector">
171
- <div class="panelheading">Viewport</div>
172
- <div class="selectorButtons4">
173
- <div
174
- class="button ${this.selectedViewport === 'phone' ? 'selected' : null}"
175
- @click=${() => {
586
+ <div class="viewportSelector">
587
+ <div class="panelheading">Viewport</div>
588
+ <div class="selectorButtons4">
589
+ <div
590
+ class="button ${this.selectedViewport === 'phone' ? 'selected' : null}"
591
+ @click=${() => {
176
592
  this.selectViewport('phone');
177
593
  }}
178
- >
179
- Phone<br /><i class="material-symbols-outlined">smartphone</i>
180
- </div>
181
- <div
182
- class="button ${this.selectedViewport === 'phablet' ? 'selected' : null}"
183
- @click=${() => {
594
+ >
595
+ Phone<i class="material-symbols-outlined">smartphone</i>
596
+ </div>
597
+ <div
598
+ class="button ${this.selectedViewport === 'phablet' ? 'selected' : null}"
599
+ @click=${() => {
184
600
  this.selectViewport('phablet');
185
601
  }}
186
- >
187
- Phablet<br /><i class="material-symbols-outlined">smartphone</i>
188
- </div>
189
- <div
190
- class="button ${this.selectedViewport === 'tablet' ? 'selected' : null}"
191
- @click=${() => {
602
+ >
603
+ Phablet<i class="material-symbols-outlined">smartphone</i>
604
+ </div>
605
+ <div
606
+ class="button ${this.selectedViewport === 'tablet' ? 'selected' : null}"
607
+ @click=${() => {
192
608
  this.selectViewport('tablet');
193
609
  }}
194
- >
195
- Tablet<br /><i class="material-symbols-outlined">tablet</i>
196
- </div>
197
- <div
198
- class="button ${this.selectedViewport === 'desktop' ||
610
+ >
611
+ Tablet<i class="material-symbols-outlined">tablet</i>
612
+ </div>
613
+ <div
614
+ class="button ${this.selectedViewport === 'desktop' ||
199
615
  this.selectedViewport === 'native'
200
616
  ? 'selected'
201
617
  : null}"
202
- @click=${() => {
618
+ @click=${() => {
203
619
  this.selectViewport('native');
204
620
  }}
205
- >
206
- Desktop<br /><i class="material-symbols-outlined">desktop_windows</i>
621
+ >
622
+ Desktop<i class="material-symbols-outlined">desktop_windows</i>
623
+ </div>
207
624
  </div>
208
625
  </div>
626
+ <div class="docs" @click=${() => this.toggleFullscreen()}>
627
+ <i class="material-symbols-outlined" style="font-size: 20px;">
628
+ ${this.isFullscreen ? 'fullscreen_exit' : 'fullscreen'}
629
+ </i>
630
+ </div>
209
631
  </div>
210
- <div class="docs">Docs</div>
632
+ ${this.warning ? html `<div class="warning">${this.warning}</div>` : null}
211
633
  </div>
212
- ${this.warning ? html `<div class="warning">${this.warning}</div>` : null}
213
634
  `;
214
635
  }
215
636
  async findElementRecursively(container, elementClass, maxDepth = 5) {
@@ -331,7 +752,7 @@ let WccProperties = class WccProperties extends DeesElement {
331
752
  const propertyTypeString = await determinePropertyType(property);
332
753
  propertyArray.push(html `
333
754
  <div class="property">
334
- ${key} / ${propertyTypeString}<br />
755
+ <div class="property-label">${key} (${propertyTypeString})</div>
335
756
  ${(() => {
336
757
  switch (propertyTypeString) {
337
758
  case 'Boolean':
@@ -376,6 +797,17 @@ let WccProperties = class WccProperties extends DeesElement {
376
797
  `;
377
798
  })}
378
799
  </select>`;
800
+ case 'Object':
801
+ case 'Array':
802
+ return html `<button
803
+ class="editor-button"
804
+ style="width: 100%; margin-top: 0.25rem;"
805
+ @click="${() => this.openAdvancedEditor(key, firstFoundInstantiatedElement[key], firstFoundInstantiatedElement)}"
806
+ >
807
+ Edit ${propertyTypeString}
808
+ </button>`;
809
+ default:
810
+ return html `<div style="color: #666; font-size: 0.7rem;">Unsupported type</div>`;
379
811
  }
380
812
  })()}
381
813
  </div>
@@ -422,6 +854,81 @@ let WccProperties = class WccProperties extends DeesElement {
422
854
  }));
423
855
  this.dashboardRef.buildUrl();
424
856
  }
857
+ openAdvancedEditor(propertyName, value, element) {
858
+ // Check if this property is already being edited
859
+ const existingEditor = this.editingProperties.find(p => p.name === propertyName && p.element === element);
860
+ if (existingEditor) {
861
+ return; // Property is already open for editing
862
+ }
863
+ const newEditor = {
864
+ id: `${propertyName}-${Date.now()}`,
865
+ name: propertyName,
866
+ value: value,
867
+ element: element,
868
+ editorValue: JSON.stringify(value, null, 2),
869
+ editorError: ''
870
+ };
871
+ this.editingProperties = [...this.editingProperties, newEditor];
872
+ // Notify parent to resize frame if this is the first editor
873
+ if (this.editingProperties.length === 1) {
874
+ this.dispatchEvent(new CustomEvent('editorStateChanged', {
875
+ detail: { isOpen: true },
876
+ bubbles: true
877
+ }));
878
+ }
879
+ }
880
+ handleEditorSave(editorId) {
881
+ const editor = this.editingProperties.find(p => p.id === editorId);
882
+ if (!editor)
883
+ return;
884
+ try {
885
+ const parsedValue = JSON.parse(editor.editorValue);
886
+ editor.element[editor.name] = parsedValue;
887
+ // Remove this editor from the list
888
+ this.editingProperties = this.editingProperties.filter(p => p.id !== editorId);
889
+ // If no more editors, notify parent to resize frame
890
+ if (this.editingProperties.length === 0) {
891
+ this.dispatchEvent(new CustomEvent('editorStateChanged', {
892
+ detail: { isOpen: false },
893
+ bubbles: true
894
+ }));
895
+ }
896
+ // Refresh properties display
897
+ this.createProperties();
898
+ }
899
+ catch (error) {
900
+ // Update error for this specific editor
901
+ const editorIndex = this.editingProperties.findIndex(p => p.id === editorId);
902
+ if (editorIndex !== -1) {
903
+ this.editingProperties[editorIndex].editorError = `Invalid JSON: ${error.message}`;
904
+ this.requestUpdate();
905
+ }
906
+ }
907
+ }
908
+ handleEditorCancel(editorId) {
909
+ // Remove this editor from the list
910
+ this.editingProperties = this.editingProperties.filter(p => p.id !== editorId);
911
+ // If no more editors, notify parent to resize frame
912
+ if (this.editingProperties.length === 0) {
913
+ this.dispatchEvent(new CustomEvent('editorStateChanged', {
914
+ detail: { isOpen: false },
915
+ bubbles: true
916
+ }));
917
+ }
918
+ }
919
+ closeAllEditors() {
920
+ this.editingProperties = [];
921
+ // Notify parent to resize frame back
922
+ this.dispatchEvent(new CustomEvent('editorStateChanged', {
923
+ detail: { isOpen: false },
924
+ bubbles: true
925
+ }));
926
+ }
927
+ toggleFullscreen() {
928
+ this.dispatchEvent(new CustomEvent('toggleFullscreen', {
929
+ bubbles: true
930
+ }));
931
+ }
425
932
  };
426
933
  __decorate([
427
934
  property({
@@ -445,12 +952,20 @@ __decorate([
445
952
  property(),
446
953
  __metadata("design:type", String)
447
954
  ], WccProperties.prototype, "warning", void 0);
955
+ __decorate([
956
+ property(),
957
+ __metadata("design:type", Boolean)
958
+ ], WccProperties.prototype, "isFullscreen", void 0);
448
959
  __decorate([
449
960
  state(),
450
961
  __metadata("design:type", Array)
451
962
  ], WccProperties.prototype, "propertyContent", void 0);
963
+ __decorate([
964
+ state(),
965
+ __metadata("design:type", Array)
966
+ ], WccProperties.prototype, "editingProperties", void 0);
452
967
  WccProperties = __decorate([
453
968
  customElement('wcc-properties')
454
969
  ], WccProperties);
455
970
  export { WccProperties };
456
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjLXByb3BlcnRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvd2NjLXByb3BlcnRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBdUIsS0FBSyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBT2xELElBQUksV0FBVyxHQUFpQixRQUFRLENBQUM7QUFFekMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7SUFDdkMsV0FBVyxHQUFHLE1BQU0sQ0FBQztBQUN2QixDQUFDLENBQUM7QUFHSyxJQUFNLGFBQWEsR0FBbkIsTUFBTSxhQUFjLFNBQVEsV0FBVztJQUF2Qzs7UUFVRSxxQkFBZ0IsR0FBaUIsUUFBUSxDQUFDO1FBRzFDLGtCQUFhLEdBQVcsTUFBTSxDQUFDO1FBRy9CLFlBQU8sR0FBVyxJQUFJLENBQUM7UUFHOUIsb0JBQWUsR0FBcUIsRUFBRSxDQUFDO0lBb2F6QyxDQUFDO0lBbGFRLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUEwSEgsSUFBSSxDQUFDLGVBQWU7Ozs7Ozs4QkFNRixJQUFJLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJO3VCQUN4RCxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLENBQUM7Ozs7OzhCQUtlLElBQUksQ0FBQyxh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
971
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjLXByb3BlcnRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvd2NjLXByb3BlcnRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBdUIsS0FBSyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBT2xELElBQUksV0FBVyxHQUFpQixRQUFRLENBQUM7QUFFekMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7SUFDdkMsV0FBVyxHQUFHLE1BQU0sQ0FBQztBQUN2QixDQUFDLENBQUM7QUFHSyxJQUFNLGFBQWEsR0FBbkIsTUFBTSxhQUFjLFNBQVEsV0FBVztJQUF2Qzs7UUFVRSxxQkFBZ0IsR0FBaUIsUUFBUSxDQUFDO1FBRzFDLGtCQUFhLEdBQVcsTUFBTSxDQUFDO1FBRy9CLFlBQU8sR0FBVyxJQUFJLENBQUM7UUFHdkIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFHckMsb0JBQWUsR0FBcUIsRUFBRSxDQUFDO1FBR3ZDLHNCQUFpQixHQU9aLEVBQUUsQ0FBQztRQUVELGlCQUFZLEdBQVcsR0FBRyxDQUFDO0lBazdCcEMsQ0FBQztJQWg3QlEsTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBMkJLLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRzs7Ozs7O3FCQU1oRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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