@jumoo/usync 18.2.0 → 18.3.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.
Files changed (71) hide show
  1. package/LICENCE +372 -372
  2. package/README.md +16 -10
  3. package/dist/api/index.d.ts +2 -2
  4. package/dist/api/index.js +1 -1
  5. package/dist/api/sdk.gen.d.ts +2 -1
  6. package/dist/api/sdk.gen.js +5 -0
  7. package/dist/api/types.gen.d.ts +37 -0
  8. package/dist/components/usync-action-box.js +71 -71
  9. package/dist/components/usync-change-detail.js +409 -409
  10. package/dist/components/usync-change-view.js +49 -49
  11. package/dist/components/usync-content-preview.d.ts +27 -0
  12. package/dist/components/usync-content-preview.js +532 -0
  13. package/dist/components/usync-content-type-preview.d.ts +25 -0
  14. package/dist/components/usync-content-type-preview.js +530 -0
  15. package/dist/components/usync-data-type-preview.d.ts +21 -0
  16. package/dist/components/usync-data-type-preview.js +295 -0
  17. package/dist/components/usync-progress-box.js +113 -113
  18. package/dist/components/usync-result-row.js +65 -65
  19. package/dist/components/usync-results-group-view.js +63 -63
  20. package/dist/components/usync-results-view.js +77 -69
  21. package/dist/components/usync-sync-file-info-view.js +10 -10
  22. package/dist/constants.js +1 -1
  23. package/dist/dialogs/details-modal-element.d.ts +15 -0
  24. package/dist/dialogs/details-modal-element.js +260 -50
  25. package/dist/dialogs/details-modal-token.d.ts +10 -1
  26. package/dist/dialogs/error-modal-element.js +22 -22
  27. package/dist/dialogs/legacy-modal-element.js +22 -22
  28. package/dist/dialogs/single-import-modal.element.js +31 -31
  29. package/dist/exports.d.ts +1 -0
  30. package/dist/exports.js +1 -0
  31. package/dist/icons/svg/logo.js +20 -20
  32. package/dist/lang/files/da-dk.d.ts +37 -0
  33. package/dist/lang/files/da-dk.js +49 -12
  34. package/dist/lang/files/de-de.d.ts +37 -0
  35. package/dist/lang/files/de-de.js +49 -12
  36. package/dist/lang/files/en-us.d.ts +50 -0
  37. package/dist/lang/files/en-us.js +62 -12
  38. package/dist/lang/files/es-es.d.ts +37 -0
  39. package/dist/lang/files/es-es.js +49 -12
  40. package/dist/lang/files/fr-fr.d.ts +37 -0
  41. package/dist/lang/files/fr-fr.js +49 -12
  42. package/dist/lang/files/nl-nl.d.ts +37 -0
  43. package/dist/lang/files/nl-nl.js +49 -12
  44. package/dist/manifests.js +2 -0
  45. package/dist/preview/index.d.ts +1 -0
  46. package/dist/preview/index.js +1 -0
  47. package/dist/preview/manifest.d.ts +2 -0
  48. package/dist/preview/manifest.js +22 -0
  49. package/dist/preview/types.d.ts +72 -0
  50. package/dist/preview/types.js +2 -0
  51. package/dist/repository/SyncAction.respositoy.d.ts +13 -0
  52. package/dist/repository/SyncAction.respositoy.js +6 -0
  53. package/dist/repository/sources/SyncAction.source.d.ts +10 -0
  54. package/dist/repository/sources/SyncAction.source.js +6 -1
  55. package/dist/signalr/signalr.context.js +73 -26
  56. package/dist/tree/usync.menu-element.js +8 -8
  57. package/dist/utils/preview/content-type-diff.d.ts +18 -0
  58. package/dist/utils/preview/content-type-diff.js +72 -0
  59. package/dist/utils/preview/content-type-layout.d.ts +39 -0
  60. package/dist/utils/preview/content-type-layout.js +100 -0
  61. package/dist/workspace/components/usync-action-button.js +53 -53
  62. package/dist/workspace/components/usync-file-picker.element.js +33 -33
  63. package/dist/workspace/components/usync-file-upload.element.js +25 -25
  64. package/dist/workspace/dialogs/import-modal.element.js +22 -22
  65. package/dist/workspace/views/addons/addons.element.js +97 -97
  66. package/dist/workspace/views/default/default.element.js +186 -186
  67. package/dist/workspace/views/legacy/legacy.element.js +81 -81
  68. package/dist/workspace/views/settings/components/usyncSettingItem.element.js +38 -38
  69. package/dist/workspace/views/settings/settings.element.js +124 -124
  70. package/dist/workspace/workspace.element.js +16 -16
  71. package/package.json +77 -77
@@ -32,21 +32,21 @@ let uSyncResultRow = class uSyncResultRow extends UmbLitElement {
32
32
  ? 'icon-check color-green'
33
33
  : 'icon-wrong color-red';
34
34
  const noChange = result.change == ChangeType.NO_CHANGE || result.change == ChangeType.EXPORT;
35
- return html `<div
36
- class="${classMap({ no_change: noChange })} row"
37
- @click=${() => __classPrivateFieldGet(this, _uSyncResultRow_instances, "m", _uSyncResultRow_showDetail).call(this, result)}>
38
- <div class="icon-cell" .noPadding=${true}>
39
- <umb-icon .name=${icon}></umb-icon>
40
- </div>
41
- <div class="row-content" .clipText=${true}>
42
- <div class="item-detail">
43
- <div class="item-change">${result.change}</div>
44
- </div>
45
- <div class="item-name">
46
- <div>${result.name}</div>
47
- <div>${this.renderMessage(result)}</div>
48
- </div>
49
- </div>
35
+ return html `<div
36
+ class="${classMap({ no_change: noChange })} row"
37
+ @click=${() => __classPrivateFieldGet(this, _uSyncResultRow_instances, "m", _uSyncResultRow_showDetail).call(this, result)}>
38
+ <div class="icon-cell" .noPadding=${true}>
39
+ <umb-icon .name=${icon}></umb-icon>
40
+ </div>
41
+ <div class="row-content" .clipText=${true}>
42
+ <div class="item-detail">
43
+ <div class="item-change">${result.change}</div>
44
+ </div>
45
+ <div class="item-name">
46
+ <div>${result.name}</div>
47
+ <div>${this.renderMessage(result)}</div>
48
+ </div>
49
+ </div>
50
50
  </div>`;
51
51
  }
52
52
  renderMessage(result) {
@@ -54,11 +54,11 @@ let uSyncResultRow = class uSyncResultRow extends UmbLitElement {
54
54
  result.change != ChangeType.IMPORT_FAIL) ||
55
55
  !result.message
56
56
  ? html `<em>${result.message}</em>`
57
- : html ` <uui-button
58
- look="outline"
59
- color="danger"
60
- label="View error"
61
- compact
57
+ : html ` <uui-button
58
+ look="outline"
59
+ color="danger"
60
+ label="View error"
61
+ compact
62
62
  @click=${(e) => __classPrivateFieldGet(this, _uSyncResultRow_instances, "m", _uSyncResultRow_viewError).call(this, e, result)}></uui-button>`;
63
63
  }
64
64
  };
@@ -81,51 +81,51 @@ _uSyncResultRow_viewError = async function _uSyncResultRow_viewError(e, result)
81
81
  });
82
82
  return data;
83
83
  };
84
- uSyncResultRow.styles = css `
85
- .row {
86
- display: flex;
87
- align-items: center;
88
- gap: var(--uui-size-space-5);
89
- padding: var(--uui-size-space-5);
90
- border-bottom: 1px solid var(--uui-color-border);
91
- cursor: pointer;
92
- }
93
-
94
- :host:last-child {
95
- background-color: blue;
96
- }
97
-
98
- .row:hover {
99
- background-color: var(--uui-color-surface-alt);
100
- }
101
-
102
- .no_change {
103
- color: var(--uui-color-disabled-contrast);
104
- cursor: default;
105
- }
106
-
107
- .row-content {
108
- gap: 10px;
109
- flex-grow: 1;
110
- display: flex;
111
- align-items: center;
112
- justify-content: space-between;
113
- }
114
-
115
- .item-name {
116
- display: flex;
117
- font-weight: bold;
118
- align-items: center;
119
- flex-grow: 2;
120
- justify-content: space-between;
121
- }
122
-
123
- .item-detail {
124
- display: flex;
125
- flex-direction: column;
126
- font-size: smaller;
127
- min-width: 60px;
128
- }
84
+ uSyncResultRow.styles = css `
85
+ .row {
86
+ display: flex;
87
+ align-items: center;
88
+ gap: var(--uui-size-space-5);
89
+ padding: var(--uui-size-space-5);
90
+ border-bottom: 1px solid var(--uui-color-border);
91
+ cursor: pointer;
92
+ }
93
+
94
+ :host:last-child {
95
+ background-color: blue;
96
+ }
97
+
98
+ .row:hover {
99
+ background-color: var(--uui-color-surface-alt);
100
+ }
101
+
102
+ .no_change {
103
+ color: var(--uui-color-disabled-contrast);
104
+ cursor: default;
105
+ }
106
+
107
+ .row-content {
108
+ gap: 10px;
109
+ flex-grow: 1;
110
+ display: flex;
111
+ align-items: center;
112
+ justify-content: space-between;
113
+ }
114
+
115
+ .item-name {
116
+ display: flex;
117
+ font-weight: bold;
118
+ align-items: center;
119
+ flex-grow: 2;
120
+ justify-content: space-between;
121
+ }
122
+
123
+ .item-detail {
124
+ display: flex;
125
+ flex-direction: column;
126
+ font-size: smaller;
127
+ min-width: 60px;
128
+ }
129
129
  `;
130
130
  __decorate([
131
131
  property({ type: Object })
@@ -22,25 +22,25 @@ let uSyncResultGroupView = class uSyncResultGroupView extends UmbLitElement {
22
22
  const changeCount = this.getChangeCount() ?? 0;
23
23
  if (changeCount === 0 && !this.showAll)
24
24
  return nothing;
25
- return html `
26
- <uui-box
25
+ return html `
26
+ <uui-box
27
27
  class=${classMap({
28
28
  has_changes: changeCount > 0,
29
- })}>
30
- <div
31
- class="summary ${when(this.expanded, () => 'expanded')}"
32
- @click=${() => (this.expanded = !this.expanded)}>
33
- <h4>${this.localize.termOrDefault('uSync_' + this.groupName, this.groupName)}</h4>
34
- <div class="summary-right">
35
- <h4 class="count">${changeCount}/${this.results?.length}</h4>
36
- <uui-icon
37
- name="icon-play"
38
- class=${classMap({ expanded: this.expanded })}></uui-icon>
39
- </div>
40
- </div>
41
-
42
- ${when(this.expanded == true, () => html `<uui-table>${this.renderGroupedRows(this.results)}</uui-table>`)}
43
- </uui-box>
29
+ })}>
30
+ <div
31
+ class="summary ${when(this.expanded, () => 'expanded')}"
32
+ @click=${() => (this.expanded = !this.expanded)}>
33
+ <h4>${this.localize.termOrDefault('uSync_' + this.groupName, this.groupName)}</h4>
34
+ <div class="summary-right">
35
+ <h4 class="count">${changeCount}/${this.results?.length}</h4>
36
+ <uui-icon
37
+ name="icon-play"
38
+ class=${classMap({ expanded: this.expanded })}></uui-icon>
39
+ </div>
40
+ </div>
41
+
42
+ ${when(this.expanded == true, () => html `<uui-table>${this.renderGroupedRows(this.results)}</uui-table>`)}
43
+ </uui-box>
44
44
  `;
45
45
  }
46
46
  renderGroupedRows(results) {
@@ -52,52 +52,52 @@ let uSyncResultGroupView = class uSyncResultGroupView extends UmbLitElement {
52
52
  return rowsHtml;
53
53
  }
54
54
  };
55
- uSyncResultGroupView.styles = css `
56
- uui-box {
57
- cursor: pointer;
58
- --uui-box-default-padding: 0;
59
- }
60
-
61
- uui-table {
62
- border-top-left-radius: 0;
63
- border-top-right-radius: 0;
64
- }
65
-
66
- usync-result-row:last-child row {
67
- border-bottom: none;
68
- }
69
-
70
- .expanded {
71
- border-bottom: 1px solid var(--uui-color-border);
72
- }
73
-
74
- .summary {
75
- display: flex;
76
- margin: 0;
77
- padding: 0 20px;
78
- justify-content: space-between;
79
- }
80
-
81
- .summary-right {
82
- display: flex;
83
- align-items: center;
84
- gap: var(--uui-size-space-2);
85
- color: var(--uui-color-border-emphasis);
86
- }
87
-
88
- .summary-right uui-icon {
89
- transform: rotate(90deg);
90
- transition: transform 0.5s cubic-bezier(0.42, 0, 0.37, 1.62);
91
- }
92
-
93
- .summary-right uui-icon.expanded {
94
- transform: rotate(-90deg);
95
- border-bottom: none;
96
- }
97
-
98
- .count {
99
- color: var(--uui-text);
100
- }
55
+ uSyncResultGroupView.styles = css `
56
+ uui-box {
57
+ cursor: pointer;
58
+ --uui-box-default-padding: 0;
59
+ }
60
+
61
+ uui-table {
62
+ border-top-left-radius: 0;
63
+ border-top-right-radius: 0;
64
+ }
65
+
66
+ usync-result-row:last-child row {
67
+ border-bottom: none;
68
+ }
69
+
70
+ .expanded {
71
+ border-bottom: 1px solid var(--uui-color-border);
72
+ }
73
+
74
+ .summary {
75
+ display: flex;
76
+ margin: 0;
77
+ padding: 0 20px;
78
+ justify-content: space-between;
79
+ }
80
+
81
+ .summary-right {
82
+ display: flex;
83
+ align-items: center;
84
+ gap: var(--uui-size-space-2);
85
+ color: var(--uui-color-border-emphasis);
86
+ }
87
+
88
+ .summary-right uui-icon {
89
+ transform: rotate(90deg);
90
+ transition: transform 0.5s cubic-bezier(0.42, 0, 0.37, 1.62);
91
+ }
92
+
93
+ .summary-right uui-icon.expanded {
94
+ transform: rotate(-90deg);
95
+ border-bottom: none;
96
+ }
97
+
98
+ .count {
99
+ color: var(--uui-text);
100
+ }
101
101
  `;
102
102
  __decorate([
103
103
  state()
@@ -15,7 +15,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
15
15
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
16
16
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
17
17
  };
18
- var _uSyncResultsView_instances, _uSyncResultsView_modalContext, _uSyncResultsView_toggleShowAll, _uSyncResultsView_showDetail;
18
+ var _uSyncResultsView_instances, _uSyncResultsView_modalContext, _uSyncResultsView_toggleShowAll, _uSyncResultsView_showDetail, _uSyncResultsView_visibleItems;
19
19
  import { LitElement, html, customElement, property, css, state, nothing, } from '@umbraco-cms/backoffice/external/lit';
20
20
  import { ChangeType } from '@jumoo/uSync';
21
21
  import { UmbElementMixin } from '@umbraco-cms/backoffice/element-api';
@@ -52,37 +52,37 @@ let uSyncResultsView = class uSyncResultsView extends UmbElementMixin(LitElement
52
52
  const groupChanges = groups[key].filter((r) => r.change !== ChangeType.NO_CHANGE).length ?? 0;
53
53
  if (groupChanges === 0 && !this.showAll)
54
54
  continue;
55
- const groupHtml = html `<usync-result-group
56
- .groupName=${key}
57
- .results=${groups[key]}
58
- .showAll=${this.showAll}
55
+ const groupHtml = html `<usync-result-group
56
+ .groupName=${key}
57
+ .results=${groups[key]}
58
+ .showAll=${this.showAll}
59
59
  @show-detail=${__classPrivateFieldGet(this, _uSyncResultsView_instances, "m", _uSyncResultsView_showDetail)}></usync-result-group> `;
60
60
  groupsHtml.push(groupHtml);
61
61
  }
62
62
  return this.changeCount == 0 && !this.showAll
63
- ? html `
64
- ${this.renderResultBar(this.results?.length || 0, this.changeCount)}
65
- <div class="empty">
66
- <umb-localize key="uSync_noChange"></umb-localize>
67
- </div>
63
+ ? html `
64
+ ${this.renderResultBar(this.results?.length || 0, this.changeCount)}
65
+ <div class="empty">
66
+ <umb-localize key="uSync_noChange"></umb-localize>
67
+ </div>
68
68
  `
69
- : html `<div id="result-box">
70
- ${this.renderResultBar(this.results?.length || 0, this.changeCount)}
71
- ${groupsHtml}
69
+ : html `<div id="result-box">
70
+ ${this.renderResultBar(this.results?.length || 0, this.changeCount)}
71
+ ${groupsHtml}
72
72
  </div>`;
73
73
  }
74
74
  renderResultBar(count, changes) {
75
75
  if (this.hideResultBar)
76
76
  return nothing;
77
77
  const localKey = changes === 0 ? 'uSync_noChangeCount' : 'uSync_changeCount';
78
- return html `<div class="result-header">
79
- <uui-toggle
80
- .label=${this.localize.termOrDefault('uSync_showAll', 'Show all items')}
81
- ?checked=${this.showAll}
82
- @change=${__classPrivateFieldGet(this, _uSyncResultsView_instances, "m", _uSyncResultsView_toggleShowAll)}></uui-toggle>
83
- <umb-localize .key=${localKey} .args=${[count, changes]}
84
- >${changes}/${count} items</umb-localize
85
- >
78
+ return html `<div class="result-header">
79
+ <uui-toggle
80
+ .label=${this.localize.termOrDefault('uSync_showAll', 'Show all items')}
81
+ ?checked=${this.showAll}
82
+ @change=${__classPrivateFieldGet(this, _uSyncResultsView_instances, "m", _uSyncResultsView_toggleShowAll)}></uui-toggle>
83
+ <umb-localize .key=${localKey} .args=${[count, changes]}
84
+ >${changes}/${count} items</umb-localize
85
+ >
86
86
  </div>`;
87
87
  }
88
88
  };
@@ -98,10 +98,11 @@ _uSyncResultsView_showDetail = async function _uSyncResultsView_showDetail(e) {
98
98
  const detailsModal = __classPrivateFieldGet(this, _uSyncResultsView_modalContext, "f")?.open(this, USYNC_DETAILS_MODAL, {
99
99
  data: {
100
100
  item: e.action,
101
- showActions: !this.hideActions &&
102
- (e.action.change == ChangeType.CREATE ||
103
- e.action.change == ChangeType.UPDATE ||
104
- e.action.change == ChangeType.IMPORT),
101
+ items: __classPrivateFieldGet(this, _uSyncResultsView_instances, "m", _uSyncResultsView_visibleItems).call(this),
102
+ showActions: (item) => !this.hideActions &&
103
+ (item.change == ChangeType.CREATE ||
104
+ item.change == ChangeType.UPDATE ||
105
+ item.change == ChangeType.IMPORT),
105
106
  },
106
107
  });
107
108
  const data = await detailsModal?.onSubmit().catch(() => {
@@ -110,50 +111,57 @@ _uSyncResultsView_showDetail = async function _uSyncResultsView_showDetail(e) {
110
111
  if (!data)
111
112
  return;
112
113
  };
113
- uSyncResultsView.styles = css `
114
- :host {
115
- display: block;
116
- margin: var(--uui-size-space-4) 0;
117
- display: flex;
118
- flex-direction: column;
119
- gap: var(--uui-size-space-4);
120
- }
121
-
122
- #result-box {
123
- display: flex;
124
- flex-direction: column;
125
- gap: var(--uui-size-space-4);
126
- }
127
-
128
- uui-table {
129
- position: relative;
130
- z-index: 100;
131
- }
132
-
133
- .result-header {
134
- display: flex;
135
- justify-content: space-between;
136
- padding: var(--uui-size-space-4);
137
- border: 1px solid var(--uui-color-border);
138
- border-radius: var(--uui-border-radius);
139
- padding: var(--uui-size-space-4);
140
- }
141
-
142
- .result-header h3 {
143
- margin: 0;
144
- padding: 0;
145
- }
146
-
147
- .empty {
148
- padding: var(--uui-size-20);
149
- font-size: var(--uui-type-h5-size);
150
- text-align: center;
151
- font-weight: 900;
152
- }
153
-
154
- .error {
155
- background-color: #fce4ec;
156
- }
114
+ _uSyncResultsView_visibleItems = function _uSyncResultsView_visibleItems() {
115
+ const groups = this.groupBy(this.results || [], (result) => result.itemType);
116
+ return Object.values(groups)
117
+ .flat()
118
+ .filter((r) => r.change !== ChangeType.EXPORT &&
119
+ (this.showAll || r.change !== ChangeType.NO_CHANGE));
120
+ };
121
+ uSyncResultsView.styles = css `
122
+ :host {
123
+ display: block;
124
+ margin: var(--uui-size-space-4) 0;
125
+ display: flex;
126
+ flex-direction: column;
127
+ gap: var(--uui-size-space-4);
128
+ }
129
+
130
+ #result-box {
131
+ display: flex;
132
+ flex-direction: column;
133
+ gap: var(--uui-size-space-4);
134
+ }
135
+
136
+ uui-table {
137
+ position: relative;
138
+ z-index: 100;
139
+ }
140
+
141
+ .result-header {
142
+ display: flex;
143
+ justify-content: space-between;
144
+ padding: var(--uui-size-space-4);
145
+ border: 1px solid var(--uui-color-border);
146
+ border-radius: var(--uui-border-radius);
147
+ padding: var(--uui-size-space-4);
148
+ }
149
+
150
+ .result-header h3 {
151
+ margin: 0;
152
+ padding: 0;
153
+ }
154
+
155
+ .empty {
156
+ padding: var(--uui-size-20);
157
+ font-size: var(--uui-type-h5-size);
158
+ text-align: center;
159
+ font-weight: 900;
160
+ }
161
+
162
+ .error {
163
+ background-color: #fce4ec;
164
+ }
157
165
  `;
158
166
  __decorate([
159
167
  property({ type: Array })
@@ -30,8 +30,8 @@ _uSyncSyncFileInfoView_renderHmacMismatch = function _uSyncSyncFileInfoView_rend
30
30
  return nothing;
31
31
  if (this._syncFileInfo.hmacMatch)
32
32
  return nothing;
33
- return html `<div class="banner">
34
- <umb-localize key="uSync_hmacMismatch"></umb-localize>
33
+ return html `<div class="banner">
34
+ <umb-localize key="uSync_hmacMismatch"></umb-localize>
35
35
  </div>`;
36
36
  };
37
37
  _uSyncSyncFileInfoView_renderFormatMismatch = function _uSyncSyncFileInfoView_renderFormatMismatch() {
@@ -39,17 +39,17 @@ _uSyncSyncFileInfoView_renderFormatMismatch = function _uSyncSyncFileInfoView_re
39
39
  return nothing;
40
40
  if (this._syncFileInfo.isCurrent)
41
41
  return nothing;
42
- return html `<div class="banner">
43
- <umb-localize key="uSync_formatMismatch"></umb-localize>
42
+ return html `<div class="banner">
43
+ <umb-localize key="uSync_formatMismatch"></umb-localize>
44
44
  </div>`;
45
45
  };
46
46
  uSyncSyncFileInfoView.styles = [
47
- css `
48
- .banner {
49
- padding: var(--uui-size-space-2) var(--uui-size-space-4);
50
- margin: 0 0 var(--uui-size-space-4);
51
- background-color: var(--uui-color-surface);
52
- }
47
+ css `
48
+ .banner {
49
+ padding: var(--uui-size-space-2) var(--uui-size-space-4);
50
+ margin: 0 0 var(--uui-size-space-4);
51
+ background-color: var(--uui-color-surface);
52
+ }
53
53
  `,
54
54
  ];
55
55
  __decorate([
package/dist/constants.js CHANGED
@@ -4,7 +4,7 @@ const _constants = {
4
4
  icon: 'icon-infinity',
5
5
  menuName: 'Syncronisation',
6
6
  menuAlias: 'usync.menu',
7
- version: '17.x',
7
+ version: '18.x',
8
8
  conditions: {
9
9
  legacy: 'usync.legacy.condition',
10
10
  },
@@ -2,11 +2,26 @@ import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal';
2
2
  import { nothing } from '@umbraco-cms/backoffice/external/lit';
3
3
  import { uSyncDetailsModalData, uSyncDetailsModalValue } from '@jumoo/uSync';
4
4
  import { UUIButtonState } from '@umbraco-cms/backoffice/external/uui';
5
+ type DetailsTab = 'changes' | 'diff';
5
6
  export declare class uSyncDetailsModalElement extends UmbModalBaseElement<uSyncDetailsModalData, uSyncDetailsModalValue> {
6
7
  #private;
7
8
  importState: UUIButtonState;
9
+ private _preview?;
10
+ private _tab;
11
+ private _loading;
12
+ private _item?;
13
+ private _index;
14
+ /** the entity types there is a 'usync-item-preview' element for */
15
+ private _previewTypes;
8
16
  constructor();
17
+ connectedCallback(): void;
9
18
  render(): import("lit-html").TemplateResult<1>;
19
+ renderHeadline(): typeof nothing | import("lit-html").TemplateResult<1>;
20
+ renderNavigation(): typeof nothing | import("lit-html").TemplateResult<1>;
21
+ renderTabs(): typeof nothing | import("lit-html").TemplateResult<1>;
22
+ renderTab(tab: DetailsTab, key: string, fallback: string, icon: string): import("lit-html").TemplateResult<1>;
23
+ renderTabContent(): import("lit-html").TemplateResult<1>;
24
+ renderPreview(): import("lit-html").TemplateResult<1>;
10
25
  renderActions(): typeof nothing | import("lit-html").TemplateResult<1>;
11
26
  static styles: import("lit").CSSResult;
12
27
  }