@jumoo/usync 18.2.0 → 18.2.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.
Files changed (35) hide show
  1. package/LICENCE +372 -372
  2. package/README.md +16 -10
  3. package/dist/components/usync-action-box.js +71 -71
  4. package/dist/components/usync-change-detail.js +409 -409
  5. package/dist/components/usync-change-view.js +49 -49
  6. package/dist/components/usync-progress-box.js +113 -113
  7. package/dist/components/usync-result-row.js +65 -65
  8. package/dist/components/usync-results-group-view.js +63 -63
  9. package/dist/components/usync-results-view.js +64 -64
  10. package/dist/components/usync-sync-file-info-view.js +10 -10
  11. package/dist/constants.js +1 -1
  12. package/dist/dialogs/details-modal-element.js +45 -45
  13. package/dist/dialogs/error-modal-element.js +22 -22
  14. package/dist/dialogs/legacy-modal-element.js +22 -22
  15. package/dist/dialogs/single-import-modal.element.js +31 -31
  16. package/dist/icons/svg/logo.js +20 -20
  17. package/dist/lang/files/da-dk.js +12 -12
  18. package/dist/lang/files/de-de.js +12 -12
  19. package/dist/lang/files/en-us.js +12 -12
  20. package/dist/lang/files/es-es.js +12 -12
  21. package/dist/lang/files/fr-fr.js +12 -12
  22. package/dist/lang/files/nl-nl.js +12 -12
  23. package/dist/signalr/signalr.context.js +73 -26
  24. package/dist/tree/usync.menu-element.js +8 -8
  25. package/dist/workspace/components/usync-action-button.js +53 -53
  26. package/dist/workspace/components/usync-file-picker.element.js +33 -33
  27. package/dist/workspace/components/usync-file-upload.element.js +25 -25
  28. package/dist/workspace/dialogs/import-modal.element.js +22 -22
  29. package/dist/workspace/views/addons/addons.element.js +97 -97
  30. package/dist/workspace/views/default/default.element.js +186 -186
  31. package/dist/workspace/views/legacy/legacy.element.js +81 -81
  32. package/dist/workspace/views/settings/components/usyncSettingItem.element.js +38 -38
  33. package/dist/workspace/views/settings/settings.element.js +124 -124
  34. package/dist/workspace/workspace.element.js +16 -16
  35. package/package.json +77 -77
@@ -68,59 +68,59 @@ let uSyncChangeDetail = class uSyncChangeDetail extends UmbLitElement {
68
68
  const failed = detail.success === false;
69
69
  const expandable = __classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_isExpandable).call(this, classified.strategy);
70
70
  const isOpen = this.open;
71
- return html `
72
- <div class=${classMap({ 'change-row': true, danger: failed })}>
73
- <div
74
- class=${classMap({ summary: true, expanded: isOpen, static: !expandable })}
75
- @click=${expandable ? __classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_toggleOpen) : undefined}>
76
- <div class="summary-left">
77
- ${when(failed, () => html `<umb-icon name="icon-alert" class="color-red"></umb-icon>`)}
78
- ${when(this._label?.prefix, () => html `<span class="prefix"
79
- >${this.localize.term('uSync_changeProperty')}</span
80
- >`)}
81
- <span class="label" title=${detail.path}
82
- >${this._label?.label || detail.name}</span
83
- >
84
- ${when(this._label?.culture, () => html `<uui-tag size="s" look="secondary"
85
- >${this._label.culture}</uui-tag
86
- >`)}
87
- </div>
88
- <div class="summary-right">
89
- <span class=${classMap({ danger: classified.strategy === 'notice' })}
90
- >${__classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_renderSummary).call(this, classified)}</span
91
- >
92
- ${when(expandable, () => html `<uui-icon
93
- name="icon-play"
94
- class=${classMap({ expanded: isOpen })}></uui-icon>`)}
95
- </div>
96
- </div>
97
- ${when(isOpen && expandable, () => html `
98
- <div class="body">
99
- ${__classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_renderBody).call(this, classified)}
100
- <div class="path-line">
101
- <span class="muted"
102
- >${this.localize.term('uSync_diffPath', detail.path)}</span
103
- >
104
- <div class="path-line-actions">
105
- ${when(classified.strategy === 'json', () => html `
106
- <uui-button look="text" compact @click=${__classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_toggleRaw)}>
71
+ return html `
72
+ <div class=${classMap({ 'change-row': true, danger: failed })}>
73
+ <div
74
+ class=${classMap({ summary: true, expanded: isOpen, static: !expandable })}
75
+ @click=${expandable ? __classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_toggleOpen) : undefined}>
76
+ <div class="summary-left">
77
+ ${when(failed, () => html `<umb-icon name="icon-alert" class="color-red"></umb-icon>`)}
78
+ ${when(this._label?.prefix, () => html `<span class="prefix"
79
+ >${this.localize.term('uSync_changeProperty')}</span
80
+ >`)}
81
+ <span class="label" title=${detail.path}
82
+ >${this._label?.label || detail.name}</span
83
+ >
84
+ ${when(this._label?.culture, () => html `<uui-tag size="s" look="secondary"
85
+ >${this._label.culture}</uui-tag
86
+ >`)}
87
+ </div>
88
+ <div class="summary-right">
89
+ <span class=${classMap({ danger: classified.strategy === 'notice' })}
90
+ >${__classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_renderSummary).call(this, classified)}</span
91
+ >
92
+ ${when(expandable, () => html `<uui-icon
93
+ name="icon-play"
94
+ class=${classMap({ expanded: isOpen })}></uui-icon>`)}
95
+ </div>
96
+ </div>
97
+ ${when(isOpen && expandable, () => html `
98
+ <div class="body">
99
+ ${__classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_renderBody).call(this, classified)}
100
+ <div class="path-line">
101
+ <span class="muted"
102
+ >${this.localize.term('uSync_diffPath', detail.path)}</span
103
+ >
104
+ <div class="path-line-actions">
105
+ ${when(classified.strategy === 'json', () => html `
106
+ <uui-button look="text" compact @click=${__classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_toggleRaw)}>
107
107
  ${this._showRaw
108
108
  ? this.localize.term('uSync_diffHideRaw')
109
- : this.localize.term('uSync_diffShowRaw')}
110
- </uui-button>
111
- `)}
112
- <uui-button
113
- look="text"
114
- compact
115
- label=${this.localize.term('uSync_diffCopyPath')}
116
- @click=${__classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_copyPath)}>
117
- <uui-icon name="icon-documents"></uui-icon>
118
- </uui-button>
119
- </div>
120
- </div>
121
- </div>
122
- `)}
123
- </div>
109
+ : this.localize.term('uSync_diffShowRaw')}
110
+ </uui-button>
111
+ `)}
112
+ <uui-button
113
+ look="text"
114
+ compact
115
+ label=${this.localize.term('uSync_diffCopyPath')}
116
+ @click=${__classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_copyPath)}>
117
+ <uui-icon name="icon-documents"></uui-icon>
118
+ </uui-button>
119
+ </div>
120
+ </div>
121
+ </div>
122
+ `)}
123
+ </div>
124
124
  `;
125
125
  }
126
126
  };
@@ -173,8 +173,8 @@ _uSyncChangeDetail_lineCounts = function _uSyncChangeDetail_lineCounts() {
173
173
  _uSyncChangeDetail_renderSummary = function _uSyncChangeDetail_renderSummary(c) {
174
174
  switch (c.strategy) {
175
175
  case 'scalar':
176
- return html `<span class="inline-change"
177
- ><del>${c.oldText}</del> → <ins>${c.newText}</ins></span
176
+ return html `<span class="inline-change"
177
+ ><del>${c.oldText}</del> → <ins>${c.newText}</ins></span
178
178
  >`;
179
179
  case 'json': {
180
180
  const diff = this._json;
@@ -232,50 +232,50 @@ _uSyncChangeDetail_renderJsonBody = function _uSyncChangeDetail_renderJsonBody(c
232
232
  const diff = this._json;
233
233
  if (!diff)
234
234
  return nothing;
235
- return html `
236
- <ul class="leaf-list">
237
- ${diff.changes.map((leaf, index) => __classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_renderLeaf).call(this, leaf, index))}
238
- </ul>
239
- ${when(diff.truncated, () => html `<p class="muted">
240
- ${this.localize.term(diff.stopped ? 'uSync_diffMoreChangesAtLeast' : 'uSync_diffMoreChanges', diff.totalCount - diff.changes.length)}
241
- </p>`)}
242
- ${when(diff.reordered.length > 0, () => html `<p class="muted">
243
- ${this.localize.term('uSync_diffReordered')}: ${diff.reordered.join(', ')}
244
- </p>`)}
245
- ${when(this._showRaw, () => html `
246
- <div class="raw-values">
247
- <div>
248
- <div class="muted">${this.localize.term('uSync_diffOldValue')}</div>
249
- <umb-code-block language="json" copy
250
- >${prettyJson(c.oldJson)}</umb-code-block
251
- >
252
- </div>
253
- <div>
254
- <div class="muted">${this.localize.term('uSync_diffNewValue')}</div>
255
- <umb-code-block language="json" copy
256
- >${prettyJson(c.newJson)}</umb-code-block
257
- >
258
- </div>
259
- </div>
260
- `)}
235
+ return html `
236
+ <ul class="leaf-list">
237
+ ${diff.changes.map((leaf, index) => __classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_renderLeaf).call(this, leaf, index))}
238
+ </ul>
239
+ ${when(diff.truncated, () => html `<p class="muted">
240
+ ${this.localize.term(diff.stopped ? 'uSync_diffMoreChangesAtLeast' : 'uSync_diffMoreChanges', diff.totalCount - diff.changes.length)}
241
+ </p>`)}
242
+ ${when(diff.reordered.length > 0, () => html `<p class="muted">
243
+ ${this.localize.term('uSync_diffReordered')}: ${diff.reordered.join(', ')}
244
+ </p>`)}
245
+ ${when(this._showRaw, () => html `
246
+ <div class="raw-values">
247
+ <div>
248
+ <div class="muted">${this.localize.term('uSync_diffOldValue')}</div>
249
+ <umb-code-block language="json" copy
250
+ >${prettyJson(c.oldJson)}</umb-code-block
251
+ >
252
+ </div>
253
+ <div>
254
+ <div class="muted">${this.localize.term('uSync_diffNewValue')}</div>
255
+ <umb-code-block language="json" copy
256
+ >${prettyJson(c.newJson)}</umb-code-block
257
+ >
258
+ </div>
259
+ </div>
260
+ `)}
261
261
  `;
262
262
  };
263
263
  _uSyncChangeDetail_renderLeaf = function _uSyncChangeDetail_renderLeaf(leaf, index) {
264
264
  const path = formatDiffPath(leaf.path);
265
265
  const symbol = leaf.kind === 'added' ? '+' : leaf.kind === 'removed' ? '−' : '~';
266
- return html `
267
- <li class=${classMap({ leaf: true, [leaf.kind]: true })}>
268
- <div class="leaf-path" title=${leaf.path}>
269
- <span class="symbol">${symbol}</span>${path}
270
- ${when(leaf.expanded, () => html `<uui-tag
271
- size="s"
272
- look="secondary"
273
- title=${this.localize.term('uSync_diffExpandedNote')}
274
- >»</uui-tag
275
- >`)}
276
- </div>
277
- <div class="leaf-value">${__classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_renderLeafValue).call(this, leaf, index)}</div>
278
- </li>
266
+ return html `
267
+ <li class=${classMap({ leaf: true, [leaf.kind]: true })}>
268
+ <div class="leaf-path" title=${leaf.path}>
269
+ <span class="symbol">${symbol}</span>${path}
270
+ ${when(leaf.expanded, () => html `<uui-tag
271
+ size="s"
272
+ look="secondary"
273
+ title=${this.localize.term('uSync_diffExpandedNote')}
274
+ >»</uui-tag
275
+ >`)}
276
+ </div>
277
+ <div class="leaf-value">${__classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_renderLeafValue).call(this, leaf, index)}</div>
278
+ </li>
279
279
  `;
280
280
  };
281
281
  _uSyncChangeDetail_renderLeafValue = function _uSyncChangeDetail_renderLeafValue(leaf, index) {
@@ -290,8 +290,8 @@ _uSyncChangeDetail_renderLeafValue = function _uSyncChangeDetail_renderLeafValue
290
290
  const bothSingleLine = !oldText.includes('\n') && !newText.includes('\n');
291
291
  const combinedLen = oldText.length + newText.length;
292
292
  if (bothSingleLine && combinedLen <= USYNC_DIFF_LIMITS.inlineScalarChars) {
293
- return html `<span class="inline-change"
294
- ><del>${oldText}</del> → <ins>${newText}</ins></span
293
+ return html `<span class="inline-change"
294
+ ><del>${oldText}</del> → <ins>${newText}</ins></span
295
295
  >`;
296
296
  }
297
297
  const bothStrings = typeof leaf.oldValue === 'string' && typeof leaf.newValue === 'string';
@@ -300,36 +300,36 @@ _uSyncChangeDetail_renderLeafValue = function _uSyncChangeDetail_renderLeafValue
300
300
  hasWhitespace &&
301
301
  combinedLen <= USYNC_DIFF_LIMITS.maxScalarWordDiffBytes) {
302
302
  const words = diffWords(oldText, newText);
303
- return html `<span class="word-diff"
303
+ return html `<span class="word-diff"
304
304
  >${words.map((word) => word.added
305
305
  ? html `<ins>${word.value}</ins>`
306
306
  : word.removed
307
307
  ? html `<del>${word.value}</del>`
308
- : html `<span>${word.value}</span>`)}</span
308
+ : html `<span>${word.value}</span>`)}</span
309
309
  >`;
310
310
  }
311
311
  const expanded = this._expandedLeaves.has(index);
312
- return html `
313
- <uui-button look="text" compact @click=${() => __classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_toggleLeaf).call(this, index)}>
312
+ return html `
313
+ <uui-button look="text" compact @click=${() => __classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_toggleLeaf).call(this, index)}>
314
314
  ${expanded
315
315
  ? this.localize.term('uSync_diffHideRaw')
316
- : this.localize.term('uSync_diffShowRaw')}
317
- </uui-button>
318
- ${when(expanded, () => html `
319
- <pre class="stacked"><del>- ${oldText}</del>
320
- <ins>+ ${newText}</ins></pre>
321
- `)}
316
+ : this.localize.term('uSync_diffShowRaw')}
317
+ </uui-button>
318
+ ${when(expanded, () => html `
319
+ <pre class="stacked"><del>- ${oldText}</del>
320
+ <ins>+ ${newText}</ins></pre>
321
+ `)}
322
322
  `;
323
323
  };
324
324
  _uSyncChangeDetail_renderLinesBody = function _uSyncChangeDetail_renderLinesBody() {
325
325
  const blocks = this._lines ?? [];
326
- return html `
327
- ${when(this._lineDegraded, () => html `<p class="muted">${this.localize.term('uSync_diffDegraded')}</p>`)}
328
- <uui-scroll-container class="line-diff">
326
+ return html `
327
+ ${when(this._lineDegraded, () => html `<p class="muted">${this.localize.term('uSync_diffDegraded')}</p>`)}
328
+ <uui-scroll-container class="line-diff">
329
329
  ${blocks.map((block, index) => block.type === 'row'
330
330
  ? __classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_renderLineRow).call(this, block.row)
331
- : __classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_renderCollapsed).call(this, block, index))}
332
- </uui-scroll-container>
331
+ : __classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_renderCollapsed).call(this, block, index))}
332
+ </uui-scroll-container>
333
333
  `;
334
334
  };
335
335
  _uSyncChangeDetail_renderLineRow = function _uSyncChangeDetail_renderLineRow(row) {
@@ -339,37 +339,37 @@ _uSyncChangeDetail_renderLineRow = function _uSyncChangeDetail_renderLineRow(row
339
339
  ? 'color-mix(in srgb, var(--uui-color-danger) 12%, transparent)'
340
340
  : undefined;
341
341
  const marker = row.type === 'add' ? '+' : row.type === 'remove' ? '-' : ' ';
342
- return html `
343
- <div
344
- class="line-row ${row.type}"
345
- style=${styleMap({ background: tint ?? 'transparent' })}>
346
- <span class="gutter">${row.oldLine ?? ''}</span>
347
- <span class="gutter">${row.newLine ?? ''}</span>
348
- <span class="marker">${marker}</span>
349
- <span class="text">${row.text}</span>
350
- </div>
342
+ return html `
343
+ <div
344
+ class="line-row ${row.type}"
345
+ style=${styleMap({ background: tint ?? 'transparent' })}>
346
+ <span class="gutter">${row.oldLine ?? ''}</span>
347
+ <span class="gutter">${row.newLine ?? ''}</span>
348
+ <span class="marker">${marker}</span>
349
+ <span class="text">${row.text}</span>
350
+ </div>
351
351
  `;
352
352
  };
353
353
  _uSyncChangeDetail_renderCollapsed = function _uSyncChangeDetail_renderCollapsed(block, index) {
354
354
  const expanded = this._expandedRuns.has(index);
355
- return html `
356
- <div class="collapsed-toggle" @click=${() => __classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_toggleRun).call(this, index)}>
357
- <uui-icon name="icon-navigation"></uui-icon>
355
+ return html `
356
+ <div class="collapsed-toggle" @click=${() => __classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_toggleRun).call(this, index)}>
357
+ <uui-icon name="icon-navigation"></uui-icon>
358
358
  ${expanded
359
359
  ? this.localize.term('uSync_diffHideUnchanged')
360
- : this.localize.term('uSync_diffShowUnchanged', block.count)}
361
- </div>
362
- ${when(expanded, () => html `${block.rows.map((row) => __classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_renderLineRow).call(this, row))}`)}
360
+ : this.localize.term('uSync_diffShowUnchanged', block.count)}
361
+ </div>
362
+ ${when(expanded, () => html `${block.rows.map((row) => __classPrivateFieldGet(this, _uSyncChangeDetail_instances, "m", _uSyncChangeDetail_renderLineRow).call(this, row))}`)}
363
363
  `;
364
364
  };
365
365
  _uSyncChangeDetail_renderWordsBody = function _uSyncChangeDetail_renderWordsBody(c) {
366
366
  const changes = diffWords(c.oldText, c.newText);
367
- return html `<pre class="word-diff">
367
+ return html `<pre class="word-diff">
368
368
  ${changes.map((word) => word.added
369
369
  ? html `<ins>${word.value}</ins>`
370
370
  : word.removed
371
371
  ? html `<del>${word.value}</del>`
372
- : html `<span>${word.value}</span>`)}</pre
372
+ : html `<span>${word.value}</span>`)}</pre
373
373
  >`;
374
374
  };
375
375
  _uSyncChangeDetail_renderSingleBody = function _uSyncChangeDetail_renderSingleBody(c) {
@@ -378,305 +378,305 @@ _uSyncChangeDetail_renderSingleBody = function _uSyncChangeDetail_renderSingleBo
378
378
  const tint = isAdded
379
379
  ? 'color-mix(in srgb, var(--uui-color-positive) 12%, transparent)'
380
380
  : 'color-mix(in srgb, var(--uui-color-danger) 12%, transparent)';
381
- return html `
382
- <div class="muted">
381
+ return html `
382
+ <div class="muted">
383
383
  ${isAdded
384
384
  ? this.localize.term('uSync_diffValueAdded')
385
- : this.localize.term('uSync_diffValueRemoved')}
386
- </div>
387
- <div class="tinted" style=${styleMap({ background: tint })}>
388
- <umb-code-block language=${c.language} copy>${value}</umb-code-block>
389
- </div>
385
+ : this.localize.term('uSync_diffValueRemoved')}
386
+ </div>
387
+ <div class="tinted" style=${styleMap({ background: tint })}>
388
+ <umb-code-block language=${c.language} copy>${value}</umb-code-block>
389
+ </div>
390
390
  `;
391
391
  };
392
392
  _uSyncChangeDetail_renderMaskedBody = function _uSyncChangeDetail_renderMaskedBody() {
393
393
  return html `<p class="muted">${this.localize.term('uSync_diffMasked')}</p>`;
394
394
  };
395
395
  _uSyncChangeDetail_renderOversizedBody = function _uSyncChangeDetail_renderOversizedBody(c) {
396
- return html `
397
- <p class="muted">${this.localize.term('uSync_diffTooLarge')}</p>
398
- <div class="raw-values">
399
- <div>
400
- <div class="muted">${this.localize.term('uSync_diffOldValue')}</div>
401
- <umb-code-block language=${c.language} copy>${c.oldText}</umb-code-block>
402
- </div>
403
- <div>
404
- <div class="muted">${this.localize.term('uSync_diffNewValue')}</div>
405
- <umb-code-block language=${c.language} copy>${c.newText}</umb-code-block>
406
- </div>
407
- </div>
396
+ return html `
397
+ <p class="muted">${this.localize.term('uSync_diffTooLarge')}</p>
398
+ <div class="raw-values">
399
+ <div>
400
+ <div class="muted">${this.localize.term('uSync_diffOldValue')}</div>
401
+ <umb-code-block language=${c.language} copy>${c.oldText}</umb-code-block>
402
+ </div>
403
+ <div>
404
+ <div class="muted">${this.localize.term('uSync_diffNewValue')}</div>
405
+ <umb-code-block language=${c.language} copy>${c.newText}</umb-code-block>
406
+ </div>
407
+ </div>
408
408
  `;
409
409
  };
410
410
  _uSyncChangeDetail_renderNoticeBody = function _uSyncChangeDetail_renderNoticeBody(c) {
411
411
  const label = this.detail?.change === ChangeDetailType.ERROR
412
412
  ? this.localize.term('uSync_changeError')
413
413
  : this.localize.term('uSync_changeWarning');
414
- return html `
415
- <div class="notice-callout danger">
416
- <strong>${label}</strong>
417
- <p>${c.oldText}</p>
418
- </div>
414
+ return html `
415
+ <div class="notice-callout danger">
416
+ <strong>${label}</strong>
417
+ <p>${c.oldText}</p>
418
+ </div>
419
419
  `;
420
420
  };
421
- uSyncChangeDetail.styles = css `
422
- :host {
423
- display: block;
424
- border-bottom: 1px solid var(--uui-color-border);
425
- }
426
-
427
- .change-row.danger {
428
- border-left: 3px solid var(--uui-color-danger);
429
- }
430
-
431
- .summary {
432
- display: flex;
433
- align-items: center;
434
- justify-content: space-between;
435
- gap: var(--uui-size-space-4);
436
- padding: var(--uui-size-space-3) var(--uui-size-space-5);
437
- cursor: pointer;
438
- }
439
-
440
- .summary.static {
441
- cursor: default;
442
- }
443
-
444
- .summary:hover:not(.static) {
445
- background-color: var(--uui-color-surface-alt);
446
- }
447
-
448
- .summary-left {
449
- display: flex;
450
- align-items: center;
451
- gap: var(--uui-size-space-3);
452
- min-width: 0;
453
- overflow: hidden;
454
- }
455
-
456
- .summary-left .label {
457
- font-weight: bold;
458
- overflow: hidden;
459
- text-overflow: ellipsis;
460
- white-space: nowrap;
461
- }
462
-
463
- .prefix {
464
- color: var(--uui-color-disabled-contrast);
465
- }
466
-
467
- .summary-right {
468
- display: flex;
469
- align-items: center;
470
- gap: var(--uui-size-space-4);
471
- flex-shrink: 0;
472
- }
473
-
474
- .summary-right uui-icon {
475
- transition: transform 90ms ease;
476
- }
477
-
478
- .summary-right uui-icon.expanded {
479
- transform: rotate(90deg);
480
- }
481
-
482
- .danger {
483
- color: var(--uui-color-danger);
484
- }
485
-
486
- .color-red {
487
- color: var(--uui-color-danger);
488
- }
489
-
490
- .muted {
491
- color: var(--uui-color-disabled-contrast);
492
- font-size: smaller;
493
- }
494
-
495
- .body {
496
- padding: 0 var(--uui-size-space-5) var(--uui-size-space-4);
497
- }
498
-
499
- .path-line {
500
- display: flex;
501
- align-items: center;
502
- justify-content: space-between;
503
- gap: var(--uui-size-space-3);
504
- margin-top: var(--uui-size-space-3);
505
- }
506
-
507
- .path-line > .muted {
508
- overflow: hidden;
509
- text-overflow: ellipsis;
510
- white-space: nowrap;
511
- }
512
-
513
- .path-line-actions {
514
- display: flex;
515
- align-items: center;
516
- gap: var(--uui-size-space-1, 3px);
517
- flex-shrink: 0;
518
- }
519
-
520
- .leaf-list {
521
- list-style: none;
522
- margin: 0;
523
- padding: 0;
524
- display: flex;
525
- flex-direction: column;
526
- gap: var(--uui-size-space-3);
527
- }
528
-
529
- .leaf {
530
- display: flex;
531
- flex-direction: column;
532
- gap: var(--uui-size-space-1, 3px);
533
- padding: var(--uui-size-space-2) var(--uui-size-space-3);
534
- border-radius: var(--uui-border-radius);
535
- border: 1px solid var(--uui-color-border);
536
- background: var(--uui-color-surface-alt);
537
- }
538
-
539
- .leaf.added {
540
- background: color-mix(in srgb, var(--uui-color-positive) 8%, transparent);
541
- border-color: color-mix(in srgb, var(--uui-color-positive) 30%, transparent);
542
- }
543
-
544
- .leaf.removed {
545
- background: color-mix(in srgb, var(--uui-color-danger) 8%, transparent);
546
- border-color: color-mix(in srgb, var(--uui-color-danger) 30%, transparent);
547
- }
548
-
549
- .leaf-path {
550
- font-family: monospace;
551
- font-size: smaller;
552
- font-weight: 600;
553
- color: var(--uui-color-text);
554
- overflow: hidden;
555
- text-overflow: ellipsis;
556
- white-space: nowrap;
557
- }
558
-
559
- .symbol {
560
- display: inline-block;
561
- width: 1em;
562
- font-weight: bold;
563
- }
564
-
565
- .added-value {
566
- color: var(--uui-color-positive);
567
- }
568
-
569
- .removed-value {
570
- color: var(--uui-color-danger);
571
- }
572
-
573
- .inline-change del {
574
- color: var(--uui-color-danger);
575
- text-decoration: line-through;
576
- }
577
-
578
- .inline-change ins {
579
- color: var(--uui-color-positive);
580
- text-decoration: none;
581
- }
582
-
583
- .word-diff {
584
- white-space: pre-wrap;
585
- }
586
-
587
- .word-diff ins {
588
- color: var(--uui-color-positive);
589
- text-decoration: none;
590
- }
591
-
592
- .word-diff del {
593
- color: var(--uui-color-danger);
594
- text-decoration: line-through;
595
- }
596
-
597
- .stacked {
598
- margin: 0;
599
- white-space: pre;
600
- }
601
-
602
- .stacked del {
603
- display: block;
604
- color: var(--uui-color-danger);
605
- text-decoration: none;
606
- }
607
-
608
- .stacked ins {
609
- display: block;
610
- color: var(--uui-color-positive);
611
- text-decoration: none;
612
- }
613
-
614
- .raw-values {
615
- display: flex;
616
- flex-direction: column;
617
- gap: var(--uui-size-space-4);
618
- margin-top: var(--uui-size-space-3);
619
- }
620
-
621
- .tinted {
622
- border-radius: var(--uui-border-radius);
623
- }
624
-
625
- uui-scroll-container.line-diff {
626
- max-height: 400px;
627
- display: block;
628
- border: 1px solid var(--uui-color-border);
629
- border-radius: var(--uui-border-radius);
630
- }
631
-
632
- .line-row {
633
- display: flex;
634
- gap: var(--uui-size-space-2);
635
- font-family: monospace;
636
- white-space: pre;
637
- padding: 0 var(--uui-size-space-2);
638
- }
639
-
640
- .line-row .gutter {
641
- display: inline-block;
642
- width: 3em;
643
- text-align: right;
644
- color: var(--uui-color-disabled-contrast);
645
- flex-shrink: 0;
646
- }
647
-
648
- .line-row .marker {
649
- flex-shrink: 0;
650
- width: 1em;
651
- }
652
-
653
- .line-row .text {
654
- white-space: pre;
655
- }
656
-
657
- .collapsed-toggle {
658
- display: flex;
659
- align-items: center;
660
- gap: var(--uui-size-space-2);
661
- padding: var(--uui-size-space-2);
662
- color: var(--uui-color-disabled-contrast);
663
- cursor: pointer;
664
- font-size: smaller;
665
- }
666
-
667
- .collapsed-toggle:hover {
668
- background-color: var(--uui-color-surface-alt);
669
- }
670
-
671
- .notice-callout {
672
- padding: var(--uui-size-space-4);
673
- border-radius: var(--uui-border-radius);
674
- background: color-mix(in srgb, var(--uui-color-danger) 10%, transparent);
675
- }
676
-
677
- .notice-callout p {
678
- margin: var(--uui-size-space-2) 0 0;
679
- }
421
+ uSyncChangeDetail.styles = css `
422
+ :host {
423
+ display: block;
424
+ border-bottom: 1px solid var(--uui-color-border);
425
+ }
426
+
427
+ .change-row.danger {
428
+ border-left: 3px solid var(--uui-color-danger);
429
+ }
430
+
431
+ .summary {
432
+ display: flex;
433
+ align-items: center;
434
+ justify-content: space-between;
435
+ gap: var(--uui-size-space-4);
436
+ padding: var(--uui-size-space-3) var(--uui-size-space-5);
437
+ cursor: pointer;
438
+ }
439
+
440
+ .summary.static {
441
+ cursor: default;
442
+ }
443
+
444
+ .summary:hover:not(.static) {
445
+ background-color: var(--uui-color-surface-alt);
446
+ }
447
+
448
+ .summary-left {
449
+ display: flex;
450
+ align-items: center;
451
+ gap: var(--uui-size-space-3);
452
+ min-width: 0;
453
+ overflow: hidden;
454
+ }
455
+
456
+ .summary-left .label {
457
+ font-weight: bold;
458
+ overflow: hidden;
459
+ text-overflow: ellipsis;
460
+ white-space: nowrap;
461
+ }
462
+
463
+ .prefix {
464
+ color: var(--uui-color-disabled-contrast);
465
+ }
466
+
467
+ .summary-right {
468
+ display: flex;
469
+ align-items: center;
470
+ gap: var(--uui-size-space-4);
471
+ flex-shrink: 0;
472
+ }
473
+
474
+ .summary-right uui-icon {
475
+ transition: transform 90ms ease;
476
+ }
477
+
478
+ .summary-right uui-icon.expanded {
479
+ transform: rotate(90deg);
480
+ }
481
+
482
+ .danger {
483
+ color: var(--uui-color-danger);
484
+ }
485
+
486
+ .color-red {
487
+ color: var(--uui-color-danger);
488
+ }
489
+
490
+ .muted {
491
+ color: var(--uui-color-disabled-contrast);
492
+ font-size: smaller;
493
+ }
494
+
495
+ .body {
496
+ padding: 0 var(--uui-size-space-5) var(--uui-size-space-4);
497
+ }
498
+
499
+ .path-line {
500
+ display: flex;
501
+ align-items: center;
502
+ justify-content: space-between;
503
+ gap: var(--uui-size-space-3);
504
+ margin-top: var(--uui-size-space-3);
505
+ }
506
+
507
+ .path-line > .muted {
508
+ overflow: hidden;
509
+ text-overflow: ellipsis;
510
+ white-space: nowrap;
511
+ }
512
+
513
+ .path-line-actions {
514
+ display: flex;
515
+ align-items: center;
516
+ gap: var(--uui-size-space-1, 3px);
517
+ flex-shrink: 0;
518
+ }
519
+
520
+ .leaf-list {
521
+ list-style: none;
522
+ margin: 0;
523
+ padding: 0;
524
+ display: flex;
525
+ flex-direction: column;
526
+ gap: var(--uui-size-space-3);
527
+ }
528
+
529
+ .leaf {
530
+ display: flex;
531
+ flex-direction: column;
532
+ gap: var(--uui-size-space-1, 3px);
533
+ padding: var(--uui-size-space-2) var(--uui-size-space-3);
534
+ border-radius: var(--uui-border-radius);
535
+ border: 1px solid var(--uui-color-border);
536
+ background: var(--uui-color-surface-alt);
537
+ }
538
+
539
+ .leaf.added {
540
+ background: color-mix(in srgb, var(--uui-color-positive) 8%, transparent);
541
+ border-color: color-mix(in srgb, var(--uui-color-positive) 30%, transparent);
542
+ }
543
+
544
+ .leaf.removed {
545
+ background: color-mix(in srgb, var(--uui-color-danger) 8%, transparent);
546
+ border-color: color-mix(in srgb, var(--uui-color-danger) 30%, transparent);
547
+ }
548
+
549
+ .leaf-path {
550
+ font-family: monospace;
551
+ font-size: smaller;
552
+ font-weight: 600;
553
+ color: var(--uui-color-text);
554
+ overflow: hidden;
555
+ text-overflow: ellipsis;
556
+ white-space: nowrap;
557
+ }
558
+
559
+ .symbol {
560
+ display: inline-block;
561
+ width: 1em;
562
+ font-weight: bold;
563
+ }
564
+
565
+ .added-value {
566
+ color: var(--uui-color-positive);
567
+ }
568
+
569
+ .removed-value {
570
+ color: var(--uui-color-danger);
571
+ }
572
+
573
+ .inline-change del {
574
+ color: var(--uui-color-danger);
575
+ text-decoration: line-through;
576
+ }
577
+
578
+ .inline-change ins {
579
+ color: var(--uui-color-positive);
580
+ text-decoration: none;
581
+ }
582
+
583
+ .word-diff {
584
+ white-space: pre-wrap;
585
+ }
586
+
587
+ .word-diff ins {
588
+ color: var(--uui-color-positive);
589
+ text-decoration: none;
590
+ }
591
+
592
+ .word-diff del {
593
+ color: var(--uui-color-danger);
594
+ text-decoration: line-through;
595
+ }
596
+
597
+ .stacked {
598
+ margin: 0;
599
+ white-space: pre;
600
+ }
601
+
602
+ .stacked del {
603
+ display: block;
604
+ color: var(--uui-color-danger);
605
+ text-decoration: none;
606
+ }
607
+
608
+ .stacked ins {
609
+ display: block;
610
+ color: var(--uui-color-positive);
611
+ text-decoration: none;
612
+ }
613
+
614
+ .raw-values {
615
+ display: flex;
616
+ flex-direction: column;
617
+ gap: var(--uui-size-space-4);
618
+ margin-top: var(--uui-size-space-3);
619
+ }
620
+
621
+ .tinted {
622
+ border-radius: var(--uui-border-radius);
623
+ }
624
+
625
+ uui-scroll-container.line-diff {
626
+ max-height: 400px;
627
+ display: block;
628
+ border: 1px solid var(--uui-color-border);
629
+ border-radius: var(--uui-border-radius);
630
+ }
631
+
632
+ .line-row {
633
+ display: flex;
634
+ gap: var(--uui-size-space-2);
635
+ font-family: monospace;
636
+ white-space: pre;
637
+ padding: 0 var(--uui-size-space-2);
638
+ }
639
+
640
+ .line-row .gutter {
641
+ display: inline-block;
642
+ width: 3em;
643
+ text-align: right;
644
+ color: var(--uui-color-disabled-contrast);
645
+ flex-shrink: 0;
646
+ }
647
+
648
+ .line-row .marker {
649
+ flex-shrink: 0;
650
+ width: 1em;
651
+ }
652
+
653
+ .line-row .text {
654
+ white-space: pre;
655
+ }
656
+
657
+ .collapsed-toggle {
658
+ display: flex;
659
+ align-items: center;
660
+ gap: var(--uui-size-space-2);
661
+ padding: var(--uui-size-space-2);
662
+ color: var(--uui-color-disabled-contrast);
663
+ cursor: pointer;
664
+ font-size: smaller;
665
+ }
666
+
667
+ .collapsed-toggle:hover {
668
+ background-color: var(--uui-color-surface-alt);
669
+ }
670
+
671
+ .notice-callout {
672
+ padding: var(--uui-size-space-4);
673
+ border-radius: var(--uui-border-radius);
674
+ background: color-mix(in srgb, var(--uui-color-danger) 10%, transparent);
675
+ }
676
+
677
+ .notice-callout p {
678
+ margin: var(--uui-size-space-2) 0 0;
679
+ }
680
680
  `;
681
681
  __decorate([
682
682
  property({ type: Object })