@arcgis/coding-components 5.2.0-next.136 → 5.2.0-next.137

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 (45) hide show
  1. package/dist/cdn/7GVCXLAE.js +2 -0
  2. package/dist/cdn/{WHOYO2EQ.js → BPCBI4SE.js} +3 -3
  3. package/dist/cdn/EQDKZIAP.js +2 -0
  4. package/dist/cdn/GDTEFKCP.js +2 -0
  5. package/dist/cdn/GJ4W3JPG.js +2 -0
  6. package/dist/cdn/J7TSCCXO.js +6 -0
  7. package/dist/cdn/JFO2HVZ6.js +2 -0
  8. package/dist/cdn/JGRWZYW5.js +3 -0
  9. package/dist/cdn/N56B3UDM.js +2 -0
  10. package/dist/cdn/{FFLWFFHU.js → OMJLVFHT.js} +1 -1
  11. package/dist/cdn/{YJ4WRZOI.js → ZJCPZ5ZN.js} +1 -1
  12. package/dist/cdn/assets/arcade-debugger-output/t9n/messages.en.json +1 -1
  13. package/dist/cdn/assets/code-editor/sql-expr.worker.js +4585 -4421
  14. package/dist/cdn/index.js +1 -1
  15. package/dist/chunks/arcade-defaults.js +95 -102
  16. package/dist/chunks/setup-monaco-theme.js +34 -67
  17. package/dist/chunks/sql-expr-mode.js +73 -61
  18. package/dist/chunks/sql-expr-service-accessors.js +35 -2
  19. package/dist/components/arcgis-arcade-coding-assistant/customElement.js +22 -23
  20. package/dist/components/arcgis-arcade-debugger-output/customElement.js +8 -8
  21. package/dist/components/arcgis-arcade-editor/customElement.d.ts +12 -1
  22. package/dist/components/arcgis-arcade-editor/customElement.js +104 -104
  23. package/dist/components/arcgis-code-editor/customElement.js +12 -11
  24. package/dist/components/arcgis-code-viewer/customElement.js +2 -1
  25. package/dist/components/arcgis-sql-expression-editor/customElement.d.ts +2 -0
  26. package/dist/components/arcgis-sql-expression-editor/customElement.js +13 -7
  27. package/dist/components/types.d.ts +11 -0
  28. package/dist/docs/api.json +1 -1
  29. package/dist/docs/docs.json +1 -1
  30. package/dist/docs/vscode.html-custom-data.json +1 -1
  31. package/dist/docs/web-types.json +1 -1
  32. package/dist/loader.js +6 -6
  33. package/dist/types/lumina.d.ts +1 -1
  34. package/dist/types/preact.d.ts +1 -1
  35. package/dist/types/react.d.ts +1 -1
  36. package/dist/types/stencil.d.ts +1 -1
  37. package/package.json +7 -7
  38. package/dist/cdn/DBAL7LSK.js +0 -2
  39. package/dist/cdn/EDJMOEXG.js +0 -2
  40. package/dist/cdn/FQWGIGBG.js +0 -2
  41. package/dist/cdn/M4ASZPOM.js +0 -2
  42. package/dist/cdn/SQQXRZAR.js +0 -2
  43. package/dist/cdn/XMKMX4RT.js +0 -2
  44. package/dist/cdn/XUI74PBQ.js +0 -2
  45. package/dist/cdn/YCA4A2EF.js +0 -6
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import { languages as h, Emitter as T } from "monaco-editor";
2
+ import { languages as l, Emitter as S } from "monaco-editor";
3
3
  import "monaco-editor/editor/standalone/browser/standaloneServices.js";
4
4
  import "monaco-editor/editor/standalone/common/standaloneTheme.js";
5
5
  import "monaco-editor/platform/hover/browser/hover.js";
@@ -8,13 +8,13 @@ import "monaco-editor/editor/common/languages/supports/tokenization.js";
8
8
  import "monaco-editor/base/browser/dom.js";
9
9
  import "monaco-editor/editor/browser/editorDom.js";
10
10
  import "monaco-editor/editor/browser/controller/mouseTarget.js";
11
- import { i as E } from "./monaco-importer.js";
11
+ import { i as h } from "./monaco-importer.js";
12
12
  import { a as d } from "./sql-expr-defaults.js";
13
- import { debounce as S } from "@arcgis/toolkit/function";
14
- import { rethrowError as g } from "@arcgis/toolkit/log";
13
+ import { debounce as T } from "@arcgis/toolkit/function";
14
+ import { rethrowError as u } from "@arcgis/toolkit/log";
15
15
  import { g as f } from "./sql-expr-service-accessors.js";
16
- let p = Promise.withResolvers();
17
- class _ {
16
+ let E = Promise.withResolvers();
17
+ class m {
18
18
  constructor(e) {
19
19
  this._defaults = e, this._worker = null, this._client = null, this._configChangeListener = this._defaults.onDidChange(() => this.stopWorker());
20
20
  }
@@ -22,27 +22,27 @@ class _ {
22
22
  this._configChangeListener.dispose(), this.stopWorker();
23
23
  }
24
24
  stopWorker() {
25
- this._worker && (this._worker.dispose(), this._worker = null, p = Promise.withResolvers()), this._client = null;
25
+ this._worker && (this._worker.dispose(), this._worker = null, E = Promise.withResolvers()), this._client = null;
26
26
  }
27
27
  /**
28
28
  * Wait for the worker to be ready.
29
29
  * @returns A promise that resolves when the worker is ready.
30
30
  */
31
31
  static async waitForWorker() {
32
- return await p.promise;
32
+ return await E.promise;
33
33
  }
34
34
  async _getClientProxy() {
35
- const e = await E();
35
+ const e = await h();
36
36
  if (!this._client) {
37
- const { languageId: t } = this._defaults, i = window.MonacoEnvironment?.getWorker;
38
- if (!i)
37
+ const { languageId: t } = this._defaults, r = window.MonacoEnvironment?.getWorker;
38
+ if (!r)
39
39
  throw new Error(
40
40
  "MonacoEnvironment.getWorker is not configured. Call setupMonacoEnvironment(...) before creating SQL Expression workers."
41
41
  );
42
42
  this._worker = e.createWebWorker({
43
- worker: i("SqlExprWorker", t),
43
+ worker: r("SqlExprWorker", t),
44
44
  host: this._defaults.workerHost
45
- }), p.resolve(this._worker), this._client = this._worker.getProxy();
45
+ }), E.resolve(this._worker), this._client = this._worker.getProxy();
46
46
  }
47
47
  return await this._client;
48
48
  }
@@ -145,7 +145,7 @@ const N = [
145
145
  "SUBSTRING",
146
146
  "TRIM",
147
147
  "UPPER"
148
- ], R = {
148
+ ], x = {
149
149
  comments: {
150
150
  lineComment: "--",
151
151
  blockComment: ["/*", "*/"]
@@ -169,7 +169,7 @@ const N = [
169
169
  { open: '"', close: '"' },
170
170
  { open: "'", close: "'" }
171
171
  ]
172
- }, x = {
172
+ }, R = {
173
173
  defaultToken: "",
174
174
  tokenPostfix: ".arcgis",
175
175
  ignoreCase: !0,
@@ -252,91 +252,100 @@ class M {
252
252
  }
253
253
  async provideCompletionItems(e, t) {
254
254
  try {
255
- const i = await this._worker(e.uri), n = e.getWordUntilPosition(t), s = {
255
+ const r = await this._worker(e.uri), i = e.getWordUntilPosition(t), s = {
256
256
  startLineNumber: t.lineNumber,
257
257
  endLineNumber: t.lineNumber,
258
- startColumn: n.startColumn,
259
- endColumn: n.endColumn
258
+ startColumn: i.startColumn,
259
+ endColumn: i.endColumn
260
260
  }, c = this._defaults.getApiContextForModel(e.uri);
261
- return await i.doComplete(e.uri.toString(), s, t, c);
262
- } catch (i) {
263
- return g("SqlExprCompletionProvider")(i), { suggestions: [] };
261
+ return await r.doComplete(e.uri.toString(), s, t, c);
262
+ } catch (r) {
263
+ return u("SqlExprCompletionProvider")(r), { suggestions: [] };
264
264
  }
265
265
  }
266
266
  }
267
+ class D {
268
+ constructor(e) {
269
+ this._worker = e;
270
+ }
271
+ async provideDocumentFormattingEdits(e) {
272
+ const t = await this._worker(e.uri), i = (await h()).tokenize(e.getValue(), e.getLanguageId());
273
+ return await t.doFormat(e.uri.toString(), i);
274
+ }
275
+ }
267
276
  class b {
268
277
  constructor(e, t, {
269
- defaults: i,
270
- diagnosticService: n
278
+ defaults: r,
279
+ diagnosticService: i
271
280
  }) {
272
- this._languageId = e, this._worker = t, this._disposables = [], this._modelListeners = /* @__PURE__ */ new Map(), this._diagnosticsService = n, this._defaults = i, E().then((s) => {
281
+ this._languageId = e, this._worker = t, this._disposables = [], this._modelListeners = /* @__PURE__ */ new Map(), this._diagnosticsService = i, this._defaults = r, h().then((s) => {
273
282
  const c = (o) => {
274
- const r = o.getLanguageId();
275
- if (r !== this._languageId)
283
+ const n = o.getLanguageId();
284
+ if (n !== this._languageId)
276
285
  return;
277
- const l = S(() => {
278
- this._doValidate(o, r).catch((I) => {
286
+ const g = T(() => {
287
+ this._doValidate(o, n).catch((I) => {
279
288
  throw I;
280
289
  });
281
- }), w = o.onDidChangeContent(l), C = o.onDidChangeAttached(l);
282
- this._modelListeners.set(o.uri.toString(), [w, C]), this._doValidate(o, r).catch(g("SqlExprDiagnosticsAdapter"));
283
- }, u = (o) => {
284
- const r = o.uri.toString();
290
+ }), _ = o.onDidChangeContent(g), C = o.onDidChangeAttached(g);
291
+ this._modelListeners.set(o.uri.toString(), [_, C]), this._doValidate(o, n).catch(u("SqlExprDiagnosticsAdapter"));
292
+ }, p = (o) => {
293
+ const n = o.uri.toString();
285
294
  s.setModelMarkers(o, this._languageId, []);
286
- const l = this._modelListeners.get(r);
287
- if (l) {
288
- for (; l.length; )
289
- l.pop()?.dispose();
290
- this._modelListeners.delete(r);
295
+ const g = this._modelListeners.get(n);
296
+ if (g) {
297
+ for (; g.length; )
298
+ g.pop()?.dispose();
299
+ this._modelListeners.delete(n);
291
300
  }
292
301
  };
293
- this._disposables.push(s.onDidCreateModel(c)), this._disposables.push(s.onWillDisposeModel((o) => u(o))), this._disposables.push(
302
+ this._disposables.push(s.onDidCreateModel(c)), this._disposables.push(s.onWillDisposeModel((o) => p(o))), this._disposables.push(
294
303
  s.onDidChangeModelLanguage((o) => {
295
- u(o.model), c(o.model);
304
+ p(o.model), c(o.model);
296
305
  })
297
306
  ), this._disposables.push(
298
- i.onDidChange(() => {
307
+ r.onDidChange(() => {
299
308
  s.getModels().forEach((o) => {
300
- o.getLanguageId() === this._languageId && (u(o), c(o));
309
+ o.getLanguageId() === this._languageId && (p(o), c(o));
301
310
  });
302
311
  })
303
312
  ), this._disposables.push(
304
- i.onModelContextDidChange((o) => {
305
- s.getModels().forEach((r) => {
306
- r.getLanguageId() === this._languageId && r.uri.toString() === o && this._doValidate(r, this._languageId).catch(g("SqlExprDiagnosticsAdapter"));
313
+ r.onModelContextDidChange((o) => {
314
+ s.getModels().forEach((n) => {
315
+ n.getLanguageId() === this._languageId && n.uri.toString() === o && this._doValidate(n, this._languageId).catch(u("SqlExprDiagnosticsAdapter"));
307
316
  });
308
317
  })
309
318
  ), this._disposables.push({
310
319
  dispose: () => {
311
- this._modelListeners.forEach((o) => o.forEach((r) => r.dispose())), this._modelListeners.clear();
320
+ this._modelListeners.forEach((o) => o.forEach((n) => n.dispose())), this._modelListeners.clear();
312
321
  }
313
322
  }), s.getModels().forEach(c);
314
323
  });
315
324
  }
316
325
  async _doValidate(e, t) {
317
- const i = await E();
326
+ const r = await h();
318
327
  if (e.isAttachedToEditor())
319
328
  try {
320
- const n = await this._worker(e.uri), s = this._defaults.getApiContextForModel(e.uri), c = await n.doValidation(e.uri.toString(), s);
321
- this._diagnosticsService.fireDiagnosticsChange(e.uri, c), i.setModelMarkers(e, t, c);
322
- } catch (n) {
323
- g("SqlExprDiagnosticsAdapter")(n);
329
+ const i = await this._worker(e.uri), s = this._defaults.getApiContextForModel(e.uri), c = await i.doValidation(e.uri.toString(), s);
330
+ this._diagnosticsService.fireDiagnosticsChange(e.uri, c), r.setModelMarkers(e, t, c);
331
+ } catch (i) {
332
+ u("SqlExprDiagnosticsAdapter")(i);
324
333
  }
325
334
  }
326
335
  }
327
- let m;
336
+ let w;
328
337
  async function Z(...a) {
329
- return await _.waitForWorker(), await new Promise((e, t) => {
330
- if (!m) {
338
+ return await m.waitForWorker(), await new Promise((e, t) => {
339
+ if (!w) {
331
340
  t(new Error("sql expression worker not registered!"));
332
341
  return;
333
342
  }
334
- e(m(...a));
343
+ e(w(...a));
335
344
  });
336
345
  }
337
- class D {
346
+ class O {
338
347
  constructor() {
339
- this._onDiagnosticsChange = new T();
348
+ this._onDiagnosticsChange = new S();
340
349
  }
341
350
  /**
342
351
  * An event to signal changes to the diagnostics.
@@ -354,15 +363,18 @@ class D {
354
363
  this._onDiagnosticsChange.fire({ uri: e, diagnostics: t });
355
364
  }
356
365
  }
357
- const k = new D();
366
+ const k = new O();
358
367
  async function X() {
359
368
  return await f(), k;
360
369
  }
361
370
  function $(a) {
362
- const e = new _(a), t = async (...n) => await e.getLanguageServiceWorker(...n);
363
- m = t, h.setMonarchTokensProvider(d.languageId, x), h.setLanguageConfiguration(d.languageId, R);
364
- const i = new M(t, d);
365
- h.registerCompletionItemProvider(d.languageId, i), new b(a.languageId, t, {
371
+ const e = new m(a), t = async (...i) => await e.getLanguageServiceWorker(...i);
372
+ w = t, l.setMonarchTokensProvider(d.languageId, R), l.setLanguageConfiguration(d.languageId, x);
373
+ const r = new M(t, d);
374
+ l.registerCompletionItemProvider(d.languageId, r), l.registerDocumentFormattingEditProvider(
375
+ d.languageId,
376
+ new D(t)
377
+ ), new b(a.languageId, t, {
366
378
  defaults: a,
367
379
  diagnosticService: k
368
380
  });
@@ -1,7 +1,40 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- async function t() {
2
+ import { i as a } from "./monaco-importer.js";
3
+ import { Uri as n } from "monaco-editor";
4
+ const i = [
5
+ "arcade",
6
+ "arcgis-sql-expression",
7
+ "sql-layer-sql-server",
8
+ "sql-layer-postgres",
9
+ "sql-layer-bigquery"
10
+ ], s = /* @__PURE__ */ new Set(), t = /* @__PURE__ */ new Map();
11
+ function o(e) {
12
+ let r = t.get(e);
13
+ return r || (r = Promise.withResolvers(), t.set(e, r)), r;
14
+ }
15
+ function g(e) {
16
+ o(e).resolve();
17
+ }
18
+ function m(e) {
19
+ return i.includes(e) ? o(e).promise : Promise.resolve();
20
+ }
21
+ function f(e, r) {
22
+ return () => {
23
+ s.has(e) || s.add(e), r();
24
+ };
25
+ }
26
+ async function l(e) {
27
+ if (s.has(e))
28
+ return;
29
+ (await a()).createModel("", e, n.parse("")).dispose();
30
+ }
31
+ async function p() {
3
32
  return await import("./sql-expr-mode.js");
4
33
  }
5
34
  export {
6
- t as g
35
+ f as a,
36
+ p as g,
37
+ g as m,
38
+ l as s,
39
+ m as w
7
40
  };
@@ -22,6 +22,7 @@ import { s as ye } from "../../chunks/fields.js";
22
22
  import { l as ee, m as te, n as we } from "../../chunks/utils2.js";
23
23
  import xe from "@arcgis/core/core/Accessor.js";
24
24
  import { property as b, subclass as $e } from "@arcgis/core/core/accessorSupport/decorators.js";
25
+ import "@arcgis/toolkit/type";
25
26
  const ke = ne`:host(:not([closed])){container-type:size;--calcite-block-border-color: var(--calcite-color-transparent);box-sizing:border-box;.submission-actions-wrapper{display:flex;flex-direction:column;width:100%;gap:.75rem}.submission-actions{display:flex;flex-direction:row;gap:.5rem;justify-content:space-between}@container (max-width: 380px){.hidden-below-380{display:none}}@container (min-width: 380px){.hidden-above-380{display:none}}.gaps{display:flex;gap:.25rem}.align-inline-end{margin-inline-start:auto}.context-popover p{padding:0 .5rem;font-size:var(--calcite-font-size-sm)}.feedback-content{padding:var(--calcite-spacing-sm);display:flex;flex-direction:column;max-height:75cqb;overflow-y:auto;>*{margin-block-end:.5rem}>*:last-child,.terms-label{margin-block-end:0}calcite-text-area{--calcite-text-area-min-height: 4rem}calcite-notice{margin-block-start:0}}.feedback-sheet{--calcite-sheet-height: auto;--calcite-sheet-max-height: 100%;--calcite-sheet-min-height: auto}.feedback-footer{display:flex;justify-content:flex-end;gap:.5rem;width:100%}calcite-chip[slot=header-actions-end]{align-self:center;margin-inline-end:.5rem}calcite-flow-item calcite-shell{background:transparent}calcite-block{width:100%;max-width:100%;align-self:flex-end;background-color:transparent;margin-block:0}calcite-dialog{--calcite-dialog-content-space: initial;--calcite-dialog-size-y: initial}calcite-sheet{--calcite-sheet-scrim-background: rgba(200, 200, 200, .5)}calcite-list-item calcite-button{margin-inline-end:.25rem}calcite-flow-item calcite-shell calcite-notice{margin-block:1rem}calcite-block[open]:last-of-type{border-block-end:0}.text-area-wrapper{display:flex;border-radius:var(--calcite-corner-radius-round);margin:.75rem;overflow:hidden;--calcite-color-border-input: transparent;position:sticky;box-shadow:var(--calcite-shadow-sm);flex:none;flex-direction:column}calcite-text-area{height:auto;overflow:hidden;--calcite-font-weight-normal: 500;font-weight:500;line-height:1.2}calcite-flow{height:100%}calcite-popover calcite-list{--calcite-list-background-color: transparent;--calcite-input-border-color: transparent}calcite-popover calcite-list calcite-filter{--calcite-spacing-sm: 0}.contained-popover-or-tooltip{--calcite-popover-max-size-x: 100%;--calcite-tooltip-max-size-x: 100%}.info-heading{font-size:var(--calcite-font-size-0);color:var(--calcite-color-text-1);margin:0}.info-heading-row{display:flex;align-items:center;gap:var(--calcite-spacing-sm);flex-wrap:wrap}.unstyled-h3{margin:unset;font-size:var(--calcite-font-size-md)}.unstyled-shell{position:unset;inset:unset;display:unset;block-size:unset;inline-size:unset}.suggestion-button{font-weight:var(--calcite-font-weight-medium)}.suggestions{display:flex;flex-direction:row;gap:var(--calcite-spacing-xs);flex-wrap:wrap}.info-block{max-width:450px}#result-block{calcite-card-group{--calcite-card-group-gap: 1.25rem}calcite-card{--calcite-card-corner-radius: var(--calcite-corner-radius-round);--calcite-card-border-color: transparent;width:100%}.positioned-code-content{display:flex;flex-direction:row;gap:.5rem;padding:.5rem}calcite-card [slot=heading] calcite-chip{margin-block-start:.25rem}.code-response-wrapper{position:relative;background:var(--calcite-color-foreground-2);border-radius:var(--calcite-corner-radius-round);margin-top:-1.5rem}.prior-prompt{display:flex;flex-direction:row;padding:0;overflow-y:hidden;overflow-x:auto;margin:.25rem 0 .75rem;align-items:center;max-width:100%;span{overflow-x:auto;overflow-y:hidden}}.copy-feedback{display:none}.copy-prompt-button{align-self:flex-start;margin-inline-start:auto}.response-secondary-action-button[data-copied]+.copy-feedback,.copy-prompt-button[data-copied]+.copy-feedback{display:block;span{padding:.75rem 1rem;font-size:var(--calcite-font-size--2);line-height:1.375;color:var(--calcite-color-text--2);font-weight:var(--calcite-font-weight-medium)}}.copy-prompt-button[data-copied]~.copy-tooltip,.response-secondary-action-button[data-copied]~.copy-tooltip{display:none}code{white-space:pre;font-size:12px;margin:0;overflow-x:auto;font-family:Fira Mono,Consolas,Menlo,monospace;display:block;max-height:12rem;position:relative;padding:.5rem}.response-secondary-action-button{margin-left:.5rem}.add-to-editor-button{--calcite-internal-button-border-color: unset}}.collapsible-code{padding:.5rem}.collapsible-code summary{cursor:pointer;font-weight:500;color:var(--calcite-color-brand);outline:none;padding:.25rem 0}.collapsible-code[open] summary{color:var(--calcite-color-text-2)}.response-error-container{padding:.5rem;background:color-mix(in srgb,var(--calcite-color-status-warning) 10%,transparent);border-radius:var(--calcite-corner-radius-round);margin:1rem 0;font-size:var(--calcite-font-size--2);--calcite-input-message-icon-color: var(--calcite-color-status-warning)}.response-error-chip{--calcite-internal-chip-background-color: var(--calcite-color-status-warning);--calcite-chip-icon-color: var(--calcite-color-foreground-1);--calcite-chip-border-color: var(--calcite-color-transparent)}.feedback-actions{gap:unset}.contained{max-width:100%;max-height:100%;max-width:100cqi;max-height:75cqb;overflow-y:auto}.submission-notice{--calcite-notice-border-color: transparent;margin-block:0;width:100%;--calcite-font-size-relative-base: var(--calcite-font-size--2)}.border-block-end{border-block-end:1px solid var(--calcite-color-border-3)}.round-top{border-radius:var(--calcite-corner-radius-round) var(--calcite-corner-radius-round) 0 0}}:host([closed]){display:none}`;
26
27
  class A extends Error {
27
28
  constructor({
@@ -452,8 +453,8 @@ function Je(i) {
452
453
  function Qe(i) {
453
454
  return M(i) > je;
454
455
  }
455
- var We = Object.defineProperty, Ye = Object.getOwnPropertyDescriptor, f = (i, e, t, o) => {
456
- for (var s = o > 1 ? void 0 : o ? Ye(e, t) : e, n = i.length - 1, r; n >= 0; n--)
456
+ var We = Object.defineProperty, Ke = Object.getOwnPropertyDescriptor, f = (i, e, t, o) => {
457
+ for (var s = o > 1 ? void 0 : o ? Ke(e, t) : e, n = i.length - 1, r; n >= 0; n--)
457
458
  (r = i[n]) && (s = (o ? r(e, t, s) : r(s)) || s);
458
459
  return o && s && We(e, t, s), s;
459
460
  };
@@ -498,7 +499,7 @@ f([
498
499
  h = f([
499
500
  $e("ArcadeAssistantViewState")
500
501
  ], h);
501
- const Ke = "arcade_generation", Xe = "ArcadeCodeRequest", W = "visualization", Y = "ArcadeAssistant", Ze = [
502
+ const Ye = "arcade-assistant-reference-doc", Xe = "arcade_generation", Ze = "ArcadeCodeRequest", W = "visualization", K = "ArcadeAssistant", et = [
502
503
  "your_comments",
503
504
  "user_evaluation",
504
505
  "question",
@@ -512,8 +513,8 @@ const Ke = "arcade_generation", Xe = "ArcadeCodeRequest", W = "visualization", Y
512
513
  "conversation_id",
513
514
  "privacy_statement"
514
515
  ];
515
- let K = [], X = !0;
516
- class et extends ce {
516
+ let Y = [], X = !0;
517
+ class tt extends ce {
517
518
  constructor() {
518
519
  super(...arguments), this.textAreaRef = de(), this.messages = ue(), this._feedbackService = void 0, this.viewState = new h(), this.handleFeedbackButton = (e, t) => {
519
520
  this.updateViewState({
@@ -551,7 +552,7 @@ class et extends ce {
551
552
  question: c ?? "",
552
553
  answer: this.encodeForFeedback(a),
553
554
  useragent: navigator.userAgent,
554
- _source: Y,
555
+ _source: K,
555
556
  version: this.appVersion || s || "NOT_SET",
556
557
  context: o ? JSON.stringify({
557
558
  ...o,
@@ -581,7 +582,7 @@ class et extends ce {
581
582
  }, this.helpBase = "", this.promptingEnabled = !1, this.closed = !1, this.isDevEnv = !1, this.disableQuestionAnswerLogging = !1;
582
583
  }
583
584
  static {
584
- this.properties = { closePanel: 0, insertText: 0, helpBase: 1, promptingEnabled: 5, portalUrl: 1, serviceUrl: 1, closed: 7, editorRef: 0, feedbackServiceUrl: 1, isDevEnv: 5, appVersion: 1, diagnostics: 0, disableQuestionAnswerLogging: 5 };
585
+ this.properties = { closePanel: 0, insertText: 0, helpBase: 1, promptingEnabled: 5, portalUrl: 1, serviceUrl: 1, closed: 7, editorRef: 0, feedbackServiceUrl: 1, isDevEnv: 5, appVersion: 1, diagnostics: 0, docsConfig: 0, disableQuestionAnswerLogging: 5 };
585
586
  }
586
587
  static {
587
588
  this.styles = ke;
@@ -590,11 +591,9 @@ class et extends ce {
590
591
  return `// ${this.messages.disclaimercomment}
591
592
  // ${this.messages.disclaimerpt2 ?? "AI-generated content may be inaccurate. Review before using."}`;
592
593
  }
593
- get assistantOverviewDocUrl() {
594
- return `${this.helpBase ?? "https://doc.arcgis.com/en/arcgis-online/"}create-maps/understand-arcade-assistant.htm`;
595
- }
596
- get usingTheAssitantDocUrl() {
597
- return `${this.helpBase ?? "https://doc.arcgis.com/en/arcgis-online/"}create-maps/understand-arcade-assistant.htm`;
594
+ get helpTopicUrl() {
595
+ const e = this.docsConfig?.links[Ye];
596
+ return e || `${this.helpBase || "https://doc.arcgis.com/en/arcgis-online/"}create-maps/understand-arcade-assistant.htm`;
598
597
  }
599
598
  async openPrompt(e) {
600
599
  if (this.closed = !1, !this.promptingEnabled)
@@ -609,7 +608,7 @@ class et extends ce {
609
608
  async destroy() {
610
609
  }
611
610
  connectedCallback() {
612
- super.connectedCallback(), this.updateViewState({ history: K, splashActive: X });
611
+ super.connectedCallback(), this.updateViewState({ history: Y, splashActive: X });
613
612
  }
614
613
  loaded() {
615
614
  const e = async () => {
@@ -637,7 +636,7 @@ class et extends ce {
637
636
  });
638
637
  }
639
638
  disconnectedCallback() {
640
- super.disconnectedCallback(), K = this.viewState.history, X = this.viewState.splashActive, this.copySuccessTimer && (clearTimeout(this.copySuccessTimer), this.copySuccessTimer = void 0);
639
+ super.disconnectedCallback(), Y = this.viewState.history, X = this.viewState.splashActive, this.copySuccessTimer && (clearTimeout(this.copySuccessTimer), this.copySuccessTimer = void 0);
641
640
  }
642
641
  createFeedbackContextSnapshot(e) {
643
642
  const t = Ge(e.metadata);
@@ -682,7 +681,7 @@ class et extends ce {
682
681
  return;
683
682
  const e = new be({ url: this.feedbackServiceUrl });
684
683
  await e.load();
685
- const t = Ze.filter((o) => !e.fields.some((s) => s.name === o));
684
+ const t = et.filter((o) => !e.fields.some((s) => s.name === o));
686
685
  if (t.length > 0) {
687
686
  $("error", this, `Missing the following fields in feedback service: ${t.join(", ")}. Feedback will not be logged.`);
688
687
  return;
@@ -705,7 +704,7 @@ class et extends ce {
705
704
  question: e.question,
706
705
  answer: this.encodeForFeedback(e.answer),
707
706
  useragent: navigator.userAgent,
708
- _source: Y,
707
+ _source: K,
709
708
  version: this.appVersion || o || "NOT_SET",
710
709
  // we send the snapshotted context in the automatic logging, rather than the full context, to avoid accidentally logging sensitive information that may be in the full context.
711
710
  context: s ? JSON.stringify({ ...s, isSnapshot: !0 }) : "",
@@ -737,11 +736,11 @@ class et extends ce {
737
736
  t = this.createFeedbackContextSnapshot(r);
738
737
  const p = await this.getToken(), c = await Se({
739
738
  baseUrl: this.serviceUrl,
740
- skillId: Ke,
739
+ skillId: Xe,
741
740
  message: e,
742
741
  authToken: p,
743
742
  context: {
744
- kind: Xe,
743
+ kind: Ze,
745
744
  context: {
746
745
  profile_id: r.profileId,
747
746
  metadata: [r.metadata],
@@ -828,9 +827,9 @@ ${e}` : "";
828
827
  if (this.closed)
829
828
  return null;
830
829
  const e = this.viewState.viewMode === "result", t = this.getHistoryCards();
831
- return this.promptingEnabled ? d`<calcite-flow><calcite-flow-item closable heading-level=2 .heading=${this.messages.arcadeassistant ?? "Arcade assistant"} @calciteFlowItemClose=${this.handleClose}>${this.viewState.splashActive && d`<calcite-scrim></calcite-scrim>` || ""}${Re({ messages: this.messages })}${Fe({ messages: this.messages, popoverContent: B({ promptingEnabled: this.promptingEnabled, messages: this.messages, helpTopicUrl: this.usingTheAssitantDocUrl }) })}<calcite-shell class="unstyled-shell">${this.viewState.splashActive && Ue({ messages: this.messages, onProceed: () => {
830
+ return this.promptingEnabled ? d`<calcite-flow><calcite-flow-item closable heading-level=2 .heading=${this.messages.arcadeassistant ?? "Arcade assistant"} @calciteFlowItemClose=${this.handleClose}>${this.viewState.splashActive && d`<calcite-scrim></calcite-scrim>` || ""}${Re({ messages: this.messages })}${Fe({ messages: this.messages, popoverContent: B({ promptingEnabled: this.promptingEnabled, messages: this.messages, helpTopicUrl: this.helpTopicUrl }) })}<calcite-shell class="unstyled-shell">${this.viewState.splashActive && Ue({ messages: this.messages, onProceed: () => {
832
831
  this.updateViewState({ splashActive: !1 });
833
- }, helpTopicUrl: this.assistantOverviewDocUrl, onExit: (o) => this.closePanel?.(o) }) || ""}${Ve({ active: this.viewState.confirmationActive, setActive: (o) => this.updateViewState({ confirmationActive: o }), messages: this.messages })}${qe({ isDisabled: this.viewState.isSubmitting, isReadOnly: !1, setQuestion: this.setQuestionState, setIsViewingResult: (o) => this.updateViewState({ viewMode: o ? "result" : "prompt" }), mode: e ? "refine" : "prompt", textAreaRef: this.textAreaRef, question: this.viewState.question, errorMessage: this.viewState.errorMessage, setErrorMessage: (o) => this.updateViewState({ errorMessage: o }), promptValidationMessage: this.viewState.promptValidationMessage, setPromptValidationMessage: (o) => this.updateViewState({ promptValidationMessage: o }), submitQuestion: this.submitQuestion.bind(this), assistantRef: this.el, messages: this.messages, context: this.viewState.context, contextReducedNoticeDismissed: this.viewState.contextReducedNoticeDismissed, setContextReducedNoticeDismissed: (o) => this.updateViewState({ contextReducedNoticeDismissed: o }) })}<calcite-block-group .label=${this.messages.interactiveblocks ?? "interactive blocks"}>${!e && !this.viewState.isSubmitting && ze({ messages: this.messages, suggestions: [this.messages.prompsuggestion1 ?? "", this.messages.prompsuggestion2 ?? ""], onSuggestionClick: this.onSuggestionClick }) || ""}<calcite-block .hidden=${!this.viewState.isSubmitting} .heading=${this.messages.generatingresponse ?? "Generating response..."}></calcite-block>${H({
832
+ }, helpTopicUrl: this.helpTopicUrl, onExit: (o) => this.closePanel?.(o) }) || ""}${Ve({ active: this.viewState.confirmationActive, setActive: (o) => this.updateViewState({ confirmationActive: o }), messages: this.messages })}${qe({ isDisabled: this.viewState.isSubmitting, isReadOnly: !1, setQuestion: this.setQuestionState, setIsViewingResult: (o) => this.updateViewState({ viewMode: o ? "result" : "prompt" }), mode: e ? "refine" : "prompt", textAreaRef: this.textAreaRef, question: this.viewState.question, errorMessage: this.viewState.errorMessage, setErrorMessage: (o) => this.updateViewState({ errorMessage: o }), promptValidationMessage: this.viewState.promptValidationMessage, setPromptValidationMessage: (o) => this.updateViewState({ promptValidationMessage: o }), submitQuestion: this.submitQuestion.bind(this), assistantRef: this.el, messages: this.messages, context: this.viewState.context, contextReducedNoticeDismissed: this.viewState.contextReducedNoticeDismissed, setContextReducedNoticeDismissed: (o) => this.updateViewState({ contextReducedNoticeDismissed: o }) })}<calcite-block-group .label=${this.messages.interactiveblocks ?? "interactive blocks"}>${!e && !this.viewState.isSubmitting && ze({ messages: this.messages, suggestions: [this.messages.prompsuggestion1 ?? "", this.messages.prompsuggestion2 ?? ""], onSuggestionClick: this.onSuggestionClick }) || ""}<calcite-block .hidden=${!this.viewState.isSubmitting} .heading=${this.messages.generatingresponse ?? "Generating response..."}></calcite-block>${H({
834
833
  expanded: e,
835
834
  messages: this.messages,
836
835
  collapsible: !0,
@@ -855,10 +854,10 @@ ${e}` : "";
855
854
  heading: this.messages.recentprompts ?? "Recent prompts",
856
855
  hidden: this.viewState.isSubmitting || this.viewState.history.length === 0,
857
856
  onCopyCode: this.onCopyCode.bind(this)
858
- })}</calcite-block-group>${this.viewState.feedback.active ? Ne({ setOpen: this.handleFeedbackSheetClose, messages: this.messages, onSubmit: this.handleFeedbackSubmit, feedback: this.viewState.feedback, setFeedback: this.setFeedbackState, learnMoreUrl: this.assistantOverviewDocUrl }) : null}</calcite-shell></calcite-flow-item></calcite-flow>` : d`<calcite-flow><calcite-flow-item .selected=${!e} closable heading-level=2 .heading=${this.messages.arcadeassistant ?? "Arcade assistant"} @calciteFlowItemClose=${this.handleClose}>${B({ slot: "content-top", messages: this.messages, promptingEnabled: this.promptingEnabled, helpTopicUrl: this.usingTheAssitantDocUrl })}</calcite-flow-item></calcite-flow>`;
857
+ })}</calcite-block-group>${this.viewState.feedback.active ? Ne({ setOpen: this.handleFeedbackSheetClose, messages: this.messages, onSubmit: this.handleFeedbackSubmit, feedback: this.viewState.feedback, setFeedback: this.setFeedbackState, learnMoreUrl: this.helpTopicUrl }) : null}</calcite-shell></calcite-flow-item></calcite-flow>` : d`<calcite-flow><calcite-flow-item .selected=${!e} closable heading-level=2 .heading=${this.messages.arcadeassistant ?? "Arcade assistant"} @calciteFlowItemClose=${this.handleClose}>${B({ slot: "content-top", messages: this.messages, promptingEnabled: this.promptingEnabled, helpTopicUrl: this.helpTopicUrl })}</calcite-flow-item></calcite-flow>`;
859
858
  }
860
859
  }
861
- se("arcgis-arcade-coding-assistant", et);
860
+ se("arcgis-arcade-coding-assistant", tt);
862
861
  export {
863
- et as ArcgisArcadeCodingAssistant
862
+ tt as ArcgisArcadeCodingAssistant
864
863
  };
@@ -6,19 +6,19 @@ import { u as c } from "../../chunks/useT9n.js";
6
6
  import { d as u, g as n, c as r, t as s } from "../../chunks/debugger-value-styles.js";
7
7
  import { observeAncestorsMutation as d, unsafeGetCalciteModeName as g } from "@arcgis/toolkit/dom";
8
8
  import { D as m, i as p, f as h, a as b, b as f } from "../../chunks/debugger-value-components.js";
9
- const T = l`:host{display:flex;flex-direction:column;width:100%;background-color:var(--calcite-color-foreground-1);color:var(--calcite-color-text-2);--calcite-block-padding: var(--calcite-spacing-sm);overflow:auto;calcite-flow{height:100%}.disabled-state-text{font-size:var(--calcite-font-size-sm);color:var(--calcite-color-text-3);font-style:italic;display:block;margin:var(--calcite-spacing-md)}[class*=result-value-]{line-height:1.25rem}}`;
10
- function v(t, e) {
9
+ const v = l`:host{display:flex;flex-direction:column;width:100%;background-color:var(--calcite-color-foreground-1);color:var(--calcite-color-text-2);--calcite-block-padding: var(--calcite-spacing-sm);overflow:auto;calcite-flow{height:100%}.disabled-state-text{font-size:var(--calcite-font-size-sm);color:var(--calcite-color-text-3);font-style:italic;display:block;margin:var(--calcite-spacing-md)}[class*=result-value-]{line-height:1.25rem}}`;
10
+ function y(t, e) {
11
11
  return p(t) || h(t) || b(t) || f(t) ? e ?? "Output" : t.arcadeType;
12
12
  }
13
- class y extends o {
13
+ class S extends o {
14
14
  constructor() {
15
15
  super(...arguments), this.messages = c();
16
16
  }
17
17
  static {
18
- this.properties = { debuggerStore: 0, result: 0, outputTitle: 1 };
18
+ this.properties = { debuggerStore: 0, result: 0 };
19
19
  }
20
20
  static {
21
- this.styles = [T, u, n()];
21
+ this.styles = [v, u, n()];
22
22
  }
23
23
  load() {
24
24
  this.manager.onLifecycle(() => {
@@ -36,10 +36,10 @@ class y extends o {
36
36
  if (!this.result)
37
37
  return a`<span class="disabled-state-text">${this.messages.nooutput ?? "No output available."}</span>`;
38
38
  const e = this.debuggerStore?.lazyTreeState;
39
- return e ? a`<calcite-tree .scale=${s.scale} @calciteTreeSelect=${s.oncalciteTreeSelect} .lines=${s.lines} .selectionMode=${s.selectionMode}>${m({ expanded: !0, name: v(this.result, this.outputTitle), value: this.result, messages: this.messages, path: this.result.arcadeType, lazyTreeState: e })}</calcite-tree>` : a`<span class="disabled-state-text">${this.messages.nooutput ?? "No output available."}</span>`;
39
+ return e ? a`<calcite-tree .scale=${s.scale} @calciteTreeSelect=${s.oncalciteTreeSelect} .lines=${s.lines} .selectionMode=${s.selectionMode}>${m({ expanded: !0, name: y(this.result, this.messages.output), value: this.result, messages: this.messages, path: this.result.arcadeType, lazyTreeState: e })}</calcite-tree>` : a`<span class="disabled-state-text">${this.messages.nooutput ?? "No output available."}</span>`;
40
40
  }
41
41
  }
42
- i("arcgis-arcade-debugger-output", y);
42
+ i("arcgis-arcade-debugger-output", S);
43
43
  export {
44
- y as ArcgisArcadeDebuggerOutput
44
+ S as ArcgisArcadeDebuggerOutput
45
45
  };
@@ -3,7 +3,7 @@ import type { editor as Editor } from "monaco-editor";
3
3
  import type { Diagnostic } from "@arcgis/arcade-languageservice";
4
4
  import type { ApiSnippet } from "@arcgis/languages-api-utils";
5
5
  import type { PublicLitElement as LitElement } from "@arcgis/lumina";
6
- import type { EditorCodeSuggestion, EditorCodeSuggestionGroup, EditorProfileDefinition, IEditorCodeSuggestion, IEditorCodeSuggestionGroup, IEditorProfileDefinition, IEditorTestContext, IPredefinedProfile, PredefinedProfile, EditorTestContext } from "../types.js";
6
+ import type { EditorCodeSuggestion, EditorCodeSuggestionGroup, EditorProfileDefinition, IEditorCodeSuggestion, IEditorCodeSuggestionGroup, IEditorProfileDefinition, IEditorTestContext, IPredefinedProfile, PredefinedProfile, EditorTestContext, DocsConfig } from "../types.js";
7
7
  import type { ArcadeExecutionError, ArcadeResult, EditorExternalExecutor } from "../../utils/arcade-executor.js";
8
8
  import type { ICustomPanel } from "../../utils/custom-panel.js";
9
9
  import type { ArcadeAssistantConfig } from "../../utils/arcade-assistant/types.js";
@@ -83,6 +83,17 @@ export abstract class ArcgisArcadeEditor extends LitElement {
83
83
  * @see [Arcade assistant best practices and limitations](https://doc.arcgis.com/en/arcgis-online/create-maps/use-arcade-assistant.htm)
84
84
  */
85
85
  accessor disableAssistant: boolean;
86
+ /**
87
+ * Allows users to override documentation links within the Arcade editor.
88
+ * Only links specified in `links` will be overridden.
89
+ * Not all links within the Arcade editor can be overridden.
90
+ *
91
+ * @example
92
+ * ```tsx
93
+ * <arcgis-arcade-editor docsConfig={{ links: { "arcade-assistant-reference-doc": "https://custom-url.com/help/arcade-assistant.htm" } }} />
94
+ * ```
95
+ */
96
+ accessor docsConfig: DocsConfig | undefined;
86
97
  /**
87
98
  * Options to update on the editor.
88
99
  * For example: