@design.estate/dees-catalog 13.1.0 → 13.2.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.
@@ -42,7 +42,7 @@ import { DeesContextmenu } from '../../00group-overlay/dees-contextmenu/dees-con
42
42
  import { DeesServiceLibLoader } from '../../../services/index.js';
43
43
  import '../../00group-layout/dees-tile/dees-tile.js';
44
44
  import '../../00group-utility/dees-icon/dees-icon.js';
45
- import { buildSplitRows, computeLineDiff, diffStats, foldContextRows, parseUnifiedDiff, toUnifiedDiff, } from './codebox.diff.js';
45
+ import { buildSplitRows, computeLineDiff, diffStats, foldContextRows, parseUnifiedDiffDocument, toUnifiedDiff, } from './codebox.diff.js';
46
46
  let DeesDataviewCodebox = (() => {
47
47
  let _classDecorators = [customElement('dees-dataview-codebox')];
48
48
  let _classDescriptor;
@@ -67,6 +67,9 @@ let DeesDataviewCodebox = (() => {
67
67
  let _unifiedDiff_decorators;
68
68
  let _unifiedDiff_initializers = [];
69
69
  let _unifiedDiff_extraInitializers = [];
70
+ let _unifiedDiffTruncated_decorators;
71
+ let _unifiedDiffTruncated_initializers = [];
72
+ let _unifiedDiffTruncated_extraInitializers = [];
70
73
  let _diffView_decorators;
71
74
  let _diffView_initializers = [];
72
75
  let _diffView_extraInitializers = [];
@@ -98,6 +101,7 @@ let DeesDataviewCodebox = (() => {
98
101
  _codeToDisplay_decorators = [property({ type: String })];
99
102
  _codeBefore_decorators = [property({ type: String })];
100
103
  _unifiedDiff_decorators = [property({ type: String })];
104
+ _unifiedDiffTruncated_decorators = [property({ type: Boolean })];
101
105
  _diffView_decorators = [property({ type: String })];
102
106
  _showDiffLineNumbers_decorators = [property({ type: Boolean })];
103
107
  _highlightedCode_decorators = [state()];
@@ -111,6 +115,7 @@ let DeesDataviewCodebox = (() => {
111
115
  __esDecorate(this, null, _codeToDisplay_decorators, { kind: "accessor", name: "codeToDisplay", static: false, private: false, access: { has: obj => "codeToDisplay" in obj, get: obj => obj.codeToDisplay, set: (obj, value) => { obj.codeToDisplay = value; } }, metadata: _metadata }, _codeToDisplay_initializers, _codeToDisplay_extraInitializers);
112
116
  __esDecorate(this, null, _codeBefore_decorators, { kind: "accessor", name: "codeBefore", static: false, private: false, access: { has: obj => "codeBefore" in obj, get: obj => obj.codeBefore, set: (obj, value) => { obj.codeBefore = value; } }, metadata: _metadata }, _codeBefore_initializers, _codeBefore_extraInitializers);
113
117
  __esDecorate(this, null, _unifiedDiff_decorators, { kind: "accessor", name: "unifiedDiff", static: false, private: false, access: { has: obj => "unifiedDiff" in obj, get: obj => obj.unifiedDiff, set: (obj, value) => { obj.unifiedDiff = value; } }, metadata: _metadata }, _unifiedDiff_initializers, _unifiedDiff_extraInitializers);
118
+ __esDecorate(this, null, _unifiedDiffTruncated_decorators, { kind: "accessor", name: "unifiedDiffTruncated", static: false, private: false, access: { has: obj => "unifiedDiffTruncated" in obj, get: obj => obj.unifiedDiffTruncated, set: (obj, value) => { obj.unifiedDiffTruncated = value; } }, metadata: _metadata }, _unifiedDiffTruncated_initializers, _unifiedDiffTruncated_extraInitializers);
114
119
  __esDecorate(this, null, _diffView_decorators, { kind: "accessor", name: "diffView", static: false, private: false, access: { has: obj => "diffView" in obj, get: obj => obj.diffView, set: (obj, value) => { obj.diffView = value; } }, metadata: _metadata }, _diffView_initializers, _diffView_extraInitializers);
115
120
  __esDecorate(this, null, _showDiffLineNumbers_decorators, { kind: "accessor", name: "showDiffLineNumbers", static: false, private: false, access: { has: obj => "showDiffLineNumbers" in obj, get: obj => obj.showDiffLineNumbers, set: (obj, value) => { obj.showDiffLineNumbers = value; } }, metadata: _metadata }, _showDiffLineNumbers_initializers, _showDiffLineNumbers_extraInitializers);
116
121
  __esDecorate(this, null, _highlightedCode_decorators, { kind: "accessor", name: "highlightedCode", static: false, private: false, access: { has: obj => "highlightedCode" in obj, get: obj => obj.highlightedCode, set: (obj, value) => { obj.highlightedCode = value; } }, metadata: _metadata }, _highlightedCode_initializers, _highlightedCode_extraInitializers);
@@ -150,7 +155,11 @@ let DeesDataviewCodebox = (() => {
150
155
  #unifiedDiff_accessor_storage = (__runInitializers(this, _codeBefore_extraInitializers), __runInitializers(this, _unifiedDiff_initializers, ''));
151
156
  get unifiedDiff() { return this.#unifiedDiff_accessor_storage; }
152
157
  set unifiedDiff(value) { this.#unifiedDiff_accessor_storage = value; }
153
- #diffView_accessor_storage = (__runInitializers(this, _unifiedDiff_extraInitializers), __runInitializers(this, _diffView_initializers, ''));
158
+ #unifiedDiffTruncated_accessor_storage = (__runInitializers(this, _unifiedDiff_extraInitializers), __runInitializers(this, _unifiedDiffTruncated_initializers, false));
159
+ /** The unified patch ends before the producer's complete output. */
160
+ get unifiedDiffTruncated() { return this.#unifiedDiffTruncated_accessor_storage; }
161
+ set unifiedDiffTruncated(value) { this.#unifiedDiffTruncated_accessor_storage = value; }
162
+ #diffView_accessor_storage = (__runInitializers(this, _unifiedDiffTruncated_extraInitializers), __runInitializers(this, _diffView_initializers, ''));
154
163
  /** '' = regular code; 'inline' = unified rows; 'split' = side by side; 'auto' splits at 640px. */
155
164
  get diffView() { return this.#diffView_accessor_storage; }
156
165
  set diffView(value) { this.#diffView_accessor_storage = value; }
@@ -485,17 +494,64 @@ let DeesDataviewCodebox = (() => {
485
494
  .diffStat.removed {
486
495
  color: var(--dees-color-accent-error);
487
496
  }
497
+
498
+ .diffFileHeader {
499
+ display: flex;
500
+ align-items: baseline;
501
+ gap: var(--dees-spacing-md);
502
+ min-width: 0;
503
+ padding: 6px var(--dees-spacing-lg);
504
+ border-top: 1px solid var(--dees-color-border-subtle);
505
+ border-bottom: 1px solid var(--dees-color-border-subtle);
506
+ background: var(--dees-color-bg-secondary);
507
+ }
508
+
509
+ .diffFile:first-child > .diffFileHeader { border-top: 0; }
510
+
511
+ .diffFilePath {
512
+ min-width: 0;
513
+ overflow: hidden;
514
+ text-overflow: ellipsis;
515
+ white-space: nowrap;
516
+ color: var(--dees-color-text-primary);
517
+ font: 600 var(--dees-font-control-size-sm)/1.4 var(--dees-font-family-mono);
518
+ }
519
+
520
+ .diffFileMeta {
521
+ flex: 0 1 auto;
522
+ min-width: 0;
523
+ overflow: hidden;
524
+ text-overflow: ellipsis;
525
+ white-space: nowrap;
526
+ color: var(--dees-color-text-muted);
527
+ font-size: var(--dees-font-caption1-size, 11px);
528
+ }
529
+
530
+ .diffFileNotice,
531
+ .diffDocumentNotice {
532
+ padding: var(--dees-spacing-lg);
533
+ color: var(--dees-color-text-muted);
534
+ font-size: var(--dees-font-control-size-sm);
535
+ }
536
+
537
+ .diffQualifier {
538
+ margin-left: var(--dees-spacing-sm);
539
+ color: var(--dees-color-text-muted);
540
+ font-weight: 500;
541
+ }
488
542
  `,
489
543
  ];
490
544
  render() {
491
545
  const contextMenuOptions = [
492
- {
493
- name: 'Copy Code',
494
- iconName: 'lucide:Copy',
495
- action: async () => {
496
- await this.copyCode();
497
- },
498
- },
546
+ ...(!this.unifiedDiff
547
+ ? [{
548
+ name: 'Copy Code',
549
+ iconName: 'lucide:Copy',
550
+ action: async () => {
551
+ await this.copyCode();
552
+ },
553
+ }]
554
+ : []),
499
555
  ...(this.isDiffActive
500
556
  ? [{
501
557
  name: 'Copy Unified Diff',
@@ -524,13 +580,15 @@ let DeesDataviewCodebox = (() => {
524
580
  @option-activate=${(event) => { event.stopPropagation(); this.setDiffView(event.detail.value); }}></dees-input-multitoggle>
525
581
  `
526
582
  : ''}
527
- <div
528
- class="copyButton ${this.copied ? 'copied' : ''}"
529
- title="Copy code"
530
- @click=${this.copyCode}
531
- >
532
- <dees-icon .icon=${this.copied ? 'lucide:Check' : 'lucide:Copy'} iconSize="14"></dees-icon>
533
- </div>
583
+ ${!this.unifiedDiff ? html `
584
+ <div
585
+ class="copyButton ${this.copied ? 'copied' : ''}"
586
+ title="Copy code"
587
+ @click=${this.copyCode}
588
+ >
589
+ <dees-icon .icon=${this.copied ? 'lucide:Check' : 'lucide:Copy'} iconSize="14"></dees-icon>
590
+ </div>
591
+ ` : ''}
534
592
  </div>
535
593
  </div>
536
594
  ${this.isDiffActive ? this.renderDiff() : this.renderCode()}
@@ -559,19 +617,90 @@ let DeesDataviewCodebox = (() => {
559
617
  return html `<div class="lineCount">${codeLines.length} ${codeLines.length === 1 ? 'line' : 'lines'}</div>`;
560
618
  }
561
619
  renderDiffFooter() {
562
- const stats = diffStats(this.diffRows);
620
+ const summary = this.diffDocument?.summary;
621
+ const stats = summary
622
+ ? summary.type === 'unparseable' ? undefined : summary.stats
623
+ : diffStats(this.diffRows);
624
+ const qualifiers = [];
625
+ if (summary?.type === 'partial')
626
+ qualifiers.push('Partial diff');
627
+ if (summary?.type === 'unparseable')
628
+ qualifiers.push('Diff format unavailable');
629
+ if (summary?.binaryFiles) {
630
+ qualifiers.push(`${summary.binaryFiles} binary ${summary.binaryFiles === 1 ? 'file' : 'files'}`);
631
+ }
632
+ if (summary?.type === 'exact' && !stats && !summary.binaryFiles)
633
+ qualifiers.push('Metadata-only diff');
563
634
  return html `
564
635
  <div class="lineCount">
565
- <span class="diffStat added">+${stats.added}</span>
566
- <span class="diffStat removed">−${stats.removed}</span>
636
+ ${stats ? html `
637
+ <span class="diffStat added">+${stats.added}</span>
638
+ <span class="diffStat removed">−${stats.removed}</span>
639
+ ` : ''}
640
+ ${qualifiers.length ? html `<span class="diffQualifier">${qualifiers.join(' · ')}</span>` : ''}
567
641
  </div>
568
642
  `;
569
643
  }
570
644
  renderDiff() {
571
- const displayRows = this.displayRowsWithFolds();
645
+ const sections = this.displaySectionsWithFolds();
646
+ if (!sections.length) {
647
+ return html `<div class="diffDocumentNotice">The diff has no displayable file sections.</div>`;
648
+ }
572
649
  return this.effectiveDiffView === 'split'
573
- ? this.renderSplitGrid(displayRows)
574
- : html `<div class="diffScroll">${this.renderInlineGrid(displayRows)}</div>`;
650
+ ? html `${sections.map(({ file, rows }) => html `
651
+ <section class="diffFile">
652
+ ${this.renderDiffFileHeader(file)}
653
+ ${rows.length ? this.renderSplitGrid(rows) : this.renderDiffFileNotice(file)}
654
+ </section>
655
+ `)}`
656
+ : html `<div class="diffScroll">${sections.map(({ file, rows }) => html `
657
+ <section class="diffFile">
658
+ ${this.renderDiffFileHeader(file)}
659
+ ${rows.length ? this.renderInlineGrid(rows) : this.renderDiffFileNotice(file)}
660
+ </section>
661
+ `)}</div>`;
662
+ }
663
+ renderDiffFileHeader(fileArg) {
664
+ const details = this.diffFileMetadataLabels(fileArg);
665
+ const path = fileArg.beforePath && fileArg.afterPath && fileArg.beforePath !== fileArg.afterPath
666
+ ? `${fileArg.beforePath} → ${fileArg.afterPath}`
667
+ : fileArg.displayPath;
668
+ if (!path && !details.length)
669
+ return '';
670
+ return html `
671
+ <div class="diffFileHeader">
672
+ <div class="diffFilePath">${path ?? 'Unscoped patch'}</div>
673
+ ${details.length ? html `<div class="diffFileMeta">${details.join(' · ')}</div>` : ''}
674
+ </div>
675
+ `;
676
+ }
677
+ diffFileMetadataLabels(fileArg) {
678
+ const labels = [];
679
+ const metadata = (kindArg) => fileArg.metadata.filter((entry) => entry.kind === kindArg).map((entry) => entry.value);
680
+ const newFileMode = metadata('new-file-mode')[0];
681
+ const deletedFileMode = metadata('deleted-file-mode')[0];
682
+ const oldMode = metadata('old-mode')[0];
683
+ const newMode = metadata('new-mode')[0];
684
+ if (newFileMode)
685
+ labels.push(`New file · mode ${newFileMode}`);
686
+ if (deletedFileMode)
687
+ labels.push(`Deleted file · mode ${deletedFileMode}`);
688
+ if (metadata('rename-from').length || metadata('rename-to').length)
689
+ labels.push('Renamed');
690
+ if (metadata('copy-from').length || metadata('copy-to').length)
691
+ labels.push('Copied');
692
+ if (oldMode || newMode)
693
+ labels.push(`Mode ${oldMode ?? '?'} → ${newMode ?? '?'}`);
694
+ labels.push(...metadata('similarity-index').map((value) => `${value} similar`));
695
+ labels.push(...metadata('dissimilarity-index').map((value) => `${value} dissimilar`));
696
+ if (fileArg.binary)
697
+ labels.push('Binary change');
698
+ return labels;
699
+ }
700
+ renderDiffFileNotice(fileArg) {
701
+ return html `<div class="diffFileNotice">${fileArg.binary
702
+ ? 'Binary content is not shown.'
703
+ : 'No textual line changes.'}</div>`;
575
704
  }
576
705
  renderInlineGrid(displayRows) {
577
706
  return html `
@@ -683,6 +812,7 @@ let DeesDataviewCodebox = (() => {
683
812
  highlightToken = 0;
684
813
  copiedResetTimeout = null;
685
814
  diffRows = [];
815
+ diffDocument = null;
686
816
  diffHighlightCache = new Map();
687
817
  autoDiffResizeObserver = null;
688
818
  async connectedCallback() {
@@ -741,13 +871,22 @@ let DeesDataviewCodebox = (() => {
741
871
  if (changedProperties.has('codeToDisplay')
742
872
  || changedProperties.has('codeBefore')
743
873
  || changedProperties.has('unifiedDiff')
874
+ || changedProperties.has('unifiedDiffTruncated')
744
875
  || changedProperties.has('diffView')) {
745
876
  if (this.isDiffActive) {
746
- this.diffRows = this.unifiedDiff
747
- ? parseUnifiedDiff(this.unifiedDiff)
748
- : computeLineDiff(this.codeBefore, this.codeToDisplay);
877
+ if (this.unifiedDiff) {
878
+ this.diffDocument = parseUnifiedDiffDocument(this.unifiedDiff, {
879
+ truncated: this.unifiedDiffTruncated,
880
+ });
881
+ this.diffRows = this.diffDocument.files.flatMap((file) => file.rows);
882
+ }
883
+ else {
884
+ this.diffDocument = null;
885
+ this.diffRows = computeLineDiff(this.codeBefore, this.codeToDisplay);
886
+ }
749
887
  }
750
888
  else {
889
+ this.diffDocument = null;
751
890
  this.diffRows = [];
752
891
  }
753
892
  this.diffHighlightCache.clear();
@@ -758,25 +897,34 @@ let DeesDataviewCodebox = (() => {
758
897
  this.diffHighlightCache.clear();
759
898
  }
760
899
  }
761
- displayRowsWithFolds() {
762
- const folded = foldContextRows(this.diffRows);
763
- const result = [];
900
+ displaySectionsWithFolds() {
901
+ const files = this.diffDocument?.files ?? [{
902
+ metadata: [],
903
+ rows: this.diffRows,
904
+ binary: false,
905
+ }];
764
906
  let foldOrdinal = 0;
765
- for (const row of folded) {
766
- if (row.kind === 'fold') {
767
- if (this.expandedFolds.has(foldOrdinal)) {
768
- result.push(...row.rows);
907
+ return files.map((file) => {
908
+ const result = [];
909
+ for (const row of foldContextRows(file.rows)) {
910
+ if (row.kind === 'fold') {
911
+ if (this.expandedFolds.has(foldOrdinal)) {
912
+ result.push(...row.rows);
913
+ }
914
+ else {
915
+ result.push({ ...row, ordinal: foldOrdinal });
916
+ }
917
+ foldOrdinal++;
769
918
  }
770
919
  else {
771
- result.push({ ...row, ordinal: foldOrdinal });
920
+ result.push(row);
772
921
  }
773
- foldOrdinal++;
774
- }
775
- else {
776
- result.push(row);
777
922
  }
778
- }
779
- return result;
923
+ return { file, rows: result };
924
+ });
925
+ }
926
+ displayRowsWithFolds() {
927
+ return this.displaySectionsWithFolds().flatMap((section) => section.rows);
780
928
  }
781
929
  async updated(changedProperties) {
782
930
  super.updated(changedProperties);
@@ -794,6 +942,7 @@ let DeesDataviewCodebox = (() => {
794
942
  if (changedProperties.has('codeToDisplay')
795
943
  || changedProperties.has('codeBefore')
796
944
  || changedProperties.has('unifiedDiff')
945
+ || changedProperties.has('unifiedDiffTruncated')
797
946
  || changedProperties.has('diffView')
798
947
  || changedProperties.has('expandedFolds')
799
948
  || changedProperties.has('progLang')) {
@@ -865,6 +1014,9 @@ let DeesDataviewCodebox = (() => {
865
1014
  }
866
1015
  }
867
1016
  copyCode = async () => {
1017
+ if (this.unifiedDiff) {
1018
+ return;
1019
+ }
868
1020
  // in diff mode the copy button yields the after-state text
869
1021
  const textToCopy = this.isDiffActive
870
1022
  ? this.diffRows
@@ -916,4 +1068,4 @@ let DeesDataviewCodebox = (() => {
916
1068
  return DeesDataviewCodebox = _classThis;
917
1069
  })();
918
1070
  export { DeesDataviewCodebox };
919
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1kYXRhdmlldy1jb2RlYm94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtZGF0YXZpZXcvZGVlcy1kYXRhdmlldy1jb2RlYm94L2RlZXMtZGF0YXZpZXctY29kZWJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxzRUFBc0UsQ0FBQztBQUM5RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUkzRSxPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFDO0FBRXZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUM3RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sOENBQThDLENBQUM7QUFDdEQsT0FBTyxFQUNMLGNBQWMsRUFDZCxlQUFlLEVBQ2YsU0FBUyxFQUNULGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsYUFBYSxHQUtkLE1BQU0sbUJBQW1CLENBQUM7SUFnQmQsbUJBQW1COzRCQUQvQixhQUFhLENBQUMsdUJBQXVCLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQ0FBbkIsU0FBUSxXQUFXOzs7O29DQUlqRCxRQUFR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
1071
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1kYXRhdmlldy1jb2RlYm94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtZGF0YXZpZXcvZGVlcy1kYXRhdmlldy1jb2RlYm94L2RlZXMtZGF0YXZpZXctY29kZWJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxzRUFBc0UsQ0FBQztBQUM5RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUkzRSxPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFDO0FBRXZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUM3RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sOENBQThDLENBQUM7QUFDdEQsT0FBTyxFQUNMLGNBQWMsRUFDZCxlQUFlLEVBQ2YsU0FBUyxFQUNULGVBQWUsRUFDZix3QkFBd0IsRUFDeEIsYUFBYSxHQVFkLE1BQU0sbUJBQW1CLENBQUM7SUFnQmQsbUJBQW1COzRCQUQvQixhQUFhLENBQUMsdUJBQXVCLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQ0FBbkIsU0FBUSxXQUFXOzs7O29DQUlqRCxR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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@design.estate/dees-catalog",
3
- "version": "13.1.0",
3
+ "version": "13.2.0",
4
4
  "private": false,
5
5
  "description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
6
6
  "main": "dist_ts_web/index.js",
package/readme.md CHANGED
@@ -1681,6 +1681,20 @@ Code display component with syntax highlighting and line numbers.
1681
1681
 
1682
1682
  Diff rendering includes word-level intraline change highlighting, unchanged-context folding with expandable "N unchanged lines" rows, `+added −removed` stats in the footer, and a "Copy Unified Diff" context-menu action. The app bar switches between inline and split layouts and emits the bubbling, composed `diff-view-change` event with `IDiffViewChangeDetail` (`{ diffView: TDiffView }`). The exported `TDiffView` type is `'inline' | 'split'`. Split mode keeps a fixed center divider and gives each side an independent horizontal scroll position while the containing surface owns their shared vertical movement. Set `showDiffLineNumbers` to `false` when snippet inputs do not carry trustworthy source positions. The copy button yields the after-state text. The dependency-free engine (`computeLineDiff`, `parseUnifiedDiff`, `foldContextRows`, `buildSplitRows`, `diffStats`, `toUnifiedDiff`) is exported for programmatic use.
1683
1683
 
1684
+ Unified patches retain their ordered file boundaries. Each file heading shows its
1685
+ before/after path and typed Git metadata such as new, deleted, renamed, copied,
1686
+ mode-only, and binary changes. Set `unifiedDiffTruncated` when the producer bounded
1687
+ the patch: the footer then labels it as partial and counts only complete hunks.
1688
+ Binary and unparseable inputs never appear as `+0 −0`. The after-state copy action
1689
+ is available for full before/after inputs; unified patches retain the exact source
1690
+ through the **Copy Unified Diff** context action.
1691
+
1692
+ Use `parseUnifiedDiffDocument(patch, { truncated? })` when a caller needs the same
1693
+ structured view. It returns ordered `IUnifiedDiffFileSection` entries with typed
1694
+ metadata, text rows, and binary state, plus a `TUnifiedDiffDocumentSummary` that
1695
+ separately reports completeness, trustworthy text stats, and the binary-file count.
1696
+ `parseUnifiedDiff(patch)` remains the compatibility view that flattens text rows.
1697
+
1684
1698
  Use `summarizeUnifiedDiff(patch, { truncated? })` when counts must state their confidence. It returns `TUnifiedDiffSummary`: `{ type: 'exact', stats }` after validating every hunk, `{ type: 'partial', stats? }` for an explicitly incomplete input, `{ type: 'binary' }` for a binary patch, or `{ type: 'unparseable' }`. `stats` is `IDiffStats` (`{ added, removed }`). The helper never presents an invalid, non-text, or truncated patch as `+0 −0`.
1685
1699
 
1686
1700
  `diffView="auto"` uses inline rows below 640px of codebox width and split rows at 640px or wider. Resizing preserves expanded context and does not emit `diff-view-change`. Clicking either layout button fixes that choice, including when it already matches the automatic layout; set `diffView` back to `'auto'` to resume adaptation. The exported `TDiffViewRequest` adds `'auto'` to `TDiffView`, while event details and saved manual choices remain `'inline' | 'split'`. The default empty `diffView` and explicit layouts retain their existing behavior.
@@ -2169,6 +2183,11 @@ readings in the selected window. An unavailable statistic is displayed as `—`.
2169
2183
  With `realtimeMode=true` and `rollingWindow=3_600_000`, the time axis follows
2170
2184
  the last hour even while the latest reading is unavailable.
2171
2185
 
2186
+ Set `compact` when the chart is embedded in a popover or another component that
2187
+ already owns its heading and frame. Compact mode dedicates the bounded component
2188
+ height to the plot and omits the nested tile chrome, chart heading, full-page
2189
+ action, and legend. The default framed presentation is unchanged.
2190
+
2172
2191
  ```typescript
2173
2192
  <dees-chart-area
2174
2193
  label="System Usage"
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '13.1.0',
6
+ version: '13.2.0',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  }
@@ -126,6 +126,10 @@ export class DeesChartArea extends DeesElement {
126
126
  @property({ type: Boolean })
127
127
  accessor hideLegend: boolean = false;
128
128
 
129
+ /** Embed only the plot: no nested tile chrome, heading, expand action, or legend. */
130
+ @property({ type: Boolean, reflect: true })
131
+ accessor compact: boolean = false;
132
+
129
133
  /**
130
134
  * Which reference lines are drawn on the chart per series. The 'max' line
131
135
  * keeps its existing rule of only appearing when max exceeds avg by >10%.
@@ -8,6 +8,9 @@ export const chartAreaStyles = [
8
8
  chartFrameStyles,
9
9
  css`
10
10
  .chartContainer { margin: 12px 16px 8px; }
11
+ :host([compact]) dees-tile::part(outer) { border: 0; border-radius: 0; }
12
+ :host([compact]) dees-tile::part(content) { border: 0; }
13
+ :host([compact]) .chartContainer { margin: 4px 0 0; }
11
14
  .rangeSelectionOverlay {
12
15
  position: absolute;
13
16
  display: none;
@@ -5,18 +5,22 @@ import '../../00group-utility/dees-icon/dees-icon.js';
5
5
  export const renderChartArea = (component: DeesChartArea): TemplateResult => {
6
6
  return html`
7
7
  <dees-tile>
8
- <div slot="header" class="chartHeader">
9
- <h2 class="chartLabel">${component.label}</h2>
10
- <button type="button" aria-label=${component.isFullPage ? 'Exit full page' : 'Expand chart'} class="expandBtn" @click=${() => component.toggleFullPage()} title="${component.isFullPage ? 'Exit full page' : 'Full page'}">
11
- <dees-icon .icon=${component.isFullPage ? 'lucide:Minimize2' : 'lucide:Maximize2'} .iconSize=${14}></dees-icon>
12
- </button>
13
- </div>
8
+ ${component.compact
9
+ ? html`<span slot="header" hidden></span>`
10
+ : html`
11
+ <div slot="header" class="chartHeader">
12
+ <h2 class="chartLabel">${component.label}</h2>
13
+ <button type="button" aria-label=${component.isFullPage ? 'Exit full page' : 'Expand chart'} class="expandBtn" @click=${() => component.toggleFullPage()} title="${component.isFullPage ? 'Exit full page' : 'Full page'}">
14
+ <dees-icon .icon=${component.isFullPage ? 'lucide:Minimize2' : 'lucide:Maximize2'} .iconSize=${14}></dees-icon>
15
+ </button>
16
+ </div>
17
+ `}
14
18
  <div class="chartContainer">
15
19
  <div class="rangeSelectionOverlay" aria-hidden="true"></div>
16
20
  </div>
17
21
  ${!component.chartSeries.some(series => series.data.some(point => point.y !== null))
18
22
  ? html`<div class="chartState" role="status">No data for this period</div>` : ''}
19
- ${component.seriesStats.length > 0 && !component.hideLegend ? html`
23
+ ${component.seriesStats.length > 0 && !component.hideLegend && !component.compact ? html`
20
24
  <div slot="footer" class="statsBar">
21
25
  ${component.seriesStats.map(s => html`
22
26
  <div class="statsSeries">