@orangelogic/orange-dam-content-browser-sdk 2.4.7 → 2.4.8
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.
- package/build/OrangeDAMContentBrowserSDK.min.js +112 -68
- package/build/api/asset/asset.types.d.ts +1 -0
- package/build/components/content-browser/content-browser.d.ts +1 -0
- package/build/components/content-browser-grid/content-browser-grid.d.ts +9 -0
- package/build/content-browser.mjs +149 -42
- package/build/events/cx-content-browser-grid-retry.d.ts +6 -0
- package/build/events/index.d.ts +1 -0
- package/build/index.mjs +149 -42
- package/build/tools/fetch-and-merge-assets.d.ts +5 -0
- package/package.json +1 -1
package/build/index.mjs
CHANGED
|
@@ -12192,6 +12192,7 @@ let CxContentBrowserNoResult = class extends CortexElement {
|
|
|
12192
12192
|
<div class="content-browser-no-result" data-testid="no-results">
|
|
12193
12193
|
<cx-icon name=${this.icon}></cx-icon>
|
|
12194
12194
|
${this.message}
|
|
12195
|
+
<slot></slot>
|
|
12195
12196
|
</div>
|
|
12196
12197
|
`;
|
|
12197
12198
|
}
|
|
@@ -12344,7 +12345,28 @@ const styles$2 = i$7`
|
|
|
12344
12345
|
}
|
|
12345
12346
|
|
|
12346
12347
|
.content-browser-grid {
|
|
12348
|
+
display: flex;
|
|
12349
|
+
flex-direction: column;
|
|
12347
12350
|
height: 100%;
|
|
12351
|
+
position: relative;
|
|
12352
|
+
}
|
|
12353
|
+
|
|
12354
|
+
.content-browser-grid__list {
|
|
12355
|
+
flex: 1 1 auto;
|
|
12356
|
+
min-height: 0;
|
|
12357
|
+
overflow-x: hidden;
|
|
12358
|
+
}
|
|
12359
|
+
|
|
12360
|
+
.content-browser-grid__page-error {
|
|
12361
|
+
flex: none;
|
|
12362
|
+
display: flex;
|
|
12363
|
+
align-items: center;
|
|
12364
|
+
justify-content: center;
|
|
12365
|
+
gap: var(--cx-spacing-small, 8px);
|
|
12366
|
+
padding: var(--cx-spacing-small, 8px);
|
|
12367
|
+
border-top: 1px solid var(--cx-color-neutral-200, #e5e5e5);
|
|
12368
|
+
background-color: var(--cx-color-neutral-0, #fff);
|
|
12369
|
+
color: var(--cx-color-neutral);
|
|
12348
12370
|
}
|
|
12349
12371
|
|
|
12350
12372
|
.content-browser-grid-loading {
|
|
@@ -12381,6 +12403,7 @@ let CxContentBrowserGrid = class extends CortexElement {
|
|
|
12381
12403
|
this.localize = new LocalizeController(this);
|
|
12382
12404
|
this.assets = [];
|
|
12383
12405
|
this.empty = false;
|
|
12406
|
+
this.error = false;
|
|
12384
12407
|
this.view = GridView$1.Medium;
|
|
12385
12408
|
this.hasMore = false;
|
|
12386
12409
|
this.loading = false;
|
|
@@ -12520,6 +12543,63 @@ let CxContentBrowserGrid = class extends CortexElement {
|
|
|
12520
12543
|
this.emit("cx-content-browser-grid-scroll-end");
|
|
12521
12544
|
}
|
|
12522
12545
|
}
|
|
12546
|
+
handleRetry() {
|
|
12547
|
+
this.emit("cx-content-browser-grid-retry");
|
|
12548
|
+
}
|
|
12549
|
+
renderRetry() {
|
|
12550
|
+
return b`
|
|
12551
|
+
<cx-button class="content-browser-grid__retry" variant="primary" @click=${this.handleRetry}>
|
|
12552
|
+
${this.localize.term("retry")}
|
|
12553
|
+
</cx-button>
|
|
12554
|
+
`;
|
|
12555
|
+
}
|
|
12556
|
+
renderContent() {
|
|
12557
|
+
if (this.error && this.assets.length === 0) {
|
|
12558
|
+
return b`
|
|
12559
|
+
<cx-content-browser-no-result
|
|
12560
|
+
class="content-browser-grid__empty"
|
|
12561
|
+
icon="error_outline"
|
|
12562
|
+
message=${this.localize.term("oopsSomethingWentWrong")}
|
|
12563
|
+
role="alert"
|
|
12564
|
+
>
|
|
12565
|
+
${this.renderRetry()}
|
|
12566
|
+
</cx-content-browser-no-result>
|
|
12567
|
+
`;
|
|
12568
|
+
}
|
|
12569
|
+
if (this.empty) {
|
|
12570
|
+
return b`
|
|
12571
|
+
<cx-content-browser-no-result
|
|
12572
|
+
class="content-browser-grid__empty"
|
|
12573
|
+
icon="search_off"
|
|
12574
|
+
message=${this.localize.term("noResults")}
|
|
12575
|
+
></cx-content-browser-no-result>
|
|
12576
|
+
`;
|
|
12577
|
+
}
|
|
12578
|
+
return b`
|
|
12579
|
+
<lit-virtualizer
|
|
12580
|
+
class="content-browser-grid__list"
|
|
12581
|
+
scroller
|
|
12582
|
+
.layout=${grid({
|
|
12583
|
+
gap: `${__privateGet2(this, _gutter)}px`,
|
|
12584
|
+
itemSize: {
|
|
12585
|
+
height: `${Math.max(this.columnWidth, 150)}px`,
|
|
12586
|
+
width: `${this.columnWidth}px`
|
|
12587
|
+
},
|
|
12588
|
+
flex: { preserve: "aspect-ratio" }
|
|
12589
|
+
})}
|
|
12590
|
+
.items=${this.assets}
|
|
12591
|
+
.renderItem=${this.renderItem}
|
|
12592
|
+
@scroll=${this.handleScroll}
|
|
12593
|
+
></lit-virtualizer>
|
|
12594
|
+
${n$5(this.error, () => b`
|
|
12595
|
+
<div class="content-browser-grid__page-error" role="alert">
|
|
12596
|
+
<cx-icon name="error_outline"></cx-icon>
|
|
12597
|
+
${this.localize.term("oopsSomethingWentWrong")}
|
|
12598
|
+
${this.renderRetry()}
|
|
12599
|
+
</div>
|
|
12600
|
+
`)}
|
|
12601
|
+
`;
|
|
12602
|
+
}
|
|
12523
12603
|
render() {
|
|
12524
12604
|
return b`
|
|
12525
12605
|
<div
|
|
@@ -12533,36 +12613,7 @@ let CxContentBrowserGrid = class extends CortexElement {
|
|
|
12533
12613
|
</div>
|
|
12534
12614
|
<cx-resize-observer @cx-resize=${this.handleResize}>
|
|
12535
12615
|
<div class="content-browser-grid">
|
|
12536
|
-
${
|
|
12537
|
-
this.empty,
|
|
12538
|
-
() => b`
|
|
12539
|
-
<cx-content-browser-no-result
|
|
12540
|
-
class="content-browser-grid__empty"
|
|
12541
|
-
icon="search_off"
|
|
12542
|
-
message=${this.localize.term("noResults")}
|
|
12543
|
-
></cx-content-browser-no-result>
|
|
12544
|
-
`,
|
|
12545
|
-
() => b`
|
|
12546
|
-
<lit-virtualizer
|
|
12547
|
-
scroller
|
|
12548
|
-
style=${o$2({
|
|
12549
|
-
height: "100%",
|
|
12550
|
-
"overflow-x": "hidden"
|
|
12551
|
-
})}
|
|
12552
|
-
.layout=${grid({
|
|
12553
|
-
gap: `${__privateGet2(this, _gutter)}px`,
|
|
12554
|
-
itemSize: {
|
|
12555
|
-
height: `${Math.max(this.columnWidth, 150)}px`,
|
|
12556
|
-
width: `${this.columnWidth}px`
|
|
12557
|
-
},
|
|
12558
|
-
flex: { preserve: "aspect-ratio" }
|
|
12559
|
-
})}
|
|
12560
|
-
.items=${this.assets}
|
|
12561
|
-
.renderItem=${this.renderItem}
|
|
12562
|
-
@scroll=${this.handleScroll}
|
|
12563
|
-
></lit-virtualizer>
|
|
12564
|
-
`
|
|
12565
|
-
)}
|
|
12616
|
+
${this.renderContent()}
|
|
12566
12617
|
</div>
|
|
12567
12618
|
</cx-resize-observer>
|
|
12568
12619
|
`;
|
|
@@ -12573,8 +12624,10 @@ _lastHeight = /* @__PURE__ */ new WeakMap();
|
|
|
12573
12624
|
_lastWidth = /* @__PURE__ */ new WeakMap();
|
|
12574
12625
|
CxContentBrowserGrid.styles = [componentStyles, styles$2];
|
|
12575
12626
|
CxContentBrowserGrid.dependencies = {
|
|
12627
|
+
"cx-button": CxButton,
|
|
12576
12628
|
"cx-content-browser-asset-card": CxContentBrowserAssetCard,
|
|
12577
12629
|
"cx-content-browser-no-result": CxContentBrowserNoResult,
|
|
12630
|
+
"cx-icon": CxIcon,
|
|
12578
12631
|
"cx-progress-bar": CxProgressBar,
|
|
12579
12632
|
"cx-resize-observer": CxResizeObserver
|
|
12580
12633
|
};
|
|
@@ -12590,6 +12643,9 @@ __decorateClass$2([
|
|
|
12590
12643
|
__decorateClass$2([
|
|
12591
12644
|
n$6({ attribute: "empty", reflect: true, type: Boolean })
|
|
12592
12645
|
], CxContentBrowserGrid.prototype, "empty", 2);
|
|
12646
|
+
__decorateClass$2([
|
|
12647
|
+
n$6({ attribute: "error", reflect: true, type: Boolean })
|
|
12648
|
+
], CxContentBrowserGrid.prototype, "error", 2);
|
|
12593
12649
|
__decorateClass$2([
|
|
12594
12650
|
n$6({ attribute: "view", reflect: true, type: String })
|
|
12595
12651
|
], CxContentBrowserGrid.prototype, "view", 2);
|
|
@@ -12938,6 +12994,17 @@ function resolveAssetExtraFilters(selectedFacets) {
|
|
|
12938
12994
|
function isCortexErrorResponse(response) {
|
|
12939
12995
|
return response && typeof response === "object" && "ErrorCode" in response;
|
|
12940
12996
|
}
|
|
12997
|
+
function isSearchFacet(facet) {
|
|
12998
|
+
const details = facet == null ? void 0 : facet.facetDetails;
|
|
12999
|
+
return !!facet && !!details && typeof details === "object" && !Array.isArray(details) && typeof details.facetFieldName === "string" && typeof details.displayName === "string" && Array.isArray(facet.values) && facet.values.every((facetValue) => !!facetValue && typeof facetValue.value === "string");
|
|
13000
|
+
}
|
|
13001
|
+
function isSearchResponse(response) {
|
|
13002
|
+
if (!response || typeof response !== "object" || Array.isArray(response)) {
|
|
13003
|
+
return false;
|
|
13004
|
+
}
|
|
13005
|
+
const { contentItems, facets, totalCount } = response;
|
|
13006
|
+
return Array.isArray(facets) && facets.every(isSearchFacet) && Number.isFinite(totalCount) && (contentItems === void 0 || Array.isArray(contentItems));
|
|
13007
|
+
}
|
|
12941
13008
|
const POST_UNSUPPORTED_STATUSES = /* @__PURE__ */ new Set([405, 501]);
|
|
12942
13009
|
const postUnsupportedOrigins = /* @__PURE__ */ new Set();
|
|
12943
13010
|
function createId() {
|
|
@@ -13310,6 +13377,14 @@ function apiGetAssets(_0) {
|
|
|
13310
13377
|
...Array.isArray(http.defaults.transformResponse) ? http.defaults.transformResponse : [],
|
|
13311
13378
|
(rawResponse) => {
|
|
13312
13379
|
var _a2, _b2;
|
|
13380
|
+
if (!isSearchResponse(rawResponse)) {
|
|
13381
|
+
return {
|
|
13382
|
+
facets: [],
|
|
13383
|
+
isError: true,
|
|
13384
|
+
items: [],
|
|
13385
|
+
totalCount: 0
|
|
13386
|
+
};
|
|
13387
|
+
}
|
|
13313
13388
|
const mappedItems = (_b2 = (_a2 = rawResponse.contentItems) == null ? void 0 : _a2.map((item) => {
|
|
13314
13389
|
var _a3, _b3, _c2, _d2, _e3, _f2, _g, _h, _i, _j, _k, _l;
|
|
13315
13390
|
let extension = (_a3 = item.fields[FIELD_EXTENSION]) != null ? _a3 : "";
|
|
@@ -13338,6 +13413,7 @@ function apiGetAssets(_0) {
|
|
|
13338
13413
|
})) != null ? _b2 : [];
|
|
13339
13414
|
return {
|
|
13340
13415
|
facets: rawResponse.facets,
|
|
13416
|
+
isError: false,
|
|
13341
13417
|
items: mappedItems,
|
|
13342
13418
|
totalCount: rawResponse.totalCount
|
|
13343
13419
|
};
|
|
@@ -13349,6 +13425,7 @@ function apiGetAssets(_0) {
|
|
|
13349
13425
|
} catch (error) {
|
|
13350
13426
|
return {
|
|
13351
13427
|
facets: [],
|
|
13428
|
+
isError: true,
|
|
13352
13429
|
items: [],
|
|
13353
13430
|
totalCount: 0
|
|
13354
13431
|
};
|
|
@@ -13846,6 +13923,7 @@ class FetchAndMergeAssetsController {
|
|
|
13846
13923
|
this.items = [];
|
|
13847
13924
|
this.totalCount = 0;
|
|
13848
13925
|
this.lastRequest = null;
|
|
13926
|
+
this.failedRequest = null;
|
|
13849
13927
|
this.sortOrders = {};
|
|
13850
13928
|
this.parameters = null;
|
|
13851
13929
|
this.availableExtensions = null;
|
|
@@ -14071,6 +14149,14 @@ class FetchAndMergeAssetsController {
|
|
|
14071
14149
|
return yield apiGetFolders(request);
|
|
14072
14150
|
});
|
|
14073
14151
|
}
|
|
14152
|
+
/** Sends the last search that got an error again, with the same page and controls. */
|
|
14153
|
+
retrySearch() {
|
|
14154
|
+
return __async(this, null, function* () {
|
|
14155
|
+
if (this.failedRequest) {
|
|
14156
|
+
yield this.fetchAndMergeAssets(this.failedRequest);
|
|
14157
|
+
}
|
|
14158
|
+
});
|
|
14159
|
+
}
|
|
14074
14160
|
/**
|
|
14075
14161
|
* A folder switch (or any refetch) can return a facet list that no longer includes a
|
|
14076
14162
|
* currently-selected value. Keep those selected-but-missing values visible (count 0) instead
|
|
@@ -14117,6 +14203,7 @@ class FetchAndMergeAssetsController {
|
|
|
14117
14203
|
}
|
|
14118
14204
|
const generation = __privateGet(this, _generation);
|
|
14119
14205
|
this.loading = true;
|
|
14206
|
+
this.failedRequest = null;
|
|
14120
14207
|
this.host.requestUpdate();
|
|
14121
14208
|
if (this._debounceTimeout) {
|
|
14122
14209
|
clearTimeout(this._debounceTimeout);
|
|
@@ -14171,17 +14258,25 @@ class FetchAndMergeAssetsController {
|
|
|
14171
14258
|
if (generation !== __privateGet(this, _generation)) {
|
|
14172
14259
|
return;
|
|
14173
14260
|
}
|
|
14174
|
-
if (
|
|
14175
|
-
this.
|
|
14261
|
+
if (assets.isError) {
|
|
14262
|
+
this.failedRequest = request;
|
|
14263
|
+
if (isRestart) {
|
|
14264
|
+
this.items = [];
|
|
14265
|
+
this.totalCount = 0;
|
|
14266
|
+
}
|
|
14176
14267
|
} else {
|
|
14177
|
-
|
|
14268
|
+
if (isRestart) {
|
|
14269
|
+
this.items = assets.items;
|
|
14270
|
+
} else {
|
|
14271
|
+
this.items = uniqBy([...this.items, ...assets.items], "recordId");
|
|
14272
|
+
}
|
|
14273
|
+
this.facets = this.mergeFacetsWithSelected(assets.facets, this.facets, request.selectedFacets);
|
|
14274
|
+
this.totalCount = assets.totalCount;
|
|
14275
|
+
__privateSet(this, _lastPage, {
|
|
14276
|
+
pageSize: request.pageSize || assets.items.length,
|
|
14277
|
+
start: (_g = request.start) != null ? _g : 0
|
|
14278
|
+
});
|
|
14178
14279
|
}
|
|
14179
|
-
this.facets = this.mergeFacetsWithSelected(assets.facets, this.facets, request.selectedFacets);
|
|
14180
|
-
this.totalCount = assets.totalCount;
|
|
14181
|
-
__privateSet(this, _lastPage, {
|
|
14182
|
-
pageSize: request.pageSize || assets.items.length,
|
|
14183
|
-
start: (_g = request.start) != null ? _g : 0
|
|
14184
|
-
});
|
|
14185
14280
|
__privateSet(this, _hasFetchedOnce, true);
|
|
14186
14281
|
if (this._debounceResolve) {
|
|
14187
14282
|
this._debounceResolve(this.lastRequest);
|
|
@@ -14392,6 +14487,7 @@ class FetchAndMergeAssetsController {
|
|
|
14392
14487
|
) : (_b2 = this.parameters.supportedRepresentativeSubtypes) != null ? _b2 : []
|
|
14393
14488
|
}) : null,
|
|
14394
14489
|
request: this.lastRequest,
|
|
14490
|
+
searchError: this.failedRequest !== null,
|
|
14395
14491
|
sortOrders: this.sortOrders,
|
|
14396
14492
|
totalCount: this.totalCount,
|
|
14397
14493
|
userInfo: this.userInfo
|
|
@@ -14761,6 +14857,9 @@ let CxContentBrowser = class extends CortexElement {
|
|
|
14761
14857
|
}
|
|
14762
14858
|
handleScrollEnd() {
|
|
14763
14859
|
return __async(this, null, function* () {
|
|
14860
|
+
if (this.fetchAndMergeAssetsController.getData().searchError) {
|
|
14861
|
+
return;
|
|
14862
|
+
}
|
|
14764
14863
|
const nextPage = this.fetchAndMergeAssetsController.getNextPage();
|
|
14765
14864
|
if (!nextPage) {
|
|
14766
14865
|
return;
|
|
@@ -14818,9 +14917,9 @@ let CxContentBrowser = class extends CortexElement {
|
|
|
14818
14917
|
if (!nextPage) {
|
|
14819
14918
|
return;
|
|
14820
14919
|
}
|
|
14821
|
-
const totalCount = this.fetchAndMergeAssetsController.getData()
|
|
14920
|
+
const { searchError, totalCount } = this.fetchAndMergeAssetsController.getData();
|
|
14822
14921
|
const newStart = nextPage.start;
|
|
14823
|
-
if (newPageSize <= nextPage.lastPageSize || newPageSize === 0 || newStart > totalCount) {
|
|
14922
|
+
if (searchError || newPageSize <= nextPage.lastPageSize || newPageSize === 0 || newStart > totalCount) {
|
|
14824
14923
|
return;
|
|
14825
14924
|
}
|
|
14826
14925
|
this.lastRequest = __spreadProps(__spreadValues({}, this.lastRequest), {
|
|
@@ -14846,6 +14945,11 @@ let CxContentBrowser = class extends CortexElement {
|
|
|
14846
14945
|
}
|
|
14847
14946
|
});
|
|
14848
14947
|
}
|
|
14948
|
+
handleRetry() {
|
|
14949
|
+
return __async(this, null, function* () {
|
|
14950
|
+
yield this.fetchAndMergeAssetsController.retrySearch();
|
|
14951
|
+
});
|
|
14952
|
+
}
|
|
14849
14953
|
handleGridClick(event) {
|
|
14850
14954
|
return __async(this, null, function* () {
|
|
14851
14955
|
const { id } = event.detail;
|
|
@@ -15026,6 +15130,7 @@ let CxContentBrowser = class extends CortexElement {
|
|
|
15026
15130
|
loading,
|
|
15027
15131
|
parameters,
|
|
15028
15132
|
request,
|
|
15133
|
+
searchError,
|
|
15029
15134
|
sortOrders,
|
|
15030
15135
|
totalCount,
|
|
15031
15136
|
userInfo
|
|
@@ -15114,7 +15219,8 @@ let CxContentBrowser = class extends CortexElement {
|
|
|
15114
15219
|
></cx-content-browser-control-bar>
|
|
15115
15220
|
<cx-content-browser-grid
|
|
15116
15221
|
.assets=${items}
|
|
15117
|
-
?empty=${!loading && !this.initialFolderPending && items.length === 0}
|
|
15222
|
+
?empty=${!loading && !this.initialFolderPending && !searchError && items.length === 0}
|
|
15223
|
+
?error=${searchError}
|
|
15118
15224
|
?has-more=${items.length < totalCount}
|
|
15119
15225
|
?loading=${loading || this.initialFolderPending}
|
|
15120
15226
|
?show-title=${this.showTitle}
|
|
@@ -15125,6 +15231,7 @@ let CxContentBrowser = class extends CortexElement {
|
|
|
15125
15231
|
view=${this.view}
|
|
15126
15232
|
@cx-content-browser-grid-scroll-end=${this.handleScrollEnd}
|
|
15127
15233
|
@cx-content-browser-grid-resize=${this.handleGridResize}
|
|
15234
|
+
@cx-content-browser-grid-retry=${this.handleRetry}
|
|
15128
15235
|
@cx-content-browser-grid-click=${this.handleGridClick}
|
|
15129
15236
|
></cx-content-browser-grid>
|
|
15130
15237
|
</cx-resize-observer>
|
|
@@ -31,6 +31,8 @@ export declare class FetchAndMergeAssetsController implements ReactiveController
|
|
|
31
31
|
private items;
|
|
32
32
|
private totalCount;
|
|
33
33
|
private lastRequest;
|
|
34
|
+
/** The resolved request of the last search that got an error. A retry sends it again. */
|
|
35
|
+
private failedRequest;
|
|
34
36
|
private sortOrders;
|
|
35
37
|
private parameters;
|
|
36
38
|
private availableExtensions;
|
|
@@ -74,6 +76,8 @@ export declare class FetchAndMergeAssetsController implements ReactiveController
|
|
|
74
76
|
private mapAvailableExtensions;
|
|
75
77
|
fetchAssets(request: GetAssetsRequest): Promise<import("../api/asset/asset.types").GetAssetsResponse>;
|
|
76
78
|
fetchFolders(request: GetFolderRequest): Promise<import("../types/folder").GetFolderResponse>;
|
|
79
|
+
/** Sends the last search that got an error again, with the same page and controls. */
|
|
80
|
+
retrySearch(): Promise<void>;
|
|
77
81
|
/**
|
|
78
82
|
* A folder switch (or any refetch) can return a facet list that no longer includes a
|
|
79
83
|
* currently-selected value. Keep those selected-but-missing values visible (count 0) instead
|
|
@@ -143,6 +147,7 @@ export declare class FetchAndMergeAssetsController implements ReactiveController
|
|
|
143
147
|
supportedRepresentativeSubtypes?: string[];
|
|
144
148
|
} | null;
|
|
145
149
|
request: GetAssetsRequest | null;
|
|
150
|
+
searchError: boolean;
|
|
146
151
|
sortOrders: Record<string, SortOrder[]>;
|
|
147
152
|
totalCount: number;
|
|
148
153
|
userInfo: UserInfo | null;
|
package/package.json
CHANGED