@design.estate/dees-wcctools 3.2.0 → 3.4.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.
@@ -34,7 +34,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
34
34
  };
35
35
  import * as plugins from '../wcctools.plugins.js';
36
36
  import { DeesElement, property, html, customElement, state } from '@design.estate/dees-element';
37
- import { WccDashboard } from './wcc-dashboard.js';
37
+ import { WccDashboard, getSectionItems } from './wcc-dashboard.js';
38
38
  import { getDemoCount, hasMultipleDemos } from './wcctools.helpers.js';
39
39
  let WccSidebar = (() => {
40
40
  let _classDecorators = [customElement('wcc-sidebar')];
@@ -57,6 +57,12 @@ let WccSidebar = (() => {
57
57
  let _expandedElements_decorators;
58
58
  let _expandedElements_initializers = [];
59
59
  let _expandedElements_extraInitializers = [];
60
+ let _collapsedSections_decorators;
61
+ let _collapsedSections_initializers = [];
62
+ let _collapsedSections_extraInitializers = [];
63
+ let _searchQuery_decorators;
64
+ let _searchQuery_initializers = [];
65
+ let _searchQuery_extraInitializers = [];
60
66
  var WccSidebar = class extends _classSuper {
61
67
  static { _classThis = this; }
62
68
  static {
@@ -66,11 +72,15 @@ let WccSidebar = (() => {
66
72
  _dashboardRef_decorators = [property()];
67
73
  _isNative_decorators = [property()];
68
74
  _expandedElements_decorators = [state()];
75
+ _collapsedSections_decorators = [state()];
76
+ _searchQuery_decorators = [property()];
69
77
  __esDecorate(this, null, _selectedItem_decorators, { kind: "accessor", name: "selectedItem", static: false, private: false, access: { has: obj => "selectedItem" in obj, get: obj => obj.selectedItem, set: (obj, value) => { obj.selectedItem = value; } }, metadata: _metadata }, _selectedItem_initializers, _selectedItem_extraInitializers);
70
78
  __esDecorate(this, null, _selectedType_decorators, { kind: "accessor", name: "selectedType", static: false, private: false, access: { has: obj => "selectedType" in obj, get: obj => obj.selectedType, set: (obj, value) => { obj.selectedType = value; } }, metadata: _metadata }, _selectedType_initializers, _selectedType_extraInitializers);
71
79
  __esDecorate(this, null, _dashboardRef_decorators, { kind: "accessor", name: "dashboardRef", static: false, private: false, access: { has: obj => "dashboardRef" in obj, get: obj => obj.dashboardRef, set: (obj, value) => { obj.dashboardRef = value; } }, metadata: _metadata }, _dashboardRef_initializers, _dashboardRef_extraInitializers);
72
80
  __esDecorate(this, null, _isNative_decorators, { kind: "accessor", name: "isNative", static: false, private: false, access: { has: obj => "isNative" in obj, get: obj => obj.isNative, set: (obj, value) => { obj.isNative = value; } }, metadata: _metadata }, _isNative_initializers, _isNative_extraInitializers);
73
81
  __esDecorate(this, null, _expandedElements_decorators, { kind: "accessor", name: "expandedElements", static: false, private: false, access: { has: obj => "expandedElements" in obj, get: obj => obj.expandedElements, set: (obj, value) => { obj.expandedElements = value; } }, metadata: _metadata }, _expandedElements_initializers, _expandedElements_extraInitializers);
82
+ __esDecorate(this, null, _collapsedSections_decorators, { kind: "accessor", name: "collapsedSections", static: false, private: false, access: { has: obj => "collapsedSections" in obj, get: obj => obj.collapsedSections, set: (obj, value) => { obj.collapsedSections = value; } }, metadata: _metadata }, _collapsedSections_initializers, _collapsedSections_extraInitializers);
83
+ __esDecorate(this, null, _searchQuery_decorators, { kind: "accessor", name: "searchQuery", static: false, private: false, access: { has: obj => "searchQuery" in obj, get: obj => obj.searchQuery, set: (obj, value) => { obj.searchQuery = value; } }, metadata: _metadata }, _searchQuery_initializers, _searchQuery_extraInitializers);
74
84
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
75
85
  WccSidebar = _classThis = _classDescriptor.value;
76
86
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -92,6 +102,15 @@ let WccSidebar = (() => {
92
102
  // Track which elements are expanded (for multi-demo elements)
93
103
  get expandedElements() { return this.#expandedElements_accessor_storage; }
94
104
  set expandedElements(value) { this.#expandedElements_accessor_storage = value; }
105
+ #collapsedSections_accessor_storage = (__runInitializers(this, _expandedElements_extraInitializers), __runInitializers(this, _collapsedSections_initializers, new Set()));
106
+ // Track which sections are collapsed
107
+ get collapsedSections() { return this.#collapsedSections_accessor_storage; }
108
+ set collapsedSections(value) { this.#collapsedSections_accessor_storage = value; }
109
+ #searchQuery_accessor_storage = (__runInitializers(this, _collapsedSections_extraInitializers), __runInitializers(this, _searchQuery_initializers, ''));
110
+ // Search query for filtering sidebar items
111
+ get searchQuery() { return this.#searchQuery_accessor_storage; }
112
+ set searchQuery(value) { this.#searchQuery_accessor_storage = value; }
113
+ sectionsInitialized = (__runInitializers(this, _searchQuery_extraInitializers), false);
95
114
  render() {
96
115
  return html `
97
116
  <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" rel="stylesheet" />
@@ -133,7 +152,7 @@ let WccSidebar = (() => {
133
152
  padding: 0.5rem 0;
134
153
  }
135
154
 
136
- h3 {
155
+ .section-header {
137
156
  padding: 0.3rem 0.75rem;
138
157
  font-size: 0.65rem;
139
158
  font-weight: 500;
@@ -145,12 +164,45 @@ let WccSidebar = (() => {
145
164
  background: rgba(59, 130, 246, 0.03);
146
165
  border-bottom: 1px solid var(--border);
147
166
  border-top: 1px solid var(--border);
167
+ display: flex;
168
+ align-items: center;
169
+ gap: 0.5rem;
170
+ cursor: pointer;
171
+ user-select: none;
172
+ transition: all 0.15s ease;
148
173
  }
149
174
 
150
- h3:first-child {
175
+ .section-header:first-child {
151
176
  margin-top: 0;
152
177
  }
153
178
 
179
+ .section-header:hover {
180
+ background: rgba(59, 130, 246, 0.08);
181
+ }
182
+
183
+ .section-header .expand-icon {
184
+ font-size: 14px;
185
+ opacity: 0.5;
186
+ transition: transform 0.2s ease;
187
+ }
188
+
189
+ .section-header.collapsed .expand-icon {
190
+ transform: rotate(-90deg);
191
+ }
192
+
193
+ .section-header .section-icon {
194
+ font-size: 14px;
195
+ opacity: 0.6;
196
+ }
197
+
198
+ .section-content {
199
+ overflow: hidden;
200
+ }
201
+
202
+ .section-content.collapsed {
203
+ display: none;
204
+ }
205
+
154
206
  .material-symbols-outlined {
155
207
  font-family: 'Material Symbols Outlined';
156
208
  font-weight: normal;
@@ -282,88 +334,189 @@ let WccSidebar = (() => {
282
334
  ::-webkit-scrollbar-thumb:hover {
283
335
  background: rgba(255, 255, 255, 0.2);
284
336
  }
337
+
338
+ .search-container {
339
+ padding: 0.5rem;
340
+ border-bottom: 1px solid var(--border);
341
+ }
342
+
343
+ .search-input {
344
+ width: 100%;
345
+ box-sizing: border-box;
346
+ background: var(--input);
347
+ border: 1px solid var(--border);
348
+ border-radius: var(--radius);
349
+ padding: 0.5rem 0.75rem;
350
+ color: var(--foreground);
351
+ font-size: 0.75rem;
352
+ font-family: inherit;
353
+ outline: none;
354
+ transition: border-color 0.15s ease;
355
+ }
356
+
357
+ .search-input:focus {
358
+ border-color: var(--primary);
359
+ }
360
+
361
+ .search-input::placeholder {
362
+ color: var(--muted-foreground);
363
+ }
364
+
365
+ .highlight {
366
+ background: rgba(59, 130, 246, 0.3);
367
+ border-radius: 2px;
368
+ }
285
369
  </style>
370
+ <div class="search-container">
371
+ <input
372
+ type="text"
373
+ class="search-input"
374
+ placeholder="Search..."
375
+ .value=${this.searchQuery}
376
+ @input=${this.handleSearchInput}
377
+ />
378
+ </div>
286
379
  <div class="menu">
287
- <h3>Pages</h3>
288
- ${(() => {
289
- const pages = Object.keys(this.dashboardRef.pages);
290
- return pages.map(pageName => {
291
- const item = this.dashboardRef.pages[pageName];
380
+ ${this.renderSections()}
381
+ </div>
382
+ `;
383
+ }
384
+ /**
385
+ * Initialize collapsed sections from section config
386
+ */
387
+ initCollapsedSections() {
388
+ if (this.sectionsInitialized)
389
+ return;
390
+ const collapsed = new Set();
391
+ for (const section of this.dashboardRef.sections) {
392
+ if (section.collapsed) {
393
+ collapsed.add(section.name);
394
+ }
395
+ }
396
+ this.collapsedSections = collapsed;
397
+ this.sectionsInitialized = true;
398
+ }
399
+ /**
400
+ * Render all sections
401
+ */
402
+ renderSections() {
403
+ this.initCollapsedSections();
404
+ return this.dashboardRef.sections.map((section, index) => {
405
+ // Check if section has any matching items
406
+ const entries = getSectionItems(section);
407
+ const filteredEntries = entries.filter(([name]) => this.matchesSearch(name));
408
+ // Hide section if no items match the search
409
+ if (filteredEntries.length === 0 && this.searchQuery) {
410
+ return null;
411
+ }
412
+ const isCollapsed = this.collapsedSections.has(section.name);
413
+ const sectionIcon = section.icon || (section.type === 'pages' ? 'insert_drive_file' : 'widgets');
414
+ return html `
415
+ <div
416
+ class="section-header ${isCollapsed ? 'collapsed' : ''}"
417
+ @click=${() => this.toggleSectionCollapsed(section.name)}
418
+ >
419
+ <i class="material-symbols-outlined expand-icon">expand_more</i>
420
+ ${section.icon ? html `<i class="material-symbols-outlined section-icon">${section.icon}</i>` : null}
421
+ <span>${section.name}</span>
422
+ </div>
423
+ <div class="section-content ${isCollapsed ? 'collapsed' : ''}">
424
+ ${this.renderSectionItems(section)}
425
+ </div>
426
+ `;
427
+ });
428
+ }
429
+ /**
430
+ * Render items for a section
431
+ */
432
+ renderSectionItems(section) {
433
+ const entries = getSectionItems(section);
434
+ // Filter entries by search query
435
+ const filteredEntries = entries.filter(([name]) => this.matchesSearch(name));
436
+ if (section.type === 'pages') {
437
+ return filteredEntries.map(([pageName, item]) => {
292
438
  return html `
293
- <div
294
- class="selectOption ${this.selectedItem === item ? 'selected' : null}"
295
- @click=${async () => {
296
- const domtools = await plugins.deesDomtools.DomTools.setupDomTools();
297
- this.selectItem('page', pageName, item, 0);
439
+ <div
440
+ class="selectOption ${this.selectedItem === item ? 'selected' : ''}"
441
+ @click=${async () => {
442
+ await plugins.deesDomtools.DomTools.setupDomTools();
443
+ this.selectItem('page', pageName, item, 0, section);
298
444
  }}
299
- >
300
- <i class="material-symbols-outlined">insert_drive_file</i>
301
- <div class="text">${pageName}</div>
302
- </div>
303
- `;
445
+ >
446
+ <i class="material-symbols-outlined">insert_drive_file</i>
447
+ <div class="text">${this.highlightMatch(pageName)}</div>
448
+ </div>
449
+ `;
304
450
  });
305
- })()}
306
- <h3>Elements</h3>
307
- ${(() => {
308
- const elements = Object.keys(this.dashboardRef.elements);
309
- return elements.map(elementName => {
310
- const item = this.dashboardRef.elements[elementName];
311
- const demoCount = item.demo ? getDemoCount(item.demo) : 0;
312
- const isMultiDemo = item.demo && hasMultipleDemos(item.demo);
451
+ }
452
+ else {
453
+ // type === 'elements'
454
+ return filteredEntries.map(([elementName, item]) => {
455
+ const anonItem = item;
456
+ const demoCount = anonItem.demo ? getDemoCount(anonItem.demo) : 0;
457
+ const isMultiDemo = anonItem.demo && hasMultipleDemos(anonItem.demo);
313
458
  const isExpanded = this.expandedElements.has(elementName);
314
459
  const isSelected = this.selectedItem === item;
315
460
  if (isMultiDemo) {
316
461
  // Multi-demo element - render as expandable folder
317
462
  return html `
318
- <div
319
- class="selectOption folder ${isExpanded ? 'expanded' : ''} ${isSelected ? 'selected' : ''}"
320
- @click=${() => this.toggleExpanded(elementName)}
321
- >
322
- <i class="material-symbols-outlined expand-icon">chevron_right</i>
323
- <i class="material-symbols-outlined">folder</i>
324
- <div class="text">${elementName}</div>
325
- </div>
326
- ${isExpanded ? html `
327
- <div class="demo-children">
328
- ${Array.from({ length: demoCount }, (_, i) => {
463
+ <div
464
+ class="selectOption folder ${isExpanded ? 'expanded' : ''} ${isSelected ? 'selected' : ''}"
465
+ @click=${() => this.toggleExpanded(elementName)}
466
+ >
467
+ <i class="material-symbols-outlined expand-icon">chevron_right</i>
468
+ <i class="material-symbols-outlined">folder</i>
469
+ <div class="text">${this.highlightMatch(elementName)}</div>
470
+ </div>
471
+ ${isExpanded ? html `
472
+ <div class="demo-children">
473
+ ${Array.from({ length: demoCount }, (_, i) => {
329
474
  const demoIndex = i;
330
475
  const isThisDemoSelected = isSelected && this.dashboardRef.selectedDemoIndex === demoIndex;
331
476
  return html `
332
- <div
333
- class="demo-child ${isThisDemoSelected ? 'selected' : ''}"
334
- @click=${async () => {
477
+ <div
478
+ class="demo-child ${isThisDemoSelected ? 'selected' : ''}"
479
+ @click=${async () => {
335
480
  await plugins.deesDomtools.DomTools.setupDomTools();
336
- this.selectItem('element', elementName, item, demoIndex);
481
+ this.selectItem('element', elementName, item, demoIndex, section);
337
482
  }}
338
- >
339
- <i class="material-symbols-outlined">play_circle</i>
340
- <div class="text">demo${demoIndex + 1}</div>
341
- </div>
342
- `;
483
+ >
484
+ <i class="material-symbols-outlined">play_circle</i>
485
+ <div class="text">demo${demoIndex + 1}</div>
486
+ </div>
487
+ `;
343
488
  })}
344
- </div>
345
- ` : null}
346
- `;
489
+ </div>
490
+ ` : null}
491
+ `;
347
492
  }
348
493
  else {
349
- // Single demo element - render as normal
494
+ // Single demo element
350
495
  return html `
351
- <div
352
- class="selectOption ${isSelected ? 'selected' : null}"
353
- @click=${async () => {
496
+ <div
497
+ class="selectOption ${isSelected ? 'selected' : ''}"
498
+ @click=${async () => {
354
499
  await plugins.deesDomtools.DomTools.setupDomTools();
355
- this.selectItem('element', elementName, item, 0);
500
+ this.selectItem('element', elementName, item, 0, section);
356
501
  }}
357
- >
358
- <i class="material-symbols-outlined">featured_video</i>
359
- <div class="text">${elementName}</div>
360
- </div>
361
- `;
502
+ >
503
+ <i class="material-symbols-outlined">featured_video</i>
504
+ <div class="text">${this.highlightMatch(elementName)}</div>
505
+ </div>
506
+ `;
362
507
  }
363
508
  });
364
- })()}
365
- </div>
366
- `;
509
+ }
510
+ }
511
+ toggleSectionCollapsed(sectionName) {
512
+ const newSet = new Set(this.collapsedSections);
513
+ if (newSet.has(sectionName)) {
514
+ newSet.delete(sectionName);
515
+ }
516
+ else {
517
+ newSet.add(sectionName);
518
+ }
519
+ this.collapsedSections = newSet;
367
520
  }
368
521
  toggleExpanded(elementName) {
369
522
  const newSet = new Set(this.expandedElements);
@@ -375,31 +528,67 @@ let WccSidebar = (() => {
375
528
  }
376
529
  this.expandedElements = newSet;
377
530
  }
531
+ handleSearchInput(e) {
532
+ const input = e.target;
533
+ this.searchQuery = input.value;
534
+ this.dispatchEvent(new CustomEvent('searchChanged', { detail: this.searchQuery }));
535
+ }
536
+ matchesSearch(name) {
537
+ if (!this.searchQuery)
538
+ return true;
539
+ return name.toLowerCase().includes(this.searchQuery.toLowerCase());
540
+ }
541
+ highlightMatch(text) {
542
+ if (!this.searchQuery)
543
+ return html `${text}`;
544
+ const lowerText = text.toLowerCase();
545
+ const lowerQuery = this.searchQuery.toLowerCase();
546
+ const index = lowerText.indexOf(lowerQuery);
547
+ if (index === -1)
548
+ return html `${text}`;
549
+ const before = text.slice(0, index);
550
+ const match = text.slice(index, index + this.searchQuery.length);
551
+ const after = text.slice(index + this.searchQuery.length);
552
+ return html `${before}<span class="highlight">${match}</span>${after}`;
553
+ }
378
554
  updated(changedProperties) {
379
555
  super.updated(changedProperties);
380
556
  // Auto-expand folder when a multi-demo element is selected
381
557
  if (changedProperties.has('selectedItem') && this.selectedItem) {
382
- const elementName = Object.keys(this.dashboardRef.elements).find(name => this.dashboardRef.elements[name] === this.selectedItem);
383
- if (elementName) {
384
- const item = this.dashboardRef.elements[elementName];
385
- if (item.demo && hasMultipleDemos(item.demo)) {
386
- if (!this.expandedElements.has(elementName)) {
387
- const newSet = new Set(this.expandedElements);
388
- newSet.add(elementName);
389
- this.expandedElements = newSet;
558
+ // Find the element in any section
559
+ for (const section of this.dashboardRef.sections) {
560
+ if (section.type !== 'elements')
561
+ continue;
562
+ const entries = getSectionItems(section);
563
+ const found = entries.find(([_, item]) => item === this.selectedItem);
564
+ if (found) {
565
+ const [elementName, item] = found;
566
+ const anonItem = item;
567
+ if (anonItem.demo && hasMultipleDemos(anonItem.demo)) {
568
+ if (!this.expandedElements.has(elementName)) {
569
+ const newSet = new Set(this.expandedElements);
570
+ newSet.add(elementName);
571
+ this.expandedElements = newSet;
572
+ }
390
573
  }
574
+ break;
391
575
  }
392
576
  }
393
577
  }
394
578
  }
395
- selectItem(typeArg, itemNameArg, itemArg, demoIndex = 0) {
579
+ selectItem(typeArg, itemNameArg, itemArg, demoIndex = 0, section) {
396
580
  console.log('selected item');
397
581
  console.log(itemNameArg);
398
582
  console.log(itemArg);
399
583
  console.log('demo index:', demoIndex);
584
+ console.log('section:', section?.name);
400
585
  this.selectedItem = itemArg;
401
586
  this.selectedType = typeArg;
402
587
  this.dashboardRef.selectedDemoIndex = demoIndex;
588
+ // Set the selected section on dashboard
589
+ if (section) {
590
+ this.dashboardRef.selectedSection = section;
591
+ }
403
592
  this.dispatchEvent(new CustomEvent('selectedType', {
404
593
  detail: typeArg
405
594
  }));
@@ -411,15 +600,10 @@ let WccSidebar = (() => {
411
600
  }));
412
601
  this.dashboardRef.buildUrl();
413
602
  // Force re-render to update demo child selection indicator
414
- // (needed when switching between demos of the same element)
415
603
  this.requestUpdate();
416
604
  }
417
- constructor() {
418
- super(...arguments);
419
- __runInitializers(this, _expandedElements_extraInitializers);
420
- }
421
605
  };
422
606
  return WccSidebar = _classThis;
423
607
  })();
424
608
  export { WccSidebar };
425
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjLXNpZGViYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvd2NjLXNpZGViYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBdUIsS0FBSyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxELE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztJQUsxRCxVQUFVOzRCQUR0QixhQUFhLENBQUMsYUFBYSxDQUFDOzs7O3NCQUNHLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBQW5CLFNBQVEsV0FBVzs7Ozt3Q0FDeEMsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO3dDQUc5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7d0NBRzlCLFFBQVEsRUFBRTtvQ0FHVixRQUFRLEVBQUU7NENBSVYsS0FBSyxFQUFFO1lBWlIseUxBQVMsWUFBWSw2QkFBWixZQUFZLG1HQUFpQztZQUd0RCx5TEFBUyxZQUFZLDZCQUFaLFlBQVksbUdBQWU7WUFHcEMseUxBQVMsWUFBWSw2QkFBWixZQUFZLG1HQUFlO1lBR3BDLDZLQUFTLFFBQVEsNkJBQVIsUUFBUSwyRkFBa0I7WUFJbkMscU1BQVMsZ0JBQWdCLDZCQUFoQixnQkFBZ0IsMkdBQTBCO1lBZnJELDZLQWdXQzs7O1lBaFdZLHVEQUFVOztRQUVyQiw2RkFBc0Q7UUFBdEQsSUFBUyxZQUFZLGtEQUFpQztRQUF0RCxJQUFTLFlBQVksd0RBQWlDO1FBR3RELHlKQUFvQztRQUFwQyxJQUFTLFlB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
609
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjLXNpZGViYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvd2NjLXNpZGViYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBdUIsS0FBSyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7SUFJMUQsVUFBVTs0QkFEdEIsYUFBYSxDQUFDLGFBQWEsQ0FBQzs7OztzQkFDRyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQUFuQixTQUFRLFdBQVc7Ozs7d0NBQ3hDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzt3Q0FHOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO3dDQUc5QixRQUFRLEVBQUU7b0NBR1YsUUFBUSxFQUFFOzRDQUlWLEtBQUssRUFBRTs2Q0FJUCxLQUFLLEVBQUU7dUNBSVAsUUFBUSxFQUFFO1lBcEJYLHlMQUFTLFlBQVksNkJBQVosWUFBWSxtR0FBaUM7WUFHdEQseUxBQVMsWUFBWSw2QkFBWixZQUFZLG1HQUFlO1lBR3BDLHlMQUFTLFlBQVksNkJBQVosWUFBWSxtR0FBZTtZQUdwQyw2S0FBUyxRQUFRLDZCQUFSLFFBQVEsMkZBQWtCO1lBSW5DLHFNQUFTLGdCQUFnQiw2QkFBaEIsZ0JBQWdCLDJHQUEwQjtZQUluRCx3TUFBUyxpQkFBaUIsNkJBQWpCLGlCQUFpQiw2R0FBMEI7WUFJcEQsc0xBQVMsV0FBVyw2QkFBWCxX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
@@ -1,9 +1,29 @@
1
1
  import { LitElement } from 'lit';
2
2
  import type { TTemplateFactory } from './elements/wcctools.helpers.js';
3
+ import type { IWccConfig } from './wcctools.interfaces.js';
3
4
  export { RecorderService, type IRecorderEvents, type IRecordingOptions } from './services/recorder.service.js';
4
5
  export { WccRecordButton } from './elements/wcc-record-button.js';
5
6
  export { WccRecordingPanel } from './elements/wcc-recording-panel.js';
6
- declare const setupWccTools: (elementsArg?: {
7
+ export type { IWccConfig, IWccSection } from './wcctools.interfaces.js';
8
+ /**
9
+ * Setup WCC Tools dashboard
10
+ *
11
+ * New format (recommended):
12
+ * ```typescript
13
+ * setupWccTools({
14
+ * sections: [
15
+ * { name: 'Elements', type: 'elements', items: elements },
16
+ * { name: 'Pages', type: 'pages', items: pages },
17
+ * ]
18
+ * });
19
+ * ```
20
+ *
21
+ * Legacy format (still supported):
22
+ * ```typescript
23
+ * setupWccTools(elements, pages);
24
+ * ```
25
+ */
26
+ declare const setupWccTools: (configOrElements?: IWccConfig | {
7
27
  [key: string]: LitElement;
8
28
  }, pagesArg?: Record<string, TTemplateFactory>) => void;
9
29
  export { setupWccTools };
@@ -4,12 +4,64 @@ import { LitElement } from 'lit';
4
4
  export { RecorderService } from './services/recorder.service.js';
5
5
  export { WccRecordButton } from './elements/wcc-record-button.js';
6
6
  export { WccRecordingPanel } from './elements/wcc-recording-panel.js';
7
- const setupWccTools = (elementsArg, pagesArg) => {
7
+ /**
8
+ * Converts legacy (elements, pages) format to new sections config
9
+ */
10
+ const convertLegacyToConfig = (elementsArg, pagesArg) => {
11
+ const sections = [];
12
+ if (pagesArg && Object.keys(pagesArg).length > 0) {
13
+ sections.push({
14
+ name: 'Pages',
15
+ type: 'pages',
16
+ items: pagesArg,
17
+ });
18
+ }
19
+ if (elementsArg && Object.keys(elementsArg).length > 0) {
20
+ sections.push({
21
+ name: 'Elements',
22
+ type: 'elements',
23
+ items: elementsArg,
24
+ });
25
+ }
26
+ return { sections };
27
+ };
28
+ /**
29
+ * Check if the argument is the new config format
30
+ */
31
+ const isWccConfig = (arg) => {
32
+ return arg && typeof arg === 'object' && 'sections' in arg && Array.isArray(arg.sections);
33
+ };
34
+ /**
35
+ * Setup WCC Tools dashboard
36
+ *
37
+ * New format (recommended):
38
+ * ```typescript
39
+ * setupWccTools({
40
+ * sections: [
41
+ * { name: 'Elements', type: 'elements', items: elements },
42
+ * { name: 'Pages', type: 'pages', items: pages },
43
+ * ]
44
+ * });
45
+ * ```
46
+ *
47
+ * Legacy format (still supported):
48
+ * ```typescript
49
+ * setupWccTools(elements, pages);
50
+ * ```
51
+ */
52
+ const setupWccTools = (configOrElements, pagesArg) => {
53
+ let config;
54
+ if (isWccConfig(configOrElements)) {
55
+ config = configOrElements;
56
+ }
57
+ else {
58
+ config = convertLegacyToConfig(configOrElements, pagesArg);
59
+ }
8
60
  let hasRun = false;
9
61
  const runWccToolsSetup = async () => {
10
62
  if (document.readyState === 'complete' && !hasRun) {
11
63
  hasRun = true;
12
- const wccTools = new WccDashboard(elementsArg, pagesArg);
64
+ const wccTools = new WccDashboard(config);
13
65
  document.querySelector('body').append(wccTools);
14
66
  }
15
67
  };
@@ -17,4 +69,4 @@ const setupWccTools = (elementsArg, pagesArg) => {
17
69
  runWccToolsSetup();
18
70
  };
19
71
  export { setupWccTools };
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c193ZWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFHakMsMENBQTBDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQWdELE1BQU0sZ0NBQWdDLENBQUM7QUFDL0csT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXRFLE1BQU0sYUFBYSxHQUFHLENBQ3BCLFdBQTJDLEVBQzNDLFFBQTJDLEVBQzNDLEVBQUU7SUFDRixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLElBQUksRUFBRTtRQUNsQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssVUFBVSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEQsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNkLE1BQU0sUUFBUSxHQUFHLElBQUksWUFBWSxDQUFDLFdBQWtCLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDaEUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNILENBQUMsQ0FBQztJQUNGLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2hFLGdCQUFnQixFQUFFLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUNMLGFBQWEsRUFDZCxDQUFDIn0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c193ZWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFJakMsMENBQTBDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQWdELE1BQU0sZ0NBQWdDLENBQUM7QUFDL0csT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBS3RFOztHQUVHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixXQUEyQyxFQUMzQyxRQUEyQyxFQUMvQixFQUFFO0lBQ2QsTUFBTSxRQUFRLEdBQWtCLEVBQUUsQ0FBQztJQUVuQyxJQUFJLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqRCxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ1osSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSxRQUFRO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN2RCxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ1osSUFBSSxFQUFFLFVBQVU7WUFDaEIsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSyxFQUFFLFdBQVc7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBUSxFQUFxQixFQUFFO0lBQ2xELE9BQU8sR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxVQUFVLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzVGLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sYUFBYSxHQUFHLENBQ3BCLGdCQUE2RCxFQUM3RCxRQUEyQyxFQUMzQyxFQUFFO0lBQ0YsSUFBSSxNQUFrQixDQUFDO0lBRXZCLElBQUksV0FBVyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUNsQyxNQUFNLEdBQUcsZ0JBQWdCLENBQUM7SUFDNUIsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLEdBQUcscUJBQXFCLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNuQixNQUFNLGdCQUFnQixHQUFHLEtBQUssSUFBSSxFQUFFO1FBQ2xDLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxVQUFVLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsRCxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2QsTUFBTSxRQUFRLEdBQUcsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNILENBQUMsQ0FBQztJQUNGLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2hFLGdCQUFnQixFQUFFLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUNMLGFBQWEsRUFDZCxDQUFDIn0=
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Configuration for a section in the WCC Tools sidebar
3
+ */
4
+ export interface IWccSection {
5
+ /** Display name for the section header */
6
+ name: string;
7
+ /** How items in this section are rendered - 'elements' show demos, 'pages' render directly */
8
+ type: 'elements' | 'pages';
9
+ /** The items in this section - either element classes or page factory functions */
10
+ items: Record<string, any>;
11
+ /** Optional filter function to include/exclude items */
12
+ filter?: (name: string, item: any) => boolean;
13
+ /** Optional sort function for ordering items */
14
+ sort?: (a: [string, any], b: [string, any]) => number;
15
+ /** Optional Material icon name for the section header */
16
+ icon?: string;
17
+ /** Whether this section should start collapsed (default: false) */
18
+ collapsed?: boolean;
19
+ }
20
+ /**
21
+ * Configuration object for setupWccTools
22
+ */
23
+ export interface IWccConfig {
24
+ sections: IWccSection[];
25
+ }
26
+ /**
27
+ * Type for element selection types - now section-based
28
+ */
29
+ export type TElementType = 'element' | 'page';
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjdG9vbHMuaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzX3dlYi93Y2N0b29scy5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==