@design.estate/dees-wcctools 1.0.100 → 1.1.0

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