@arcgis/coding-components 4.30.0-next.10 → 4.30.0-next.102
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +1 -1
- package/README.md +2 -4
- package/dist/arcgis-coding-components/arcgis-coding-components.css +1 -1
- package/dist/arcgis-coding-components/arcgis-coding-components.esm.js +2 -2
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.ar.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.bg.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.bs.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.ca.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.cs.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.da.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.de.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.el.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.en.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.es.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.et.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.fi.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.fr.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.he.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.hr.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.hu.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.id.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.it.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.ja.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.ko.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.lt.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.lv.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.nb.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.nl.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.pl.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.pt-BR.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.pt-PT.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.ro.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.ru.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.sk.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.sl.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.sr.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.sv.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.th.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.tr.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.uk.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.vi.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.zh-CN.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.zh-HK.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/api/arcade-api.t9n.zh-TW.json +25 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.ar.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.bg.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.bs.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.ca.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.cs.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.da.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.de.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.el.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.es.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.et.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.fi.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.fr.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.he.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.hr.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.hu.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.id.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.it.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.ja.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.ko.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.lt.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.lv.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.nb.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.nl.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.pl.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.pt-BR.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.pt-PT.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.ro.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.ru.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.sk.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.sl.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.sr.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.sv.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.th.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.tr.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.uk.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.vi.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.zh-CN.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.zh-HK.json +2 -0
- package/dist/arcgis-coding-components/assets/arcade-language/t9n/profile.t9n.zh-TW.json +2 -0
- package/dist/arcgis-coding-components/assets/code-editor/arcade.worker.js +2 -2
- package/dist/arcgis-coding-components/assets/code-editor/css.worker.js +1 -1
- package/dist/arcgis-coding-components/assets/code-editor/editor.worker.js +1 -1
- package/dist/arcgis-coding-components/assets/code-editor/html.worker.js +1 -1
- package/dist/arcgis-coding-components/assets/code-editor/json.worker.js +1 -1
- package/dist/arcgis-coding-components/assets/code-editor/ts.worker.js +1 -1
- package/dist/arcgis-coding-components/index.esm.js +2 -2
- package/dist/arcgis-coding-components/{p-4d5f58aa.js → p-0e27884f.js} +2 -2
- package/dist/arcgis-coding-components/{p-b12b2a1b.js → p-231efbff.js} +2 -2
- package/dist/arcgis-coding-components/p-47e96d81.js +6 -0
- package/dist/arcgis-coding-components/{p-655e7a9e.js → p-5ba3777a.js} +2 -2
- package/dist/arcgis-coding-components/p-631bbbfb.js +6 -0
- package/dist/arcgis-coding-components/p-6539bce3.entry.js +6 -0
- package/dist/arcgis-coding-components/p-73947f7a.js +7 -0
- package/dist/arcgis-coding-components/{p-8ee18d5c.js → p-84b8c9be.js} +2 -2
- package/dist/arcgis-coding-components/{p-2dcffe0e.js → p-af5781fa.js} +2 -2
- package/dist/arcgis-coding-components/p-dc127e91.js +68 -0
- package/dist/arcgis-coding-components/{p-b4339ec6.js → p-dd7c0171.js} +3 -3
- package/dist/arcgis-coding-components/{p-87f8241f.js → p-de337f9b.js} +3 -3
- package/dist/arcgis-coding-components/{p-cb0f0e5f.js → p-ec38da7b.js} +1 -1
- package/dist/cjs/app-globals-a39a1193.js +10 -0
- package/dist/cjs/{arcade-defaults-38ad9b42.js → arcade-defaults-e23b311c.js} +729 -289
- package/dist/cjs/{arcade-mode-9581409d.js → arcade-mode-580faadf.js} +78 -84
- package/dist/cjs/arcgis-arcade-api_6.cjs.entry.js +1611 -239
- package/dist/cjs/arcgis-coding-components.cjs.js +14 -12
- package/dist/cjs/{css-2fde7503.js → css-6d9d8b18.js} +1 -1
- package/dist/cjs/{cssMode-9815a287.js → cssMode-58ba7a48.js} +3 -3
- package/dist/cjs/{html-6caa7fc2.js → html-6babf2d9.js} +3 -3
- package/dist/cjs/{htmlMode-8d4e7d24.js → htmlMode-d3fcee1c.js} +3 -3
- package/dist/cjs/index-70d2e15c.js +1303 -0
- package/dist/cjs/index.cjs.js +3 -3
- package/dist/cjs/{javascript-15b22f67.js → javascript-68e357b7.js} +4 -4
- package/dist/cjs/{jsonMode-f21a8faa.js → jsonMode-17b6405b.js} +3 -3
- package/dist/cjs/loader.cjs.js +6 -4
- package/dist/cjs/{tsMode-a4452f18.js → tsMode-12306781.js} +3 -3
- package/dist/cjs/{typescript-77d49ecd.js → typescript-33e4c6bd.js} +3 -3
- package/dist/components/arcade-api.js +25 -34
- package/dist/components/arcade-contribution.js +10 -10
- package/dist/components/arcade-defaults.js +143 -161
- package/dist/components/arcade-mode.js +46 -52
- package/dist/components/arcade-results.js +49 -61
- package/dist/components/arcade-suggestions.js +25 -34
- package/dist/components/arcade-variables.js +24 -37
- package/dist/components/arcgis-arcade-api.js +1 -1
- package/dist/components/arcgis-arcade-editor.js +61 -89
- package/dist/components/arcgis-arcade-results.js +1 -1
- package/dist/components/arcgis-arcade-suggestions.js +1 -1
- package/dist/components/arcgis-arcade-variables.js +1 -1
- package/dist/components/arcgis-assets.d.ts +1 -1
- package/dist/components/arcgis-assets.js +1 -1
- package/dist/components/arcgis-code-editor.js +1 -1
- package/dist/components/chunk-IHYYRFLQ.js +1363 -0
- package/dist/components/code-editor.js +72 -79
- package/dist/components/fields.js +45 -45
- package/dist/components/index.js +1 -1
- package/dist/components/index2.js +394 -3
- package/dist/components/markdown.js +13 -27
- package/dist/components/useT9n.js +37 -0
- package/dist/components/utilities.js +3 -3
- package/dist/esm/app-globals-ad037f01.js +8 -0
- package/dist/esm/{arcade-defaults-978d373f.js → arcade-defaults-c440ab96.js} +712 -275
- package/dist/esm/{arcade-mode-8a50067b.js → arcade-mode-f87480eb.js} +78 -84
- package/dist/esm/arcgis-arcade-api_6.entry.js +1611 -239
- package/dist/esm/arcgis-coding-components.js +15 -13
- package/dist/esm/{css-adc1375f.js → css-3d022d97.js} +1 -1
- package/dist/esm/{cssMode-a292eee6.js → cssMode-cd620116.js} +3 -3
- package/dist/esm/{html-24d2d562.js → html-e2b7755a.js} +3 -3
- package/dist/esm/{htmlMode-f9eed34e.js → htmlMode-c60c352c.js} +3 -3
- package/dist/esm/index-9f13e665.js +1272 -0
- package/dist/esm/index.js +3 -3
- package/dist/esm/{javascript-40f3fb5c.js → javascript-6edf9a3c.js} +4 -4
- package/dist/esm/{jsonMode-70770104.js → jsonMode-3d2d17ee.js} +3 -3
- package/dist/esm/loader.js +7 -5
- package/dist/esm/{tsMode-f797a97b.js → tsMode-7010932a.js} +3 -3
- package/dist/esm/{typescript-83c789e7.js → typescript-0a9a4b7a.js} +3 -3
- package/dist/loader/cdn.js +1 -1
- package/dist/loader/index.cjs.js +1 -1
- package/dist/loader/index.es2017.js +1 -1
- package/dist/loader/index.js +1 -1
- package/dist/types/components/arcade-api/arcade-api.d.ts +6 -7
- package/dist/types/components/arcade-editor/arcade-editor.d.ts +18 -12
- package/dist/types/components/arcade-results/arcade-results.d.ts +6 -9
- package/dist/types/components/arcade-suggestions/arcade-suggestions.d.ts +7 -8
- package/dist/types/components/arcade-variables/arcade-variables.d.ts +6 -8
- package/dist/types/components/code-editor/code-editor.d.ts +23 -13
- package/dist/types/components.d.ts +57 -35
- package/dist/types/controllers/useT9n.d.ts +1 -0
- package/dist/types/data/actions-runner-1/_work/arcgis-web-components/arcgis-web-components/packages/coding-packages/coding-components/.stencil/stencil.config.d.ts +3 -0
- package/dist/types/data/actions-runner-1/_work/arcgis-web-components/arcgis-web-components/packages/coding-packages/coding-components/.stencil/stories/internal/arcade-editor/arcade-editor.stories.d.ts +34 -0
- package/dist/types/data/actions-runner-1/_work/arcgis-web-components/arcgis-web-components/packages/coding-packages/coding-components/.stencil/stories/internal/arcade-editor/editorContext.d.ts +15 -0
- package/dist/types/data/actions-runner-1/_work/arcgis-web-components/arcgis-web-components/packages/coding-packages/coding-components/.stencil/stories/internal/code-editor/code-editor.stories.d.ts +6 -0
- package/dist/types/data/actions-runner-1/_work/arcgis-web-components/arcgis-web-components/packages/coding-packages/coding-components/.stencil/stories/reference/stories/arcade-editor.stories.d.ts +9 -0
- package/dist/types/data/actions-runner-1/_work/arcgis-web-components/arcgis-web-components/packages/coding-packages/coding-components/.stencil/support/sass-inline-url-importer.d.ts +9 -0
- package/dist/types/data/actions-runner-1/_work/arcgis-web-components/arcgis-web-components/packages/coding-packages/coding-components/.stencil/support/sass-json-importer.d.ts +19 -0
- package/dist/types/data/actions-runner-1/_work/arcgis-web-components/arcgis-web-components/packages/coding-packages/coding-components/.stencil/support/stencil-monaco-plugins.d.ts +6 -0
- package/dist/types/utils/arcade-monaco/arcade-language-features.d.ts +1 -1
- package/dist/types/utils/profile/types.d.ts +40 -13
- package/dist/types/utils/profile/utils.d.ts +2 -4
- package/package.json +24 -24
- package/dist/arcgis-coding-components/p-2db6d470.js +0 -7
- package/dist/arcgis-coding-components/p-5d7c80cf.entry.js +0 -6
- package/dist/arcgis-coding-components/p-63894999.js +0 -68
- package/dist/arcgis-coding-components/p-f39c5bc0.js +0 -6
- package/dist/cjs/index-c33ea685.js +0 -1958
- package/dist/esm/index-7dec16fc.js +0 -1927
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* All material copyright Esri, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
* See https://js.arcgis.com/4.30/esri/copyright.txt for details.
|
|
4
|
-
* v4.30.0-next.
|
|
4
|
+
* v4.30.0-next.102
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
7
|
-
import { g as generateTokensCSSForColorMap,
|
|
6
|
+
import { g as getAssetPath, r as registerInstance, c as createEvent, h, H as Host, a as getElement, F as Fragment } from './index-9f13e665.js';
|
|
7
|
+
import { g as generateTokensCSSForColorMap, S as StandaloneServices, I as IStandaloneThemeService, e as editor, c as commonjsGlobal, D as Deferred, b as camelToKebab, s as safeCall, d as safeAsyncCall, f as devToolsAwareTimeout, h as startLocaleObserver, i as getElementLocales, j as isURL, k as hasSameOrigin, l as importRequest, m as languages, n as arcadeDefaults, U as Uri, o as setFocusOnElement, p as filterCollection, q as addLTRMark, r as importArcade, t as generateGuid, u as getElementTheme, K as KeyCode, v as setValuesInString, w as quoteString, x as supportedFields, y as createFilterExpression, R as Range, z as observeAncestorsMutation, A as KeyMod } from './arcade-defaults-c440ab96.js';
|
|
8
8
|
|
|
9
9
|
async function colorizeCode(code) {
|
|
10
10
|
return await editor.colorize(code, "arcade", { tabSize: 2 });
|
|
@@ -37,13 +37,15 @@ function onColorizeThemeChanged(func) {
|
|
|
37
37
|
/* eslint-enable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
var marked_umd =
|
|
40
|
+
var marked_umd = {exports: {}};
|
|
41
|
+
|
|
41
42
|
/**
|
|
42
43
|
* marked v5.1.2 - a markdown parser
|
|
43
44
|
* Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)
|
|
44
45
|
* https://github.com/markedjs/marked
|
|
45
46
|
*/
|
|
46
47
|
|
|
48
|
+
(function (module, exports) {
|
|
47
49
|
/**
|
|
48
50
|
* DO NOT EDIT THIS FILE
|
|
49
51
|
* The code in this file is generated from files in ./src/
|
|
@@ -2912,31 +2914,1409 @@ var marked_umd = createCommonjsModule(function (module, exports) {
|
|
|
2912
2914
|
exports.walkTokens = walkTokens;
|
|
2913
2915
|
|
|
2914
2916
|
}));
|
|
2915
|
-
});
|
|
2917
|
+
}(marked_umd, marked_umd.exports));
|
|
2916
2918
|
|
|
2917
2919
|
// Set up the marked library to use GitHub Flavored Markdown and to use the custom renderer for links.
|
|
2918
|
-
marked_umd.marked.use({
|
|
2920
|
+
marked_umd.exports.marked.use({
|
|
2919
2921
|
gfm: true,
|
|
2922
|
+
breaks: true,
|
|
2923
|
+
async: false,
|
|
2920
2924
|
renderer: {
|
|
2921
2925
|
link(href, title, text) {
|
|
2922
2926
|
return `<calcite-link href="${href}" title="${title ?? text}" target="Arcade Help">${text}</calcite-link>`;
|
|
2923
|
-
}
|
|
2924
|
-
}
|
|
2927
|
+
},
|
|
2928
|
+
},
|
|
2925
2929
|
});
|
|
2926
2930
|
/**
|
|
2927
2931
|
* Converts a markdown string to HTML using the marked library.
|
|
2928
2932
|
*/
|
|
2929
2933
|
function convertMarkdownString(value) {
|
|
2930
|
-
value
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2934
|
+
if (value === null || value === undefined) {
|
|
2935
|
+
return "";
|
|
2936
|
+
}
|
|
2937
|
+
return marked_umd.exports.marked.parse(typeof value === "string" ? value : value.value);
|
|
2938
|
+
}
|
|
2939
|
+
|
|
2940
|
+
// src/framework.ts
|
|
2941
|
+
function retrieveComponentMembers(component, isLit) {
|
|
2942
|
+
if (isLit) {
|
|
2943
|
+
const elementProperties = getLitProperties(component);
|
|
2944
|
+
component.manager.internals.members = Object.fromEntries(
|
|
2945
|
+
Array.from(elementProperties, ([name, { state, type }]) => [
|
|
2946
|
+
name,
|
|
2947
|
+
[
|
|
2948
|
+
state ? 32 /* State */ : type === Number ? 2 /* Number */ : type === Boolean ? 4 /* Boolean */ : 1 /* String */
|
|
2949
|
+
]
|
|
2950
|
+
])
|
|
2951
|
+
);
|
|
2952
|
+
} else {
|
|
2953
|
+
const constructor = component.constructor;
|
|
2954
|
+
const members = constructor.__registerControllers?.(component) ?? void 0;
|
|
2955
|
+
constructor.__registerControllers = void 0;
|
|
2956
|
+
if (typeof members !== "object") {
|
|
2957
|
+
throw new Error(
|
|
2958
|
+
"Failed to retrieve internal component meta. Make sure you have the useComponentsControllers() Rollup Plugin for Stencil Controllers configured in your Stencil config."
|
|
2959
|
+
);
|
|
2960
|
+
}
|
|
2961
|
+
component.manager.internals.members = members;
|
|
2962
|
+
}
|
|
2963
|
+
}
|
|
2964
|
+
var getLitProperties = (component) => component.constructor.elementProperties;
|
|
2965
|
+
function parsePropertyValue(value, type = 8 /* Any */) {
|
|
2966
|
+
const isComplex = value == null || typeof value === "object" || typeof value === "function";
|
|
2967
|
+
if (isComplex) {
|
|
2968
|
+
return value;
|
|
2969
|
+
}
|
|
2970
|
+
if ((type & 4 /* Boolean */) !== 0) {
|
|
2971
|
+
return value === "false" ? false : value === "" || !!value;
|
|
2972
|
+
} else if ((type & 2 /* Number */) !== 0) {
|
|
2973
|
+
return Number.parseFloat(value);
|
|
2974
|
+
} else if ((type & 1 /* String */) !== 0) {
|
|
2975
|
+
return String(value);
|
|
2976
|
+
} else {
|
|
2977
|
+
return value;
|
|
2978
|
+
}
|
|
2979
|
+
}
|
|
2980
|
+
var makeMemberFilter = (filter) => (component) => {
|
|
2981
|
+
const members = component.manager.internals.members;
|
|
2982
|
+
return Object.entries(members ?? {}).filter(([_name, [propType]]) => (propType & filter) !== 0).map(([name]) => name);
|
|
2983
|
+
};
|
|
2984
|
+
var getPropLikeMembers = makeMemberFilter(63 /* PropLike */);
|
|
2985
|
+
var getMemberType = (component, name) => component.manager.internals.members?.[name]?.[0];
|
|
2986
|
+
function getPropType(component, name) {
|
|
2987
|
+
const type = getMemberType(component, name);
|
|
2988
|
+
if (type === void 0) {
|
|
2989
|
+
return void 0;
|
|
2990
|
+
} else if (type & 32 /* State */) {
|
|
2991
|
+
return "state";
|
|
2992
|
+
} else {
|
|
2993
|
+
return "prop";
|
|
2994
|
+
}
|
|
2995
|
+
}
|
|
2996
|
+
|
|
2997
|
+
// src/types.ts
|
|
2998
|
+
var controllerSymbol = Symbol("controller");
|
|
2999
|
+
|
|
3000
|
+
// src/utils.ts
|
|
3001
|
+
var isController = (value) => typeof value === "object" && value !== null && (controllerSymbol in value || "hostConnected" in value || "hostDisconnected" in value || "hostUpdate" in value || "hostUpdated" in value);
|
|
3002
|
+
|
|
3003
|
+
// src/ControllerInternals.ts
|
|
3004
|
+
var ControllerInternals = class {
|
|
3005
|
+
constructor() {
|
|
3006
|
+
this._ambientControllers = [];
|
|
3007
|
+
/**
|
|
3008
|
+
* The type definition has to be duplicated due to the
|
|
3009
|
+
* "'use' is referenced directly or indirectly in its own type annotation."
|
|
3010
|
+
* error
|
|
3011
|
+
*/
|
|
3012
|
+
this.use = async (value, watchExports) => {
|
|
3013
|
+
const controller = this.useRefSync(value);
|
|
3014
|
+
if (controller === void 0) {
|
|
3015
|
+
if (typeof watchExports === "function") {
|
|
3016
|
+
const error = new Error(
|
|
3017
|
+
`Unable to resolve a controller from the provided value, so can't watch it's exports. ${unresolvableExports}`
|
|
3018
|
+
);
|
|
3019
|
+
{
|
|
3020
|
+
console.error(error);
|
|
3021
|
+
}
|
|
3022
|
+
}
|
|
3023
|
+
return value;
|
|
3024
|
+
}
|
|
3025
|
+
await controller.ready;
|
|
3026
|
+
if (typeof watchExports === "function") {
|
|
3027
|
+
if (controller.watchExports === void 0) {
|
|
3028
|
+
throw new Error(`The controller must implement watchExports method to support watching exports`);
|
|
3029
|
+
}
|
|
3030
|
+
const unsubscribe = controller.watchExports(
|
|
3031
|
+
(exports) => watchExports(exports, unsubscribe)
|
|
3032
|
+
);
|
|
3033
|
+
}
|
|
3034
|
+
return controller.exports;
|
|
3035
|
+
};
|
|
3036
|
+
this.useRef = async (value) => {
|
|
3037
|
+
const controller = this.useRefSync(value);
|
|
3038
|
+
if (controller === void 0) {
|
|
3039
|
+
throw new Error(`Unable to resolve a controller from the provided value. ${unresolvableExports}`);
|
|
3040
|
+
}
|
|
3041
|
+
await controller.ready;
|
|
3042
|
+
return controller;
|
|
3043
|
+
};
|
|
3044
|
+
this.useRefSync = (value) => {
|
|
3045
|
+
const ambientChildController = this.retrieveAmbientChildController();
|
|
3046
|
+
if (ambientChildController !== void 0) {
|
|
3047
|
+
return ambientChildController;
|
|
3048
|
+
}
|
|
3049
|
+
const component = Controller.internals.retrieveComponent();
|
|
3050
|
+
const controller = component.manager.internals.resolveExports(value);
|
|
3051
|
+
if (controller !== void 0) {
|
|
3052
|
+
return controller;
|
|
3053
|
+
}
|
|
3054
|
+
if (isController(value)) {
|
|
3055
|
+
return value;
|
|
3056
|
+
}
|
|
3057
|
+
return void 0;
|
|
3058
|
+
};
|
|
3059
|
+
this.shouldBypassSetter = false;
|
|
3060
|
+
this.shouldBypassGetter = false;
|
|
3061
|
+
this.shouldBypassReadonly = false;
|
|
3062
|
+
/**
|
|
3063
|
+
* A map from component instance or component element to component instance.
|
|
3064
|
+
* To get from component instance or component element to component element,
|
|
3065
|
+
* you can just use the .el property
|
|
3066
|
+
*/
|
|
3067
|
+
this.elementToInstance = /* @__PURE__ */ new WeakMap();
|
|
3068
|
+
}
|
|
3069
|
+
/*
|
|
3070
|
+
* Allow controllers to implicitly retrieve which component they are in, to
|
|
3071
|
+
* improve DX (avoids the need to pass "this" explicitly for each controller)
|
|
3072
|
+
*/
|
|
3073
|
+
setAmbientComponent(component) {
|
|
3074
|
+
if (this._ambientComponent === component) {
|
|
3075
|
+
return;
|
|
3076
|
+
}
|
|
3077
|
+
this._ambientComponent = component;
|
|
3078
|
+
queueMicrotask(() => {
|
|
3079
|
+
if (this._ambientComponent === component) {
|
|
3080
|
+
this._ambientComponent = void 0;
|
|
3081
|
+
}
|
|
3082
|
+
});
|
|
3083
|
+
}
|
|
3084
|
+
retrieveComponent(name) {
|
|
3085
|
+
if (this._ambientComponent === void 0) {
|
|
3086
|
+
throw new Error(
|
|
3087
|
+
[
|
|
3088
|
+
`Unable to find out which component ${name || "this"} controller `,
|
|
3089
|
+
"belongs to. This might happen if you tried to create a controller ",
|
|
3090
|
+
"outside the component. If so, please wrap your controller ",
|
|
3091
|
+
"definition in an arrow function, ",
|
|
3092
|
+
"`const myController = ()=>makeController(...);` and call that",
|
|
3093
|
+
"function inside the component `my = myController();`, or ",
|
|
3094
|
+
"define your controller using makeGenericController/GenericController ",
|
|
3095
|
+
"instead.\n",
|
|
3096
|
+
"If you wish to use a controller inside an async controller, ",
|
|
3097
|
+
"make sure you are using controller.use.\n",
|
|
3098
|
+
"You might also have multiple instances of Controllers loaded"
|
|
3099
|
+
].join("\n")
|
|
3100
|
+
);
|
|
3101
|
+
}
|
|
3102
|
+
return this._ambientComponent;
|
|
3103
|
+
}
|
|
3104
|
+
/*
|
|
3105
|
+
* Aids proxyExports() in knowing who is it's host
|
|
3106
|
+
*/
|
|
3107
|
+
setParentController(controller) {
|
|
3108
|
+
if (controller === void 0) {
|
|
3109
|
+
this._ambientControllers = [];
|
|
3110
|
+
return;
|
|
3111
|
+
}
|
|
3112
|
+
const index = this._ambientControllers.indexOf(controller);
|
|
3113
|
+
this._ambientControllers = index === -1 ? [...this._ambientControllers, controller] : this._ambientControllers.slice(0, index + 1);
|
|
3114
|
+
queueMicrotask(() => {
|
|
3115
|
+
this._ambientControllers = [];
|
|
3116
|
+
});
|
|
3117
|
+
}
|
|
3118
|
+
retrieveParentControllers() {
|
|
3119
|
+
return this._ambientControllers;
|
|
3120
|
+
}
|
|
3121
|
+
/*
|
|
3122
|
+
* Aids controller.use in retrieving controller value when it receives
|
|
3123
|
+
* controller exports, rather than the controller itself
|
|
3124
|
+
*/
|
|
3125
|
+
setAmbientChildController(controller) {
|
|
3126
|
+
if (this._ambientChildController === controller) {
|
|
3127
|
+
return;
|
|
3128
|
+
}
|
|
3129
|
+
this._ambientChildController = controller;
|
|
3130
|
+
queueMicrotask(() => {
|
|
3131
|
+
if (this._ambientChildController === controller) {
|
|
3132
|
+
this._ambientChildController = void 0;
|
|
3133
|
+
}
|
|
3134
|
+
});
|
|
3135
|
+
}
|
|
3136
|
+
retrieveAmbientChildController() {
|
|
3137
|
+
const controller = this._ambientChildController;
|
|
3138
|
+
this._ambientChildController = void 0;
|
|
3139
|
+
return controller;
|
|
3140
|
+
}
|
|
3141
|
+
};
|
|
3142
|
+
var unresolvableExports = [
|
|
3143
|
+
"The value you passed is not a controller and not a controller exports. If ",
|
|
3144
|
+
"your controller exports a literal value, try making your controller export ",
|
|
3145
|
+
"an object instead"
|
|
3146
|
+
].join("");
|
|
3147
|
+
|
|
3148
|
+
// src/Controller.ts
|
|
3149
|
+
var _a;
|
|
3150
|
+
var _Controller = class _Controller {
|
|
3151
|
+
constructor(component) {
|
|
3152
|
+
this._callbacks = {
|
|
3153
|
+
hostConnected: [],
|
|
3154
|
+
hostDisconnected: [],
|
|
3155
|
+
hostLoad: [],
|
|
3156
|
+
hostLoaded: [],
|
|
3157
|
+
hostUpdate: [],
|
|
3158
|
+
hostUpdated: [],
|
|
3159
|
+
hostDestroy: [],
|
|
3160
|
+
hostLifecycle: []
|
|
3161
|
+
};
|
|
3162
|
+
this._ready = new Deferred();
|
|
3163
|
+
this._lifecycleDisconnected = [];
|
|
3164
|
+
this.connectedCalled = false;
|
|
3165
|
+
this.willLoadCalled = false;
|
|
3166
|
+
this.didLoadCalled = false;
|
|
3167
|
+
this[_a] = true;
|
|
3168
|
+
this.ready = this._ready.promise;
|
|
3169
|
+
/*
|
|
3170
|
+
* Setting default exports to "this" so that controllers that don't use
|
|
3171
|
+
* exports/proxyExports(), could still be used as if they did
|
|
3172
|
+
* (i.e with controller.use)
|
|
3173
|
+
*/
|
|
3174
|
+
this._exports = makeProvisionalValue(this);
|
|
3175
|
+
this._exportWatchers = /* @__PURE__ */ new Set();
|
|
3176
|
+
const resolvedComponent = toControllerHost(
|
|
3177
|
+
component ?? _Controller.internals.retrieveComponent(new.target.name)
|
|
3178
|
+
);
|
|
3179
|
+
Object.defineProperty(this, "component", {
|
|
3180
|
+
writable: false,
|
|
3181
|
+
enumerable: false,
|
|
3182
|
+
configurable: true,
|
|
3183
|
+
value: resolvedComponent
|
|
3184
|
+
});
|
|
3185
|
+
this.component.addController(this);
|
|
3186
|
+
_Controller.internals.setParentController(this);
|
|
3187
|
+
if ("hostDestroy" in this) {
|
|
3188
|
+
this.component.manager.ensureHasDestroy();
|
|
3189
|
+
}
|
|
3190
|
+
const manager = this.component.manager;
|
|
3191
|
+
const isInControllerManager = manager === void 0;
|
|
3192
|
+
if (!isInControllerManager) {
|
|
3193
|
+
queueMicrotask(() => this.catchUpLifecycle());
|
|
3194
|
+
}
|
|
3195
|
+
}
|
|
3196
|
+
/**
|
|
3197
|
+
* If controller is being added dynamically, after the component
|
|
3198
|
+
* construction, then trigger connected and load right away
|
|
3199
|
+
*/
|
|
3200
|
+
catchUpLifecycle() {
|
|
3201
|
+
const { manager } = this.component;
|
|
3202
|
+
const connectedWillStillHappen = !manager.connectedCalled;
|
|
3203
|
+
if (!connectedWillStillHappen && !this.connectedCalled) {
|
|
3204
|
+
this.triggerConnected();
|
|
3205
|
+
}
|
|
3206
|
+
const loadWillStillHappen = !manager.willLoadCalled;
|
|
3207
|
+
if (loadWillStillHappen) {
|
|
3208
|
+
return;
|
|
3209
|
+
}
|
|
3210
|
+
this.triggerLoad().then(() => {
|
|
3211
|
+
const loadedWillStillHappen = !manager.didLoadCalled;
|
|
3212
|
+
if (loadedWillStillHappen) {
|
|
3213
|
+
return;
|
|
3214
|
+
}
|
|
3215
|
+
this.triggerLoaded();
|
|
3216
|
+
}).catch(console.error);
|
|
3217
|
+
}
|
|
3218
|
+
get exports() {
|
|
3219
|
+
return this._exports;
|
|
3220
|
+
}
|
|
3221
|
+
/**
|
|
3222
|
+
* Set controller's exports property (for usage with proxyExports()) and mark
|
|
3223
|
+
* controller as ready (for usage in other controllers). Also, triggers
|
|
3224
|
+
* re-render of the component
|
|
3225
|
+
*/
|
|
3226
|
+
set exports(exports) {
|
|
3227
|
+
if (this._exports !== exports) {
|
|
3228
|
+
this._exports = exports;
|
|
3229
|
+
if (this.connectedCalled) {
|
|
3230
|
+
this.component.requestUpdate();
|
|
3231
|
+
}
|
|
3232
|
+
this._exportWatchers.forEach(safeCall);
|
|
3233
|
+
}
|
|
3234
|
+
this._ready.resolve(exports);
|
|
3235
|
+
}
|
|
3236
|
+
setProvisionalExports(exports) {
|
|
3237
|
+
this._exports = makeProvisionalValue(exports);
|
|
3238
|
+
this._exportWatchers.forEach(safeCall);
|
|
3239
|
+
}
|
|
3240
|
+
watchExports(callback) {
|
|
3241
|
+
const safeCallback = () => callback(this._exports);
|
|
3242
|
+
this._exportWatchers.add(safeCallback);
|
|
3243
|
+
return () => void this._exportWatchers.delete(safeCallback);
|
|
3244
|
+
}
|
|
3245
|
+
/**
|
|
3246
|
+
* A flexible utility for making sure a controller is loaded before it's used,
|
|
3247
|
+
* regardless of how or where a controller was defined:
|
|
3248
|
+
*
|
|
3249
|
+
* @example
|
|
3250
|
+
* makeGenericController(async (component, controller) => {
|
|
3251
|
+
* // Await some controller from the component:
|
|
3252
|
+
* await controller.use(component.someController);
|
|
3253
|
+
* // Initialize new controllers
|
|
3254
|
+
* await controller.use(load(importCoreReactiveUtils));
|
|
3255
|
+
* await controller.use(new ViewModelController(component,newWidgetsHomeHomeViewModel));
|
|
3256
|
+
* await controller.use(someController(component));
|
|
3257
|
+
* });
|
|
3258
|
+
*
|
|
3259
|
+
* @remarks
|
|
3260
|
+
* If your controller is not async, and you are not creating it async, then
|
|
3261
|
+
* you are not required to use controller.use - you can use it directly.
|
|
3262
|
+
* Similarly, accessing controllers after componentWillLoad callback does not
|
|
3263
|
+
* require awaiting them as they are guaranteed to be loaded by then.
|
|
3264
|
+
*/
|
|
3265
|
+
get use() {
|
|
3266
|
+
_Controller.internals.setAmbientComponent(this.component);
|
|
3267
|
+
return _Controller.internals.use;
|
|
3268
|
+
}
|
|
3269
|
+
/**
|
|
3270
|
+
* Just like controller.use, but returns the controller itself, rather than it's
|
|
3271
|
+
* exports
|
|
3272
|
+
*
|
|
3273
|
+
* Use cases:
|
|
3274
|
+
* - You have a controller and you want to make sure it's loaded before you
|
|
3275
|
+
* try to use it
|
|
3276
|
+
* - Your controller is not using exports, so you wish to access some props on
|
|
3277
|
+
* it directly
|
|
3278
|
+
* - You have a controller exports only, and you want to retrieve the
|
|
3279
|
+
* controller itself. This is useful if you wish to call .watchExports() or
|
|
3280
|
+
* some other method on the controller
|
|
3281
|
+
*/
|
|
3282
|
+
get useRef() {
|
|
3283
|
+
_Controller.internals.setAmbientComponent(this.component);
|
|
3284
|
+
return _Controller.internals.useRef;
|
|
3285
|
+
}
|
|
3286
|
+
/**
|
|
3287
|
+
* Like useRef, but doesn't wait for the controller to get ready
|
|
3288
|
+
*/
|
|
3289
|
+
get useRefSync() {
|
|
3290
|
+
_Controller.internals.setAmbientComponent(this.component);
|
|
3291
|
+
return _Controller.internals.useRefSync;
|
|
3292
|
+
}
|
|
3293
|
+
/**
|
|
3294
|
+
* If you need to set a prop/state without triggering the custom setter you
|
|
3295
|
+
* defined with getSet()/dynamicGetSet()/readonly(), set the value inside
|
|
3296
|
+
* of this function
|
|
3297
|
+
*
|
|
3298
|
+
* @example
|
|
3299
|
+
* @Prop() readOnly = this.manager.readOnly(true);
|
|
3300
|
+
*
|
|
3301
|
+
* someAction(): void {
|
|
3302
|
+
* this.manager.bypassSetter(()=>{
|
|
3303
|
+
* this.readOnly = false;
|
|
3304
|
+
* });
|
|
3305
|
+
* }
|
|
3306
|
+
*
|
|
3307
|
+
*/
|
|
3308
|
+
bypassSetter(callback) {
|
|
3309
|
+
_Controller.internals.shouldBypassSetter = true;
|
|
3310
|
+
try {
|
|
3311
|
+
return callback();
|
|
3312
|
+
} finally {
|
|
3313
|
+
_Controller.internals.shouldBypassSetter = false;
|
|
3314
|
+
}
|
|
3315
|
+
}
|
|
3316
|
+
/**
|
|
3317
|
+
* Like bypassSetter, but only bypasses this.manager.readonly(), rather that
|
|
3318
|
+
* all setters set using this.manager.getSet()
|
|
3319
|
+
*/
|
|
3320
|
+
bypassReadonly(callback) {
|
|
3321
|
+
_Controller.internals.shouldBypassReadonly = true;
|
|
3322
|
+
try {
|
|
3323
|
+
return callback();
|
|
3324
|
+
} finally {
|
|
3325
|
+
_Controller.internals.shouldBypassReadonly = false;
|
|
3326
|
+
}
|
|
3327
|
+
}
|
|
3328
|
+
/**
|
|
3329
|
+
* Property reads inside of this function will bypass any custom getter you
|
|
3330
|
+
* may have, and read the value directly from what's stored in Stencil/Lit.
|
|
3331
|
+
*
|
|
3332
|
+
* This also bypasses reactiveUtils integration - reading a property inside of
|
|
3333
|
+
* bypassGetter won't make that property tracked.
|
|
3334
|
+
*
|
|
3335
|
+
* @example
|
|
3336
|
+
* reactiveUtils.watch(
|
|
3337
|
+
* ()=>{
|
|
3338
|
+
* this.manager.bypassGetter(()=>{
|
|
3339
|
+
* console.log(this.someProp);
|
|
3340
|
+
* });
|
|
3341
|
+
* return this.prop;
|
|
3342
|
+
* },
|
|
3343
|
+
* console.log
|
|
3344
|
+
* )
|
|
3345
|
+
*/
|
|
3346
|
+
bypassGetter(callback) {
|
|
3347
|
+
_Controller.internals.shouldBypassGetter = true;
|
|
3348
|
+
try {
|
|
3349
|
+
return callback();
|
|
3350
|
+
} finally {
|
|
3351
|
+
_Controller.internals.shouldBypassGetter = false;
|
|
3352
|
+
}
|
|
3353
|
+
}
|
|
3354
|
+
/**
|
|
3355
|
+
* Like this.manager.getSet(), but can be called on any component's
|
|
3356
|
+
* state/prop from anywhere, rather than just from the default value
|
|
3357
|
+
*/
|
|
3358
|
+
dynamicGetSet(name, getSet) {
|
|
3359
|
+
this.genericGetSet(name, getSet);
|
|
3360
|
+
}
|
|
3361
|
+
/**
|
|
3362
|
+
* Like dynamicGetSet, but less type-safe. Useful in cases when trying to set
|
|
3363
|
+
* getters/setters in place where property names & types are not known
|
|
3364
|
+
* statically
|
|
3365
|
+
*/
|
|
3366
|
+
genericGetSet(property, getSet) {
|
|
3367
|
+
var _a2, _b;
|
|
3368
|
+
const genericGetSet = getSet;
|
|
3369
|
+
const internals = this.component.manager.internals;
|
|
3370
|
+
if (typeof genericGetSet.get === "function") {
|
|
3371
|
+
(_a2 = internals.getters)[property] ?? (_a2[property] = []);
|
|
3372
|
+
internals.getters[property].unshift(genericGetSet.get);
|
|
3373
|
+
}
|
|
3374
|
+
const set = genericGetSet.set === "ignore" ? ignoreSet : genericGetSet.set;
|
|
3375
|
+
if (set) {
|
|
3376
|
+
(_b = internals.setters)[property] ?? (_b[property] = []);
|
|
3377
|
+
internals.setters[property].unshift(set);
|
|
3378
|
+
}
|
|
3379
|
+
}
|
|
3380
|
+
// FEATURE: improve typings
|
|
3381
|
+
/**
|
|
3382
|
+
* Dynamically set a watcher for any reactive property
|
|
3383
|
+
*/
|
|
3384
|
+
watch(property, callback) {
|
|
3385
|
+
var _a2;
|
|
3386
|
+
const type = getMemberType(this.component, property);
|
|
3387
|
+
if (type === void 0) {
|
|
3388
|
+
throw new Error(
|
|
3389
|
+
`Trying to watch a non-@property, non-@state property "${property}". Either convert it into a @state() or use get/set syntax`
|
|
3390
|
+
);
|
|
3391
|
+
}
|
|
3392
|
+
const internals = this.component.manager.internals;
|
|
3393
|
+
(_a2 = internals.allWatchers)[property] ?? (_a2[property] = []);
|
|
3394
|
+
const watchers = internals.allWatchers[property];
|
|
3395
|
+
const genericCallback = callback;
|
|
3396
|
+
const safeCallback = (newValue, oldValue, propertyName) => safeCall(genericCallback, null, newValue, oldValue, propertyName);
|
|
3397
|
+
watchers.push(safeCallback);
|
|
3398
|
+
return () => {
|
|
3399
|
+
const index = watchers.indexOf(safeCallback);
|
|
3400
|
+
if (index !== -1) {
|
|
3401
|
+
watchers.splice(index, 1);
|
|
3402
|
+
}
|
|
3403
|
+
};
|
|
3404
|
+
}
|
|
3405
|
+
controllerRemoved() {
|
|
3406
|
+
if (this.component.el.isConnected) {
|
|
3407
|
+
this.triggerDisconnected();
|
|
3408
|
+
}
|
|
3409
|
+
this.triggerDestroy();
|
|
3410
|
+
}
|
|
3411
|
+
// Register a lifecycle callback
|
|
3412
|
+
onConnected(callback) {
|
|
3413
|
+
this._callbacks.hostConnected.push(callback);
|
|
3414
|
+
}
|
|
3415
|
+
onDisconnected(callback) {
|
|
3416
|
+
this._callbacks.hostDisconnected.push(callback);
|
|
3417
|
+
}
|
|
3418
|
+
onLoad(callback) {
|
|
3419
|
+
this._callbacks.hostLoad.push(callback);
|
|
3420
|
+
}
|
|
3421
|
+
onLoaded(callback) {
|
|
3422
|
+
this._callbacks.hostLoaded.push(callback);
|
|
3423
|
+
}
|
|
3424
|
+
onUpdate(callback) {
|
|
3425
|
+
this._callbacks.hostUpdate.push(callback);
|
|
3426
|
+
}
|
|
3427
|
+
onUpdated(callback) {
|
|
3428
|
+
this._callbacks.hostUpdated.push(callback);
|
|
3429
|
+
}
|
|
3430
|
+
onDestroy(callback) {
|
|
3431
|
+
this.component.manager.ensureHasDestroy();
|
|
3432
|
+
this._callbacks.hostDestroy.push(callback);
|
|
3433
|
+
}
|
|
3434
|
+
onLifecycle(callback) {
|
|
3435
|
+
this._callbacks.hostLifecycle.push(callback);
|
|
3436
|
+
if (this.connectedCalled && this.component.el.isConnected) {
|
|
3437
|
+
this._callLifecycle(callback);
|
|
3438
|
+
}
|
|
3439
|
+
}
|
|
3440
|
+
// Call each lifecycle hook
|
|
3441
|
+
triggerConnected() {
|
|
3442
|
+
const genericController = this;
|
|
3443
|
+
if (genericController.hostConnected) {
|
|
3444
|
+
safeCall(genericController.hostConnected, genericController);
|
|
3445
|
+
}
|
|
3446
|
+
this._callbacks.hostConnected.forEach(safeCall);
|
|
3447
|
+
this.triggerLifecycle();
|
|
3448
|
+
this.connectedCalled = true;
|
|
3449
|
+
}
|
|
3450
|
+
triggerDisconnected() {
|
|
3451
|
+
const genericController = this;
|
|
3452
|
+
if (genericController.hostDisconnected) {
|
|
3453
|
+
safeCall(genericController.hostDisconnected, genericController);
|
|
3454
|
+
}
|
|
3455
|
+
this._callbacks.hostDisconnected.forEach(safeCall);
|
|
3456
|
+
this._lifecycleDisconnected.forEach(safeCall);
|
|
3457
|
+
this._lifecycleDisconnected = [];
|
|
3458
|
+
}
|
|
3459
|
+
async triggerLoad() {
|
|
3460
|
+
if (this.willLoadCalled) {
|
|
3461
|
+
return;
|
|
3462
|
+
}
|
|
3463
|
+
this.willLoadCalled = true;
|
|
3464
|
+
const genericController = this;
|
|
3465
|
+
if (genericController.hostLoad) {
|
|
3466
|
+
await safeAsyncCall(genericController.hostLoad, genericController);
|
|
3467
|
+
}
|
|
3468
|
+
if (this._callbacks.hostLoad.length > 0) {
|
|
3469
|
+
await Promise.allSettled(this._callbacks.hostLoad.map(safeAsyncCall));
|
|
3470
|
+
}
|
|
3471
|
+
this._ready.resolve(this._exports);
|
|
3472
|
+
}
|
|
3473
|
+
triggerLoaded() {
|
|
3474
|
+
if (this.didLoadCalled) {
|
|
3475
|
+
return;
|
|
3476
|
+
}
|
|
3477
|
+
const genericController = this;
|
|
3478
|
+
if (genericController.hostLoaded) {
|
|
3479
|
+
safeCall(genericController.hostLoaded, genericController);
|
|
3480
|
+
}
|
|
3481
|
+
this._callbacks.hostLoaded.forEach(safeCall);
|
|
3482
|
+
this.didLoadCalled = true;
|
|
3483
|
+
}
|
|
3484
|
+
triggerUpdate() {
|
|
3485
|
+
const genericController = this;
|
|
3486
|
+
if (genericController.hostUpdate) {
|
|
3487
|
+
safeCall(genericController.hostUpdate, genericController);
|
|
3488
|
+
}
|
|
3489
|
+
this._callbacks.hostUpdate.forEach(safeCall);
|
|
3490
|
+
}
|
|
3491
|
+
triggerUpdated() {
|
|
3492
|
+
const genericController = this;
|
|
3493
|
+
if (genericController.hostUpdated) {
|
|
3494
|
+
safeCall(genericController.hostUpdated, genericController);
|
|
3495
|
+
}
|
|
3496
|
+
this._callbacks.hostUpdated.forEach(safeCall);
|
|
3497
|
+
}
|
|
3498
|
+
triggerDestroy() {
|
|
3499
|
+
const genericController = this;
|
|
3500
|
+
if (genericController.hostDestroy) {
|
|
3501
|
+
safeCall(genericController.hostDestroy, genericController);
|
|
3502
|
+
}
|
|
3503
|
+
this._callbacks.hostDestroy.forEach(safeCall);
|
|
3504
|
+
}
|
|
3505
|
+
triggerLifecycle() {
|
|
3506
|
+
const genericController = this;
|
|
3507
|
+
if (genericController.hostLifecycle) {
|
|
3508
|
+
this._callLifecycle(() => genericController.hostLifecycle());
|
|
3509
|
+
}
|
|
3510
|
+
this._callbacks.hostLifecycle.forEach((callback) => this._callLifecycle(callback));
|
|
3511
|
+
}
|
|
3512
|
+
_callLifecycle(callback) {
|
|
3513
|
+
_Controller.internals.setAmbientComponent(this.component);
|
|
3514
|
+
const cleanupRaw = safeCall(callback);
|
|
3515
|
+
const cleanup = Array.isArray(cleanupRaw) ? cleanupRaw : [cleanupRaw];
|
|
3516
|
+
cleanup.forEach((cleanup2) => {
|
|
3517
|
+
if (typeof cleanup2 === "function") {
|
|
3518
|
+
this._lifecycleDisconnected.push(cleanup2);
|
|
3519
|
+
} else if (typeof cleanup2 === "object" && typeof cleanup2.remove === "function") {
|
|
3520
|
+
this._lifecycleDisconnected.push(cleanup2.remove);
|
|
3521
|
+
}
|
|
3522
|
+
});
|
|
3523
|
+
}
|
|
3524
|
+
};
|
|
3525
|
+
_a = controllerSymbol;
|
|
3526
|
+
_Controller.internals = new ControllerInternals();
|
|
3527
|
+
var Controller = _Controller;
|
|
3528
|
+
var GenericController = class extends Controller {
|
|
3529
|
+
// Redundant constructor needed to improve typing
|
|
3530
|
+
constructor(component) {
|
|
3531
|
+
super(component);
|
|
3532
|
+
}
|
|
3533
|
+
// Overriding super's watch only to improve typing
|
|
3534
|
+
watch(property, callback) {
|
|
3535
|
+
return super.watch(
|
|
3536
|
+
property,
|
|
3537
|
+
callback
|
|
3538
|
+
);
|
|
3539
|
+
}
|
|
3540
|
+
dynamicGetSet(property, getSet) {
|
|
3541
|
+
super.genericGetSet(property, getSet);
|
|
3542
|
+
}
|
|
3543
|
+
};
|
|
3544
|
+
function makeProvisionalValue(base) {
|
|
3545
|
+
if (typeof base !== "object" && typeof base !== "function" || base === null) {
|
|
3546
|
+
return base;
|
|
3547
|
+
}
|
|
3548
|
+
const proxy2 = new Proxy(base, {
|
|
3549
|
+
get(target, prop, receiver) {
|
|
3550
|
+
if (cyclical.has(prop) && prop in target && target[prop] === proxy2) {
|
|
3551
|
+
return void 0;
|
|
3552
|
+
}
|
|
3553
|
+
if (prop in target || prop in Promise.prototype || typeof prop === "symbol") {
|
|
3554
|
+
return typeof target === "function" ? target[prop] : Reflect.get(target, prop, receiver);
|
|
3555
|
+
}
|
|
3556
|
+
console.error(`Trying to access "${prop.toString()}" on the controller before it's loaded. ${accessBeforeLoad}`);
|
|
3557
|
+
return void 0;
|
|
3558
|
+
},
|
|
3559
|
+
set(target, prop, newValue, receiver) {
|
|
3560
|
+
console.error(`Trying to set "${prop.toString()}" on the controller before it's loaded. ${accessBeforeLoad}`);
|
|
3561
|
+
return Reflect.set(target, prop, newValue, receiver);
|
|
3562
|
+
}
|
|
3563
|
+
});
|
|
3564
|
+
return proxy2;
|
|
3565
|
+
}
|
|
3566
|
+
var cyclical = /* @__PURE__ */ new Set(["exports", "_exports"]);
|
|
3567
|
+
var accessBeforeLoad = "" ;
|
|
3568
|
+
function toControllerHost(component) {
|
|
3569
|
+
if ("addController" in component) {
|
|
3570
|
+
return component;
|
|
3571
|
+
} else {
|
|
3572
|
+
throw new Error(
|
|
3573
|
+
"Component does not implement ControllerHost. This might be because you forgot to add 'manager: Controller<this> = useControllerManager(this);' in your component, or you tried to use some controller before that line"
|
|
3574
|
+
);
|
|
3575
|
+
}
|
|
3576
|
+
}
|
|
3577
|
+
var ignoreSet = (_, value) => value;
|
|
3578
|
+
function trackPropertyKey(object, onResolved, defaultValue) {
|
|
3579
|
+
const keys = Object.keys(object);
|
|
3580
|
+
const keyCount = keys.length;
|
|
3581
|
+
if (keyTrackMap === void 0) {
|
|
3582
|
+
queueMicrotask(keyTrackResolve);
|
|
3583
|
+
}
|
|
3584
|
+
keyTrackMap ?? (keyTrackMap = /* @__PURE__ */ new Map());
|
|
3585
|
+
let pendingTrackers = keyTrackMap.get(object);
|
|
3586
|
+
if (pendingTrackers === void 0) {
|
|
3587
|
+
pendingTrackers = { callbacks: [], keyCount };
|
|
3588
|
+
keyTrackMap.set(object, pendingTrackers);
|
|
3589
|
+
}
|
|
3590
|
+
if (pendingTrackers.keyCount !== keyCount) {
|
|
3591
|
+
pendingTrackers.callbacks.forEach((resolve) => resolve(keys));
|
|
3592
|
+
pendingTrackers.callbacks = [];
|
|
3593
|
+
pendingTrackers.keyCount = keyCount;
|
|
3594
|
+
}
|
|
3595
|
+
pendingTrackers.callbacks.push((keys2) => {
|
|
3596
|
+
const callback = (key2) => safeCall(onResolved, null, key2);
|
|
3597
|
+
const key = keys2[keyCount];
|
|
3598
|
+
if (key === void 0) {
|
|
3599
|
+
callback(void 0);
|
|
3600
|
+
} else if (object[key] === defaultValue) {
|
|
3601
|
+
callback(key);
|
|
3602
|
+
} else {
|
|
3603
|
+
callback(void 0);
|
|
3604
|
+
}
|
|
3605
|
+
});
|
|
3606
|
+
return defaultValue;
|
|
3607
|
+
}
|
|
3608
|
+
var keyTrackMap = void 0;
|
|
3609
|
+
function keyTrackResolve() {
|
|
3610
|
+
Array.from(keyTrackMap?.entries() ?? []).forEach(([object, { callbacks }]) => {
|
|
3611
|
+
const keys = Object.keys(object);
|
|
3612
|
+
callbacks.forEach((commit) => commit(keys));
|
|
3613
|
+
});
|
|
3614
|
+
keyTrackMap = void 0;
|
|
3615
|
+
}
|
|
3616
|
+
var ComponentInternals = class {
|
|
3617
|
+
constructor(component) {
|
|
3618
|
+
/**
|
|
3619
|
+
* When watchers are set, set then into `allWatchers`. When watchers are read
|
|
3620
|
+
* in the setter, read from `enabledWatchers`.
|
|
3621
|
+
* On connectedCallback(), controller manager does `enabledWatchers=allWatchers`.
|
|
3622
|
+
* Reasoning:
|
|
3623
|
+
* - This disables watchers until connected callback (matches behavior of
|
|
3624
|
+
* Stencil's watchers)
|
|
3625
|
+
* - This removes in the setter to check if watchers were enabled already or
|
|
3626
|
+
* not (as getters/setters are hot path, and should be streamlined)
|
|
3627
|
+
*/
|
|
3628
|
+
this.enabledWatchers = {};
|
|
3629
|
+
this.allWatchers = {};
|
|
3630
|
+
this.trackKey = (hostsCandidates, onResolved, defaultValue) => {
|
|
3631
|
+
const candidateHosts = Array.isArray(hostsCandidates) ? hostsCandidates : [hostsCandidates];
|
|
3632
|
+
let leftToResolve = candidateHosts.length + 1;
|
|
3633
|
+
const resolved = (resolution) => {
|
|
3634
|
+
leftToResolve -= 1;
|
|
3635
|
+
if (resolution !== void 0) {
|
|
3636
|
+
leftToResolve = 0;
|
|
3637
|
+
}
|
|
3638
|
+
if (leftToResolve === 0) {
|
|
3639
|
+
onResolved(resolution);
|
|
3640
|
+
}
|
|
3641
|
+
};
|
|
3642
|
+
candidateHosts.forEach(
|
|
3643
|
+
(host) => this.component.manager.trackPropertyKey(
|
|
3644
|
+
host,
|
|
3645
|
+
(key) => resolved(
|
|
3646
|
+
key === void 0 ? void 0 : {
|
|
3647
|
+
key,
|
|
3648
|
+
host,
|
|
3649
|
+
type: "property",
|
|
3650
|
+
domValue: void 0
|
|
3651
|
+
}
|
|
3652
|
+
),
|
|
3653
|
+
defaultValue
|
|
3654
|
+
)
|
|
3655
|
+
);
|
|
3656
|
+
this.component.manager.trackPropKey((key, domValue) => {
|
|
3657
|
+
const propType = key === void 0 ? void 0 : getPropType(this.component, key);
|
|
3658
|
+
resolved(
|
|
3659
|
+
key === void 0 ? void 0 : {
|
|
3660
|
+
key,
|
|
3661
|
+
host: this.component,
|
|
3662
|
+
type: propType ?? "prop",
|
|
3663
|
+
domValue: propType === "prop" ? domValue : void 0
|
|
3664
|
+
}
|
|
3665
|
+
);
|
|
3666
|
+
}, defaultValue);
|
|
3667
|
+
return defaultValue;
|
|
3668
|
+
};
|
|
3669
|
+
this.trackPropKey = (onResolved, defaultValue) => {
|
|
3670
|
+
if (this._trackedValue !== nothing && this._trackedValue !== defaultValue) {
|
|
3671
|
+
this._firePropertyTrackers(void 0, void 0, void 0);
|
|
3672
|
+
}
|
|
3673
|
+
if (this._keyTrackers.length === 0) {
|
|
3674
|
+
queueMicrotask(() => this._firePropertyTrackers(void 0, void 0, void 0));
|
|
3675
|
+
}
|
|
3676
|
+
this._trackedValue = defaultValue;
|
|
3677
|
+
this._keyTrackers.push(
|
|
3678
|
+
(key, value, previousValue) => safeCall(onResolved, void 0, defaultValue === value ? key : void 0, previousValue)
|
|
3679
|
+
);
|
|
3680
|
+
return defaultValue;
|
|
3681
|
+
};
|
|
3682
|
+
this._trackedValue = nothing;
|
|
3683
|
+
this._keyTrackers = [];
|
|
3684
|
+
this.getters = {};
|
|
3685
|
+
this.setters = {};
|
|
3686
|
+
this.accessorGetter = {};
|
|
3687
|
+
this.accessorSetter = {};
|
|
3688
|
+
this.reactiveUtilsIntegrations = /* @__PURE__ */ new Set();
|
|
3689
|
+
this._exports = /* @__PURE__ */ new WeakMap();
|
|
3690
|
+
Object.defineProperty(this, "component", {
|
|
3691
|
+
writable: false,
|
|
3692
|
+
enumerable: false,
|
|
3693
|
+
configurable: true,
|
|
3694
|
+
value: component
|
|
3695
|
+
});
|
|
3696
|
+
}
|
|
3697
|
+
_firePropertyTrackers(key, value, oldValue) {
|
|
3698
|
+
const trackers = this._keyTrackers;
|
|
3699
|
+
this._trackedValue = nothing;
|
|
3700
|
+
this._keyTrackers = [];
|
|
3701
|
+
trackers.forEach((tracker) => tracker(key, value, oldValue));
|
|
3702
|
+
}
|
|
3703
|
+
/**
|
|
3704
|
+
* Configure a getter or setter for a given \@Prop/\@State
|
|
3705
|
+
*
|
|
3706
|
+
* Note, since props are defined on the prototype, they are shared between all
|
|
3707
|
+
* instances of a component. Thus, instead of passing a reference to the
|
|
3708
|
+
* getter/setter function, you should update the
|
|
3709
|
+
* ComponentInternals.getters/setters properties, and then call getSetProxy
|
|
3710
|
+
* to apply the changes to the prototype
|
|
3711
|
+
*/
|
|
3712
|
+
getSetProxy(property, hasGetter, hasSetter) {
|
|
3713
|
+
const component = this.component;
|
|
3714
|
+
const classPrototype = component.constructor.prototype;
|
|
3715
|
+
this._getSetProxy(classPrototype, property, hasGetter, hasSetter, "class");
|
|
3716
|
+
if (component.manager.isLit) {
|
|
3717
|
+
return;
|
|
3718
|
+
}
|
|
3719
|
+
const htmlPrototype = component.el.constructor.prototype;
|
|
3720
|
+
if (classPrototype !== htmlPrototype) {
|
|
3721
|
+
this._getSetProxy(htmlPrototype, property, hasGetter, hasSetter, "html");
|
|
3722
|
+
}
|
|
3723
|
+
}
|
|
3724
|
+
_getSetProxy(prototype, name, hasGetter, hasSetter, type) {
|
|
3725
|
+
const component = this.component;
|
|
3726
|
+
const propType = getMemberType(component, name);
|
|
3727
|
+
const descriptor = Object.getOwnPropertyDescriptor(prototype, name);
|
|
3728
|
+
const tolerateNotFound = type === "html";
|
|
3729
|
+
if (descriptor?.set === void 0 || descriptor.get === void 0) {
|
|
3730
|
+
if (descriptor !== void 0 && "value" in descriptor) {
|
|
3731
|
+
throw new Error(
|
|
3732
|
+
`getSet() should only be used on @Prop/@property/@State/@state properties. For internal component properties, use regular get/set syntax. Tried to use it on "${name}" in ${component.el.tagName}`
|
|
3733
|
+
);
|
|
3734
|
+
} else if (tolerateNotFound) {
|
|
3735
|
+
return;
|
|
3736
|
+
} else {
|
|
3737
|
+
throw new Error(`Unable to find "${name}" property on the ${component.el.tagName} component`);
|
|
3738
|
+
}
|
|
3739
|
+
}
|
|
3740
|
+
const { get: originalGet, set: originalSet } = descriptor;
|
|
3741
|
+
const isGetterAlreadyOverwritten = customAccessor in originalGet;
|
|
3742
|
+
const isSetterAlreadyOverwritten = customAccessor in originalSet;
|
|
3743
|
+
const shouldOverwriteGet = !isGetterAlreadyOverwritten && hasGetter;
|
|
3744
|
+
const shouldOverwriteSet = !isSetterAlreadyOverwritten && hasSetter;
|
|
3745
|
+
if (!shouldOverwriteGet && !shouldOverwriteSet) {
|
|
3746
|
+
return;
|
|
3747
|
+
}
|
|
3748
|
+
const finalGetter = shouldOverwriteGet ? function getter() {
|
|
3749
|
+
let value = originalGet.call(this);
|
|
3750
|
+
const component2 = Controller.internals.elementToInstance.get(this);
|
|
3751
|
+
if (Controller.internals.shouldBypassGetter || component2 === void 0) {
|
|
3752
|
+
return value;
|
|
3753
|
+
}
|
|
3754
|
+
const internals = component2.manager.internals;
|
|
3755
|
+
value = internals.accessorGetter[name](value, name);
|
|
3756
|
+
const getters = internals.getters[name] ?? emptyArray;
|
|
3757
|
+
for (let i = 0; i < getters.length; i++) {
|
|
3758
|
+
value = getters[i](value, name);
|
|
3759
|
+
}
|
|
3760
|
+
return value;
|
|
3761
|
+
} : originalGet;
|
|
3762
|
+
const finalSetter = shouldOverwriteSet ? function setter(rawNewValue) {
|
|
3763
|
+
const oldValue = originalGet.call(this);
|
|
3764
|
+
const component2 = Controller.internals.elementToInstance.get(this);
|
|
3765
|
+
if (component2 === void 0) {
|
|
3766
|
+
originalSet.call(this, rawNewValue);
|
|
3767
|
+
return;
|
|
3768
|
+
}
|
|
3769
|
+
let newValue = component2.manager.isLit ? rawNewValue : parsePropertyValue(rawNewValue, propType);
|
|
3770
|
+
const internals = component2.manager.internals;
|
|
3771
|
+
if (newValue === oldValue) {
|
|
3772
|
+
originalSet.call(this, rawNewValue);
|
|
3773
|
+
} else {
|
|
3774
|
+
const setters = Controller.internals.shouldBypassSetter ? emptyArray : internals.setters[name] ?? emptyArray;
|
|
3775
|
+
for (let i = 0; i < setters.length; i++) {
|
|
3776
|
+
newValue = setters[i](newValue, oldValue, name);
|
|
3777
|
+
if (newValue === oldValue) {
|
|
3778
|
+
break;
|
|
3779
|
+
}
|
|
3780
|
+
}
|
|
3781
|
+
newValue = internals.accessorSetter[name](newValue, oldValue, name);
|
|
3782
|
+
originalSet.call(this, newValue);
|
|
3783
|
+
if (newValue !== oldValue) {
|
|
3784
|
+
internals.enabledWatchers[name]?.forEach((watcher) => watcher(newValue, oldValue, name));
|
|
3785
|
+
}
|
|
3786
|
+
}
|
|
3787
|
+
if (internals._keyTrackers.length > 0) {
|
|
3788
|
+
internals?._firePropertyTrackers(name, rawNewValue, oldValue);
|
|
3789
|
+
}
|
|
3790
|
+
} : originalSet;
|
|
3791
|
+
if (shouldOverwriteGet) {
|
|
3792
|
+
Object.defineProperty(finalGetter, customAccessor, { value: true });
|
|
3793
|
+
}
|
|
3794
|
+
if (shouldOverwriteSet) {
|
|
3795
|
+
Object.defineProperty(finalSetter, customAccessor, { value: true });
|
|
3796
|
+
}
|
|
3797
|
+
Object.defineProperty(prototype, name, {
|
|
3798
|
+
...descriptor,
|
|
3799
|
+
get: finalGetter,
|
|
3800
|
+
set: finalSetter
|
|
3801
|
+
});
|
|
3802
|
+
}
|
|
3803
|
+
/**
|
|
3804
|
+
* Associate an exports object with a controller for reverse lookup in
|
|
3805
|
+
* controller.use
|
|
3806
|
+
*/
|
|
3807
|
+
markExports(controller, exports) {
|
|
3808
|
+
if (typeof exports === "object" && exports !== null || typeof exports === "function") {
|
|
3809
|
+
this._exports.set(exports, controller);
|
|
3810
|
+
}
|
|
3811
|
+
}
|
|
3812
|
+
resolveExports(exports) {
|
|
3813
|
+
if (typeof exports === "object" && exports !== null || typeof exports === "function") {
|
|
3814
|
+
return this._exports.get(exports);
|
|
3815
|
+
} else {
|
|
3816
|
+
return void 0;
|
|
3817
|
+
}
|
|
3818
|
+
}
|
|
3819
|
+
};
|
|
3820
|
+
var emptyArray = [];
|
|
3821
|
+
var customAccessor = Symbol("controllersCustomAccessor");
|
|
3822
|
+
var nothing = Symbol("nothing");
|
|
3823
|
+
var useControllerManager = (component, forceUpdate) => new ControllerManager(component, forceUpdate);
|
|
3824
|
+
var ControllerManager = class extends GenericController {
|
|
3825
|
+
constructor(component, forceUpdate) {
|
|
3826
|
+
const isLit = "addController" in component;
|
|
3827
|
+
const controllers = /* @__PURE__ */ new Set();
|
|
3828
|
+
function addController(controller) {
|
|
3829
|
+
controllers.add(controller);
|
|
3830
|
+
if (isLit && !(controllerSymbol in controller) && component.el.isConnected) {
|
|
3831
|
+
controller.hostConnected?.();
|
|
3832
|
+
}
|
|
3833
|
+
}
|
|
3834
|
+
function removeController(controller) {
|
|
3835
|
+
void controllers.delete(controller);
|
|
3836
|
+
controller.controllerRemoved?.();
|
|
3837
|
+
}
|
|
3838
|
+
const controllerHost = component;
|
|
3839
|
+
controllerHost.addController = addController;
|
|
3840
|
+
controllerHost.removeController = removeController;
|
|
3841
|
+
if (!isLit) {
|
|
3842
|
+
const update = forceUpdate ?? component.constructor.__forceUpdate;
|
|
3843
|
+
controllerHost.requestUpdate = () => update(component);
|
|
3844
|
+
}
|
|
3845
|
+
super(component);
|
|
3846
|
+
this.internals = new ComponentInternals(this.component);
|
|
3847
|
+
this.destroyed = false;
|
|
3848
|
+
this._updatePromise = new Deferred();
|
|
3849
|
+
this._originalLifecycles = {};
|
|
3850
|
+
/**
|
|
3851
|
+
* A magical solution to finding out what property name a given controller
|
|
3852
|
+
* on a given object was assigned to. Note, this does not work for properties
|
|
3853
|
+
* that have \@Prop() or \@State() decorator - for those, use
|
|
3854
|
+
* manager.trackPropKey() instead.
|
|
3855
|
+
*
|
|
3856
|
+
* @example
|
|
3857
|
+
* function trackMe<T>(defaultValue:T, component:BaseComponent):T {
|
|
3858
|
+
* component.manager.trackPropertyKey(component, (key)=>console.log(key), defaultValue);
|
|
3859
|
+
* return defaultValue;
|
|
3860
|
+
* }
|
|
3861
|
+
*
|
|
3862
|
+
* class MyComponent extends BaseComponent {
|
|
3863
|
+
* // Will console log "myProp"
|
|
3864
|
+
* myProp = trackMe('a', this);
|
|
3865
|
+
* }
|
|
3866
|
+
*
|
|
3867
|
+
*/
|
|
3868
|
+
this.trackPropertyKey = trackPropertyKey;
|
|
3869
|
+
/**
|
|
3870
|
+
* Like manager.trackPropertyKey(), but for props that have \@State() or \@Prop()
|
|
3871
|
+
* decorator
|
|
3872
|
+
*
|
|
3873
|
+
* @example
|
|
3874
|
+
* function trackMe(component:BaseComponent) {
|
|
3875
|
+
* component.manager.trackPropKey((key)=>console.log(key));
|
|
3876
|
+
* }
|
|
3877
|
+
*
|
|
3878
|
+
* class MyComponent extends BaseComponent {
|
|
3879
|
+
* // Will console log "myProp"
|
|
3880
|
+
* @Prop() myProp = trackMe(this);
|
|
3881
|
+
*
|
|
3882
|
+
* // Will console log "myState"
|
|
3883
|
+
* @State() myState = trackMe(this);
|
|
3884
|
+
* }
|
|
3885
|
+
*/
|
|
3886
|
+
this.trackPropKey = this.internals.trackPropKey;
|
|
3887
|
+
/**
|
|
3888
|
+
* A combination of trackPropertyKey() and trackPropKey(). For usage when
|
|
3889
|
+
* you want to track a property, but don't know if it will be defined with the
|
|
3890
|
+
* \@Prop() decorator or not
|
|
3891
|
+
*/
|
|
3892
|
+
this.trackKey = this.internals.trackKey;
|
|
3893
|
+
this._readonlySetter = (newValue, oldValue, property) => {
|
|
3894
|
+
if (Controller.internals.shouldBypassReadonly) {
|
|
3895
|
+
return newValue;
|
|
3896
|
+
}
|
|
3897
|
+
const component = this.component;
|
|
3898
|
+
const isProp = getPropType(component, property) === "prop";
|
|
3899
|
+
if (isProp) {
|
|
3900
|
+
if (this.isLit) {
|
|
3901
|
+
const details = getLitProperties(component).get(property);
|
|
3902
|
+
if (details && details?.attribute !== false) {
|
|
3903
|
+
component.el.setAttribute(
|
|
3904
|
+
typeof details.attribute === "string" ? details.attribute : camelToKebab(property),
|
|
3905
|
+
// Not using converter.toAttribute to keep this unlikely case simpler
|
|
3906
|
+
String(oldValue)
|
|
3907
|
+
);
|
|
3908
|
+
}
|
|
3909
|
+
} else {
|
|
3910
|
+
component.requestUpdate();
|
|
3911
|
+
}
|
|
3912
|
+
}
|
|
3913
|
+
throw new Error(
|
|
3914
|
+
`Cannot assign to read-only property "${property}" of ${component.el.tagName.toLowerCase()}. Trying to assign "${String(
|
|
3915
|
+
newValue
|
|
3916
|
+
)}"`
|
|
3917
|
+
);
|
|
3918
|
+
};
|
|
3919
|
+
/**
|
|
3920
|
+
* In development, on hot module reload, controller would be re-initialized
|
|
3921
|
+
* with all Props and State values persistent, but properties lost. This unsafe
|
|
3922
|
+
* development-only API lets you set or get data for a controller that would
|
|
3923
|
+
* persist across hot reloads.
|
|
3924
|
+
*/
|
|
3925
|
+
this.devOnlySetPersistentControllerData = void 0 ;
|
|
3926
|
+
this.devOnlyGetPersistentControllerData = void 0 ;
|
|
3927
|
+
this.isLit = isLit;
|
|
3928
|
+
this.component.manager = this;
|
|
3929
|
+
retrieveComponentMembers(component, isLit);
|
|
3930
|
+
this._controllers = controllers;
|
|
3931
|
+
this.exports = void 0;
|
|
3932
|
+
this.hasDestroy = "autoDestroyDisabled" in this.component && typeof this.component.destroy === "function";
|
|
3933
|
+
if (this.hasDestroy) {
|
|
3934
|
+
this.watch("autoDestroyDisabled", () => this._autoDestroyDisabledWatcher());
|
|
3935
|
+
}
|
|
3936
|
+
this._bindLifecycleMethods();
|
|
3937
|
+
if (!isLit) {
|
|
3938
|
+
Object.defineProperty(component, "updateComplete", {
|
|
3939
|
+
get: async () => await this._updatePromise.promise
|
|
3940
|
+
});
|
|
3941
|
+
}
|
|
3942
|
+
const members = getPropLikeMembers(component);
|
|
3943
|
+
const internals = component.manager.internals;
|
|
3944
|
+
members.forEach((name) => {
|
|
3945
|
+
internals.accessorGetter[name] = defaultGetterSetter;
|
|
3946
|
+
internals.accessorSetter[name] = defaultGetterSetter;
|
|
3947
|
+
internals.getSetProxy(name, true, true);
|
|
3948
|
+
});
|
|
3949
|
+
Controller.internals.setParentController(void 0);
|
|
3950
|
+
Controller.internals.setAmbientComponent(component);
|
|
3951
|
+
Controller.internals.elementToInstance.set(component.el, component);
|
|
3952
|
+
Controller.internals.elementToInstance.set(component, component);
|
|
3953
|
+
}
|
|
3954
|
+
_bindLifecycleMethods() {
|
|
3955
|
+
const component = this.component;
|
|
3956
|
+
const isLit = this.isLit;
|
|
3957
|
+
this._originalLifecycles = {
|
|
3958
|
+
// These component's callbacks will be called by Lit, so we don't have to
|
|
3959
|
+
connectedCallback: isLit ? void 0 : component.connectedCallback,
|
|
3960
|
+
disconnectedCallback: isLit ? void 0 : component.disconnectedCallback,
|
|
3961
|
+
componentWillLoad: isLit ? void 0 : component.componentWillLoad,
|
|
3962
|
+
componentDidLoad: isLit ? void 0 : component.componentDidLoad,
|
|
3963
|
+
componentWillUpdate: isLit ? void 0 : component.componentWillUpdate,
|
|
3964
|
+
componentDidUpdate: isLit ? void 0 : component.componentDidUpdate,
|
|
3965
|
+
destroy: component.destroy
|
|
3966
|
+
};
|
|
3967
|
+
const hostConnected = this._connectedCallback.bind(this);
|
|
3968
|
+
const hostDisconnected = this._disconnectedCallback.bind(this);
|
|
3969
|
+
const hostUpdate = this._update.bind(this);
|
|
3970
|
+
const hostUpdated = this._updated.bind(this);
|
|
3971
|
+
if (isLit) {
|
|
3972
|
+
component.constructor.prototype.addController.call(component, {
|
|
3973
|
+
// Lit will call these callbacks
|
|
3974
|
+
hostConnected,
|
|
3975
|
+
hostDisconnected,
|
|
3976
|
+
hostUpdate,
|
|
3977
|
+
hostUpdated
|
|
3978
|
+
});
|
|
3979
|
+
} else {
|
|
3980
|
+
component.connectedCallback = hostConnected;
|
|
3981
|
+
component.disconnectedCallback = hostDisconnected;
|
|
3982
|
+
component.componentWillLoad = this._load.bind(this);
|
|
3983
|
+
component.componentDidLoad = this._loaded.bind(this);
|
|
3984
|
+
component.componentWillUpdate = hostUpdate;
|
|
3985
|
+
component.componentDidUpdate = hostUpdated;
|
|
3986
|
+
}
|
|
3987
|
+
if (this.hasDestroy) {
|
|
3988
|
+
component.destroy = this.destroy.bind(this);
|
|
3989
|
+
}
|
|
3990
|
+
}
|
|
3991
|
+
/**
|
|
3992
|
+
* Throws an error if component does not implement destroy() lifecycle, but
|
|
3993
|
+
* tries to use it.
|
|
3994
|
+
*/
|
|
3995
|
+
ensureHasDestroy() {
|
|
3996
|
+
if (!this.hasDestroy) {
|
|
3997
|
+
throw new Error(destroyErrorMessage);
|
|
3998
|
+
}
|
|
3999
|
+
}
|
|
4000
|
+
/**
|
|
4001
|
+
* Private because this is not supposed to be called by Component directly.
|
|
4002
|
+
* Instead, _bindLifecycleMethods will take care of that. Otherwise, you risk
|
|
4003
|
+
* calling lifecycle methods twice.
|
|
4004
|
+
*/
|
|
4005
|
+
_connectedCallback() {
|
|
4006
|
+
if (this.destroyed) {
|
|
4007
|
+
const tagName = this.component.el.tagName.toLowerCase();
|
|
4008
|
+
this.component.el.remove();
|
|
4009
|
+
throw new Error(
|
|
4010
|
+
`The ${tagName} component has already been destroyed. It can not be used again. If you meant to disconnect and reconnect a component without automatic destroy, set the autoDestroyDisabled prop.`
|
|
4011
|
+
);
|
|
4012
|
+
}
|
|
4013
|
+
if (this._autoDestroyTimeout !== void 0) {
|
|
4014
|
+
clearTimeout(this._autoDestroyTimeout);
|
|
4015
|
+
}
|
|
4016
|
+
this.internals.enabledWatchers = this.internals.allWatchers;
|
|
4017
|
+
keyTrackResolve();
|
|
4018
|
+
this._controllers.forEach(
|
|
4019
|
+
(controller) => "triggerConnected" in controller ? controller.triggerConnected() : safeCall(controller.hostConnected, controller)
|
|
4020
|
+
);
|
|
4021
|
+
this._originalLifecycles.connectedCallback?.call(this.component);
|
|
4022
|
+
}
|
|
4023
|
+
_disconnectedCallback() {
|
|
4024
|
+
if (this.destroyed) {
|
|
4025
|
+
return;
|
|
4026
|
+
}
|
|
4027
|
+
this._controllers.forEach(
|
|
4028
|
+
(controller) => "triggerDisconnected" in controller ? controller.triggerDisconnected() : safeCall(controller.hostDisconnected, controller)
|
|
4029
|
+
);
|
|
4030
|
+
this._originalLifecycles.disconnectedCallback?.call(this.component);
|
|
4031
|
+
if (this.hasDestroy) {
|
|
4032
|
+
this._autoDestroyDisabledWatcher();
|
|
4033
|
+
}
|
|
4034
|
+
}
|
|
4035
|
+
async _load() {
|
|
4036
|
+
const integrations = this.internals.reactiveUtilsIntegrations;
|
|
4037
|
+
if (integrations.size > 0) {
|
|
4038
|
+
for (const controller of integrations) {
|
|
4039
|
+
if ("triggerLoad" in controller) {
|
|
4040
|
+
await controller.triggerLoad();
|
|
4041
|
+
} else {
|
|
4042
|
+
await safeAsyncCall(controller.hostLoad, controller);
|
|
4043
|
+
}
|
|
4044
|
+
}
|
|
4045
|
+
}
|
|
4046
|
+
await Promise.allSettled(
|
|
4047
|
+
Array.from(
|
|
4048
|
+
this._controllers,
|
|
4049
|
+
async (controller) => integrations.has(controller) ? void 0 : "triggerLoad" in controller ? await controller.triggerLoad() : await safeAsyncCall(controller.hostLoad, controller)
|
|
4050
|
+
)
|
|
4051
|
+
);
|
|
4052
|
+
await this._originalLifecycles.componentWillLoad?.call(this.component);
|
|
4053
|
+
}
|
|
4054
|
+
_loaded() {
|
|
4055
|
+
this._controllers.forEach(
|
|
4056
|
+
(controller) => "triggerLoaded" in controller ? controller.triggerLoaded() : safeCall(controller.hostLoaded, controller)
|
|
4057
|
+
);
|
|
4058
|
+
this._originalLifecycles.componentDidLoad?.call(this.component);
|
|
4059
|
+
}
|
|
4060
|
+
_update() {
|
|
4061
|
+
this._controllers.forEach(
|
|
4062
|
+
(controller) => "triggerUpdate" in controller ? controller.triggerUpdate() : safeCall(controller.hostUpdate, controller)
|
|
4063
|
+
);
|
|
4064
|
+
void this._originalLifecycles.componentWillUpdate?.call(this.component);
|
|
4065
|
+
}
|
|
4066
|
+
_updated() {
|
|
4067
|
+
this._controllers.forEach(
|
|
4068
|
+
(controller) => "triggerUpdated" in controller ? controller.triggerUpdated() : safeCall(controller.hostUpdated, controller)
|
|
4069
|
+
);
|
|
4070
|
+
this._originalLifecycles.componentDidUpdate?.call(this.component);
|
|
4071
|
+
if (!this.isLit) {
|
|
4072
|
+
const updatePromise = this._updatePromise;
|
|
4073
|
+
this._updatePromise = new Deferred();
|
|
4074
|
+
updatePromise.resolve(true);
|
|
4075
|
+
}
|
|
4076
|
+
}
|
|
4077
|
+
async destroy() {
|
|
4078
|
+
this.ensureHasDestroy();
|
|
4079
|
+
if (this.destroyed) {
|
|
4080
|
+
return;
|
|
4081
|
+
}
|
|
4082
|
+
if (this.component.el.isConnected) {
|
|
4083
|
+
this.hasDestroy = false;
|
|
4084
|
+
try {
|
|
4085
|
+
this.component.el.remove();
|
|
4086
|
+
} finally {
|
|
4087
|
+
this.hasDestroy = true;
|
|
4088
|
+
}
|
|
4089
|
+
}
|
|
4090
|
+
this._autoDestroyTimeout = void 0;
|
|
4091
|
+
this.destroyed = true;
|
|
4092
|
+
this._controllers.forEach(
|
|
4093
|
+
(controller) => "triggerDestroy" in controller ? controller.triggerDestroy() : safeCall(controller.hostDestroy, controller)
|
|
4094
|
+
);
|
|
4095
|
+
this._controllers.clear();
|
|
4096
|
+
await this._originalLifecycles.destroy?.call(this.component);
|
|
4097
|
+
}
|
|
4098
|
+
_autoDestroyDisabledWatcher() {
|
|
4099
|
+
if (!this.component.el.isConnected && !this.component.autoDestroyDisabled) {
|
|
4100
|
+
if (this._autoDestroyTimeout !== void 0) {
|
|
4101
|
+
clearTimeout(this._autoDestroyTimeout);
|
|
4102
|
+
}
|
|
4103
|
+
const destroy = () => void this.destroy().catch(console.error);
|
|
4104
|
+
{
|
|
4105
|
+
this._autoDestroyTimeout = devToolsAwareTimeout(destroy, autoDestroyOnDisconnectTimeout);
|
|
4106
|
+
}
|
|
4107
|
+
}
|
|
4108
|
+
}
|
|
4109
|
+
// REFACTOR: replace this with a readonly:true option in @property()
|
|
4110
|
+
/**
|
|
4111
|
+
* Make a @Prop() or @State() readonly (prevent overwriting default value).
|
|
4112
|
+
*
|
|
4113
|
+
* For internal properties, prefer TypeScript's "readonly" modifier instead.
|
|
4114
|
+
*
|
|
4115
|
+
* @example
|
|
4116
|
+
* // Defining readonly prop
|
|
4117
|
+
* @Prop({ reflect: true }) prop = this.manager.readonly('a');
|
|
4118
|
+
*
|
|
4119
|
+
* @example
|
|
4120
|
+
* // Overwriting readonly prop internally
|
|
4121
|
+
* this.manager.bypassReadonly(()=>{
|
|
4122
|
+
* this.prop = 'b';
|
|
4123
|
+
* });
|
|
4124
|
+
*
|
|
4125
|
+
*/
|
|
4126
|
+
readonly(value) {
|
|
4127
|
+
return this.getSet(value, { set: this._readonlySetter });
|
|
4128
|
+
}
|
|
4129
|
+
// REFACTOR: remove this in Lit in favor of native get/set
|
|
4130
|
+
/**
|
|
4131
|
+
* Listen for any component's @State()/@Prop() change, and mutate it's
|
|
4132
|
+
* value before it is set.
|
|
4133
|
+
* This is necessary because Stencil's Compiler does not support get/set for
|
|
4134
|
+
* @State()/@Prop().
|
|
4135
|
+
* For private component properties, you should use regular get/set syntax.
|
|
4136
|
+
*
|
|
4137
|
+
* @example
|
|
4138
|
+
* @Prop() exampleProp = this.manager.getSet(defaultValue,{get,set})
|
|
4139
|
+
* @Prop() someProp = this.manager.getSet(
|
|
4140
|
+
* undefined as string | undefined,
|
|
4141
|
+
* {
|
|
4142
|
+
* get: (value)=>value.trim(),
|
|
4143
|
+
* set: (newValue,oldValue) => newValue.trim() ?? oldValue
|
|
4144
|
+
* }
|
|
4145
|
+
* )
|
|
4146
|
+
*
|
|
4147
|
+
* @remarks
|
|
4148
|
+
* Unlike a native get/set, the get function receives the current attribute
|
|
4149
|
+
* value, and can modify it before returning it (or can disregard the current
|
|
4150
|
+
* value and get it from elsewhere instead).
|
|
4151
|
+
* Similarly, setter is called with the new and old value, and is expected to
|
|
4152
|
+
* return the final new value (or return the old value to undo the change)
|
|
4153
|
+
*/
|
|
4154
|
+
getSet(defaultValue, getSet) {
|
|
4155
|
+
return this.component.manager.trackPropKey((name) => {
|
|
4156
|
+
var _a2;
|
|
4157
|
+
if (name === void 0) {
|
|
4158
|
+
throw new Error(
|
|
4159
|
+
"Unable to resolve get/set's prop name. Make sure you are using it like @Prop() someProp = this.manager.getSet(defaultValue,{get,set})"
|
|
4160
|
+
);
|
|
4161
|
+
}
|
|
4162
|
+
if (getSet.set === this._readonlySetter) {
|
|
4163
|
+
(_a2 = this.internals).readonlyProps ?? (_a2.readonlyProps = /* @__PURE__ */ new Set());
|
|
4164
|
+
this.internals.readonlyProps.add(name);
|
|
4165
|
+
}
|
|
4166
|
+
const genericComponent = this.component;
|
|
4167
|
+
const value = genericComponent[name];
|
|
4168
|
+
const isStencilHotReload = "production" !== "production" ;
|
|
4169
|
+
const initialSet = getSet.initialSet ?? true;
|
|
4170
|
+
if (value != null && value !== defaultValue && typeof getSet.set === "function" && initialSet && !isStencilHotReload) {
|
|
4171
|
+
const newValue = getSet.set(value, defaultValue, name);
|
|
4172
|
+
if (newValue !== value) {
|
|
4173
|
+
if (this.isLit) {
|
|
4174
|
+
genericComponent[name] = newValue;
|
|
4175
|
+
} else {
|
|
4176
|
+
let firstConnected = true;
|
|
4177
|
+
this.onConnected(() => {
|
|
4178
|
+
if (!firstConnected) {
|
|
4179
|
+
return;
|
|
4180
|
+
}
|
|
4181
|
+
firstConnected = true;
|
|
4182
|
+
this.bypassSetter(() => {
|
|
4183
|
+
genericComponent[name] = newValue;
|
|
4184
|
+
});
|
|
4185
|
+
});
|
|
4186
|
+
}
|
|
4187
|
+
}
|
|
4188
|
+
}
|
|
4189
|
+
this.genericGetSet(name, getSet);
|
|
4190
|
+
}, defaultValue);
|
|
4191
|
+
}
|
|
4192
|
+
};
|
|
4193
|
+
var destroyErrorMessage = `
|
|
4194
|
+
If the component uses a controller that uses destroy() method, then the
|
|
4195
|
+
component must have the following properties:
|
|
4196
|
+
${// Don't expose internal code in production, and keep bundle smaller:
|
|
4197
|
+
`autoDestroyDisabled and destroy` }
|
|
4198
|
+
`.trim();
|
|
4199
|
+
var autoDestroyOnDisconnectTimeout = 1e3;
|
|
4200
|
+
var defaultGetterSetter = (value) => value;
|
|
4201
|
+
|
|
4202
|
+
// src/proxyExports.ts
|
|
4203
|
+
var proxyExports = (Class) => (...args) => {
|
|
4204
|
+
const ambientControllers = Controller.internals.retrieveParentControllers();
|
|
4205
|
+
const instance = new Class(...args);
|
|
4206
|
+
const initialExports = instance.exports;
|
|
4207
|
+
Controller.internals.setParentController(ambientControllers.at(-1));
|
|
4208
|
+
const internals = instance.component.manager.internals;
|
|
4209
|
+
internals.markExports(instance, initialExports);
|
|
4210
|
+
instance.watchExports((exports) => internals.markExports(instance, exports));
|
|
4211
|
+
Controller.internals.setAmbientChildController(instance);
|
|
4212
|
+
const hostCandidates = [instance.component, ...ambientControllers].reverse();
|
|
4213
|
+
return internals.trackKey(
|
|
4214
|
+
hostCandidates,
|
|
4215
|
+
(resolution) => resolution === void 0 ? void 0 : setProxy(instance, resolution, initialExports),
|
|
4216
|
+
initialExports
|
|
4217
|
+
);
|
|
4218
|
+
};
|
|
4219
|
+
function setProxy(controller, { host, key, type }, initialExports) {
|
|
4220
|
+
const genericHost = host;
|
|
4221
|
+
const controllerValueChanged = genericHost[key] !== controller.exports;
|
|
4222
|
+
const hostValueChanged = genericHost[key] !== initialExports;
|
|
4223
|
+
const controllerUpdatedExports = initialExports !== controller.exports;
|
|
4224
|
+
if (controllerValueChanged && !hostValueChanged && controllerUpdatedExports) {
|
|
4225
|
+
genericHost[key] = controller.exports;
|
|
4226
|
+
}
|
|
4227
|
+
const isProxyExportsOnComponent = host === controller.component;
|
|
4228
|
+
if (isProxyExportsOnComponent && type === "prop") {
|
|
4229
|
+
const internals = controller.component.manager.internals;
|
|
4230
|
+
if (hostValueChanged) {
|
|
4231
|
+
internals.markExports(controller, genericHost[key]);
|
|
4232
|
+
}
|
|
4233
|
+
controller.component.manager.watch(key, (value) => {
|
|
4234
|
+
if (value !== controller.exports) {
|
|
4235
|
+
internals.markExports(controller, value);
|
|
4236
|
+
}
|
|
2936
4237
|
});
|
|
2937
|
-
|
|
4238
|
+
}
|
|
4239
|
+
controller.watchExports(() => {
|
|
4240
|
+
if (genericHost[key] === controller.exports) {
|
|
4241
|
+
return;
|
|
4242
|
+
}
|
|
4243
|
+
const manager = controller.component.manager;
|
|
4244
|
+
const isReadOnly = manager.internals.readonlyProps?.has(key) === true;
|
|
4245
|
+
if (isReadOnly) {
|
|
4246
|
+
manager.bypassReadonly(() => {
|
|
4247
|
+
genericHost[key] = controller.exports;
|
|
4248
|
+
});
|
|
4249
|
+
} else {
|
|
4250
|
+
genericHost[key] = controller.exports;
|
|
4251
|
+
}
|
|
4252
|
+
});
|
|
2938
4253
|
}
|
|
2939
4254
|
|
|
4255
|
+
// src/functional.ts
|
|
4256
|
+
var makeController = (constructor) => proxy(void 0, constructor);
|
|
4257
|
+
var FunctionalController = class extends Controller {
|
|
4258
|
+
constructor(component, constructor) {
|
|
4259
|
+
super(component);
|
|
4260
|
+
const originalExports = this.exports;
|
|
4261
|
+
try {
|
|
4262
|
+
Controller.internals.setAmbientComponent(this.component);
|
|
4263
|
+
const value = constructor(this.component, this);
|
|
4264
|
+
const constructorChangedExports = this.exports !== originalExports;
|
|
4265
|
+
if (value instanceof Promise) {
|
|
4266
|
+
if (!constructorChangedExports) {
|
|
4267
|
+
this.setProvisionalExports(value);
|
|
4268
|
+
}
|
|
4269
|
+
const resolved = value.then((result) => {
|
|
4270
|
+
this.exports = result;
|
|
4271
|
+
super.catchUpLifecycle();
|
|
4272
|
+
}).catch((error) => {
|
|
4273
|
+
this._ready.reject(error);
|
|
4274
|
+
console.error(error);
|
|
4275
|
+
});
|
|
4276
|
+
this.onLoad(async () => await resolved);
|
|
4277
|
+
} else {
|
|
4278
|
+
if (!constructorChangedExports || value !== void 0) {
|
|
4279
|
+
this.exports = value;
|
|
4280
|
+
}
|
|
4281
|
+
queueMicrotask(() => super.catchUpLifecycle());
|
|
4282
|
+
}
|
|
4283
|
+
} catch (error) {
|
|
4284
|
+
this._ready.reject(error);
|
|
4285
|
+
console.error(error);
|
|
4286
|
+
}
|
|
4287
|
+
}
|
|
4288
|
+
/** Noop - will be called in the constructor instead */
|
|
4289
|
+
catchUpLifecycle() {
|
|
4290
|
+
return;
|
|
4291
|
+
}
|
|
4292
|
+
};
|
|
4293
|
+
var proxy = proxyExports(FunctionalController);
|
|
4294
|
+
|
|
4295
|
+
var makeT9nController = (getAssetPath) => ({ blocking = false, name } = {}) => (
|
|
4296
|
+
// eslint-disable-next-line @typescript-eslint/promise-function-async
|
|
4297
|
+
makeController((component, controller) => {
|
|
4298
|
+
controller.onLifecycle(
|
|
4299
|
+
() => startLocaleObserver(
|
|
4300
|
+
component.el,
|
|
4301
|
+
getAssetPath("./assets"),
|
|
4302
|
+
({ t9nLocale, t9nStrings, lang }) => {
|
|
4303
|
+
controller.exports = { ...t9nStrings, _lang: lang, _t9nLocale: t9nLocale };
|
|
4304
|
+
const label = t9nStrings.componentLabel ?? t9nStrings.widgetLabel;
|
|
4305
|
+
if (typeof label === "string" && "label" in component && component.label == null) {
|
|
4306
|
+
component.label ?? (component.label = label);
|
|
4307
|
+
}
|
|
4308
|
+
},
|
|
4309
|
+
name
|
|
4310
|
+
)
|
|
4311
|
+
);
|
|
4312
|
+
if (blocking) {
|
|
4313
|
+
return controller.ready;
|
|
4314
|
+
}
|
|
4315
|
+
const locale = getElementLocales(component.el);
|
|
4316
|
+
return { _lang: locale.lang, _t9nLocale: locale.t9nLocale };
|
|
4317
|
+
})
|
|
4318
|
+
);
|
|
4319
|
+
|
|
2940
4320
|
function isMonacoEnvironmentSetup() {
|
|
2941
4321
|
return !!window.MonacoEnvironment?.getWorkerUrl;
|
|
2942
4322
|
}
|
|
@@ -2977,18 +4357,18 @@ function setupMonacoEnvironment(assetsPath) {
|
|
|
2977
4357
|
break;
|
|
2978
4358
|
}
|
|
2979
4359
|
// If we have a relative path or we are on same orgin, we can use the default js implementation
|
|
2980
|
-
if (!
|
|
4360
|
+
if (!isURL(url) || hasSameOrigin(url, globalThis.location.href, true)) {
|
|
2981
4361
|
return new Worker(url, { name: languageId });
|
|
2982
4362
|
}
|
|
2983
4363
|
// For cross orgin, we will load the worker code as a string and manufacture a blob
|
|
2984
4364
|
const esriRequest = await importRequest();
|
|
2985
4365
|
const response = await esriRequest(url, {
|
|
2986
|
-
responseType: "text"
|
|
4366
|
+
responseType: "text",
|
|
2987
4367
|
});
|
|
2988
4368
|
return new Worker(URL.createObjectURL(new Blob([response.data], {
|
|
2989
|
-
type: "text/javascript"
|
|
4369
|
+
type: "text/javascript",
|
|
2990
4370
|
})));
|
|
2991
|
-
}
|
|
4371
|
+
},
|
|
2992
4372
|
};
|
|
2993
4373
|
}
|
|
2994
4374
|
|
|
@@ -3027,9 +4407,9 @@ function setupArcadeTheme() {
|
|
|
3027
4407
|
{ token: "keyword.arc", foreground: colors.keyword },
|
|
3028
4408
|
{ token: "identifier.arc", foreground: colors.identifier },
|
|
3029
4409
|
{ token: "number.arc", foreground: colors.number },
|
|
3030
|
-
{ token: "string.arc", foreground: colors.string }
|
|
4410
|
+
{ token: "string.arc", foreground: colors.string },
|
|
3031
4411
|
],
|
|
3032
|
-
colors: {}
|
|
4412
|
+
colors: {},
|
|
3033
4413
|
});
|
|
3034
4414
|
});
|
|
3035
4415
|
}
|
|
@@ -3084,14 +4464,14 @@ async function getArcadeWorker(uri) {
|
|
|
3084
4464
|
* @returns arcade mode module
|
|
3085
4465
|
*/
|
|
3086
4466
|
async function getMode() {
|
|
3087
|
-
return await import('./arcade-mode-
|
|
4467
|
+
return await import('./arcade-mode-f87480eb.js');
|
|
3088
4468
|
}
|
|
3089
4469
|
// Register the language in Monaco
|
|
3090
4470
|
languages.register({
|
|
3091
4471
|
id: arcadeDefaults.languageId,
|
|
3092
4472
|
aliases: ["Arcade", "arcade"],
|
|
3093
4473
|
extensions: [".arc"],
|
|
3094
|
-
mimetypes: ["application/arcade"]
|
|
4474
|
+
mimetypes: ["application/arcade"],
|
|
3095
4475
|
});
|
|
3096
4476
|
// An event emitted when a language is first time needed
|
|
3097
4477
|
languages.onLanguage(arcadeDefaults.languageId, () => {
|
|
@@ -3107,13 +4487,18 @@ languages.onLanguage(arcadeDefaults.languageId, () => {
|
|
|
3107
4487
|
});
|
|
3108
4488
|
});
|
|
3109
4489
|
|
|
3110
|
-
const
|
|
4490
|
+
const useT9n = makeT9nController(getAssetPath);
|
|
4491
|
+
|
|
4492
|
+
const arcadeApiCss = ":host{background-color:var(--calcite-color-foreground-1)}:host .notice-container{margin:var(--calcite-spacing-xxs);padding:var(--calcite-spacing-sm);background-color:var(--calcite-color-foreground-1)}:host .sticky{position:sticky;top:0px;z-index:10}:host calcite-flow{height:100%}:host calcite-block p:first-of-type{margin-top:0}:host calcite-block code{font-family:var(--calcite-code-family)}:host calcite-block pre{direction:ltr;overflow-x:auto;background-color:var(--calcite-color-foreground-2);padding:var(--calcite-spacing-sm)}:host calcite-block pre code{font-size:var(--calcite-font-size--2)}:host calcite-list-item-group{background-color:var(--calcite-color-foreground-2)}";
|
|
4493
|
+
const ArcgisArcadeApiStyle0 = arcadeApiCss;
|
|
3111
4494
|
|
|
3112
4495
|
const ArcgisArcadeApi = class {
|
|
3113
4496
|
constructor(hostRef) {
|
|
3114
4497
|
registerInstance(this, hostRef);
|
|
3115
|
-
this.
|
|
3116
|
-
this.
|
|
4498
|
+
this.arcgisClose = createEvent(this, "arcgisClose", 3);
|
|
4499
|
+
this.arcgisItemSelected = createEvent(this, "arcgisItemSelected", 3);
|
|
4500
|
+
this.manager = useControllerManager(this);
|
|
4501
|
+
this.messages = useT9n();
|
|
3117
4502
|
this._emitItemSelected = (e) => {
|
|
3118
4503
|
const item = e.target?.["data-item"];
|
|
3119
4504
|
if (!item) {
|
|
@@ -3122,10 +4507,10 @@ const ArcgisArcadeApi = class {
|
|
|
3122
4507
|
const keyEvent = e;
|
|
3123
4508
|
if (!keyEvent.key || keyEvent.key === "Enter") {
|
|
3124
4509
|
e.preventDefault();
|
|
3125
|
-
this.
|
|
4510
|
+
this.arcgisItemSelected.emit(item.completion.insertText);
|
|
3126
4511
|
}
|
|
3127
4512
|
};
|
|
3128
|
-
this._emitClose = () => this.
|
|
4513
|
+
this._emitClose = () => this.arcgisClose.emit();
|
|
3129
4514
|
this._emitItemSelectedAndClose = (e) => {
|
|
3130
4515
|
if (!e.target) {
|
|
3131
4516
|
return;
|
|
@@ -3137,7 +4522,7 @@ const ArcgisArcadeApi = class {
|
|
|
3137
4522
|
if (!item) {
|
|
3138
4523
|
return;
|
|
3139
4524
|
}
|
|
3140
|
-
this.
|
|
4525
|
+
this.arcgisItemSelected.emit(item.completion.insertText);
|
|
3141
4526
|
}
|
|
3142
4527
|
};
|
|
3143
4528
|
this._selectItem = (e) => {
|
|
@@ -3153,9 +4538,6 @@ const ArcgisArcadeApi = class {
|
|
|
3153
4538
|
this._updateFilterValue = (e) => {
|
|
3154
4539
|
this._filterValue = e.target?.value ?? "";
|
|
3155
4540
|
};
|
|
3156
|
-
this._lang = "";
|
|
3157
|
-
this._t9nLocale = "";
|
|
3158
|
-
this._t9nStrings = undefined;
|
|
3159
4541
|
this._selectedApiItem = undefined;
|
|
3160
4542
|
this._filterValue = "";
|
|
3161
4543
|
this._colorizeStyle = "";
|
|
@@ -3169,7 +4551,6 @@ const ArcgisArcadeApi = class {
|
|
|
3169
4551
|
async componentWillLoad() {
|
|
3170
4552
|
this._colorizeStyle = generateColorizeStyles();
|
|
3171
4553
|
this._themeChangedListner = onColorizeThemeChanged(() => (this._colorizeStyle = generateColorizeStyles()));
|
|
3172
|
-
await B(this, getAssetPath("./assets"));
|
|
3173
4554
|
arcadeDefaults.onModelContextDidChange((key) => {
|
|
3174
4555
|
if (!this.modelId || key !== Uri.parse(this.modelId).toString()) {
|
|
3175
4556
|
return;
|
|
@@ -3179,7 +4560,6 @@ const ArcgisArcadeApi = class {
|
|
|
3179
4560
|
await this._updateApiLibrary();
|
|
3180
4561
|
}
|
|
3181
4562
|
disconnectedCallback() {
|
|
3182
|
-
q(this);
|
|
3183
4563
|
this._flowObserver?.disconnect();
|
|
3184
4564
|
this._themeChangedListner?.dispose();
|
|
3185
4565
|
}
|
|
@@ -3202,8 +4582,9 @@ const ArcgisArcadeApi = class {
|
|
|
3202
4582
|
}
|
|
3203
4583
|
catch (e) {
|
|
3204
4584
|
console.error("Could not load api library", e);
|
|
3205
|
-
if (e instanceof Error)
|
|
4585
|
+
if (e instanceof Error) {
|
|
3206
4586
|
console.error(e.stack);
|
|
4587
|
+
}
|
|
3207
4588
|
this._apiLibrary = undefined;
|
|
3208
4589
|
}
|
|
3209
4590
|
finally {
|
|
@@ -3224,7 +4605,7 @@ const ArcgisArcadeApi = class {
|
|
|
3224
4605
|
// When switching between flow the same reference is reused
|
|
3225
4606
|
this._flowObserver = new MutationObserver(() => {
|
|
3226
4607
|
// Get the last panel and try to set focus on the input element
|
|
3227
|
-
|
|
4608
|
+
setFocusOnElement(ref.querySelector("calcite-flow-item:last-child"), "calcite-input");
|
|
3228
4609
|
});
|
|
3229
4610
|
this._flowObserver.observe(ref, { attributes: true, attributeFilter: ["id"], childList: true });
|
|
3230
4611
|
}
|
|
@@ -3235,14 +4616,14 @@ const ArcgisArcadeApi = class {
|
|
|
3235
4616
|
if (!filteredApiItems.length) {
|
|
3236
4617
|
return null;
|
|
3237
4618
|
}
|
|
3238
|
-
return (h("calcite-list-item-group", { heading: category.title }, filteredApiItems.map((apiItem) => (h("calcite-list-item", { label:
|
|
4619
|
+
return (h("calcite-list-item-group", { heading: category.title }, filteredApiItems.map((apiItem) => (h("calcite-list-item", { label: addLTRMark(apiItem.completion.detail), onCalciteListItemSelect: this._emitItemSelected, onKeyPress: this._emitItemSelected, "data-item": apiItem }, h("calcite-action", { slot: "actions-end", text: this.messages.expand ?? "Expand", icon: "chevron-right", iconFlipRtl: true, scale: "s", onClick: this._selectItem, "data-item": apiItem }))))));
|
|
3239
4620
|
}
|
|
3240
4621
|
renderApiItemFlowItem() {
|
|
3241
4622
|
const apiItem = this._selectedApiItem;
|
|
3242
4623
|
if (!apiItem) {
|
|
3243
4624
|
return null;
|
|
3244
4625
|
}
|
|
3245
|
-
return (h("calcite-flow-item", { heading: this.
|
|
4626
|
+
return (h("calcite-flow-item", { heading: this.messages.constantsandfunctions, beforeBack: this._unselectItem, closable: true, onCalciteFlowItemClose: this._emitClose }, this.hideDocumentationActions ? null : (h("calcite-button", { width: "half", slot: "footer", appearance: "outline", kind: "brand", scale: "s", href: apiItem.link, target: "Arcade Help", "icon-start": "information" }, this.messages.moreinformation)), h("calcite-button", { width: "half", slot: "footer", appearance: "outline", kind: "brand", "icon-start": "code", scale: "s", onClick: this._emitItemSelectedAndClose, "data-item": apiItem, ref: (e) => void e?.setFocus() }, this.messages.insert ?? "Insert"), h("calcite-block", { open: true, heading: addLTRMark(apiItem.completion.detail) }, h("div", { innerHTML: convertMarkdownString(apiItem.completion.documentation) }), apiItem.examples ? (h("div", { ref: (e) => {
|
|
3246
4627
|
if (!e) {
|
|
3247
4628
|
return;
|
|
3248
4629
|
}
|
|
@@ -3253,12 +4634,12 @@ const ArcgisArcadeApi = class {
|
|
|
3253
4634
|
render() {
|
|
3254
4635
|
const categories = (this._apiLibrary ?? []).map((apiCategory) => this.renderApiCategory(apiCategory));
|
|
3255
4636
|
const empty = categories.every((g) => !g);
|
|
3256
|
-
return (h(Host,
|
|
4637
|
+
return (h(Host, { key: '9bd64b2ff0f6f35b952bd614fc1bb3d5bd7474b5' }, h("style", { key: '0a42f9ffb38f4c27d80dc47716ebdbeefde284ef' }, this._colorizeStyle), h("calcite-flow", { key: '8861ef8bda1dc1ff385a8375c1c2374e0ce23a5f', ref: (ref) => this.flowFocusHandler(ref) }, h("calcite-flow-item", { key: '428fd8355f4d5f27160826d1e51bb1e1f6939d11', heading: this.messages.constantsandfunctions, closable: true, onCalciteFlowItemClose: this._emitClose }, h("calcite-input", { key: 'c3f77330aae971881e4be465fea09d1401eca478', value: this._filterValue, icon: "magnifying-glass", clearable: true, onCalciteInputInput: this._updateFilterValue, class: "sticky", scale: "m" }), this._preparingApi ? (h("calcite-loader", { scale: "s", type: "indeterminate", label: this.messages.loading ?? "Loading" })) : (h("calcite-list", null, empty ? h("div", { class: "notice-container" }, this.messages.noitems ?? "No items") : categories))), this.renderApiItemFlowItem())));
|
|
3257
4638
|
}
|
|
3258
4639
|
static get assetsDirs() { return ["assets"]; }
|
|
3259
|
-
get
|
|
4640
|
+
get el() { return getElement(this); }
|
|
3260
4641
|
};
|
|
3261
|
-
ArcgisArcadeApi.style =
|
|
4642
|
+
ArcgisArcadeApi.style = ArcgisArcadeApiStyle0;
|
|
3262
4643
|
|
|
3263
4644
|
const DevelopersWebSitePath = "https://developers.arcgis.com/arcade/";
|
|
3264
4645
|
const MaxArrayItems = 100;
|
|
@@ -3443,7 +4824,7 @@ async function executeScript(editorProfile, script, testContext, console) {
|
|
|
3443
4824
|
// Setup an executor with the script
|
|
3444
4825
|
const arcade = await importArcade();
|
|
3445
4826
|
const executor = await arcade.createArcadeExecutor(script ?? "", {
|
|
3446
|
-
variables: editorProfile?.variables ?? []
|
|
4827
|
+
variables: editorProfile?.variables ?? [],
|
|
3447
4828
|
});
|
|
3448
4829
|
// We want to measure the execution time
|
|
3449
4830
|
const t1 = performance.now();
|
|
@@ -3453,7 +4834,7 @@ async function executeScript(editorProfile, script, testContext, console) {
|
|
|
3453
4834
|
spatialReference,
|
|
3454
4835
|
timeZone,
|
|
3455
4836
|
rawOutput: true,
|
|
3456
|
-
console
|
|
4837
|
+
console,
|
|
3457
4838
|
};
|
|
3458
4839
|
// Execute the script
|
|
3459
4840
|
const scriptOutput = await executor.executeAsync(profileVariableInstances, executeContext);
|
|
@@ -3477,20 +4858,22 @@ async function executeScript(editorProfile, script, testContext, console) {
|
|
|
3477
4858
|
error,
|
|
3478
4859
|
timeStamp,
|
|
3479
4860
|
compilationTime: 0,
|
|
3480
|
-
executionTime: 0
|
|
4861
|
+
executionTime: 0,
|
|
3481
4862
|
};
|
|
3482
4863
|
}
|
|
3483
4864
|
}
|
|
3484
4865
|
|
|
3485
|
-
const arcadeEditorCss = "arcgis-arcade-editor{display:flex;flex-direction:column;
|
|
4866
|
+
const arcadeEditorCss = "arcgis-arcade-editor{display:flex;flex-direction:column;position:relative;overflow:hidden;border:1px solid var(--calcite-color-border-3);box-sizing:border-box;background-color:var(--calcite-color-foreground-1);height:100%}arcgis-arcade-editor .flex-adjustable{flex:1 1 auto;overflow:hidden}arcgis-arcade-editor .flex-panel{flex:1 0 auto}arcgis-arcade-editor .position-relative{position:relative}arcgis-arcade-editor .flex-row{display:flex;flex-direction:row;overflow:hidden}arcgis-arcade-editor .flex-column{display:flex;flex-direction:column;overflow:hidden}arcgis-arcade-editor .border-inline-start{border-inline-start:1px solid var(--calcite-color-border-3);box-sizing:border-box}arcgis-arcade-editor .border-inline-end{border-inline-end:1px solid var(--calcite-color-border-3);box-sizing:border-box}arcgis-arcade-editor .sticky{position:sticky;top:0px;z-index:10}arcgis-arcade-editor .notice-container{margin:var(--calcite-spacing-xxs);padding:var(--calcite-spacing-sm);background-color:var(--calcite-color-foreground-1);text-align:center}arcgis-arcade-editor .side-action-bar{max-width:25%}arcgis-arcade-editor .side-panel{max-width:45%;width:600px}arcgis-arcade-editor .side-panel calcite-flow{height:100%}arcgis-arcade-editor .main-action-bar{border-bottom:1px solid var(--calcite-color-border-3);flex:0 0 auto}arcgis-arcade-editor .main-action-bar calcite-action-group{padding-inline-end:var(--calcite-spacing-sm)}arcgis-arcade-editor .main-action-bar calcite-action-group calcite-action{padding-inline-end:var(--calcite-spacing-sm)}arcgis-arcade-editor .main-action-bar calcite-action-group calcite-action:not(:first-child){padding-inline-start:var(--calcite-spacing-sm)}arcgis-arcade-editor .main-action-bar calcite-action-group:last-child{border-inline-end-width:0px}arcgis-arcade-editor .main-action-bar calcite-action-group:not(:first-child){padding-inline-start:var(--calcite-spacing-sm)}arcgis-arcade-editor arcgis-arcade-results{border-top:1px solid var(--calcite-color-border-3);box-sizing:border-box;max-height:50%;min-height:50%;margin-bottom:-1px}arcgis-arcade-editor calcite-flow [slot=footer]{word-break:break-word}";
|
|
4867
|
+
const ArcgisArcadeEditorStyle0 = arcadeEditorCss;
|
|
3486
4868
|
|
|
3487
4869
|
const ArcgisArcadeEditor = class {
|
|
3488
4870
|
constructor(hostRef) {
|
|
3489
4871
|
registerInstance(this, hostRef);
|
|
3490
|
-
this.
|
|
3491
|
-
this.
|
|
3492
|
-
this.
|
|
3493
|
-
this.
|
|
4872
|
+
this.arcgisScriptChange = createEvent(this, "arcgisScriptChange", 3);
|
|
4873
|
+
this.arcgisDiagnosticsChange = createEvent(this, "arcgisDiagnosticsChange", 3);
|
|
4874
|
+
this.manager = useControllerManager(this);
|
|
4875
|
+
this._componentReadyDefer = new Deferred();
|
|
4876
|
+
this._modelId = generateGuid();
|
|
3494
4877
|
this._editorProfilePromise = Promise.resolve(undefined);
|
|
3495
4878
|
this._disposables = [];
|
|
3496
4879
|
this._executeScript = async () => {
|
|
@@ -3531,18 +4914,16 @@ const ArcgisArcadeEditor = class {
|
|
|
3531
4914
|
}
|
|
3532
4915
|
};
|
|
3533
4916
|
this._openArcadeHelp = () => void window.open(DevelopersWebSitePath, "Arcade Help");
|
|
3534
|
-
this.
|
|
4917
|
+
this._onCodeEditorValueChange = (e) => {
|
|
3535
4918
|
e.stopPropagation();
|
|
3536
|
-
this.
|
|
4919
|
+
this.script = e.detail;
|
|
4920
|
+
this.arcgisScriptChange.emit(e.detail);
|
|
3537
4921
|
};
|
|
3538
4922
|
this._insertAsSnippet = (e) => void this._codeEditorElt?.insertSnippet(e.detail).catch(console.error);
|
|
3539
4923
|
this._insertAsText = (e) => void this._codeEditorElt?.insertText(e.detail).catch(console.error);
|
|
3540
4924
|
this._onResultPanelChange = (e) => void (this._resultPanel = e.detail);
|
|
3541
4925
|
this._onExecutionPanelClose = () => void (this._showExecutionPanel = false);
|
|
3542
|
-
this.
|
|
3543
|
-
this._t9nLocale = "";
|
|
3544
|
-
this._t9nStrings = undefined;
|
|
3545
|
-
this._standaloneCodeEditor = undefined;
|
|
4926
|
+
this.messages = useT9n();
|
|
3546
4927
|
this._preparingProfile = false;
|
|
3547
4928
|
this._editorProfile = undefined;
|
|
3548
4929
|
this._showExecutionPanel = false;
|
|
@@ -3560,6 +4941,10 @@ const ArcgisArcadeEditor = class {
|
|
|
3560
4941
|
this.sideActionBarExpanded = false;
|
|
3561
4942
|
this.openedSidePanel = "none";
|
|
3562
4943
|
this.editorOptions = undefined;
|
|
4944
|
+
this.editorInstance = this.manager.getSet(undefined, {
|
|
4945
|
+
get: () => this._codeEditorElt?.editorInstance,
|
|
4946
|
+
set: "ignore",
|
|
4947
|
+
});
|
|
3563
4948
|
}
|
|
3564
4949
|
_profileChanged() {
|
|
3565
4950
|
this._updateEditorProfile().catch(console.error);
|
|
@@ -3572,18 +4957,17 @@ const ArcgisArcadeEditor = class {
|
|
|
3572
4957
|
}
|
|
3573
4958
|
_snippetChanged() {
|
|
3574
4959
|
arcadeDefaults.updateApiContextForModel(this._modelId, {
|
|
3575
|
-
snippets: this.snippets
|
|
4960
|
+
snippets: this.snippets,
|
|
3576
4961
|
});
|
|
3577
4962
|
}
|
|
3578
4963
|
// #endregion
|
|
3579
4964
|
// #region Public methods API
|
|
3580
4965
|
/**
|
|
3581
|
-
*
|
|
3582
|
-
* @returns {Promise<string>}
|
|
4966
|
+
* @deprecated Use `script` property instead.
|
|
3583
4967
|
*/
|
|
3584
4968
|
async getScript() {
|
|
3585
4969
|
await this._componentReadyDefer.promise;
|
|
3586
|
-
return
|
|
4970
|
+
return this._codeEditorElt?.value;
|
|
3587
4971
|
}
|
|
3588
4972
|
/**
|
|
3589
4973
|
* Set the focus on the element.
|
|
@@ -3594,12 +4978,11 @@ const ArcgisArcadeEditor = class {
|
|
|
3594
4978
|
}
|
|
3595
4979
|
/**
|
|
3596
4980
|
* @internal
|
|
3597
|
-
*
|
|
3598
|
-
* @returns {Promise<IStandaloneCodeEditor>} - The monaco editor instance
|
|
4981
|
+
* @deprecated Use `editorInstance` property instead.
|
|
3599
4982
|
*/
|
|
3600
4983
|
async getEditorInstance() {
|
|
3601
4984
|
await this._componentReadyDefer.promise;
|
|
3602
|
-
return
|
|
4985
|
+
return this._codeEditorElt?.editorInstance;
|
|
3603
4986
|
}
|
|
3604
4987
|
/**
|
|
3605
4988
|
* Returns the Arcade result for the script for the provided test data.
|
|
@@ -3621,11 +5004,11 @@ const ArcgisArcadeEditor = class {
|
|
|
3621
5004
|
* @internal
|
|
3622
5005
|
*/
|
|
3623
5006
|
async updateThemeColors(colorRules) {
|
|
3624
|
-
const theme =
|
|
5007
|
+
const theme = getElementTheme(this.el);
|
|
3625
5008
|
updateThemeColors(theme, colorRules);
|
|
3626
5009
|
if (colorRules === undefined) {
|
|
3627
5010
|
colorRulesKeys.forEach((key) => {
|
|
3628
|
-
this.
|
|
5011
|
+
this.el.style.removeProperty(`--arcgis-arcade-editor-${key}`);
|
|
3629
5012
|
});
|
|
3630
5013
|
return;
|
|
3631
5014
|
}
|
|
@@ -3634,7 +5017,7 @@ const ArcgisArcadeEditor = class {
|
|
|
3634
5017
|
if (!foreground) {
|
|
3635
5018
|
return;
|
|
3636
5019
|
}
|
|
3637
|
-
this.
|
|
5020
|
+
this.el.style.setProperty(`--arcgis-arcade-editor-${key}`, foreground);
|
|
3638
5021
|
});
|
|
3639
5022
|
}
|
|
3640
5023
|
// #endregion
|
|
@@ -3642,14 +5025,13 @@ const ArcgisArcadeEditor = class {
|
|
|
3642
5025
|
async componentWillLoad() {
|
|
3643
5026
|
const assetsPath = getAssetPath("./assets");
|
|
3644
5027
|
// We are a bit in a chicken and egg situation here.
|
|
3645
|
-
// Normally, it is the code editor that is responsible for setting up the Monaco
|
|
5028
|
+
// Normally, it is the code editor that is responsible for setting up the Monaco environment.
|
|
3646
5029
|
// However, we need to setup the environment before the code editor is instantiated because
|
|
3647
5030
|
// we need to access the arcade language service to get the api library.
|
|
3648
5031
|
setupMonacoEnvironment(assetsPath);
|
|
3649
|
-
|
|
3650
|
-
//
|
|
3651
|
-
|
|
3652
|
-
await B(this, assetsPath, async () => await this._updateEditorProfile());
|
|
5032
|
+
await this._updateEditorProfile();
|
|
5033
|
+
// The profile has to be refreshed on locale change
|
|
5034
|
+
this.manager.watch("messages", () => void this._updateEditorProfile().catch(console.error));
|
|
3653
5035
|
}
|
|
3654
5036
|
async componentDidLoad() {
|
|
3655
5037
|
// Mark on component as ready.
|
|
@@ -3658,10 +5040,9 @@ const ArcgisArcadeEditor = class {
|
|
|
3658
5040
|
// Start listening to the validation diagnostics.
|
|
3659
5041
|
// We are doing this as late as possible
|
|
3660
5042
|
const diagnosticsService = await getArcadeDiagnosticService();
|
|
3661
|
-
this._disposables.push(diagnosticsService.onDiagnosticsChange((event) => !this._preparingProfile && this.
|
|
5043
|
+
this._disposables.push(diagnosticsService.onDiagnosticsChange((event) => !this._preparingProfile && this.arcgisDiagnosticsChange.emit(event.diagnostics)));
|
|
3662
5044
|
// Get editor instance and add action
|
|
3663
|
-
this.
|
|
3664
|
-
this._standaloneCodeEditor?.addAction({
|
|
5045
|
+
this.editorInstance?.addAction({
|
|
3665
5046
|
// An unique identifier for the action.
|
|
3666
5047
|
id: "run-script",
|
|
3667
5048
|
label: "Run Arcade Expression",
|
|
@@ -3672,12 +5053,11 @@ const ArcgisArcadeEditor = class {
|
|
|
3672
5053
|
if (this.testData) {
|
|
3673
5054
|
this._executeScript().catch(console.error);
|
|
3674
5055
|
}
|
|
3675
|
-
}
|
|
5056
|
+
},
|
|
3676
5057
|
});
|
|
3677
5058
|
await this._codeEditorElt?.setFocus();
|
|
3678
5059
|
}
|
|
3679
5060
|
disconnectedCallback() {
|
|
3680
|
-
q(this);
|
|
3681
5061
|
arcadeDefaults.disposeApiContextForModel(this._modelId);
|
|
3682
5062
|
arcadeDefaults.disposeEditorProfileForModel(this._modelId);
|
|
3683
5063
|
while (this._disposables.length) {
|
|
@@ -3694,8 +5074,8 @@ const ArcgisArcadeEditor = class {
|
|
|
3694
5074
|
try {
|
|
3695
5075
|
// Set a new profile for the model using the profile definition and the locale.
|
|
3696
5076
|
await arcadeDefaults.setProfileForModel(this._modelId, this.profile, {
|
|
3697
|
-
locale: this._t9nLocale,
|
|
3698
|
-
snippets: this.snippets
|
|
5077
|
+
locale: this.messages._t9nLocale,
|
|
5078
|
+
snippets: this.snippets,
|
|
3699
5079
|
});
|
|
3700
5080
|
// Get the corresponding editor profile for the model.
|
|
3701
5081
|
// The editor profile contains the specialized profile for the UI.
|
|
@@ -3715,16 +5095,16 @@ const ArcgisArcadeEditor = class {
|
|
|
3715
5095
|
if (!this.testData) {
|
|
3716
5096
|
return null;
|
|
3717
5097
|
}
|
|
3718
|
-
return (h("calcite-action-bar", { class: "main-action-bar", layout: "horizontal", scale: "s", expanded: true, "expand-disabled": true }, h("calcite-action-group", { scale: "s" }, h("calcite-action", { text: this.
|
|
5098
|
+
return (h("calcite-action-bar", { class: "main-action-bar", layout: "horizontal", scale: "s", expanded: true, "expand-disabled": true }, h("calcite-action-group", { scale: "s" }, h("calcite-action", { text: this.messages.run ?? "Run", "text-enabled": true, icon: "play", scale: "s", loading: this._preparingProfile, onClick: this._executeScript }), this._executionResult ? (h("calcite-action", { text: this.messages.lastresults ?? "Last results", active: this._showExecutionPanel, "text-enabled": true, icon: "access-string-results", iconFlipRtl: true, scale: "s", onClick: this._toggleShowExecutionPanel })) : null)));
|
|
3719
5099
|
}
|
|
3720
5100
|
//#endregion
|
|
3721
5101
|
//#region Render Main Panel
|
|
3722
5102
|
renderMainPanel() {
|
|
3723
|
-
return (h("arcgis-code-editor", { class: "flex-adjustable", language: arcadeDefaults.languageId, value: this.script ?? "", modelId: this._modelId, options: this.editorOptions,
|
|
5103
|
+
return (h("arcgis-code-editor", { class: "flex-adjustable", language: arcadeDefaults.languageId, value: this.script ?? "", modelId: this._modelId, options: this.editorOptions, onArcgisValueChange: this._onCodeEditorValueChange, ref: (e) => (this._codeEditorElt = e) }));
|
|
3724
5104
|
}
|
|
3725
5105
|
//#endregion
|
|
3726
5106
|
//#region Rendering the Action Bar
|
|
3727
|
-
renderAction({ id, label, icon, active, panelName, onClick = this._toggleSidePanel }) {
|
|
5107
|
+
renderAction({ id, label, icon, active, panelName, onClick = this._toggleSidePanel, }) {
|
|
3728
5108
|
return (h(Fragment, null, h("calcite-action", { id: id, text: label, icon: icon, active: active, onClick: onClick, "data-panel-name": panelName }), !this.sideActionBarExpanded && (h("calcite-tooltip", { label: label, "reference-element": id }, h("span", null, label)))));
|
|
3729
5109
|
}
|
|
3730
5110
|
renderSideActionBar() {
|
|
@@ -3733,33 +5113,33 @@ const ArcgisArcadeEditor = class {
|
|
|
3733
5113
|
}
|
|
3734
5114
|
return (h("calcite-action-bar", { class: "side-action-bar border-inline-start", expanded: !!this.sideActionBarExpanded, position: "end", onCalciteActionBarToggle: this._toggleSideActionBarExpanded }, h("calcite-action-group", null, this.renderAction({
|
|
3735
5115
|
id: "profile-variables-action",
|
|
3736
|
-
label: this.
|
|
5116
|
+
label: this.messages.profilevariables ?? "Profile variables",
|
|
3737
5117
|
icon: "profile-variables",
|
|
3738
5118
|
active: this.openedSidePanel === "variables",
|
|
3739
|
-
panelName: "variables"
|
|
5119
|
+
panelName: "variables",
|
|
3740
5120
|
}), this.renderAction({
|
|
3741
5121
|
id: "function-action",
|
|
3742
|
-
label: this.
|
|
5122
|
+
label: this.messages.constantsandfunctions ?? "Constants and functions",
|
|
3743
5123
|
icon: "function",
|
|
3744
5124
|
active: this.openedSidePanel === "api",
|
|
3745
|
-
panelName: "api"
|
|
5125
|
+
panelName: "api",
|
|
3746
5126
|
}), this.suggestions?.length
|
|
3747
5127
|
? this.renderAction({
|
|
3748
5128
|
id: "suggestions-action",
|
|
3749
|
-
label: this.
|
|
5129
|
+
label: this.messages.suggestions ?? "Suggestions",
|
|
3750
5130
|
icon: "lightbulb",
|
|
3751
5131
|
active: this.openedSidePanel === "suggestions",
|
|
3752
|
-
panelName: "suggestions"
|
|
5132
|
+
panelName: "suggestions",
|
|
3753
5133
|
})
|
|
3754
5134
|
: null, this.hideDocumentationActions
|
|
3755
5135
|
? null
|
|
3756
5136
|
: this.renderAction({
|
|
3757
5137
|
id: "developer-website-action",
|
|
3758
|
-
label: this.
|
|
5138
|
+
label: this.messages.help ?? "Help",
|
|
3759
5139
|
icon: "question",
|
|
3760
5140
|
active: false,
|
|
3761
5141
|
panelName: "none",
|
|
3762
|
-
onClick: this._openArcadeHelp
|
|
5142
|
+
onClick: this._openArcadeHelp,
|
|
3763
5143
|
}))));
|
|
3764
5144
|
}
|
|
3765
5145
|
//#endregion
|
|
@@ -3770,11 +5150,11 @@ const ArcgisArcadeEditor = class {
|
|
|
3770
5150
|
}
|
|
3771
5151
|
switch (this.openedSidePanel) {
|
|
3772
5152
|
case "api":
|
|
3773
|
-
return (h("arcgis-arcade-api", { class: "side-panel flex-panel border-inline-start", modelId: this._modelId, hideDocumentationActions: this.hideDocumentationActions,
|
|
5153
|
+
return (h("arcgis-arcade-api", { class: "side-panel flex-panel border-inline-start", modelId: this._modelId, hideDocumentationActions: this.hideDocumentationActions, onArcgisItemSelected: this._insertAsSnippet, onArcgisClose: this._toggleSidePanel, "data-panel-name": "none" }));
|
|
3774
5154
|
case "variables":
|
|
3775
|
-
return (h("arcgis-arcade-variables", { class: "side-panel flex-panel border-inline-start", loading: this._preparingProfile, modelId: this._modelId,
|
|
5155
|
+
return (h("arcgis-arcade-variables", { class: "side-panel flex-panel border-inline-start", loading: this._preparingProfile, modelId: this._modelId, onArcgisItemSelected: this._insertAsText, onArcgisClose: this._toggleSidePanel, "data-panel-name": "none" }));
|
|
3776
5156
|
case "suggestions":
|
|
3777
|
-
return (h("arcgis-arcade-suggestions", { class: "side-panel flex-panel border-inline-start", suggestions: this.suggestions,
|
|
5157
|
+
return (h("arcgis-arcade-suggestions", { class: "side-panel flex-panel border-inline-start", suggestions: this.suggestions, onArcgisItemSelected: this._insertAsText, onArcgisClose: this._toggleSidePanel, "data-panel-name": "none" }));
|
|
3778
5158
|
default:
|
|
3779
5159
|
return null;
|
|
3780
5160
|
}
|
|
@@ -3785,37 +5165,38 @@ const ArcgisArcadeEditor = class {
|
|
|
3785
5165
|
if (!this._showExecutionPanel) {
|
|
3786
5166
|
return null;
|
|
3787
5167
|
}
|
|
3788
|
-
return (h("arcgis-arcade-results", { class: "flex-adjustable", openedResultPanel: this._resultPanel, loading: this._executingScript, result: this._executionResult, consoleLogs: this._consoleLogs,
|
|
5168
|
+
return (h("arcgis-arcade-results", { class: "flex-adjustable", openedResultPanel: this._resultPanel, loading: this._executingScript, result: this._executionResult, consoleLogs: this._consoleLogs, onArcgisOpenedResultPanelChange: this._onResultPanelChange, onArcgisClose: this._onExecutionPanelClose }));
|
|
3789
5169
|
}
|
|
3790
5170
|
//#endregion
|
|
3791
5171
|
//#region Render
|
|
3792
5172
|
render() {
|
|
3793
|
-
return (h(Host,
|
|
5173
|
+
return (h(Host, { key: 'd17f808be4ff15d1b6cfddee64fbd555bccc9a5e' }, this.renderMainActionBar(), h("div", { key: 'a4f02c0e2de9c20c494cc486ce24c2a3e57773b5', class: "flex-row flex-adjustable" }, h("div", { key: 'b4017cfa9a04be98fde74c60a6f1d4ba61545267', class: "flex-column flex-adjustable" }, this.renderMainPanel(), this.renderResultsPanel()), this.renderSidePanel(), this.renderSideActionBar())));
|
|
3794
5174
|
}
|
|
3795
5175
|
static get assetsDirs() { return ["assets"]; }
|
|
3796
|
-
get
|
|
5176
|
+
get el() { return getElement(this); }
|
|
3797
5177
|
static get watchers() { return {
|
|
3798
5178
|
"profile": ["_profileChanged"],
|
|
3799
5179
|
"testData": ["_testDataChanged"],
|
|
3800
5180
|
"snippets": ["_snippetChanged"]
|
|
3801
5181
|
}; }
|
|
3802
5182
|
};
|
|
3803
|
-
ArcgisArcadeEditor.style =
|
|
5183
|
+
ArcgisArcadeEditor.style = ArcgisArcadeEditorStyle0;
|
|
3804
5184
|
|
|
3805
|
-
const arcadeResultsCss = ":host{display:flex;flex-direction:column;width:100%;background-color:var(--calcite-color-foreground-1);color:var(--calcite-color-text-2)}:host .flex-adjustable{flex:1 1 auto;overflow:hidden}:host .flex-row{display:flex;flex-direction:row;overflow:hidden}:host .flex-column{display:flex;flex-direction:column;overflow:hidden}:host .y-scrollable-container{overflow-y:auto;block-size:100%;background-color:var(--calcite-color-foreground-1)}:host header{border-bottom:1px solid var(--calcite-color-border-3);flex:0 0 auto}:host .ltr-container{direction:ltr}:host calcite-action-bar calcite-action-group{padding-inline-end:var(--calcite-spacing-
|
|
5185
|
+
const arcadeResultsCss = ":host{display:flex;flex-direction:column;width:100%;background-color:var(--calcite-color-foreground-1);color:var(--calcite-color-text-2)}:host .flex-adjustable{flex:1 1 auto;overflow:hidden}:host .flex-row{display:flex;flex-direction:row;overflow:hidden}:host .flex-column{display:flex;flex-direction:column;overflow:hidden}:host .y-scrollable-container{overflow-y:auto;block-size:100%;background-color:var(--calcite-color-foreground-1)}:host header{border-bottom:1px solid var(--calcite-color-border-3);flex:0 0 auto}:host .ltr-container{direction:ltr}:host calcite-action-bar calcite-action-group{padding-inline-end:var(--calcite-spacing-sm)}:host calcite-action-bar calcite-action-group calcite-action{padding-inline-end:var(--calcite-spacing-sm)}:host calcite-action-bar calcite-action-group calcite-action:not(:first-child){padding-inline-start:var(--calcite-spacing-sm)}:host calcite-action-bar calcite-action-group:last-child{border-inline-end-width:0px}:host calcite-action-bar calcite-action-group:not(:first-child){padding-inline-start:var(--calcite-spacing-sm)}:host .notice-container{margin:var(--calcite-spacing-xxs);padding:var(--calcite-spacing-sm);background-color:var(--calcite-color-foreground-1)}:host .color-info{color:var(--calcite-color-status-info)}:host .color-error{color:var(--calcite-color-status-danger)}:host .color-success{color:var(--calcite-color-status-success)}:host [class*=result-value-]{font-size:var(--calcite-font-size--2);line-height:1.25rem;background-color:var(--calcite-color-foreground-1);margin:var(--calcite-spacing-md)}:host .console-logs-container{background-color:var(--calcite-color-foreground-1);padding:0 var(--calcite-spacing-md);font-family:var(--calcite-code-family);font-size:var(--calcite-font-size--2);font-weight:var(--calcite-font-weight-normal)}:host .result-value-table table{display:block;max-width:fit-content;overflow-x:auto;border-spacing:0;border-collapse:collapse;text-align:start;white-space:nowrap}:host .result-value-table table thead{background-color:var(--calcite-color-foreground-2)}:host .result-value-table table tr{border-top:1px solid var(--calcite-color-border-3);border-bottom:1px solid var(--calcite-color-border-3)}:host .result-value-table table th,:host .result-value-table table td{border-inline-start:1px solid var(--calcite-color-border-3);border-inline-end:1px solid var(--calcite-color-border-3);text-align:start;padding:var(--calcite-spacing-xxs)}:host .result-value-table table th .string-value,:host .result-value-table table td .string-value{white-space:pre}:host .result-value-table table th{font-weight:var(--calcite-font-weight-medium)}:host .tree-item-label,:host .number-value,:host .string-value,:host .boolean-value{font-family:var(--calcite-code-family)}:host .tree-item-label,:host .value-type{color:var(--calcite-color-text-2);font-weight:var(--calcite-font-weight-normal)}:host .dictionary-property{color:var(--arcgis-arcade-editor-identifier)}:host .number-value{color:var(--arcgis-arcade-editor-number)}:host .string-value{color:var(--arcgis-arcade-editor-string);white-space:pre-wrap}:host .constant-value{color:var(--arcgis-arcade-editor-constant)}:host .date-value{color:var(--arcgis-arcade-editor-date)}";
|
|
5186
|
+
const ArcgisArcadeResultsStyle0 = arcadeResultsCss;
|
|
3806
5187
|
|
|
3807
5188
|
//#region Specialized Constants
|
|
3808
5189
|
const treeProps = {
|
|
3809
5190
|
lines: true,
|
|
3810
5191
|
selectionMode: "none",
|
|
3811
5192
|
scale: "s",
|
|
3812
|
-
onCalciteTreeSelect: (e) => e.target.selectedItems.forEach((itemElt) => (itemElt.selected = false))
|
|
5193
|
+
onCalciteTreeSelect: (e) => e.target.selectedItems.forEach((itemElt) => (itemElt.selected = false)),
|
|
3813
5194
|
};
|
|
3814
5195
|
const expandableTreeItemProps = {
|
|
3815
5196
|
onClick: (e) => {
|
|
3816
5197
|
const item = e.currentTarget;
|
|
3817
5198
|
item.expanded = !item.expanded;
|
|
3818
|
-
}
|
|
5199
|
+
},
|
|
3819
5200
|
};
|
|
3820
5201
|
//#endregion
|
|
3821
5202
|
//#region Helper Functions
|
|
@@ -3834,7 +5215,7 @@ function renderSimpleValue(arcadeResult) {
|
|
|
3834
5215
|
case "null":
|
|
3835
5216
|
return h("span", { class: "constant-value" }, arcadeResult.type);
|
|
3836
5217
|
case "text":
|
|
3837
|
-
return h("span", { class: "string-value" },
|
|
5218
|
+
return h("span", { class: "string-value" }, quoteString(arcadeResult.value));
|
|
3838
5219
|
case "number":
|
|
3839
5220
|
return h("span", { class: "number-value" }, arcadeResult.value.toString());
|
|
3840
5221
|
case "boolean":
|
|
@@ -3842,9 +5223,9 @@ function renderSimpleValue(arcadeResult) {
|
|
|
3842
5223
|
case "date":
|
|
3843
5224
|
return h("span", { class: "date-value" }, formatArcadeResultDate(arcadeResult));
|
|
3844
5225
|
case "dateOnly":
|
|
3845
|
-
return h("span", { class: "string-value" },
|
|
5226
|
+
return h("span", { class: "string-value" }, quoteString(formatArcadeResultDateOnly(arcadeResult)));
|
|
3846
5227
|
case "time":
|
|
3847
|
-
return h("span", { class: "string-value" },
|
|
5228
|
+
return h("span", { class: "string-value" }, quoteString(formatArcadeResultTimeOnly(arcadeResult)));
|
|
3848
5229
|
default:
|
|
3849
5230
|
return null;
|
|
3850
5231
|
}
|
|
@@ -3864,8 +5245,11 @@ function renderFeatureSetTable(arcadeResult) {
|
|
|
3864
5245
|
const ArcgisArcadeResults = class {
|
|
3865
5246
|
constructor(hostRef) {
|
|
3866
5247
|
registerInstance(this, hostRef);
|
|
3867
|
-
this.
|
|
3868
|
-
this.
|
|
5248
|
+
this.arcgisOpenedResultPanelChange = createEvent(this, "arcgisOpenedResultPanelChange", 3);
|
|
5249
|
+
this.arcgisClose = createEvent(this, "arcgisClose", 3);
|
|
5250
|
+
this.manager = useControllerManager(this);
|
|
5251
|
+
//#region Private Properties
|
|
5252
|
+
this.messages = useT9n();
|
|
3869
5253
|
this._switchResultPanel = (e) => {
|
|
3870
5254
|
if (!e.target) {
|
|
3871
5255
|
return;
|
|
@@ -3876,28 +5260,17 @@ const ArcgisArcadeResults = class {
|
|
|
3876
5260
|
}
|
|
3877
5261
|
this.updateResultPanel(panelName);
|
|
3878
5262
|
};
|
|
3879
|
-
this._emitClose = () => this.
|
|
3880
|
-
this._lang = "";
|
|
3881
|
-
this._t9nLocale = "";
|
|
3882
|
-
this._t9nStrings = undefined;
|
|
5263
|
+
this._emitClose = () => this.arcgisClose.emit();
|
|
3883
5264
|
this.loading = true;
|
|
3884
5265
|
this.openedResultPanel = "output";
|
|
3885
5266
|
this.result = undefined;
|
|
3886
5267
|
this.consoleLogs = undefined;
|
|
3887
5268
|
}
|
|
3888
5269
|
//#endregion
|
|
3889
|
-
// #region Component lifecycle events
|
|
3890
|
-
async componentWillLoad() {
|
|
3891
|
-
await B(this, getAssetPath("./assets"));
|
|
3892
|
-
}
|
|
3893
|
-
disconnectedCallback() {
|
|
3894
|
-
q(this);
|
|
3895
|
-
}
|
|
3896
|
-
// #endregion
|
|
3897
5270
|
//#region Private Methods
|
|
3898
5271
|
updateResultPanel(resultPanelType) {
|
|
3899
5272
|
this.openedResultPanel = resultPanelType;
|
|
3900
|
-
this.
|
|
5273
|
+
this.arcgisOpenedResultPanelChange.emit(resultPanelType);
|
|
3901
5274
|
}
|
|
3902
5275
|
//#endregion
|
|
3903
5276
|
//#region Rendering
|
|
@@ -3908,7 +5281,7 @@ const ArcgisArcadeResults = class {
|
|
|
3908
5281
|
if (this.loading && !this.consoleLogs?.length) {
|
|
3909
5282
|
return h("calcite-loader", { scale: "s", type: "indeterminate", label: "" });
|
|
3910
5283
|
}
|
|
3911
|
-
return (h("div", { class: "console-logs-container ltr-container" }, this.consoleLogs?.length ?
|
|
5284
|
+
return (h("div", { class: "console-logs-container ltr-container" }, this.consoleLogs?.length ? this.consoleLogs.map((log) => h("p", null, log)) : h("p", null, this.messages.consolemessage)));
|
|
3912
5285
|
}
|
|
3913
5286
|
renderLogPanel() {
|
|
3914
5287
|
if (this.openedResultPanel !== "log") {
|
|
@@ -3918,24 +5291,24 @@ const ArcgisArcadeResults = class {
|
|
|
3918
5291
|
return h("calcite-loader", { scale: "s", type: "indeterminate", label: "" });
|
|
3919
5292
|
}
|
|
3920
5293
|
const iconClass = this.result?.type === "error" ? "color-error" : "color-success";
|
|
3921
|
-
return (h("calcite-list", null, this.result ? (h(Fragment, null, h("calcite-list-item", { label:
|
|
3922
|
-
timeStamp: new Intl.DateTimeFormat(this._t9nLocale, {
|
|
5294
|
+
return (h("calcite-list", null, this.result ? (h(Fragment, null, h("calcite-list-item", { label: setValuesInString(this.messages.lastexecutionformat, {
|
|
5295
|
+
timeStamp: new Intl.DateTimeFormat(this.messages._t9nLocale, {
|
|
3923
5296
|
dateStyle: "medium",
|
|
3924
|
-
timeStyle: "medium"
|
|
3925
|
-
}).format(this.result.timeStamp)
|
|
3926
|
-
}) }, h("calcite-icon", { slot: "content-start", icon: "information", scale: "s", class: iconClass })), h("calcite-list-item", { label:
|
|
3927
|
-
time: new Intl.NumberFormat(this._t9nLocale, {
|
|
5297
|
+
timeStyle: "medium",
|
|
5298
|
+
}).format(this.result.timeStamp),
|
|
5299
|
+
}) }, h("calcite-icon", { slot: "content-start", icon: "information", scale: "s", class: iconClass })), h("calcite-list-item", { label: setValuesInString(this.messages.compilationtimeformat, {
|
|
5300
|
+
time: new Intl.NumberFormat(this.messages._t9nLocale, {
|
|
3928
5301
|
style: "unit",
|
|
3929
5302
|
unit: "millisecond",
|
|
3930
|
-
maximumFractionDigits: 2
|
|
3931
|
-
}).format(this.result.compilationTime ?? 0)
|
|
3932
|
-
}) }, h("calcite-icon", { slot: "content-start", icon: "information", scale: "s", class: iconClass })), h("calcite-list-item", { label:
|
|
3933
|
-
time: new Intl.NumberFormat(this._t9nLocale, {
|
|
5303
|
+
maximumFractionDigits: 2,
|
|
5304
|
+
}).format(this.result.compilationTime ?? 0),
|
|
5305
|
+
}) }, h("calcite-icon", { slot: "content-start", icon: "information", scale: "s", class: iconClass })), h("calcite-list-item", { label: setValuesInString(this.messages.executiontimeformat, {
|
|
5306
|
+
time: new Intl.NumberFormat(this.messages._t9nLocale, {
|
|
3934
5307
|
style: "unit",
|
|
3935
5308
|
unit: "millisecond",
|
|
3936
|
-
maximumFractionDigits: 2
|
|
3937
|
-
}).format(this.result.executionTime ?? 0)
|
|
3938
|
-
}) }, h("calcite-icon", { slot: "content-start", icon: "information", scale: "s", class: iconClass })))) : (h("calcite-list-item", { label: this.
|
|
5309
|
+
maximumFractionDigits: 2,
|
|
5310
|
+
}).format(this.result.executionTime ?? 0),
|
|
5311
|
+
}) }, h("calcite-icon", { slot: "content-start", icon: "information", scale: "s", class: iconClass })))) : (h("calcite-list-item", { label: this.messages.runscriptmessage ?? "No output, run the script once." }, h("calcite-icon", { slot: "content-start", icon: "information", scale: "s", class: "color-info" })))));
|
|
3939
5312
|
}
|
|
3940
5313
|
renderOutputPanel() {
|
|
3941
5314
|
if (this.openedResultPanel !== "output") {
|
|
@@ -3946,8 +5319,8 @@ const ArcgisArcadeResults = class {
|
|
|
3946
5319
|
}
|
|
3947
5320
|
switch (this.result?.type) {
|
|
3948
5321
|
case "error":
|
|
3949
|
-
return (h("div", { class: "result-value-simple flex-adjustable" },
|
|
3950
|
-
message: this.result.value
|
|
5322
|
+
return (h("div", { class: "result-value-simple flex-adjustable" }, setValuesInString(this.messages.executionerrorformat, {
|
|
5323
|
+
message: this.result.value,
|
|
3951
5324
|
})));
|
|
3952
5325
|
case "null":
|
|
3953
5326
|
case "unknown":
|
|
@@ -3977,14 +5350,14 @@ const ArcgisArcadeResults = class {
|
|
|
3977
5350
|
case "knowledgeGraph":
|
|
3978
5351
|
return (h("div", { class: "result-value-simple ltr-container" }, h("span", { class: "value-type" }, this.result.type, ":\u00A0"), h("span", { class: "string-value" }, this.result.value.url)));
|
|
3979
5352
|
default:
|
|
3980
|
-
return
|
|
5353
|
+
return h("div", { class: "result-value-simple flex-adjustable ltr-container" }, this.messages.runscriptmessage);
|
|
3981
5354
|
}
|
|
3982
5355
|
}
|
|
3983
5356
|
renderArrayHeader(arcadeResult) {
|
|
3984
5357
|
const items = arcadeResult.value ?? [];
|
|
3985
5358
|
const leftoverCount = Math.max(items.length - MaxArrayItems, 0);
|
|
3986
|
-
return (h(Fragment, null, h("span", null, `${arcadeResult.type}(${items.length ?? 0})`), leftoverCount > 0 ? (h("span", null, "\u00A0",
|
|
3987
|
-
count: MaxArrayItems.toString()
|
|
5359
|
+
return (h(Fragment, null, h("span", null, `${arcadeResult.type}(${items.length ?? 0})`), leftoverCount > 0 ? (h("span", null, "\u00A0", setValuesInString(this.messages.showingfirstitemsformat, {
|
|
5360
|
+
count: MaxArrayItems.toString(),
|
|
3988
5361
|
}))) : null));
|
|
3989
5362
|
}
|
|
3990
5363
|
renderArrayTree(items, subtree = false) {
|
|
@@ -4029,17 +5402,17 @@ const ArcgisArcadeResults = class {
|
|
|
4029
5402
|
}
|
|
4030
5403
|
}
|
|
4031
5404
|
renderFeatureSetLabel(arcadeResult) {
|
|
4032
|
-
return (h("div", { class: "value-type" }, h("span", null, arcadeResult.type, ":"), arcadeResult.features.length >= BatchSize ? (h("span", null, "\u00A0",
|
|
4033
|
-
count: BatchSize.toString()
|
|
5405
|
+
return (h("div", { class: "value-type" }, h("span", null, arcadeResult.type, ":"), arcadeResult.features.length >= BatchSize ? (h("span", null, "\u00A0", setValuesInString(this.messages.showingfirstitemsformat, {
|
|
5406
|
+
count: BatchSize.toString(),
|
|
4034
5407
|
}))) : null));
|
|
4035
5408
|
}
|
|
4036
5409
|
render() {
|
|
4037
|
-
return (h(Host,
|
|
5410
|
+
return (h(Host, { key: 'a614339d095dcaa6ba426f3fc104f3628979a019' }, h("header", { key: 'cafdb89380b6a1db8fb478ef61d8dc328907977d', class: "flex-row" }, h("calcite-action-bar", { key: '542065aba5cc9e26ee9259c47e8c067d39aee748', class: "flex-adjustable", layout: "horizontal", scale: "s", expanded: true, "expand-disabled": true }, h("calcite-action-group", { key: 'ca20537be7a679c37ae72ba6556a2448c3ff3a3b', scale: "s" }, h("calcite-action", { key: 'e7cf514c820e23d77663b48190be003b679dd865', active: this.openedResultPanel === "output", text: this.messages.output ?? "Output", "text-enabled": true, scale: "s", icon: "list-show-all", iconFlipRtl: true, onClick: this._switchResultPanel, "data-panel-name": "output" }), h("calcite-action", { key: '086b8bb306556ce5bbe8153a5ebfa42430eef01e', active: this.openedResultPanel === "console", text: this.messages.console ?? "Console", "text-enabled": true, scale: "s", icon: "console", iconFlipRtl: true, onClick: this._switchResultPanel, "data-panel-name": "console" }), h("calcite-action", { key: 'fde3d723183ea294706adf0bb5041bd10234a222', active: this.openedResultPanel === "log", text: this.messages.log ?? "Log", "text-enabled": true, scale: "s", icon: "list", iconFlipRtl: true, onClick: this._switchResultPanel, "data-panel-name": "log" }))), h("calcite-action", { key: '51cc05e32acc8dc0eee956af96fe8541abf613e8', scale: "s", icon: "x", text: this.messages.close ?? "", onClick: this._emitClose })), h("article", { key: 'ce84fa0ec6376e764c3479a9c891dfa02dd7cb10', class: "flex-adjustable" }, this.loading ? (h("calcite-loader", { scale: "s", type: "indeterminate", label: "" })) : (h("div", { class: "flex-column y-scrollable-container" }, this.renderOutputPanel(), this.renderConsolePanel(), this.renderLogPanel())))));
|
|
4038
5411
|
}
|
|
4039
5412
|
static get assetsDirs() { return ["assets"]; }
|
|
4040
|
-
get
|
|
5413
|
+
get el() { return getElement(this); }
|
|
4041
5414
|
};
|
|
4042
|
-
ArcgisArcadeResults.style =
|
|
5415
|
+
ArcgisArcadeResults.style = ArcgisArcadeResultsStyle0;
|
|
4043
5416
|
|
|
4044
5417
|
function isSuggestionGroups(item) {
|
|
4045
5418
|
if (!Array.isArray(item)) {
|
|
@@ -4051,13 +5424,16 @@ function isSuggestionGroups(item) {
|
|
|
4051
5424
|
return Array.isArray(item[0].suggestions);
|
|
4052
5425
|
}
|
|
4053
5426
|
|
|
4054
|
-
const arcadeSuggestionsCss = ":host{background-color:var(--calcite-color-foreground-1)}:host .notice-container{margin:var(--calcite-spacing-
|
|
5427
|
+
const arcadeSuggestionsCss = ":host{background-color:var(--calcite-color-foreground-1)}:host .notice-container{margin:var(--calcite-spacing-xxs);padding:var(--calcite-spacing-sm);background-color:var(--calcite-color-foreground-1)}:host .sticky{position:sticky;top:0px;z-index:10}:host calcite-flow{height:100%}:host calcite-block p:first-of-type{margin-top:0}:host calcite-block code{font-family:var(--calcite-code-family)}:host calcite-block pre{direction:ltr;overflow-x:auto;background-color:var(--calcite-color-foreground-2);padding:var(--calcite-spacing-sm)}:host calcite-block pre code{font-size:var(--calcite-font-size--2)}:host calcite-list-item-group{background-color:var(--calcite-color-foreground-2)}";
|
|
5428
|
+
const ArcgisArcadeSuggestionsStyle0 = arcadeSuggestionsCss;
|
|
4055
5429
|
|
|
4056
5430
|
const ArcgisArcadeSuggestions = class {
|
|
4057
5431
|
constructor(hostRef) {
|
|
4058
5432
|
registerInstance(this, hostRef);
|
|
4059
|
-
this.
|
|
4060
|
-
this.
|
|
5433
|
+
this.arcgisClose = createEvent(this, "arcgisClose", 3);
|
|
5434
|
+
this.arcgisItemSelected = createEvent(this, "arcgisItemSelected", 3);
|
|
5435
|
+
this.manager = useControllerManager(this);
|
|
5436
|
+
this.messages = useT9n();
|
|
4061
5437
|
this._updateFilterValue = (e) => {
|
|
4062
5438
|
this._filterValue = e.target?.value ?? "";
|
|
4063
5439
|
};
|
|
@@ -4069,7 +5445,7 @@ const ArcgisArcadeSuggestions = class {
|
|
|
4069
5445
|
const keyEvent = e;
|
|
4070
5446
|
if (!keyEvent.key || keyEvent.key === "Enter") {
|
|
4071
5447
|
e.preventDefault();
|
|
4072
|
-
this.
|
|
5448
|
+
this.arcgisItemSelected.emit(item.code);
|
|
4073
5449
|
}
|
|
4074
5450
|
};
|
|
4075
5451
|
this._showSuggestionDetail = (e) => {
|
|
@@ -4081,14 +5457,11 @@ const ArcgisArcadeSuggestions = class {
|
|
|
4081
5457
|
this._selectedSuggestion = item;
|
|
4082
5458
|
};
|
|
4083
5459
|
this._emitClose = () => {
|
|
4084
|
-
this.
|
|
5460
|
+
this.arcgisClose.emit();
|
|
4085
5461
|
};
|
|
4086
5462
|
this._beforeBack = async () => {
|
|
4087
5463
|
this._selectedSuggestion = undefined;
|
|
4088
5464
|
};
|
|
4089
|
-
this._lang = "";
|
|
4090
|
-
this._t9nLocale = "";
|
|
4091
|
-
this._t9nStrings = undefined;
|
|
4092
5465
|
this._selectedSuggestion = undefined;
|
|
4093
5466
|
this._filterValue = "";
|
|
4094
5467
|
this._colorizeStyle = "";
|
|
@@ -4101,13 +5474,11 @@ const ArcgisArcadeSuggestions = class {
|
|
|
4101
5474
|
// #region Component lifecycle events
|
|
4102
5475
|
async componentWillLoad() {
|
|
4103
5476
|
this._colorizeStyle = generateColorizeStyles();
|
|
4104
|
-
this.
|
|
4105
|
-
await B(this, getAssetPath("./assets"));
|
|
5477
|
+
this._themeChangedListener = onColorizeThemeChanged(() => (this._colorizeStyle = generateColorizeStyles()));
|
|
4106
5478
|
}
|
|
4107
5479
|
disconnectedCallback() {
|
|
4108
5480
|
this._flowObserver?.disconnect();
|
|
4109
|
-
this.
|
|
4110
|
-
q(this);
|
|
5481
|
+
this._themeChangedListener?.dispose();
|
|
4111
5482
|
}
|
|
4112
5483
|
// #endregion
|
|
4113
5484
|
//#region Private Methods
|
|
@@ -4125,7 +5496,7 @@ const ArcgisArcadeSuggestions = class {
|
|
|
4125
5496
|
// When switching between flow the same reference is reused
|
|
4126
5497
|
this._flowObserver = new MutationObserver(() => {
|
|
4127
5498
|
// Get the last panel and try to set focus on the input element
|
|
4128
|
-
|
|
5499
|
+
setFocusOnElement(ref.querySelector("calcite-flow-item:last-child"), "calcite-input");
|
|
4129
5500
|
});
|
|
4130
5501
|
this._flowObserver.observe(ref, { attributes: true, attributeFilter: ["id"], childList: true });
|
|
4131
5502
|
}
|
|
@@ -4143,29 +5514,30 @@ const ArcgisArcadeSuggestions = class {
|
|
|
4143
5514
|
renderSuggestionListItems(suggestions) {
|
|
4144
5515
|
suggestions = filterCollection(suggestions, "label", this._filterValue);
|
|
4145
5516
|
if (!suggestions.length) {
|
|
4146
|
-
return h("div", { class: "notice-container" }, this.
|
|
5517
|
+
return h("div", { class: "notice-container" }, this.messages.noitems ?? "No item");
|
|
4147
5518
|
}
|
|
4148
|
-
return suggestions.map((suggestion) => (h("calcite-list-item", { label: suggestion.label, description: suggestion.description, onCalciteListItemSelect: this._emitItemSelected, onKeyPress: this._emitItemSelected, "data-item": suggestion }, h("calcite-action", { slot: "actions-end", text: this.
|
|
5519
|
+
return suggestions.map((suggestion) => (h("calcite-list-item", { label: suggestion.label, description: suggestion.description, onCalciteListItemSelect: this._emitItemSelected, onKeyPress: this._emitItemSelected, "data-item": suggestion }, h("calcite-action", { slot: "actions-end", text: this.messages.expand ?? "", scale: "s", icon: "chevron-right", iconFlipRtl: true, onClick: this._showSuggestionDetail, "data-item": suggestion }))));
|
|
4149
5520
|
}
|
|
4150
5521
|
renderSuggestionFlowItem() {
|
|
4151
5522
|
const suggestion = this._selectedSuggestion;
|
|
4152
5523
|
if (!suggestion) {
|
|
4153
5524
|
return null;
|
|
4154
5525
|
}
|
|
4155
|
-
return (h("calcite-flow-item", { heading: this.
|
|
5526
|
+
return (h("calcite-flow-item", { heading: this.messages.suggestions, closable: true, onCalciteFlowItemClose: this._emitClose, beforeBack: this._beforeBack }, h("calcite-button", { width: "half", slot: "footer", appearance: "outline", kind: "brand", "icon-start": "code", scale: "s", onClick: this._emitItemSelected, ref: (e) => void e?.setFocus(), "data-item": suggestion }, this.messages.insert), h("calcite-block", { open: true, heading: suggestion.label, description: suggestion.description }, h("div", { innerHTML: convertMarkdownString(suggestion.documentation) }), h("pre", null, h("code", { ref: (e) => e === undefined ? undefined : void colorizeCodeElement(e, suggestion.code).catch(console.error) })))));
|
|
4156
5527
|
}
|
|
4157
5528
|
render() {
|
|
4158
|
-
return (h(Host,
|
|
5529
|
+
return (h(Host, { key: '6707bd25af9f7121687352d99cd02646aec67b9e' }, h("style", { key: 'cbb41e7834f0a353b27cb21fd6cb3ee42dfa7d1f' }, this._colorizeStyle), h("calcite-flow", { key: 'b261c8f3d8dc7e1cf94c2596297509ebfea09d40', ref: (ref) => this.flowFocusHandler(ref) }, h("calcite-flow-item", { key: '9faa9a146dc090e0dce0eb30748d57cbb449b2ee', heading: this.messages.suggestions, closable: true, onCalciteFlowItemClose: this._emitClose }, h("calcite-input", { key: '692b2a425ff4ca843485be5f90bc11fc385373a7', value: this._filterValue, icon: "magnifying-glass", clearable: true, onCalciteInputInput: this._updateFilterValue, class: "sticky", scale: "m" }), h("calcite-list", { key: 'e23fdc3c39e98deb6d4c3268b48e0c289c8aefbf' }, this.renderSuggestionGroups())), this.renderSuggestionFlowItem())));
|
|
4159
5530
|
}
|
|
4160
5531
|
static get assetsDirs() { return ["assets"]; }
|
|
4161
|
-
get
|
|
5532
|
+
get el() { return getElement(this); }
|
|
4162
5533
|
static get watchers() { return {
|
|
4163
5534
|
"suggestions": ["suggestionsPropChanged"]
|
|
4164
5535
|
}; }
|
|
4165
5536
|
};
|
|
4166
|
-
ArcgisArcadeSuggestions.style =
|
|
5537
|
+
ArcgisArcadeSuggestions.style = ArcgisArcadeSuggestionsStyle0;
|
|
4167
5538
|
|
|
4168
|
-
const arcadeVariablesCss = ":host{background-color:var(--calcite-color-foreground-1)}:host .notice-container{margin:var(--calcite-spacing-
|
|
5539
|
+
const arcadeVariablesCss = ":host{background-color:var(--calcite-color-foreground-1)}:host .notice-container{margin:var(--calcite-spacing-xxs);padding:var(--calcite-spacing-sm);background-color:var(--calcite-color-foreground-1)}:host .sticky{position:sticky;top:0px;z-index:10}:host calcite-flow{height:100%}:host calcite-list-item-group{background-color:var(--calcite-color-foreground-2)}";
|
|
5540
|
+
const ArcgisArcadeVariablesStyle0 = arcadeVariablesCss;
|
|
4169
5541
|
|
|
4170
5542
|
function stopEnterPropagation(e) {
|
|
4171
5543
|
if (e.key === "Enter") {
|
|
@@ -4175,8 +5547,10 @@ function stopEnterPropagation(e) {
|
|
|
4175
5547
|
const ArcgisArcadeVariables = class {
|
|
4176
5548
|
constructor(hostRef) {
|
|
4177
5549
|
registerInstance(this, hostRef);
|
|
4178
|
-
this.
|
|
4179
|
-
this.
|
|
5550
|
+
this.arcgisClose = createEvent(this, "arcgisClose", 3);
|
|
5551
|
+
this.arcgisItemSelected = createEvent(this, "arcgisItemSelected", 3);
|
|
5552
|
+
this.manager = useControllerManager(this);
|
|
5553
|
+
this.messages = useT9n();
|
|
4180
5554
|
this._updateFilterValue = (e) => {
|
|
4181
5555
|
this._filterValue = e.target.value;
|
|
4182
5556
|
};
|
|
@@ -4185,7 +5559,7 @@ const ArcgisArcadeVariables = class {
|
|
|
4185
5559
|
this._filterValue = "";
|
|
4186
5560
|
};
|
|
4187
5561
|
this._emitClose = () => {
|
|
4188
|
-
this.
|
|
5562
|
+
this.arcgisClose.emit();
|
|
4189
5563
|
};
|
|
4190
5564
|
this._backToTop = () => {
|
|
4191
5565
|
this._flowItemRenderers = [];
|
|
@@ -4198,7 +5572,7 @@ const ArcgisArcadeVariables = class {
|
|
|
4198
5572
|
const keyEvent = e;
|
|
4199
5573
|
if (!keyEvent.key || keyEvent.key === "Enter") {
|
|
4200
5574
|
e.preventDefault();
|
|
4201
|
-
this.
|
|
5575
|
+
this.arcgisItemSelected.emit(variable.snippet);
|
|
4202
5576
|
}
|
|
4203
5577
|
};
|
|
4204
5578
|
this._showCollectionPanel = (e) => {
|
|
@@ -4209,9 +5583,6 @@ const ArcgisArcadeVariables = class {
|
|
|
4209
5583
|
e.stopPropagation();
|
|
4210
5584
|
this.addPanelRenderer(this.collectionBasedVariableRenderer(collectionVariable));
|
|
4211
5585
|
};
|
|
4212
|
-
this._lang = "";
|
|
4213
|
-
this._t9nLocale = "";
|
|
4214
|
-
this._t9nStrings = undefined;
|
|
4215
5586
|
this._mutationCounter = 1;
|
|
4216
5587
|
this._flowItemRenderers = [];
|
|
4217
5588
|
this._filterValue = "";
|
|
@@ -4222,12 +5593,7 @@ const ArcgisArcadeVariables = class {
|
|
|
4222
5593
|
this._flowItemRenderers = [];
|
|
4223
5594
|
}
|
|
4224
5595
|
//#endregion
|
|
4225
|
-
// #region Component lifecycle events
|
|
4226
|
-
async componentWillLoad() {
|
|
4227
|
-
await B(this, getAssetPath("./assets"));
|
|
4228
|
-
}
|
|
4229
5596
|
disconnectedCallback() {
|
|
4230
|
-
q(this);
|
|
4231
5597
|
this._flowObserver?.disconnect();
|
|
4232
5598
|
}
|
|
4233
5599
|
// #endregion
|
|
@@ -4252,7 +5618,7 @@ const ArcgisArcadeVariables = class {
|
|
|
4252
5618
|
// When switching between flow the same reference is reused
|
|
4253
5619
|
this._flowObserver = new MutationObserver(() => {
|
|
4254
5620
|
// Get the last panel and try to set focus on the input element
|
|
4255
|
-
|
|
5621
|
+
setFocusOnElement(ref.querySelector("calcite-flow-item:last-child"), "calcite-input");
|
|
4256
5622
|
});
|
|
4257
5623
|
this._flowObserver.observe(ref, { attributes: true, attributeFilter: ["id"], childList: true });
|
|
4258
5624
|
}
|
|
@@ -4281,15 +5647,15 @@ const ArcgisArcadeVariables = class {
|
|
|
4281
5647
|
});
|
|
4282
5648
|
loading = true;
|
|
4283
5649
|
}
|
|
4284
|
-
return (h("calcite-flow-item", { heading: this.
|
|
5650
|
+
return (h("calcite-flow-item", { heading: this.messages.profilevariables, description: collection.breadcrumb, beforeBack: this._beforeBack, closable: true, onCalciteFlowItemClose: this._emitClose }, h("calcite-action", { slot: "header-actions-end", text: this.messages.backtotop ?? "Back to top", scale: "m", hidden: topPanel, icon: "chevrons-left", iconFlipRtl: true, onClick: this._backToTop }), h("calcite-input", { value: this._filterValue, icon: "magnifying-glass", clearable: true, onCalciteInputInput: this._updateFilterValue, class: "sticky", scale: "m" }), loading ? (h("calcite-loader", { scale: "s", type: "indeterminate", label: this.messages.loading ?? "Loading" })) : (h("calcite-list", null, this.renderEditorVariables(collection)))));
|
|
4285
5651
|
};
|
|
4286
5652
|
}
|
|
4287
5653
|
renderEditorVariables(collection) {
|
|
4288
5654
|
// Filter the variables. Skip group, we will filter the children later on.
|
|
4289
|
-
const filterExpression =
|
|
5655
|
+
const filterExpression = createFilterExpression(this._filterValue);
|
|
4290
5656
|
const filteredVariables = collection.variables.filter((variable) => variable.passFilter(filterExpression));
|
|
4291
5657
|
if (!filteredVariables.length) {
|
|
4292
|
-
return h("div", { class: "notice-container" }, this.
|
|
5658
|
+
return h("div", { class: "notice-container" }, this.messages.noitems ?? "No item");
|
|
4293
5659
|
}
|
|
4294
5660
|
return filteredVariables.map((variable) => this.renderEditorVariable(variable));
|
|
4295
5661
|
}
|
|
@@ -4299,25 +5665,26 @@ const ArcgisArcadeVariables = class {
|
|
|
4299
5665
|
// Group is a collection but we represent it differently
|
|
4300
5666
|
return (h("calcite-list-item-group", { heading: variable.getLabel() }, this.renderEditorVariables(variable)));
|
|
4301
5667
|
default:
|
|
4302
|
-
return (h("calcite-list-item", { label: variable.getLabel(), description: variable.getDescription(), onCalciteListItemSelect: this._emitItemSelected, onKeyPress: this._emitItemSelected, "data-item": variable }, variable.isCollection ? (h("calcite-action", { slot: "actions-end", text: this.
|
|
5668
|
+
return (h("calcite-list-item", { label: variable.getLabel(), description: variable.getDescription(), onCalciteListItemSelect: this._emitItemSelected, onKeyPress: this._emitItemSelected, "data-item": variable }, variable.isCollection ? (h("calcite-action", { slot: "actions-end", text: this.messages.expand ?? "", scale: "s", icon: "chevron-right", iconFlipRtl: true, onClick: this._showCollectionPanel, onKeyPress: stopEnterPropagation, "data-item": variable })) : null, variable.icon ? h("calcite-icon", { icon: variable.icon, scale: "s", slot: "content-start" }) : null));
|
|
4303
5669
|
}
|
|
4304
5670
|
}
|
|
4305
5671
|
render() {
|
|
4306
5672
|
const profile = arcadeDefaults.getEditorProfileForModel(this.modelId ?? "");
|
|
4307
5673
|
if (!this.loading && !profile?.variables.length) {
|
|
4308
|
-
return (h("calcite-flow", null, h("calcite-flow-item", { heading: this.
|
|
5674
|
+
return (h("calcite-flow", null, h("calcite-flow-item", { heading: this.messages.profilevariables, closable: true, onCalciteFlowItemClose: this._emitClose }, h("div", { class: "notice-container" }, this.messages.noprofilevariablesmessage ?? ""))));
|
|
4309
5675
|
}
|
|
4310
5676
|
return (h("calcite-flow", { ref: (ref) => this.flowFocusHandler(ref) }, this.collectionBasedVariableRenderer(profile, true)(), this._flowItemRenderers.map((renderer) => renderer())));
|
|
4311
5677
|
}
|
|
4312
5678
|
static get assetsDirs() { return ["assets"]; }
|
|
4313
|
-
get
|
|
5679
|
+
get el() { return getElement(this); }
|
|
4314
5680
|
static get watchers() { return {
|
|
4315
5681
|
"modelId": ["modelIdPropChanged"]
|
|
4316
5682
|
}; }
|
|
4317
5683
|
};
|
|
4318
|
-
ArcgisArcadeVariables.style =
|
|
5684
|
+
ArcgisArcadeVariables.style = ArcgisArcadeVariablesStyle0;
|
|
4319
5685
|
|
|
4320
5686
|
const codeEditorCss = "@charset \"UTF-8\";.monaco-action-bar{white-space:nowrap;height:100%}.monaco-action-bar .actions-container{display:flex;margin:0 auto;padding:0;height:100%;width:100%;align-items:center}.monaco-action-bar.vertical .actions-container{display:inline-block}.monaco-action-bar .action-item{display:block;align-items:center;justify-content:center;cursor:pointer;position:relative}.monaco-action-bar .action-item.disabled{cursor:default}.monaco-action-bar .action-item .codicon,.monaco-action-bar .action-item .icon{display:block}.monaco-action-bar .action-item .codicon{display:flex;align-items:center;width:16px;height:16px}.monaco-action-bar .action-label{display:flex;font-size:11px;padding:3px;border-radius:5px}.monaco-action-bar .action-item.disabled .action-label,.monaco-action-bar .action-item.disabled .action-label:before,.monaco-action-bar .action-item.disabled .action-label:hover{opacity:0.6}.monaco-action-bar.vertical{text-align:left}.monaco-action-bar.vertical .action-item{display:block}.monaco-action-bar.vertical .action-label.separator{display:block;border-bottom:1px solid #bbb;padding-top:1px;margin-left:0.8em;margin-right:0.8em}.monaco-action-bar .action-item .action-label.separator{width:1px;height:16px;margin:5px 4px !important;cursor:default;min-width:1px;padding:0;background-color:#bbb}.secondary-actions .monaco-action-bar .action-label{margin-left:6px}.monaco-action-bar .action-item.select-container{overflow:hidden;flex:1;max-width:170px;min-width:60px;display:flex;align-items:center;justify-content:center;margin-right:10px}.monaco-action-bar .action-item.action-dropdown-item{display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator{display:flex;align-items:center;cursor:default}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator>div{width:1px}.monaco-aria-container{position:absolute;left:-999em}.monaco-text-button{box-sizing:border-box;display:flex;width:100%;padding:4px;border-radius:2px;text-align:center;cursor:pointer;justify-content:center;align-items:center;border:1px solid var(--vscode-button-border, transparent);line-height:18px}.monaco-text-button:focus{outline-offset:2px !important}.monaco-text-button:hover{text-decoration:none !important}.monaco-button.disabled,.monaco-button.disabled:focus{opacity:0.4 !important;cursor:default}.monaco-text-button .codicon{margin:0 0.2em;color:inherit !important}.monaco-text-button.monaco-text-button-with-short-label{flex-direction:row;flex-wrap:wrap;padding:0 4px;overflow:hidden;height:28px}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label{flex-basis:100%}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{flex-grow:1;width:0;overflow:hidden}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label,.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{display:flex;justify-content:center;align-items:center;font-weight:400;font-style:inherit;padding:4px 0}.monaco-button-dropdown{display:flex;cursor:pointer}.monaco-button-dropdown.disabled{cursor:default}.monaco-button-dropdown>.monaco-button:focus{outline-offset:-1px !important}.monaco-button-dropdown.disabled>.monaco-button-dropdown-separator,.monaco-button-dropdown.disabled>.monaco-button.disabled,.monaco-button-dropdown.disabled>.monaco-button.disabled:focus{opacity:0.4 !important}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-right-width:0 !important}.monaco-button-dropdown .monaco-button-dropdown-separator{padding:4px 0;cursor:default}.monaco-button-dropdown .monaco-button-dropdown-separator>div{height:100%;width:1px}.monaco-button-dropdown>.monaco-button.monaco-dropdown-button{border:1px solid var(--vscode-button-border, transparent);border-left-width:0 !important;border-radius:0 2px 2px 0;display:flex;align-items:center}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-radius:2px 0 0 2px}.monaco-description-button{display:flex;flex-direction:column;align-items:center;margin:4px 5px}.monaco-description-button .monaco-button-description{font-style:italic;font-size:11px;padding:4px 20px}.monaco-description-button .monaco-button-description,.monaco-description-button .monaco-button-label{display:flex;justify-content:center;align-items:center}.monaco-description-button .monaco-button-description>.codicon,.monaco-description-button .monaco-button-label>.codicon{margin:0 0.2em;color:inherit !important}.monaco-button-dropdown.default-colors>.monaco-button,.monaco-button.default-colors{color:var(--vscode-button-foreground);background-color:var(--vscode-button-background)}.monaco-button-dropdown.default-colors>.monaco-button:hover,.monaco-button.default-colors:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-button-dropdown.default-colors>.monaco-button.secondary,.monaco-button.default-colors.secondary{color:var(--vscode-button-secondaryForeground);background-color:var(--vscode-button-secondaryBackground)}.monaco-button-dropdown.default-colors>.monaco-button.secondary:hover,.monaco-button.default-colors.secondary:hover{background-color:var(--vscode-button-secondaryHoverBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator{background-color:var(--vscode-button-background);border-top:1px solid var(--vscode-button-border);border-bottom:1px solid var(--vscode-button-border)}.monaco-button-dropdown.default-colors .monaco-button.secondary+.monaco-button-dropdown-separator{background-color:var(--vscode-button-secondaryBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator>div{background-color:var(--vscode-button-separator)}@font-face{font-family:codicon;font-display:block;src:url(data:font/ttf;base64,AAEAAAALAIAAAwAwR1NVQiCLJXoAAAE4AAAAVE9TLzI3T0ZpAAABjAAAAGBjbWFw2WtCygAACNwAABnaZ2x5ZkUa1GQAACY0AADuCGhlYWRYl6BTAAAA4AAAADZoaGVhAlsC5wAAALwAAAAkaG10eAcp//oAAAHsAAAG8GxvY2Ec7eKIAAAiuAAAA3ptYXhwAt0BgQAAARgAAAAgbmFtZZP3uUsAARQ8AAAB+HBvc3TRsqgxAAEWNAAAGCMAAQAAASwAAAAAASz////+AS4AAQAAAAAAAAAAAAAAAAAAAbwAAQAAAAEAAKJbzxRfDzz1AAsBLAAAAAB8JbCAAAAAAHwlsID////9AS4BLQAAAAgAAgAAAAAAAAABAAABvAF1ABcAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAQBKwGQAAUAAADLANIAAAAqAMsA0gAAAJAADgBNAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAwOpg7CMBLAAAABsBRwADAAAAAQAAAAAAAAAAAAAAAAACAAAAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLP//ASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLP//ASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEs//8BLAAAASwAAAEsAAABLAAAASz//wEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLP//ASwAAAEsAAABLAAAASz//wEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAAAAABQAAAAMAAAAsAAAABAAABPoAAQAAAAAD9AADAAEAAAAsAAMACgAABPoABAPIAAAAEAAQAAMAAOqI6ozqx+rJ6wnrTuwj//8AAOpg6orqj+rJ6szrC+tQ//8AAAAAAAAAAAAAAAAAAAABABAAYABkANQA1AFOAdQAAAADAOkBPgE7ALEBLAGFARoBXwEEAWUATAGxAVIBWwFaAI4ANQElAIMAxwD2AEABgwB2ABYBrgCYAIUBOAETAQoBCwGYAMEAowC1AZABcACIAYEBaQF4AXYBagF5AYABewF0ALcBbwF9AAIABAAFAAoACwAMAA0ADgAPABAAEgAaABwAHQAeAFkAWgBbAFwAXwBgACEAIgAjACQAJQAoACoAKwAsAC0ALgAvADEAMgAzADQAOwA4ADwAPQA+AD8AQQBCAEQARgBHAEkAUgBTAFQAVQBkAGYAaABrAG8AcQByAHMAdAB1AHcAeAB5AHoAewB8AH4AfwCBAIIAhACGAIkAjACNAJAAkQCSAJMAlACVAJYAlwCZAJsAnACdAJ4AnwCgAKIApQCmAKcAkQCoAKkAqwCyALMAtgC4ALwAvQDAAMIAwwDEAMUAywDMAM0AzgDPANAA0QDSAOcA6gDrAO4A8QDyAPMA9AD4APkA/AD9AP4BAwEFAQYBBwEJAQ0BDgERARIBFQEWAR0BIQEiASMBJAEmAScBKAEpASoBKwEwATEBMgEzATQBNQE2ATcBOQE6ATwBPQE/AUABQgFDAUQBRQFGAUsBTAFNAU4BTwFRAVYBVwFYAVkBXAFeAWIBYwFkAWYBZwFrAWwBbQFuAXEBcgFzAXUBdwF6AXwBfgGHAYgBkQGSAZQBlgGXAZkBmgGbAZwBnQGhAaMBpAGlAagBqQGqAawBrQGyAbMBtAG1AbYBugG7AOwA7QDvAPAAXQBeAG0AOQBuAGEBfwBsAHAAagBYACYAJwD/AIoAjwC+AaIAAQAXAGIA5gEUAUgBggEfALQBVQFUARgBaAEgAS4AVwGrAEMBAACLALkA9wEQAS8AKQEeARcANgA3AEgBhAGmAaABngGfAK0BRwFJAQ8AaQG3AbkBuAGKAYsBjAGNAY4BjwGJABEAUQEZAJoBsABnAMkA1QDUANMATwBOAE0AFADKAKwArgBWAGUBSgChAGMAFQC6ALsBHAAfACAA9QATAacBDADlANYA1wDcANoA2wDeAN8A4QDjAOQA2QDYAYYAxgEtAIcABgAHAAgACQDiAN0A4AAbAL8A+wD6ADoAGQAYAEsArwCwAVAASgFTAWEAyAECAZMBlQBFAV0ApAGvADABGwEIAQEAqgBQAOgBQQFgAIAAfQAAAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAU4AAAAAAAAAG8AADqYAAA6mAAAAADAADqYQAA6mEAAADpAADqYgAA6mIAAAE+AADqYwAA6mMAAAE7AADqZAAA6mQAAACxAADqZQAA6mUAAAEsAADqZgAA6mYAAAGFAADqZwAA6mcAAAEaAADqaAAA6mgAAAFfAADqaQAA6mkAAAEEAADqagAA6moAAAFlAADqawAA6msAAABMAADqbAAA6mwAAAGxAADqbQAA6m0AAAFSAADqbgAA6m4AAAFbAADqbwAA6m8AAAFaAADqcAAA6nAAAACOAADqcQAA6nEAAAA1AADqcgAA6nIAAAElAADqcwAA6nMAAACDAADqdAAA6nQAAADHAADqdQAA6nUAAAD2AADqdgAA6nYAAABAAADqdwAA6ncAAAGDAADqeAAA6ngAAAB2AADqeQAA6nkAAAAWAADqegAA6noAAAGuAADqewAA6nsAAACYAADqfAAA6nwAAACFAADqfQAA6n0AAAE4AADqfgAA6n4AAAETAADqfwAA6n8AAAEKAADqgAAA6oAAAAELAADqgQAA6oEAAAGYAADqggAA6oIAAADBAADqgwAA6oMAAACjAADqhAAA6oQAAAC1AADqhQAA6oUAAAGQAADqhgAA6oYAAAFwAADqhwAA6ocAAACIAADqiAAA6ogAAAGBAADqigAA6ooAAAFpAADqiwAA6osAAAF4AADqjAAA6owAAAF2AADqjwAA6o8AAAFqAADqkAAA6pAAAAF5AADqkQAA6pEAAAGAAADqkgAA6pIAAAF7AADqkwAA6pMAAAF0AADqlAAA6pQAAAC3AADqlQAA6pUAAAFvAADqlgAA6pYAAAF9AADqlwAA6pcAAAACAADqmAAA6pgAAAAEAADqmQAA6pkAAAAFAADqmgAA6poAAAAKAADqmwAA6psAAAALAADqnAAA6pwAAAAMAADqnQAA6p0AAAANAADqngAA6p4AAAAOAADqnwAA6p8AAAAPAADqoAAA6qAAAAAQAADqoQAA6qEAAAASAADqogAA6qIAAAAaAADqowAA6qMAAAAcAADqpAAA6qQAAAAdAADqpQAA6qUAAAAeAADqpgAA6qYAAABZAADqpwAA6qcAAABaAADqqAAA6qgAAABbAADqqQAA6qkAAABcAADqqgAA6qoAAABfAADqqwAA6qsAAABgAADqrAAA6qwAAAAhAADqrQAA6q0AAAAiAADqrgAA6q4AAAAjAADqrwAA6q8AAAAkAADqsAAA6rAAAAAlAADqsQAA6rEAAAAoAADqsgAA6rIAAAAqAADqswAA6rMAAAArAADqtAAA6rQAAAAsAADqtQAA6rUAAAAtAADqtgAA6rYAAAAuAADqtwAA6rcAAAAvAADquAAA6rgAAAAxAADquQAA6rkAAAAyAADqugAA6roAAAAzAADquwAA6rsAAAA0AADqvAAA6rwAAAA7AADqvQAA6r0AAAA4AADqvgAA6r4AAAA8AADqvwAA6r8AAAA9AADqwAAA6sAAAAA+AADqwQAA6sEAAAA/AADqwgAA6sIAAABBAADqwwAA6sMAAABCAADqxAAA6sQAAABEAADqxQAA6sUAAABGAADqxgAA6sYAAABHAADqxwAA6scAAABJAADqyQAA6skAAABSAADqzAAA6swAAABTAADqzQAA6s0AAABUAADqzgAA6s4AAABVAADqzwAA6s8AAABkAADq0AAA6tAAAABmAADq0QAA6tEAAABoAADq0gAA6tIAAABrAADq0wAA6tMAAABvAADq1AAA6tQAAABxAADq1QAA6tUAAAByAADq1gAA6tYAAABzAADq1wAA6tcAAAB0AADq2AAA6tgAAAB1AADq2QAA6tkAAAB3AADq2gAA6toAAAB4AADq2wAA6tsAAAB5AADq3AAA6twAAAB6AADq3QAA6t0AAAB7AADq3gAA6t4AAAB8AADq3wAA6t8AAAB+AADq4AAA6uAAAAB/AADq4QAA6uEAAACBAADq4gAA6uIAAACCAADq4wAA6uMAAACEAADq5AAA6uQAAACGAADq5QAA6uUAAACJAADq5gAA6uYAAACMAADq5wAA6ucAAACNAADq6AAA6ugAAACQAADq6QAA6ukAAACRAADq6gAA6uoAAACSAADq6wAA6usAAACTAADq7AAA6uwAAACUAADq7QAA6u0AAACVAADq7gAA6u4AAACWAADq7wAA6u8AAACXAADq8AAA6vAAAACZAADq8QAA6vEAAACbAADq8gAA6vIAAACcAADq8wAA6vMAAACdAADq9AAA6vQAAACeAADq9QAA6vUAAACfAADq9gAA6vYAAACgAADq9wAA6vcAAACiAADq+AAA6vgAAAClAADq+QAA6vkAAACmAADq+gAA6voAAACnAADq+wAA6vsAAACRAADq/AAA6vwAAACoAADq/QAA6v0AAACpAADq/gAA6v4AAACrAADq/wAA6v8AAACyAADrAAAA6wAAAACzAADrAQAA6wEAAAC2AADrAgAA6wIAAAC4AADrAwAA6wMAAAC8AADrBAAA6wQAAAC9AADrBQAA6wUAAADAAADrBgAA6wYAAADCAADrBwAA6wcAAADDAADrCAAA6wgAAADEAADrCQAA6wkAAADFAADrCwAA6wsAAADLAADrDAAA6wwAAADMAADrDQAA6w0AAADNAADrDgAA6w4AAADOAADrDwAA6w8AAADPAADrEAAA6xAAAADQAADrEQAA6xEAAADRAADrEgAA6xIAAADSAADrEwAA6xMAAADnAADrFAAA6xQAAADqAADrFQAA6xUAAADrAADrFgAA6xYAAADuAADrFwAA6xcAAADxAADrGAAA6xgAAADyAADrGQAA6xkAAADzAADrGgAA6xoAAAD0AADrGwAA6xsAAAD4AADrHAAA6xwAAAD5AADrHQAA6x0AAAD8AADrHgAA6x4AAAD9AADrHwAA6x8AAAD+AADrIAAA6yAAAAEDAADrIQAA6yEAAAEFAADrIgAA6yIAAAEGAADrIwAA6yMAAAEHAADrJAAA6yQAAAEJAADrJQAA6yUAAAENAADrJgAA6yYAAAEOAADrJwAA6ycAAAERAADrKAAA6ygAAAESAADrKQAA6ykAAAEVAADrKgAA6yoAAAEWAADrKwAA6ysAAAEdAADrLAAA6ywAAAEhAADrLQAA6y0AAAEiAADrLgAA6y4AAAEjAADrLwAA6y8AAAEkAADrMAAA6zAAAAEmAADrMQAA6zEAAAEnAADrMgAA6zIAAAEoAADrMwAA6zMAAAEpAADrNAAA6zQAAAEqAADrNQAA6zUAAAErAADrNgAA6zYAAAEwAADrNwAA6zcAAAExAADrOAAA6zgAAAEyAADrOQAA6zkAAAEzAADrOgAA6zoAAAE0AADrOwAA6zsAAAE1AADrPAAA6zwAAAE2AADrPQAA6z0AAAE3AADrPgAA6z4AAAE5AADrPwAA6z8AAAE6AADrQAAA60AAAAE8AADrQQAA60EAAAE9AADrQgAA60IAAAE/AADrQwAA60MAAAFAAADrRAAA60QAAAFCAADrRQAA60UAAAFDAADrRgAA60YAAAFEAADrRwAA60cAAAFFAADrSAAA60gAAAFGAADrSQAA60kAAAFLAADrSgAA60oAAAFMAADrSwAA60sAAAFNAADrTAAA60wAAAFOAADrTQAA600AAAFPAADrTgAA604AAAFRAADrUAAA61AAAAFWAADrUQAA61EAAAFXAADrUgAA61IAAAFYAADrUwAA61MAAAFZAADrVAAA61QAAAFcAADrVQAA61UAAAFeAADrVgAA61YAAAFiAADrVwAA61cAAAFjAADrWAAA61gAAAFkAADrWQAA61kAAAFmAADrWgAA61oAAAFnAADrWwAA61sAAAFrAADrXAAA61wAAAFsAADrXQAA610AAAFtAADrXgAA614AAAFuAADrXwAA618AAAFxAADrYAAA62AAAAFyAADrYQAA62EAAAFzAADrYgAA62IAAAF1AADrYwAA62MAAAF3AADrZAAA62QAAAF6AADrZQAA62UAAAF8AADrZgAA62YAAAF+AADrZwAA62cAAAGHAADraAAA62gAAAGIAADraQAA62kAAAGRAADragAA62oAAAGSAADrawAA62sAAAGUAADrbAAA62wAAAGWAADrbQAA620AAAGXAADrbgAA624AAAGZAADrbwAA628AAAGaAADrcAAA63AAAAGbAADrcQAA63EAAAGcAADrcgAA63IAAAGdAADrcwAA63MAAAGhAADrdAAA63QAAAGjAADrdQAA63UAAAGkAADrdgAA63YAAAGlAADrdwAA63cAAAGoAADreAAA63gAAAGpAADreQAA63kAAAGqAADregAA63oAAAGsAADrewAA63sAAAGtAADrfAAA63wAAAGyAADrfQAA630AAAGzAADrfgAA634AAAG0AADrfwAA638AAAG1AADrgAAA64AAAAG2AADrgQAA64EAAAG6AADrggAA64IAAAG7AADrgwAA64MAAADsAADrhAAA64QAAADtAADrhQAA64UAAADvAADrhgAA64YAAADwAADrhwAA64cAAABdAADriAAA64gAAABeAADriQAA64kAAABtAADrigAA64oAAAA5AADriwAA64sAAABuAADrjAAA64wAAABhAADrjQAA640AAAF/AADrjgAA644AAABsAADrjwAA648AAABwAADrkAAA65AAAABqAADrkQAA65EAAABYAADrkgAA65IAAAAmAADrkwAA65MAAAAnAADrlAAA65QAAAD/AADrlQAA65UAAACKAADrlgAA65YAAACPAADrlwAA65cAAAC+AADrmAAA65gAAAGiAADrmQAA65kAAAABAADrmgAA65oAAAAXAADrmwAA65sAAABiAADrnAAA65wAAADmAADrnQAA650AAAEUAADrngAA654AAAFIAADrnwAA658AAAGCAADroAAA66AAAAEfAADroQAA66EAAAC0AADrogAA66IAAAFVAADrowAA66MAAAFUAADrpAAA66QAAAEYAADrpQAA66UAAAFoAADrpgAA66YAAAEgAADrpwAA66cAAAEuAADrqAAA66gAAABXAADrqQAA66kAAAGrAADrqgAA66oAAABDAADrqwAA66sAAAEAAADrrAAA66wAAACLAADrrQAA660AAAC5AADrrgAA664AAAD3AADrrwAA668AAAEQAADrsAAA67AAAAEvAADrsQAA67EAAAApAADrsgAA67IAAAEeAADrswAA67MAAAEXAADrtAAA67QAAAA2AADrtQAA67UAAAA3AADrtgAA67YAAABIAADrtwAA67cAAAGEAADruAAA67gAAAGmAADruQAA67kAAAGgAADrugAA67oAAAGeAADruwAA67sAAAGfAADrvAAA67wAAACtAADrvQAA670AAAFHAADrvgAA674AAAFJAADrvwAA678AAAEPAADrwAAA68AAAABpAADrwQAA68EAAAG3AADrwgAA68IAAAG5AADrwwAA68MAAAG4AADrxAAA68QAAAGKAADrxQAA68UAAAGLAADrxgAA68YAAAGMAADrxwAA68cAAAGNAADryAAA68gAAAGOAADryQAA68kAAAGPAADrygAA68oAAAGJAADrywAA68sAAAARAADrzAAA68wAAABRAADrzQAA680AAAEZAADrzgAA684AAACaAADrzwAA688AAAGwAADr0AAA69AAAABnAADr0QAA69EAAADJAADr0gAA69IAAADVAADr0wAA69MAAADUAADr1AAA69QAAADTAADr1QAA69UAAABPAADr1gAA69YAAABOAADr1wAA69cAAABNAADr2AAA69gAAAAUAADr2QAA69kAAADKAADr2gAA69oAAACsAADr2wAA69sAAACuAADr3AAA69wAAABWAADr3QAA690AAABlAADr3gAA694AAAFKAADr3wAA698AAAChAADr4AAA6+AAAABjAADr4QAA6+EAAAAVAADr4gAA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AGQAaQBjAG8AbgBUAGgAZQAgAGkAYwBvAG4AIABmAG8AbgB0ACAAZgBvAHIAIABWAGkAcwB1AGEAbAAgAFMAdAB1AGQAaQBvACAAQwBvAGQAZQBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAIAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvAECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+Af8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CDwIQAhECEgITAhQCFQIWAhcCGAIZAhoCGwIcAh0CHgIfAiACIQIiAiMCJAIlAiYCJwIoAikCKgIrAiwCLQIuAi8CMAIxAjICMwI0AjUCNgI3AjgCOQI6AjsCPAI9Aj4CPwJAAkECQgJDAkQCRQJGAkcCSAJJAkoCSwJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoMChAKFAoYChwKIAokCigKLAowCjQKOAo8CkAKRApICkwKUApUClgKXApgCmQKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQAHYWNjb3VudBRhY3RpdmF0ZS1icmVha3BvaW50cwNhZGQHYXJjaGl2ZQphcnJvdy1ib3RoEWFycm93LWNpcmNsZS1kb3duEWFycm93LWNpcmNsZS1sZWZ0EmFycm93LWNpcmNsZS1yaWdodA9hcnJvdy1jaXJjbGUtdXAKYXJyb3ctZG93bgphcnJvdy1sZWZ0C2Fycm93LXJpZ2h0EGFycm93LXNtYWxsLWRvd24QYXJyb3ctc21hbGwtbGVmdBFhcnJvdy1zbWFsbC1yaWdodA5hcnJvdy1zbWFsbC11cAphcnJvdy1zd2FwCGFycm93LXVwDGF6dXJlLWRldm9wcwVhenVyZQtiZWFrZXItc3RvcAZiZWFrZXIIYmVsbC1kb3QOYmVsbC1zbGFzaC1kb3QKYmVsbC1zbGFzaARiZWxsBWJsYW5rBGJvbGQEYm9vawhib29rbWFyawticmFja2V0LWRvdA1icmFja2V0LWVycm9yCWJyaWVmY2FzZQlicm9hZGNhc3QHYnJvd3NlcgNidWcIY2FsZW5kYXINY2FsbC1pbmNvbWluZw1jYWxsLW91dGdvaW5nDmNhc2Utc2Vuc2l0aXZlCWNoZWNrLWFsbAVjaGVjawljaGVja2xpc3QMY2hldnJvbi1kb3duDGNoZXZyb24tbGVmdA1jaGV2cm9uLXJpZ2h0CmNoZXZyb24tdXAEY2hpcAxjaHJvbWUtY2xvc2UPY2hyb21lLW1heGltaXplD2Nocm9tZS1taW5pbWl6ZQ5jaHJvbWUtcmVzdG9yZQ1jaXJjbGUtZmlsbGVkE2NpcmNsZS1sYXJnZS1maWxsZWQMY2lyY2xlLWxhcmdlDGNpcmNsZS1zbGFzaBNjaXJjbGUtc21hbGwtZmlsbGVkDGNpcmNsZS1zbWFsbAZjaXJjbGUNY2lyY3VpdC1ib2FyZAljbGVhci1hbGwGY2xpcHB5CWNsb3NlLWFsbAVjbG9zZQ5jbG91ZC1kb3dubG9hZAxjbG91ZC11cGxvYWQFY2xvdWQEY29kZQZjb2ZmZWUMY29sbGFwc2UtYWxsCmNvbG9yLW1vZGUHY29tYmluZRJjb21tZW50LWRpc2N1c3Npb24NY29tbWVudC1kcmFmdBJjb21tZW50LXVucmVzb2x2ZWQHY29tbWVudA5jb21wYXNzLWFjdGl2ZQtjb21wYXNzLWRvdAdjb21wYXNzB2NvcGlsb3QEY29weQtjcmVkaXQtY2FyZARkYXNoCWRhc2hib2FyZAhkYXRhYmFzZQlkZWJ1Zy1hbGwPZGVidWctYWx0LXNtYWxsCWRlYnVnLWFsdCdkZWJ1Zy1icmVha3BvaW50LWNvbmRpdGlvbmFsLXVudmVyaWZpZWQcZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbCBkZWJ1Zy1icmVha3BvaW50LWRhdGEtdW52ZXJpZmllZBVkZWJ1Zy1icmVha3BvaW50LWRhdGEkZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi11bnZlcmlmaWVkGWRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24fZGVidWctYnJlYWtwb2ludC1sb2ctdW52ZXJpZmllZBRkZWJ1Zy1icmVha3BvaW50LWxvZxxkZWJ1Zy1icmVha3BvaW50LXVuc3VwcG9ydGVkDWRlYnVnLWNvbnNvbGUUZGVidWctY29udGludWUtc21hbGwOZGVidWctY29udGludWUOZGVidWctY292ZXJhZ2UQZGVidWctZGlzY29ubmVjdBJkZWJ1Zy1saW5lLWJ5LWxpbmULZGVidWctcGF1c2ULZGVidWctcmVydW4TZGVidWctcmVzdGFydC1mcmFtZQ1kZWJ1Zy1yZXN0YXJ0FmRlYnVnLXJldmVyc2UtY29udGludWUXZGVidWctc3RhY2tmcmFtZS1hY3RpdmUQZGVidWctc3RhY2tmcmFtZQtkZWJ1Zy1zdGFydA9kZWJ1Zy1zdGVwLWJhY2sPZGVidWctc3RlcC1pbnRvDmRlYnVnLXN0ZXAtb3V0D2RlYnVnLXN0ZXAtb3ZlcgpkZWJ1Zy1zdG9wBWRlYnVnEGRlc2t0b3AtZG93bmxvYWQTZGV2aWNlLWNhbWVyYS12aWRlbw1kZXZpY2UtY2FtZXJhDWRldmljZS1tb2JpbGUKZGlmZi1hZGRlZAxkaWZmLWlnbm9yZWQNZGlmZi1tb2RpZmllZA1kaWZmLW11bHRpcGxlDGRpZmYtcmVtb3ZlZAxkaWZmLXJlbmFtZWQLZGlmZi1zaW5nbGUEZGlmZgdkaXNjYXJkBGVkaXQNZWRpdG9yLWxheW91dAhlbGxpcHNpcwxlbXB0eS13aW5kb3cLZXJyb3Itc21hbGwFZXJyb3IHZXhjbHVkZQpleHBhbmQtYWxsBmV4cG9ydApleHRlbnNpb25zCmV5ZS1jbG9zZWQDZXllCGZlZWRiYWNrC2ZpbGUtYmluYXJ5CWZpbGUtY29kZQpmaWxlLW1lZGlhCGZpbGUtcGRmDmZpbGUtc3VibW9kdWxlFmZpbGUtc3ltbGluay1kaXJlY3RvcnkRZmlsZS1zeW1saW5rLWZpbGUIZmlsZS16aXAEZmlsZQVmaWxlcw1maWx0ZXItZmlsbGVkBmZpbHRlcgVmbGFtZQlmb2xkLWRvd24HZm9sZC11cARmb2xkDWZvbGRlci1hY3RpdmUOZm9sZGVyLWxpYnJhcnkNZm9sZGVyLW9wZW5lZAZmb2xkZXIEZ2FtZQRnZWFyBGdpZnQLZ2lzdC1zZWNyZXQKZ2l0LWNvbW1pdAtnaXQtY29tcGFyZQlnaXQtZmV0Y2gJZ2l0LW1lcmdlF2dpdC1wdWxsLXJlcXVlc3QtY2xvc2VkF2dpdC1wdWxsLXJlcXVlc3QtY3JlYXRlFmdpdC1wdWxsLXJlcXVlc3QtZHJhZnQeZ2l0LXB1bGwtcmVxdWVzdC1nby10by1jaGFuZ2VzHGdpdC1wdWxsLXJlcXVlc3QtbmV3LWNoYW5nZXMQZ2l0LXB1bGwtcmVxdWVzdA1naXRodWItYWN0aW9uCmdpdGh1Yi1hbHQPZ2l0aHViLWludmVydGVkBmdpdGh1YgVnbG9iZQpnby10by1maWxlB2dyYWJiZXIKZ3JhcGgtbGVmdApncmFwaC1saW5lDWdyYXBoLXNjYXR0ZXIFZ3JhcGgHZ3JpcHBlchFncm91cC1ieS1yZWYtdHlwZQxoZWFydC1maWxsZWQFaGVhcnQHaGlzdG9yeQRob21lD2hvcml6b250YWwtcnVsZQVodWJvdAVpbmJveAZpbmRlbnQEaW5mbwZpbnNlcnQHaW5zcGVjdAtpc3N1ZS1kcmFmdA5pc3N1ZS1yZW9wZW5lZAZpc3N1ZXMGaXRhbGljBmplcnNleQRqc29uDmtlYmFiLXZlcnRpY2FsA2tleQNsYXcNbGF5ZXJzLWFjdGl2ZQpsYXllcnMtZG90BmxheWVycxdsYXlvdXQtYWN0aXZpdHliYXItbGVmdBhsYXlvdXQtYWN0aXZpdHliYXItcmlnaHQPbGF5b3V0LWNlbnRlcmVkDmxheW91dC1tZW51YmFyE2xheW91dC1wYW5lbC1jZW50ZXIUbGF5b3V0LXBhbmVsLWp1c3RpZnkRbGF5b3V0LXBhbmVsLWxlZnQQbGF5b3V0LXBhbmVsLW9mZhJsYXlvdXQtcGFuZWwtcmlnaHQMbGF5b3V0LXBhbmVsF2xheW91dC1zaWRlYmFyLWxlZnQtb2ZmE2xheW91dC1zaWRlYmFyLWxlZnQYbGF5b3V0LXNpZGViYXItcmlnaHQtb2ZmFGxheW91dC1zaWRlYmFyLXJpZ2h0EGxheW91dC1zdGF0dXNiYXIGbGF5b3V0B2xpYnJhcnkRbGlnaHRidWxiLWF1dG9maXgRbGlnaHRidWxiLXNwYXJrbGUJbGlnaHRidWxiDWxpbmstZXh0ZXJuYWwEbGluawtsaXN0LWZpbHRlcglsaXN0LWZsYXQMbGlzdC1vcmRlcmVkDmxpc3Qtc2VsZWN0aW9uCWxpc3QtdHJlZQ5saXN0LXVub3JkZXJlZApsaXZlLXNoYXJlB2xvYWRpbmcIbG9jYXRpb24KbG9jay1zbWFsbARsb2NrBm1hZ25ldAltYWlsLXJlYWQEbWFpbAptYXAtZmlsbGVkA21hcAhtYXJrZG93bgltZWdhcGhvbmUHbWVudGlvbgRtZW51BW1lcmdlCm1pYy1maWxsZWQDbWljCW1pbGVzdG9uZQZtaXJyb3IMbW9ydGFyLWJvYXJkBG1vdmUQbXVsdGlwbGUtd2luZG93cwVtdXNpYwRtdXRlCG5ldy1maWxlCm5ldy1mb2xkZXIHbmV3bGluZQpuby1uZXdsaW5lBG5vdGURbm90ZWJvb2stdGVtcGxhdGUIbm90ZWJvb2sIb2N0b2ZhY2UMb3Blbi1wcmV2aWV3DG9yZ2FuaXphdGlvbgZvdXRwdXQHcGFja2FnZQhwYWludGNhbgtwYXNzLWZpbGxlZARwYXNzCnBlcnNvbi1hZGQGcGVyc29uBXBpYW5vCXBpZS1jaGFydANwaW4McGlubmVkLWRpcnR5BnBpbm5lZAtwbGF5LWNpcmNsZQRwbGF5BHBsdWcNcHJlc2VydmUtY2FzZQdwcmV2aWV3EHByaW1pdGl2ZS1zcXVhcmUHcHJvamVjdAVwdWxzZQhxdWVzdGlvbgVxdW90ZQtyYWRpby10b3dlcglyZWFjdGlvbnMLcmVjb3JkLWtleXMMcmVjb3JkLXNtYWxsBnJlY29yZARyZWRvCnJlZmVyZW5jZXMHcmVmcmVzaAVyZWdleA9yZW1vdGUtZXhwbG9yZXIGcmVtb3RlBnJlbW92ZQtyZXBsYWNlLWFsbAdyZXBsYWNlBXJlcGx5CnJlcG8tY2xvbmUPcmVwby1mb3JjZS1wdXNoC3JlcG8tZm9ya2VkCXJlcG8tcHVsbAlyZXBvLXB1c2gEcmVwbwZyZXBvcnQPcmVxdWVzdC1jaGFuZ2VzBXJvYm90BnJvY2tldBJyb290LWZvbGRlci1vcGVuZWQLcm9vdC1mb2xkZXIDcnNzBHJ1YnkJcnVuLWFib3ZlB3J1bi1hbGwJcnVuLWJlbG93CnJ1bi1lcnJvcnMIc2F2ZS1hbGwHc2F2ZS1hcwRzYXZlC3NjcmVlbi1mdWxsDXNjcmVlbi1ub3JtYWwMc2VhcmNoLWZ1enp5C3NlYXJjaC1zdG9wBnNlYXJjaARzZW5kEnNlcnZlci1lbnZpcm9ubWVudA5zZXJ2ZXItcHJvY2VzcwZzZXJ2ZXINc2V0dGluZ3MtZ2VhcghzZXR0aW5ncwZzaGllbGQHc2lnbi1pbghzaWduLW91dAZzbWlsZXkFc25ha2UPc29ydC1wcmVjZWRlbmNlDnNvdXJjZS1jb250cm9sDnNwYXJrbGUtZmlsbGVkB3NwYXJrbGUQc3BsaXQtaG9yaXpvbnRhbA5zcGxpdC12ZXJ0aWNhbAhzcXVpcnJlbApzdGFyLWVtcHR5CXN0YXItZnVsbAlzdGFyLWhhbGYLc3RvcC1jaXJjbGUMc3ltYm9sLWFycmF5DnN5bWJvbC1ib29sZWFuDHN5bWJvbC1jbGFzcwxzeW1ib2wtY29sb3IPc3ltYm9sLWNvbnN0YW50EnN5bWJvbC1lbnVtLW1lbWJlcgtzeW1ib2wtZW51bQxzeW1ib2wtZXZlbnQMc3ltYm9sLWZpZWxkC3N5bWJvbC1maWxlEHN5bWJvbC1pbnRlcmZhY2UKc3ltYm9sLWtleQ5zeW1ib2wta2V5d29yZA1zeW1ib2wtbWV0aG9kC3N5bWJvbC1taXNjEHN5bWJvbC1uYW1lc3BhY2UOc3ltYm9sLW51bWVyaWMPc3ltYm9sLW9wZXJhdG9yEHN5bWJvbC1wYXJhbWV0ZXIPc3ltYm9sLXByb3BlcnR5DHN5bWJvbC1ydWxlcg5zeW1ib2wtc25pcHBldA1zeW1ib2wtc3RyaW5nEHN5bWJvbC1zdHJ1Y3R1cmUPc3ltYm9sLXZhcmlhYmxlDHN5bmMtaWdub3JlZARzeW5jBXRhYmxlA3RhZwZ0YXJnZXQIdGFza2xpc3QJdGVsZXNjb3BlDXRlcm1pbmFsLWJhc2gMdGVybWluYWwtY21kD3Rlcm1pbmFsLWRlYmlhbg50ZXJtaW5hbC1saW51eBN0ZXJtaW5hbC1wb3dlcnNoZWxsDXRlcm1pbmFsLXRtdXgPdGVybWluYWwtdWJ1bnR1CHRlcm1pbmFsCXRleHQtc2l6ZQp0aHJlZS1iYXJzEXRodW1ic2Rvd24tZmlsbGVkCnRodW1ic2Rvd24PdGh1bWJzdXAtZmlsbGVkCHRodW1ic3VwBXRvb2xzBXRyYXNoDXRyaWFuZ2xlLWRvd24NdHJpYW5nbGUtbGVmdA50cmlhbmdsZS1yaWdodAt0cmlhbmdsZS11cAd0d2l0dGVyEnR5cGUtaGllcmFyY2h5LXN1YhR0eXBlLWhpZXJhcmNoeS1zdXBlcg50eXBlLWhpZXJhcmNoeQZ1bmZvbGQTdW5ncm91cC1ieS1yZWYtdHlwZQZ1bmxvY2sGdW5tdXRlCnVudmVyaWZpZWQOdmFyaWFibGUtZ3JvdXAPdmVyaWZpZWQtZmlsbGVkCHZlcmlmaWVkCHZlcnNpb25zCXZtLWFjdGl2ZQp2bS1jb25uZWN0CnZtLW91dGxpbmUKdm0tcnVubmluZwJ2bQJ2cgR3YW5kB3dhcm5pbmcFd2F0Y2gKd2hpdGVzcGFjZQp3aG9sZS13b3JkBndpbmRvdwl3b3JkLXdyYXARd29ya3NwYWNlLXRydXN0ZWQRd29ya3NwYWNlLXVua25vd24Td29ya3NwYWNlLXVudHJ1c3RlZAd6b29tLWluCHpvb20tb3V0AAAA) format(\"truetype\")}.codicon[class*=codicon-]{font:normal normal normal 16px/1 codicon;display:inline-block;text-decoration:none;text-rendering:auto;text-align:center;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;user-select:none;-webkit-user-select:none}.codicon-wrench-subaction{opacity:0.5}@keyframes codicon-spin{to{transform:rotate(1turn)}}.codicon-gear.codicon-modifier-spin,.codicon-loading.codicon-modifier-spin,.codicon-notebook-state-executing.codicon-modifier-spin,.codicon-sync.codicon-modifier-spin{animation:codicon-spin 1.5s steps(30) infinite}.codicon-modifier-disabled{opacity:0.4}.codicon-loading,.codicon-tree-item-loading:before{animation-duration:1s !important;animation-timing-function:cubic-bezier(0.53, 0.21, 0.29, 0.67) !important}.context-view{position:absolute}.context-view.fixed{all:initial;font-family:inherit;font-size:13px;position:fixed;color:inherit}.monaco-count-badge{padding:3px 6px;border-radius:11px;font-size:11px;min-width:18px;min-height:18px;line-height:11px;font-weight:400;text-align:center;display:inline-block;box-sizing:border-box}.monaco-count-badge.long{padding:2px 3px;border-radius:2px;min-height:auto;line-height:normal}.monaco-dropdown{height:100%;padding:0}.monaco-dropdown>.dropdown-label{cursor:pointer;height:100%;display:flex;align-items:center;justify-content:center}.monaco-dropdown>.dropdown-label>.action-label.disabled{cursor:default}.monaco-dropdown-with-primary{display:flex !important;flex-direction:row;border-radius:5px}.monaco-dropdown-with-primary>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;padding-left:0;padding-right:0;line-height:16px;margin-left:-3px}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{display:block;background-size:16px;background-position:50%;background-repeat:no-repeat}.monaco-findInput{position:relative}.monaco-findInput .monaco-inputbox{font-size:13px;width:100%}.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.vs .monaco-findInput.disabled{background-color:#e1e1e1}.vs-dark .monaco-findInput.disabled{background-color:#333}.hc-light .monaco-findInput.highlight-0 .controls,.monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-0 0.1s linear 0s}.hc-light .monaco-findInput.highlight-1 .controls,.monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-1 0.1s linear 0s}.hc-black .monaco-findInput.highlight-0 .controls,.vs-dark .monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-dark-0 0.1s linear 0s}.hc-black .monaco-findInput.highlight-1 .controls,.vs-dark .monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-dark-1 0.1s linear 0s}@keyframes monaco-findInput-highlight-0{0%{background:rgba(253, 255, 0, 0.8)}to{background:transparent}}@keyframes monaco-findInput-highlight-1{0%{background:rgba(253, 255, 0, 0.8)}99%{background:transparent}}@keyframes monaco-findInput-highlight-dark-0{0%{background:hsla(0, 0%, 100%, 0.44)}to{background:transparent}}@keyframes monaco-findInput-highlight-dark-1{0%{background:hsla(0, 0%, 100%, 0.44)}99%{background:transparent}}.monaco-hover{cursor:default;position:absolute;overflow:hidden;user-select:text;-webkit-user-select:text;box-sizing:border-box;animation:fadein 0.1s linear;line-height:1.5em;white-space:var(--vscode-hover-whiteSpace, normal)}.monaco-hover.hidden{display:none}.monaco-hover a:hover:not(.disabled){cursor:pointer}.monaco-hover .hover-contents:not(.html-hover-contents){padding:4px 8px}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents){max-width:var(--vscode-hover-maxWidth, 500px);word-wrap:break-word}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents) hr{min-width:100%}.monaco-hover .code,.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6,.monaco-hover p,.monaco-hover ul{margin:8px 0}.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6{line-height:1.1}.monaco-hover code{font-family:var(--monaco-monospace-font)}.monaco-hover hr{box-sizing:border-box;border-left:0;border-right:0;margin:4px -8px -4px;height:1px}.monaco-hover .code:first-child,.monaco-hover p:first-child,.monaco-hover ul:first-child{margin-top:0}.monaco-hover .code:last-child,.monaco-hover p:last-child,.monaco-hover ul:last-child{margin-bottom:0}.monaco-hover ol,.monaco-hover ul{padding-left:20px}.monaco-hover li>p{margin-bottom:0}.monaco-hover li>ul{margin-top:0}.monaco-hover code{border-radius:3px;padding:0 0.4em}.monaco-hover .monaco-tokenized-source{white-space:var(--vscode-hover-sourceWhiteSpace, pre-wrap)}.monaco-hover .hover-row.status-bar{font-size:12px;line-height:22px}.monaco-hover .hover-row.status-bar .info{font-style:italic;padding:0 8px}.monaco-hover .hover-row.status-bar .actions{display:flex;padding:0 8px}.monaco-hover .hover-row.status-bar .actions .action-container{margin-right:16px;cursor:pointer}.monaco-hover .hover-row.status-bar .actions .action-container .action .icon{padding-right:4px}.monaco-hover .markdown-hover .hover-contents .codicon{color:inherit;font-size:inherit;vertical-align:middle}.monaco-hover .hover-contents a.code-link,.monaco-hover .hover-contents a.code-link:hover{color:inherit}.monaco-hover .hover-contents a.code-link:before{content:\"(\"}.monaco-hover .hover-contents a.code-link:after{content:\")\"}.monaco-hover .hover-contents a.code-link>span{text-decoration:underline;border-bottom:1px solid transparent;text-underline-position:under;color:var(--vscode-textLink-foreground)}.monaco-hover .hover-contents a.code-link>span:hover{color:var(--vscode-textLink-activeForeground)}.monaco-hover .markdown-hover .hover-contents:not(.code-hover-contents):not(.html-hover-contents) span{margin-bottom:4px;display:inline-block}.monaco-hover-content .action-container a{-webkit-user-select:none;user-select:none}.monaco-hover-content .action-container.disabled{pointer-events:none;opacity:0.4;cursor:default}.monaco-icon-label{display:flex;overflow:hidden;text-overflow:ellipsis}.monaco-icon-label:before{background-size:16px;background-position:0;background-repeat:no-repeat;padding-right:6px;width:16px;height:22px;line-height:inherit !important;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top;flex-shrink:0}.monaco-icon-label-container.disabled{color:var(--vscode-disabledForeground)}.monaco-icon-label>.monaco-icon-label-container{min-width:0;overflow:hidden;text-overflow:ellipsis;flex:1}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{color:inherit;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name>.label-separator{margin:0 2px;opacity:0.5}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-suffix-container>.label-suffix{opacity:0.7;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:0.7;margin-left:0.5em;font-size:0.9em;white-space:pre}.monaco-icon-label.nowrap>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{white-space:nowrap}.vs .monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:0.95}.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{font-style:italic}.monaco-icon-label.deprecated{text-decoration:line-through;opacity:0.66}.monaco-icon-label.italic:after{font-style:italic}.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{text-decoration:line-through}.monaco-icon-label:after{opacity:0.75;font-size:90%;font-weight:600;margin:auto 16px 0 5px;text-align:center}.monaco-list:focus .selected .monaco-icon-label,.monaco-list:focus .selected .monaco-icon-label:after{color:inherit !important}.monaco-list-row.focused.selected .label-description,.monaco-list-row.selected .label-description{opacity:0.8}.monaco-inputbox{position:relative;display:block;padding:0;box-sizing:border-box;border-radius:2px;font-size:inherit}.monaco-inputbox>.ibwrapper>.input,.monaco-inputbox>.ibwrapper>.mirror{padding:4px 6px}.monaco-inputbox>.ibwrapper{position:relative;width:100%;height:100%}.monaco-inputbox>.ibwrapper>.input{display:inline-block;box-sizing:border-box;width:100%;height:100%;line-height:inherit;border:none;font-family:inherit;font-size:inherit;resize:none;color:inherit}.monaco-inputbox>.ibwrapper>input{text-overflow:ellipsis}.monaco-inputbox>.ibwrapper>textarea.input{display:block;scrollbar-width:none;outline:none}.monaco-inputbox>.ibwrapper>textarea.input::-webkit-scrollbar{display:none}.monaco-inputbox>.ibwrapper>textarea.input.empty{white-space:nowrap}.monaco-inputbox>.ibwrapper>.mirror{position:absolute;display:inline-block;width:100%;top:0;left:0;box-sizing:border-box;white-space:pre-wrap;visibility:hidden;word-wrap:break-word}.monaco-inputbox-container{text-align:right}.monaco-inputbox-container .monaco-inputbox-message{display:inline-block;overflow:hidden;text-align:left;width:100%;box-sizing:border-box;padding:0.4em;font-size:12px;line-height:17px;margin-top:-1px;word-wrap:break-word}.monaco-inputbox .monaco-action-bar{position:absolute;right:2px;top:4px}.monaco-inputbox .monaco-action-bar .action-item{margin-left:2px}.monaco-inputbox .monaco-action-bar .action-item .codicon{background-repeat:no-repeat;width:16px;height:16px}.monaco-keybinding{display:flex;align-items:center;line-height:10px}.monaco-keybinding>.monaco-keybinding-key{display:inline-block;border-style:solid;border-width:1px;border-radius:3px;vertical-align:middle;font-size:11px;padding:3px 5px;margin:0 2px}.monaco-keybinding>.monaco-keybinding-key:first-child{margin-left:0}.monaco-keybinding>.monaco-keybinding-key:last-child{margin-right:0}.monaco-keybinding>.monaco-keybinding-key-separator{display:inline-block}.monaco-keybinding>.monaco-keybinding-key-chord-separator{width:6px}.monaco-list{position:relative;height:100%;width:100%;white-space:nowrap}.monaco-list.mouse-support{user-select:none;-webkit-user-select:none}.monaco-list>.monaco-scrollable-element{height:100%}.monaco-list-rows{position:relative;width:100%;height:100%}.monaco-list.horizontal-scrolling .monaco-list-rows{width:auto;min-width:100%}.monaco-list-row{position:absolute;box-sizing:border-box;overflow:hidden;width:100%}.monaco-list.mouse-support .monaco-list-row{cursor:pointer;touch-action:none}.monaco-list .monaco-scrollable-element>.scrollbar.vertical,.monaco-pane-view>.monaco-split-view2.vertical>.monaco-scrollable-element>.scrollbar.vertical{z-index:14}.monaco-list-row.scrolling{display:none !important}.monaco-list.element-focused,.monaco-list.selection-multiple,.monaco-list.selection-single{outline:0 !important}.monaco-drag-image{display:inline-block;padding:1px 7px;border-radius:10px;font-size:12px;position:absolute;z-index:1000}.monaco-list-type-filter-message{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;padding:40px 1em 1em;text-align:center;white-space:normal;opacity:0.7;pointer-events:none}.monaco-list-type-filter-message:empty{display:none}.monaco-mouse-cursor-text{cursor:text}.monaco-progress-container{width:100%;height:2px;overflow:hidden}.monaco-progress-container .progress-bit{width:2%;height:2px;position:absolute;left:0;display:none}.monaco-progress-container.active .progress-bit{display:inherit}.monaco-progress-container.discrete .progress-bit{left:0;transition:width 0.1s linear}.monaco-progress-container.discrete.done .progress-bit{width:100%}.monaco-progress-container.infinite .progress-bit{animation-name:progress;animation-duration:4s;animation-iteration-count:infinite;transform:translateZ(0);animation-timing-function:linear}.monaco-progress-container.infinite.infinite-long-running .progress-bit{animation-timing-function:steps(100)}@keyframes progress{0%{transform:translateX(0) scaleX(1)}50%{transform:translateX(2500%) scaleX(3)}to{transform:translateX(4900%) scaleX(1)}}:root{--vscode-sash-size:4px;--vscode-sash-hover-size:4px}.monaco-sash{position:absolute;z-index:35;touch-action:none}.monaco-sash.disabled{pointer-events:none}.monaco-sash.mac.vertical{cursor:col-resize}.monaco-sash.vertical.minimum{cursor:e-resize}.monaco-sash.vertical.maximum{cursor:w-resize}.monaco-sash.mac.horizontal{cursor:row-resize}.monaco-sash.horizontal.minimum{cursor:s-resize}.monaco-sash.horizontal.maximum{cursor:n-resize}.monaco-sash.disabled{cursor:default !important;pointer-events:none !important}.monaco-sash.vertical{cursor:ew-resize;top:0;width:var(--vscode-sash-size);height:100%}.monaco-sash.horizontal{cursor:ns-resize;left:0;width:100%;height:var(--vscode-sash-size)}.monaco-sash:not(.disabled)>.orthogonal-drag-handle{content:\" \";height:calc(var(--vscode-sash-size) * 2);width:calc(var(--vscode-sash-size) * 2);z-index:100;display:block;cursor:all-scroll;position:absolute}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.start,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.end{cursor:nwse-resize}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.end,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.start{cursor:nesw-resize}.monaco-sash.vertical>.orthogonal-drag-handle.start{left:calc(var(--vscode-sash-size) * -0.5);top:calc(var(--vscode-sash-size) * -1)}.monaco-sash.vertical>.orthogonal-drag-handle.end{left:calc(var(--vscode-sash-size) * -0.5);bottom:calc(var(--vscode-sash-size) * -1)}.monaco-sash.horizontal>.orthogonal-drag-handle.start{top:calc(var(--vscode-sash-size) * -0.5);left:calc(var(--vscode-sash-size) * -1)}.monaco-sash.horizontal>.orthogonal-drag-handle.end{top:calc(var(--vscode-sash-size) * -0.5);right:calc(var(--vscode-sash-size) * -1)}.monaco-sash:before{content:\"\";pointer-events:none;position:absolute;width:100%;height:100%;background:transparent}.monaco-workbench:not(.reduce-motion) .monaco-sash:before{transition:background-color 0.1s ease-out}.monaco-sash.active:before,.monaco-sash.hover:before{background:var(--vscode-sash-hoverBorder)}.monaco-sash.vertical:before{width:var(--vscode-sash-hover-size);left:calc(50% - var(--vscode-sash-hover-size) / 2)}.monaco-sash.horizontal:before{height:var(--vscode-sash-hover-size);top:calc(50% - var(--vscode-sash-hover-size) / 2)}.pointer-events-disabled{pointer-events:none !important}.monaco-sash.debug{background:#0ff}.monaco-sash.debug.disabled{background:rgba(0, 255, 255, 0.2)}.monaco-sash.debug:not(.disabled)>.orthogonal-drag-handle{background:red}.monaco-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px !important}.monaco-scrollable-element>.visible{opacity:1;background:transparent;transition:opacity 0.1s linear;z-index:11}.monaco-scrollable-element>.invisible{opacity:0;pointer-events:none}.monaco-scrollable-element>.invisible.fade{transition:opacity 0.8s linear}.monaco-scrollable-element>.shadow{position:absolute;display:none}.monaco-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset}.monaco-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset}.monaco-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.monaco-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset}.monaco-scrollable-element>.scrollbar>.slider{background:var(--vscode-scrollbarSlider-background)}.monaco-scrollable-element>.scrollbar>.slider:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-scrollable-element>.scrollbar>.slider.active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-select-box{width:100%;cursor:pointer;border-radius:2px}.monaco-select-box-dropdown-container{font-size:13px;font-weight:400;text-transform:none}.monaco-action-bar .action-item.select-container{cursor:default}.monaco-action-bar .action-item .monaco-select-box{cursor:pointer;min-width:100px;min-height:18px;padding:2px 23px 2px 8px}.mac .monaco-action-bar .action-item .monaco-select-box{font-size:11px;border-radius:5px}.monaco-select-box-dropdown-padding{--dropdown-padding-top:1px;--dropdown-padding-bottom:1px}.hc-black .monaco-select-box-dropdown-padding,.hc-light .monaco-select-box-dropdown-padding{--dropdown-padding-top:3px;--dropdown-padding-bottom:4px}.monaco-select-box-dropdown-container{display:none;box-sizing:border-box}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown *{margin:0}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown a:focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown code{line-height:15px;font-family:var(--monaco-monospace-font)}.monaco-select-box-dropdown-container.visible{display:flex;flex-direction:column;text-align:left;width:1px;overflow:hidden;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container{flex:0 0 auto;align-self:flex-start;padding-top:var(--dropdown-padding-top);padding-bottom:var(--dropdown-padding-bottom);padding-left:1px;padding-right:1px;width:100%;overflow:hidden;box-sizing:border-box}.monaco-select-box-dropdown-container>.select-box-details-pane{padding:5px}.hc-black .monaco-select-box-dropdown-container>.select-box-dropdown-list-container{padding-top:var(--dropdown-padding-top);padding-bottom:var(--dropdown-padding-bottom)}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row{cursor:pointer}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-text{text-overflow:ellipsis;overflow:hidden;padding-left:3.5px;white-space:nowrap;float:left}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-detail{text-overflow:ellipsis;overflow:hidden;padding-left:3.5px;white-space:nowrap;float:left;opacity:0.7}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-decorator-right{text-overflow:ellipsis;overflow:hidden;padding-right:10px;white-space:nowrap;float:right}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.visually-hidden{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control{flex:1 1 auto;align-self:flex-start;opacity:0}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div{overflow:hidden;max-height:0}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div>.option-text-width-control{padding-left:4px;padding-right:8px;white-space:nowrap}.monaco-split-view2{position:relative;width:100%;height:100%}.monaco-split-view2>.sash-container{position:absolute;width:100%;height:100%;pointer-events:none}.monaco-split-view2>.sash-container>.monaco-sash{pointer-events:auto}.monaco-split-view2>.monaco-scrollable-element{width:100%;height:100%}.monaco-split-view2>.monaco-scrollable-element>.split-view-container{width:100%;height:100%;white-space:nowrap;position:relative}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view{white-space:normal;position:absolute}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view:not(.visible){display:none}.monaco-split-view2.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view{width:100%}.monaco-split-view2.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view{height:100%}.monaco-split-view2.separator-border>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{content:\" \";position:absolute;top:0;left:0;z-index:5;pointer-events:none;background-color:var(--separator-border)}.monaco-split-view2.separator-border.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:100%;width:1px}.monaco-split-view2.separator-border.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:1px;width:100%}.monaco-table{display:flex;flex-direction:column;position:relative;height:100%;width:100%;white-space:nowrap;overflow:hidden}.monaco-table>.monaco-split-view2{border-bottom:1px solid transparent}.monaco-table>.monaco-list{flex:1}.monaco-table-tr{display:flex;height:100%}.monaco-table-th{width:100%;height:100%;font-weight:700;overflow:hidden;text-overflow:ellipsis}.monaco-table-td,.monaco-table-th{box-sizing:border-box;flex-shrink:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{content:\"\";position:absolute;left:calc(var(--vscode-sash-size) / 2);width:0;border-left:1px solid transparent}.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2,.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{transition:border-color 0.2s ease-out}.monaco-custom-toggle{margin-left:2px;float:left;cursor:pointer;overflow:hidden;width:20px;height:20px;border-radius:3px;border:1px solid transparent;padding:1px;box-sizing:border-box;user-select:none;-webkit-user-select:none}.monaco-custom-toggle:hover{background-color:var(--vscode-inputOption-hoverBackground)}.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle:hover{border:1px dashed var(--vscode-focusBorder)}.hc-black .monaco-custom-toggle,.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle,.hc-light .monaco-custom-toggle:hover{background:none}.monaco-custom-toggle.monaco-checkbox{height:18px;width:18px;border:1px solid transparent;border-radius:3px;margin-right:9px;margin-left:0;padding:0;opacity:1;background-size:16px !important}.monaco-action-bar .checkbox-action-item{display:flex;align-items:center}.monaco-action-bar .checkbox-action-item>.monaco-custom-toggle.monaco-checkbox{margin-right:4px}.monaco-action-bar .checkbox-action-item>.checkbox-label{font-size:12px}.monaco-custom-toggle.monaco-checkbox:not(.checked):before{visibility:hidden}.monaco-toolbar{height:100%}.monaco-toolbar .toolbar-toggle-more{display:inline-block;padding:0}.monaco-tl-row{display:flex;height:100%;align-items:center;position:relative}.monaco-tl-row.disabled{cursor:default}.monaco-tl-indent{height:100%;position:absolute;top:0;left:16px;pointer-events:none}.hide-arrows .monaco-tl-indent{left:12px}.monaco-tl-indent>.indent-guide{display:inline-block;box-sizing:border-box;height:100%;border-left:1px solid transparent}.monaco-workbench:not(.reduce-motion) .monaco-tl-indent>.indent-guide{transition:border-color 0.1s linear}.monaco-tl-contents,.monaco-tl-twistie{height:100%}.monaco-tl-twistie{font-size:10px;text-align:right;padding-right:6px;flex-shrink:0;width:16px;display:flex !important;align-items:center;justify-content:center;transform:translateX(3px)}.monaco-tl-contents{flex:1;overflow:hidden}.monaco-tl-twistie:before{border-radius:20px}.monaco-tl-twistie.collapsed:before{transform:rotate(-90deg)}.monaco-tl-twistie.codicon-tree-item-loading:before{animation:codicon-spin 1.25s steps(30) infinite}.monaco-tree-type-filter{position:absolute;top:0;display:flex;padding:3px;max-width:200px;z-index:100;margin:0 6px;border:1px solid var(--vscode-widget-border);border-bottom-left-radius:4px;border-bottom-right-radius:4px}.monaco-workbench:not(.reduce-motion) .monaco-tree-type-filter{transition:top 0.3s}.monaco-tree-type-filter.disabled{top:-40px !important}.monaco-tree-type-filter-grab{display:flex !important;align-items:center;justify-content:center;cursor:grab;margin-right:2px}.monaco-tree-type-filter-grab.grabbing{cursor:grabbing}.monaco-tree-type-filter-input{flex:1}.monaco-tree-type-filter-input .monaco-inputbox{height:23px}.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.input,.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.mirror{padding:2px 4px}.monaco-tree-type-filter-input .monaco-findInput>.controls{top:2px}.monaco-tree-type-filter-actionbar{margin-left:4px}.monaco-tree-type-filter-actionbar .monaco-action-bar .action-label{padding:2px}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container{position:absolute;top:0;left:0;width:100%;height:0;z-index:13;background-color:var(--vscode-sideBar-background)}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row.monaco-list-row{position:absolute;width:100%;opacity:1 !important;overflow:hidden;background-color:var(--vscode-sideBar-background)}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row:hover{background-color:var(--vscode-list-hoverBackground) !important;cursor:pointer}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-container-shadow{position:absolute;bottom:-3px;left:0;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset}.monaco-editor .inputarea{min-width:0;min-height:0;margin:0;padding:0;position:absolute;outline:none !important;resize:none;border:none;overflow:hidden;color:transparent;background-color:transparent;z-index:-10}.monaco-editor .inputarea.ime-input{z-index:10;caret-color:var(--vscode-editorCursor-foreground);color:var(--vscode-editor-foreground)}.monaco-editor .blockDecorations-container{position:absolute;top:0;pointer-events:none}.monaco-editor .blockDecorations-block{position:absolute;box-sizing:border-box}.monaco-editor .margin-view-overlays .current-line,.monaco-editor .view-overlays .current-line{display:block;position:absolute;left:0;top:0;box-sizing:border-box}.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both{border-right:0}.monaco-editor .lines-content .cdr{position:absolute}.monaco-editor .glyph-margin{position:absolute;top:0}.monaco-editor .glyph-margin-widgets .cgmr{position:absolute;display:flex;align-items:center;justify-content:center}.monaco-editor .glyph-margin-widgets .cgmr.codicon-modifier-spin:before{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.monaco-editor .lines-content .core-guide{position:absolute;box-sizing:border-box}.monaco-editor .margin-view-overlays .line-numbers{font-variant-numeric:tabular-nums;position:absolute;text-align:right;display:inline-block;vertical-align:middle;box-sizing:border-box;cursor:default;height:100%}.monaco-editor .relative-current-line-number{text-align:left;display:inline-block;width:100%}.monaco-editor .margin-view-overlays .line-numbers.lh-odd{margin-top:1px}.monaco-editor .line-numbers{color:var(--vscode-editorLineNumber-foreground)}.monaco-editor .line-numbers.active-line-number{color:var(--vscode-editorLineNumber-activeForeground)}.mtkcontrol{color:#fff !important;background:#960000 !important}.mtkoverflow{background-color:var(--vscode-button-background, var(--vscode-editor-background));color:var(--vscode-button-foreground, var(--vscode-editor-foreground));border:1px solid var(--vscode-contrastBorder);border-radius:2px;padding:4px;cursor:pointer}.mtkoverflow:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-editor.no-user-select .lines-content,.monaco-editor.no-user-select .view-line,.monaco-editor.no-user-select .view-lines{user-select:none;-webkit-user-select:none}.monaco-editor.mac .lines-content:hover,.monaco-editor.mac .view-line:hover,.monaco-editor.mac .view-lines:hover{user-select:text;-webkit-user-select:text;-ms-user-select:text}.monaco-editor.enable-user-select{user-select:initial;-webkit-user-select:initial}.monaco-editor .view-lines{white-space:nowrap}.monaco-editor .view-line{position:absolute;width:100%}.monaco-editor .mtkw,.monaco-editor .mtkz{color:var(--vscode-editorWhitespace-foreground) !important}.monaco-editor .mtkz{display:inline-block}.monaco-editor .lines-decorations{position:absolute;top:0;background:#fff}.monaco-editor .margin-view-overlays .cldr{position:absolute;height:100%}.monaco-editor .margin{background-color:var(--vscode-editorGutter-background)}.monaco-editor .margin-view-overlays .cmdr{position:absolute;left:0;width:100%;height:100%}.monaco-editor .minimap.slider-mouseover .minimap-slider{opacity:0;transition:opacity 0.1s linear}.monaco-editor .minimap.slider-mouseover .minimap-slider.active,.monaco-editor .minimap.slider-mouseover:hover .minimap-slider{opacity:1}.monaco-editor .minimap-slider .minimap-slider-horizontal{background:var(--vscode-minimapSlider-background)}.monaco-editor .minimap-slider:hover .minimap-slider-horizontal{background:var(--vscode-minimapSlider-hoverBackground)}.monaco-editor .minimap-slider.active .minimap-slider-horizontal{background:var(--vscode-minimapSlider-activeBackground)}.monaco-editor .minimap-shadow-visible{box-shadow:var(--vscode-scrollbar-shadow) -6px 0 6px -6px inset}.monaco-editor .minimap-shadow-hidden{position:absolute;width:0}.monaco-editor .minimap-shadow-visible{position:absolute;left:-6px;width:6px}.monaco-editor.no-minimap-shadow .minimap-shadow-visible{position:absolute;left:-1px;width:1px}.minimap.autohide{opacity:0;transition:opacity 0.5s}.minimap.autohide:hover{opacity:1}.monaco-editor .minimap{z-index:5}.monaco-editor .overlayWidgets{position:absolute;top:0;left:0}.monaco-editor .view-ruler{position:absolute;top:0;box-shadow:1px 0 0 0 var(--vscode-editorRuler-foreground) inset}.monaco-editor .scroll-decoration{position:absolute;top:0;left:0;height:6px;box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset}.monaco-editor .lines-content .cslr{position:absolute}.monaco-editor .focused .selected-text{background-color:var(--vscode-editor-selectionBackground)}.monaco-editor .selected-text{background-color:var(--vscode-editor-inactiveSelectionBackground)}.monaco-editor .top-left-radius{border-top-left-radius:3px}.monaco-editor .bottom-left-radius{border-bottom-left-radius:3px}.monaco-editor .top-right-radius{border-top-right-radius:3px}.monaco-editor .bottom-right-radius{border-bottom-right-radius:3px}.monaco-editor.hc-black .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-black .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-black .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-black .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor.hc-light .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-light .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-light .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-light .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor .cursors-layer{position:absolute;top:0}.monaco-editor .cursors-layer>.cursor{position:absolute;overflow:hidden;box-sizing:border-box}.monaco-editor .cursors-layer.cursor-smooth-caret-animation>.cursor{transition:all 80ms}.monaco-editor .cursors-layer.cursor-block-outline-style>.cursor{background:transparent !important;border-style:solid;border-width:1px}.monaco-editor .cursors-layer.cursor-underline-style>.cursor{border-bottom-width:2px;border-bottom-style:solid;background:transparent !important}.monaco-editor .cursors-layer.cursor-underline-thin-style>.cursor{border-bottom-width:1px;border-bottom-style:solid;background:transparent !important}@keyframes monaco-cursor-smooth{0%,20%{opacity:1}60%,to{opacity:0}}@keyframes monaco-cursor-phase{0%,20%{opacity:1}90%,to{opacity:0}}@keyframes monaco-cursor-expand{0%,20%{transform:scaleY(1)}80%,to{transform:scaleY(0)}}.cursor-smooth{animation:monaco-cursor-smooth 0.5s ease-in-out 0s 20 alternate}.cursor-phase{animation:monaco-cursor-phase 0.5s ease-in-out 0s 20 alternate}.cursor-expand>.cursor{animation:monaco-cursor-expand 0.5s ease-in-out 0s 20 alternate}.monaco-editor .mwh{position:absolute;color:var(--vscode-editorWhitespace-foreground) !important}.monaco-diff-editor .diff-review-line-number{text-align:right;display:inline-block;color:var(--vscode-editorLineNumber-foreground)}.monaco-diff-editor .diff-review{position:absolute;user-select:none;-webkit-user-select:none;z-index:99}.monaco-diff-editor .diff-review-summary{padding-left:10px}.monaco-diff-editor .diff-review-shadow{position:absolute;box-shadow:var(--vscode-scrollbar-shadow) 0 -6px 6px -6px inset}.monaco-diff-editor .diff-review-row{white-space:pre}.monaco-diff-editor .diff-review-table{display:table;min-width:100%}.monaco-diff-editor .diff-review-row{display:table-row;width:100%}.monaco-diff-editor .diff-review-spacer{display:inline-block;width:10px;vertical-align:middle}.monaco-diff-editor .diff-review-spacer>.codicon{font-size:9px !important}.monaco-diff-editor .diff-review-actions{display:inline-block;position:absolute;right:10px;top:2px;z-index:100}.monaco-diff-editor .diff-review-actions .action-label{width:16px;height:16px;margin:2px 0}.monaco-diff-editor .revertButton{cursor:pointer}.monaco-editor .diff-hidden-lines-widget{width:100%}.monaco-editor .diff-hidden-lines{height:0;transform:translateY(-10px);font-size:13px;line-height:14px}.monaco-editor .diff-hidden-lines .bottom.dragging,.monaco-editor .diff-hidden-lines .top.dragging,.monaco-editor .diff-hidden-lines:not(.dragging) .bottom:hover,.monaco-editor .diff-hidden-lines:not(.dragging) .top:hover{background-color:var(--vscode-focusBorder)}.monaco-editor .diff-hidden-lines .bottom,.monaco-editor .diff-hidden-lines .top{transition:background-color 0.1s ease-out;height:4px;background-color:transparent;background-clip:padding-box;border-bottom:2px solid transparent;border-top:4px solid transparent}.monaco-editor .diff-hidden-lines .bottom.canMoveTop:not(.canMoveBottom),.monaco-editor .diff-hidden-lines .top.canMoveTop:not(.canMoveBottom),.monaco-editor.draggingUnchangedRegion.canMoveTop:not(.canMoveBottom) *{cursor:n-resize !important}.monaco-editor .diff-hidden-lines .bottom:not(.canMoveTop).canMoveBottom,.monaco-editor .diff-hidden-lines .top:not(.canMoveTop).canMoveBottom,.monaco-editor.draggingUnchangedRegion:not(.canMoveTop).canMoveBottom *{cursor:s-resize !important}.monaco-editor .diff-hidden-lines .bottom.canMoveTop.canMoveBottom,.monaco-editor .diff-hidden-lines .top.canMoveTop.canMoveBottom,.monaco-editor.draggingUnchangedRegion.canMoveTop.canMoveBottom *{cursor:ns-resize !important}.monaco-editor .diff-hidden-lines .top{transform:translateY(4px)}.monaco-editor .diff-hidden-lines .bottom{transform:translateY(-6px)}.monaco-editor .diff-unchanged-lines{background:var(--vscode-diffEditor-unchangedCodeBackground)}.monaco-editor .noModificationsOverlay{z-index:1;background:var(--vscode-editor-background);display:flex;justify-content:center;align-items:center}.monaco-editor .diff-hidden-lines .center{background:var(--vscode-diffEditor-unchangedRegionBackground);color:var(--vscode-diffEditor-unchangedRegionForeground);overflow:hidden;display:block;text-overflow:ellipsis;white-space:nowrap;height:24px;box-shadow:inset 0 -5px 5px -7px var(--vscode-diffEditor-unchangedRegionShadow), inset 0 5px 5px -7px var(--vscode-diffEditor-unchangedRegionShadow)}.monaco-editor .diff-hidden-lines .center span.codicon{vertical-align:middle}.monaco-editor .diff-hidden-lines .center a:hover .codicon{cursor:pointer;color:var(--vscode-editorLink-activeForeground) !important}.monaco-editor .diff-hidden-lines div.breadcrumb-item{cursor:pointer}.monaco-editor .diff-hidden-lines div.breadcrumb-item:hover{color:var(--vscode-editorLink-activeForeground)}.monaco-editor .movedModified,.monaco-editor .movedOriginal{border:2px solid var(--vscode-diffEditor-move-border)}.monaco-editor .movedModified.currentMove,.monaco-editor .movedOriginal.currentMove{border:2px solid var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines path.currentMove{stroke:var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines path{pointer-events:visiblestroke}.monaco-diff-editor .moved-blocks-lines .arrow{fill:var(--vscode-diffEditor-move-border)}.monaco-diff-editor .moved-blocks-lines .arrow.currentMove{fill:var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines .arrow-rectangle{fill:var(--vscode-editor-background)}.monaco-diff-editor .moved-blocks-lines{position:absolute;pointer-events:none}.monaco-diff-editor .moved-blocks-lines path{fill:none;stroke:var(--vscode-diffEditor-move-border);stroke-width:2}.monaco-editor .char-delete.diff-range-empty{margin-left:-1px;border-left:3px solid var(--vscode-diffEditor-removedTextBackground)}.monaco-editor .char-insert.diff-range-empty{border-left:3px solid var(--vscode-diffEditor-insertedTextBackground)}.monaco-editor .fold-unchanged{cursor:pointer}.monaco-diff-editor .diff-moved-code-block{display:flex;justify-content:flex-end;margin-top:-4px}.monaco-diff-editor .diff-moved-code-block .action-bar .action-label.codicon{width:12px;height:12px;font-size:12px}.monaco-diff-editor .diffOverview{z-index:9}.monaco-diff-editor .diffOverview .diffViewport{z-index:10}.monaco-diff-editor.vs .diffOverview{background:rgba(0, 0, 0, 0.03)}.monaco-diff-editor.vs-dark .diffOverview{background:hsla(0, 0%, 100%, 0.01)}.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.vs .scrollbar{background:transparent}.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-light .scrollbar{background:none}.monaco-scrollable-element.modified-in-monaco-diff-editor .slider{z-index:10}.modified-in-monaco-diff-editor .slider.active{background:hsla(0, 0%, 67.1%, 0.4)}.modified-in-monaco-diff-editor.hc-black .slider.active,.modified-in-monaco-diff-editor.hc-light .slider.active{background:none}.monaco-diff-editor .delete-sign,.monaco-diff-editor .insert-sign,.monaco-editor .delete-sign,.monaco-editor .insert-sign{font-size:11px !important;opacity:0.7 !important;display:flex !important;align-items:center}.monaco-diff-editor.hc-black .delete-sign,.monaco-diff-editor.hc-black .insert-sign,.monaco-diff-editor.hc-light .delete-sign,.monaco-diff-editor.hc-light .insert-sign,.monaco-editor.hc-black .delete-sign,.monaco-editor.hc-black .insert-sign,.monaco-editor.hc-light .delete-sign,.monaco-editor.hc-light .insert-sign{opacity:1}.monaco-editor .inline-added-margin-view-zone,.monaco-editor .inline-deleted-margin-view-zone{text-align:right}.monaco-editor .arrow-revert-change{z-index:10;position:absolute}.monaco-editor .arrow-revert-change:hover{cursor:pointer}.monaco-editor .view-zones .view-lines .view-line span{display:inline-block}.monaco-editor .margin-view-zones .lightbulb-glyph:hover{cursor:pointer}.monaco-diff-editor .char-insert,.monaco-editor .char-insert{background-color:var(--vscode-diffEditor-insertedTextBackground)}.monaco-diff-editor .line-insert,.monaco-editor .line-insert{background-color:var(--vscode-diffEditor-insertedLineBackground, var(--vscode-diffEditor-insertedTextBackground))}.monaco-editor .char-insert,.monaco-editor .line-insert{box-sizing:border-box;border:1px solid var(--vscode-diffEditor-insertedTextBorder)}.monaco-editor.hc-black .char-insert,.monaco-editor.hc-black .line-insert,.monaco-editor.hc-light .char-insert,.monaco-editor.hc-light .line-insert{border-style:dashed}.monaco-editor .char-delete,.monaco-editor .line-delete{box-sizing:border-box;border:1px solid var(--vscode-diffEditor-removedTextBorder)}.monaco-editor.hc-black .char-delete,.monaco-editor.hc-black .line-delete,.monaco-editor.hc-light .char-delete,.monaco-editor.hc-light .line-delete{border-style:dashed}.monaco-diff-editor .gutter-insert,.monaco-editor .gutter-insert,.monaco-editor .inline-added-margin-view-zone{background-color:var(--vscode-diffEditorGutter-insertedLineBackground, var(--vscode-diffEditor-insertedLineBackground), var(--vscode-diffEditor-insertedTextBackground))}.monaco-diff-editor .char-delete,.monaco-editor .char-delete{background-color:var(--vscode-diffEditor-removedTextBackground)}.monaco-diff-editor .line-delete,.monaco-editor .line-delete{background-color:var(--vscode-diffEditor-removedLineBackground, var(--vscode-diffEditor-removedTextBackground))}.monaco-diff-editor .gutter-delete,.monaco-editor .gutter-delete,.monaco-editor .inline-deleted-margin-view-zone{background-color:var(--vscode-diffEditorGutter-removedLineBackground, var(--vscode-diffEditor-removedLineBackground), var(--vscode-diffEditor-removedTextBackground))}.monaco-diff-editor.side-by-side .editor.modified{box-shadow:-6px 0 5px -5px var(--vscode-scrollbar-shadow);border-left:1px solid var(--vscode-diffEditor-border)}.monaco-diff-editor .diffViewport{background:var(--vscode-scrollbarSlider-background)}.monaco-diff-editor .diffViewport:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-diff-editor .diffViewport:active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-editor .diagonal-fill{background-image:linear-gradient(-45deg, var(--vscode-diffEditor-diagonalFill) 12.5%, transparent 0, transparent 50%, var(--vscode-diffEditor-diagonalFill) 0, var(--vscode-diffEditor-diagonalFill) 62.5%, transparent 0, transparent);background-size:8px 8px}::-ms-clear{display:none}.monaco-editor .editor-widget input{color:inherit}.monaco-editor{position:relative;overflow:visible;-webkit-text-size-adjust:100%;color:var(--vscode-editor-foreground)}.monaco-editor,.monaco-editor-background{background-color:var(--vscode-editor-background)}.monaco-editor .rangeHighlight{background-color:var(--vscode-editor-rangeHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-rangeHighlightBorder)}.monaco-editor.hc-black .rangeHighlight,.monaco-editor.hc-light .rangeHighlight{border-style:dotted}.monaco-editor .symbolHighlight{background-color:var(--vscode-editor-symbolHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-symbolHighlightBorder)}.monaco-editor.hc-black .symbolHighlight,.monaco-editor.hc-light .symbolHighlight{border-style:dotted}.monaco-editor .overflow-guard{position:relative;overflow:hidden}.monaco-editor .view-overlays{position:absolute;top:0}.monaco-editor .squiggly-error{border-bottom:4px double var(--vscode-editorError-border)}.monaco-editor .squiggly-error:before{display:block;content:\"\";width:100%;height:100%;background:var(--vscode-editorError-background)}.monaco-editor .squiggly-warning{border-bottom:4px double var(--vscode-editorWarning-border)}.monaco-editor .squiggly-warning:before{display:block;content:\"\";width:100%;height:100%;background:var(--vscode-editorWarning-background)}.monaco-editor .squiggly-info{border-bottom:4px double var(--vscode-editorInfo-border)}.monaco-editor .squiggly-info:before{display:block;content:\"\";width:100%;height:100%;background:var(--vscode-editorInfo-background)}.monaco-editor .squiggly-hint{border-bottom:2px dotted var(--vscode-editorHint-border)}.monaco-editor.showUnused .squiggly-unnecessary{border-bottom:2px dashed var(--vscode-editorUnnecessaryCode-border)}.monaco-editor.showDeprecated .squiggly-inline-deprecated{text-decoration:line-through;text-decoration-color:var(--vscode-editor-foreground, inherit)}.monaco-component .multiDiffEntry{display:flex;flex-direction:column}.monaco-component .multiDiffEntry .editorParent{border-left:2px solid var(--vscode-tab-inactiveBackground)}.monaco-component .multiDiffEntry.focused .editorParent{border-left:2px solid var(--vscode-notebook-focusedCellBorder)}.monaco-component .multiDiffEntry .editorParent .editorContainer{border-left:17px solid var(--vscode-tab-inactiveBackground)}.monaco-component .multiDiffEntry .collapse-button{margin:0 5px;cursor:pointer}.monaco-component .multiDiffEntry .collapse-button a{display:block}.monaco-component .multiDiffEntry .header{display:flex;align-items:center;padding:8px 5px;color:var(--vscode-foreground);background:var(--vscode-editor-background);z-index:1000;border-bottom:1px solid var(--vscode-sideBarSectionHeader-border);border-top:1px solid var(--vscode-sideBarSectionHeader-border);border-left:2px solid var(--vscode-editor-background)}.monaco-component .multiDiffEntry.focused .header{border-left:2px solid var(--vscode-notebook-focusedCellBorder)}.monaco-component .multiDiffEntry .header.shadow{box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px}.monaco-component .multiDiffEntry .header .title{flex:1;font-size:14px;line-height:22px}.monaco-component .multiDiffEntry .header .actions{padding:0 8px}.monaco-editor .selection-anchor{background-color:#007acc;width:2px !important}.monaco-editor .bracket-match{box-sizing:border-box;background-color:var(--vscode-editorBracketMatch-background);border:1px solid var(--vscode-editorBracketMatch-border)}.monaco-editor .lightBulbWidget{display:flex;align-items:center;justify-content:center}.monaco-editor .lightBulbWidget:hover{cursor:pointer}.monaco-editor .lightBulbWidget.codicon-light-bulb,.monaco-editor .lightBulbWidget.codicon-lightbulb-sparkle{color:var(--vscode-editorLightBulb-foreground)}.monaco-editor .lightBulbWidget.codicon-lightbulb-autofix,.monaco-editor .lightBulbWidget.codicon-lightbulb-sparkle-autofix{color:var(--vscode-editorLightBulbAutoFix-foreground, var(--vscode-editorLightBulb-foreground))}.monaco-editor .lightBulbWidget.codicon-sparkle-filled{color:var(--vscode-editorLightBulbAi-foreground, var(--vscode-icon-foreground))}.monaco-editor .lightBulbWidget:before{position:relative;z-index:2}.monaco-editor .lightBulbWidget:after{position:absolute;top:0;left:0;content:\"\";display:block;width:100%;height:100%;opacity:0.3;background-color:var(--vscode-editor-background);z-index:1}.monaco-editor .codelens-decoration{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:nowrap;color:var(--vscode-editorCodeLens-foreground);line-height:var(--vscode-editorCodeLens-lineHeight);font-size:var(--vscode-editorCodeLens-fontSize);padding-right:calc(var(--vscode-editorCodeLens-fontSize) * 0.5);font-feature-settings:var(--vscode-editorCodeLens-fontFeatureSettings);font-family:var(--vscode-editorCodeLens-fontFamily), var(--vscode-editorCodeLens-fontFamilyDefault)}.monaco-editor .codelens-decoration>a,.monaco-editor .codelens-decoration>span{user-select:none;-webkit-user-select:none;white-space:nowrap;vertical-align:sub}.monaco-editor .codelens-decoration>a{text-decoration:none}.monaco-editor .codelens-decoration>a:hover{cursor:pointer}.monaco-editor .codelens-decoration>a:hover,.monaco-editor .codelens-decoration>a:hover .codicon{color:var(--vscode-editorLink-activeForeground) !important}.monaco-editor .codelens-decoration .codicon{vertical-align:middle;color:currentColor !important;color:var(--vscode-editorCodeLens-foreground);line-height:var(--vscode-editorCodeLens-lineHeight);font-size:var(--vscode-editorCodeLens-fontSize)}.monaco-editor .codelens-decoration>a:hover .codicon:before{cursor:pointer}@keyframes fadein{0%{opacity:0;visibility:visible}to{opacity:1}}.monaco-editor .codelens-decoration.fadein{animation:fadein 0.1s linear}.colorpicker-widget{height:190px;user-select:none;-webkit-user-select:none}.colorpicker-color-decoration,.hc-light .colorpicker-color-decoration{border:0.1em solid #000;box-sizing:border-box;margin:0.1em 0.2em 0;width:0.8em;height:0.8em;line-height:0.8em;display:inline-block;cursor:pointer}.hc-black .colorpicker-color-decoration,.vs-dark .colorpicker-color-decoration{border:0.1em solid #eee}.colorpicker-header{display:flex;height:24px;position:relative;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=);background-size:9px 9px;image-rendering:pixelated}.colorpicker-header .picked-color{width:240px;display:flex;align-items:center;justify-content:center;line-height:24px;cursor:pointer;color:#fff;flex:1;white-space:nowrap;overflow:hidden}.colorpicker-header .picked-color .picked-color-presentation{white-space:nowrap;margin-left:5px;margin-right:5px}.colorpicker-header .picked-color .codicon{color:inherit;font-size:14px}.colorpicker-header .picked-color.light{color:#000}.colorpicker-header .original-color{width:74px;z-index:inherit;cursor:pointer}.standalone-colorpicker{color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.colorpicker-header.standalone-colorpicker{border-bottom:none}.colorpicker-header .close-button{cursor:pointer;background-color:var(--vscode-editorHoverWidget-background);border-left:1px solid var(--vscode-editorHoverWidget-border)}.colorpicker-header .close-button-inner-div{width:100%;height:100%;text-align:center}.colorpicker-header .close-button-inner-div:hover{background-color:var(--vscode-toolbar-hoverBackground)}.colorpicker-header .close-icon{padding:3px}.colorpicker-body{display:flex;padding:8px;position:relative}.colorpicker-body .saturation-wrap{overflow:hidden;height:150px;position:relative;min-width:220px;flex:1}.colorpicker-body .saturation-box{height:150px;position:absolute}.colorpicker-body .saturation-selection{width:9px;height:9px;margin:-5px 0 0 -5px;border:1px solid #fff;border-radius:100%;box-shadow:0 0 2px rgba(0, 0, 0, 0.8);position:absolute}.colorpicker-body .strip{width:25px;height:150px}.colorpicker-body .standalone-strip{width:25px;height:122px}.colorpicker-body .hue-strip{position:relative;margin-left:8px;cursor:grab;background:linear-gradient(180deg, red 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red)}.colorpicker-body .opacity-strip{position:relative;margin-left:8px;cursor:grab;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=);background-size:9px 9px;image-rendering:pixelated}.colorpicker-body .strip.grabbing{cursor:grabbing}.colorpicker-body .slider{position:absolute;top:0;left:-2px;width:calc(100% + 4px);height:4px;box-sizing:border-box;border:1px solid hsla(0, 0%, 100%, 0.71);box-shadow:0 0 1px rgba(0, 0, 0, 0.85)}.colorpicker-body .strip .overlay{height:150px;pointer-events:none}.colorpicker-body .standalone-strip .standalone-overlay{height:122px;pointer-events:none}.standalone-colorpicker-body{display:block;border:1px solid transparent;border-bottom:1px solid var(--vscode-editorHoverWidget-border);overflow:hidden}.colorpicker-body .insert-button{position:absolute;height:20px;width:58px;padding:0;right:8px;bottom:8px;background:var(--vscode-button-background);color:var(--vscode-button-foreground);border-radius:2px;border:none;cursor:pointer}.colorpicker-body .insert-button:hover{background:var(--vscode-button-hoverBackground)}.monaco-editor.hc-light .dnd-target,.monaco-editor.vs .dnd-target{border-right:2px dotted #000;color:#fff}.monaco-editor.vs-dark .dnd-target{border-right:2px dotted #aeafad;color:#51504f}.monaco-editor.hc-black .dnd-target{border-right:2px dotted #fff;color:#000}.monaco-editor.hc-black.mac.mouse-default .view-lines,.monaco-editor.hc-light.mac.mouse-default .view-lines,.monaco-editor.mouse-default .view-lines,.monaco-editor.vs-dark.mac.mouse-default .view-lines{cursor:default}.monaco-editor.hc-black.mac.mouse-copy .view-lines,.monaco-editor.hc-light.mac.mouse-copy .view-lines,.monaco-editor.mouse-copy .view-lines,.monaco-editor.vs-dark.mac.mouse-copy .view-lines{cursor:copy}.post-edit-widget{box-shadow:0 0 8px 2px var(--vscode-widget-shadow);border:1px solid var(--vscode-widget-border, transparent);border-radius:4px;background-color:var(--vscode-editorWidget-background);overflow:hidden}.post-edit-widget .monaco-button{padding:2px;border:none;border-radius:0}.post-edit-widget .monaco-button:hover{background-color:var(--vscode-button-secondaryHoverBackground) !important}.post-edit-widget .monaco-button .codicon{margin:0}.monaco-editor .findOptionsWidget{background-color:var(--vscode-editorWidget-background);color:var(--vscode-editorWidget-foreground);box-shadow:0 0 8px 2px var(--vscode-widget-shadow);border:2px solid var(--vscode-contrastBorder)}.monaco-editor .find-widget{position:absolute;z-index:35;height:33px;overflow:hidden;line-height:19px;transition:transform 0.2s linear;padding:0 4px;box-sizing:border-box;transform:translateY(calc(-100% - 10px));border-bottom-left-radius:4px;border-bottom-right-radius:4px}.monaco-workbench.reduce-motion .monaco-editor .find-widget{transition:transform 0ms linear}.monaco-editor .find-widget textarea{margin:0}.monaco-editor .find-widget.hiddenEditor{display:none}.monaco-editor .find-widget.replaceToggled>.replace-part{display:flex}.monaco-editor .find-widget.visible{transform:translateY(0)}.monaco-editor .find-widget .monaco-inputbox.synthetic-focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-editor .find-widget .monaco-inputbox .input{background-color:transparent;min-height:0}.monaco-editor .find-widget .monaco-findInput .input{font-size:13px}.monaco-editor .find-widget>.find-part,.monaco-editor .find-widget>.replace-part{margin:3px 25px 0 17px;font-size:12px;display:flex}.monaco-editor .find-widget>.find-part .monaco-inputbox,.monaco-editor .find-widget>.replace-part .monaco-inputbox{min-height:25px}.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-right:22px}.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.mirror,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-top:2px;padding-bottom:2px}.monaco-editor .find-widget>.find-part .find-actions,.monaco-editor .find-widget>.replace-part .replace-actions{height:25px;display:flex;align-items:center}.monaco-editor .find-widget .monaco-findInput{vertical-align:middle;display:flex;flex:1}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element{width:100%}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical{opacity:0}.monaco-editor .find-widget .matchesCount{display:flex;flex:initial;margin:0 0 0 3px;padding:2px 0 0 2px;height:25px;vertical-align:middle;box-sizing:border-box;text-align:center;line-height:23px}.monaco-editor .find-widget .button{width:16px;height:16px;padding:3px;border-radius:5px;flex:initial;margin-left:3px;background-position:50%;background-repeat:no-repeat;cursor:pointer;display:flex;align-items:center;justify-content:center}.monaco-editor .find-widget .codicon-find-selection{width:22px;height:22px;padding:3px;border-radius:5px}.monaco-editor .find-widget .button.left{margin-left:0;margin-right:3px}.monaco-editor .find-widget .button.wide{width:auto;padding:1px 6px;top:-1px}.monaco-editor .find-widget .button.toggle{position:absolute;top:0;left:3px;width:18px;height:100%;border-radius:0;box-sizing:border-box}.monaco-editor .find-widget .button.toggle.disabled{display:none}.monaco-editor .find-widget .disabled{color:var(--vscode-disabledForeground);cursor:default}.monaco-editor .find-widget>.replace-part{display:none}.monaco-editor .find-widget>.replace-part>.monaco-findInput{position:relative;display:flex;vertical-align:middle;flex:auto;flex-grow:0;flex-shrink:0}.monaco-editor .find-widget>.replace-part>.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.monaco-editor .find-widget.reduced-find-widget .matchesCount{display:none}.monaco-editor .find-widget.narrow-find-widget{max-width:257px !important}.monaco-editor .find-widget.collapsed-find-widget{max-width:170px !important}.monaco-editor .find-widget.collapsed-find-widget .button.next,.monaco-editor .find-widget.collapsed-find-widget .button.previous,.monaco-editor .find-widget.collapsed-find-widget .button.replace,.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,.monaco-editor .find-widget.collapsed-find-widget>.find-part .monaco-findInput .controls{display:none}.monaco-editor .findMatch{animation-duration:0;animation-name:inherit !important}.monaco-editor .find-widget .monaco-sash{left:0 !important}.monaco-editor.hc-black .find-widget .button:before{position:relative;top:1px;left:2px}.monaco-editor .find-widget>.button.codicon-widget-close{position:absolute;top:5px;right:4px}.monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-manual-expanded{cursor:pointer;opacity:0;transition:opacity 0.5s;display:flex;align-items:center;justify-content:center;font-size:140%;margin-left:2px}.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-expanded{transition:initial}.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons,.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon.codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays:hover .codicon{opacity:1}.monaco-editor .inline-folded:after{color:grey;margin:0.1em 0.2em 0;content:\"⋯\";display:inline;line-height:1em;cursor:pointer}.monaco-editor .folded-background{background-color:var(--vscode-editor-foldBackground)}.monaco-editor .cldr.codicon.codicon-folding-collapsed,.monaco-editor .cldr.codicon.codicon-folding-expanded,.monaco-editor .cldr.codicon.codicon-folding-manual-collapsed,.monaco-editor .cldr.codicon.codicon-folding-manual-expanded{color:var(--vscode-editorGutter-foldingControlForeground) !important}.monaco-editor .peekview-widget .head .peekview-title .severity-icon{display:inline-block;vertical-align:text-top;margin-right:4px}.monaco-editor .marker-widget{text-overflow:ellipsis;white-space:nowrap}.monaco-editor .marker-widget>.stale{opacity:0.6;font-style:italic}.monaco-editor .marker-widget .title{display:inline-block;padding-right:5px}.monaco-editor .marker-widget .descriptioncontainer{position:absolute;white-space:pre;user-select:text;-webkit-user-select:text;padding:8px 12px 0 20px}.monaco-editor .marker-widget .descriptioncontainer .message{display:flex;flex-direction:column}.monaco-editor .marker-widget .descriptioncontainer .message .details{padding-left:6px}.monaco-editor .marker-widget .descriptioncontainer .message .source,.monaco-editor .marker-widget .descriptioncontainer .message span.code{opacity:0.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link{opacity:0.6;color:inherit}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before{content:\"(\"}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after{content:\")\"}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link>span{text-decoration:underline;border-bottom:1px solid transparent;text-underline-position:under;color:var(--vscode-textLink-foreground);color:var(--vscode-textLink-activeForeground)}.monaco-editor .marker-widget .descriptioncontainer .filename{cursor:pointer}.monaco-editor .goto-definition-link{text-decoration:underline;cursor:pointer;color:var(--vscode-editorLink-activeForeground) !important}.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget{border-top-width:1px;border-bottom-width:1px}.monaco-editor .reference-zone-widget .inline{display:inline-block;vertical-align:top}.monaco-editor .reference-zone-widget .messages{height:100%;width:100%;text-align:center;padding:3em 0}.monaco-editor .reference-zone-widget .ref-tree{line-height:23px;background-color:var(--vscode-peekViewResult-background);color:var(--vscode-peekViewResult-lineForeground)}.monaco-editor .reference-zone-widget .ref-tree .reference{text-overflow:ellipsis;overflow:hidden}.monaco-editor .reference-zone-widget .ref-tree .reference-file{display:inline-flex;width:100%;height:100%;color:var(--vscode-peekViewResult-fileForeground)}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file{color:inherit !important}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows>.monaco-list-row.selected:not(.highlighted){background-color:var(--vscode-peekViewResult-selectionBackground);color:var(--vscode-peekViewResult-selectionForeground) !important}.monaco-editor .reference-zone-widget .ref-tree .reference-file .count{margin-right:12px;margin-left:auto}.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight{background-color:var(--vscode-peekViewResult-matchHighlightBackground)}.monaco-editor .reference-zone-widget .preview .reference-decoration{background-color:var(--vscode-peekViewEditor-matchHighlightBackground);border:2px solid var(--vscode-peekViewEditor-matchHighlightBorder);box-sizing:border-box}.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input,.monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background{background-color:var(--vscode-peekViewEditor-background)}.monaco-editor .reference-zone-widget .preview .monaco-editor .margin{background-color:var(--vscode-peekViewEditorGutter-background)}.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file,.monaco-editor.hc-light .reference-zone-widget .ref-tree .reference-file{font-weight:700}.monaco-editor.hc-black .reference-zone-widget .ref-tree .referenceMatch .highlight,.monaco-editor.hc-light .reference-zone-widget .ref-tree .referenceMatch .highlight{border:1px dotted var(--vscode-contrastActiveBorder, transparent);box-sizing:border-box}.monaco-editor .hoverHighlight{background-color:var(--vscode-editor-hoverHighlightBackground)}.monaco-editor .monaco-hover{color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);border-radius:3px}.monaco-editor .monaco-hover a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-hover a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .monaco-hover .hover-row .actions{background-color:var(--vscode-editorHoverWidget-statusBarBackground)}.monaco-editor .monaco-hover code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor.vs .valueSetReplacement{outline:solid 2px var(--vscode-editorBracketMatch-border)}.monaco-editor .suggest-preview-additional-widget{white-space:nowrap}.monaco-editor .suggest-preview-additional-widget .content-spacer{color:transparent;white-space:pre}.monaco-editor .suggest-preview-additional-widget .button{display:inline-block;cursor:pointer;text-decoration:underline;text-underline-position:under}.monaco-editor .ghost-text-hidden{opacity:0;font-size:0}.monaco-editor .ghost-text-decoration,.monaco-editor .suggest-preview-text .ghost-text{font-style:italic}.monaco-editor .inline-completion-text-to-replace{text-decoration:underline;text-underline-position:under}.monaco-editor .ghost-text-decoration,.monaco-editor .ghost-text-decoration-preview,.monaco-editor .suggest-preview-text .ghost-text{color:var(--vscode-editorGhostText-foreground) !important;background-color:var(--vscode-editorGhostText-background);border:1px solid var(--vscode-editorGhostText-border)}.monaco-editor .inlineSuggestionsHints.withBorder{z-index:39;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor .inlineSuggestionsHints a,.monaco-editor .inlineSuggestionsHints a:hover{color:var(--vscode-foreground)}.monaco-editor .inlineSuggestionsHints .keybinding{display:flex;margin-left:4px;opacity:0.6}.monaco-editor .inlineSuggestionsHints .keybinding .monaco-keybinding-key{font-size:8px;padding:2px 3px}.monaco-editor .inlineSuggestionsHints .availableSuggestionCount a{display:flex;min-width:19px;justify-content:center}.monaco-editor .inlineSuggestionStatusBarItemLabel{margin-right:2px}.inline-editor-progress-decoration{display:inline-block;width:1em;height:1em}.inline-progress-widget{display:flex !important;justify-content:center;align-items:center}.inline-progress-widget .icon{font-size:80% !important}.inline-progress-widget:hover .icon{font-size:90% !important;animation:none}.inline-progress-widget:hover .icon:before{content:\"\\ea76\"}.monaco-editor .linked-editing-decoration{background-color:var(--vscode-editor-linkedEditingBackground);min-width:1px}.monaco-editor .detected-link,.monaco-editor .detected-link-active{text-decoration:underline;text-underline-position:under}.monaco-editor .detected-link-active{cursor:pointer;color:var(--vscode-editorLink-activeForeground) !important}.monaco-editor .rendered-markdown kbd{background-color:var(--vscode-keybindingLabel-background);color:var(--vscode-keybindingLabel-foreground);border-radius:3px;border:1px solid var(--vscode-keybindingLabel-border);border-bottom-color:var(--vscode-keybindingLabel-bottomBorder);box-shadow:inset 0 -1px 0 var(--vscode-widget-shadow);vertical-align:middle;padding:1px 3px}.monaco-editor .monaco-editor-overlaymessage{padding-bottom:8px;z-index:10000}.monaco-editor .monaco-editor-overlaymessage.below{padding-bottom:0;padding-top:8px;z-index:10000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.monaco-editor .monaco-editor-overlaymessage.fadeIn{animation:fadeIn 0.15s ease-out}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.monaco-editor .monaco-editor-overlaymessage.fadeOut{animation:fadeOut 0.1s ease-out}.monaco-editor .monaco-editor-overlaymessage .message{padding:2px 4px;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-inputValidation-infoBorder);border-radius:3px}.monaco-editor .monaco-editor-overlaymessage .message p{margin-block:0}.monaco-editor .monaco-editor-overlaymessage .message a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-editor-overlaymessage .message a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor.hc-black .monaco-editor-overlaymessage .message,.monaco-editor.hc-light .monaco-editor-overlaymessage .message{border-width:2px}.monaco-editor .monaco-editor-overlaymessage .anchor{width:0 !important;height:0 !important;z-index:1000;border:8px solid transparent;position:absolute;left:2px}.monaco-editor .monaco-editor-overlaymessage .anchor.top{border-bottom-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage .anchor.below{border-top-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage.below .anchor.below,.monaco-editor .monaco-editor-overlaymessage:not(.below) .anchor.top{display:none}.monaco-editor .monaco-editor-overlaymessage.below .anchor.top{display:inherit;top:-8px}.monaco-editor .parameter-hints-widget{z-index:39;display:flex;flex-direction:column;line-height:1.5em;cursor:default;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.hc-black .monaco-editor .parameter-hints-widget,.hc-light .monaco-editor .parameter-hints-widget{border-width:2px}.monaco-editor .parameter-hints-widget>.phwrapper{max-width:440px;display:flex;flex-direction:row}.monaco-editor .parameter-hints-widget.multiple{min-height:3.3em;padding:0}.monaco-editor .parameter-hints-widget.multiple .body:before{content:\"\";display:block;height:100%;position:absolute;opacity:0.5;border-left:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor .parameter-hints-widget p,.monaco-editor .parameter-hints-widget ul{margin:8px 0}.monaco-editor .parameter-hints-widget .body,.monaco-editor .parameter-hints-widget .monaco-scrollable-element{display:flex;flex:1;flex-direction:column;min-height:100%}.monaco-editor .parameter-hints-widget .signature{padding:4px 5px;position:relative}.monaco-editor .parameter-hints-widget .signature.has-docs:after{content:\"\";display:block;position:absolute;left:0;width:100%;padding-top:4px;opacity:0.5;border-bottom:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor .parameter-hints-widget .docs{padding:0 10px 0 5px;white-space:pre-wrap}.monaco-editor .parameter-hints-widget .docs.empty{display:none}.monaco-editor .parameter-hints-widget .docs a{color:var(--vscode-textLink-foreground)}.monaco-editor .parameter-hints-widget .docs a:hover{color:var(--vscode-textLink-activeForeground);cursor:pointer}.monaco-editor .parameter-hints-widget .docs .markdown-docs{white-space:normal}.monaco-editor .parameter-hints-widget .docs code{font-family:var(--monaco-monospace-font);border-radius:3px;padding:0 0.4em;background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .parameter-hints-widget .docs .code,.monaco-editor .parameter-hints-widget .docs .monaco-tokenized-source{white-space:pre-wrap}.monaco-editor .parameter-hints-widget .controls{display:none;flex-direction:column;align-items:center;min-width:22px;justify-content:flex-end}.monaco-editor .parameter-hints-widget.multiple .controls{display:flex;padding:0 2px}.monaco-editor .parameter-hints-widget.multiple .button{width:16px;height:16px;background-repeat:no-repeat;cursor:pointer}.monaco-editor .parameter-hints-widget .button.previous{bottom:24px}.monaco-editor .parameter-hints-widget .overloads{text-align:center;height:12px;line-height:12px;font-family:var(--monaco-monospace-font)}.monaco-editor .parameter-hints-widget .signature .parameter.active{color:var(--vscode-editorHoverWidget-highlightForeground);font-weight:700}.monaco-editor .parameter-hints-widget .documentation-parameter>.parameter{font-weight:700;margin-right:0.5em}.monaco-editor .peekview-widget .head{box-sizing:border-box;display:flex;justify-content:space-between;flex-wrap:nowrap}.monaco-editor .peekview-widget .head .peekview-title{display:flex;align-items:baseline;font-size:13px;margin-left:20px;min-width:0;text-overflow:ellipsis;overflow:hidden}.monaco-editor .peekview-widget .head .peekview-title.clickable{cursor:pointer}.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty){font-size:0.9em;margin-left:0.5em}.monaco-editor .peekview-widget .head .peekview-title .dirname,.monaco-editor .peekview-widget .head .peekview-title .filename,.monaco-editor .peekview-widget .head .peekview-title .meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty):before{content:\"-\";padding:0 0.3em}.monaco-editor .peekview-widget .head .peekview-actions{flex:1;text-align:right;padding-right:2px}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar{display:inline-block}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar,.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar>.actions-container{height:100%}.monaco-editor .peekview-widget>.body{border-top:1px solid;position:relative}.monaco-editor .peekview-widget .head .peekview-title .codicon{margin-right:4px;align-self:center}.monaco-editor .peekview-widget .monaco-list .monaco-list-row.focused .codicon{color:inherit !important}.monaco-editor .rename-box{z-index:100;color:inherit;border-radius:4px}.monaco-editor .rename-box.preview{padding:4px 4px 0}.monaco-editor .rename-box .rename-input{padding:3px;border-radius:2px}.monaco-editor .rename-box .rename-label{display:none;opacity:0.8}.monaco-editor .rename-box.preview .rename-label{display:inherit}.monaco-editor .snippet-placeholder{min-width:2px;outline-style:solid;outline-width:1px;background-color:var(--vscode-editor-snippetTabstopHighlightBackground, transparent);outline-color:var(--vscode-editor-snippetTabstopHighlightBorder, transparent)}.monaco-editor .finish-snippet-placeholder{outline-style:solid;outline-width:1px;background-color:var(--vscode-editor-snippetFinalTabstopHighlightBackground, transparent);outline-color:var(--vscode-editor-snippetFinalTabstopHighlightBorder, transparent)}.monaco-editor .sticky-widget{overflow:hidden}.monaco-editor .sticky-widget-line-numbers{float:left;background-color:inherit}.monaco-editor .sticky-widget-lines-scrollable{display:inline-block;position:absolute;overflow:hidden;width:var(--vscode-editorStickyScroll-scrollableWidth);background-color:inherit}.monaco-editor .sticky-widget-lines{position:absolute;background-color:inherit}.monaco-editor .sticky-line-content,.monaco-editor .sticky-line-number{color:var(--vscode-editorLineNumber-foreground);white-space:nowrap;display:inline-block;position:absolute;background-color:inherit}.monaco-editor .sticky-line-number .codicon-folding-collapsed,.monaco-editor .sticky-line-number .codicon-folding-expanded{float:right;transition:var(--vscode-editorStickyScroll-foldingOpacityTransition)}.monaco-editor .sticky-line-content{width:var(--vscode-editorStickyScroll-scrollableWidth);background-color:inherit;white-space:nowrap}.monaco-editor .sticky-line-number-inner{display:inline-block;text-align:right}.monaco-editor.hc-black .sticky-widget,.monaco-editor.hc-light .sticky-widget{border-bottom:1px solid var(--vscode-contrastBorder)}.monaco-editor .sticky-line-content:hover{background-color:var(--vscode-editorStickyScrollHover-background);cursor:pointer}.monaco-editor .sticky-widget{width:100%;box-shadow:var(--vscode-scrollbar-shadow) 0 3px 2px -2px;z-index:4;background-color:var(--vscode-editorStickyScroll-background)}.monaco-editor .sticky-widget.peek{background-color:var(--vscode-peekViewEditorStickyScroll-background)}.monaco-editor .suggest-widget{width:430px;z-index:40;display:flex;flex-direction:column;border-radius:3px}.monaco-editor .suggest-widget.message{flex-direction:row;align-items:center}.monaco-editor .suggest-details,.monaco-editor .suggest-widget{flex:0 1 auto;width:100%;border:1px solid var(--vscode-editorSuggestWidget-border);background-color:var(--vscode-editorSuggestWidget-background)}.monaco-editor.hc-black .suggest-details,.monaco-editor.hc-black .suggest-widget,.monaco-editor.hc-light .suggest-details,.monaco-editor.hc-light .suggest-widget{border-width:2px}.monaco-editor .suggest-widget .suggest-status-bar{box-sizing:border-box;display:none;flex-flow:row nowrap;justify-content:space-between;width:100%;font-size:80%;padding:0 4px;border-top:1px solid var(--vscode-editorSuggestWidget-border);overflow:hidden}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar{display:flex}.monaco-editor .suggest-widget .suggest-status-bar .left{padding-right:8px}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label{color:var(--vscode-editorSuggestWidgetStatus-foreground)}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label{margin-right:0}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label:after{content:\", \";margin-right:0.3em}.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore,.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label{width:100%}.monaco-editor .suggest-widget>.message{padding-left:22px}.monaco-editor .suggest-widget>.tree{height:100%;width:100%}.monaco-editor .suggest-widget .monaco-list{user-select:none;-webkit-user-select:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row{display:flex;-mox-box-sizing:border-box;box-sizing:border-box;padding-right:10px;background-repeat:no-repeat;background-position:2px 2px;white-space:nowrap;cursor:pointer;touch-action:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused{color:var(--vscode-editorSuggestWidget-selectedForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused .codicon{color:var(--vscode-editorSuggestWidget-selectedIconForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents{flex:1;height:100%;overflow:hidden;padding-left:2px}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main{display:flex;overflow:hidden;text-overflow:ellipsis;white-space:pre;justify-content:space-between}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{display:flex}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.focused)>.contents>.main .monaco-icon-label{color:var(--vscode-editorSuggestWidget-foreground)}.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight{font-weight:700}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-highlightForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-focusHighlightForeground)}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:before{color:inherit;opacity:1;font-size:14px;cursor:pointer}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close{position:absolute;top:6px;right:2px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close:hover,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:hover{opacity:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{opacity:0.7}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.signature-label{overflow:hidden;text-overflow:ellipsis;opacity:0.6}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.qualifier-label{margin-left:12px;opacity:0.4;font-size:85%;line-height:normal;text-overflow:ellipsis;overflow:hidden;align-self:center}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{font-size:85%;margin-left:1.1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label>.monaco-tokenized-source{display:inline}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{display:none}.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget:not(.shows-details) .monaco-list .monaco-list-row.focused>.contents>.main>.right>.details-label{display:inline}.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right.can-expand-details>.details-label{width:calc(100% - 26px)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left{flex-shrink:1;flex-grow:1;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.monaco-icon-label{flex-shrink:0}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.left>.monaco-icon-label{max-width:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.left>.monaco-icon-label{flex-shrink:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{overflow:hidden;flex-shrink:4;max-width:70%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:inline-block;position:absolute;right:10px;width:18px;height:18px;visibility:hidden}.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none !important}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore{display:inline-block}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right>.readMore{visibility:visible}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated{opacity:0.66;text-decoration:unset}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated>.monaco-icon-label-container>.monaco-icon-name-container{text-decoration:line-through}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label:before{height:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon{display:block;height:16px;width:16px;margin-left:2px;background-repeat:no-repeat;background-size:80%;background-position:50%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon{display:flex;align-items:center;margin-right:4px}.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon,.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon:before{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan{margin:0 0 0 0.3em;border:0.1em solid #000;width:0.7em;height:0.7em;display:inline-block}.monaco-editor .suggest-details-container{z-index:41}.monaco-editor .suggest-details{display:flex;flex-direction:column;cursor:default;color:var(--vscode-editorSuggestWidget-foreground)}.monaco-editor .suggest-details.focused{border-color:var(--vscode-focusBorder)}.monaco-editor .suggest-details a{color:var(--vscode-textLink-foreground)}.monaco-editor .suggest-details a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .suggest-details code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .suggest-details.no-docs{display:none}.monaco-editor .suggest-details>.monaco-scrollable-element{flex:1}.monaco-editor .suggest-details>.monaco-scrollable-element>.body{box-sizing:border-box;height:100%;width:100%}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type{flex:2;overflow:hidden;text-overflow:ellipsis;opacity:0.7;white-space:pre;margin:0 24px 0 0;padding:4px 0 12px 5px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type.auto-wrap{white-space:normal;word-break:break-all}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs{margin:0;padding:4px 5px;white-space:pre-wrap}.monaco-editor .suggest-details.no-type>.monaco-scrollable-element>.body>.docs{margin-right:24px;overflow:hidden}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs{padding:0;white-space:normal;min-height:calc(1rem + 8px)}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div,.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>span:not(:empty){padding:4px 5px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:first-child{margin-top:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:last-child{margin-bottom:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .monaco-tokenized-source{white-space:pre}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs .code{white-space:pre-wrap;word-wrap:break-word}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .codicon{vertical-align:sub}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>p:empty{display:none}.monaco-editor .suggest-details code{border-radius:3px;padding:0 0.4em}.monaco-editor .suggest-details ol,.monaco-editor .suggest-details ul{padding-left:20px}.monaco-editor .suggest-details p code{font-family:var(--monaco-monospace-font)}.monaco-editor .codicon.codicon-symbol-array,.monaco-workbench .codicon.codicon-symbol-array{color:var(--vscode-symbolIcon-arrayForeground)}.monaco-editor .codicon.codicon-symbol-boolean,.monaco-workbench .codicon.codicon-symbol-boolean{color:var(--vscode-symbolIcon-booleanForeground)}.monaco-editor .codicon.codicon-symbol-class,.monaco-workbench .codicon.codicon-symbol-class{color:var(--vscode-symbolIcon-classForeground)}.monaco-editor .codicon.codicon-symbol-method,.monaco-workbench .codicon.codicon-symbol-method{color:var(--vscode-symbolIcon-methodForeground)}.monaco-editor .codicon.codicon-symbol-color,.monaco-workbench .codicon.codicon-symbol-color{color:var(--vscode-symbolIcon-colorForeground)}.monaco-editor .codicon.codicon-symbol-constant,.monaco-workbench .codicon.codicon-symbol-constant{color:var(--vscode-symbolIcon-constantForeground)}.monaco-editor .codicon.codicon-symbol-constructor,.monaco-workbench .codicon.codicon-symbol-constructor{color:var(--vscode-symbolIcon-constructorForeground)}.monaco-editor .codicon.codicon-symbol-enum,.monaco-editor .codicon.codicon-symbol-value,.monaco-workbench .codicon.codicon-symbol-enum,.monaco-workbench .codicon.codicon-symbol-value{color:var(--vscode-symbolIcon-enumeratorForeground)}.monaco-editor .codicon.codicon-symbol-enum-member,.monaco-workbench .codicon.codicon-symbol-enum-member{color:var(--vscode-symbolIcon-enumeratorMemberForeground)}.monaco-editor .codicon.codicon-symbol-event,.monaco-workbench .codicon.codicon-symbol-event{color:var(--vscode-symbolIcon-eventForeground)}.monaco-editor .codicon.codicon-symbol-field,.monaco-workbench .codicon.codicon-symbol-field{color:var(--vscode-symbolIcon-fieldForeground)}.monaco-editor .codicon.codicon-symbol-file,.monaco-workbench .codicon.codicon-symbol-file{color:var(--vscode-symbolIcon-fileForeground)}.monaco-editor .codicon.codicon-symbol-folder,.monaco-workbench .codicon.codicon-symbol-folder{color:var(--vscode-symbolIcon-folderForeground)}.monaco-editor .codicon.codicon-symbol-function,.monaco-workbench .codicon.codicon-symbol-function{color:var(--vscode-symbolIcon-functionForeground)}.monaco-editor .codicon.codicon-symbol-interface,.monaco-workbench .codicon.codicon-symbol-interface{color:var(--vscode-symbolIcon-interfaceForeground)}.monaco-editor .codicon.codicon-symbol-key,.monaco-workbench .codicon.codicon-symbol-key{color:var(--vscode-symbolIcon-keyForeground)}.monaco-editor .codicon.codicon-symbol-keyword,.monaco-workbench .codicon.codicon-symbol-keyword{color:var(--vscode-symbolIcon-keywordForeground)}.monaco-editor .codicon.codicon-symbol-module,.monaco-workbench .codicon.codicon-symbol-module{color:var(--vscode-symbolIcon-moduleForeground)}.monaco-editor .codicon.codicon-symbol-namespace,.monaco-workbench .codicon.codicon-symbol-namespace{color:var(--vscode-symbolIcon-namespaceForeground)}.monaco-editor .codicon.codicon-symbol-null,.monaco-workbench .codicon.codicon-symbol-null{color:var(--vscode-symbolIcon-nullForeground)}.monaco-editor .codicon.codicon-symbol-number,.monaco-workbench .codicon.codicon-symbol-number{color:var(--vscode-symbolIcon-numberForeground)}.monaco-editor .codicon.codicon-symbol-object,.monaco-workbench .codicon.codicon-symbol-object{color:var(--vscode-symbolIcon-objectForeground)}.monaco-editor .codicon.codicon-symbol-operator,.monaco-workbench .codicon.codicon-symbol-operator{color:var(--vscode-symbolIcon-operatorForeground)}.monaco-editor .codicon.codicon-symbol-package,.monaco-workbench .codicon.codicon-symbol-package{color:var(--vscode-symbolIcon-packageForeground)}.monaco-editor .codicon.codicon-symbol-property,.monaco-workbench .codicon.codicon-symbol-property{color:var(--vscode-symbolIcon-propertyForeground)}.monaco-editor .codicon.codicon-symbol-reference,.monaco-workbench .codicon.codicon-symbol-reference{color:var(--vscode-symbolIcon-referenceForeground)}.monaco-editor .codicon.codicon-symbol-snippet,.monaco-workbench .codicon.codicon-symbol-snippet{color:var(--vscode-symbolIcon-snippetForeground)}.monaco-editor .codicon.codicon-symbol-string,.monaco-workbench .codicon.codicon-symbol-string{color:var(--vscode-symbolIcon-stringForeground)}.monaco-editor .codicon.codicon-symbol-struct,.monaco-workbench .codicon.codicon-symbol-struct{color:var(--vscode-symbolIcon-structForeground)}.monaco-editor .codicon.codicon-symbol-text,.monaco-workbench .codicon.codicon-symbol-text{color:var(--vscode-symbolIcon-textForeground)}.monaco-editor .codicon.codicon-symbol-type-parameter,.monaco-workbench .codicon.codicon-symbol-type-parameter{color:var(--vscode-symbolIcon-typeParameterForeground)}.monaco-editor .codicon.codicon-symbol-unit,.monaco-workbench .codicon.codicon-symbol-unit{color:var(--vscode-symbolIcon-unitForeground)}.monaco-editor .codicon.codicon-symbol-variable,.monaco-workbench .codicon.codicon-symbol-variable{color:var(--vscode-symbolIcon-variableForeground)}.editor-banner{box-sizing:border-box;cursor:default;width:100%;font-size:12px;display:flex;overflow:visible;height:26px;background:var(--vscode-banner-background)}.editor-banner .icon-container{display:flex;flex-shrink:0;align-items:center;padding:0 6px 0 10px}.editor-banner .icon-container.custom-icon{background-repeat:no-repeat;background-position:50%;background-size:16px;width:16px;padding:0;margin:0 6px 0 10px}.editor-banner .message-container{display:flex;align-items:center;line-height:26px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.editor-banner .message-container p{margin-block-start:0;margin-block-end:0}.editor-banner .message-actions-container{flex-grow:1;flex-shrink:0;line-height:26px;margin:0 4px}.editor-banner .message-actions-container a.monaco-button{width:inherit;margin:2px 8px;padding:0 12px}.editor-banner .message-actions-container a{padding:3px;margin-left:12px;text-decoration:underline}.editor-banner .action-container{padding:0 10px 0 6px}.editor-banner{background-color:var(--vscode-banner-background)}.editor-banner,.editor-banner .action-container .codicon,.editor-banner .message-actions-container .monaco-link{color:var(--vscode-banner-foreground)}.editor-banner .icon-container .codicon{color:var(--vscode-banner-iconForeground)}.monaco-editor .unicode-highlight{border:1px solid var(--vscode-editorUnicodeHighlight-border);background-color:var(--vscode-editorUnicodeHighlight-background);box-sizing:border-box}.monaco-editor .focused .selectionHighlight{background-color:var(--vscode-editor-selectionHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-selectionHighlightBorder)}.monaco-editor.hc-black .focused .selectionHighlight,.monaco-editor.hc-light .focused .selectionHighlight{border-style:dotted}.monaco-editor .wordHighlight{background-color:var(--vscode-editor-wordHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-wordHighlightBorder)}.monaco-editor.hc-black .wordHighlight,.monaco-editor.hc-light .wordHighlight{border-style:dotted}.monaco-editor .wordHighlightStrong{background-color:var(--vscode-editor-wordHighlightStrongBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-wordHighlightStrongBorder)}.monaco-editor.hc-black .wordHighlightStrong,.monaco-editor.hc-light .wordHighlightStrong{border-style:dotted}.monaco-editor .wordHighlightText{background-color:var(--vscode-editor-wordHighlightTextBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-wordHighlightTextBorder)}.monaco-editor.hc-black .wordHighlightText,.monaco-editor.hc-light .wordHighlightText{border-style:dotted}.monaco-editor .zone-widget{position:absolute;z-index:10}.monaco-editor .zone-widget .zone-widget-container{border-top-style:solid;border-bottom-style:solid;border-top-width:0;border-bottom-width:0;position:relative}.monaco-editor .iPadShowKeyboard{width:58px;min-width:0;height:36px;min-height:0;margin:0;padding:0;position:absolute;resize:none;overflow:hidden;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzYgNC4wMUg0LjAwOFYzMi4wM2g0NC4wMjhWNC4wMXpNNC4wMDguMDA4QTQuMDAzIDQuMDAzIDAgMDAuMDA1IDQuMDFWMzIuMDNhNC4wMDMgNC4wMDMgMCAwMDQuMDAzIDQuMDAyaDQ0LjAyOGE0LjAwMyA0LjAwMyAwIDAwNC4wMDMtNC4wMDJWNC4wMUE0LjAwMyA0LjAwMyAwIDAwNDguMDM2LjAwOEg0LjAwOHpNOC4wMSA4LjAxM2g0LjAwM3Y0LjAwM0g4LjAxVjguMDEzem0xMi4wMDggMGgtNC4wMDJ2NC4wMDNoNC4wMDJWOC4wMTN6bTQuMDAzIDBoNC4wMDJ2NC4wMDNoLTQuMDAyVjguMDEzem0xMi4wMDggMGgtNC4wMDN2NC4wMDNoNC4wMDNWOC4wMTN6bTQuMDAyIDBoNC4wMDN2NC4wMDNINDAuMDNWOC4wMTN6bS0yNC4wMTUgOC4wMDVIOC4wMXY0LjAwM2g4LjAwNnYtNC4wMDN6bTQuMDAyIDBoNC4wMDN2NC4wMDNoLTQuMDAzdi00LjAwM3ptMTIuMDA4IDBoLTQuMDAzdjQuMDAzaDQuMDAzdi00LjAwM3ptMTIuMDA4IDB2NC4wMDNoLTguMDA1di00LjAwM2g4LjAwNXptLTMyLjAyMSA4LjAwNUg4LjAxdjQuMDAzaDQuMDAzdi00LjAwM3ptNC4wMDMgMGgyMC4wMTN2NC4wMDNIMTYuMDE2di00LjAwM3ptMjguMDE4IDBINDAuMDN2NC4wMDNoNC4wMDN2LTQuMDAzeiIgZmlsbD0iIzQyNDI0MiIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImNsaXAwIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUzdjM2SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+) 50% no-repeat;border:4px solid #f6f6f6;border-radius:4px}.monaco-editor.vs-dark .iPadShowKeyboard{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzYgNC4wMUg0LjAwOFYzMi4wM2g0NC4wMjhWNC4wMXpNNC4wMDguMDA4QTQuMDAzIDQuMDAzIDAgMDAuMDA1IDQuMDFWMzIuMDNhNC4wMDMgNC4wMDMgMCAwMDQuMDAzIDQuMDAyaDQ0LjAyOGE0LjAwMyA0LjAwMyAwIDAwNC4wMDMtNC4wMDJWNC4wMUE0LjAwMyA0LjAwMyAwIDAwNDguMDM2LjAwOEg0LjAwOHpNOC4wMSA4LjAxM2g0LjAwM3Y0LjAwM0g4LjAxVjguMDEzem0xMi4wMDggMGgtNC4wMDJ2NC4wMDNoNC4wMDJWOC4wMTN6bTQuMDAzIDBoNC4wMDJ2NC4wMDNoLTQuMDAyVjguMDEzem0xMi4wMDggMGgtNC4wMDN2NC4wMDNoNC4wMDNWOC4wMTN6bTQuMDAyIDBoNC4wMDN2NC4wMDNINDAuMDNWOC4wMTN6bS0yNC4wMTUgOC4wMDVIOC4wMXY0LjAwM2g4LjAwNnYtNC4wMDN6bTQuMDAyIDBoNC4wMDN2NC4wMDNoLTQuMDAzdi00LjAwM3ptMTIuMDA4IDBoLTQuMDAzdjQuMDAzaDQuMDAzdi00LjAwM3ptMTIuMDA4IDB2NC4wMDNoLTguMDA1di00LjAwM2g4LjAwNXptLTMyLjAyMSA4LjAwNUg4LjAxdjQuMDAzaDQuMDAzdi00LjAwM3ptNC4wMDMgMGgyMC4wMTN2NC4wMDNIMTYuMDE2di00LjAwM3ptMjguMDE4IDBINDAuMDN2NC4wMDNoNC4wMDN2LTQuMDAzeiIgZmlsbD0iI0M1QzVDNSIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImNsaXAwIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUzdjM2SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+) 50% no-repeat;border:4px solid #252526}.monaco-editor .tokens-inspect-widget{z-index:50;user-select:text;-webkit-user-select:text;padding:10px;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor.hc-black .tokens-inspect-widget,.monaco-editor.hc-light .tokens-inspect-widget{border-width:2px}.monaco-editor .tokens-inspect-widget .tokens-inspect-separator{height:1px;border:0;background-color:var(--vscode-editorHoverWidget-border)}.monaco-editor .tokens-inspect-widget .tm-token{font-family:var(--monaco-monospace-font)}.monaco-editor .tokens-inspect-widget .tm-token-length{font-weight:400;font-size:60%;float:right}.monaco-editor .tokens-inspect-widget .tm-metadata-table{width:100%}.monaco-editor .tokens-inspect-widget .tm-metadata-value{font-family:var(--monaco-monospace-font);text-align:right}.monaco-editor .tokens-inspect-widget .tm-token-type{font-family:var(--monaco-monospace-font)}.quick-input-widget{font-size:13px}.quick-input-widget .monaco-highlighted-label .highlight{color:#0066bf}.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight{color:#9dddff}.vs-dark .quick-input-widget .monaco-highlighted-label .highlight{color:#0097fb}.hc-black .quick-input-widget .monaco-highlighted-label .highlight{color:#f38518}.hc-light .quick-input-widget .monaco-highlighted-label .highlight{color:#0f4a85}.monaco-keybinding>.monaco-keybinding-key{background-color:hsla(0, 0%, 86.7%, 0.4);border:1px solid hsla(0, 0%, 80%, 0.4);border-bottom-color:hsla(0, 0%, 73.3%, 0.4);box-shadow:inset 0 -1px 0 hsla(0, 0%, 73.3%, 0.4);color:#555}.hc-black .monaco-keybinding>.monaco-keybinding-key{background-color:transparent;border:1px solid #6fc3df;box-shadow:none;color:#fff}.hc-light .monaco-keybinding>.monaco-keybinding-key{background-color:transparent;border:1px solid #0f4a85;box-shadow:none;color:#292929}.vs-dark .monaco-keybinding>.monaco-keybinding-key{background-color:hsla(0, 0%, 50.2%, 0.17);border:1px solid rgba(51, 51, 51, 0.6);border-bottom-color:rgba(68, 68, 68, 0.6);box-shadow:inset 0 -1px 0 rgba(68, 68, 68, 0.6);color:#ccc}.monaco-editor{font-family:-apple-system, BlinkMacSystemFont, Segoe WPC, Segoe UI, HelveticaNeue-Light, system-ui, Ubuntu, Droid Sans, sans-serif;--monaco-monospace-font:\"SF Mono\",Monaco,Menlo,Consolas,\"Ubuntu Mono\",\"Liberation Mono\",\"DejaVu Sans Mono\",\"Courier New\",monospace}.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.hc-light .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label{stroke-width:1.2px}.monaco-hover p{margin:0}.monaco-aria-container{position:absolute !important;top:0;height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;clip:rect(1px, 1px, 1px, 1px);clip-path:inset(50%)}.action-widget{font-size:13px;border-radius:0;min-width:160px;max-width:80vw;z-index:40;display:block;width:100%;border:1px solid var(--vscode-editorWidget-border) !important;border-radius:2px;background-color:var(--vscode-editorWidget-background);color:var(--vscode-editorWidget-foreground)}.context-view-block{z-index:-1}.context-view-block,.context-view-pointerBlock{position:fixed;cursor:auto;left:0;top:0;width:100%;height:100%}.context-view-pointerBlock{z-index:2}.action-widget .monaco-list{user-select:none;-webkit-user-select:none;border:0 !important}.action-widget .monaco-list:focus:before{outline:0 !important}.action-widget .monaco-list .monaco-scrollable-element{overflow:visible}.action-widget .monaco-list .monaco-list-row{padding:0 10px;white-space:nowrap;cursor:pointer;touch-action:none;width:100%}.action-widget .monaco-list .monaco-list-row.action.focused:not(.option-disabled){background-color:var(--vscode-quickInputList-focusBackground) !important;color:var(--vscode-quickInputList-focusForeground);outline:1px solid var(--vscode-menu-selectionBorder, transparent);outline-offset:-1px}.action-widget .monaco-list-row.group-header{color:var(--vscode-descriptionForeground) !important;font-weight:600}.action-widget .monaco-list .group-header,.action-widget .monaco-list .option-disabled,.action-widget .monaco-list .option-disabled .focused,.action-widget .monaco-list .option-disabled .focused:before,.action-widget .monaco-list .option-disabled:before{cursor:default !important;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;background-color:transparent !important;outline:0 solid !important}.action-widget .monaco-list-row.action{display:flex;gap:6px;align-items:center}.action-widget .monaco-list-row.action.option-disabled,.action-widget .monaco-list-row.action.option-disabled .codicon,.action-widget .monaco-list:focus .monaco-list-row.focused.action.option-disabled,.action-widget .monaco-list:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused).option-disabled{color:var(--vscode-disabledForeground)}.action-widget .monaco-list-row.action:not(.option-disabled) .codicon{color:inherit}.action-widget .monaco-list-row.action .title{flex:1;overflow:hidden;text-overflow:ellipsis}.action-widget .action-widget-action-bar{background-color:var(--vscode-editorHoverWidget-statusBarBackground);border-top:1px solid var(--vscode-editorHoverWidget-border)}.action-widget .action-widget-action-bar:before{display:block;content:\"\";width:100%}.action-widget .action-widget-action-bar .actions-container{padding:0 8px}.action-widget-action-bar .action-label{color:var(--vscode-textLink-activeForeground);font-size:12px;line-height:22px;padding:0;pointer-events:all}.action-widget-action-bar .action-item{margin-right:16px;pointer-events:none}.action-widget-action-bar .action-label:hover{background-color:transparent !important}.monaco-action-bar .actions-container.highlight-toggled .action-label.checked{background:var(--vscode-actionBar-toggledBackground) !important}.monaco-action-bar .action-item.menu-entry .action-label.icon{width:16px;height:16px;background-repeat:no-repeat;background-position:50%;background-size:16px}.monaco-dropdown-with-default{display:flex !important;flex-direction:row;border-radius:5px}.monaco-dropdown-with-default>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-default>.action-container.menu-entry>.action-label.icon{width:16px;height:16px;background-repeat:no-repeat;background-position:50%;background-size:16px}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;padding-left:0;padding-right:0;line-height:16px;margin-left:-3px}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{display:block;background-size:16px;background-position:50%;background-repeat:no-repeat}.monaco-link{color:var(--vscode-textLink-foreground)}.monaco-link:hover{color:var(--vscode-textLink-activeForeground)}.quick-input-widget{position:absolute;width:600px;z-index:2550;left:50%;margin-left:-300px;-webkit-app-region:no-drag;border-radius:6px}.quick-input-titlebar{display:flex;align-items:center;border-top-left-radius:5px;border-top-right-radius:5px}.quick-input-left-action-bar{display:flex;margin-left:4px;flex:1}.quick-input-title{padding:3px 0;text-align:center;text-overflow:ellipsis;overflow:hidden}.quick-input-right-action-bar{display:flex;margin-right:4px;flex:1}.quick-input-right-action-bar>.actions-container{justify-content:flex-end}.quick-input-titlebar .monaco-action-bar .action-label.codicon{background-position:50%;background-repeat:no-repeat;padding:2px}.quick-input-description{margin:6px 6px 6px 11px}.quick-input-header .quick-input-description{margin:4px 2px;flex:1}.quick-input-header{display:flex;padding:8px 6px 6px}.quick-input-widget.hidden-input .quick-input-header{padding:0;margin-bottom:0}.quick-input-and-message{display:flex;flex-direction:column;flex-grow:1;min-width:0;position:relative}.quick-input-check-all{align-self:center;margin:0}.quick-input-filter{flex-grow:1;display:flex;position:relative}.quick-input-box{flex-grow:1}.quick-input-widget.show-checkboxes .quick-input-box,.quick-input-widget.show-checkboxes .quick-input-message{margin-left:5px}.quick-input-visible-count{position:absolute;left:-10000px}.quick-input-count{align-self:center;position:absolute;right:4px;display:flex;align-items:center}.quick-input-count .monaco-count-badge{vertical-align:middle;padding:2px 4px;border-radius:2px;min-height:auto;line-height:normal}.quick-input-action{margin-left:6px}.quick-input-action .monaco-text-button{font-size:11px;padding:0 6px;display:flex;height:25px;align-items:center}.quick-input-message{margin-top:-1px;padding:5px;overflow-wrap:break-word}.quick-input-message>.codicon{margin:0 0.2em;vertical-align:text-bottom}.quick-input-message a{color:inherit}.quick-input-progress.monaco-progress-container{position:relative}.quick-input-list{line-height:22px}.quick-input-widget.hidden-input .quick-input-list{margin-top:4px;padding-bottom:4px}.quick-input-list .monaco-list{overflow:hidden;max-height:440px;padding-bottom:5px}.quick-input-list .monaco-scrollable-element{padding:0 5px}.quick-input-list .quick-input-list-entry{box-sizing:border-box;overflow:hidden;display:flex;height:100%;padding:0 6px}.quick-input-list .quick-input-list-entry.quick-input-list-separator-border{border-top-width:1px;border-top-style:solid}.quick-input-list .monaco-list-row{border-radius:3px}.quick-input-list .monaco-list-row[data-index=\"0\"] .quick-input-list-entry.quick-input-list-separator-border{border-top-style:none}.quick-input-list .quick-input-list-label{overflow:hidden;display:flex;height:100%;flex:1}.quick-input-list .quick-input-list-checkbox{align-self:center;margin:0}.quick-input-list .quick-input-list-icon{background-size:16px;background-position:0;background-repeat:no-repeat;padding-right:6px;width:16px;height:22px;display:flex;align-items:center;justify-content:center}.quick-input-list .quick-input-list-rows{overflow:hidden;text-overflow:ellipsis;display:flex;flex-direction:column;height:100%;flex:1;margin-left:5px}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows{margin-left:10px}.quick-input-widget .quick-input-list .quick-input-list-checkbox{display:none}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox{display:inline}.quick-input-list .quick-input-list-rows>.quick-input-list-row{display:flex;align-items:center}.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label,.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label .monaco-icon-label-container>.monaco-icon-name-container{flex:1}.quick-input-list .quick-input-list-rows>.quick-input-list-row .codicon[class*=codicon-]{vertical-align:text-bottom}.quick-input-list .quick-input-list-rows .monaco-highlighted-label>span{opacity:1}.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding{margin-right:8px}.quick-input-list .quick-input-list-label-meta{opacity:0.7;line-height:normal;text-overflow:ellipsis;overflow:hidden}.quick-input-list .monaco-highlighted-label .highlight{font-weight:700}.quick-input-list .quick-input-list-entry .quick-input-list-separator{margin-right:4px}.quick-input-list .quick-input-list-entry-action-bar{display:flex;flex:0;overflow:visible}.quick-input-list .quick-input-list-entry-action-bar .action-label{display:none}.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon{margin-right:4px;padding:0 2px 2px}.quick-input-list .quick-input-list-entry-action-bar{margin-top:1px;margin-right:4px}.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label,.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label{display:flex}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key,.quick-input-list .monaco-list-row.focused .quick-input-list-entry .quick-input-list-separator{color:inherit}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key{background:none}.quick-input-list .quick-input-list-separator-as-item{font-weight:600;font-size:12px}.extension-editor .codicon.codicon-error,.extensions-viewlet>.extensions .codicon.codicon-error,.markers-panel .marker-icon .codicon.codicon-error,.markers-panel .marker-icon.error,.monaco-editor .zone-widget .codicon.codicon-error,.preferences-editor .codicon.codicon-error,.text-search-provider-messages .providerMessage .codicon.codicon-error{color:var(--vscode-problemsErrorIcon-foreground)}.extension-editor .codicon.codicon-warning,.extensions-viewlet>.extensions .codicon.codicon-warning,.markers-panel .marker-icon .codicon.codicon-warning,.markers-panel .marker-icon.warning,.monaco-editor .zone-widget .codicon.codicon-warning,.preferences-editor .codicon.codicon-warning,.text-search-provider-messages .providerMessage .codicon.codicon-warning{color:var(--vscode-problemsWarningIcon-foreground)}.extension-editor .codicon.codicon-info,.extensions-viewlet>.extensions .codicon.codicon-info,.markers-panel .marker-icon .codicon.codicon-info,.markers-panel .marker-icon.info,.monaco-editor .zone-widget .codicon.codicon-info,.preferences-editor .codicon.codicon-info,.text-search-provider-messages .providerMessage .codicon.codicon-info{color:var(--vscode-problemsInfoIcon-foreground)}arcgis-code-editor{display:flex;width:100%;height:100%;flex-direction:column;direction:ltr}arcgis-code-editor .monaco-editor{flex:1 1 auto}arcgis-code-editor .monaco-editor .monaco-hover,arcgis-code-editor .monaco-editor .editor-widget,arcgis-code-editor .monaco-editor .suggest-details-container{z-index:9999}";
|
|
5687
|
+
const ArcgisCodeEditorStyle0 = codeEditorCss;
|
|
4321
5688
|
|
|
4322
5689
|
// Our default options for the Editor
|
|
4323
5690
|
const EditorOptionsDefaults = {
|
|
@@ -4328,74 +5695,74 @@ const EditorOptionsDefaults = {
|
|
|
4328
5695
|
renderLineHighlight: "none",
|
|
4329
5696
|
suggest: {
|
|
4330
5697
|
snippetsPreventQuickSuggestions: false,
|
|
4331
|
-
showWords: false
|
|
5698
|
+
showWords: false,
|
|
4332
5699
|
},
|
|
4333
5700
|
tabSize: 2,
|
|
4334
|
-
useShadowDOM: true
|
|
5701
|
+
useShadowDOM: true,
|
|
4335
5702
|
};
|
|
4336
5703
|
const ArcgisCodeEditor = class {
|
|
4337
5704
|
constructor(hostRef) {
|
|
4338
5705
|
registerInstance(this, hostRef);
|
|
4339
|
-
this.
|
|
4340
|
-
this.
|
|
5706
|
+
this.arcgisValueChange = createEvent(this, "arcgisValueChange", 3);
|
|
5707
|
+
this.arcgisSelectionChange = createEvent(this, "arcgisSelectionChange", 3);
|
|
5708
|
+
this.manager = useControllerManager(this);
|
|
5709
|
+
this._componentReadyDefer = new Deferred();
|
|
4341
5710
|
this._disposables = [];
|
|
4342
|
-
this.value =
|
|
5711
|
+
this.value = this.manager.getSet("", {
|
|
5712
|
+
set: (newValue) => {
|
|
5713
|
+
newValue ?? (newValue = "");
|
|
5714
|
+
if (!this._editorInstance) {
|
|
5715
|
+
return newValue;
|
|
5716
|
+
}
|
|
5717
|
+
const model = this._editorInstance.getModel();
|
|
5718
|
+
if (!model) {
|
|
5719
|
+
return newValue;
|
|
5720
|
+
}
|
|
5721
|
+
if (model.getValue() === newValue) {
|
|
5722
|
+
return newValue;
|
|
5723
|
+
}
|
|
5724
|
+
// Set the value and preserve the undo stack
|
|
5725
|
+
const range = model.getFullModelRange();
|
|
5726
|
+
this._editorInstance.executeEdits("", [{ range, text: newValue, forceMoveMarkers: true }]);
|
|
5727
|
+
this._editorInstance.pushUndoStop();
|
|
5728
|
+
return newValue;
|
|
5729
|
+
},
|
|
5730
|
+
});
|
|
4343
5731
|
this.language = undefined;
|
|
4344
|
-
this.modelId =
|
|
5732
|
+
this.modelId = generateGuid();
|
|
4345
5733
|
this.options = undefined;
|
|
4346
|
-
|
|
4347
|
-
|
|
4348
|
-
|
|
4349
|
-
|
|
4350
|
-
}
|
|
4351
|
-
this._editorInstance.setValue(newValue ?? "");
|
|
5734
|
+
this.editorInstance = this.manager.getSet(undefined, {
|
|
5735
|
+
get: () => this._editorInstance,
|
|
5736
|
+
set: (_value, prevValue) => prevValue,
|
|
5737
|
+
});
|
|
4352
5738
|
}
|
|
4353
5739
|
languagePropChange() {
|
|
4354
|
-
if (!this._editorInstance) {
|
|
4355
|
-
return;
|
|
4356
|
-
}
|
|
4357
5740
|
this.updateModel();
|
|
4358
5741
|
}
|
|
4359
5742
|
modelIdPropChange() {
|
|
4360
|
-
if (!this._editorInstance) {
|
|
4361
|
-
return;
|
|
4362
|
-
}
|
|
4363
5743
|
this.updateModel();
|
|
4364
5744
|
}
|
|
4365
5745
|
optionsPropChange(newValue) {
|
|
4366
|
-
if (!
|
|
5746
|
+
if (!newValue) {
|
|
4367
5747
|
return;
|
|
4368
5748
|
}
|
|
4369
|
-
this._editorInstance
|
|
5749
|
+
this._editorInstance?.updateOptions(newValue);
|
|
4370
5750
|
}
|
|
4371
5751
|
//#endregion
|
|
4372
5752
|
// #region Public methods API
|
|
4373
5753
|
/**
|
|
4374
|
-
*
|
|
4375
|
-
* @returns {Promise<string>}
|
|
5754
|
+
* @deprecated Use `value` property instead.
|
|
4376
5755
|
*/
|
|
4377
5756
|
async getValue() {
|
|
4378
5757
|
await this._componentReadyDefer.promise;
|
|
4379
|
-
return this.
|
|
5758
|
+
return this.value;
|
|
4380
5759
|
}
|
|
4381
5760
|
/**
|
|
4382
|
-
*
|
|
4383
|
-
* on the model to preserve undo/redo stack.
|
|
4384
|
-
* @param text
|
|
4385
|
-
* @returns {Promise<void>}
|
|
5761
|
+
* @deprecated Use `value` property instead.
|
|
4386
5762
|
*/
|
|
4387
5763
|
async setValue(text) {
|
|
4388
5764
|
await this._componentReadyDefer.promise;
|
|
4389
|
-
|
|
4390
|
-
return;
|
|
4391
|
-
}
|
|
4392
|
-
const model = this._editorInstance.getModel();
|
|
4393
|
-
if (!model) {
|
|
4394
|
-
return;
|
|
4395
|
-
}
|
|
4396
|
-
const range = model.getFullModelRange();
|
|
4397
|
-
this._editorInstance.executeEdits("", [{ range, text: text ?? "", forceMoveMarkers: true }]);
|
|
4398
|
-
this._editorInstance.pushUndoStop();
|
|
5765
|
+
this.value = text ?? "";
|
|
4399
5766
|
}
|
|
4400
5767
|
/**
|
|
4401
5768
|
* Inserts a text at the current position in the editor.
|
|
@@ -4430,8 +5797,7 @@ const ArcgisCodeEditor = class {
|
|
|
4430
5797
|
}
|
|
4431
5798
|
/**
|
|
4432
5799
|
* @internal
|
|
4433
|
-
*
|
|
4434
|
-
* @returns {Promise<IStandaloneCodeEditor>} - The monaco editor instance
|
|
5800
|
+
* @deprecated Use `editorInstance` property instead.
|
|
4435
5801
|
*/
|
|
4436
5802
|
async getEditorInstance() {
|
|
4437
5803
|
await this._componentReadyDefer.promise;
|
|
@@ -4462,33 +5828,33 @@ const ArcgisCodeEditor = class {
|
|
|
4462
5828
|
// Create the model without the value.
|
|
4463
5829
|
// Since it's not yet attached to the editor the diagnostic service will not process it.
|
|
4464
5830
|
// We will set the value after the editor has been created to trigger the diagnostic again.
|
|
4465
|
-
const model = editor.createModel(
|
|
5831
|
+
const model = editor.createModel(this.value, this.language, this.getUri());
|
|
4466
5832
|
// Create the editor for the host element.
|
|
4467
5833
|
// This will not trigger a diagnostic.
|
|
4468
|
-
this._editorInstance = editor.create(this.
|
|
5834
|
+
this._editorInstance = editor.create(this.el, {
|
|
4469
5835
|
...(this.options ?? {}),
|
|
4470
5836
|
model,
|
|
4471
5837
|
fixedOverflowWidgets: true,
|
|
4472
|
-
scrollBeyondLastLine: false
|
|
5838
|
+
scrollBeyondLastLine: false,
|
|
4473
5839
|
});
|
|
4474
5840
|
this._disposables.push(this._editorInstance);
|
|
4475
|
-
//
|
|
4476
|
-
model.setValue(this.value ?? "");
|
|
4477
|
-
// Now we can set are component as ready
|
|
5841
|
+
// Now we indicate that the component is ready
|
|
4478
5842
|
this._componentReadyDefer.resolve();
|
|
4479
5843
|
this._editorInstance.updateOptions(EditorOptionsDefaults);
|
|
4480
|
-
// Listen to the Monaco Editor content change event and propagate
|
|
4481
5844
|
this._editorInstance.onDidChangeModelContent(() => {
|
|
4482
|
-
|
|
4483
|
-
this.
|
|
5845
|
+
this.value = this._editorInstance?.getValue() ?? "";
|
|
5846
|
+
this.arcgisValueChange.emit(this.value);
|
|
5847
|
+
});
|
|
5848
|
+
this._editorInstance.onDidChangeCursorSelection((e) => {
|
|
5849
|
+
this.arcgisSelectionChange.emit({ selection: e.selection, model: this._editorInstance?.getModel() });
|
|
4484
5850
|
});
|
|
4485
5851
|
// Detect if the host element or its ancestors got a theme attribute mutation
|
|
4486
|
-
this._themeObserver =
|
|
5852
|
+
this._themeObserver = observeAncestorsMutation(this.el, ["class"], () => this.updateTheme());
|
|
4487
5853
|
// Update the theme of the Monaco Editor
|
|
4488
5854
|
this.updateTheme();
|
|
4489
5855
|
// Creates a resize observer to re-layout the editor on size changing
|
|
4490
5856
|
const resizeObserver = new ResizeObserver(() => this._editorInstance?.layout());
|
|
4491
|
-
resizeObserver.observe(this.
|
|
5857
|
+
resizeObserver.observe(this.el);
|
|
4492
5858
|
// Add common actions to the Monaco Editor's context menu and command palette
|
|
4493
5859
|
this.addCommonEditorActions();
|
|
4494
5860
|
}
|
|
@@ -4496,7 +5862,14 @@ const ArcgisCodeEditor = class {
|
|
|
4496
5862
|
while (this._disposables.length) {
|
|
4497
5863
|
this._disposables.pop()?.dispose();
|
|
4498
5864
|
}
|
|
4499
|
-
this._themeObserver?.
|
|
5865
|
+
this._themeObserver?.remove();
|
|
5866
|
+
}
|
|
5867
|
+
componentShouldUpdate(_newVal, _oldVal, propName) {
|
|
5868
|
+
if (propName === "value" || propName === "language" || propName === "modelId" || propName === "options") {
|
|
5869
|
+
// These are properties that we directly pass to the editor
|
|
5870
|
+
return false;
|
|
5871
|
+
}
|
|
5872
|
+
return true;
|
|
4500
5873
|
}
|
|
4501
5874
|
//#endregion
|
|
4502
5875
|
// #region Private methods API
|
|
@@ -4505,7 +5878,7 @@ const ArcgisCodeEditor = class {
|
|
|
4505
5878
|
return;
|
|
4506
5879
|
}
|
|
4507
5880
|
this._editorInstance.getModel()?.dispose();
|
|
4508
|
-
this._editorInstance.setModel(editor.createModel(this.value
|
|
5881
|
+
this._editorInstance.setModel(editor.createModel(this.value, this.language, this.getUri()));
|
|
4509
5882
|
}
|
|
4510
5883
|
getUri() {
|
|
4511
5884
|
return this.modelId ? Uri.parse(this.modelId) : Uri.parse("");
|
|
@@ -4514,7 +5887,7 @@ const ArcgisCodeEditor = class {
|
|
|
4514
5887
|
// This is called the first time and subsequently by the Mutation Observer
|
|
4515
5888
|
// Figure out the theme by walking the ancestor path.
|
|
4516
5889
|
// If no theme is found then default to light.
|
|
4517
|
-
const theme =
|
|
5890
|
+
const theme = getElementTheme(this.el) === "light" ? "vs" : "vs-dark";
|
|
4518
5891
|
if (theme === this._currentTheme) {
|
|
4519
5892
|
return;
|
|
4520
5893
|
}
|
|
@@ -4539,7 +5912,7 @@ const ArcgisCodeEditor = class {
|
|
|
4539
5912
|
contextMenuOrder: 1,
|
|
4540
5913
|
// Method that will be executed when the action is triggered.
|
|
4541
5914
|
// @param editor The editor instance is passed in as a convenience
|
|
4542
|
-
run: async () => await zoomInFn?.run()
|
|
5915
|
+
run: async () => await zoomInFn?.run(),
|
|
4543
5916
|
});
|
|
4544
5917
|
this._editorInstance?.addAction({
|
|
4545
5918
|
id: "editor.action.fontZoomOut",
|
|
@@ -4547,23 +5920,22 @@ const ArcgisCodeEditor = class {
|
|
|
4547
5920
|
keybindings: [KeyMod.CtrlCmd | KeyCode.Minus],
|
|
4548
5921
|
contextMenuGroupId: "zooming",
|
|
4549
5922
|
contextMenuOrder: 2,
|
|
4550
|
-
run: async () => await zoomOutFn?.run()
|
|
5923
|
+
run: async () => await zoomOutFn?.run(),
|
|
4551
5924
|
});
|
|
4552
5925
|
}
|
|
4553
5926
|
//#endregion
|
|
4554
5927
|
// #region Rendering
|
|
4555
5928
|
render() {
|
|
4556
|
-
return h(Host,
|
|
5929
|
+
return h(Host, { key: 'c7d7321e356b9c4d4d11f179cf0b2b90fe2e8a16' });
|
|
4557
5930
|
}
|
|
4558
5931
|
static get assetsDirs() { return ["assets"]; }
|
|
4559
|
-
get
|
|
5932
|
+
get el() { return getElement(this); }
|
|
4560
5933
|
static get watchers() { return {
|
|
4561
|
-
"value": ["valuePropChange"],
|
|
4562
5934
|
"language": ["languagePropChange"],
|
|
4563
5935
|
"modelId": ["modelIdPropChange"],
|
|
4564
5936
|
"options": ["optionsPropChange"]
|
|
4565
5937
|
}; }
|
|
4566
5938
|
};
|
|
4567
|
-
ArcgisCodeEditor.style =
|
|
5939
|
+
ArcgisCodeEditor.style = ArcgisCodeEditorStyle0;
|
|
4568
5940
|
|
|
4569
5941
|
export { ArcgisArcadeApi as arcgis_arcade_api, ArcgisArcadeEditor as arcgis_arcade_editor, ArcgisArcadeResults as arcgis_arcade_results, ArcgisArcadeSuggestions as arcgis_arcade_suggestions, ArcgisArcadeVariables as arcgis_arcade_variables, ArcgisCodeEditor as arcgis_code_editor };
|