@janga/norna 0.7.2 → 0.7.3
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/README.md +16 -16
- package/bin/norna-cli.mjs +12 -7
- package/docs/README.md +10 -11
- package/docs/commands.md +8 -8
- package/docs/configuration.md +13 -145
- package/docs/content.md +17 -15
- package/docs/design/command-organization.md +55 -55
- package/docs/design/site-examples-structure.md +2 -2
- package/docs/engine-development.md +5 -5
- package/docs/getting-started.md +19 -26
- package/docs/images-and-metadata.md +1 -1
- package/docs/local-development.md +2 -2
- package/docs/publishing.md +1 -1
- package/docs/routes.md +2 -2
- package/docs/site-structure.md +8 -7
- package/docs/theme.md +149 -7
- package/docs/typography.md +47 -28
- package/examples/dog-gallery/.astro/collections/site.schema.json +802 -0
- package/examples/dog-gallery/.astro/collections/theme.schema.json +714 -0
- package/examples/dog-gallery/.astro/content-assets.mjs +4 -0
- package/examples/dog-gallery/.astro/content-modules.mjs +1 -0
- package/examples/dog-gallery/.astro/content.d.ts +175 -0
- package/examples/dog-gallery/.astro/data-store.json +1 -0
- package/examples/dog-gallery/.astro/dev-local.json +8 -0
- package/examples/dog-gallery/.astro/dev.json +13 -0
- package/examples/dog-gallery/.astro/dev.log +49 -0
- package/examples/dog-gallery/.astro/settings.json +5 -0
- package/examples/dog-gallery/.astro/types.d.ts +2 -0
- package/examples/dog-gallery/dist/_astro/GalleryGrid.astro_astro_type_script_index_0_lang.B0kxDyGz.js +1 -0
- package/examples/dog-gallery/dist/_astro/SitePage.BFHZm5UG.css +1 -0
- package/examples/dog-gallery/dist/dog-care/index.html +15 -0
- package/examples/dog-gallery/dist/favicon.svg +7 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-1536.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-960.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-1920.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-3939.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1920.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-2400.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-1600.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-1920.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-2576.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-1277.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1536.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-768.webp +0 -0
- package/examples/dog-gallery/dist/index.html +43 -0
- package/examples/dog-gallery/dist/robots.txt +2 -0
- package/examples/dog-gallery/node_modules/.vite/deps/_metadata.json +74 -0
- package/examples/dog-gallery/node_modules/.vite/deps/astro-D_GIpJIE.js +434 -0
- package/examples/dog-gallery/node_modules/.vite/deps/astro-D_GIpJIE.js.map +1 -0
- package/examples/dog-gallery/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
- package/examples/dog-gallery/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
- package/examples/dog-gallery/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
- package/examples/dog-gallery/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
- package/examples/dog-gallery/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
- package/examples/dog-gallery/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
- package/examples/dog-gallery/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
- package/examples/dog-gallery/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
- package/examples/dog-gallery/node_modules/.vite/deps/audit-DM9Hkl5B.js +1534 -0
- package/examples/dog-gallery/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +1 -0
- package/examples/dog-gallery/node_modules/.vite/deps/highlight-DnZ1ULOL.js +48 -0
- package/examples/dog-gallery/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +1 -0
- package/examples/dog-gallery/node_modules/.vite/deps/icons-RyebKi45.js +42 -0
- package/examples/dog-gallery/node_modules/.vite/deps/icons-RyebKi45.js.map +1 -0
- package/examples/dog-gallery/node_modules/.vite/deps/package.json +3 -0
- package/examples/dog-gallery/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
- package/examples/dog-gallery/node_modules/.vite/deps/settings-DaU-gNnK.js +190 -0
- package/examples/dog-gallery/node_modules/.vite/deps/settings-DaU-gNnK.js.map +1 -0
- package/examples/dog-gallery/node_modules/.vite/deps/toolbar-63PA619H.js +458 -0
- package/examples/dog-gallery/node_modules/.vite/deps/toolbar-63PA619H.js.map +1 -0
- package/examples/dog-gallery/node_modules/.vite/deps/ui-library--bkcNSYz.js +1016 -0
- package/examples/dog-gallery/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +1 -0
- package/examples/dog-gallery/node_modules/.vite/deps/window-jPkpKVcy.js +32 -0
- package/examples/dog-gallery/node_modules/.vite/deps/window-jPkpKVcy.js.map +1 -0
- package/examples/dog-gallery/node_modules/.vite/deps/xray-BXCHpEJP.js +111 -0
- package/examples/dog-gallery/node_modules/.vite/deps/xray-BXCHpEJP.js.map +1 -0
- package/examples/dog-gallery/site/config.mjs +12 -42
- package/examples/dog-gallery/site/content.md +27 -5
- package/examples/dog-gallery/site/routes/dog-care/route-content.md +17 -3
- package/examples/dog-gallery/site/theme.md +85 -26
- package/fixtures/basic/site/config.mjs +2 -22
- package/fixtures/basic/site/content.md +1 -1
- package/fixtures/basic/site/theme.md +7 -3
- package/package.json +3 -3
- package/scripts/check-config.mjs +3 -3
- package/scripts/deploy-site.mjs +3 -3
- package/scripts/init-site.mjs +10 -8
- package/scripts/lib/frontmatter-yaml.mjs +85 -0
- package/scripts/lib/presentation.mjs +10 -11
- package/scripts/lib/project-config.mjs +91 -45
- package/scripts/lib/site-content.mjs +20 -2
- package/scripts/lib/theme-config.mjs +34 -0
- package/scripts/lib/typography.mjs +100 -20
- package/scripts/show-typography.mjs +58 -154
- package/scripts/sync-content-sections.mjs +6 -6
- package/scripts/test-content-check.mjs +3 -4
- package/scripts/test-engine-commands.mjs +2 -2
- package/scripts/test-package-check.mjs +17 -16
- package/scripts/test-temporary-visibility.mjs +2 -3
- package/src/components/SitePage.astro +2 -3
- package/src/components/SiteSection.astro +39 -5
- package/src/content.config.ts +60 -2
- package/src/layouts/BaseLayout.astro +17 -0
- package/src/styles/global.css +54 -50
- package/starters/basic/README.md +10 -15
- package/starters/basic/package.json +2 -2
- package/starters/basic/site/config.mjs +3 -24
- package/starters/basic/site/content.md +40 -7
- package/starters/basic/site/theme.md +110 -17
- package/starters/project/.github/workflows/deploy.yml +65 -0
- package/starters/project/README.md +72 -0
- package/starters/project/package-lock.json +4296 -0
- package/starters/project/package.json +35 -0
- package/starters/project/site/config.mjs +43 -0
- package/starters/project/site/content.md +88 -0
- package/starters/project/site/public/robots.txt +2 -0
- package/starters/project/site/routes/guide/route-content.md +58 -0
- package/starters/project/site/theme.md +15 -0
|
@@ -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-D_GIpJIE.js"),
|
|
247
|
+
import("./audit-DM9Hkl5B.js"),
|
|
248
|
+
import("./xray-BXCHpEJP.js"),
|
|
249
|
+
import("./settings-DaU-gNnK.js"),
|
|
250
|
+
import("./toolbar-63PA619H.js"),
|
|
251
|
+
import("./ui-library--bkcNSYz.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":["class ToolbarAppEventTarget extends EventTarget {\n constructor() {\n super();\n }\n /**\n * Toggle the notification state of the toolbar\n * @param options - The notification options\n * @param options.state - The state of the notification\n * @param options.level - The level of the notification, optional when state is false\n */\n toggleNotification(options) {\n this.dispatchEvent(\n new CustomEvent(\"toggle-notification\", {\n detail: {\n state: options.state,\n level: options.state === true ? options.level : void 0\n }\n })\n );\n }\n /**\n * Toggle the app state on or off\n * @param options - The app state options\n * @param options.state - The new state of the app\n */\n toggleState(options) {\n this.dispatchEvent(\n new CustomEvent(\"toggle-app\", {\n detail: {\n state: options.state\n }\n })\n );\n }\n /**\n * Fired when the app is toggled on or off\n * @param callback - The callback to run when the event is fired, takes an object with the new state\n */\n onToggled(callback) {\n this.addEventListener(\"app-toggled\", (evt) => {\n if (!(evt instanceof CustomEvent)) return;\n callback(evt.detail);\n });\n }\n /**\n * Fired when the toolbar placement is updated by the user\n * @param callback - The callback to run when the event is fired, takes an object with the new placement\n */\n onToolbarPlacementUpdated(callback) {\n this.addEventListener(\"placement-updated\", (evt) => {\n if (!(evt instanceof CustomEvent)) return;\n callback(evt.detail);\n });\n }\n}\nconst serverHelpers = {\n /**\n * Send a message to the server, the payload can be any serializable data.\n *\n * The server can listen for this message in the `astro:server:config` hook of an Astro integration, using the `toolbar.on` method.\n *\n * @param event - The event name\n * @param payload - The payload to send\n */\n send: (event, payload) => {\n if (import.meta.hot) {\n import.meta.hot.send(event, payload);\n }\n },\n /**\n * Receive a message from the server.\n * @param event - The event name\n * @param callback - The callback to run when the event is received.\n * The payload's content will be passed to the callback as an argument\n */\n on: (event, callback) => {\n if (import.meta.hot) {\n import.meta.hot.on(event, callback);\n }\n }\n};\nexport {\n ToolbarAppEventTarget,\n serverHelpers\n};\n","import { defaultSettings, settings } from \"../settings.js\";\nconst placements = [\"bottom-left\", \"bottom-center\", \"bottom-right\"];\nfunction isValidPlacement(value) {\n return placements.map(String).includes(value);\n}\nclass DevToolbarWindow extends HTMLElement {\n shadowRoot;\n _placement = defaultSettings.placement;\n get placement() {\n return this._placement;\n }\n set placement(value) {\n if (!isValidPlacement(value)) {\n settings.logger.error(\n `Invalid placement: ${value}, expected one of ${placements.join(\", \")}, got ${value}.`\n );\n return;\n }\n this._placement = value;\n this.updateStyle();\n }\n static observedAttributes = [\"placement\"];\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n }\n async connectedCallback() {\n this.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 this.updateStyle();\n }\n attributeChangedCallback() {\n if (this.hasAttribute(\"placement\"))\n this.placement = this.getAttribute(\"placement\");\n }\n updateStyle() {\n const style = this.shadowRoot.querySelector(\"#selected-style\");\n if (style) {\n const styleMap = {\n \"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 \"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 \"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 };\n style.innerHTML = styleMap[this.placement];\n }\n }\n}\nexport {\n DevToolbarWindow,\n isValidPlacement,\n placements\n};\n","import { isValidPlacement } from \"./ui-library/window.js\";\nconst defaultSettings = {\n disableAppNotification: false,\n verbose: false,\n placement: \"bottom-center\"\n};\nconst settings = getSettings();\nfunction getSettings() {\n let _settings = { ...defaultSettings };\n const configPlacement = globalThis.__astro_dev_toolbar__?.placement;\n if (configPlacement && isValidPlacement(configPlacement)) {\n _settings.placement = configPlacement;\n }\n const toolbarSettings = localStorage.getItem(\"astro:dev-toolbar:settings\");\n if (toolbarSettings) {\n _settings = { ..._settings, ...JSON.parse(toolbarSettings) };\n }\n function updateSetting(key, value) {\n _settings[key] = value;\n localStorage.setItem(\"astro:dev-toolbar:settings\", JSON.stringify(_settings));\n }\n function log(message, level = \"log\") {\n console[level](\n `%cAstro`,\n \"background: linear-gradient(66.77deg, #D83333 0%, #F041FF 100%); color: white; padding-inline: 4px; border-radius: 2px; font-family: monospace;\",\n message\n );\n }\n return {\n get config() {\n return _settings;\n },\n updateSetting,\n logger: {\n log,\n warn: (message) => {\n log(message, \"warn\");\n },\n error: (message) => {\n log(message, \"error\");\n },\n verboseLog: (message) => {\n if (_settings.verbose) {\n log(message);\n }\n }\n }\n };\n}\nexport {\n defaultSettings,\n settings\n};\n","import { loadDevToolbarApps } from \"astro:toolbar:internal\";\nimport { ToolbarAppEventTarget } from \"./helpers.js\";\nimport { settings } from \"./settings.js\";\nlet overlay;\ndocument.addEventListener(\"DOMContentLoaded\", async () => {\n const [\n customAppsDefinitions,\n { default: astroDevToolApp },\n { default: astroAuditApp },\n { default: astroXrayApp },\n { default: astroSettingsApp },\n { AstroDevToolbar, DevToolbarCanvas, getAppIcon },\n {\n DevToolbarCard,\n DevToolbarHighlight,\n DevToolbarTooltip,\n DevToolbarWindow,\n DevToolbarToggle,\n DevToolbarButton,\n DevToolbarBadge,\n DevToolbarIcon,\n DevToolbarSelect,\n DevToolbarRadioCheckbox\n }\n ] = await Promise.all([\n loadDevToolbarApps(),\n import(\"./apps/astro.js\"),\n import(\"./apps/audit/index.js\"),\n import(\"./apps/xray.js\"),\n import(\"./apps/settings.js\"),\n import(\"./toolbar.js\"),\n import(\"./ui-library/index.js\")\n ]);\n customElements.define(\"astro-dev-toolbar\", AstroDevToolbar);\n customElements.define(\"astro-dev-toolbar-window\", DevToolbarWindow);\n customElements.define(\"astro-dev-toolbar-app-canvas\", DevToolbarCanvas);\n customElements.define(\"astro-dev-toolbar-tooltip\", DevToolbarTooltip);\n customElements.define(\"astro-dev-toolbar-highlight\", DevToolbarHighlight);\n customElements.define(\"astro-dev-toolbar-card\", DevToolbarCard);\n customElements.define(\"astro-dev-toolbar-toggle\", DevToolbarToggle);\n customElements.define(\"astro-dev-toolbar-button\", DevToolbarButton);\n customElements.define(\"astro-dev-toolbar-badge\", DevToolbarBadge);\n customElements.define(\"astro-dev-toolbar-icon\", DevToolbarIcon);\n customElements.define(\"astro-dev-toolbar-select\", DevToolbarSelect);\n customElements.define(\"astro-dev-toolbar-radio-checkbox\", DevToolbarRadioCheckbox);\n overlay = document.createElement(\"astro-dev-toolbar\");\n const notificationLevels = [\"error\", \"warning\", \"info\"];\n const notificationSVGs = {\n 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>',\n 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>',\n 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>'\n };\n const prepareApp = (appDefinition, builtIn) => {\n const eventTarget = new ToolbarAppEventTarget();\n const app = {\n ...appDefinition,\n builtIn,\n active: false,\n status: \"loading\",\n notification: { state: false, level: void 0 },\n eventTarget\n };\n eventTarget.addEventListener(\"toggle-notification\", (evt) => {\n if (!(evt instanceof CustomEvent)) return;\n const target = overlay.shadowRoot?.querySelector(`[data-app-id=\"${app.id}\"]`);\n if (!target) return;\n const notificationElement = target.querySelector(\".notification\");\n if (!notificationElement) return;\n let newState = evt.detail.state ?? true;\n let level = notificationLevels.includes(evt?.detail?.level) ? evt.detail.level : \"error\";\n app.notification.state = newState;\n if (newState) app.notification.level = level;\n notificationElement.toggleAttribute(\"data-active\", newState);\n if (newState) {\n notificationElement.setAttribute(\"data-level\", level);\n notificationElement.innerHTML = notificationSVGs[level];\n }\n });\n const onToggleApp = async (evt) => {\n let newState = void 0;\n if (evt instanceof CustomEvent) {\n newState = evt.detail.state ?? true;\n }\n await overlay.setAppStatus(app, newState);\n };\n eventTarget.addEventListener(\"toggle-app\", onToggleApp);\n return app;\n };\n const astroMoreApp = {\n id: \"astro:more\",\n name: \"More\",\n icon: \"dots-three\",\n init(canvas, eventTarget) {\n const hiddenApps = apps.filter((p) => !p.builtIn).slice(overlay.customAppsToShow);\n createDropdown();\n document.addEventListener(\"astro:after-swap\", createDropdown);\n function createDropdown() {\n const style = document.createElement(\"style\");\n style.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 canvas.append(style);\n const dropdown = document.createElement(\"div\");\n dropdown.id = \"dropdown\";\n dropdown.toggleAttribute(\"data-no-notification\", settings.config.disableAppNotification);\n for (const app of hiddenApps) {\n const buttonContainer = document.createElement(\"div\");\n buttonContainer.classList.add(\"item\");\n const button = document.createElement(\"button\");\n button.setAttribute(\"data-app-id\", app.id);\n const iconContainer = document.createElement(\"div\");\n const iconElement = document.createElement(\"template\");\n iconElement.innerHTML = app.icon ? getAppIcon(app.icon) : \"?\";\n iconContainer.append(iconElement.content.cloneNode(true));\n const notification = document.createElement(\"div\");\n notification.classList.add(\"notification\");\n iconContainer.append(notification);\n iconContainer.classList.add(\"icon\");\n button.append(iconContainer);\n button.append(document.createTextNode(app.name));\n button.addEventListener(\"click\", () => {\n overlay.toggleAppStatus(app);\n });\n buttonContainer.append(button);\n dropdown.append(buttonContainer);\n app.eventTarget.addEventListener(\"toggle-notification\", (evt) => {\n if (!(evt instanceof CustomEvent)) return;\n let newState = evt.detail.state ?? true;\n let level = notificationLevels.includes(evt?.detail?.level) ? evt.detail.level : \"error\";\n notification.toggleAttribute(\"data-active\", newState);\n if (newState) {\n notification.setAttribute(\"data-level\", level);\n notification.innerHTML = notificationSVGs[level];\n }\n app.notification.state = newState;\n if (newState) app.notification.level = level;\n eventTarget.dispatchEvent(\n new CustomEvent(\"toggle-notification\", {\n detail: {\n state: hiddenApps.some((p) => p.notification.state === true),\n level: [\"error\", \"warning\", \"info\"].find(\n (notificationLevel) => hiddenApps.some(\n (p) => p.notification.state === true && p.notification.level === notificationLevel\n )\n ) ?? \"error\"\n }\n })\n );\n });\n }\n canvas.append(dropdown);\n }\n }\n };\n const apps = [\n ...[astroDevToolApp, astroXrayApp, astroAuditApp, astroSettingsApp, astroMoreApp].map(\n (appDef) => prepareApp(appDef, true)\n ),\n ...customAppsDefinitions.map((appDef) => prepareApp(appDef, false))\n ];\n overlay.apps = apps;\n document.body.append(overlay);\n document.addEventListener(\"astro:after-swap\", () => {\n document.body.append(overlay);\n });\n});\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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"}
|