@arcgis/portal-components 6.0.0-next.4 → 6.0.0-next.6

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 (36) hide show
  1. package/dist/cdn/26PILQCA.js +2 -0
  2. package/dist/cdn/2RDQX6UR.js +2 -0
  3. package/dist/cdn/MRJO2LXU.js +2 -0
  4. package/dist/cdn/RDXUP624.js +2 -0
  5. package/dist/cdn/SVROAT3Z.js +1 -1
  6. package/dist/cdn/ULFFGJXZ.js +2 -0
  7. package/dist/cdn/WWEK2CFY.js +2 -0
  8. package/dist/cdn/index.js +1 -1
  9. package/dist/chunks/portal-related-items-list-item.js +1 -1
  10. package/dist/components/arcgis-portal-delete-items/customElement.d.ts +7 -3
  11. package/dist/components/arcgis-portal-delete-items/customElement.js +334 -258
  12. package/dist/components/arcgis-portal-delete-items/index.js +0 -1
  13. package/dist/components/arcgis-portal-delete-items/types.d.ts +1 -0
  14. package/dist/components/arcgis-portal-navigation/index.js +1 -1
  15. package/dist/components/arcgis-portal-review-related-items/customElement.d.ts +333 -0
  16. package/dist/components/arcgis-portal-review-related-items/customElement.js +21 -18
  17. package/dist/components/arcgis-portal-review-related-items/index.js +2 -0
  18. package/dist/components/portal-related-items-list-item/customElement.js +15 -13
  19. package/dist/components/portal-related-items-list-item/index.js +1 -1
  20. package/dist/docs/api.json +1 -1
  21. package/dist/docs/docs.json +1 -1
  22. package/dist/docs/vscode.html-custom-data.json +1 -1
  23. package/dist/docs/web-types.json +1 -1
  24. package/dist/loader.js +2 -2
  25. package/dist/types/lumina.d.ts +3 -3
  26. package/dist/types/preact.d.ts +3 -3
  27. package/dist/types/react.d.ts +3 -3
  28. package/dist/types/stencil.d.ts +3 -3
  29. package/dist/utils/types.d.ts +10 -0
  30. package/package.json +7 -7
  31. package/dist/cdn/3CQKCUM5.js +0 -2
  32. package/dist/cdn/CD5UWSCP.js +0 -2
  33. package/dist/cdn/DYO5P3F2.js +0 -2
  34. package/dist/cdn/FIBQAMJ3.js +0 -2
  35. package/dist/cdn/N5QLV56W.js +0 -2
  36. package/dist/cdn/TOTWYGB3.js +0 -2
@@ -1,53 +1,54 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import { c as B } from "../../chunks/runtime.js";
3
- import { LitElement as x, createEvent as y, nothing as _ } from "@arcgis/lumina";
4
- import { css as T, html as d } from "lit";
5
- import b from "@arcgis/core/request.js";
6
- import { c as C } from "../../chunks/functional.js";
7
- import D from "@arcgis/core/portal/PortalItem.js";
8
- import { r as $ } from "../../chunks/request.js";
2
+ import { c as P } from "../../chunks/runtime.js";
3
+ import b from "@arcgis/core/portal/PortalItem.js";
4
+ import { LitElement as U, createEvent as D, safeClassMap as S, nothing as L } from "@arcgis/lumina";
5
+ import { css as M, html as d } from "lit";
6
+ import k from "@arcgis/core/request.js";
7
+ import { c as O } from "../../chunks/functional.js";
8
+ import { r as _ } from "../../chunks/request.js";
9
9
  import "../arcgis-portal-review-related-items/customElement.js";
10
- import { f as U } from "../../chunks/portal-delete-items-review.js";
11
- import { a as I } from "../../chunks/item2.js";
12
- import { u as A } from "../../chunks/useT9n.js";
13
- import { b as P } from "../../chunks/url.js";
14
- async function M(s, e, t = !1) {
10
+ import { f as $ } from "../../chunks/portal-delete-items-review.js";
11
+ import { a as y } from "../../chunks/item2.js";
12
+ import { u as E } from "../../chunks/useT9n.js";
13
+ import { g as F } from "../../chunks/items.js";
14
+ import { b as H } from "../../chunks/url.js";
15
+ async function R(i, e, t = !1) {
15
16
  try {
16
- const n = /* @__PURE__ */ new Map();
17
- for (const r of s) {
18
- const { id: l, owner: c } = r, o = n.get(c) ?? [];
19
- o.push(l), n.set(c, o);
17
+ const s = /* @__PURE__ */ new Map();
18
+ for (const l of i) {
19
+ const { id: o, owner: a } = l, c = s.get(a) ?? [];
20
+ c.push(o), s.set(a, c);
20
21
  }
21
- const i = [];
22
- for (const [r, l] of n) {
23
- const c = `${e.restUrl}/content/users/${encodeURIComponent(r)}/deleteItems`;
24
- for (const o of C(l, 100)) {
25
- const m = b(c, {
22
+ const n = [];
23
+ for (const [l, o] of s) {
24
+ const a = `${e.restUrl}/content/users/${encodeURIComponent(l)}/deleteItems`;
25
+ for (const c of O(o, 100)) {
26
+ const m = k(a, {
26
27
  method: "post",
27
28
  query: {
28
29
  f: "json",
29
- items: o.join(","),
30
+ items: c.join(","),
30
31
  permanentDelete: t
31
32
  }
32
33
  });
33
- i.push(m.then(({ data: f }) => f));
34
+ n.push(m.then(({ data: h }) => h));
34
35
  }
35
36
  }
36
- return { result: (await Promise.all(i)).flatMap(({ results: r }) => r) };
37
+ return { result: (await Promise.all(n)).flatMap(({ results: l }) => l) };
37
38
  } catch {
38
39
  return { error: { code: "unhandledError" } };
39
40
  }
40
41
  }
41
- async function w(s) {
42
- const { item: e, portal: t, permanentlyDelete: n } = s, { id: i, owner: a } = e;
43
- if (!i || !a)
42
+ async function B(i) {
43
+ const { item: e, portal: t, permanentlyDelete: s } = i, { id: n, owner: r } = e;
44
+ if (!n || !r)
44
45
  return { error: { code: "unhandledError" } };
45
- const r = t.recycleBinEnabled && !n ? "/canRecycle" : "/canDelete", l = `${t.restUrl}/content/users/${encodeURIComponent(a)}/items/${i}${r}`;
46
+ const l = t.recycleBinEnabled && !s ? "/canRecycle" : "/canDelete", o = `${t.restUrl}/content/users/${encodeURIComponent(r)}/items/${n}${l}`;
46
47
  try {
47
- return { result: (await b(l, { query: { f: "json" } })).data };
48
- } catch (c) {
49
- const o = c.details?.raw;
50
- switch (o?.messageCode) {
48
+ return { result: (await k(o, { query: { f: "json" } })).data };
49
+ } catch (a) {
50
+ const c = a.details?.raw;
51
+ switch (c?.messageCode) {
51
52
  case "CONT_00481":
52
53
  case "CONT_00483":
53
54
  case "CONT_00484":
@@ -55,387 +56,451 @@ async function w(s) {
55
56
  case "CONT_0048":
56
57
  return { error: { code: "itemDeleteProtected" } };
57
58
  default:
58
- return { error: { code: "unhandledError", message: o?.message } };
59
+ return { error: { code: "unhandledError", message: c?.message } };
59
60
  }
60
61
  }
61
62
  }
62
- function R(s, e) {
63
- return (s.relatedItems ?? []).map((t) => F(t, e));
63
+ async function q(i, e) {
64
+ try {
65
+ const t = `${i.itemUrl}/setContentStatus`;
66
+ return { result: (await k(t, { query: { status: e ?? "", clearEmptyFields: !e, f: "json" }, method: "post" })).data };
67
+ } catch (t) {
68
+ return console.error(t), { error: { code: "unhandledError" } };
69
+ }
64
70
  }
65
- function F(s, e) {
66
- return s instanceof D ? s : new D({ ...s, portal: e });
71
+ function A(i, e) {
72
+ return (i.relatedItems ?? []).map((t) => N(t, e));
67
73
  }
68
- async function g({
69
- itemId: s,
74
+ function N(i, e) {
75
+ return i instanceof b ? i : new b({ ...i, portal: e });
76
+ }
77
+ async function I({
78
+ itemId: i,
70
79
  portal: e,
71
80
  relationship: t,
72
- includeRecycleBin: n,
73
- nextkey: i
81
+ includeRecycleBin: s,
82
+ nextkey: n
74
83
  }) {
75
- const { relationshipType: a, direction: r } = t, l = `${e.restUrl}/content/items/${s}/relatedItems`;
84
+ const { relationshipType: r, direction: l } = t, o = `${e.restUrl}/content/items/${i}/relatedItems`;
76
85
  try {
77
- const c = await $({
78
- url: l,
86
+ const a = await _({
87
+ url: o,
79
88
  portal: e,
80
89
  params: {
81
- includeRecycleBin: n,
90
+ includeRecycleBin: s,
82
91
  f: "json",
83
- relationshipType: a ? Array.isArray(a) ? a.join(",") : a : void 0,
84
- direction: r,
85
- nextkey: i
92
+ relationshipType: r ? Array.isArray(r) ? r.join(",") : r : void 0,
93
+ direction: l,
94
+ nextkey: n
86
95
  }
87
96
  });
88
97
  return {
89
98
  success: !0,
90
- result: { ...c, relatedItems: R(c, e) }
99
+ result: { ...a, relatedItems: A(a, e) }
91
100
  };
92
- } catch (c) {
93
- return { success: !1, error: c };
101
+ } catch (a) {
102
+ return { success: !1, error: a };
94
103
  }
95
104
  }
96
- async function L({
97
- itemId: s,
105
+ async function W({
106
+ itemId: i,
98
107
  portal: e,
99
108
  relationship: t,
100
- includeRecycleBin: n,
101
- num: i,
102
- nextkey: a
109
+ includeRecycleBin: s,
110
+ num: n,
111
+ nextkey: r
103
112
  }) {
104
- const { relationshipRules: r, direction: l } = t, c = `${e.restUrl}/content/items/${s}/relatedItems`;
113
+ const { relationshipRules: l, direction: o } = t, a = `${e.restUrl}/content/items/${i}/relatedItems`;
105
114
  try {
106
- const o = await $({
107
- url: c,
115
+ const c = await _({
116
+ url: a,
108
117
  portal: e,
109
118
  params: {
110
- includeRecycleBin: n,
119
+ includeRecycleBin: s,
111
120
  f: "json",
112
- ...r?.length ? { relationshipRules: r.join(",") } : {},
121
+ ...l?.length ? { relationshipRules: l.join(",") } : {},
113
122
  includeSystemManaged: "true",
114
123
  excludedFlags: "legacy,exclude",
115
- num: i,
116
- direction: l,
117
- nextkey: a
124
+ num: n,
125
+ direction: o,
126
+ nextkey: r
118
127
  }
119
128
  });
120
129
  return {
121
130
  success: !0,
122
- result: { ...o, relatedItems: R(o, e) }
131
+ result: { ...c, relatedItems: A(c, e) }
123
132
  };
124
- } catch (o) {
125
- return { success: !1, error: o };
133
+ } catch (c) {
134
+ return { success: !1, error: c };
126
135
  }
127
136
  }
128
- async function E(s, e) {
129
- const { id: t, type: n, typeKeywords: i = [] } = s;
137
+ async function j(i, e) {
138
+ const { id: t, type: s, typeKeywords: n = [] } = i;
130
139
  if (!t)
131
140
  return null;
132
- const a = [
141
+ const r = [
133
142
  "Scene Service",
134
143
  "Map Service",
135
144
  "WFS",
136
145
  "OGCFeatureServer",
137
146
  "Vector Tile Service",
138
147
  "3DTiles Service"
139
- ].includes(n), r = ["Map Service", "Vector Tile Service"].includes(n), l = (o) => o?.typeKeywords?.includes("View Service") ?? !1, c = () => a ? [
148
+ ].includes(s), l = ["Map Service", "Vector Tile Service"].includes(s), o = (c) => c?.typeKeywords?.includes("View Service") ?? !1, a = () => r ? [
140
149
  { relationshipType: ["Service2Service"], direction: "reverse" },
141
150
  { relationshipType: ["Service2Data"], direction: "forward" }
142
- ] : i.includes("Bulk Published Service") ? { relationshipType: ["DataStore2BPService"], direction: "reverse" } : n === "Geoprocessing Service" && i.includes("Notebook Web Tool") ? { relationshipType: ["Notebook2WebTool"], direction: "reverse" } : i.includes("Route Layer") ? { relationshipType: ["Service2Route"], direction: "reverse" } : n === "Mobile Application" ? { relationshipType: ["MobileApp2Code"], direction: "reverse" } : n === "Map Package" ? { relationshipType: ["Area2Package"], direction: "reverse" } : n === "Feature Service" ? { relationshipType: ["Service2Layer"], direction: "reverse" } : i.includes("Document") ? { relationshipType: ["Item2Attachment"], direction: "reverse" } : n === "Application Configuration" ? { relationshipType: ["Map2AppConfig"], direction: "reverse" } : { relationshipType: ["Service2Data"], direction: "forward" };
151
+ ] : n.includes("Bulk Published Service") ? { relationshipType: ["DataStore2BPService"], direction: "reverse" } : s === "Geoprocessing Service" && n.includes("Notebook Web Tool") ? { relationshipType: ["Notebook2WebTool"], direction: "reverse" } : n.includes("Route Layer") ? { relationshipType: ["Service2Route"], direction: "reverse" } : s === "Mobile Application" ? { relationshipType: ["MobileApp2Code"], direction: "reverse" } : s === "Map Package" ? { relationshipType: ["Area2Package"], direction: "reverse" } : s === "Feature Service" ? { relationshipType: ["Service2Layer"], direction: "reverse" } : n.includes("Document") ? { relationshipType: ["Item2Attachment"], direction: "reverse" } : s === "Application Configuration" ? { relationshipType: ["Map2AppConfig"], direction: "reverse" } : { relationshipType: ["Service2Data"], direction: "forward" };
143
152
  try {
144
- const o = c();
145
- if (!o)
153
+ const c = a();
154
+ if (!c)
146
155
  return null;
147
- if (!Array.isArray(o))
156
+ if (!Array.isArray(c))
148
157
  return {
149
- sourceData: (await g({
158
+ sourceData: (await I({
150
159
  itemId: t,
151
160
  portal: e,
152
- relationship: o
161
+ relationship: c
153
162
  })).result?.relatedItems?.[0] ?? null,
154
- relationship: o
163
+ relationship: c
155
164
  };
156
- if (a) {
165
+ if (r) {
157
166
  let m = { relationshipType: ["Service2Service"], direction: "reverse" };
158
- const f = await g({
167
+ const h = await I({
159
168
  itemId: t,
160
169
  portal: e,
161
170
  relationship: m
162
- }), p = f.result?.total ? f.result.relatedItems.shift() ?? null : null;
163
- if (r && !l(p) || !p) {
171
+ }), u = h.result?.total ? h.result.relatedItems.shift() ?? null : null;
172
+ if (l && !o(u) || !u) {
164
173
  m = { relationshipType: ["Service2Data"], direction: "forward" };
165
- const v = await g({
174
+ const f = await I({
166
175
  itemId: t,
167
176
  portal: e,
168
177
  relationship: m
169
178
  });
170
179
  return {
171
- sourceData: v.result?.total ? v.result.relatedItems.shift() ?? p : p,
180
+ sourceData: f.result?.total ? f.result.relatedItems.shift() ?? u : u,
172
181
  relationship: m
173
182
  };
174
183
  }
175
- return { sourceData: p, relationship: m };
184
+ return { sourceData: u, relationship: m };
176
185
  }
177
186
  return null;
178
- } catch (o) {
179
- return console.error(o), { sourceData: null, relationship: { direction: "forward" } };
187
+ } catch (c) {
188
+ return console.error(c), { sourceData: null, relationship: { direction: "forward" } };
180
189
  }
181
190
  }
182
- async function H(s, e) {
183
- const { id: t, type: n, typeKeywords: i = [] } = s;
191
+ async function z(i, e) {
192
+ const { id: t, type: s, typeKeywords: n = [] } = i;
184
193
  try {
185
- const r = n === "Notebook" ? { relationshipType: ["Notebook2WebTool"], direction: "forward" } : i.includes("Has Related Route Layers") ? { relationshipType: ["Service2Route"], direction: "forward" } : i.includes("Hosted Service") || n === "Feature Service" ? { relationshipType: ["Service2Service"], direction: n === "Feed" ? "reverse" : "forward" } : n === "Data Store" || i.includes("ArcGIS Server") ? { relationshipType: ["DataStore2BPService"], direction: "forward" } : { relationshipType: ["Service2Data"], direction: "reverse" }, l = await g({
194
+ const l = s === "Notebook" ? { relationshipType: ["Notebook2WebTool"], direction: "forward" } : n.includes("Has Related Route Layers") ? { relationshipType: ["Service2Route"], direction: "forward" } : n.includes("Hosted Service") || s === "Feature Service" ? { relationshipType: ["Service2Service"], direction: s === "Feed" ? "reverse" : "forward" } : s === "Data Store" || n.includes("ArcGIS Server") ? { relationshipType: ["DataStore2BPService"], direction: "forward" } : { relationshipType: ["Service2Data"], direction: "reverse" }, o = await I({
186
195
  itemId: t,
187
196
  portal: e,
188
- relationship: r
197
+ relationship: l,
198
+ includeRecycleBin: !0
189
199
  });
190
200
  return {
191
201
  resultData: {
192
- items: l.result?.total ? l.result.relatedItems : null,
193
- count: l.result?.total ?? 0
202
+ items: o.result?.total ? o.result.relatedItems : null,
203
+ count: o.result?.total ?? 0
194
204
  },
195
- relationship: r
205
+ relationship: l
196
206
  };
197
- } catch (a) {
198
- return console.error(a), {
207
+ } catch (r) {
208
+ return console.error(r), {
199
209
  resultData: { items: null, count: 0 },
200
210
  relationship: { direction: "forward" }
201
211
  };
202
212
  }
203
213
  }
204
- async function N(s, e) {
205
- const { id: t } = s;
214
+ async function G(i, e) {
215
+ const { id: t } = i;
206
216
  try {
207
- return (await g({
217
+ return (await I({
208
218
  itemId: t,
209
219
  portal: e,
210
220
  relationship: { relationshipType: ["ReplacementItem2Item"], direction: "forward" }
211
221
  })).result?.relatedItems ?? [];
212
- } catch (n) {
213
- return console.error(n), [];
222
+ } catch (s) {
223
+ return console.error(s), [];
214
224
  }
215
225
  }
216
- function k(s) {
217
- return !!(s && "inRecycleBin" in s && s.inRecycleBin === !0);
226
+ function v(i) {
227
+ return i ? i.filter((e) => e.type !== "Code Attachment") : null;
218
228
  }
219
- function u(s) {
220
- return s.updatedStatus ?? s.kind;
229
+ function x(i) {
230
+ return !!(i && "inRecycleBin" in i && i.inRecycleBin === !0);
221
231
  }
222
- function h(s) {
223
- return { ...s, originalStatus: s.originalStatus ?? s.kind };
232
+ function p(i) {
233
+ return i.updatedStatus ?? i.kind;
224
234
  }
225
- function W(s, e) {
235
+ function g(i) {
236
+ return { ...i, originalStatus: i.originalStatus ?? i.kind };
237
+ }
238
+ function V(i, e) {
226
239
  return {
227
- ...s,
240
+ ...i,
228
241
  kind: e,
229
- originalStatus: s.originalStatus ?? s.kind
242
+ originalStatus: i.originalStatus ?? i.kind
230
243
  };
231
244
  }
232
- async function q(s, e) {
233
- const t = await L({
234
- itemId: s.id,
245
+ async function K(i, e) {
246
+ const t = await W({
247
+ itemId: i.id,
235
248
  portal: e,
236
249
  relationship: { direction: "forward" }
237
- }), n = await E(s, e), i = await H(s, e), a = await N(s, e), r = {
238
- usedByItems: t.result?.relatedItems ?? [],
239
- sourceData: n?.sourceData ?? null,
240
- resultData: i.resultData.items,
241
- replacementItemFor: a.length ? a : null
242
- }, { result: l, error: c } = await w({
243
- item: s,
250
+ }), s = await j(i, e), n = await z(i, e), r = await G(i, e), l = t.result?.relatedItems ?? [], o = v(l) ?? [], a = t.result?.aggregations?.total?.count, c = v(n.resultData.items), m = v(r), h = s?.sourceData, u = {
251
+ usedByItems: o,
252
+ usedByItemsCount: a == null ? o.length : Math.max(0, a - (l.length - o.length)),
253
+ sourceData: h?.type === "Code Attachment" ? null : h ?? null,
254
+ resultData: c,
255
+ replacementItemFor: m?.length ? m : null
256
+ }, { result: f, error: w } = await B({
257
+ item: i,
244
258
  portal: e,
245
259
  permanentlyDelete: !1
246
260
  });
247
- if (c)
248
- switch (c.code) {
261
+ if (w)
262
+ switch (w.code) {
249
263
  case "itemHasDependentItems":
250
- return h({
251
- item: s,
252
- ...r,
264
+ return g({
265
+ item: i,
266
+ ...u,
253
267
  kind: "cannotDelete",
254
268
  reason: "hasDependentItems"
255
269
  });
256
270
  case "itemDeleteProtected":
257
- return h({
258
- item: s,
259
- ...r,
271
+ return g({
272
+ item: i,
273
+ ...u,
260
274
  kind: "cannotDelete",
261
275
  reason: "deleteProtected"
262
276
  });
263
277
  default:
264
- return h({
265
- item: s,
266
- ...r,
278
+ return g({
279
+ item: i,
280
+ ...u,
267
281
  kind: "cannotDelete",
268
282
  reason: "uncaught"
269
283
  });
270
284
  }
271
- if (!l?.success) {
272
- const { result: o } = await w({
273
- item: s,
285
+ if (!f?.success) {
286
+ const { result: T } = await B({
287
+ item: i,
274
288
  portal: e,
275
289
  permanentlyDelete: !0
276
290
  });
277
- return o?.success ? h({
278
- item: s,
279
- ...r,
291
+ return T?.success ? g({
292
+ item: i,
293
+ ...u,
280
294
  kind: "permanentlyDelete",
281
295
  reason: "notSupported"
282
- }) : h({
283
- item: s,
284
- ...r,
296
+ }) : g({
297
+ item: i,
298
+ ...u,
285
299
  kind: "cannotDelete",
286
300
  reason: "uncaught"
287
301
  });
288
302
  }
289
- return h({ item: s, ...r, kind: "recycle" });
303
+ return g({ item: i, ...u, kind: "recycle" });
290
304
  }
291
- async function O(s, e) {
292
- const t = await Promise.all(s.map(async (n) => await q(n, e)));
293
- return j(t);
305
+ async function J(i, e) {
306
+ const t = await Promise.all(i.map(async (s) => await K(s, e)));
307
+ return Q(t);
294
308
  }
295
- function j(s) {
309
+ function Q(i) {
296
310
  const e = /* @__PURE__ */ new Map();
297
- for (const t of s)
311
+ for (const t of i)
298
312
  t.item.id && e.set(t.item.id, t);
299
- return s.map((t) => {
313
+ return i.map((t) => {
300
314
  if (t.kind !== "cannotDelete" || t.reason !== "hasDependentItems" || !t.item.id)
301
315
  return t;
302
- const i = z(t.resultData, e);
303
- if (i.length === 0)
316
+ const n = X(t.resultData, e);
317
+ if (n.length === 0)
304
318
  return t;
305
- const a = i.every((l) => e.has(l)), r = i.every((l) => !e.get(l)?.item.protected);
306
- return a && r ? W(t, "recycle") : t;
319
+ const r = n.every((o) => e.has(o)), l = n.every((o) => !e.get(o)?.item.protected);
320
+ return r && l ? V(t, "recycle") : t;
307
321
  });
308
322
  }
309
- function z(s, e, t = /* @__PURE__ */ new Set()) {
310
- if (!s?.length)
323
+ function X(i, e, t = /* @__PURE__ */ new Set()) {
324
+ if (!i?.length)
311
325
  return [];
312
- const n = s.filter((a) => !k(a)), i = /* @__PURE__ */ new Set();
313
- for (; n.length > 0; ) {
314
- const r = n.shift().id;
315
- if (!r || t.has(r))
326
+ const s = i.filter((r) => !x(r)), n = /* @__PURE__ */ new Set();
327
+ for (; s.length > 0; ) {
328
+ const l = s.shift().id;
329
+ if (!l || t.has(l))
316
330
  continue;
317
- t.add(r), i.add(r);
318
- const c = e.get(r)?.resultData ?? [];
319
- n.push(...c.filter((o) => !k(o)));
331
+ t.add(l), n.add(l);
332
+ const a = e.get(l)?.resultData ?? [];
333
+ s.push(...a.filter((c) => !x(c)));
320
334
  }
321
- return [...i];
335
+ return [...n];
322
336
  }
323
- const G = T`:host{display:block}calcite-dialog{--calcite-dialog-content-space: 0;--calcite-dialog-background-color: var(--calcite-color-background)}calcite-panel{display:flex;flex-direction:column;gap:.75rem;>*{margin-inline:.75rem}}.panel__content{width:100%;box-sizing:border-box}.bucket__content{display:flex;align-items:flex-start;gap:.75rem;width:100%}.bucket__icon{flex-shrink:0}.bucket__details{display:flex;flex:1 1 auto;flex-direction:column;min-width:0}.bucket__header{font-weight:500}.bucket__label{margin-inline-end:.25rem}.bucket__description{line-height:1.35;font-size:var(--calcite-font-size--1)}.bucket__link{display:flex;align-items:center;min-height:1.5rem}.panel__checkbox{width:100%;padding-block:.75rem;padding-inline-start:.75rem;background-color:var(--calcite-color-foreground-1)}.panel__related-items{margin-top:1rem;border:1px solid var(--calcite-color-border-2)}.panel__related-items-icon{color:var(--calcite-color-status-warning)}.panel__related-items-notice{padding-bottom:.75rem}arcgis-portal-review-related-items{margin-bottom:.75rem}.discouraged-items-warning{margin-bottom:.75rem}.header-description{font-size:var(--calcite-font-size--1);font-weight:400}`;
324
- function V({
325
- recycleItems: s,
337
+ const Y = M`:host{display:block}calcite-dialog{--calcite-dialog-content-space: 0;--calcite-dialog-background-color: var(--calcite-color-background)}calcite-panel{display:flex;flex-direction:column;gap:.75rem;>*{margin-inline:.75rem}}.panel__content{width:100%;box-sizing:border-box}.single-item-bucket{--calcite-block-background-color: transparent;--calcite-block-border-color: transparent}.bucket__content{display:flex;align-items:flex-start;gap:.75rem;width:100%}.bucket__icon{flex-shrink:0}.bucket__icon--danger{color:var(--calcite-color-status-danger)}.bucket__details{display:flex;flex:1 1 auto;flex-direction:column;min-width:0}.bucket__header{font-weight:500}.bucket__label{margin-inline-end:.25rem}.bucket__checkbox{margin-top:.5rem}.bucket__description{line-height:1.35;font-size:var(--calcite-font-size--1)}.bucket__link{display:flex;align-items:center;min-height:1.5rem}.item-link-content{position:relative;>arcgis-portal-item-type{margin-inline-end:.25rem;vertical-align:middle}}.panel__checkbox{width:100%;padding-block:.75rem;padding-inline-start:.75rem;background-color:var(--calcite-color-foreground-1)}.panel__related-items{margin-top:1rem;border:1px solid var(--calcite-color-border-2)}.panel__related-items-icon{color:var(--calcite-color-status-warning)}.panel__related-items-notice{padding-bottom:.75rem}arcgis-portal-review-related-items{margin-bottom:.75rem}.discouraged-items-warning{margin-bottom:.75rem}.header-description{font-size:var(--calcite-font-size--1);font-weight:400}`;
338
+ function Z({
339
+ recycleItems: i,
326
340
  cannotDeleteItems: e,
327
341
  permanentlyDeleteItems: t
328
342
  }) {
329
- return [...s, ...e, ...t];
343
+ return [...i, ...e, ...t];
330
344
  }
331
- function K(s) {
332
- return s.map(({ item: e, sourceData: t, resultData: n, replacementItemFor: i }) => ({
345
+ function ee(i) {
346
+ return i.map(({ item: e, sourceData: t, resultData: s, replacementItemFor: n }) => ({
333
347
  item: e,
334
348
  sourceData: t,
335
- resultData: n,
336
- replacementItemFor: i
349
+ resultData: s,
350
+ replacementItemFor: n
337
351
  }));
338
352
  }
339
- function J(s, e, t) {
340
- return !e && !!t?.length && !I(s);
353
+ function te(i, e, t) {
354
+ return !e && !!t?.length && !y(i);
341
355
  }
342
- function Q({
343
- selectedItems: s
356
+ function se({
357
+ selectedItems: i
344
358
  }) {
345
359
  const e = [];
346
360
  return e.push(
347
- ...s.flatMap(({ item: t, sourceData: n, resultData: i, replacementItemFor: a }) => {
348
- const r = J(t, n, i), l = !!(i?.some((c) => !c.inRecycleBin) && !X(t, i) && !Y(t, i));
349
- return r && l ? [{ item: t, reason: "dependent", offendingItems: i ?? void 0 }] : a && a?.length > 0 ? [{ item: t, reason: "replacement", offendingItems: a }] : [];
361
+ ...i.flatMap(({ item: t, sourceData: s, resultData: n, replacementItemFor: r }) => {
362
+ const l = te(t, s, n), o = !!(n?.some((a) => !a.inRecycleBin) && !ie(t, n) && !ne(t, n));
363
+ return l && o ? [{ item: t, reason: "dependent", offendingItems: n ?? void 0 }] : r && r?.length > 0 ? [{ item: t, reason: "replacement", offendingItems: r }] : [];
350
364
  })
351
365
  ), e;
352
366
  }
353
- function X(s, e) {
367
+ function ie(i, e) {
354
368
  const t = e[0];
355
- return s.type === "Feed" && I(s) && e.length === 1 && t?.type === "Feature Service" && I(t);
369
+ return i.type === "Feed" && y(i) && e.length === 1 && t?.type === "Feature Service" && y(t);
356
370
  }
357
- function Y(s, e) {
371
+ function ne(i, e) {
358
372
  const t = e[0];
359
- return s.type === "Feature Service" && I(s) && e.length === 1 && t?.type === "Feed" && I(t);
373
+ return i.type === "Feature Service" && y(i) && e.length === 1 && t?.type === "Feed" && y(t);
360
374
  }
361
- function S({ id: s, linkText: e, label: t, placement: n, items: i, portal: a, user: r }) {
362
- return d`<calcite-link id=${s ?? _}>${e}</calcite-link><calcite-popover .label=${t} .referenceElement=${s} .placement=${n} auto-close><calcite-list .label=${t} selection-mode=none>${i.map((l) => d`<calcite-list-item .label=${l.title ?? ""} @calciteListItemSelect=${() => {
363
- const c = l.itemPageUrl;
364
- c && window.open(c.replace("sharing/rest/", ""), "_blank", "noopener,noreferrer");
365
- }}><span slot=content-start><arcgis-portal-item-type .item=${l} .portal=${a} .user=${r} hide-text></arcgis-portal-item-type></span><span slot=content>${l.title}</span></calcite-list-item>`)}</calcite-list></calcite-popover>`;
375
+ function C({ id: i, linkText: e, label: t, placement: s, items: n, portal: r, user: l }) {
376
+ return d`<calcite-link id=${i ?? L}>${e}</calcite-link><calcite-popover .label=${t} .referenceElement=${i} .placement=${s} auto-close><calcite-list .label=${t} selection-mode=none>${n.map((o) => d`<calcite-list-item .label=${o.title ?? ""} @calciteListItemSelect=${() => {
377
+ const a = o.itemPageUrl;
378
+ a && window.open(a.replace("sharing/rest/", ""), "_blank", "noopener,noreferrer");
379
+ }}><span slot=content-start><arcgis-portal-item-type .item=${o} .portal=${r} .user=${l} hide-text></arcgis-portal-item-type></span><span slot=content>${o.title}</span></calcite-list-item>`)}</calcite-list></calcite-popover>`;
366
380
  }
367
- class Z extends x {
381
+ class re extends U {
368
382
  constructor() {
369
- super(...arguments), this.deleteStatusRequestId = 0, this.updatedCannotDeleteItemIds = /* @__PURE__ */ new Set(), this.messages = A({ blocking: !0 }), this.isLoading = !0, this.hasConfirmedReview = !1, this.hasReviewedSelectedItems = !1, this.cannotDeleteItems = [], this.recycleItems = [], this.permanentlyDeleteItems = [], this.deprecateItems = [], this.excludeItems = [], this.reviewingDirectlyUsedByItems = !1, this.reviewDecision = null, this.active = !0, this.items = [], this.user = null, this.disableLinks = !1, this.arcgisCancel = y(), this.arcgisConfirm = y(), this.arcgisError = y();
383
+ super(...arguments), this.deleteStatusRequestId = 0, this.updatedCannotDeleteItemIds = /* @__PURE__ */ new Set(), this.messages = E({ blocking: !0 }), this.isLoading = !0, this.submittingAction = null, this.loadedItems = [], this.hasConfirmedReview = !1, this.hasReviewedSelectedItems = !1, this.cannotDeleteItems = [], this.recycleItems = [], this.permanentlyDeleteItems = [], this.deprecateItems = [], this.excludeItems = [], this.reviewingDirectlyUsedByItems = !1, this.reviewDecision = null, this.active = !0, this.items = [], this.itemIds = [], this.user = null, this.disableLinks = !1, this.arcgisClose = D(), this.arcgisConfirm = D(), this.arcgisError = D();
370
384
  }
371
385
  static {
372
- this.properties = { isLoading: 16, hasConfirmedReview: 16, hasReviewedSelectedItems: 16, cannotDeleteItems: 16, recycleItems: 16, permanentlyDeleteItems: 16, deprecateItems: 16, excludeItems: 16, reviewingDirectlyUsedByItems: 16, reviewDecision: 16, active: 5, items: 0, portal: 0, user: 0, disableLinks: 5 };
386
+ this.properties = { isLoading: 16, submittingAction: 16, loadedItems: 16, hasConfirmedReview: 16, hasReviewedSelectedItems: 16, cannotDeleteItems: 16, recycleItems: 16, permanentlyDeleteItems: 16, deprecateItems: 16, excludeItems: 16, reviewingDirectlyUsedByItems: 16, reviewDecision: 16, active: 5, items: 0, itemIds: 0, portal: 0, user: 0, disableLinks: 5 };
373
387
  }
374
388
  static {
375
- this.styles = G;
389
+ this.styles = Y;
376
390
  }
377
391
  willUpdate(e) {
378
- const t = e.has("items") || e.has("portal") || e.has("user") || e.has("active");
379
- this.active && t && (this.user ??= this.portal?.user || null, this.resetState(), this.determineDeleteStatus(++this.deleteStatusRequestId));
392
+ const t = e.has("items") || e.has("itemIds") || e.has("portal") || e.has("user") || e.has("active");
393
+ this.active && t && (this.user ??= this.portal?.user || null, this.resetState(), this.initializeItems(++this.deleteStatusRequestId));
394
+ }
395
+ async initializeItems(e) {
396
+ const { items: t, itemIds: s, portal: n } = this, r = t.length ? t : await Promise.all(s.map(async (l) => await new b({ id: l, portal: n }).load()));
397
+ e === this.deleteStatusRequestId && (this.loadedItems = r, await this.determineDeleteStatus(e));
380
398
  }
381
399
  async handleReviewDecision(e) {
382
- const t = this.itemsWithImpactedItems.map(({ item: r }) => r), n = e === "delete" ? "recycle" : e === "deprecate" ? "deprecate" : "exclude", i = [...this.recycleItems, ...this.deprecateItems, ...this.excludeItems], a = e === "delete" && i.some((r) => u(r) !== "recycle" && t.some(({ id: l }) => l === r.item.id));
383
- for (const r of i) {
384
- if (!t.some(({ id: o }) => o === r.item.id))
400
+ const t = this.itemsWithImpactedItems.map(({ item: a }) => a), s = e === "delete" ? "recycle" : e === "deprecate" ? "deprecate" : "exclude", n = this.permanentlyDeleteItems.filter((a) => this.isPermanentlyDeleteOverrideActive(a)), r = this.permanentlyDeleteItems.filter((a) => !this.isPermanentlyDeleteOverrideActive(a)), l = [
401
+ ...this.recycleItems,
402
+ ...this.deprecateItems,
403
+ ...this.excludeItems,
404
+ ...n
405
+ ], o = e === "delete" && l.some((a) => p(a) !== "recycle" && t.some(({ id: c }) => c === a.item.id));
406
+ for (const a of l) {
407
+ if (!t.some(({ id: h }) => h === a.item.id))
385
408
  continue;
386
- const c = r.originalStatus ?? r.kind;
387
- r.originalStatus = c, r.updatedStatus = n;
409
+ const m = a.originalStatus ?? a.kind;
410
+ a.originalStatus = m, a.updatedStatus = s;
388
411
  }
389
412
  if (this.reviewDecision = {
390
413
  action: e,
391
414
  items: t
392
- }, this.hasConfirmedReview = !0, this.reviewingDirectlyUsedByItems = !1, this.recycleItems = i.filter((r) => u(r) === "recycle"), this.deprecateItems = i.filter((r) => u(r) === "deprecate"), this.excludeItems = i.filter((r) => u(r) === "exclude"), e !== "delete" || a) {
415
+ }, this.hasConfirmedReview = !0, this.reviewingDirectlyUsedByItems = !1, this.recycleItems = l.filter((a) => p(a) === "recycle"), this.deprecateItems = l.filter((a) => p(a) === "deprecate"), this.excludeItems = l.filter((a) => p(a) === "exclude"), this.permanentlyDeleteItems = r, e !== "delete" || o) {
393
416
  this.isLoading = !0;
394
- const r = [...this.cannotDeleteItems, ...this.recycleItems, ...this.permanentlyDeleteItems].map(({ item: l }) => l);
395
- await this.determineDeleteStatus(++this.deleteStatusRequestId, r);
417
+ const a = [...this.cannotDeleteItems, ...this.recycleItems, ...this.permanentlyDeleteItems].map(({ item: c }) => c);
418
+ await this.determineDeleteStatus(++this.deleteStatusRequestId, a);
396
419
  }
397
420
  }
421
+ async updateAllContentStatus(e, t) {
422
+ return (await Promise.all(e.map(async (n) => await q(n, t)))).flatMap(({ result: n }) => n ? [n] : []);
423
+ }
398
424
  async handleDelete() {
399
- const { result: e = [] } = await M(this.recycleItems.map(({ item: t }) => t), {
400
- restUrl: this.portal.restUrl
401
- });
402
- this.closeDialog(), this.arcgisConfirm.emit({
403
- deletedItems: e,
404
- permanentlyDeletedItems: [],
405
- deletedItemsCount: e.length,
406
- permanentlyDeletedItemsCount: 0
407
- });
425
+ if (!this.active || this.submittingAction)
426
+ return;
427
+ this.submittingAction = "delete";
428
+ const e = { restUrl: this.portal.restUrl }, { result: t = [] } = this.recycleItems.length ? await R(this.recycleItems.map(({ item: r }) => r), e) : { result: [] }, { result: s = [] } = this.permanentlyDeleteItems.length ? await R(this.permanentlyDeleteItems.map(({ item: r }) => r), e, !0) : { result: [] }, n = this.deprecateItems.length ? await this.updateAllContentStatus(this.deprecateItems.map(({ item: r }) => r), "deprecated") : null;
429
+ this.arcgisConfirm.emit({
430
+ deletedItems: t,
431
+ permanentlyDeletedItems: s,
432
+ deletedItemsCount: t.length,
433
+ permanentlyDeletedItemsCount: s.length,
434
+ deprecatedItems: n
435
+ }), this.closeDialog();
436
+ }
437
+ async handleDeprecate() {
438
+ if (!this.active || this.submittingAction)
439
+ return;
440
+ this.submittingAction = "deprecate";
441
+ const e = [...this.deprecateItems, ...this.recycleItems, ...this.permanentlyDeleteItems], t = e.length ? await this.updateAllContentStatus(e.map(({ item: s }) => s), "deprecated") : null;
442
+ this.arcgisConfirm.emit({
443
+ deletedItems: null,
444
+ permanentlyDeletedItems: null,
445
+ deletedItemsCount: 0,
446
+ permanentlyDeletedItemsCount: 0,
447
+ deprecatedItems: t
448
+ }), this.closeDialog();
408
449
  }
409
450
  handleDialogClose() {
410
- this.active && (this.closeDialog(), this.arcgisCancel.emit());
451
+ this.active && this.closeDialog();
411
452
  }
412
453
  closeDialog() {
413
- this.active = !1, this.resetState();
454
+ this.active = !1, this.resetState(), this.arcgisClose.emit();
414
455
  }
415
456
  resetState() {
416
- this.isLoading = !0, this.hasConfirmedReview = !1, this.hasReviewedSelectedItems = !1, this.cannotDeleteItems = [], this.recycleItems = [], this.permanentlyDeleteItems = [], this.deprecateItems = [], this.excludeItems = [], this.reviewingDirectlyUsedByItems = !1, this.reviewDecision = null, this.updatedCannotDeleteItemIds.clear(), ++this.deleteStatusRequestId;
457
+ this.isLoading = !0, this.submittingAction = null, this.loadedItems = [], this.hasConfirmedReview = !1, this.hasReviewedSelectedItems = !1, this.cannotDeleteItems = [], this.recycleItems = [], this.permanentlyDeleteItems = [], this.deprecateItems = [], this.excludeItems = [], this.reviewingDirectlyUsedByItems = !1, this.reviewDecision = null, this.updatedCannotDeleteItemIds.clear(), ++this.deleteStatusRequestId;
417
458
  }
418
- async determineDeleteStatus(e, t = this.items) {
419
- const n = new Set(this.recycleItems.map(({ item: a }) => a.id).filter((a) => !!a)), i = await O(t, this.portal);
459
+ async determineDeleteStatus(e, t = this.loadedItems) {
460
+ const s = new Set(this.recycleItems.map(({ item: r }) => r.id).filter((r) => !!r)), n = await J(t, this.portal);
420
461
  if (e === this.deleteStatusRequestId) {
421
- this.cannotDeleteItems = i.filter((a) => u(a) === "cannotDelete");
422
- for (const a of this.cannotDeleteItems)
423
- a.item.id && n.has(a.item.id) && this.updatedCannotDeleteItemIds.add(a.item.id);
424
- this.recycleItems = i.filter((a) => u(a) === "recycle"), this.permanentlyDeleteItems = i.filter((a) => u(a) === "permanentlyDelete"), this.isLoading = !1;
462
+ this.cannotDeleteItems = n.filter((r) => p(r) === "cannotDelete");
463
+ for (const r of this.cannotDeleteItems)
464
+ r.item.id && s.has(r.item.id) && this.updatedCannotDeleteItemIds.add(r.item.id);
465
+ this.recycleItems = n.filter((r) => p(r) === "recycle"), this.permanentlyDeleteItems = n.filter((r) => p(r) === "permanentlyDelete"), this.isLoading = !1;
425
466
  }
426
467
  }
427
468
  get itemsWithImpactedItems() {
428
- const e = new Set(this.items.map(({ id: t }) => t));
429
- return [...this.recycleItems, ...this.deprecateItems, ...this.excludeItems].map((t) => ({
469
+ const e = new Set(this.loadedItems.map(({ id: t }) => t));
470
+ return [
471
+ ...this.recycleItems,
472
+ ...this.deprecateItems,
473
+ ...this.excludeItems,
474
+ ...this.permanentlyDeleteItems.filter((t) => this.isPermanentlyDeleteOverrideActive(t))
475
+ ].map((t) => ({
430
476
  ...t,
431
- usedByItems: t.usedByItems.filter(({ id: n }) => !e.has(n))
477
+ usedByItems: t.usedByItems.filter(({ id: s }) => !e.has(s))
432
478
  })).filter(({ usedByItems: t }) => t.length > 0);
433
479
  }
434
480
  get itemsHaveImpactedItems() {
435
481
  return this.itemsWithImpactedItems.length > 0;
436
482
  }
437
483
  get itemsNeedReview() {
438
- return this.itemsWithImpactedItems.some((e) => u(e) === "recycle");
484
+ return this.itemsWithImpactedItems.some((e) => ["recycle", "permanentlyDelete"].includes(p(e)));
485
+ }
486
+ isPermanentlyDeleteOverrideActive(e) {
487
+ return e.kind === "recycle" && e.updatedStatus === "permanentlyDelete";
488
+ }
489
+ handlePermanentlyDeleteOverrideChange(e) {
490
+ if (e) {
491
+ const s = this.recycleItems.map((n) => ({
492
+ ...n,
493
+ originalStatus: n.originalStatus ?? n.kind,
494
+ updatedStatus: "permanentlyDelete"
495
+ }));
496
+ this.recycleItems = [], this.permanentlyDeleteItems = [...this.permanentlyDeleteItems, ...s];
497
+ return;
498
+ }
499
+ const t = this.permanentlyDeleteItems.filter((s) => this.isPermanentlyDeleteOverrideActive(s));
500
+ this.permanentlyDeleteItems = this.permanentlyDeleteItems.filter((s) => !this.isPermanentlyDeleteOverrideActive(s)), this.recycleItems = [
501
+ ...this.recycleItems,
502
+ ...t.map((s) => ({ ...s, updatedStatus: "recycle" }))
503
+ ];
439
504
  }
440
505
  get deleteButtonEnabled() {
441
506
  return !this.isLoading && (!this.itemsNeedReview || this.hasConfirmedReview);
@@ -452,10 +517,10 @@ class Z extends x {
452
517
  ].filter((t) => t.length > 0).length > 1 ? "mixed" : this.markedForDeprecation.length > 0 ? "deprecate" : this.permanentlyDeleteItems.length > 0 ? "permanentlyDelete" : this.recycleItems.length > 0 ? "delete" : (this.cannotDeleteItems.length > 0, "none");
453
518
  }
454
519
  getHeaderText() {
455
- return this.reviewingDirectlyUsedByItems ? this.messages.reviewItemsCount.replace("{count}", `${this.itemsWithImpactedItems.length}`) : this.items.length === 1 ? this.messages.deleteItem : this.messages.deleteItems;
520
+ return this.reviewingDirectlyUsedByItems ? this.messages.reviewItemsCount.replace("{count}", `${this.itemsWithImpactedItems.length}`) : (this.items.length ? this.items : this.itemIds).length === 1 ? this.messages.deleteItem : this.messages.deleteItems;
456
521
  }
457
522
  getHeaderDescription() {
458
- return this.items.length <= 1 ? "" : this.reviewingDirectlyUsedByItems ? this.messages.reviewItemsDescription : this.messages.selectedItems.replace("{count}", `${this.items.length}`);
523
+ return this.loadedItems.length <= 1 ? "" : this.reviewingDirectlyUsedByItems ? this.messages.reviewItemsDescription : this.messages.selectedItems.replace("{count}", `${this.loadedItems.length}`);
459
524
  }
460
525
  getConfirmButtonText() {
461
526
  switch (this.deleteMode) {
@@ -464,39 +529,41 @@ class Z extends x {
464
529
  case "deprecate":
465
530
  return this.messages.deprecate;
466
531
  case "permanentlyDelete":
467
- return this.messages.permanentlyDelete;
532
+ return this.portal.recycleBinEnabled ? this.messages.permanentlyDelete : this.messages.delete;
468
533
  case "delete":
469
534
  return this.messages.delete;
470
535
  default:
471
536
  return this.messages.delete;
472
537
  }
473
538
  }
474
- renderBucket({ icon: e, label: t, description: n, link: i, bucket: a, updated: r = !1 }) {
475
- return d`<calcite-block scale=l expanded><div class="bucket__content"><calcite-icon class="bucket__icon" scale=l .icon=${e}></calcite-icon><div class="bucket__details"><div class="bucket__header"><span class="bucket__label">${t}</span><span>${this.renderBucketItems(a)}</span></div><span class="bucket__description">${n}</span>${i && d`<div class="bucket__link"><calcite-link .href=${i.href} target=_blank icon-start=launch>${i.text ?? this.messages.moreInfo}</calcite-link></div>` || ""}</div>${r && d`<calcite-chip .label=${t}>Updated</calcite-chip>` || ""}</div></calcite-block>`;
539
+ renderBucket({ icon: e, label: t, description: s, link: n, additionalContent: r, dangerIcon: l = !1, bucket: o }) {
540
+ return d`<calcite-block class=${S({ "single-item-bucket": (this.items.length ? this.items : this.itemIds).length === 1 })} scale=l expanded><div class="bucket__content"><calcite-icon class=${S({ bucket__icon: !0, "bucket__icon--danger": l })} scale=l .icon=${e}></calcite-icon><div class="bucket__details"><div class="bucket__header"><span class="bucket__label">${t}</span><span>${this.renderBucketItems(o)}</span></div>${s && d`<span class="bucket__description">${s}</span>` || ""}${n && d`<div class="bucket__link"><calcite-link .href=${n.href} target=_blank icon-start=launch>${n.text ?? this.messages.moreInfo}</calcite-link></div>` || ""}${r}</div></div></calcite-block>`;
476
541
  }
477
542
  renderBucketItems(e = []) {
543
+ return this.renderItemLinks(e.map(({ item: t }) => t));
544
+ }
545
+ renderItemLinks(e, t = `delete-items-bucket-${e.map(({ id: s }) => s).join("-")}`) {
478
546
  if (e.length === 0)
479
547
  return null;
480
548
  if (e.length === 1) {
481
- const i = e[0].item, a = P({ portal: this.portal });
482
- return d`<calcite-link .href=${a} target=_blank><arcgis-portal-item-type .item=${i} .portal=${this.portal} .user=${this.user} hide-text></arcgis-portal-item-type>${i.title}</calcite-link>`;
549
+ const s = e[0], n = `${H({ portal: this.portal })}/item.html?id=${s.id}`;
550
+ return d`<calcite-link .href=${n} target=_blank><span class="item-link-content"><arcgis-portal-item-type .item=${s} .portal=${this.portal} .user=${this.user} hide-text></arcgis-portal-item-type><span>${s.title}</span></span></calcite-link>`;
483
551
  }
484
- const t = `delete-items-bucket-${e.map(({ item: i }) => i.id).join("-")}`, n = e.map(({ item: i }) => i);
485
- return S({
552
+ return C({
486
553
  id: t,
487
554
  linkText: e.length,
488
555
  label: this.messages.bucketItems.replace("{count}", String(e.length)),
489
556
  placement: "bottom-start",
490
- items: n,
557
+ items: e,
491
558
  portal: this.portal,
492
559
  user: this.user
493
560
  });
494
561
  }
495
562
  renderRelatedItemsPopover(e) {
496
- const t = e.flatMap(({ usedByItems: i }) => i);
497
- return e.length > 1 || t.length === 0 ? null : S({
563
+ const t = e.flatMap(({ usedByItems: n }) => n);
564
+ return e.length > 1 || t.length === 0 ? null : C({
498
565
  id: "delete-items-directly-used-by",
499
- linkText: U(this.messages._t9nLocale, this.messages.usedByOtherItems, t.length),
566
+ linkText: $(this.messages._t9nLocale, this.messages.usedByOtherItems, t.length),
500
567
  label: this.messages.usedByPopover,
501
568
  placement: "auto",
502
569
  items: t,
@@ -505,36 +572,40 @@ class Z extends x {
505
572
  });
506
573
  }
507
574
  renderDirectlyUsedByItems() {
508
- const e = V({
575
+ const e = Z({
509
576
  recycleItems: this.recycleItems,
510
577
  cannotDeleteItems: this.cannotDeleteItems,
511
578
  permanentlyDeleteItems: this.permanentlyDeleteItems
512
- }), t = e.flatMap(({ usedByItems: i }) => i), n = Q({
513
- selectedItems: K(e)
514
- });
515
- return d`${this.items.length === 1 && this.deleteMode === "delete" && n.length > 0 ? d`<div class="discouraged-items-warning"><calcite-notice kind=warning open><div slot=message>${this.messages.deleteDiscouraged}</div><calcite-link icon-end=launch slot=link>${this.messages.learnMoreAboutDeletingSourceItems}</calcite-link></calcite-notice></div>` : null}<arcgis-portal-review-related-items .sourceItem=${this.items[0] ?? null} .relatedItems=${t} .portal=${this.portal} .user=${this.user}></arcgis-portal-review-related-items>`;
579
+ }), t = this.cannotDeleteItems.find(({ reason: c }) => c === "hasDependentItems"), s = t ? t.resultData ?? [] : e.flatMap(({ usedByItems: c }) => c), n = t ? s.length : e[0]?.usedByItemsCount, r = se({
580
+ selectedItems: ee(e)
581
+ }), l = r.find(({ reason: c }) => c === "replacement"), o = l?.offendingItems ?? [], a = $(this.messages._t9nLocale, this.messages.replacementItem.isReplacementFor, o.length, { itemLink: "{itemLink}" });
582
+ return d`${this.loadedItems.length === 1 && ["delete", "permanentlyDelete"].includes(this.deleteMode) && r.length > 0 ? d`<div class="discouraged-items-warning"><calcite-notice kind=warning open><div slot=message>${l ? a.split("{itemLink}").map((c, m) => d`${m > 0 && this.renderItemLinks(o, "delete-items-replacement-for") || ""}${c}`) : this.messages.deleteDiscouraged}</div>${!l && d`<calcite-link icon-end=launch slot=link>${this.messages.learnMoreAboutDeletingSourceItems}</calcite-link>` || ""}</calcite-notice></div>` : null}${!this.cannotDeleteItems.some(({ reason: c }) => c === "deleteProtected") && d`<arcgis-portal-review-related-items .sourceItem=${this.loadedItems[0] ?? null} .relatedItems=${s} .relatedItemsCount=${n} .showDependentItems=${!!t} .portal=${this.portal} .user=${this.user}></arcgis-portal-review-related-items>` || ""}`;
516
583
  }
517
584
  renderDirectlyUsedByItemsNotice() {
518
- const e = new Set(this.itemsWithImpactedItems.flatMap(({ usedByItems: n }) => n.map(({ id: i }) => i))), t = this.messages.reviewRelatedItems.multiple.replace("{totalCount}", String(e.size));
585
+ const e = new Set(this.itemsWithImpactedItems.flatMap(({ usedByItems: s }) => s.map(({ id: n }) => n))), t = this.messages.reviewRelatedItems.multiple.replace("{totalCount}", String(e.size));
519
586
  return d`<div class="panel__related-items-notice"><calcite-notice .kind=${this.reviewDecision ? "brand" : "warning"} icon open><div slot=message>${this.reviewDecision ? this.messages.relatedItemsReviewed : t}</div><calcite-button appearance=transparent slot=actions-end @click=${() => {
520
587
  this.hasReviewedSelectedItems = !0, this.reviewingDirectlyUsedByItems = !0;
521
588
  }}>${this.messages.reviewItems}</calcite-button></calcite-notice></div>`;
522
589
  }
523
590
  renderDeleteSummary() {
524
- return d`<div class="panel__content">${this.isLoading ? d`<calcite-scrim loading></calcite-scrim>` : d`<calcite-panel>${this.renderRecycleBucket()}${this.renderDeprecateBucket()}${this.renderExcludeBucket()}${this.renderCannotDeleteBucket()}${this.renderPermanentlyDeleteBucket()}${this.items.length === 1 && this.renderDirectlyUsedByItems() || ""}${this.itemsHaveImpactedItems && d`<div>${this.items.length > 1 ? this.renderDirectlyUsedByItemsNotice() : null}</div>` || ""}</calcite-panel>`}</div>${this.itemsNeedReview && !this.hasReviewedSelectedItems && d`<calcite-checkbox slot=content-bottom class="panel__checkbox" .checked=${this.hasConfirmedReview} @calciteCheckboxChange=${(e) => {
591
+ return d`<div class="panel__content">${this.isLoading ? d`<calcite-scrim loading></calcite-scrim>` : d`<calcite-panel>${this.renderRecycleBucket()}${this.renderDeprecateBucket()}${this.renderExcludeBucket()}${this.renderCannotDeleteBucket()}${this.renderPermanentlyDeleteBucket()}${this.loadedItems.length === 1 && this.renderDirectlyUsedByItems() || ""}${this.itemsHaveImpactedItems && d`<div>${this.loadedItems.length > 1 ? this.renderDirectlyUsedByItemsNotice() : null}</div>` || ""}</calcite-panel>`}</div>${this.itemsNeedReview && !this.hasReviewedSelectedItems && d`<calcite-checkbox slot=content-bottom class="panel__checkbox" .checked=${this.hasConfirmedReview} @calciteCheckboxChange=${(e) => {
525
592
  this.hasConfirmedReview = e.target.checked;
526
- }} .labelText=${this.messages.reviewImpactedItems}></calcite-checkbox>` || ""}<calcite-button slot=footer-end appearance=outline-fill @click=${this.handleDialogClose}>${this.messages.cancel}</calcite-button>${this.deleteMode !== "none" && d`<calcite-button .disabled=${!this.deleteButtonEnabled} kind=danger slot=footer-end @click=${async () => await this.handleDelete()}>${this.getConfirmButtonText()}</calcite-button>` || ""}`;
593
+ }} .label=${this.messages.proceedWithDeletion} .labelText=${this.messages.proceedWithDeletion} required></calcite-checkbox>` || ""}${!this.isLoading && d`${this.loadedItems.length === 1 && F(this.loadedItems[0]).contentStatus !== "deprecated" && d`<calcite-button slot=footer-start kind=danger appearance=outline-fill .disabled=${!!this.submittingAction} .loading=${this.submittingAction === "deprecate"} @click=${this.handleDeprecate}>${this.messages.deprecateInstead}</calcite-button>` || ""}<calcite-button slot=footer-end appearance=outline-fill @click=${this.handleDialogClose}>${this.messages.cancel}</calcite-button>${this.deleteMode !== "none" && d`<calcite-button .disabled=${!this.deleteButtonEnabled || !!this.submittingAction} .loading=${this.submittingAction === "delete"} kind=danger slot=footer-end @click=${async () => await this.handleDelete()}>${this.getConfirmButtonText()}</calcite-button>` || ""}` || ""}`;
527
594
  }
528
595
  renderReviewItems() {
529
596
  return d`<div class="panel__content"><calcite-panel><arcgis-portal-delete-items-review .items=${this.itemsWithImpactedItems} .portal=${this.portal} .user=${this.user}></arcgis-portal-delete-items-review></calcite-panel></div><calcite-button slot=footer-start appearance=solid kind=neutral @click=${async () => await this.handleReviewDecision("exclude")}>${this.messages.exclude}</calcite-button><calcite-button slot=footer-end appearance=outline-fill kind=danger @click=${async () => await this.handleReviewDecision("deprecate")}>${this.messages.deprecateInstead}</calcite-button><calcite-button slot=footer-end appearance=solid kind=danger @click=${async () => await this.handleReviewDecision("delete")}>${this.messages.proceedToDelete}</calcite-button>`;
530
597
  }
531
598
  renderRecycleBucket() {
532
- return !this.recycleItems || this.recycleItems.length === 0 ? null : this.renderBucket({
533
- icon: "recycle-bin",
534
- label: this.messages.summary.willBeRecycled,
535
- description: this.messages.summary.canBeRecovered.single.replace("{days}", "14"),
536
- updated: this.recycleItems.some(({ kind: e, updatedStatus: t }) => t === "recycle" && t !== e),
537
- bucket: this.recycleItems
599
+ if (!this.recycleItems || this.recycleItems.length === 0)
600
+ return null;
601
+ const e = !this.portal.recycleBinEnabled;
602
+ return this.renderBucket({
603
+ icon: e ? "trash" : "recycle-bin",
604
+ label: e ? this.messages.summary.permanentDelete.delete : this.messages.summary.willBeRecycled,
605
+ description: e ? this.messages.summary.permanentDelete.default.single : this.messages.summary.canBeRecovered.single.replace("{days}", "14"),
606
+ updated: this.recycleItems.some(({ kind: t, updatedStatus: s }) => s === "recycle" && s !== t),
607
+ bucket: this.recycleItems,
608
+ additionalContent: e ? void 0 : d`<calcite-checkbox class="bucket__checkbox" .label=${this.messages.permanentlyDeleteInstead} .labelText=${this.messages.permanentlyDeleteInstead} @calciteCheckboxChange=${(t) => this.handlePermanentlyDeleteOverrideChange(t.target.checked)}></calcite-checkbox>`
538
609
  });
539
610
  }
540
611
  renderDeprecateBucket() {
@@ -558,29 +629,34 @@ class Z extends x {
558
629
  renderCannotDeleteBucket() {
559
630
  if (!this.cannotDeleteItems || this.cannotDeleteItems.length === 0)
560
631
  return null;
561
- const e = this.cannotDeleteItems?.[0]?.reason;
632
+ const e = this.cannotDeleteItems?.[0]?.reason, t = this.cannotDeleteItems[0]?.resultData?.length ?? 0, s = this.messages.summary.protectedGroup.hasDependentItemsDescription;
562
633
  return this.renderBucket({
563
634
  icon: "security",
564
635
  label: this.messages.summary.cannotDelete,
565
- description: e === "hasDependentItems" ? this.messages.summary.protectedGroup.hasDependentItemsDescription.singleOneDependentItem : this.messages.summary.protectedGroup.deleteProtectedDescription,
636
+ description: e === "hasDependentItems" ? t > 1 ? s.singleMultipleDependentItems : s.singleOneDependentItem : this.messages.summary.protectedGroup.deleteProtectedDescription,
566
637
  bucket: this.cannotDeleteItems,
567
- updated: this.cannotDeleteItems.some(({ item: t }) => t.id && this.updatedCannotDeleteItemIds.has(t.id))
638
+ updated: this.cannotDeleteItems.some(({ item: n }) => n.id && this.updatedCannotDeleteItemIds.has(n.id))
568
639
  });
569
640
  }
570
641
  renderPermanentlyDeleteBucket() {
571
- return !this.permanentlyDeleteItems || this.permanentlyDeleteItems.length === 0 ? null : this.renderBucket({
642
+ if (!this.permanentlyDeleteItems || this.permanentlyDeleteItems.length === 0)
643
+ return null;
644
+ const e = !this.portal.recycleBinEnabled;
645
+ return this.renderBucket({
572
646
  icon: "trash",
573
- label: this.messages.summary.permanentlyDelete,
574
- description: this.messages.summary.permanentDelete.notSupported.single,
575
- bucket: this.permanentlyDeleteItems
647
+ label: e ? this.messages.summary.permanentDelete.delete : this.messages.summary.permanentlyDelete,
648
+ description: e ? this.messages.summary.permanentDelete.default.single : this.permanentlyDeleteItems.some((t) => this.isPermanentlyDeleteOverrideActive(t)) ? null : this.messages.summary.permanentDelete.notSupported.single,
649
+ bucket: this.permanentlyDeleteItems,
650
+ dangerIcon: this.permanentlyDeleteItems.some((t) => this.isPermanentlyDeleteOverrideActive(t)),
651
+ additionalContent: !e && this.permanentlyDeleteItems.some((t) => this.isPermanentlyDeleteOverrideActive(t)) ? d`<calcite-checkbox class="bucket__checkbox" checked .label=${this.messages.permanentlyDeleteInstead} .labelText=${this.messages.permanentlyDeleteInstead} @calciteCheckboxChange=${(t) => this.handlePermanentlyDeleteOverrideChange(t.target.checked)}></calcite-checkbox>` : void 0
576
652
  });
577
653
  }
578
654
  render() {
579
- const { items: e, portal: t } = this;
655
+ const { loadedItems: e, portal: t } = this;
580
656
  return !e || !t ? null : d`<calcite-dialog modal .open=${this.active} width=s .heading=${this.getHeaderText()} heading-level=2 outside-close-disabled escape-disabled kind=danger @calciteDialogClose=${this.handleDialogClose}><div slot=heading><span>${this.getHeaderText()}</span><br><span class="header-description">${this.getHeaderDescription()}</span></div>${this.reviewingDirectlyUsedByItems ? this.renderReviewItems() : this.renderDeleteSummary()}</calcite-dialog>`;
581
657
  }
582
658
  }
583
- B("arcgis-portal-delete-items", Z);
659
+ P("arcgis-portal-delete-items", re);
584
660
  export {
585
- Z as ArcgisPortalDeleteItems
661
+ re as ArcgisPortalDeleteItems
586
662
  };