@design.estate/dees-wcctools 3.4.0 → 3.5.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.
@@ -36,6 +36,7 @@ import * as plugins from '../wcctools.plugins.js';
36
36
  import { DeesElement, property, html, customElement, state } from '@design.estate/dees-element';
37
37
  import { WccDashboard, getSectionItems } from './wcc-dashboard.js';
38
38
  import { getDemoCount, hasMultipleDemos } from './wcctools.helpers.js';
39
+ import { WccContextmenu } from './wcc-contextmenu.js';
39
40
  let WccSidebar = (() => {
40
41
  let _classDecorators = [customElement('wcc-sidebar')];
41
42
  let _classDescriptor;
@@ -63,6 +64,15 @@ let WccSidebar = (() => {
63
64
  let _searchQuery_decorators;
64
65
  let _searchQuery_initializers = [];
65
66
  let _searchQuery_extraInitializers = [];
67
+ let _pinnedItems_decorators;
68
+ let _pinnedItems_initializers = [];
69
+ let _pinnedItems_extraInitializers = [];
70
+ let _sidebarWidth_decorators;
71
+ let _sidebarWidth_initializers = [];
72
+ let _sidebarWidth_extraInitializers = [];
73
+ let _isResizing_decorators;
74
+ let _isResizing_initializers = [];
75
+ let _isResizing_extraInitializers = [];
66
76
  var WccSidebar = class extends _classSuper {
67
77
  static { _classThis = this; }
68
78
  static {
@@ -74,6 +84,9 @@ let WccSidebar = (() => {
74
84
  _expandedElements_decorators = [state()];
75
85
  _collapsedSections_decorators = [state()];
76
86
  _searchQuery_decorators = [property()];
87
+ _pinnedItems_decorators = [property({ attribute: false })];
88
+ _sidebarWidth_decorators = [property({ type: Number })];
89
+ _isResizing_decorators = [state()];
77
90
  __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);
78
91
  __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);
79
92
  __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);
@@ -81,6 +94,9 @@ let WccSidebar = (() => {
81
94
  __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
95
  __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
96
  __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);
97
+ __esDecorate(this, null, _pinnedItems_decorators, { kind: "accessor", name: "pinnedItems", static: false, private: false, access: { has: obj => "pinnedItems" in obj, get: obj => obj.pinnedItems, set: (obj, value) => { obj.pinnedItems = value; } }, metadata: _metadata }, _pinnedItems_initializers, _pinnedItems_extraInitializers);
98
+ __esDecorate(this, null, _sidebarWidth_decorators, { kind: "accessor", name: "sidebarWidth", static: false, private: false, access: { has: obj => "sidebarWidth" in obj, get: obj => obj.sidebarWidth, set: (obj, value) => { obj.sidebarWidth = value; } }, metadata: _metadata }, _sidebarWidth_initializers, _sidebarWidth_extraInitializers);
99
+ __esDecorate(this, null, _isResizing_decorators, { kind: "accessor", name: "isResizing", static: false, private: false, access: { has: obj => "isResizing" in obj, get: obj => obj.isResizing, set: (obj, value) => { obj.isResizing = value; } }, metadata: _metadata }, _isResizing_initializers, _isResizing_extraInitializers);
84
100
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
85
101
  WccSidebar = _classThis = _classDescriptor.value;
86
102
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -110,7 +126,19 @@ let WccSidebar = (() => {
110
126
  // Search query for filtering sidebar items
111
127
  get searchQuery() { return this.#searchQuery_accessor_storage; }
112
128
  set searchQuery(value) { this.#searchQuery_accessor_storage = value; }
113
- sectionsInitialized = (__runInitializers(this, _searchQuery_extraInitializers), false);
129
+ #pinnedItems_accessor_storage = (__runInitializers(this, _searchQuery_extraInitializers), __runInitializers(this, _pinnedItems_initializers, new Set()));
130
+ // Pinned items as Set of "sectionName::itemName"
131
+ get pinnedItems() { return this.#pinnedItems_accessor_storage; }
132
+ set pinnedItems(value) { this.#pinnedItems_accessor_storage = value; }
133
+ #sidebarWidth_accessor_storage = (__runInitializers(this, _pinnedItems_extraInitializers), __runInitializers(this, _sidebarWidth_initializers, 200));
134
+ // Sidebar width (resizable)
135
+ get sidebarWidth() { return this.#sidebarWidth_accessor_storage; }
136
+ set sidebarWidth(value) { this.#sidebarWidth_accessor_storage = value; }
137
+ #isResizing_accessor_storage = (__runInitializers(this, _sidebarWidth_extraInitializers), __runInitializers(this, _isResizing_initializers, false));
138
+ // Track if currently resizing
139
+ get isResizing() { return this.#isResizing_accessor_storage; }
140
+ set isResizing(value) { this.#isResizing_accessor_storage = value; }
141
+ sectionsInitialized = (__runInitializers(this, _isResizing_extraInitializers), false);
114
142
  render() {
115
143
  return html `
116
144
  <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" />
@@ -139,7 +167,7 @@ let WccSidebar = (() => {
139
167
  box-sizing: border-box;
140
168
  position: absolute;
141
169
  left: 0px;
142
- width: 200px;
170
+ width: ${this.sidebarWidth}px;
143
171
  top: 0px;
144
172
  bottom: 0px;
145
173
  overflow-y: auto;
@@ -237,7 +265,11 @@ let WccSidebar = (() => {
237
265
  }
238
266
 
239
267
  .selectOption.folder {
240
- grid-template-columns: 16px 20px 1fr;
268
+ grid-template-columns: 16px 1fr;
269
+ }
270
+
271
+ .selectOption.folder .text {
272
+ margin-left: 4px;
241
273
  }
242
274
 
243
275
  .selectOption .expand-icon {
@@ -366,6 +398,90 @@ let WccSidebar = (() => {
366
398
  background: rgba(59, 130, 246, 0.3);
367
399
  border-radius: 2px;
368
400
  }
401
+
402
+ /* Pinned item highlight in original section */
403
+ .selectOption.pinned {
404
+ background: rgba(245, 158, 11, 0.08);
405
+ }
406
+
407
+ .selectOption.pinned:hover {
408
+ background: rgba(245, 158, 11, 0.12);
409
+ }
410
+
411
+ .selectOption.pinned.selected {
412
+ background: rgba(245, 158, 11, 0.18);
413
+ }
414
+
415
+ /* Pinned section styling */
416
+ .section-header.pinned-section {
417
+ background: rgba(245, 158, 11, 0.08);
418
+ color: #f59e0b;
419
+ }
420
+
421
+ .section-header.pinned-section:hover {
422
+ background: rgba(245, 158, 11, 0.12);
423
+ }
424
+
425
+ .section-header.pinned-section .section-icon {
426
+ opacity: 0.8;
427
+ }
428
+
429
+ /* Section tag pill for pinned items */
430
+ .section-tag {
431
+ font-size: 0.5rem;
432
+ color: #888;
433
+ margin-left: auto;
434
+ text-transform: uppercase;
435
+ letter-spacing: 0.02em;
436
+ background: rgba(255, 255, 255, 0.06);
437
+ padding: 0.15rem 0.4rem;
438
+ border-radius: 9999px;
439
+ white-space: nowrap;
440
+ }
441
+
442
+ /* Group container */
443
+ .item-group {
444
+ margin: 0.375rem 0.375rem;
445
+ border: 1px solid rgba(255, 255, 255, 0.08);
446
+ border-radius: 6px;
447
+ padding: 0.25rem 0;
448
+ background: rgba(255, 255, 255, 0.01);
449
+ }
450
+
451
+ .item-group-legend {
452
+ font-size: 0.55rem;
453
+ text-transform: uppercase;
454
+ letter-spacing: 0.05em;
455
+ color: #555;
456
+ padding: 0.125rem 0.625rem 0.25rem;
457
+ display: block;
458
+ }
459
+
460
+ .item-group .selectOption {
461
+ margin-left: 0.25rem;
462
+ margin-right: 0.25rem;
463
+ }
464
+
465
+ /* Resize handle */
466
+ .resize-handle {
467
+ position: absolute;
468
+ top: 0;
469
+ right: 0;
470
+ bottom: 0;
471
+ width: 4px;
472
+ cursor: col-resize;
473
+ background: transparent;
474
+ transition: background 0.15s ease;
475
+ z-index: 10;
476
+ }
477
+
478
+ .resize-handle:hover {
479
+ background: rgba(59, 130, 246, 0.3);
480
+ }
481
+
482
+ .resize-handle.active {
483
+ background: var(--primary);
484
+ }
369
485
  </style>
370
486
  <div class="search-container">
371
487
  <input
@@ -377,15 +493,20 @@ let WccSidebar = (() => {
377
493
  />
378
494
  </div>
379
495
  <div class="menu">
496
+ ${this.renderPinnedSection()}
380
497
  ${this.renderSections()}
381
498
  </div>
499
+ <div
500
+ class="resize-handle ${this.isResizing ? 'active' : ''}"
501
+ @mousedown=${this.startResize}
502
+ ></div>
382
503
  `;
383
504
  }
384
505
  /**
385
506
  * Initialize collapsed sections from section config
386
507
  */
387
508
  initCollapsedSections() {
388
- if (this.sectionsInitialized)
509
+ if (this.sectionsInitialized || !this.dashboardRef?.sections)
389
510
  return;
390
511
  const collapsed = new Set();
391
512
  for (const section of this.dashboardRef.sections) {
@@ -396,12 +517,101 @@ let WccSidebar = (() => {
396
517
  this.collapsedSections = collapsed;
397
518
  this.sectionsInitialized = true;
398
519
  }
520
+ // ============ Pinning helpers ============
521
+ getPinKey(sectionName, itemName) {
522
+ return `${sectionName}::${itemName}`;
523
+ }
524
+ isPinned(sectionName, itemName) {
525
+ return this.pinnedItems.has(this.getPinKey(sectionName, itemName));
526
+ }
527
+ togglePin(sectionName, itemName) {
528
+ const key = this.getPinKey(sectionName, itemName);
529
+ const newPinned = new Set(this.pinnedItems);
530
+ if (newPinned.has(key)) {
531
+ newPinned.delete(key);
532
+ }
533
+ else {
534
+ newPinned.add(key);
535
+ }
536
+ this.pinnedItems = newPinned;
537
+ this.dispatchEvent(new CustomEvent('pinnedChanged', { detail: newPinned }));
538
+ }
539
+ showContextMenu(e, sectionName, itemName) {
540
+ const isPinned = this.isPinned(sectionName, itemName);
541
+ WccContextmenu.show(e, [
542
+ {
543
+ name: isPinned ? 'Unpin' : 'Pin',
544
+ iconName: isPinned ? 'push_pin' : 'push_pin',
545
+ action: () => this.togglePin(sectionName, itemName),
546
+ },
547
+ ]);
548
+ }
549
+ /**
550
+ * Render the PINNED section (only if there are pinned items)
551
+ */
552
+ renderPinnedSection() {
553
+ if (!this.dashboardRef?.sections || this.pinnedItems.size === 0) {
554
+ return null;
555
+ }
556
+ const isCollapsed = this.collapsedSections.has('__pinned__');
557
+ // Collect pinned items with their original section info
558
+ // Pinned items are NOT filtered by search - they always remain visible
559
+ const pinnedEntries = [];
560
+ for (const key of this.pinnedItems) {
561
+ const [sectionName, itemName] = key.split('::');
562
+ const section = this.dashboardRef.sections.find(s => s.name === sectionName);
563
+ if (section) {
564
+ const entries = getSectionItems(section);
565
+ const found = entries.find(([name]) => name === itemName);
566
+ if (found) {
567
+ pinnedEntries.push({ sectionName, itemName, item: found[1], section });
568
+ }
569
+ }
570
+ }
571
+ if (pinnedEntries.length === 0) {
572
+ return null;
573
+ }
574
+ return html `
575
+ <div
576
+ class="section-header pinned-section ${isCollapsed ? 'collapsed' : ''}"
577
+ @click=${() => this.toggleSectionCollapsed('__pinned__')}
578
+ >
579
+ <i class="material-symbols-outlined expand-icon">expand_more</i>
580
+ <i class="material-symbols-outlined section-icon">push_pin</i>
581
+ <span>Pinned</span>
582
+ </div>
583
+ <div class="section-content ${isCollapsed ? 'collapsed' : ''}">
584
+ ${pinnedEntries.map(({ sectionName, itemName, item, section }) => {
585
+ const isSelected = this.selectedItem === item;
586
+ const type = section.type === 'elements' ? 'element' : 'page';
587
+ const icon = section.type === 'elements' ? 'featured_video' : 'insert_drive_file';
588
+ return html `
589
+ <div
590
+ class="selectOption ${isSelected ? 'selected' : ''}"
591
+ @click=${async () => {
592
+ await plugins.deesDomtools.DomTools.setupDomTools();
593
+ this.selectItem(type, itemName, item, 0, section);
594
+ }}
595
+ @contextmenu=${(e) => this.showContextMenu(e, sectionName, itemName)}
596
+ >
597
+ <i class="material-symbols-outlined">${icon}</i>
598
+ <div class="text">${this.highlightMatch(itemName)}</div>
599
+ <span class="section-tag">${sectionName}</span>
600
+ </div>
601
+ `;
602
+ })}
603
+ </div>
604
+ `;
605
+ }
399
606
  /**
400
607
  * Render all sections
401
608
  */
402
609
  renderSections() {
610
+ if (!this.dashboardRef?.sections) {
611
+ return null;
612
+ }
403
613
  this.initCollapsedSections();
404
- return this.dashboardRef.sections.map((section, index) => {
614
+ return this.dashboardRef.sections.map((section) => {
405
615
  // Check if section has any matching items
406
616
  const entries = getSectionItems(section);
407
617
  const filteredEntries = entries.filter(([name]) => this.matchesSearch(name));
@@ -435,13 +645,15 @@ let WccSidebar = (() => {
435
645
  const filteredEntries = entries.filter(([name]) => this.matchesSearch(name));
436
646
  if (section.type === 'pages') {
437
647
  return filteredEntries.map(([pageName, item]) => {
648
+ const isPinned = this.isPinned(section.name, pageName);
438
649
  return html `
439
650
  <div
440
- class="selectOption ${this.selectedItem === item ? 'selected' : ''}"
651
+ class="selectOption ${this.selectedItem === item ? 'selected' : ''} ${isPinned ? 'pinned' : ''}"
441
652
  @click=${async () => {
442
653
  await plugins.deesDomtools.DomTools.setupDomTools();
443
654
  this.selectItem('page', pageName, item, 0, section);
444
655
  }}
656
+ @contextmenu=${(e) => this.showContextMenu(e, section.name, pageName)}
445
657
  >
446
658
  <i class="material-symbols-outlined">insert_drive_file</i>
447
659
  <div class="text">${this.highlightMatch(pageName)}</div>
@@ -450,62 +662,95 @@ let WccSidebar = (() => {
450
662
  });
451
663
  }
452
664
  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);
458
- const isExpanded = this.expandedElements.has(elementName);
459
- const isSelected = this.selectedItem === item;
460
- if (isMultiDemo) {
461
- // Multi-demo element - render as expandable folder
462
- return html `
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) => {
474
- const demoIndex = i;
475
- const isThisDemoSelected = isSelected && this.dashboardRef.selectedDemoIndex === demoIndex;
476
- return html `
477
- <div
478
- class="demo-child ${isThisDemoSelected ? 'selected' : ''}"
479
- @click=${async () => {
480
- await plugins.deesDomtools.DomTools.setupDomTools();
481
- this.selectItem('element', elementName, item, demoIndex, section);
482
- }}
483
- >
484
- <i class="material-symbols-outlined">play_circle</i>
485
- <div class="text">demo${demoIndex + 1}</div>
486
- </div>
487
- `;
488
- })}
489
- </div>
490
- ` : null}
491
- `;
665
+ // type === 'elements' - group by demoGroup
666
+ const groupedItems = new Map();
667
+ for (const entry of filteredEntries) {
668
+ const [, item] = entry;
669
+ const group = item.demoGroup || null;
670
+ if (!groupedItems.has(group)) {
671
+ groupedItems.set(group, []);
492
672
  }
493
- else {
494
- // Single demo element
495
- return html `
496
- <div
497
- class="selectOption ${isSelected ? 'selected' : ''}"
498
- @click=${async () => {
499
- await plugins.deesDomtools.DomTools.setupDomTools();
500
- this.selectItem('element', elementName, item, 0, section);
501
- }}
502
- >
503
- <i class="material-symbols-outlined">featured_video</i>
504
- <div class="text">${this.highlightMatch(elementName)}</div>
505
- </div>
506
- `;
507
- }
508
- });
673
+ groupedItems.get(group).push(entry);
674
+ }
675
+ const result = [];
676
+ // Render ungrouped items first
677
+ const ungrouped = groupedItems.get(null) || [];
678
+ for (const entry of ungrouped) {
679
+ result.push(this.renderElementItem(entry, section));
680
+ }
681
+ // Render grouped items
682
+ for (const [groupName, items] of groupedItems) {
683
+ if (groupName === null)
684
+ continue;
685
+ result.push(html `
686
+ <div class="item-group">
687
+ <span class="item-group-legend">${groupName}</span>
688
+ ${items.map((entry) => this.renderElementItem(entry, section))}
689
+ </div>
690
+ `);
691
+ }
692
+ return result;
693
+ }
694
+ }
695
+ /**
696
+ * Render a single element item (used by renderSectionItems)
697
+ */
698
+ renderElementItem(entry, section) {
699
+ const [elementName, item] = entry;
700
+ const anonItem = item;
701
+ const demoCount = anonItem.demo ? getDemoCount(anonItem.demo) : 0;
702
+ const isMultiDemo = anonItem.demo && hasMultipleDemos(anonItem.demo);
703
+ const isExpanded = this.expandedElements.has(elementName);
704
+ const isSelected = this.selectedItem === item;
705
+ const isPinned = this.isPinned(section.name, elementName);
706
+ if (isMultiDemo) {
707
+ // Multi-demo element - render as expandable folder
708
+ return html `
709
+ <div
710
+ class="selectOption folder ${isExpanded ? 'expanded' : ''} ${isSelected ? 'selected' : ''} ${isPinned ? 'pinned' : ''}"
711
+ @click=${() => this.toggleExpanded(elementName)}
712
+ @contextmenu=${(e) => this.showContextMenu(e, section.name, elementName)}
713
+ >
714
+ <i class="material-symbols-outlined expand-icon">chevron_right</i>
715
+ <div class="text">${this.highlightMatch(elementName)}</div>
716
+ </div>
717
+ ${isExpanded ? html `
718
+ <div class="demo-children">
719
+ ${Array.from({ length: demoCount }, (_, i) => {
720
+ const demoIndex = i;
721
+ const isThisDemoSelected = isSelected && this.dashboardRef.selectedDemoIndex === demoIndex;
722
+ return html `
723
+ <div
724
+ class="demo-child ${isThisDemoSelected ? 'selected' : ''}"
725
+ @click=${async () => {
726
+ await plugins.deesDomtools.DomTools.setupDomTools();
727
+ this.selectItem('element', elementName, item, demoIndex, section);
728
+ }}
729
+ >
730
+ <i class="material-symbols-outlined">play_circle</i>
731
+ <div class="text">demo${demoIndex + 1}</div>
732
+ </div>
733
+ `;
734
+ })}
735
+ </div>
736
+ ` : null}
737
+ `;
738
+ }
739
+ else {
740
+ // Single demo element
741
+ return html `
742
+ <div
743
+ class="selectOption ${isSelected ? 'selected' : ''} ${isPinned ? 'pinned' : ''}"
744
+ @click=${async () => {
745
+ await plugins.deesDomtools.DomTools.setupDomTools();
746
+ this.selectItem('element', elementName, item, 0, section);
747
+ }}
748
+ @contextmenu=${(e) => this.showContextMenu(e, section.name, elementName)}
749
+ >
750
+ <i class="material-symbols-outlined">featured_video</i>
751
+ <div class="text">${this.highlightMatch(elementName)}</div>
752
+ </div>
753
+ `;
509
754
  }
510
755
  }
511
756
  toggleSectionCollapsed(sectionName) {
@@ -554,7 +799,7 @@ let WccSidebar = (() => {
554
799
  updated(changedProperties) {
555
800
  super.updated(changedProperties);
556
801
  // Auto-expand folder when a multi-demo element is selected
557
- if (changedProperties.has('selectedItem') && this.selectedItem) {
802
+ if (changedProperties.has('selectedItem') && this.selectedItem && this.dashboardRef?.sections) {
558
803
  // Find the element in any section
559
804
  for (const section of this.dashboardRef.sections) {
560
805
  if (section.type !== 'elements')
@@ -576,6 +821,44 @@ let WccSidebar = (() => {
576
821
  }
577
822
  }
578
823
  }
824
+ // ============ Resize functionality ============
825
+ startResize = (e) => {
826
+ e.preventDefault();
827
+ this.isResizing = true;
828
+ const startX = e.clientX;
829
+ const startWidth = this.sidebarWidth;
830
+ // Cache references once at start
831
+ const frame = this.dashboardRef?.shadowRoot?.querySelector('wcc-frame');
832
+ const properties = this.dashboardRef?.shadowRoot?.querySelector('wcc-properties');
833
+ // Disable frame transition during resize
834
+ if (frame) {
835
+ frame.isResizing = true;
836
+ }
837
+ const onMouseMove = (e) => {
838
+ const newWidth = Math.min(400, Math.max(150, startWidth + (e.clientX - startX)));
839
+ this.sidebarWidth = newWidth;
840
+ // Update frame and properties directly
841
+ if (frame) {
842
+ frame.sidebarWidth = newWidth;
843
+ }
844
+ if (properties) {
845
+ properties.sidebarWidth = newWidth;
846
+ }
847
+ };
848
+ const onMouseUp = () => {
849
+ this.isResizing = false;
850
+ document.removeEventListener('mousemove', onMouseMove);
851
+ document.removeEventListener('mouseup', onMouseUp);
852
+ // Re-enable frame transition
853
+ if (frame) {
854
+ frame.isResizing = false;
855
+ }
856
+ // Dispatch event on release for URL persistence
857
+ this.dispatchEvent(new CustomEvent('widthChanged', { detail: this.sidebarWidth }));
858
+ };
859
+ document.addEventListener('mousemove', onMouseMove);
860
+ document.addEventListener('mouseup', onMouseUp);
861
+ };
579
862
  selectItem(typeArg, itemNameArg, itemArg, demoIndex = 0, section) {
580
863
  console.log('selected item');
581
864
  console.log(itemNameArg);
@@ -606,4 +889,4 @@ let WccSidebar = (() => {
606
889
  return WccSidebar = _classThis;
607
890
  })();
608
891
  export { WccSidebar };
609
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjLXNpZGViYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvd2NjLXNpZGViYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBdUIsS0FBSyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7SUFJMUQsVUFBVTs0QkFEdEIsYUFBYSxDQUFDLGFBQWEsQ0FBQzs7OztzQkFDRyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQUFuQixTQUFRLFdBQVc7Ozs7d0NBQ3hDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzt3Q0FHOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO3dDQUc5QixRQUFRLEVBQUU7b0NBR1YsUUFBUSxFQUFFOzRDQUlWLEtBQUssRUFBRTs2Q0FJUCxLQUFLLEVBQUU7dUNBSVAsUUFBUSxFQUFFO1lBcEJYLHlMQUFTLFlBQVksNkJBQVosWUFBWSxtR0FBaUM7WUFHdEQseUxBQVMsWUFBWSw2QkFBWixZQUFZLG1HQUFlO1lBR3BDLHlMQUFTLFlBQVksNkJBQVosWUFBWSxtR0FBZTtZQUdwQyw2S0FBUyxRQUFRLDZCQUFSLFFBQVEsMkZBQWtCO1lBSW5DLHFNQUFTLGdCQUFnQiw2QkFBaEIsZ0JBQWdCLDJHQUEwQjtZQUluRCx3TUFBUyxpQkFBaUIsNkJBQWpCLGlCQUFpQiw2R0FBMEI7WUFJcEQsc0xBQVMsV0FBVyw2QkFBWCxX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
892
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjLXNpZGViYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvd2NjLXNpZGViYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBdUIsS0FBSyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0lBR3pDLFVBQVU7NEJBRHRCLGFBQWEsQ0FBQyxhQUFhLENBQUM7Ozs7c0JBQ0csV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkFBbkIsU0FBUSxXQUFXOzs7O3dDQUN4QyxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7d0NBRzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzt3Q0FHOUIsUUFBUSxFQUFFO29DQUdWLFFBQVEsRUFBRTs0Q0FJVixLQUFLLEVBQUU7NkNBSVAsS0FBSyxFQUFFO3VDQUlQLFFBQVEsRUFBRTt1Q0FJVixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7d0NBSTlCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztzQ0FJMUIsS0FBSyxFQUFFO1lBaENSLHlMQUFTLFlBQVksNkJBQVosWUFBWSxtR0FBaUM7WUFHdEQseUxBQVMsWUFBWSw2QkFBWixZQUFZLG1HQUFlO1lBR3BDLHlMQUFT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