@janga/norna 0.7.11 → 0.7.13
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 +120 -108
- package/bin/norna-cli.mjs +1 -1
- package/docs/README.md +107 -75
- package/docs/assets/norna-dog-shelter.jpg +0 -0
- package/docs/commands.md +7 -4
- package/docs/configuration.md +86 -185
- package/docs/design/command-organization.md +1 -1
- package/docs/design/norna-diagram-design.md +2 -1
- package/docs/design/site-examples-structure.md +4 -1
- package/docs/engine-development.md +15 -8
- package/docs/getting-started.md +126 -144
- package/docs/how-to/embedded-site.md +35 -0
- package/docs/publishing.md +47 -46
- package/docs/requirements.md +54 -0
- package/docs/routes.md +1 -1
- package/docs/site-structure.md +4 -4
- package/docs/sitewide-content.md +2 -1
- package/docs/theme.md +18 -0
- package/examples/README.md +26 -24
- package/examples/complete-sites/dog-shelter-multi-page/.astro/content-assets.mjs +4 -1
- package/examples/complete-sites/dog-shelter-multi-page/.astro/content.d.ts +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/.astro/data-store.json +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.json +6 -8
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.log +26 -53
- package/examples/complete-sites/dog-shelter-multi-page/README.md +7 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/_metadata.json +29 -35
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{astro-D_GIpJIE.js → astro-B3JHJyiv.js} +4 -4
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro-B3JHJyiv.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_aria-query.js +151 -151
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_axobject-query.js +131 -131
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_html-escaper.js +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +10 -10
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{audit-DM9Hkl5B.js → audit-C3SVr7dT.js} +10 -10
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/audit-C3SVr7dT.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{highlight-DnZ1ULOL.js → highlight-BLtvqtzO.js} +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{icons-RyebKi45.js → icons-C92i61-2.js} +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/icons-C92i61-2.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{settings-DaU-gNnK.js → settings-v5GgKks_.js} +2 -2
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/settings-v5GgKks_.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{toolbar-63PA619H.js → toolbar-BFvJVp26.js} +2 -2
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{ui-library--bkcNSYz.js → ui-library-Cd35oAvo.js} +10 -10
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{window-jPkpKVcy.js → window-vo3A6TMn.js} +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/window-vo3A6TMn.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{xray-BXCHpEJP.js → xray-DwhzGckb.js} +3 -3
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/xray-DwhzGckb.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/.norna/generated-images.json +92 -12
- package/examples/complete-sites/dog-shelter-multi-page/site/config.md +3 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/content.md +12 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/images/intro/shelter-dog.jpg +0 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/public/logo.svg +9 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rex.jpg +0 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rover.jpg +0 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/route-content.md +11 -19
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/020-adopt/images/adopt/adoption-dog.jpg +0 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/020-adopt/route-content.md +11 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/sitewide-content.md +12 -2
- package/examples/complete-sites/dog-shelter-multi-page/site/theme.md +1 -23
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/site.schema.json +59 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/sitewide.schema.json +138 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/theme.schema.json +755 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/content-assets.mjs +4 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/content-modules.mjs +1 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/content.d.ts +183 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/data-store.json +1 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/dev.json +13 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/dev.log +14 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/settings.json +5 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/types.d.ts +2 -0
- package/examples/complete-sites/dog-shelter-single-page/README.md +7 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/_metadata.json +74 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro-B3JHJyiv.js +434 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro-B3JHJyiv.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/audit-C3SVr7dT.js +1534 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/audit-C3SVr7dT.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/highlight-BLtvqtzO.js +48 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/icons-C92i61-2.js +42 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/icons-C92i61-2.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/package.json +3 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/settings-v5GgKks_.js +190 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/settings-v5GgKks_.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/toolbar-BFvJVp26.js +458 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js +1016 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/window-vo3A6TMn.js +32 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/window-vo3A6TMn.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/xray-DwhzGckb.js +111 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/xray-DwhzGckb.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/site/.norna/generated-images.json +44 -12
- package/examples/complete-sites/dog-shelter-single-page/site/config.md +3 -0
- package/examples/complete-sites/dog-shelter-single-page/site/content.md +20 -24
- package/examples/complete-sites/dog-shelter-single-page/site/images/what-we-do/rescue-dog.jpg +0 -0
- package/examples/complete-sites/dog-shelter-single-page/site/images/you-can-help/foster-dog.jpg +0 -0
- package/examples/complete-sites/dog-shelter-single-page/site/public/logo.svg +9 -0
- package/examples/complete-sites/dog-shelter-single-page/site/sitewide-content.md +12 -2
- package/examples/complete-sites/dog-shelter-single-page/site/theme.md +1 -23
- package/examples/feature-demos/media-and-surfaces/.astro/data-store.json +1 -1
- package/examples/feature-demos/media-and-surfaces/.astro/dev.log +15 -2
- package/examples/feature-demos/media-and-surfaces/README.md +7 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/_metadata.json +7 -1
- package/examples/{complete-sites/dog-shelter-multi-page → feature-demos/media-and-surfaces}/node_modules/.vite/deps/embla-carousel.js +1 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/embla-carousel.js.map +1 -0
- package/examples/feature-demos/media-and-surfaces/site/config.md +3 -0
- package/examples/feature-demos/media-and-surfaces/site/content.md +5 -51
- package/examples/feature-demos/media-and-surfaces/site/routes/010-media/route-content.md +10 -25
- package/examples/feature-demos/media-and-surfaces/site/routes/020-surfaces/route-content.md +1 -1
- package/examples/feature-demos/sitewide-content/.astro/collections/site.schema.json +59 -0
- package/examples/feature-demos/sitewide-content/.astro/collections/sitewide.schema.json +138 -0
- package/examples/feature-demos/sitewide-content/.astro/collections/theme.schema.json +755 -0
- package/examples/feature-demos/sitewide-content/.astro/content-assets.mjs +1 -0
- package/examples/feature-demos/sitewide-content/.astro/content-modules.mjs +1 -0
- package/examples/feature-demos/sitewide-content/.astro/content.d.ts +183 -0
- package/examples/feature-demos/sitewide-content/.astro/data-store.json +1 -0
- package/examples/feature-demos/sitewide-content/.astro/dev.json +13 -0
- package/examples/feature-demos/sitewide-content/.astro/dev.log +18 -0
- package/examples/feature-demos/sitewide-content/.astro/settings.json +5 -0
- package/examples/feature-demos/sitewide-content/.astro/types.d.ts +2 -0
- package/examples/feature-demos/sitewide-content/README.md +18 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/_metadata.json +74 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro-B3JHJyiv.js +434 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro-B3JHJyiv.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/audit-C3SVr7dT.js +1534 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/audit-C3SVr7dT.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/highlight-BLtvqtzO.js +48 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/icons-C92i61-2.js +42 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/icons-C92i61-2.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/package.json +3 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/settings-v5GgKks_.js +190 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/settings-v5GgKks_.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/toolbar-BFvJVp26.js +458 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/ui-library-Cd35oAvo.js +1016 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/window-vo3A6TMn.js +32 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/window-vo3A6TMn.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/xray-DwhzGckb.js +111 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/xray-DwhzGckb.js.map +1 -0
- package/examples/feature-demos/sitewide-content/site/.norna/generated-images.json +1 -0
- package/examples/feature-demos/sitewide-content/site/config.md +3 -0
- package/examples/feature-demos/sitewide-content/site/content.md +16 -0
- package/examples/feature-demos/sitewide-content/site/public/logo.svg +6 -0
- package/examples/feature-demos/sitewide-content/site/public/robots.txt +2 -0
- package/examples/feature-demos/sitewide-content/site/routes/010-identity/route-content.md +20 -0
- package/examples/feature-demos/sitewide-content/site/routes/020-notices/route-content.md +22 -0
- package/examples/feature-demos/sitewide-content/site/routes/030-footer/route-content.md +17 -0
- package/examples/feature-demos/sitewide-content/site/sitewide-content.md +33 -0
- package/examples/feature-demos/sitewide-content/site/theme.md +3 -0
- package/examples/feature-demos/theme-presets/.astro/dev.log +37 -0
- package/examples/feature-demos/theme-presets/README.md +5 -1
- package/examples/feature-demos/theme-presets/site/config.md +3 -0
- package/fixtures/basic/site/config.md +3 -0
- package/fixtures/content-model-v2/site/config.md +3 -0
- package/package.json +12 -7
- package/scripts/build-pages.mjs +4 -6
- package/scripts/check-config.mjs +1 -10
- package/scripts/deploy-site.mjs +12 -8
- package/scripts/lib/example-sites.mjs +3 -0
- package/scripts/lib/github-repository.mjs +44 -0
- package/scripts/lib/norna-markdown-blocks.mjs +97 -10
- package/scripts/lib/project-config.mjs +112 -123
- package/scripts/lib/site-content.mjs +7 -0
- package/scripts/lib/site-paths.mjs +6 -2
- package/scripts/test-client-javascript.mjs +221 -0
- package/scripts/test-content-check.mjs +103 -0
- package/scripts/test-content-model-v2.mjs +9 -13
- package/scripts/test-documentation.mjs +116 -0
- package/scripts/test-engine-commands.mjs +12 -3
- package/scripts/test-examples.mjs +9 -0
- package/scripts/test-package-check.mjs +17 -9
- package/scripts/test-project-config.mjs +125 -0
- package/scripts/test-temporary-visibility.mjs +3 -10
- package/scripts/test-theme-presets.mjs +3 -8
- package/scripts/watch-pages-deploy.mjs +15 -11
- package/src/components/GalleryGrid.astro +30 -230
- package/src/components/ImageCarousel.astro +184 -0
- package/src/components/MobileSectionNavigationScript.astro +14 -0
- package/src/components/SiteNavigation.astro +54 -341
- package/src/components/SiteNotesScript.astro +43 -0
- package/src/components/SitePage.astro +4 -1
- package/src/components/SiteSection.astro +4 -47
- package/src/layouts/BaseLayout.astro +1 -1
- package/src/lib/galleryImages.ts +53 -0
- package/src/styles/global.css +81 -1
- package/starters/basic/.github/workflows/deploy.yml +1 -2
- package/starters/basic/README.md +10 -8
- package/starters/basic/site/config.md +3 -0
- package/starters/project/.github/workflows/deploy.yml +1 -2
- package/starters/project/README.md +3 -4
- package/starters/project/site/config.md +3 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/embla-carousel.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/site/config.mjs +0 -30
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rex.svg +0 -19
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rover.svg +0 -19
- package/examples/complete-sites/dog-shelter-single-page/site/config.mjs +0 -30
- package/examples/complete-sites/dog-shelter-single-page/site/images/what-we-do/dog-house.svg +0 -25
- package/examples/complete-sites/dog-shelter-single-page/site/images/you-can-help/heart.svg +0 -13
- package/examples/feature-demos/media-and-surfaces/site/config.mjs +0 -30
- package/examples/feature-demos/media-and-surfaces/site/routes/010-media/theme.md +0 -3
- package/examples/feature-demos/theme-presets/site/config.mjs +0 -30
- package/fixtures/basic/site/config.mjs +0 -27
- package/fixtures/content-model-v2/site/config.mjs +0 -11
- package/starters/basic/site/config.mjs +0 -27
- package/starters/project/site/config.mjs +0 -30
|
@@ -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-C3SVr7dT.js"),
|
|
248
|
+
import("./xray-DwhzGckb.js"),
|
|
249
|
+
import("./settings-v5GgKks_.js"),
|
|
250
|
+
import("./toolbar-BFvJVp26.js"),
|
|
251
|
+
import("./ui-library-Cd35oAvo.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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"}
|