@grove-dev/astro 0.2.10 → 0.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/README.md +26 -18
  2. package/dist/lib/display.d.ts +11 -17
  3. package/dist/lib/display.d.ts.map +1 -1
  4. package/dist/lib/display.js +43 -43
  5. package/dist/lib/display.js.map +1 -1
  6. package/dist/lib/format.d.ts +6 -7
  7. package/dist/lib/format.d.ts.map +1 -1
  8. package/dist/lib/format.js +11 -12
  9. package/dist/lib/format.js.map +1 -1
  10. package/dist/lib/lenses.d.ts +35 -73
  11. package/dist/lib/lenses.d.ts.map +1 -1
  12. package/dist/lib/lenses.js +144 -126
  13. package/dist/lib/lenses.js.map +1 -1
  14. package/dist/lib/repo.d.ts +12 -22
  15. package/dist/lib/repo.d.ts.map +1 -1
  16. package/dist/lib/repo.js +13 -25
  17. package/dist/lib/repo.js.map +1 -1
  18. package/dist/lib/scores.d.ts +15 -16
  19. package/dist/lib/scores.d.ts.map +1 -1
  20. package/dist/lib/scores.js +4 -11
  21. package/dist/lib/scores.js.map +1 -1
  22. package/dist/lib/search.d.ts +44 -129
  23. package/dist/lib/search.d.ts.map +1 -1
  24. package/dist/lib/search.js +192 -180
  25. package/dist/lib/search.js.map +1 -1
  26. package/dist/lib/taxonomy-counts.d.ts +7 -21
  27. package/dist/lib/taxonomy-counts.d.ts.map +1 -1
  28. package/dist/lib/taxonomy-counts.js +12 -31
  29. package/dist/lib/taxonomy-counts.js.map +1 -1
  30. package/package.json +4 -4
  31. package/src/components/CategoryGrid.astro +43 -31
  32. package/src/components/ContributorsGrid.astro +3 -3
  33. package/src/components/CurationGrid.astro +41 -0
  34. package/src/components/ExploreByStack.astro +6 -0
  35. package/src/components/FilterGroupMenu.astro +49 -0
  36. package/src/components/FilterOptions.astro +44 -0
  37. package/src/components/Hero.astro +198 -147
  38. package/src/components/Icon.astro +10 -3
  39. package/src/components/IndexRow.astro +75 -0
  40. package/src/components/ItemCard.astro +266 -248
  41. package/src/components/Pagination.astro +63 -0
  42. package/src/components/RecordSection.astro +70 -34
  43. package/src/components/RefinePanel.astro +115 -141
  44. package/src/components/StackGrid.astro +32 -24
  45. package/src/components/WhyThisExists.astro +32 -32
  46. package/src/layouts/BaseLayout.astro +104 -49
  47. package/src/layouts/Container.astro +5 -44
  48. package/src/layouts/Footer.astro +31 -20
  49. package/src/layouts/Header.astro +40 -19
  50. package/src/layouts/SectionHeader.astro +27 -43
  51. package/src/layouts/Seo.astro +38 -56
  52. package/src/layouts/ThemeToggle.astro +35 -48
  53. package/src/lib/display.ts +46 -53
  54. package/src/lib/format.ts +11 -12
  55. package/src/lib/lenses.ts +151 -172
  56. package/src/lib/repo.ts +17 -28
  57. package/src/lib/scores.ts +15 -19
  58. package/src/lib/search.ts +218 -291
  59. package/src/lib/taxonomy-counts.ts +12 -46
  60. package/src/styles.css +209 -1
  61. package/templates/default/.github/ISSUE_TEMPLATE/bug_report.md +33 -0
  62. package/templates/default/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  63. package/templates/default/.github/ISSUE_TEMPLATE/record_submission.md +48 -0
  64. package/templates/default/.github/pull_request_template.md +27 -0
  65. package/templates/default/.github/workflows/build.yml +55 -0
  66. package/templates/default/.github/workflows/cleanup-stale-records.yml +48 -0
  67. package/templates/default/.github/workflows/daily-refresh.yml +53 -0
  68. package/templates/default/.github/workflows/sync-contributors.yml +53 -0
  69. package/templates/default/.github/workflows/sync-github-metadata.yml +58 -0
  70. package/templates/default/.github/workflows/validate-data.yml +35 -0
  71. package/templates/default/data/records/coolify.yml +46 -0
  72. package/templates/default/data/records/gitea.yml +46 -0
  73. package/templates/default/data/records/hoppscotch.yml +47 -0
  74. package/templates/default/data/records/inventree.yml +47 -0
  75. package/templates/default/data/records/label-studio.yml +46 -0
  76. package/templates/default/data/records/logseq.yml +48 -0
  77. package/templates/default/data/records/private-gpt.yml +47 -0
  78. package/templates/default/data/records/wakapi.yml +44 -0
  79. package/templates/default/data/taxonomy/categories.yml +47 -0
  80. package/templates/default/data/taxonomy/distribution-channels.yml +43 -0
  81. package/templates/default/data/taxonomy/platforms.yml +27 -0
  82. package/templates/default/data/taxonomy/stacks.yml +41 -0
  83. package/templates/default/grove.config.ts +1 -1
  84. package/templates/default/package.json +5 -4
  85. package/templates/default/public/icons/stacks/bun.svg +1 -0
  86. package/templates/default/public/icons/stacks/clojure.svg +1 -0
  87. package/templates/default/public/icons/stacks/clojurescript.svg +1 -0
  88. package/templates/default/public/icons/stacks/deno.svg +1 -0
  89. package/templates/default/public/icons/stacks/django.svg +1 -0
  90. package/templates/default/public/icons/stacks/docker.svg +1 -0
  91. package/templates/default/public/icons/stacks/go.svg +1 -0
  92. package/templates/default/public/icons/stacks/llm.svg +1 -0
  93. package/templates/default/public/icons/stacks/node.js.svg +1 -0
  94. package/templates/default/public/icons/stacks/sveltekit.svg +1 -0
  95. package/templates/default/public/icons/stacks/vue.svg +1 -0
  96. package/templates/default/public/llms-full.txt +197 -5
  97. package/templates/default/public/llms.txt +107 -6
  98. package/templates/default/public/sitemap.xml +63 -0
  99. package/templates/default/scripts/build-llms.mjs +123 -0
  100. package/templates/default/scripts/build-records-json.mjs +27 -0
  101. package/templates/default/scripts/build-sitemap.mjs +20 -0
  102. package/templates/default/scripts/cleanup-stale-records.mjs +20 -0
  103. package/templates/default/scripts/enrich-github-metadata.mjs +99 -0
  104. package/templates/default/scripts/fetch-icons.mjs +137 -0
  105. package/templates/default/scripts/migrate-legacy-to-schema-v1.mjs +86 -0
  106. package/templates/default/scripts/parse-legacy-readme.mjs +59 -0
  107. package/templates/default/scripts/refresh-records-activity.mjs +24 -0
  108. package/templates/default/scripts/repair-license-format.mjs +72 -0
  109. package/templates/default/scripts/report-cleanup-candidates.mjs +21 -0
  110. package/templates/default/scripts/seed-from-github.mjs +62 -0
  111. package/templates/default/scripts/sync-contributors.mjs +145 -0
  112. package/templates/default/scripts/sync-github-metadata.mjs +28 -0
  113. package/templates/default/scripts/validate-records.mjs +27 -0
  114. package/templates/default/src/data/records.ts +138 -51
  115. package/templates/default/src/pages/404.astro +64 -0
  116. package/templates/default/src/pages/{projects/[slug].astro → [slug]/[recordSlug].astro} +236 -66
  117. package/templates/default/src/pages/[slug]/index.astro +477 -0
  118. package/templates/default/src/pages/about.astro +165 -82
  119. package/templates/default/src/pages/apps/[recordSlug].astro +33 -0
  120. package/templates/default/src/pages/contributors.astro +184 -0
  121. package/templates/default/src/pages/index.astro +119 -162
  122. package/templates/default/src/pages/submit.astro +276 -114
  123. package/templates/default/wrangler.jsonc +28 -0
  124. package/LICENSE +0 -21
  125. package/src/components/AppsIndexRow.astro +0 -204
  126. package/src/components/AppsPagination.astro +0 -126
  127. package/templates/default/.astro/content.d.ts +0 -155
  128. package/templates/default/.astro/settings.json +0 -5
  129. package/templates/default/.astro/types.d.ts +0 -1
  130. package/templates/default/data/generated/apps.json +0 -1
  131. package/templates/default/data/generated/records.full.json +0 -8
  132. package/templates/default/data/generated/records.index.json +0 -7
  133. package/templates/default/data/generated/records.json +0 -8
  134. package/templates/default/data/generated/repo-stats.json +0 -1
  135. package/templates/default/data/generated/site-config.json +0 -31
  136. package/templates/default/dist/_astro/BaseLayout.Dz_HR-68.css +0 -1
  137. package/templates/default/dist/about/index.html +0 -165
  138. package/templates/default/dist/icons/platforms/android.svg +0 -1
  139. package/templates/default/dist/icons/platforms/apple-dark.svg +0 -1
  140. package/templates/default/dist/icons/platforms/apple-light.svg +0 -1
  141. package/templates/default/dist/icons/platforms/chrome.svg +0 -1
  142. package/templates/default/dist/icons/platforms/chromeos.svg +0 -5
  143. package/templates/default/dist/icons/platforms/desktop.svg +0 -4
  144. package/templates/default/dist/icons/platforms/embedded.svg +0 -5
  145. package/templates/default/dist/icons/platforms/ios.svg +0 -1
  146. package/templates/default/dist/icons/platforms/linux.svg +0 -1
  147. package/templates/default/dist/icons/platforms/macos.svg +0 -1
  148. package/templates/default/dist/icons/platforms/ubuntu.svg +0 -1
  149. package/templates/default/dist/icons/platforms/web.svg +0 -5
  150. package/templates/default/dist/icons/platforms/windows.svg +0 -6
  151. package/templates/default/dist/icons/stacks/android.svg +0 -1
  152. package/templates/default/dist/icons/stacks/apple-dark.svg +0 -1
  153. package/templates/default/dist/icons/stacks/apple-light.svg +0 -1
  154. package/templates/default/dist/icons/stacks/capacitor.svg +0 -14
  155. package/templates/default/dist/icons/stacks/dart.svg +0 -1
  156. package/templates/default/dist/icons/stacks/firebase.svg +0 -1
  157. package/templates/default/dist/icons/stacks/flutter.svg +0 -1
  158. package/templates/default/dist/icons/stacks/graphql.svg +0 -1
  159. package/templates/default/dist/icons/stacks/ionic.svg +0 -4
  160. package/templates/default/dist/icons/stacks/java.svg +0 -1
  161. package/templates/default/dist/icons/stacks/javascript.svg +0 -1
  162. package/templates/default/dist/icons/stacks/kotlin.svg +0 -1
  163. package/templates/default/dist/icons/stacks/mongodb.svg +0 -1
  164. package/templates/default/dist/icons/stacks/nodejs.svg +0 -1
  165. package/templates/default/dist/icons/stacks/python.svg +0 -1
  166. package/templates/default/dist/icons/stacks/react-native.svg +0 -1
  167. package/templates/default/dist/icons/stacks/react.svg +0 -1
  168. package/templates/default/dist/icons/stacks/rust.svg +0 -1
  169. package/templates/default/dist/icons/stacks/solidity.svg +0 -1
  170. package/templates/default/dist/icons/stacks/swift.svg +0 -1
  171. package/templates/default/dist/icons/stacks/tensorflow.svg +0 -1
  172. package/templates/default/dist/icons/stacks/typescript.svg +0 -1
  173. package/templates/default/dist/index.html +0 -55
  174. package/templates/default/dist/llms-full.txt +0 -14
  175. package/templates/default/dist/llms.txt +0 -11
  176. package/templates/default/dist/og-image.svg +0 -48
  177. package/templates/default/dist/projects/index.html +0 -61
  178. package/templates/default/dist/robots.txt +0 -53
  179. package/templates/default/dist/sitemap.xml +0 -21
  180. package/templates/default/dist/submit/index.html +0 -69
  181. package/templates/default/node_modules/.bin/astro +0 -21
  182. package/templates/default/node_modules/.bin/astro-check +0 -21
  183. package/templates/default/node_modules/.bin/grove +0 -21
  184. package/templates/default/node_modules/.bin/jiti +0 -21
  185. package/templates/default/node_modules/.bin/prettier +0 -21
  186. package/templates/default/node_modules/.bin/rollup +0 -21
  187. package/templates/default/node_modules/.bin/tsc +0 -21
  188. package/templates/default/node_modules/.bin/tsserver +0 -21
  189. package/templates/default/node_modules/.bin/tsx +0 -21
  190. package/templates/default/node_modules/.bin/vite +0 -21
  191. package/templates/default/node_modules/.bin/yaml +0 -21
  192. package/templates/default/node_modules/.vite/deps/_metadata.json +0 -79
  193. package/templates/default/node_modules/.vite/deps/astro-KRVZHBC5.js +0 -433
  194. package/templates/default/node_modules/.vite/deps/astro-KRVZHBC5.js.map +0 -7
  195. package/templates/default/node_modules/.vite/deps/astro___aria-query.js +0 -5
  196. package/templates/default/node_modules/.vite/deps/astro___aria-query.js.map +0 -7
  197. package/templates/default/node_modules/.vite/deps/astro___axobject-query.js +0 -5
  198. package/templates/default/node_modules/.vite/deps/astro___axobject-query.js.map +0 -7
  199. package/templates/default/node_modules/.vite/deps/astro___html-escaper.js +0 -9
  200. package/templates/default/node_modules/.vite/deps/astro___html-escaper.js.map +0 -7
  201. package/templates/default/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -241
  202. package/templates/default/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -7
  203. package/templates/default/node_modules/.vite/deps/audit-GYHQ3ITH.js +0 -1592
  204. package/templates/default/node_modules/.vite/deps/audit-GYHQ3ITH.js.map +0 -7
  205. package/templates/default/node_modules/.vite/deps/chunk-5WRI5ZAA.js +0 -30
  206. package/templates/default/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map +0 -7
  207. package/templates/default/node_modules/.vite/deps/chunk-7P4KIK53.js +0 -186
  208. package/templates/default/node_modules/.vite/deps/chunk-7P4KIK53.js.map +0 -7
  209. package/templates/default/node_modules/.vite/deps/chunk-BQGHFQJH.js +0 -48
  210. package/templates/default/node_modules/.vite/deps/chunk-BQGHFQJH.js.map +0 -7
  211. package/templates/default/node_modules/.vite/deps/chunk-CJCDKWP2.js +0 -6779
  212. package/templates/default/node_modules/.vite/deps/chunk-CJCDKWP2.js.map +0 -7
  213. package/templates/default/node_modules/.vite/deps/chunk-FHJ3XBDE.js +0 -33
  214. package/templates/default/node_modules/.vite/deps/chunk-FHJ3XBDE.js.map +0 -7
  215. package/templates/default/node_modules/.vite/deps/chunk-FQEMNIUQ.js +0 -88
  216. package/templates/default/node_modules/.vite/deps/chunk-FQEMNIUQ.js.map +0 -7
  217. package/templates/default/node_modules/.vite/deps/chunk-HBSVDAQD.js +0 -72
  218. package/templates/default/node_modules/.vite/deps/chunk-HBSVDAQD.js.map +0 -7
  219. package/templates/default/node_modules/.vite/deps/chunk-HDOQ2U3U.js +0 -3757
  220. package/templates/default/node_modules/.vite/deps/chunk-HDOQ2U3U.js.map +0 -7
  221. package/templates/default/node_modules/.vite/deps/chunk-XEBKRCNE.js +0 -54
  222. package/templates/default/node_modules/.vite/deps/chunk-XEBKRCNE.js.map +0 -7
  223. package/templates/default/node_modules/.vite/deps/package.json +0 -3
  224. package/templates/default/node_modules/.vite/deps/settings-C5H4VHXU.js +0 -213
  225. package/templates/default/node_modules/.vite/deps/settings-C5H4VHXU.js.map +0 -7
  226. package/templates/default/node_modules/.vite/deps/toolbar-H5DB6HVP.js +0 -525
  227. package/templates/default/node_modules/.vite/deps/toolbar-H5DB6HVP.js.map +0 -7
  228. package/templates/default/node_modules/.vite/deps/ui-library-JGHU6JE2.js +0 -1020
  229. package/templates/default/node_modules/.vite/deps/ui-library-JGHU6JE2.js.map +0 -7
  230. package/templates/default/node_modules/.vite/deps/xray-EFCQOW4E.js +0 -147
  231. package/templates/default/node_modules/.vite/deps/xray-EFCQOW4E.js.map +0 -7
  232. package/templates/default/src/components/layout/BaseLayout.astro +0 -47
  233. package/templates/default/src/components/layout/Container.astro +0 -18
  234. package/templates/default/src/components/layout/Footer.astro +0 -27
  235. package/templates/default/src/components/layout/Header.astro +0 -43
  236. package/templates/default/src/lib/markdown.ts +0 -171
  237. package/templates/default/src/pages/projects/index.astro +0 -193
@@ -1,525 +0,0 @@
1
- import {
2
- serverHelpers
3
- } from "./chunk-FQEMNIUQ.js";
4
- import {
5
- getIconElement,
6
- isDefinedIcon
7
- } from "./chunk-BQGHFQJH.js";
8
- import {
9
- settings
10
- } from "./chunk-7P4KIK53.js";
11
- import "./chunk-5WRI5ZAA.js";
12
-
13
- // ../../../../node_modules/.pnpm/astro@6.4.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_rollup@4.61.1_tsx@4.22.4_yaml@2.9.0/node_modules/astro/dist/runtime/client/dev-toolbar/toolbar.js
14
- var WS_EVENT_NAME = "astro-dev-toolbar";
15
- var HOVER_DELAY = 2 * 1e3;
16
- var DEVBAR_HITBOX_ABOVE = 42;
17
- var AstroDevToolbar = class extends HTMLElement {
18
- shadowRoot;
19
- delayedHideTimeout;
20
- devToolbarContainer;
21
- apps = [];
22
- hasBeenInitialized = false;
23
- // TODO: This should be dynamic based on the screen size or at least configurable, erika - 2023-11-29
24
- customAppsToShow = 3;
25
- constructor() {
26
- super();
27
- this.shadowRoot = this.attachShadow({ mode: "open" });
28
- }
29
- /**
30
- * All one-time DOM setup runs through here. Only ever call this once,
31
- * in connectedCallback(), and protect it from being called again.
32
- */
33
- init() {
34
- this.shadowRoot.innerHTML = `
35
- <style>
36
- :host {
37
- /* Important! Reset all inherited styles to initial */
38
- all: initial;
39
- z-index: 999999;
40
- view-transition-name: astro-dev-toolbar;
41
- display: contents;
42
-
43
- /* Hide the dev toolbar on window.print() (CTRL + P) */
44
- @media print {
45
- display: none;
46
- }
47
- }
48
-
49
- ::view-transition-old(astro-dev-toolbar),
50
- ::view-transition-new(astro-dev-toolbar) {
51
- animation: none;
52
- }
53
-
54
- #dev-toolbar-root {
55
- position: fixed;
56
- bottom: 0px;
57
- z-index: 2000000010;
58
- display: flex;
59
- flex-direction: column;
60
- align-items: center;
61
- transition: bottom 0.35s cubic-bezier(0.485, -0.050, 0.285, 1.505);
62
- pointer-events: none;
63
- }
64
-
65
- #dev-toolbar-root[data-hidden] {
66
- bottom: -40px;
67
- }
68
-
69
- #dev-toolbar-root[data-hidden] #dev-bar .item {
70
- opacity: 0.2;
71
- }
72
-
73
- #dev-toolbar-root[data-placement="bottom-left"] {
74
- left: 16px;
75
- }
76
- #dev-toolbar-root[data-placement="bottom-center"] {
77
- left: 50%;
78
- transform: translateX(-50%);
79
- }
80
- #dev-toolbar-root[data-placement="bottom-right"] {
81
- right: 16px;
82
- }
83
-
84
- #dev-bar-hitbox-above,
85
- #dev-bar-hitbox-below {
86
- width: 100%;
87
- pointer-events: auto;
88
- }
89
- #dev-bar-hitbox-above {
90
- height: ${DEVBAR_HITBOX_ABOVE}px;
91
- }
92
- #dev-bar-hitbox-below {
93
- height: 16px;
94
- }
95
- #dev-bar {
96
- height: 40px;
97
- overflow: hidden;
98
- pointer-events: auto;
99
- background: linear-gradient(180deg, #13151A 0%, rgba(19, 21, 26, 0.88) 100%);
100
- border: 1px solid #343841;
101
- border-radius: 9999px;
102
- 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);
103
- }
104
-
105
- @media (forced-colors: active) {
106
- #dev-bar {
107
- background: white;
108
- }
109
- }
110
-
111
- #dev-bar .item {
112
- display: flex;
113
- justify-content: center;
114
- align-items: center;
115
- width: 44px;
116
- border: 0;
117
- background: transparent;
118
- color: white;
119
- font-family: system-ui, sans-serif;
120
- font-size: 1rem;
121
- line-height: 1.2;
122
- white-space: nowrap;
123
- text-decoration: none;
124
- padding: 0;
125
- margin: 0;
126
- overflow: hidden;
127
- transition: opacity 0.2s ease-out 0s;
128
- }
129
-
130
- #dev-bar #bar-container .item:hover, #dev-bar #bar-container .item:focus-visible {
131
- background: #FFFFFF20;
132
- cursor: pointer;
133
- outline-offset: -3px;
134
- }
135
-
136
- #dev-bar #bar-container .item[data-app-error]:hover, #dev-bar #bar-container .item[data-app-error]:focus-visible {
137
- cursor: not-allowed;
138
- background: #ff252520;
139
- }
140
-
141
- #dev-bar .item:first-of-type {
142
- border-top-left-radius: 9999px;
143
- border-bottom-left-radius: 9999px;
144
- width: 42px;
145
- padding-left: 4px;
146
- }
147
-
148
- #dev-bar .item:last-of-type {
149
- border-top-right-radius: 9999px;
150
- border-bottom-right-radius: 9999px;
151
- width: 42px;
152
- padding-right: 4px;
153
- }
154
- #dev-bar #bar-container .item.active {
155
- background: rgba(71, 78, 94, 1);
156
- }
157
-
158
- #dev-bar .item-tooltip {
159
- background: linear-gradient(0deg, #13151A, #13151A), linear-gradient(0deg, #343841, #343841);
160
- border: 1px solid rgba(52, 56, 65, 1);
161
- border-radius: 4px;
162
- padding: 4px 8px;
163
- position: absolute;
164
- top: ${4 - DEVBAR_HITBOX_ABOVE}px;
165
- font-size: 14px;
166
- opacity: 0;
167
- transition: opacity 0.2s ease-in-out 0s;
168
- pointer-events: none;
169
- user-select: none;
170
- }
171
-
172
- #dev-bar .item-tooltip::after{
173
- content: '';
174
- position: absolute;
175
- left: calc(50% - 5px);
176
- bottom: -6px;
177
- border-left: 5px solid transparent;
178
- border-right: 5px solid transparent;
179
- border-top: 5px solid #343841;
180
- }
181
-
182
- #dev-bar .item[data-app-error] .icon {
183
- opacity: 0.35;
184
- }
185
-
186
- #dev-bar .item:hover .item-tooltip, #dev-bar .item:not(.active):focus-visible .item-tooltip {
187
- transition: opacity 0.2s ease-in-out 200ms;
188
- opacity: 1;
189
- }
190
-
191
- @media (forced-colors: active) {
192
- #dev-bar .item:hover .item-tooltip,
193
- #dev-bar .item:not(.active):focus-visible .item-tooltip {
194
- background: white;
195
- }
196
- }
197
-
198
- #dev-bar #bar-container .item:hover .notification rect, #dev-bar #bar-container .item:hover .notification path {
199
- stroke: #38393D;
200
- --fill: var(--fill-hover);
201
- }
202
-
203
- #dev-bar #bar-container .item.active .notification rect, #dev-bar #bar-container .item.active .notification path {
204
- stroke: #454C5C;
205
- --fill: var(--fill-hover);
206
- }
207
-
208
- #dev-bar .item .icon {
209
- position: relative;
210
- max-width: 20px;
211
- max-height: 20px;
212
- user-select: none;
213
- }
214
-
215
- #dev-bar .item .icon>svg {
216
- width: 20px;
217
- height: 20px;
218
- display: block;
219
- margin: auto;
220
- }
221
-
222
- @media (forced-colors: active) {
223
- #dev-bar .item svg path[fill="#fff"] {
224
- fill: black;
225
- }
226
- }
227
-
228
- #dev-bar .item .notification {
229
- display: none;
230
- position: absolute;
231
- top: -4px;
232
- right: -6px;
233
- width: 10px;
234
- height: 10px;
235
- }
236
-
237
- #dev-bar .item .notification svg {
238
- display: block;
239
- }
240
-
241
- #dev-toolbar-root:not([data-no-notification]) #dev-bar .item .notification[data-active] {
242
- display: block;
243
- }
244
-
245
- #dev-bar #bar-container {
246
- height: 100%;
247
- display: flex;
248
- }
249
-
250
- #dev-bar .separator {
251
- background: rgba(52, 56, 65, 1);
252
- width: 1px;
253
- }
254
- </style>
255
- <div id="dev-toolbar-root" data-hidden ${settings.config.disableAppNotification ? "data-no-notification" : ""} data-placement="${settings.config.placement}">
256
- <div id="dev-bar-hitbox-above"></div>
257
- <div id="dev-bar">
258
- <div id="bar-container">
259
- ${this.apps.filter((app) => app.builtIn && !["astro:settings", "astro:more"].includes(app.id)).map((app) => this.getAppTemplate(app)).join("")}
260
- ${this.apps.filter((app) => !app.builtIn).length > 0 ? `<div class="separator"></div>${this.apps.filter((app) => !app.builtIn).slice(0, this.customAppsToShow).map((app) => this.getAppTemplate(app)).join("")}` : ""}
261
- ${this.apps.filter((app) => !app.builtIn).length > this.customAppsToShow ? this.getAppTemplate(
262
- this.apps.find((app) => app.builtIn && app.id === "astro:more")
263
- ) : ""}
264
- <div class="separator"></div>
265
- ${this.getAppTemplate(
266
- this.apps.find((app) => app.builtIn && app.id === "astro:settings")
267
- )}
268
- </div>
269
- </div>
270
- <div id="dev-bar-hitbox-below"></div>
271
- </div>`;
272
- this.devToolbarContainer = this.shadowRoot.querySelector("#dev-toolbar-root");
273
- this.attachEvents();
274
- this.apps.forEach(async (app) => {
275
- settings.logger.verboseLog(`Creating app canvas for ${app.id}`);
276
- const appCanvas = document.createElement("astro-dev-toolbar-app-canvas");
277
- appCanvas.dataset.appId = app.id;
278
- this.shadowRoot?.append(appCanvas);
279
- });
280
- if ("requestIdleCallback" in window) {
281
- window.requestIdleCallback(
282
- async () => {
283
- this.apps.map((app) => this.initApp(app));
284
- },
285
- { timeout: 300 }
286
- );
287
- } else {
288
- setTimeout(async () => {
289
- this.apps.map((app) => this.initApp(app));
290
- }, 300);
291
- }
292
- }
293
- // This is called whenever the component is connected to the DOM.
294
- // This happens on first page load, and on each page change when
295
- // view transitions are used.
296
- connectedCallback() {
297
- if (!this.hasBeenInitialized) {
298
- this.init();
299
- this.hasBeenInitialized = true;
300
- }
301
- this.apps.forEach(async (app) => {
302
- await this.setAppStatus(app, app.active);
303
- });
304
- }
305
- attachEvents() {
306
- const items = this.shadowRoot.querySelectorAll(".item");
307
- items.forEach((item) => {
308
- item.addEventListener("click", async (event) => {
309
- const target = event.currentTarget;
310
- if (!target || !(target instanceof HTMLElement)) return;
311
- const id = target.dataset.appId;
312
- if (!id) return;
313
- const app = this.getAppById(id);
314
- if (!app) return;
315
- event.stopPropagation();
316
- await this.toggleAppStatus(app);
317
- });
318
- });
319
- ["mouseenter", "focusin"].forEach((event) => {
320
- this.devToolbarContainer.addEventListener(event, () => {
321
- this.clearDelayedHide();
322
- if (this.isHidden()) {
323
- this.setToolbarVisible(true);
324
- }
325
- });
326
- });
327
- ["mouseleave", "focusout"].forEach((event) => {
328
- this.devToolbarContainer.addEventListener(event, () => {
329
- this.clearDelayedHide();
330
- if (this.getActiveApp() || this.isHidden()) {
331
- return;
332
- }
333
- this.triggerDelayedHide();
334
- });
335
- });
336
- document.addEventListener("keyup", (event) => {
337
- if (event.key !== "Escape") return;
338
- if (this.isHidden()) return;
339
- const activeApp = this.getActiveApp();
340
- if (activeApp) {
341
- this.toggleAppStatus(activeApp);
342
- } else {
343
- this.setToolbarVisible(false);
344
- }
345
- });
346
- }
347
- async initApp(app) {
348
- const shadowRoot = this.getAppCanvasById(app.id).shadowRoot;
349
- app.status = "loading";
350
- try {
351
- settings.logger.verboseLog(`Initializing app ${app.id}`);
352
- await app.init?.(shadowRoot, app.eventTarget, serverHelpers);
353
- app.status = "ready";
354
- if (import.meta.hot) {
355
- import.meta.hot.send(`${WS_EVENT_NAME}:${app.id}:initialized`);
356
- }
357
- } catch (e) {
358
- console.error(`Failed to init app ${app.id}, error: ${e}`);
359
- app.status = "error";
360
- if (import.meta.hot) {
361
- import.meta.hot.send("astro:devtoolbar:error:init", {
362
- app,
363
- error: e instanceof Error ? e.stack : e
364
- });
365
- }
366
- const appButton = this.getAppButtonById(app.id);
367
- const appTooltip = appButton?.querySelector(".item-tooltip");
368
- if (appButton && appTooltip) {
369
- appButton.toggleAttribute("data-app-error", true);
370
- appTooltip.innerText = `Error initializing ${app.name}`;
371
- }
372
- }
373
- }
374
- getAppTemplate(app) {
375
- return `<button class="item" data-app-id="${app.id}">
376
- <div class="icon">${app.icon ? getAppIcon(app.icon) : "?"}<div class="notification"></div></div>
377
- <span class="item-tooltip">${app.name}</span>
378
- </button>`;
379
- }
380
- getAppById(id) {
381
- return this.apps.find((app) => app.id === id);
382
- }
383
- getAppCanvasById(id) {
384
- return this.shadowRoot.querySelector(
385
- `astro-dev-toolbar-app-canvas[data-app-id="${id}"]`
386
- );
387
- }
388
- getAppButtonById(id) {
389
- return this.shadowRoot.querySelector(`[data-app-id="${id}"]`);
390
- }
391
- async toggleAppStatus(app) {
392
- const activeApp = this.getActiveApp();
393
- if (activeApp) {
394
- const closeApp = await this.setAppStatus(activeApp, false);
395
- if (!closeApp) return;
396
- }
397
- if (app.status !== "ready") return;
398
- if (app !== activeApp) {
399
- await this.setAppStatus(app, true);
400
- if (import.meta.hot && app.id !== "astro:more") {
401
- import.meta.hot.send("astro:devtoolbar:app:toggled", {
402
- app
403
- });
404
- }
405
- }
406
- }
407
- async setAppStatus(app, newStatus) {
408
- const appCanvas = this.getAppCanvasById(app.id);
409
- if (!appCanvas) return false;
410
- if (app.active && !newStatus && app.beforeTogglingOff) {
411
- const shouldToggleOff = await app.beforeTogglingOff(appCanvas.shadowRoot);
412
- if (!shouldToggleOff) return false;
413
- }
414
- app.active = newStatus ?? !app.active;
415
- const mainBarButton = this.getAppButtonById(app.id);
416
- const moreBarButton = this.getAppCanvasById("astro:more")?.shadowRoot?.querySelector(
417
- `[data-app-id="${app.id}"]`
418
- );
419
- if (mainBarButton) {
420
- mainBarButton.classList.toggle("active", app.active);
421
- }
422
- if (moreBarButton) {
423
- moreBarButton.classList.toggle("active", app.active);
424
- }
425
- if (app.active) {
426
- appCanvas.style.display = "block";
427
- appCanvas.setAttribute("data-active", "");
428
- } else {
429
- appCanvas.style.display = "none";
430
- appCanvas.removeAttribute("data-active");
431
- }
432
- app.eventTarget.dispatchEvent(
433
- new CustomEvent("app-toggled", {
434
- detail: {
435
- state: app.active,
436
- app
437
- }
438
- })
439
- );
440
- import.meta.hot?.send(`${WS_EVENT_NAME}:${app.id}:toggled`, { state: app.active });
441
- return true;
442
- }
443
- isHidden() {
444
- return this.devToolbarContainer?.hasAttribute("data-hidden") ?? true;
445
- }
446
- getActiveApp() {
447
- return this.apps.find((app) => app.active);
448
- }
449
- clearDelayedHide() {
450
- window.clearTimeout(this.delayedHideTimeout);
451
- this.delayedHideTimeout = void 0;
452
- }
453
- triggerDelayedHide() {
454
- this.clearDelayedHide();
455
- this.delayedHideTimeout = window.setTimeout(() => {
456
- this.setToolbarVisible(false);
457
- this.delayedHideTimeout = void 0;
458
- }, HOVER_DELAY);
459
- }
460
- setToolbarVisible(newStatus) {
461
- const barContainer = this.shadowRoot.querySelector("#bar-container");
462
- const devBar = this.shadowRoot.querySelector("#dev-bar");
463
- const devBarHitboxAbove = this.shadowRoot.querySelector("#dev-bar-hitbox-above");
464
- if (newStatus === true) {
465
- this.devToolbarContainer?.removeAttribute("data-hidden");
466
- barContainer?.removeAttribute("inert");
467
- devBar?.removeAttribute("tabindex");
468
- if (devBarHitboxAbove) devBarHitboxAbove.style.height = "0";
469
- return;
470
- }
471
- if (newStatus === false) {
472
- this.devToolbarContainer?.setAttribute("data-hidden", "");
473
- barContainer?.setAttribute("inert", "");
474
- devBar?.setAttribute("tabindex", "0");
475
- if (devBarHitboxAbove) devBarHitboxAbove.style.height = `${DEVBAR_HITBOX_ABOVE}px`;
476
- return;
477
- }
478
- }
479
- setNotificationVisible(newStatus) {
480
- this.devToolbarContainer?.toggleAttribute("data-no-notification", !newStatus);
481
- const moreCanvas = this.getAppCanvasById("astro:more");
482
- moreCanvas?.shadowRoot?.querySelector("#dropdown")?.toggleAttribute("data-no-notification", !newStatus);
483
- }
484
- setToolbarPlacement(newPlacement) {
485
- this.devToolbarContainer?.setAttribute("data-placement", newPlacement);
486
- this.apps.forEach((app) => {
487
- app.eventTarget.dispatchEvent(
488
- new CustomEvent("placement-updated", {
489
- detail: {
490
- placement: newPlacement
491
- }
492
- })
493
- );
494
- });
495
- }
496
- };
497
- var DevToolbarCanvas = class extends HTMLElement {
498
- shadowRoot;
499
- constructor() {
500
- super();
501
- this.shadowRoot = this.attachShadow({ mode: "open" });
502
- }
503
- connectedCallback() {
504
- this.shadowRoot.innerHTML = `
505
- <style>
506
- :host {
507
- position: absolute;
508
- top: 0;
509
- left: 0;
510
- }
511
- </style>`;
512
- }
513
- };
514
- function getAppIcon(icon) {
515
- if (isDefinedIcon(icon)) {
516
- return getIconElement(icon).outerHTML;
517
- }
518
- return icon;
519
- }
520
- export {
521
- AstroDevToolbar,
522
- DevToolbarCanvas,
523
- getAppIcon
524
- };
525
- //# sourceMappingURL=toolbar-H5DB6HVP.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../../../node_modules/.pnpm/astro@6.4.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_rollup@4.61.1_tsx@4.22.4_yaml@2.9.0/node_modules/astro/dist/runtime/client/dev-toolbar/toolbar.js"],
4
- "sourcesContent": ["import { serverHelpers } from \"./helpers.js\";\nimport { settings } from \"./settings.js\";\nimport { getIconElement, isDefinedIcon } from \"./ui-library/icons.js\";\nconst WS_EVENT_NAME = \"astro-dev-toolbar\";\nconst HOVER_DELAY = 2 * 1e3;\nconst DEVBAR_HITBOX_ABOVE = 42;\nclass AstroDevToolbar extends HTMLElement {\n shadowRoot;\n delayedHideTimeout;\n devToolbarContainer;\n apps = [];\n hasBeenInitialized = false;\n // TODO: This should be dynamic based on the screen size or at least configurable, erika - 2023-11-29\n customAppsToShow = 3;\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n }\n /**\n * All one-time DOM setup runs through here. Only ever call this once,\n * in connectedCallback(), and protect it from being called again.\n */\n init() {\n this.shadowRoot.innerHTML = `\n\t\t<style>\n\t\t\t:host {\n\t\t\t\t/* Important! Reset all inherited styles to initial */\n\t\t\t\tall: initial;\n\t\t\t\tz-index: 999999;\n\t\t\t\tview-transition-name: astro-dev-toolbar;\n\t\t\t\tdisplay: contents;\n\n\t\t\t\t/* Hide the dev toolbar on window.print() (CTRL + P) */\n\t\t\t\t@media print {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t::view-transition-old(astro-dev-toolbar),\n\t\t\t::view-transition-new(astro-dev-toolbar) {\n\t\t\t\tanimation: none;\n\t\t\t}\n\n\t\t\t#dev-toolbar-root {\n\t\t\t\tposition: fixed;\n\t\t\t\tbottom: 0px;\n\t\t\t\tz-index: 2000000010;\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\talign-items: center;\n\t\t\t\ttransition: bottom 0.35s cubic-bezier(0.485, -0.050, 0.285, 1.505);\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\n\t\t\t#dev-toolbar-root[data-hidden] {\n\t\t\t\tbottom: -40px;\n\t\t\t}\n\n\t\t\t#dev-toolbar-root[data-hidden] #dev-bar .item {\n\t\t\t\topacity: 0.2;\n\t\t\t}\n\n\t\t\t#dev-toolbar-root[data-placement=\"bottom-left\"] {\n\t\t\t\tleft: 16px;\n\t\t\t}\n\t\t\t#dev-toolbar-root[data-placement=\"bottom-center\"] {\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t}\n\t\t\t#dev-toolbar-root[data-placement=\"bottom-right\"] {\n\t\t\t\tright: 16px;\n\t\t\t}\n\n\t\t\t#dev-bar-hitbox-above,\n\t\t\t#dev-bar-hitbox-below {\n\t\t\t\twidth: 100%;\n\t\t\t\tpointer-events: auto;\n\t\t\t}\n\t\t\t#dev-bar-hitbox-above {\n\t\t\t\theight: ${DEVBAR_HITBOX_ABOVE}px;\n\t\t\t}\n\t\t\t#dev-bar-hitbox-below {\n\t\t\t\theight: 16px;\n\t\t\t}\n\t\t\t#dev-bar {\n\t\t\t\theight: 40px;\n\t\t\t\toverflow: hidden;\n\t\t\t\tpointer-events: auto;\n\t\t\t\tbackground: linear-gradient(180deg, #13151A 0%, rgba(19, 21, 26, 0.88) 100%);\n\t\t\t\tborder: 1px solid #343841;\n\t\t\t\tborder-radius: 9999px;\n\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}\n\n\t\t\t@media (forced-colors: active) {\n\t\t\t\t#dev-bar {\n\t\t\t\t\tbackground: white;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t#dev-bar .item {\n\t\t\t\tdisplay: flex;\n\t\t\t\tjustify-content: center;\n\t\t\t\talign-items: center;\n\t\t\t\twidth: 44px;\n\t\t\t\tborder: 0;\n\t\t\t\tbackground: transparent;\n\t\t\t\tcolor: white;\n\t\t\t\tfont-family: system-ui, sans-serif;\n\t\t\t\tfont-size: 1rem;\n\t\t\t\tline-height: 1.2;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-decoration: none;\n\t\t\t\tpadding: 0;\n\t\t\t\tmargin: 0;\n\t\t\t\toverflow: hidden;\n\t\t\t\ttransition: opacity 0.2s ease-out 0s;\n\t\t\t}\n\n\t\t\t#dev-bar #bar-container .item:hover, #dev-bar #bar-container .item:focus-visible {\n\t\t\t\tbackground: #FFFFFF20;\n\t\t\t\tcursor: pointer;\n\t\t\t\toutline-offset: -3px;\n\t\t\t}\n\n\t\t\t#dev-bar #bar-container .item[data-app-error]:hover, #dev-bar #bar-container .item[data-app-error]:focus-visible {\n\t\t\t\tcursor: not-allowed;\n\t\t\t\tbackground: #ff252520;\n\t\t\t}\n\n\t\t\t#dev-bar .item:first-of-type {\n\t\t\t\tborder-top-left-radius: 9999px;\n\t\t\t\tborder-bottom-left-radius: 9999px;\n\t\t\t\twidth: 42px;\n\t\t\t\tpadding-left: 4px;\n\t\t\t}\n\n\t\t\t#dev-bar .item:last-of-type {\n\t\t\t\tborder-top-right-radius: 9999px;\n\t\t\t\tborder-bottom-right-radius: 9999px;\n\t\t\t\twidth: 42px;\n\t\t\t\tpadding-right: 4px;\n\t\t\t}\n\t\t\t#dev-bar #bar-container .item.active {\n\t\t\t\tbackground: rgba(71, 78, 94, 1);\n\t\t\t}\n\n\t\t\t#dev-bar .item-tooltip {\n\t\t\t\tbackground: linear-gradient(0deg, #13151A, #13151A), linear-gradient(0deg, #343841, #343841);\n\t\t\t\tborder: 1px solid rgba(52, 56, 65, 1);\n\t\t\t\tborder-radius: 4px;\n\t\t\t\tpadding: 4px 8px;\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: ${4 - DEVBAR_HITBOX_ABOVE}px;\n\t\t\t\tfont-size: 14px;\n\t\t\t\topacity: 0;\n\t\t\t\ttransition: opacity 0.2s ease-in-out 0s;\n\t\t\t\tpointer-events: none;\n\t\t\t\tuser-select: none;\n\t\t\t}\n\n\t\t\t#dev-bar .item-tooltip::after{\n\t\t\t\tcontent: '';\n\t\t\t\tposition: absolute;\n\t\t\t\tleft: calc(50% - 5px);\n\t\t\t\tbottom: -6px;\n\t\t\t\tborder-left: 5px solid transparent;\n\t\t\t\tborder-right: 5px solid transparent;\n\t\t\t\tborder-top: 5px solid #343841;\n\t\t\t}\n\n\t\t\t#dev-bar .item[data-app-error] .icon {\n\t\t\t\topacity: 0.35;\n\t\t\t}\n\n\t\t\t#dev-bar .item:hover .item-tooltip, #dev-bar .item:not(.active):focus-visible .item-tooltip {\n\t\t\t\ttransition: opacity 0.2s ease-in-out 200ms;\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\t@media (forced-colors: active) {\n\t\t\t\t#dev-bar .item:hover .item-tooltip,\n\t\t\t\t#dev-bar .item:not(.active):focus-visible .item-tooltip {\n\t\t\t\t\tbackground: white;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t#dev-bar #bar-container .item:hover .notification rect, #dev-bar #bar-container .item:hover .notification path {\n\t\t\t\tstroke: #38393D;\n\t\t\t\t--fill: var(--fill-hover);\n\t\t\t}\n\n\t\t\t#dev-bar #bar-container .item.active .notification rect, #dev-bar #bar-container .item.active .notification path {\n\t\t\t\tstroke: #454C5C;\n\t\t\t\t--fill: var(--fill-hover);\n\t\t\t}\n\n\t\t\t#dev-bar .item .icon {\n\t\t\t\tposition: relative;\n\t\t\t\tmax-width: 20px;\n\t\t\t\tmax-height: 20px;\n\t\t\t\tuser-select: none;\n\t\t\t}\n\n\t\t\t#dev-bar .item .icon>svg {\n\t\t\t\twidth: 20px;\n\t\t\t\theight: 20px;\n\t\t\t\tdisplay: block;\n\t\t\t\tmargin: auto;\n\t\t\t}\n\n\t\t\t@media (forced-colors: active) {\n\t\t\t\t#dev-bar .item svg path[fill=\"#fff\"] {\n\t\t\t\t\tfill: black;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t#dev-bar .item .notification {\n\t\t\t\tdisplay: none;\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: -4px;\n\t\t\t\tright: -6px;\n\t\t\t\twidth: 10px;\n\t\t\t\theight: 10px;\n\t\t\t}\n\n\t\t\t#dev-bar .item .notification svg {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\t#dev-toolbar-root:not([data-no-notification]) #dev-bar .item .notification[data-active] {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\t#dev-bar #bar-container {\n\t\t\t\theight: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\n\t\t\t#dev-bar .separator {\n\t\t\t\tbackground: rgba(52, 56, 65, 1);\n\t\t\t\twidth: 1px;\n\t\t\t}\n\t\t</style>\n\t\t<div id=\"dev-toolbar-root\" data-hidden ${settings.config.disableAppNotification ? \"data-no-notification\" : \"\"} data-placement=\"${settings.config.placement}\">\n\t\t\t<div id=\"dev-bar-hitbox-above\"></div>\n\t\t\t<div id=\"dev-bar\">\n\t\t\t\t<div id=\"bar-container\">\n\t\t\t\t\t${this.apps.filter((app) => app.builtIn && ![\"astro:settings\", \"astro:more\"].includes(app.id)).map((app) => this.getAppTemplate(app)).join(\"\")}\n\t\t\t\t\t${this.apps.filter((app) => !app.builtIn).length > 0 ? `<div class=\"separator\"></div>${this.apps.filter((app) => !app.builtIn).slice(0, this.customAppsToShow).map((app) => this.getAppTemplate(app)).join(\"\")}` : \"\"}\n\t\t\t\t\t${this.apps.filter((app) => !app.builtIn).length > this.customAppsToShow ? this.getAppTemplate(\n this.apps.find((app) => app.builtIn && app.id === \"astro:more\")\n ) : \"\"}\n\t\t\t\t\t<div class=\"separator\"></div>\n\t\t\t\t\t${this.getAppTemplate(\n this.apps.find((app) => app.builtIn && app.id === \"astro:settings\")\n )}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div id=\"dev-bar-hitbox-below\"></div>\n\t\t</div>`;\n this.devToolbarContainer = this.shadowRoot.querySelector(\"#dev-toolbar-root\");\n this.attachEvents();\n this.apps.forEach(async (app) => {\n settings.logger.verboseLog(`Creating app canvas for ${app.id}`);\n const appCanvas = document.createElement(\"astro-dev-toolbar-app-canvas\");\n appCanvas.dataset.appId = app.id;\n this.shadowRoot?.append(appCanvas);\n });\n if (\"requestIdleCallback\" in window) {\n window.requestIdleCallback(\n async () => {\n this.apps.map((app) => this.initApp(app));\n },\n { timeout: 300 }\n );\n } else {\n setTimeout(async () => {\n this.apps.map((app) => this.initApp(app));\n }, 300);\n }\n }\n // This is called whenever the component is connected to the DOM.\n // This happens on first page load, and on each page change when\n // view transitions are used.\n connectedCallback() {\n if (!this.hasBeenInitialized) {\n this.init();\n this.hasBeenInitialized = true;\n }\n this.apps.forEach(async (app) => {\n await this.setAppStatus(app, app.active);\n });\n }\n attachEvents() {\n const items = this.shadowRoot.querySelectorAll(\".item\");\n items.forEach((item) => {\n item.addEventListener(\"click\", async (event) => {\n const target = event.currentTarget;\n if (!target || !(target instanceof HTMLElement)) return;\n const id = target.dataset.appId;\n if (!id) return;\n const app = this.getAppById(id);\n if (!app) return;\n event.stopPropagation();\n await this.toggleAppStatus(app);\n });\n });\n [\"mouseenter\", \"focusin\"].forEach((event) => {\n this.devToolbarContainer.addEventListener(event, () => {\n this.clearDelayedHide();\n if (this.isHidden()) {\n this.setToolbarVisible(true);\n }\n });\n });\n [\"mouseleave\", \"focusout\"].forEach((event) => {\n this.devToolbarContainer.addEventListener(event, () => {\n this.clearDelayedHide();\n if (this.getActiveApp() || this.isHidden()) {\n return;\n }\n this.triggerDelayedHide();\n });\n });\n document.addEventListener(\"keyup\", (event) => {\n if (event.key !== \"Escape\") return;\n if (this.isHidden()) return;\n const activeApp = this.getActiveApp();\n if (activeApp) {\n this.toggleAppStatus(activeApp);\n } else {\n this.setToolbarVisible(false);\n }\n });\n }\n async initApp(app) {\n const shadowRoot = this.getAppCanvasById(app.id).shadowRoot;\n app.status = \"loading\";\n try {\n settings.logger.verboseLog(`Initializing app ${app.id}`);\n await app.init?.(shadowRoot, app.eventTarget, serverHelpers);\n app.status = \"ready\";\n if (import.meta.hot) {\n import.meta.hot.send(`${WS_EVENT_NAME}:${app.id}:initialized`);\n }\n } catch (e) {\n console.error(`Failed to init app ${app.id}, error: ${e}`);\n app.status = \"error\";\n if (import.meta.hot) {\n import.meta.hot.send(\"astro:devtoolbar:error:init\", {\n app,\n error: e instanceof Error ? e.stack : e\n });\n }\n const appButton = this.getAppButtonById(app.id);\n const appTooltip = appButton?.querySelector(\".item-tooltip\");\n if (appButton && appTooltip) {\n appButton.toggleAttribute(\"data-app-error\", true);\n appTooltip.innerText = `Error initializing ${app.name}`;\n }\n }\n }\n getAppTemplate(app) {\n return `<button class=\"item\" data-app-id=\"${app.id}\">\n\t\t\t\t<div class=\"icon\">${app.icon ? getAppIcon(app.icon) : \"?\"}<div class=\"notification\"></div></div>\n\t\t\t\t<span class=\"item-tooltip\">${app.name}</span>\n\t\t\t</button>`;\n }\n getAppById(id) {\n return this.apps.find((app) => app.id === id);\n }\n getAppCanvasById(id) {\n return this.shadowRoot.querySelector(\n `astro-dev-toolbar-app-canvas[data-app-id=\"${id}\"]`\n );\n }\n getAppButtonById(id) {\n return this.shadowRoot.querySelector(`[data-app-id=\"${id}\"]`);\n }\n async toggleAppStatus(app) {\n const activeApp = this.getActiveApp();\n if (activeApp) {\n const closeApp = await this.setAppStatus(activeApp, false);\n if (!closeApp) return;\n }\n if (app.status !== \"ready\") return;\n if (app !== activeApp) {\n await this.setAppStatus(app, true);\n if (import.meta.hot && app.id !== \"astro:more\") {\n import.meta.hot.send(\"astro:devtoolbar:app:toggled\", {\n app\n });\n }\n }\n }\n async setAppStatus(app, newStatus) {\n const appCanvas = this.getAppCanvasById(app.id);\n if (!appCanvas) return false;\n if (app.active && !newStatus && app.beforeTogglingOff) {\n const shouldToggleOff = await app.beforeTogglingOff(appCanvas.shadowRoot);\n if (!shouldToggleOff) return false;\n }\n app.active = newStatus ?? !app.active;\n const mainBarButton = this.getAppButtonById(app.id);\n const moreBarButton = this.getAppCanvasById(\"astro:more\")?.shadowRoot?.querySelector(\n `[data-app-id=\"${app.id}\"]`\n );\n if (mainBarButton) {\n mainBarButton.classList.toggle(\"active\", app.active);\n }\n if (moreBarButton) {\n moreBarButton.classList.toggle(\"active\", app.active);\n }\n if (app.active) {\n appCanvas.style.display = \"block\";\n appCanvas.setAttribute(\"data-active\", \"\");\n } else {\n appCanvas.style.display = \"none\";\n appCanvas.removeAttribute(\"data-active\");\n }\n app.eventTarget.dispatchEvent(\n new CustomEvent(\"app-toggled\", {\n detail: {\n state: app.active,\n app\n }\n })\n );\n import.meta.hot?.send(`${WS_EVENT_NAME}:${app.id}:toggled`, { state: app.active });\n return true;\n }\n isHidden() {\n return this.devToolbarContainer?.hasAttribute(\"data-hidden\") ?? true;\n }\n getActiveApp() {\n return this.apps.find((app) => app.active);\n }\n clearDelayedHide() {\n window.clearTimeout(this.delayedHideTimeout);\n this.delayedHideTimeout = void 0;\n }\n triggerDelayedHide() {\n this.clearDelayedHide();\n this.delayedHideTimeout = window.setTimeout(() => {\n this.setToolbarVisible(false);\n this.delayedHideTimeout = void 0;\n }, HOVER_DELAY);\n }\n setToolbarVisible(newStatus) {\n const barContainer = this.shadowRoot.querySelector(\"#bar-container\");\n const devBar = this.shadowRoot.querySelector(\"#dev-bar\");\n const devBarHitboxAbove = this.shadowRoot.querySelector(\"#dev-bar-hitbox-above\");\n if (newStatus === true) {\n this.devToolbarContainer?.removeAttribute(\"data-hidden\");\n barContainer?.removeAttribute(\"inert\");\n devBar?.removeAttribute(\"tabindex\");\n if (devBarHitboxAbove) devBarHitboxAbove.style.height = \"0\";\n return;\n }\n if (newStatus === false) {\n this.devToolbarContainer?.setAttribute(\"data-hidden\", \"\");\n barContainer?.setAttribute(\"inert\", \"\");\n devBar?.setAttribute(\"tabindex\", \"0\");\n if (devBarHitboxAbove) devBarHitboxAbove.style.height = `${DEVBAR_HITBOX_ABOVE}px`;\n return;\n }\n }\n setNotificationVisible(newStatus) {\n this.devToolbarContainer?.toggleAttribute(\"data-no-notification\", !newStatus);\n const moreCanvas = this.getAppCanvasById(\"astro:more\");\n moreCanvas?.shadowRoot?.querySelector(\"#dropdown\")?.toggleAttribute(\"data-no-notification\", !newStatus);\n }\n setToolbarPlacement(newPlacement) {\n this.devToolbarContainer?.setAttribute(\"data-placement\", newPlacement);\n this.apps.forEach((app) => {\n app.eventTarget.dispatchEvent(\n new CustomEvent(\"placement-updated\", {\n detail: {\n placement: newPlacement\n }\n })\n );\n });\n }\n}\nclass DevToolbarCanvas extends HTMLElement {\n shadowRoot;\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n }\n connectedCallback() {\n this.shadowRoot.innerHTML = `\n\t\t<style>\n\t\t\t:host {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 0;\n\t\t\t\tleft: 0;\n\t\t\t}\n\t\t</style>`;\n }\n}\nfunction getAppIcon(icon) {\n if (isDefinedIcon(icon)) {\n return getIconElement(icon).outerHTML;\n }\n return icon;\n}\nexport {\n AstroDevToolbar,\n DevToolbarCanvas,\n getAppIcon\n};\n"],
5
- "mappings": "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",
6
- "names": []
7
- }