@hgdc/docs 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/bin/hgdc-docs.mjs +48 -0
  2. package/docs.schema.json +294 -0
  3. package/package.json +50 -4
  4. package/src/build/auto-import.ts +74 -0
  5. package/src/build/markdown.ts +114 -0
  6. package/src/build/outputs.ts +91 -0
  7. package/src/build/public-files.test.ts +29 -0
  8. package/src/build/public-files.ts +35 -0
  9. package/src/components/Accordion.astro +12 -0
  10. package/src/components/AccordionGroup.astro +4 -0
  11. package/src/components/Card.astro +15 -0
  12. package/src/components/CardGroup.astro +8 -0
  13. package/src/components/Check.astro +10 -0
  14. package/src/components/CodeGroup.astro +4 -0
  15. package/src/components/Columns.astro +8 -0
  16. package/src/components/Danger.astro +10 -0
  17. package/src/components/Frame.astro +11 -0
  18. package/src/components/Info.astro +10 -0
  19. package/src/components/Note.astro +10 -0
  20. package/src/components/Step.astro +11 -0
  21. package/src/components/Steps.astro +4 -0
  22. package/src/components/Tab.astro +9 -0
  23. package/src/components/Tabs.astro +9 -0
  24. package/src/components/Tip.astro +10 -0
  25. package/src/components/Warning.astro +10 -0
  26. package/src/core/answer-markdown.ts +109 -0
  27. package/src/core/assistant-api.ts +65 -0
  28. package/src/core/chunk.ts +134 -0
  29. package/src/core/config.ts +153 -0
  30. package/src/core/core.test.ts +253 -0
  31. package/src/core/corpus.ts +42 -0
  32. package/src/core/json-schema.ts +12 -0
  33. package/src/core/llms.ts +95 -0
  34. package/src/core/navigation.ts +88 -0
  35. package/src/core/theme.ts +111 -0
  36. package/src/integration.ts +229 -0
  37. package/src/locals.d.ts +6 -0
  38. package/src/overrides/Assistant.astro +72 -0
  39. package/src/overrides/Head.astro +12 -0
  40. package/src/overrides/PageFrame.astro +15 -0
  41. package/src/overrides/PageTitle.astro +94 -0
  42. package/src/overrides/Sidebar.astro +60 -0
  43. package/src/overrides/route-data.ts +33 -0
  44. package/src/styles/theme.css +773 -0
  45. package/src/virtual.d.ts +6 -0
  46. package/src/widget/client.ts +252 -0
  47. package/template/.astro/collections/docs.schema.json +651 -0
  48. package/template/.astro/content-assets.mjs +1 -0
  49. package/template/.astro/content-modules.mjs +18 -0
  50. package/template/.astro/content.d.ts +179 -0
  51. package/template/.astro/types.d.ts +2 -0
  52. package/template/.build/.well-known/llms.txt +38 -0
  53. package/template/.build/404.html +42 -0
  54. package/template/.build/_astro/Assistant.astro_astro_type_script_index_0_lang.DWgmlr85.js +4 -0
  55. package/template/.build/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.C3fM4Kra.js +1 -0
  56. package/template/.build/_astro/Search.astro_astro_type_script_index_0_lang.g9hoxVJg.js +1 -0
  57. package/template/.build/_astro/TableOfContents.astro_astro_type_script_index_0_lang.BpJaGz7G.js +1 -0
  58. package/template/.build/_astro/common.8GHCkW7i.css +3 -0
  59. package/template/.build/_astro/ec.0vx5m.js +3 -0
  60. package/template/.build/_astro/ec.8nqtp.css +1 -0
  61. package/template/.build/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2 +0 -0
  62. package/template/.build/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2 +0 -0
  63. package/template/.build/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2 +0 -0
  64. package/template/.build/_astro/geist-latin-wght-normal.BgDaEnEv.woff2 +0 -0
  65. package/template/.build/_astro/geist-vietnamese-wght-normal.6IgcOCM7.woff2 +0 -0
  66. package/template/.build/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2 +0 -0
  67. package/template/.build/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2 +0 -0
  68. package/template/.build/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2 +0 -0
  69. package/template/.build/_astro/inter-greek-wght-normal.CkhJZR-_.woff2 +0 -0
  70. package/template/.build/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2 +0 -0
  71. package/template/.build/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2 +0 -0
  72. package/template/.build/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2 +0 -0
  73. package/template/.build/_astro/logo-clair.BqNh6JNi.svg +1 -0
  74. package/template/.build/_astro/logo-sombre.BkgsFXxh.svg +1 -0
  75. package/template/.build/_astro/page.cNngjUgL.js +1 -0
  76. package/template/.build/_astro/print.ehPL0gv-.css +1 -0
  77. package/template/.build/_astro/starlight-toc.D4UDIxQL.js +1 -0
  78. package/template/.build/_astro/ui-core.Clh5jUUO.js +2 -0
  79. package/template/.build/_hgdc/corpus.json +1 -0
  80. package/template/.build/demarrer/premiere-doc/index.html +84 -0
  81. package/template/.build/demarrer/premiere-doc.md +65 -0
  82. package/template/.build/explications/donnees/index.html +114 -0
  83. package/template/.build/explications/donnees.md +28 -0
  84. package/template/.build/explications/fonctionnement/index.html +92 -0
  85. package/template/.build/explications/fonctionnement.md +32 -0
  86. package/template/.build/guides/agents/index.html +113 -0
  87. package/template/.build/guides/agents.md +40 -0
  88. package/template/.build/guides/assistant/index.html +117 -0
  89. package/template/.build/guides/assistant.md +42 -0
  90. package/template/.build/guides/composants/index.html +97 -0
  91. package/template/.build/guides/composants.md +103 -0
  92. package/template/.build/guides/ecrire/index.html +115 -0
  93. package/template/.build/guides/ecrire.md +63 -0
  94. package/template/.build/guides/navigation/index.html +89 -0
  95. package/template/.build/guides/navigation.md +63 -0
  96. package/template/.build/guides/publier/index.html +86 -0
  97. package/template/.build/guides/publier.md +65 -0
  98. package/template/.build/guides/theme/index.html +86 -0
  99. package/template/.build/guides/theme.md +33 -0
  100. package/template/.build/images/favicon.svg +1 -0
  101. package/template/.build/images/logo-clair.svg +1 -0
  102. package/template/.build/images/logo-sombre.svg +1 -0
  103. package/template/.build/index.html +87 -0
  104. package/template/.build/index.md +35 -0
  105. package/template/.build/llms-full.txt +830 -0
  106. package/template/.build/llms.txt +38 -0
  107. package/template/.build/pagefind/fragment/fr-ch_148313b.pf_fragment +0 -0
  108. package/template/.build/pagefind/fragment/fr-ch_424fd16.pf_fragment +0 -0
  109. package/template/.build/pagefind/fragment/fr-ch_4f8575c.pf_fragment +0 -0
  110. package/template/.build/pagefind/fragment/fr-ch_5a4d77d.pf_fragment +0 -0
  111. package/template/.build/pagefind/fragment/fr-ch_6c36edc.pf_fragment +0 -0
  112. package/template/.build/pagefind/fragment/fr-ch_73d7887.pf_fragment +0 -0
  113. package/template/.build/pagefind/fragment/fr-ch_8234ed3.pf_fragment +0 -0
  114. package/template/.build/pagefind/fragment/fr-ch_8f8a19e.pf_fragment +0 -0
  115. package/template/.build/pagefind/fragment/fr-ch_9f1b981.pf_fragment +0 -0
  116. package/template/.build/pagefind/fragment/fr-ch_a19039d.pf_fragment +0 -0
  117. package/template/.build/pagefind/fragment/fr-ch_d72cc1e.pf_fragment +0 -0
  118. package/template/.build/pagefind/fragment/fr-ch_d732215.pf_fragment +0 -0
  119. package/template/.build/pagefind/fragment/fr-ch_e2c46e3.pf_fragment +0 -0
  120. package/template/.build/pagefind/fragment/fr-ch_e78d58b.pf_fragment +0 -0
  121. package/template/.build/pagefind/fragment/fr-ch_e92f972.pf_fragment +0 -0
  122. package/template/.build/pagefind/index/fr-ch_f94c95d.pf_index +0 -0
  123. package/template/.build/pagefind/pagefind-component-ui.css +1509 -0
  124. package/template/.build/pagefind/pagefind-component-ui.js +56 -0
  125. package/template/.build/pagefind/pagefind-entry.json +1 -0
  126. package/template/.build/pagefind/pagefind-highlight.js +1070 -0
  127. package/template/.build/pagefind/pagefind-modular-ui.css +214 -0
  128. package/template/.build/pagefind/pagefind-modular-ui.js +8 -0
  129. package/template/.build/pagefind/pagefind-ui.css +1 -0
  130. package/template/.build/pagefind/pagefind-ui.js +2 -0
  131. package/template/.build/pagefind/pagefind-worker.js +6 -0
  132. package/template/.build/pagefind/pagefind.fr-ch_fb78ab42961f4.pf_meta +0 -0
  133. package/template/.build/pagefind/pagefind.js +6 -0
  134. package/template/.build/pagefind/wasm.fr-ch.pagefind +0 -0
  135. package/template/.build/pagefind/wasm.unknown.pagefind +0 -0
  136. package/template/.build/reference/api-assistant/index.html +161 -0
  137. package/template/.build/reference/api-assistant.md +60 -0
  138. package/template/.build/reference/cli/index.html +153 -0
  139. package/template/.build/reference/cli.md +31 -0
  140. package/template/.build/reference/docs-json/index.html +192 -0
  141. package/template/.build/reference/docs-json.md +43 -0
  142. package/template/.build/reference/mcp/index.html +151 -0
  143. package/template/.build/reference/mcp.md +49 -0
  144. package/template/astro.config.ts +6 -0
  145. package/template/node_modules/.vite/deps/_metadata.json +74 -0
  146. package/template/node_modules/.vite/deps/astro-B3JHJyiv.js +434 -0
  147. package/template/node_modules/.vite/deps/astro-B3JHJyiv.js.map +1 -0
  148. package/template/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
  149. package/template/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
  150. package/template/node_modules/.vite/deps/astro_n_axobject-query.js +2705 -0
  151. package/template/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
  152. package/template/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
  153. package/template/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
  154. package/template/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
  155. package/template/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
  156. package/template/node_modules/.vite/deps/audit-Do8QH17W.js +1543 -0
  157. package/template/node_modules/.vite/deps/audit-Do8QH17W.js.map +1 -0
  158. package/template/node_modules/.vite/deps/highlight-BLtvqtzO.js +48 -0
  159. package/template/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +1 -0
  160. package/template/node_modules/.vite/deps/icons-C92i61-2.js +42 -0
  161. package/template/node_modules/.vite/deps/icons-C92i61-2.js.map +1 -0
  162. package/template/node_modules/.vite/deps/package.json +3 -0
  163. package/template/node_modules/.vite/deps/rolldown-runtime-C3I60J0A.js +4 -0
  164. package/template/node_modules/.vite/deps/settings-BYmTKrLi.js +189 -0
  165. package/template/node_modules/.vite/deps/settings-BYmTKrLi.js.map +1 -0
  166. package/template/node_modules/.vite/deps/toolbar-CEKhukuK.js +461 -0
  167. package/template/node_modules/.vite/deps/toolbar-CEKhukuK.js.map +1 -0
  168. package/template/node_modules/.vite/deps/ui-library-BO4--ANp.js +1015 -0
  169. package/template/node_modules/.vite/deps/ui-library-BO4--ANp.js.map +1 -0
  170. package/template/node_modules/.vite/deps/window-vo3A6TMn.js +32 -0
  171. package/template/node_modules/.vite/deps/window-vo3A6TMn.js.map +1 -0
  172. package/template/node_modules/.vite/deps/xray-Lf9x6g8P.js +112 -0
  173. package/template/node_modules/.vite/deps/xray-Lf9x6g8P.js.map +1 -0
  174. package/template/src/content.config.ts +21 -0
  175. package/README.md +0 -3
@@ -0,0 +1,455 @@
1
+ import { loadDevToolbarApps } from "astro:toolbar:internal";
2
+ //#region ../../../node_modules/astro/dist/runtime/client/dev-toolbar/helpers.js
3
+ var ToolbarAppEventTarget = class extends EventTarget {
4
+ constructor() {
5
+ super();
6
+ }
7
+ /**
8
+ * Toggle the notification state of the toolbar
9
+ * @param options - The notification options
10
+ * @param options.state - The state of the notification
11
+ * @param options.level - The level of the notification, optional when state is false
12
+ */
13
+ toggleNotification(options) {
14
+ this.dispatchEvent(new CustomEvent("toggle-notification", { detail: {
15
+ state: options.state,
16
+ level: options.state === true ? options.level : void 0
17
+ } }));
18
+ }
19
+ /**
20
+ * Toggle the app state on or off
21
+ * @param options - The app state options
22
+ * @param options.state - The new state of the app
23
+ */
24
+ toggleState(options) {
25
+ this.dispatchEvent(new CustomEvent("toggle-app", { detail: { state: options.state } }));
26
+ }
27
+ /**
28
+ * Fired when the app is toggled on or off
29
+ * @param callback - The callback to run when the event is fired, takes an object with the new state
30
+ */
31
+ onToggled(callback) {
32
+ this.addEventListener("app-toggled", (evt) => {
33
+ if (!(evt instanceof CustomEvent)) return;
34
+ callback(evt.detail);
35
+ });
36
+ }
37
+ /**
38
+ * Fired when the toolbar placement is updated by the user
39
+ * @param callback - The callback to run when the event is fired, takes an object with the new placement
40
+ */
41
+ onToolbarPlacementUpdated(callback) {
42
+ this.addEventListener("placement-updated", (evt) => {
43
+ if (!(evt instanceof CustomEvent)) return;
44
+ callback(evt.detail);
45
+ });
46
+ }
47
+ };
48
+ var serverHelpers = {
49
+ /**
50
+ * Send a message to the server, the payload can be any serializable data.
51
+ *
52
+ * The server can listen for this message in the `astro:server:config` hook of an Astro integration, using the `toolbar.on` method.
53
+ *
54
+ * @param event - The event name
55
+ * @param payload - The payload to send
56
+ */
57
+ send: (event, payload) => {
58
+ if (import.meta.hot) import.meta.hot.send(event, payload);
59
+ },
60
+ /**
61
+ * Receive a message from the server.
62
+ * @param event - The event name
63
+ * @param callback - The callback to run when the event is received.
64
+ * The payload's content will be passed to the callback as an argument
65
+ */
66
+ on: (event, callback) => {
67
+ if (import.meta.hot) import.meta.hot.on(event, callback);
68
+ }
69
+ };
70
+ //#endregion
71
+ //#region ../../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/window.js
72
+ var placements = [
73
+ "bottom-left",
74
+ "bottom-center",
75
+ "bottom-right"
76
+ ];
77
+ function isValidPlacement(value) {
78
+ return placements.map(String).includes(value);
79
+ }
80
+ var DevToolbarWindow = class extends HTMLElement {
81
+ shadowRoot;
82
+ _placement = defaultSettings.placement;
83
+ get placement() {
84
+ return this._placement;
85
+ }
86
+ set placement(value) {
87
+ if (!isValidPlacement(value)) {
88
+ settings.logger.error(`Invalid placement: ${value}, expected one of ${placements.join(", ")}, got ${value}.`);
89
+ return;
90
+ }
91
+ this._placement = value;
92
+ this.updateStyle();
93
+ }
94
+ static observedAttributes = ["placement"];
95
+ constructor() {
96
+ super();
97
+ this.shadowRoot = this.attachShadow({ mode: "open" });
98
+ }
99
+ async connectedCallback() {
100
+ this.shadowRoot.innerHTML = `
101
+ <style>
102
+ :host {
103
+ box-sizing: border-box;
104
+ display: flex;
105
+ flex-direction: column;
106
+ background: linear-gradient(0deg, #13151A, #13151A), linear-gradient(0deg, #343841, #343841);
107
+ border: 1px solid rgba(52, 56, 65, 1);
108
+ width: min(640px, 100%);
109
+ max-height: 480px;
110
+ border-radius: 12px;
111
+ padding: 24px;
112
+ font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
113
+ color: rgba(191, 193, 201, 1);
114
+ position: fixed;
115
+ z-index: 999999999;
116
+ bottom: 72px;
117
+ box-shadow: 0px 0px 0px 0px rgba(19, 21, 26, 0.30), 0px 1px 2px 0px rgba(19, 21, 26, 0.29), 0px 4px 4px 0px rgba(19, 21, 26, 0.26), 0px 10px 6px 0px rgba(19, 21, 26, 0.15), 0px 17px 7px 0px rgba(19, 21, 26, 0.04), 0px 26px 7px 0px rgba(19, 21, 26, 0.01);
118
+ }
119
+
120
+ @media (forced-colors: active) {
121
+ :host {
122
+ background: white;
123
+ }
124
+ }
125
+
126
+ @media (max-width: 640px) {
127
+ :host {
128
+ border-radius: 0;
129
+ }
130
+ }
131
+
132
+ ::slotted(h1), ::slotted(h2), ::slotted(h3), ::slotted(h4), ::slotted(h5) {
133
+ font-weight: 600;
134
+ color: #fff;
135
+ }
136
+
137
+ ::slotted(h1) {
138
+ font-size: 22px;
139
+ }
140
+
141
+ ::slotted(h2) {
142
+ font-size: 20px;
143
+ }
144
+
145
+ ::slotted(h3) {
146
+ font-size: 18px;
147
+ }
148
+
149
+ ::slotted(h4) {
150
+ font-size: 16px;
151
+ }
152
+
153
+ ::slotted(h5) {
154
+ font-size: 14px;
155
+ }
156
+
157
+ hr, ::slotted(hr) {
158
+ border: 1px solid rgba(27, 30, 36, 1);
159
+ margin: 1em 0;
160
+ }
161
+
162
+ p, ::slotted(p) {
163
+ line-height: 1.5em;
164
+ }
165
+ </style>
166
+ <style id="selected-style"></style>
167
+
168
+ <slot />
169
+ `;
170
+ this.updateStyle();
171
+ }
172
+ attributeChangedCallback() {
173
+ if (this.hasAttribute("placement")) this.placement = this.getAttribute("placement");
174
+ }
175
+ updateStyle() {
176
+ const style = this.shadowRoot.querySelector("#selected-style");
177
+ if (style) style.innerHTML = {
178
+ "bottom-left": `
179
+ :host {
180
+ left: 16px;
181
+ }
182
+ `,
183
+ "bottom-center": `
184
+ :host {
185
+ left: 50%;
186
+ transform: translateX(-50%);
187
+ }
188
+ `,
189
+ "bottom-right": `
190
+ :host {
191
+ right: 16px;
192
+ }
193
+ `
194
+ }[this.placement];
195
+ }
196
+ };
197
+ //#endregion
198
+ //#region ../../../node_modules/astro/dist/runtime/client/dev-toolbar/settings.js
199
+ var defaultSettings = {
200
+ disableAppNotification: false,
201
+ verbose: false,
202
+ placement: "bottom-center"
203
+ };
204
+ var settings = getSettings();
205
+ function getSettings() {
206
+ let _settings = { ...defaultSettings };
207
+ const configPlacement = globalThis.__astro_dev_toolbar__?.placement;
208
+ if (configPlacement && isValidPlacement(configPlacement)) _settings.placement = configPlacement;
209
+ const toolbarSettings = localStorage.getItem("astro:dev-toolbar:settings");
210
+ if (toolbarSettings) _settings = {
211
+ ..._settings,
212
+ ...JSON.parse(toolbarSettings)
213
+ };
214
+ function updateSetting(key, value) {
215
+ _settings[key] = value;
216
+ localStorage.setItem("astro:dev-toolbar:settings", JSON.stringify(_settings));
217
+ }
218
+ function log(message, level = "log") {
219
+ console[level](`%cAstro`, "background: linear-gradient(66.77deg, #D83333 0%, #F041FF 100%); color: white; padding-inline: 4px; border-radius: 2px; font-family: monospace;", message);
220
+ }
221
+ return {
222
+ get config() {
223
+ return _settings;
224
+ },
225
+ updateSetting,
226
+ logger: {
227
+ log,
228
+ warn: (message) => {
229
+ log(message, "warn");
230
+ },
231
+ error: (message) => {
232
+ log(message, "error");
233
+ },
234
+ verboseLog: (message) => {
235
+ if (_settings.verbose) log(message);
236
+ }
237
+ }
238
+ };
239
+ }
240
+ //#endregion
241
+ //#region ../../../node_modules/astro/dist/runtime/client/dev-toolbar/entrypoint.js
242
+ var overlay;
243
+ document.addEventListener("DOMContentLoaded", async () => {
244
+ const [customAppsDefinitions, { default: astroDevToolApp }, { default: astroAuditApp }, { default: astroXrayApp }, { default: astroSettingsApp }, { AstroDevToolbar, DevToolbarCanvas, getAppIcon }, { DevToolbarCard, DevToolbarHighlight, DevToolbarTooltip, DevToolbarWindow, DevToolbarToggle, DevToolbarButton, DevToolbarBadge, DevToolbarIcon, DevToolbarSelect, DevToolbarRadioCheckbox }] = await Promise.all([
245
+ loadDevToolbarApps(),
246
+ import("./astro-B3JHJyiv.js"),
247
+ import("./audit-Do8QH17W.js"),
248
+ import("./xray-Lf9x6g8P.js"),
249
+ import("./settings-BYmTKrLi.js"),
250
+ import("./toolbar-CEKhukuK.js"),
251
+ import("./ui-library-BO4--ANp.js")
252
+ ]);
253
+ customElements.define("astro-dev-toolbar", AstroDevToolbar);
254
+ customElements.define("astro-dev-toolbar-window", DevToolbarWindow);
255
+ customElements.define("astro-dev-toolbar-app-canvas", DevToolbarCanvas);
256
+ customElements.define("astro-dev-toolbar-tooltip", DevToolbarTooltip);
257
+ customElements.define("astro-dev-toolbar-highlight", DevToolbarHighlight);
258
+ customElements.define("astro-dev-toolbar-card", DevToolbarCard);
259
+ customElements.define("astro-dev-toolbar-toggle", DevToolbarToggle);
260
+ customElements.define("astro-dev-toolbar-button", DevToolbarButton);
261
+ customElements.define("astro-dev-toolbar-badge", DevToolbarBadge);
262
+ customElements.define("astro-dev-toolbar-icon", DevToolbarIcon);
263
+ customElements.define("astro-dev-toolbar-select", DevToolbarSelect);
264
+ customElements.define("astro-dev-toolbar-radio-checkbox", DevToolbarRadioCheckbox);
265
+ overlay = document.createElement("astro-dev-toolbar");
266
+ const notificationLevels = [
267
+ "error",
268
+ "warning",
269
+ "info"
270
+ ];
271
+ const notificationSVGs = {
272
+ error: "<svg viewBox=\"0 0 10 10\" style=\"--fill:var(--fill-default);--fill-default:#B33E66;--fill-hover:#E3AFC1;\"><rect width=\"9\" height=\"9\" x=\".5\" y=\".5\" fill=\"var(--fill)\" stroke=\"#13151A\" stroke-width=\"2\" rx=\"4.5\"/></svg>",
273
+ warning: "<svg width=\"12\" height=\"10\" fill=\"none\" style=\"--fill:var(--fill-default);--fill-default:#B58A2D;--fill-hover:#D5B776;\"><path fill=\"var(--fill)\" stroke=\"#13151A\" stroke-width=\"2\" d=\"M7.29904 1.25c-.57735-1-2.02073-1-2.59808 0l-3.4641 6C.65951 8.25 1.3812 9.5 2.5359 9.5h6.9282c1.1547 0 1.8764-1.25 1.299-2.25l-3.46406-6Z\"/></svg>",
274
+ info: "<svg viewBox=\"0 0 10 10\" style=\"--fill:var(--fill-default);--fill-default:#3645D9;--fill-hover:#BDC3FF;\"><rect width=\"9\" height=\"9\" x=\".5\" y=\".5\" fill=\"var(--fill)\" stroke=\"#13151A\" stroke-width=\"2\" rx=\"1.5\"/></svg>"
275
+ };
276
+ const prepareApp = (appDefinition, builtIn) => {
277
+ const eventTarget = new ToolbarAppEventTarget();
278
+ const app = {
279
+ ...appDefinition,
280
+ builtIn,
281
+ active: false,
282
+ status: "loading",
283
+ notification: {
284
+ state: false,
285
+ level: void 0
286
+ },
287
+ eventTarget
288
+ };
289
+ eventTarget.addEventListener("toggle-notification", (evt) => {
290
+ if (!(evt instanceof CustomEvent)) return;
291
+ const target = overlay.shadowRoot?.querySelector(`[data-app-id="${app.id}"]`);
292
+ if (!target) return;
293
+ const notificationElement = target.querySelector(".notification");
294
+ if (!notificationElement) return;
295
+ let newState = evt.detail.state ?? true;
296
+ let level = notificationLevels.includes(evt?.detail?.level) ? evt.detail.level : "error";
297
+ app.notification.state = newState;
298
+ if (newState) app.notification.level = level;
299
+ notificationElement.toggleAttribute("data-active", newState);
300
+ if (newState) {
301
+ notificationElement.setAttribute("data-level", level);
302
+ notificationElement.innerHTML = notificationSVGs[level];
303
+ }
304
+ });
305
+ const onToggleApp = async (evt) => {
306
+ let newState = void 0;
307
+ if (evt instanceof CustomEvent) newState = evt.detail.state ?? true;
308
+ await overlay.setAppStatus(app, newState);
309
+ };
310
+ eventTarget.addEventListener("toggle-app", onToggleApp);
311
+ return app;
312
+ };
313
+ const apps = [...[
314
+ astroDevToolApp,
315
+ astroXrayApp,
316
+ astroAuditApp,
317
+ astroSettingsApp,
318
+ {
319
+ id: "astro:more",
320
+ name: "More",
321
+ icon: "dots-three",
322
+ init(canvas, eventTarget) {
323
+ const hiddenApps = apps.filter((p) => !p.builtIn).slice(overlay.customAppsToShow);
324
+ createDropdown();
325
+ document.addEventListener("astro:after-swap", createDropdown);
326
+ function createDropdown() {
327
+ const style = document.createElement("style");
328
+ style.innerHTML = `
329
+ #dropdown {
330
+ background: rgba(19, 21, 26, 1);
331
+ border: 1px solid rgba(52, 56, 65, 1);
332
+ border-radius: 12px;
333
+ box-shadow: 0px 0px 0px 0px rgba(19, 21, 26, 0.30), 0px 1px 2px 0px rgba(19, 21, 26, 0.29), 0px 4px 4px 0px rgba(19, 21, 26, 0.26), 0px 10px 6px 0px rgba(19, 21, 26, 0.15), 0px 17px 7px 0px rgba(19, 21, 26, 0.04), 0px 26px 7px 0px rgba(19, 21, 26, 0.01);
334
+ width: 192px;
335
+ padding: 8px;
336
+ z-index: 2000000010;
337
+ transform: translate(-50%, 0%);
338
+ position: fixed;
339
+ bottom: 72px;
340
+ left: 50%;
341
+ }
342
+
343
+ .notification {
344
+ display: none;
345
+ position: absolute;
346
+ top: -4px;
347
+ right: -5px;
348
+ width: 12px;
349
+ height: 10px;
350
+ }
351
+
352
+ .notification svg {
353
+ display: block;
354
+ }
355
+
356
+ #dropdown:not([data-no-notification]) .notification[data-active] {
357
+ display: block;
358
+ }
359
+
360
+ #dropdown button {
361
+ border: 0;
362
+ background: transparent;
363
+ color: white;
364
+ font-family: system-ui, sans-serif;
365
+ font-size: 14px;
366
+ white-space: nowrap;
367
+ text-decoration: none;
368
+ margin: 0;
369
+ display: flex;
370
+ align-items: center;
371
+ width: 100%;
372
+ padding: 8px;
373
+ border-radius: 8px;
374
+ }
375
+
376
+ #dropdown button:hover, #dropdown button:focus-visible {
377
+ background: #FFFFFF20;
378
+ cursor: pointer;
379
+ }
380
+
381
+ #dropdown button.active {
382
+ background: rgba(71, 78, 94, 1);
383
+ }
384
+
385
+ #dropdown .icon {
386
+ position: relative;
387
+ height: 20px;
388
+ width: 20px;
389
+ padding: 1px;
390
+ margin-right: 0.5em;
391
+ }
392
+
393
+ #dropdown .icon svg {
394
+ max-height: 100%;
395
+ max-width: 100%;
396
+ }
397
+ `;
398
+ canvas.append(style);
399
+ const dropdown = document.createElement("div");
400
+ dropdown.id = "dropdown";
401
+ dropdown.toggleAttribute("data-no-notification", settings.config.disableAppNotification);
402
+ for (const app of hiddenApps) {
403
+ const buttonContainer = document.createElement("div");
404
+ buttonContainer.classList.add("item");
405
+ const button = document.createElement("button");
406
+ button.setAttribute("data-app-id", app.id);
407
+ const iconContainer = document.createElement("div");
408
+ const iconElement = document.createElement("template");
409
+ iconElement.innerHTML = app.icon ? getAppIcon(app.icon) : "?";
410
+ iconContainer.append(iconElement.content.cloneNode(true));
411
+ const notification = document.createElement("div");
412
+ notification.classList.add("notification");
413
+ iconContainer.append(notification);
414
+ iconContainer.classList.add("icon");
415
+ button.append(iconContainer);
416
+ button.append(document.createTextNode(app.name));
417
+ button.addEventListener("click", () => {
418
+ overlay.toggleAppStatus(app);
419
+ });
420
+ buttonContainer.append(button);
421
+ dropdown.append(buttonContainer);
422
+ app.eventTarget.addEventListener("toggle-notification", (evt) => {
423
+ if (!(evt instanceof CustomEvent)) return;
424
+ let newState = evt.detail.state ?? true;
425
+ let level = notificationLevels.includes(evt?.detail?.level) ? evt.detail.level : "error";
426
+ notification.toggleAttribute("data-active", newState);
427
+ if (newState) {
428
+ notification.setAttribute("data-level", level);
429
+ notification.innerHTML = notificationSVGs[level];
430
+ }
431
+ app.notification.state = newState;
432
+ if (newState) app.notification.level = level;
433
+ eventTarget.dispatchEvent(new CustomEvent("toggle-notification", { detail: {
434
+ state: hiddenApps.some((p) => p.notification.state === true),
435
+ level: [
436
+ "error",
437
+ "warning",
438
+ "info"
439
+ ].find((notificationLevel) => hiddenApps.some((p) => p.notification.state === true && p.notification.level === notificationLevel)) ?? "error"
440
+ } }));
441
+ });
442
+ }
443
+ canvas.append(dropdown);
444
+ }
445
+ }
446
+ }
447
+ ].map((appDef) => prepareApp(appDef, true)), ...customAppsDefinitions.map((appDef) => prepareApp(appDef, false))];
448
+ overlay.apps = apps;
449
+ document.body.append(overlay);
450
+ document.addEventListener("astro:after-swap", () => {
451
+ document.body.append(overlay);
452
+ });
453
+ });
454
+ //#endregion
455
+ export { serverHelpers as a, placements as i, DevToolbarWindow as n, isValidPlacement as r, settings as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astro_runtime_client_dev-toolbar_entrypoint__js.js","names":[],"sources":["../../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/helpers.js","../../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/window.js","../../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/settings.js","../../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/entrypoint.js"],"sourcesContent":["export class ToolbarAppEventTarget extends EventTarget {\n\tconstructor() {\n\t\tsuper();\n\t}\n\t/**\n\t* Toggle the notification state of the toolbar\n\t* @param options - The notification options\n\t* @param options.state - The state of the notification\n\t* @param options.level - The level of the notification, optional when state is false\n\t*/\n\ttoggleNotification(options) {\n\t\tthis.dispatchEvent(new CustomEvent(\"toggle-notification\", { detail: {\n\t\t\tstate: options.state,\n\t\t\tlevel: options.state === true ? options.level : undefined\n\t\t} }));\n\t}\n\t/**\n\t* Toggle the app state on or off\n\t* @param options - The app state options\n\t* @param options.state - The new state of the app\n\t*/\n\ttoggleState(options) {\n\t\tthis.dispatchEvent(new CustomEvent(\"toggle-app\", { detail: { state: options.state } }));\n\t}\n\t/**\n\t* Fired when the app is toggled on or off\n\t* @param callback - The callback to run when the event is fired, takes an object with the new state\n\t*/\n\tonToggled(callback) {\n\t\tthis.addEventListener(\"app-toggled\", (evt) => {\n\t\t\tif (!(evt instanceof CustomEvent)) return;\n\t\t\tcallback(evt.detail);\n\t\t});\n\t}\n\t/**\n\t* Fired when the toolbar placement is updated by the user\n\t* @param callback - The callback to run when the event is fired, takes an object with the new placement\n\t*/\n\tonToolbarPlacementUpdated(callback) {\n\t\tthis.addEventListener(\"placement-updated\", (evt) => {\n\t\t\tif (!(evt instanceof CustomEvent)) return;\n\t\t\tcallback(evt.detail);\n\t\t});\n\t}\n}\nexport const serverHelpers = {\n\t/**\n\t* Send a message to the server, the payload can be any serializable data.\n\t*\n\t* The server can listen for this message in the `astro:server:config` hook of an Astro integration, using the `toolbar.on` method.\n\t*\n\t* @param event - The event name\n\t* @param payload - The payload to send\n\t*/\n\tsend: (event, payload) => {\n\t\tif (import.meta.hot) {\n\t\t\timport.meta.hot.send(event, payload);\n\t\t}\n\t},\n\t/**\n\t* Receive a message from the server.\n\t* @param event - The event name\n\t* @param callback - The callback to run when the event is received.\n\t* The payload's content will be passed to the callback as an argument\n\t*/\n\ton: (event, callback) => {\n\t\tif (import.meta.hot) {\n\t\t\timport.meta.hot.on(event, callback);\n\t\t}\n\t}\n};\n","import { defaultSettings, settings } from \"../settings.js\";\nexport const placements = [\n\t\"bottom-left\",\n\t\"bottom-center\",\n\t\"bottom-right\"\n];\nexport function isValidPlacement(value) {\n\treturn placements.map(String).includes(value);\n}\nexport class DevToolbarWindow extends HTMLElement {\n\tshadowRoot;\n\t_placement = defaultSettings.placement;\n\tget placement() {\n\t\treturn this._placement;\n\t}\n\tset placement(value) {\n\t\tif (!isValidPlacement(value)) {\n\t\t\tsettings.logger.error(`Invalid placement: ${value}, expected one of ${placements.join(\", \")}, got ${value}.`);\n\t\t\treturn;\n\t\t}\n\t\tthis._placement = value;\n\t\tthis.updateStyle();\n\t}\n\tstatic observedAttributes = [\"placement\"];\n\tconstructor() {\n\t\tsuper();\n\t\tthis.shadowRoot = this.attachShadow({ mode: \"open\" });\n\t}\n\tasync connectedCallback() {\n\t\tthis.shadowRoot.innerHTML = `\n\t\t\t<style>\n\t\t\t\t:host {\n\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-direction: column;\n\t\t\t\t\tbackground: linear-gradient(0deg, #13151A, #13151A), linear-gradient(0deg, #343841, #343841);\n\t\t\t\t\tborder: 1px solid rgba(52, 56, 65, 1);\n\t\t\t\t\twidth: min(640px, 100%);\n\t\t\t\t\tmax-height: 480px;\n\t\t\t\t\tborder-radius: 12px;\n\t\t\t\t\tpadding: 24px;\n\t\t\t\t\tfont-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n\t\t\t\t\tcolor: rgba(191, 193, 201, 1);\n\t\t\t\t\tposition: fixed;\n\t\t\t\t\tz-index: 999999999;\n\t\t\t\t\tbottom: 72px;\n\t\t\t\t\tbox-shadow: 0px 0px 0px 0px rgba(19, 21, 26, 0.30), 0px 1px 2px 0px rgba(19, 21, 26, 0.29), 0px 4px 4px 0px rgba(19, 21, 26, 0.26), 0px 10px 6px 0px rgba(19, 21, 26, 0.15), 0px 17px 7px 0px rgba(19, 21, 26, 0.04), 0px 26px 7px 0px rgba(19, 21, 26, 0.01);\n\t\t\t\t}\n\n\t\t\t\t@media (forced-colors: active) {\n\t\t\t\t\t:host {\n\t\t\t\t\t\tbackground: white;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t@media (max-width: 640px) {\n\t\t\t\t\t:host {\n\t\t\t\t\t\tborder-radius: 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t::slotted(h1), ::slotted(h2), ::slotted(h3), ::slotted(h4), ::slotted(h5) {\n\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t}\n\n\t\t\t\t::slotted(h1) {\n\t\t\t\t\tfont-size: 22px;\n\t\t\t\t}\n\n\t\t\t\t::slotted(h2) {\n\t\t\t\t\tfont-size: 20px;\n\t\t\t\t}\n\n\t\t\t\t::slotted(h3) {\n\t\t\t\t\tfont-size: 18px;\n\t\t\t\t}\n\n\t\t\t\t::slotted(h4) {\n\t\t\t\t\tfont-size: 16px;\n\t\t\t\t}\n\n\t\t\t\t::slotted(h5) {\n\t\t\t\t\tfont-size: 14px;\n\t\t\t\t}\n\n\t\t\t\thr, ::slotted(hr) {\n\t\t\t\t\tborder: 1px solid rgba(27, 30, 36, 1);\n\t\t\t\t\tmargin: 1em 0;\n\t\t\t\t}\n\n\t\t\t\tp, ::slotted(p) {\n\t\t\t\t\tline-height: 1.5em;\n\t\t\t\t}\n\t\t\t</style>\n\t\t\t<style id=\"selected-style\"></style>\n\n\t\t\t<slot />\n\t\t`;\n\t\tthis.updateStyle();\n\t}\n\tattributeChangedCallback() {\n\t\tif (this.hasAttribute(\"placement\")) this.placement = this.getAttribute(\"placement\");\n\t}\n\tupdateStyle() {\n\t\tconst style = this.shadowRoot.querySelector(\"#selected-style\");\n\t\tif (style) {\n\t\t\tconst styleMap = {\n\t\t\t\t\"bottom-left\": `\n\t\t\t\t\t:host {\n\t\t\t\t\t\tleft: 16px;\n\t\t\t\t\t}\n\t\t\t\t`,\n\t\t\t\t\"bottom-center\": `\n\t\t\t\t\t:host {\n\t\t\t\t\t\tleft: 50%;\n\t\t\t\t\t\ttransform: translateX(-50%);\n\t\t\t\t\t}\n\t\t\t\t`,\n\t\t\t\t\"bottom-right\": `\n\t\t\t\t\t:host {\n\t\t\t\t\t\tright: 16px;\n\t\t\t\t\t}\n\t\t\t\t`\n\t\t\t};\n\t\t\tstyle.innerHTML = styleMap[this.placement];\n\t\t}\n\t}\n}\n","import { isValidPlacement } from \"./ui-library/window.js\";\nexport const defaultSettings = {\n\tdisableAppNotification: false,\n\tverbose: false,\n\tplacement: \"bottom-center\"\n};\nexport const settings = getSettings();\nfunction getSettings() {\n\t// 1. Start with hardcoded defaults\n\tlet _settings = { ...defaultSettings };\n\t// 2. Override with config placement (if provided)\n\tconst configPlacement = globalThis.__astro_dev_toolbar__?.placement;\n\tif (configPlacement && isValidPlacement(configPlacement)) {\n\t\t_settings.placement = configPlacement;\n\t}\n\t// 3. Override with localStorage (preserves user's UI choice)\n\tconst toolbarSettings = localStorage.getItem(\"astro:dev-toolbar:settings\");\n\tif (toolbarSettings) {\n\t\t_settings = {\n\t\t\t..._settings,\n\t\t\t...JSON.parse(toolbarSettings)\n\t\t};\n\t}\n\tfunction updateSetting(key, value) {\n\t\t_settings[key] = value;\n\t\tlocalStorage.setItem(\"astro:dev-toolbar:settings\", JSON.stringify(_settings));\n\t}\n\tfunction log(message, level = \"log\") {\n\t\t// biome-ignore lint/suspicious/noConsole: it can't infer types yet\n\t\tconsole[level](`%cAstro`, \"background: linear-gradient(66.77deg, #D83333 0%, #F041FF 100%); color: white; padding-inline: 4px; border-radius: 2px; font-family: monospace;\", message);\n\t}\n\treturn {\n\t\tget config() {\n\t\t\treturn _settings;\n\t\t},\n\t\tupdateSetting,\n\t\tlogger: {\n\t\t\tlog,\n\t\t\twarn: (message) => {\n\t\t\t\tlog(message, \"warn\");\n\t\t\t},\n\t\t\terror: (message) => {\n\t\t\t\tlog(message, \"error\");\n\t\t\t},\n\t\t\tverboseLog: (message) => {\n\t\t\t\tif (_settings.verbose) {\n\t\t\t\t\tlog(message);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n","// @ts-expect-error - This module is private and untyped\nimport { loadDevToolbarApps } from \"astro:toolbar:internal\";\nimport { ToolbarAppEventTarget } from \"./helpers.js\";\nimport { settings } from \"./settings.js\";\nlet overlay;\ndocument.addEventListener(\"DOMContentLoaded\", async () => {\n\tconst [customAppsDefinitions, { default: astroDevToolApp }, { default: astroAuditApp }, { default: astroXrayApp }, { default: astroSettingsApp }, { AstroDevToolbar, DevToolbarCanvas, getAppIcon }, { DevToolbarCard, DevToolbarHighlight, DevToolbarTooltip, DevToolbarWindow, DevToolbarToggle, DevToolbarButton, DevToolbarBadge, DevToolbarIcon, DevToolbarSelect, DevToolbarRadioCheckbox }] = await Promise.all([\n\t\tloadDevToolbarApps(),\n\t\timport(\"./apps/astro.js\"),\n\t\timport(\"./apps/audit/index.js\"),\n\t\timport(\"./apps/xray.js\"),\n\t\timport(\"./apps/settings.js\"),\n\t\timport(\"./toolbar.js\"),\n\t\timport(\"./ui-library/index.js\")\n\t]);\n\t// Register custom elements\n\tcustomElements.define(\"astro-dev-toolbar\", AstroDevToolbar);\n\tcustomElements.define(\"astro-dev-toolbar-window\", DevToolbarWindow);\n\tcustomElements.define(\"astro-dev-toolbar-app-canvas\", DevToolbarCanvas);\n\tcustomElements.define(\"astro-dev-toolbar-tooltip\", DevToolbarTooltip);\n\tcustomElements.define(\"astro-dev-toolbar-highlight\", DevToolbarHighlight);\n\tcustomElements.define(\"astro-dev-toolbar-card\", DevToolbarCard);\n\tcustomElements.define(\"astro-dev-toolbar-toggle\", DevToolbarToggle);\n\tcustomElements.define(\"astro-dev-toolbar-button\", DevToolbarButton);\n\tcustomElements.define(\"astro-dev-toolbar-badge\", DevToolbarBadge);\n\tcustomElements.define(\"astro-dev-toolbar-icon\", DevToolbarIcon);\n\tcustomElements.define(\"astro-dev-toolbar-select\", DevToolbarSelect);\n\tcustomElements.define(\"astro-dev-toolbar-radio-checkbox\", DevToolbarRadioCheckbox);\n\toverlay = document.createElement(\"astro-dev-toolbar\");\n\tconst notificationLevels = [\n\t\t\"error\",\n\t\t\"warning\",\n\t\t\"info\"\n\t];\n\tconst notificationSVGs = {\n\t\terror: \"<svg viewBox=\\\"0 0 10 10\\\" style=\\\"--fill:var(--fill-default);--fill-default:#B33E66;--fill-hover:#E3AFC1;\\\"><rect width=\\\"9\\\" height=\\\"9\\\" x=\\\".5\\\" y=\\\".5\\\" fill=\\\"var(--fill)\\\" stroke=\\\"#13151A\\\" stroke-width=\\\"2\\\" rx=\\\"4.5\\\"/></svg>\",\n\t\twarning: \"<svg width=\\\"12\\\" height=\\\"10\\\" fill=\\\"none\\\" style=\\\"--fill:var(--fill-default);--fill-default:#B58A2D;--fill-hover:#D5B776;\\\"><path fill=\\\"var(--fill)\\\" stroke=\\\"#13151A\\\" stroke-width=\\\"2\\\" d=\\\"M7.29904 1.25c-.57735-1-2.02073-1-2.59808 0l-3.4641 6C.65951 8.25 1.3812 9.5 2.5359 9.5h6.9282c1.1547 0 1.8764-1.25 1.299-2.25l-3.46406-6Z\\\"/></svg>\",\n\t\tinfo: \"<svg viewBox=\\\"0 0 10 10\\\" style=\\\"--fill:var(--fill-default);--fill-default:#3645D9;--fill-hover:#BDC3FF;\\\"><rect width=\\\"9\\\" height=\\\"9\\\" x=\\\".5\\\" y=\\\".5\\\" fill=\\\"var(--fill)\\\" stroke=\\\"#13151A\\\" stroke-width=\\\"2\\\" rx=\\\"1.5\\\"/></svg>\"\n\t};\n\tconst prepareApp = (appDefinition, builtIn) => {\n\t\tconst eventTarget = new ToolbarAppEventTarget();\n\t\tconst app = {\n\t\t\t...appDefinition,\n\t\t\tbuiltIn,\n\t\t\tactive: false,\n\t\t\tstatus: \"loading\",\n\t\t\tnotification: {\n\t\t\t\tstate: false,\n\t\t\t\tlevel: undefined\n\t\t\t},\n\t\t\teventTarget\n\t\t};\n\t\t// Events apps can send to the overlay to update their status\n\t\teventTarget.addEventListener(\"toggle-notification\", (evt) => {\n\t\t\tif (!(evt instanceof CustomEvent)) return;\n\t\t\tconst target = overlay.shadowRoot?.querySelector(`[data-app-id=\"${app.id}\"]`);\n\t\t\tif (!target) return;\n\t\t\tconst notificationElement = target.querySelector(\".notification\");\n\t\t\tif (!notificationElement) return;\n\t\t\tlet newState = evt.detail.state ?? true;\n\t\t\tlet level = notificationLevels.includes(evt?.detail?.level) ? evt.detail.level : \"error\";\n\t\t\tapp.notification.state = newState;\n\t\t\tif (newState) app.notification.level = level;\n\t\t\tnotificationElement.toggleAttribute(\"data-active\", newState);\n\t\t\tif (newState) {\n\t\t\t\tnotificationElement.setAttribute(\"data-level\", level);\n\t\t\t\tnotificationElement.innerHTML = notificationSVGs[level];\n\t\t\t}\n\t\t});\n\t\tconst onToggleApp = async (evt) => {\n\t\t\tlet newState = undefined;\n\t\t\tif (evt instanceof CustomEvent) {\n\t\t\t\tnewState = evt.detail.state ?? true;\n\t\t\t}\n\t\t\tawait overlay.setAppStatus(app, newState);\n\t\t};\n\t\teventTarget.addEventListener(\"toggle-app\", onToggleApp);\n\t\treturn app;\n\t};\n\tconst astroMoreApp = {\n\t\tid: \"astro:more\",\n\t\tname: \"More\",\n\t\ticon: \"dots-three\",\n\t\tinit(canvas, eventTarget) {\n\t\t\tconst hiddenApps = apps.filter((p) => !p.builtIn).slice(overlay.customAppsToShow);\n\t\t\tcreateDropdown();\n\t\t\tdocument.addEventListener(\"astro:after-swap\", createDropdown);\n\t\t\tfunction createDropdown() {\n\t\t\t\tconst style = document.createElement(\"style\");\n\t\t\t\tstyle.innerHTML = `\n\t\t\t\t\t#dropdown {\n\t\t\t\t\t\tbackground: rgba(19, 21, 26, 1);\n\t\t\t\t\t\tborder: 1px solid rgba(52, 56, 65, 1);\n\t\t\t\t\t\tborder-radius: 12px;\n\t\t\t\t\t\tbox-shadow: 0px 0px 0px 0px rgba(19, 21, 26, 0.30), 0px 1px 2px 0px rgba(19, 21, 26, 0.29), 0px 4px 4px 0px rgba(19, 21, 26, 0.26), 0px 10px 6px 0px rgba(19, 21, 26, 0.15), 0px 17px 7px 0px rgba(19, 21, 26, 0.04), 0px 26px 7px 0px rgba(19, 21, 26, 0.01);\n\t\t\t\t\t\twidth: 192px;\n\t\t\t\t\t\tpadding: 8px;\n\t\t\t\t\t\tz-index: 2000000010;\n\t\t\t\t\t\ttransform: translate(-50%, 0%);\n\t\t\t\t\t\tposition: fixed;\n\t\t\t\t\t\tbottom: 72px;\n\t\t\t\t\t\tleft: 50%;\n\t\t\t\t\t}\n\n\t\t\t\t\t.notification {\n\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\ttop: -4px;\n\t\t\t\t\t\tright: -5px;\n\t\t\t\t\t\twidth: 12px;\n\t\t\t\t\t\theight: 10px;\n\t\t\t\t\t}\n\n\t\t\t\t\t.notification svg {\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t}\n\n\t\t\t\t\t#dropdown:not([data-no-notification]) .notification[data-active] {\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t}\n\n\t\t\t\t\t#dropdown button {\n\t\t\t\t\t\tborder: 0;\n\t\t\t\t\t\tbackground: transparent;\n\t\t\t\t\t\tcolor: white;\n\t\t\t\t\t\tfont-family: system-ui, sans-serif;\n\t\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\tpadding: 8px;\n\t\t\t\t\t\tborder-radius: 8px;\n\t\t\t\t\t}\n\n\t\t\t\t\t#dropdown button:hover, #dropdown button:focus-visible {\n\t\t\t\t\t\tbackground: #FFFFFF20;\n\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t}\n\n\t\t\t\t\t#dropdown button.active {\n\t\t\t\t\t\tbackground: rgba(71, 78, 94, 1);\n\t\t\t\t\t}\n\n\t\t\t\t\t#dropdown .icon {\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\theight: 20px;\n\t\t\t\t\t\twidth: 20px;\n\t\t\t\t\t\tpadding: 1px;\n\t\t\t\t\t\tmargin-right: 0.5em;\n\t\t\t\t\t}\n\n\t\t\t\t\t#dropdown .icon svg {\n\t\t\t\t\t\tmax-height: 100%;\n\t\t\t\t\t\tmax-width: 100%;\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tcanvas.append(style);\n\t\t\t\tconst dropdown = document.createElement(\"div\");\n\t\t\t\tdropdown.id = \"dropdown\";\n\t\t\t\tdropdown.toggleAttribute(\"data-no-notification\", settings.config.disableAppNotification);\n\t\t\t\tfor (const app of hiddenApps) {\n\t\t\t\t\tconst buttonContainer = document.createElement(\"div\");\n\t\t\t\t\tbuttonContainer.classList.add(\"item\");\n\t\t\t\t\tconst button = document.createElement(\"button\");\n\t\t\t\t\tbutton.setAttribute(\"data-app-id\", app.id);\n\t\t\t\t\tconst iconContainer = document.createElement(\"div\");\n\t\t\t\t\tconst iconElement = document.createElement(\"template\");\n\t\t\t\t\ticonElement.innerHTML = app.icon ? getAppIcon(app.icon) : \"?\";\n\t\t\t\t\ticonContainer.append(iconElement.content.cloneNode(true));\n\t\t\t\t\tconst notification = document.createElement(\"div\");\n\t\t\t\t\tnotification.classList.add(\"notification\");\n\t\t\t\t\ticonContainer.append(notification);\n\t\t\t\t\ticonContainer.classList.add(\"icon\");\n\t\t\t\t\tbutton.append(iconContainer);\n\t\t\t\t\tbutton.append(document.createTextNode(app.name));\n\t\t\t\t\tbutton.addEventListener(\"click\", () => {\n\t\t\t\t\t\toverlay.toggleAppStatus(app);\n\t\t\t\t\t});\n\t\t\t\t\tbuttonContainer.append(button);\n\t\t\t\t\tdropdown.append(buttonContainer);\n\t\t\t\t\tapp.eventTarget.addEventListener(\"toggle-notification\", (evt) => {\n\t\t\t\t\t\tif (!(evt instanceof CustomEvent)) return;\n\t\t\t\t\t\tlet newState = evt.detail.state ?? true;\n\t\t\t\t\t\tlet level = notificationLevels.includes(evt?.detail?.level) ? evt.detail.level : \"error\";\n\t\t\t\t\t\tnotification.toggleAttribute(\"data-active\", newState);\n\t\t\t\t\t\tif (newState) {\n\t\t\t\t\t\t\tnotification.setAttribute(\"data-level\", level);\n\t\t\t\t\t\t\tnotification.innerHTML = notificationSVGs[level];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapp.notification.state = newState;\n\t\t\t\t\t\tif (newState) app.notification.level = level;\n\t\t\t\t\t\teventTarget.dispatchEvent(new CustomEvent(\"toggle-notification\", { detail: {\n\t\t\t\t\t\t\tstate: hiddenApps.some((p) => p.notification.state === true),\n\t\t\t\t\t\t\tlevel: [\n\t\t\t\t\t\t\t\t\"error\",\n\t\t\t\t\t\t\t\t\"warning\",\n\t\t\t\t\t\t\t\t\"info\"\n\t\t\t\t\t\t\t].find((notificationLevel) => hiddenApps.some((p) => p.notification.state === true && p.notification.level === notificationLevel)) ?? \"error\"\n\t\t\t\t\t\t} }));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tcanvas.append(dropdown);\n\t\t\t}\n\t\t}\n\t};\n\tconst apps = [...[\n\t\tastroDevToolApp,\n\t\tastroXrayApp,\n\t\tastroAuditApp,\n\t\tastroSettingsApp,\n\t\tastroMoreApp\n\t].map((appDef) => prepareApp(appDef, true)), ...customAppsDefinitions.map((appDef) => prepareApp(appDef, false))];\n\toverlay.apps = apps;\n\tdocument.body.append(overlay);\n\tdocument.addEventListener(\"astro:after-swap\", () => {\n\t\tdocument.body.append(overlay);\n\t});\n});\n"],"ignoreList":[0,1,2,3],"mappings":";;AAAA,IAAa,wBAAb,cAA2C,YAAY;CACtD,cAAc;EACb,MAAM;CACP;;;;;;;CAOA,mBAAmB,SAAS;EAC3B,KAAK,cAAc,IAAI,YAAY,uBAAuB,EAAE,QAAQ;GACnE,OAAO,QAAQ;GACf,OAAO,QAAQ,UAAU,OAAO,QAAQ,QAAQ,KAAA;EACjD,EAAE,CAAC,CAAC;CACL;;;;;;CAMA,YAAY,SAAS;EACpB,KAAK,cAAc,IAAI,YAAY,cAAc,EAAE,QAAQ,EAAE,OAAO,QAAQ,MAAM,EAAE,CAAC,CAAC;CACvF;;;;;CAKA,UAAU,UAAU;EACnB,KAAK,iBAAiB,gBAAgB,QAAQ;GAC7C,IAAI,EAAE,eAAe,cAAc;GACnC,SAAS,IAAI,MAAM;EACpB,CAAC;CACF;;;;;CAKA,0BAA0B,UAAU;EACnC,KAAK,iBAAiB,sBAAsB,QAAQ;GACnD,IAAI,EAAE,eAAe,cAAc;GACnC,SAAS,IAAI,MAAM;EACpB,CAAC;CACF;AACD;AACA,IAAa,gBAAgB;;;;;;;;;CAS5B,OAAO,OAAO,YAAY;EACzB,IAAI,YAAY,KACf,YAAY,IAAI,KAAK,OAAO,OAAO;CAErC;;;;;;;CAOA,KAAK,OAAO,aAAa;EACxB,IAAI,YAAY,KACf,YAAY,IAAI,GAAG,OAAO,QAAQ;CAEpC;AACD;;;ACrEA,IAAa,aAAa;CACzB;CACA;CACA;AACD;AACA,SAAgB,iBAAiB,OAAO;CACvC,OAAO,WAAW,IAAI,MAAM,CAAC,CAAC,SAAS,KAAK;AAC7C;AACA,IAAa,mBAAb,cAAsC,YAAY;CACjD;CACA,aAAa,gBAAgB;CAC7B,IAAI,YAAY;EACf,OAAO,KAAK;CACb;CACA,IAAI,UAAU,OAAO;EACpB,IAAI,CAAC,iBAAiB,KAAK,GAAG;GAC7B,SAAS,OAAO,MAAM,sBAAsB,MAAM,oBAAoB,WAAW,KAAK,IAAI,EAAE,QAAQ,MAAM,EAAE;GAC5G;EACD;EACA,KAAK,aAAa;EAClB,KAAK,YAAY;CAClB;CACA,OAAO,qBAAqB,CAAC,WAAW;CACxC,cAAc;EACb,MAAM;EACN,KAAK,aAAa,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;CACrD;CACA,MAAM,oBAAoB;EACzB,KAAK,WAAW,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsE5B,KAAK,YAAY;CAClB;CACA,2BAA2B;EAC1B,IAAI,KAAK,aAAa,WAAW,GAAG,KAAK,YAAY,KAAK,aAAa,WAAW;CACnF;CACA,cAAc;EACb,MAAM,QAAQ,KAAK,WAAW,cAAc,iBAAiB;EAC7D,IAAI,OAmBH,MAAM,YAAY;GAjBjB,eAAe;;;;;GAKf,iBAAiB;;;;;;GAMjB,gBAAgB;;;;;EAMQ,EAAE,KAAK;CAElC;AACD;;;AC/HA,IAAa,kBAAkB;CAC9B,wBAAwB;CACxB,SAAS;CACT,WAAW;AACZ;AACA,IAAa,WAAW,YAAY;AACpC,SAAS,cAAc;CAEtB,IAAI,YAAY,EAAE,GAAG,gBAAgB;CAErC,MAAM,kBAAkB,WAAW,uBAAuB;CAC1D,IAAI,mBAAmB,iBAAiB,eAAe,GACtD,UAAU,YAAY;CAGvB,MAAM,kBAAkB,aAAa,QAAQ,4BAA4B;CACzE,IAAI,iBACH,YAAY;EACX,GAAG;EACH,GAAG,KAAK,MAAM,eAAe;CAC9B;CAED,SAAS,cAAc,KAAK,OAAO;EAClC,UAAU,OAAO;EACjB,aAAa,QAAQ,8BAA8B,KAAK,UAAU,SAAS,CAAC;CAC7E;CACA,SAAS,IAAI,SAAS,QAAQ,OAAO;EAEpC,QAAQ,MAAM,CAAC,WAAW,mJAAmJ,OAAO;CACrL;CACA,OAAO;EACN,IAAI,SAAS;GACZ,OAAO;EACR;EACA;EACA,QAAQ;GACP;GACA,OAAO,YAAY;IAClB,IAAI,SAAS,MAAM;GACpB;GACA,QAAQ,YAAY;IACnB,IAAI,SAAS,OAAO;GACrB;GACA,aAAa,YAAY;IACxB,IAAI,UAAU,SACb,IAAI,OAAO;GAEb;EACD;CACD;AACD;;;AC/CA,IAAI;AACJ,SAAS,iBAAiB,oBAAoB,YAAY;CACzD,MAAM,CAAC,uBAAuB,EAAE,SAAS,mBAAmB,EAAE,SAAS,iBAAiB,EAAE,SAAS,gBAAgB,EAAE,SAAS,oBAAoB,EAAE,iBAAiB,kBAAkB,cAAc,EAAE,gBAAgB,qBAAqB,mBAAmB,kBAAkB,kBAAkB,kBAAkB,iBAAiB,gBAAgB,kBAAkB,6BAA6B,MAAM,QAAQ,IAAI;EACtZ,mBAAmB;EACnB,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACR,CAAC;CAED,eAAe,OAAO,qBAAqB,eAAe;CAC1D,eAAe,OAAO,4BAA4B,gBAAgB;CAClE,eAAe,OAAO,gCAAgC,gBAAgB;CACtE,eAAe,OAAO,6BAA6B,iBAAiB;CACpE,eAAe,OAAO,+BAA+B,mBAAmB;CACxE,eAAe,OAAO,0BAA0B,cAAc;CAC9D,eAAe,OAAO,4BAA4B,gBAAgB;CAClE,eAAe,OAAO,4BAA4B,gBAAgB;CAClE,eAAe,OAAO,2BAA2B,eAAe;CAChE,eAAe,OAAO,0BAA0B,cAAc;CAC9D,eAAe,OAAO,4BAA4B,gBAAgB;CAClE,eAAe,OAAO,oCAAoC,uBAAuB;CACjF,UAAU,SAAS,cAAc,mBAAmB;CACpD,MAAM,qBAAqB;EAC1B;EACA;EACA;CACD;CACA,MAAM,mBAAmB;EACxB,OAAO;EACP,SAAS;EACT,MAAM;CACP;CACA,MAAM,cAAc,eAAe,YAAY;EAC9C,MAAM,cAAc,IAAI,sBAAsB;EAC9C,MAAM,MAAM;GACX,GAAG;GACH;GACA,QAAQ;GACR,QAAQ;GACR,cAAc;IACb,OAAO;IACP,OAAO,KAAA;GACR;GACA;EACD;EAEA,YAAY,iBAAiB,wBAAwB,QAAQ;GAC5D,IAAI,EAAE,eAAe,cAAc;GACnC,MAAM,SAAS,QAAQ,YAAY,cAAc,iBAAiB,IAAI,GAAG,GAAG;GAC5E,IAAI,CAAC,QAAQ;GACb,MAAM,sBAAsB,OAAO,cAAc,eAAe;GAChE,IAAI,CAAC,qBAAqB;GAC1B,IAAI,WAAW,IAAI,OAAO,SAAS;GACnC,IAAI,QAAQ,mBAAmB,SAAS,KAAK,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ;GACjF,IAAI,aAAa,QAAQ;GACzB,IAAI,UAAU,IAAI,aAAa,QAAQ;GACvC,oBAAoB,gBAAgB,eAAe,QAAQ;GAC3D,IAAI,UAAU;IACb,oBAAoB,aAAa,cAAc,KAAK;IACpD,oBAAoB,YAAY,iBAAiB;GAClD;EACD,CAAC;EACD,MAAM,cAAc,OAAO,QAAQ;GAClC,IAAI,WAAW,KAAA;GACf,IAAI,eAAe,aAClB,WAAW,IAAI,OAAO,SAAS;GAEhC,MAAM,QAAQ,aAAa,KAAK,QAAQ;EACzC;EACA,YAAY,iBAAiB,cAAc,WAAW;EACtD,OAAO;CACR;CAkIA,MAAM,OAAO,CAAC,GAAG;EAChB;EACA;EACA;EACA;EACA;GArIA,IAAI;GACJ,MAAM;GACN,MAAM;GACN,KAAK,QAAQ,aAAa;IACzB,MAAM,aAAa,KAAK,QAAQ,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,QAAQ,gBAAgB;IAChF,eAAe;IACf,SAAS,iBAAiB,oBAAoB,cAAc;IAC5D,SAAS,iBAAiB;KACzB,MAAM,QAAQ,SAAS,cAAc,OAAO;KAC5C,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsElB,OAAO,OAAO,KAAK;KACnB,MAAM,WAAW,SAAS,cAAc,KAAK;KAC7C,SAAS,KAAK;KACd,SAAS,gBAAgB,wBAAwB,SAAS,OAAO,sBAAsB;KACvF,KAAK,MAAM,OAAO,YAAY;MAC7B,MAAM,kBAAkB,SAAS,cAAc,KAAK;MACpD,gBAAgB,UAAU,IAAI,MAAM;MACpC,MAAM,SAAS,SAAS,cAAc,QAAQ;MAC9C,OAAO,aAAa,eAAe,IAAI,EAAE;MACzC,MAAM,gBAAgB,SAAS,cAAc,KAAK;MAClD,MAAM,cAAc,SAAS,cAAc,UAAU;MACrD,YAAY,YAAY,IAAI,OAAO,WAAW,IAAI,IAAI,IAAI;MAC1D,cAAc,OAAO,YAAY,QAAQ,UAAU,IAAI,CAAC;MACxD,MAAM,eAAe,SAAS,cAAc,KAAK;MACjD,aAAa,UAAU,IAAI,cAAc;MACzC,cAAc,OAAO,YAAY;MACjC,cAAc,UAAU,IAAI,MAAM;MAClC,OAAO,OAAO,aAAa;MAC3B,OAAO,OAAO,SAAS,eAAe,IAAI,IAAI,CAAC;MAC/C,OAAO,iBAAiB,eAAe;OACtC,QAAQ,gBAAgB,GAAG;MAC5B,CAAC;MACD,gBAAgB,OAAO,MAAM;MAC7B,SAAS,OAAO,eAAe;MAC/B,IAAI,YAAY,iBAAiB,wBAAwB,QAAQ;OAChE,IAAI,EAAE,eAAe,cAAc;OACnC,IAAI,WAAW,IAAI,OAAO,SAAS;OACnC,IAAI,QAAQ,mBAAmB,SAAS,KAAK,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ;OACjF,aAAa,gBAAgB,eAAe,QAAQ;OACpD,IAAI,UAAU;QACb,aAAa,aAAa,cAAc,KAAK;QAC7C,aAAa,YAAY,iBAAiB;OAC3C;OACA,IAAI,aAAa,QAAQ;OACzB,IAAI,UAAU,IAAI,aAAa,QAAQ;OACvC,YAAY,cAAc,IAAI,YAAY,uBAAuB,EAAE,QAAQ;QAC1E,OAAO,WAAW,MAAM,MAAM,EAAE,aAAa,UAAU,IAAI;QAC3D,OAAO;SACN;SACA;SACA;QACD,CAAC,CAAC,MAAM,sBAAsB,WAAW,MAAM,MAAM,EAAE,aAAa,UAAU,QAAQ,EAAE,aAAa,UAAU,iBAAiB,CAAC,KAAK;OACvI,EAAE,CAAC,CAAC;MACL,CAAC;KACF;KACA,OAAO,OAAO,QAAQ;IACvB;GACD;EAOW;CACZ,CAAC,CAAC,KAAK,WAAW,WAAW,QAAQ,IAAI,CAAC,GAAG,GAAG,sBAAsB,KAAK,WAAW,WAAW,QAAQ,KAAK,CAAC,CAAC;CAChH,QAAQ,OAAO;CACf,SAAS,KAAK,OAAO,OAAO;CAC5B,SAAS,iBAAiB,0BAA0B;EACnD,SAAS,KAAK,OAAO,OAAO;CAC7B,CAAC;AACF,CAAC"}