@mdn/fred 0.0.3 → 0.0.5

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 (173) hide show
  1. package/.github/workflows/npm-publish.yml +18 -4
  2. package/.prettierignore +1 -0
  3. package/.release-please-manifest.json +3 -0
  4. package/CHANGELOG.md +30 -0
  5. package/components/advertising/server.js +1 -1
  6. package/components/blog-index/server.js +1 -1
  7. package/components/blog-post/server.js +1 -1
  8. package/components/color/global.css +2 -0
  9. package/components/homepage-hero/server.css +6 -0
  10. package/components/homepage-hero/server.js +0 -1
  11. package/components/observatory-landing/faq.js +1 -1
  12. package/components/observatory-landing/feedback.js +1 -1
  13. package/components/observatory-landing/server.js +1 -1
  14. package/components/observatory-results/server.js +1 -1
  15. package/components/placement-sidebar/element.css +7 -0
  16. package/components/reference-layout/server.css +2 -0
  17. package/components/reference-toc/server.js +1 -1
  18. package/components/search-modal/element.css +131 -4
  19. package/components/search-modal/element.js +60 -25
  20. package/dist/client/1739.1435a6d3f1a2dd88.js +8 -0
  21. package/dist/client/1739.1435a6d3f1a2dd88.js.map +1 -0
  22. package/dist/client/2776.435ecffa5f77c7eb.js +43 -0
  23. package/dist/client/2776.435ecffa5f77c7eb.js.map +1 -0
  24. package/dist/client/{5837.f6d4c078ffaaacdd.js → 5837.52bd8ccde0085adc.js} +2 -2
  25. package/dist/client/5837.52bd8ccde0085adc.js.map +1 -0
  26. package/dist/client/{7293.b60a1f58515f31a2.js → 7293.b57f88f90b72c988.js} +2 -2
  27. package/dist/client/{7293.b60a1f58515f31a2.js.map → 7293.b57f88f90b72c988.js.map} +1 -1
  28. package/dist/client/{8483.0c0da6fab68fab50.js → 8483.651683d5e2cbae52.js} +2 -2
  29. package/dist/client/{8483.0c0da6fab68fab50.js.map → 8483.651683d5e2cbae52.js.map} +1 -1
  30. package/dist/client/{8551.e33e50ee71f44812.js → 8551.4cf05a456e8b9b36.js} +2 -2
  31. package/dist/client/8551.4cf05a456e8b9b36.js.map +1 -0
  32. package/dist/client/9551.23d0a332e0083e6c.js +16 -0
  33. package/dist/client/9551.23d0a332e0083e6c.js.map +1 -0
  34. package/dist/client/{9565.5e45ab3e0d622510.js → 9565.faafbc9f4c1268c1.js} +2 -2
  35. package/dist/client/9565.faafbc9f4c1268c1.js.map +1 -0
  36. package/dist/client/{index.a2573f654d416e75.js → index.f81a73f443949b54.js} +2 -2
  37. package/dist/client/{index.a2573f654d416e75.js.map → index.f81a73f443949b54.js.map} +1 -1
  38. package/dist/client/{runtime.25188d4f5ff249c3.js → runtime.a1cce37ae8fd8f1d.js} +2 -2
  39. package/dist/client/{runtime.25188d4f5ff249c3.js.map → runtime.a1cce37ae8fd8f1d.js.map} +1 -1
  40. package/dist/client/stats.json +462 -462
  41. package/dist/client/styles-a11y-menu.3ddb63a73a9c8c9b.js +1 -0
  42. package/dist/client/styles-advertising.89daa4b1babb5d7c.js +1 -0
  43. package/dist/client/styles-article-footer.aad4b81dfb2f25aa.js +1 -0
  44. package/dist/client/styles-banner.b00e4ed105869308.js +1 -0
  45. package/dist/client/styles-baseline-indicator.b4fff7b664a71278.js +1 -0
  46. package/dist/client/styles-blog-index.bfa0b41dd840cec9.js +1 -0
  47. package/dist/client/styles-blog-post.589bea0672ef6cfe.js +1 -0
  48. package/dist/client/styles-breadcrumbs-bar.1135acbe7353b72f.js +1 -0
  49. package/dist/client/styles-breadcrumbs.41165c22e7482511.js +1 -0
  50. package/dist/client/styles-button.9f72d7a8fee3a671.js +1 -0
  51. package/dist/client/styles-content-section.ff53f1079444e3be.js +1 -0
  52. package/dist/client/styles-contributor-spotlight.9a65604ef7cf6f72.js +1 -0
  53. package/dist/client/styles-curriculum-about.8da72a5697ee54c6.js +1 -0
  54. package/dist/client/styles-curriculum-default.36e79c6e85e661a6.js +1 -0
  55. package/dist/client/styles-curriculum-landing.92b1373346b15e6a.js +1 -0
  56. package/dist/client/styles-curriculum-module.45185c94b78788e1.js +1 -0
  57. package/dist/client/styles-curriculum-overview.61995cbb01819033.js +1 -0
  58. package/dist/client/styles-featured-articles.616852431f1e0ee4.js +1 -0
  59. package/dist/client/styles-footer.f16abca2043e46bb.js +1 -0
  60. package/dist/client/styles-generic-about.14bc0114374d65e7.js +1 -0
  61. package/dist/client/styles-generic-community.614ed8dfbcb62ea7.js +1 -0
  62. package/dist/client/styles-generic-content.32ed38732d0f3b45.js +1 -0
  63. package/dist/client/styles-generic-layout.b69ebe87382c0d4a.js +1 -0
  64. package/dist/client/styles-generic-sidebar.08698c1b14c8b476.js +1 -0
  65. package/dist/client/styles-generic-toc.30e78be425cba070.js +1 -0
  66. package/dist/client/{styles-global.a3ba01d8e2fca47b.js → styles-global.29cd4720c8834abd.js} +1 -1
  67. package/dist/client/{styles-global.3d9e085f0247e92c.css → styles-global.f515b2bde4d7df93.css} +2 -2
  68. package/dist/client/styles-global.f515b2bde4d7df93.css.map +1 -0
  69. package/dist/client/styles-heading-anchor.e8129df53b41bd49.js +1 -0
  70. package/dist/client/styles-homepage-body.0b19b0a2038d4e78.js +1 -0
  71. package/dist/client/styles-homepage-contributor-spotlight.8daa31290a0a5f18.js +1 -0
  72. package/dist/client/styles-homepage-footer.78ba9c3277b58bf3.js +1 -0
  73. package/dist/client/styles-homepage-header.be93cd932f41267d.js +1 -0
  74. package/dist/client/styles-homepage-hero.4ed7235d37aa37cf.js +1 -0
  75. package/dist/client/{styles-homepage-hero.ca54e4bc0c0b420e.css → styles-homepage-hero.6d83a175f7f76d29.css} +2 -2
  76. package/dist/client/styles-homepage-hero.6d83a175f7f76d29.css.map +1 -0
  77. package/dist/client/styles-homepage.4da96775e9ab92bf.js +1 -0
  78. package/dist/client/styles-latest-news.80e70c9afcc04226.js +1 -0
  79. package/dist/client/styles-left-sidebar.58bfaf3c10109a49.js +1 -0
  80. package/dist/client/styles-logo.53efe8dc644a9839.js +1 -0
  81. package/dist/client/styles-mandala.52b580d4cf59fa4f.js +1 -0
  82. package/dist/client/styles-menu.ab201de6ebb3686a.js +1 -0
  83. package/dist/client/styles-navigation.176cffc5e646d9a9.js +1 -0
  84. package/dist/client/styles-not-found.a35e816ca45b2bf5.js +1 -0
  85. package/dist/client/styles-observatory-landing.b162eac949784932.js +1 -0
  86. package/dist/client/styles-observatory-results.d902d3f1dbcf45d7.js +1 -0
  87. package/dist/client/styles-page-layout.a371293b6209ae16.js +1 -0
  88. package/dist/client/styles-pagination.1310b1c891cb6a5a.js +1 -0
  89. package/dist/client/styles-playground.88e73c644d4c1008.js +1 -0
  90. package/dist/client/styles-recent-contributions.c27a16f4c3f97461.js +1 -0
  91. package/dist/client/{styles-reference-layout.4b0aca3ae954f961.css → styles-reference-layout.ac37f9e3a27faaac.css} +2 -2
  92. package/dist/client/styles-reference-layout.ac37f9e3a27faaac.css.map +1 -0
  93. package/dist/client/styles-reference-layout.f009e8667518e87e.js +1 -0
  94. package/dist/client/styles-reference-toc.f201a765d7115477.js +1 -0
  95. package/dist/client/styles-sandbox.7d80ef02b6c1e504.js +1 -0
  96. package/dist/client/styles-translation-banner.ccf3c42b9943fc48.js +1 -0
  97. package/dist/client/{styles.911adb13c338ef51.js → styles.4f05a7e79fd0f3ee.js} +2 -2
  98. package/dist/client/{styles.911adb13c338ef51.js.map → styles.4f05a7e79fd0f3ee.js.map} +1 -1
  99. package/dist/legacy/{index.420b003bd21312e0.js → index.b481dadaaa935e27.js} +3 -3
  100. package/dist/legacy/{index.420b003bd21312e0.js.map → index.b481dadaaa935e27.js.map} +1 -1
  101. package/dist/legacy/stats.json +6 -6
  102. package/dist/ssr/7293.js +1 -1
  103. package/dist/ssr/7293.js.map +1 -1
  104. package/dist/ssr/9551.js +4 -4
  105. package/dist/ssr/9551.js.map +1 -1
  106. package/dist/ssr/index.js +23 -12
  107. package/dist/ssr/index.js.map +1 -1
  108. package/dist/ssr/stats.json +4 -4
  109. package/l10n/en-US.ftl +1 -1
  110. package/package.json +2 -2
  111. package/release-please-config.json +15 -0
  112. package/dist/client/1739.16064f8d04091fb6.js +0 -8
  113. package/dist/client/1739.16064f8d04091fb6.js.map +0 -1
  114. package/dist/client/2776.f1ca2b5f474ba69f.js +0 -32
  115. package/dist/client/2776.f1ca2b5f474ba69f.js.map +0 -1
  116. package/dist/client/5837.f6d4c078ffaaacdd.js.map +0 -1
  117. package/dist/client/8551.e33e50ee71f44812.js.map +0 -1
  118. package/dist/client/9551.495c74e2c7129b38.js +0 -16
  119. package/dist/client/9551.495c74e2c7129b38.js.map +0 -1
  120. package/dist/client/9565.5e45ab3e0d622510.js.map +0 -1
  121. package/dist/client/styles-a11y-menu.18fa89054eb7202a.js +0 -1
  122. package/dist/client/styles-advertising.90a05252519044ac.js +0 -1
  123. package/dist/client/styles-article-footer.2f72d43869e2fc04.js +0 -1
  124. package/dist/client/styles-banner.6c855e9feea9c071.js +0 -1
  125. package/dist/client/styles-baseline-indicator.0ee33f4434f78f8f.js +0 -1
  126. package/dist/client/styles-blog-index.63718eed7985555b.js +0 -1
  127. package/dist/client/styles-blog-post.e369a7b6bd7ee253.js +0 -1
  128. package/dist/client/styles-breadcrumbs-bar.0e5432b97f042a51.js +0 -1
  129. package/dist/client/styles-breadcrumbs.ffcf3e7f6aca4842.js +0 -1
  130. package/dist/client/styles-button.9ef7569f2eb2448b.js +0 -1
  131. package/dist/client/styles-content-section.8d683bcfa074d863.js +0 -1
  132. package/dist/client/styles-contributor-spotlight.08b1f6ed86daacc7.js +0 -1
  133. package/dist/client/styles-curriculum-about.399ca9fae70cdf42.js +0 -1
  134. package/dist/client/styles-curriculum-default.1d95308cf28d0cbe.js +0 -1
  135. package/dist/client/styles-curriculum-landing.75954cd6cee0580a.js +0 -1
  136. package/dist/client/styles-curriculum-module.1e885d2e7fbd00c6.js +0 -1
  137. package/dist/client/styles-curriculum-overview.7efe6d339fda7e6e.js +0 -1
  138. package/dist/client/styles-featured-articles.8a24cb5b80c4c61a.js +0 -1
  139. package/dist/client/styles-footer.c6cf58283ef90c67.js +0 -1
  140. package/dist/client/styles-generic-about.7b141a48f0710a55.js +0 -1
  141. package/dist/client/styles-generic-community.ab65d4d721e3667b.js +0 -1
  142. package/dist/client/styles-generic-content.c29785e714ffd1f5.js +0 -1
  143. package/dist/client/styles-generic-layout.5f207ab849f99ea7.js +0 -1
  144. package/dist/client/styles-generic-sidebar.7d35fed4f9bc1d3f.js +0 -1
  145. package/dist/client/styles-generic-toc.75b9d25451f88334.js +0 -1
  146. package/dist/client/styles-global.3d9e085f0247e92c.css.map +0 -1
  147. package/dist/client/styles-heading-anchor.723d7995b359e9c5.js +0 -1
  148. package/dist/client/styles-homepage-body.7804e89b5b1f5fb0.js +0 -1
  149. package/dist/client/styles-homepage-contributor-spotlight.99a49f2c25da44d8.js +0 -1
  150. package/dist/client/styles-homepage-footer.6110ddf33f932da9.js +0 -1
  151. package/dist/client/styles-homepage-header.9869e99567417f85.js +0 -1
  152. package/dist/client/styles-homepage-hero.ca54e4bc0c0b420e.css.map +0 -1
  153. package/dist/client/styles-homepage-hero.f3b9f1a51df08e48.js +0 -1
  154. package/dist/client/styles-homepage.3d3ddf3a45d9fb9f.js +0 -1
  155. package/dist/client/styles-latest-news.3ee704eb566845af.js +0 -1
  156. package/dist/client/styles-left-sidebar.b58f94d7797b94a3.js +0 -1
  157. package/dist/client/styles-logo.15cde079ff7cf413.js +0 -1
  158. package/dist/client/styles-mandala.fbf5df30c1569b80.js +0 -1
  159. package/dist/client/styles-menu.432117f56550a699.js +0 -1
  160. package/dist/client/styles-navigation.ae5b4029d77512c1.js +0 -1
  161. package/dist/client/styles-not-found.bb24f3d7153e6384.js +0 -1
  162. package/dist/client/styles-observatory-landing.6ccab12860b70065.js +0 -1
  163. package/dist/client/styles-observatory-results.8debe68c8c1054ba.js +0 -1
  164. package/dist/client/styles-page-layout.3855b7fd5c6c1e0f.js +0 -1
  165. package/dist/client/styles-pagination.5241370112fc2d33.js +0 -1
  166. package/dist/client/styles-playground.5fd947e80ea7bbbc.js +0 -1
  167. package/dist/client/styles-recent-contributions.96ef61f802ae3c05.js +0 -1
  168. package/dist/client/styles-reference-layout.4b0aca3ae954f961.css.map +0 -1
  169. package/dist/client/styles-reference-layout.f70ad6dcede0cc3e.js +0 -1
  170. package/dist/client/styles-reference-toc.4955096ec82f0e5e.js +0 -1
  171. package/dist/client/styles-sandbox.33cffca9447c527a.js +0 -1
  172. package/dist/client/styles-translation-banner.e5c9497137fa78db.js +0 -1
  173. /package/dist/legacy/{index.420b003bd21312e0.js.LICENSE.txt → index.b481dadaaa935e27.js.LICENSE.txt} +0 -0
@@ -9,11 +9,11 @@
9
9
  "assets": [
10
10
  {
11
11
  "name": "index.js",
12
- "size": 1387574
12
+ "size": 1391654
13
13
  }
14
14
  ],
15
15
  "filteredAssets": 0,
16
- "assetsSize": 1387574,
16
+ "assetsSize": 1391654,
17
17
  "auxiliaryAssets": [
18
18
  {
19
19
  "name": "desktop-saving-page.bbb8eedefb3e848f.png",
@@ -301,7 +301,7 @@
301
301
  },
302
302
  {
303
303
  "name": "index.js.map",
304
- "size": 4124367
304
+ "size": 4131590
305
305
  },
306
306
  {
307
307
  "name": "deno.aed70d20abbf1067.svg",
@@ -476,7 +476,7 @@
476
476
  "size": 135602
477
477
  }
478
478
  ],
479
- "auxiliaryAssetsSize": 8583874,
479
+ "auxiliaryAssetsSize": 8591097,
480
480
  "children": {},
481
481
  "childAssets": {}
482
482
  }
package/l10n/en-US.ftl CHANGED
@@ -12,7 +12,7 @@ baseline-supported-in = Supported in { $browsers }
12
12
  baseline-unsupported-in = Not widely supported in { $browsers }
13
13
  baseline-supported-and-unsupported-in = Supported in { $supported }, but not widely supported in { $unsupported }
14
14
 
15
- homepage-hero-title = Resources for <u data-l10n-name="developers">Developers</u>,<br> by Developers
15
+ homepage-hero-title = Resources for Developers,<br> by Developers
16
16
  homepage-hero-description = Documenting <a data-l10n-name="css">CSS</a>, <a data-l10n-name="html">HTML</a>, and <a data-l10n-name="js">JavaScript</a>, since 2005.
17
17
 
18
18
  not-found-title = Page not found
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mdn/fred",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "start": "node --env-file=.env scripts/server.js",
@@ -66,7 +66,7 @@
66
66
  "@eslint/compat": "^1.2.7",
67
67
  "@eslint/js": "^9.23.0",
68
68
  "@mdn/browser-compat-data": "^6.0.1",
69
- "@mdn/rari": "0.1.44",
69
+ "@mdn/rari": "0.1.45",
70
70
  "@mdn/yari": "^4.12.1",
71
71
  "@rsdoctor/rspack-plugin": "^1.1.4",
72
72
  "@rspack/cli": "^1.3.4",
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3
+ "last-release-sha": "880ac28328394f103694281e0698640d90f52fbb",
4
+ "release-type": "node",
5
+ "changelog-sections": [
6
+ { "type": "feat", "section": "Features", "hidden": false },
7
+ { "type": "fix", "section": "Bug Fixes", "hidden": false },
8
+ { "type": "enhance", "section": "Enhancements", "hidden": false },
9
+ { "type": "chore", "section": "Miscellaneous", "hidden": false }
10
+ ],
11
+ "include-component-in-tag": false,
12
+ "packages": {
13
+ ".": {}
14
+ }
15
+ }
@@ -1,8 +0,0 @@
1
- export const __webpack_ids__=["1739"];export const __webpack_modules__={61667:function(e){e.exports=function(e,t){return(t||(t={}),e&&(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]|(%20)/.test(e)||t.needQuotes))?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e}},99454:function(e,t,a){e.exports=a.p+"search.5dd31cbeea7d1af9.svg"},73594:function(e,t,a){a.r(t),a.d(t,{MDNHomepageSearch:()=>MDNHomepageSearch});var o=a(14703),r=a(69535),n=a(39187),s=a(8036);let MDNHomepageSearch=class MDNHomepageSearch extends(0,r.q)(o.oi){static styles=s.Z;_showModal(){let e=document.querySelector("#search");e instanceof n.MDNSearchModal?e.showModal():console.error("MDNSearchModal not found!")}render(){return(0,o.dy)`<button
2
- class="mdn-homepage-search"
3
- title=${this.l10n`Search the site`}
4
- @click=${this._showModal}
5
- >
6
- ${this.l10n`Search`}
7
- </button>`}};customElements.define("mdn-homepage-search",MDNHomepageSearch)},8036:function(e,t,a){a.d(t,{Z:()=>p});var o=a(14703),r=a(8081),n=a.n(r),s=a(23645),c=a.n(s),i=a(61667),d=a.n(i),l=new a.U(a(99454)),h=c()(n()),m=d()(l);h.push([e.id,`.mdn-homepage-search{border-color:var(--color-border-primary);border-radius:2em;border-style:solid;display:flex;font-size:var(--font-size-large);gap:.5ch;justify-content:center;margin:0 auto;padding:1em}.mdn-homepage-search:after{background-color:var(--color-text-primary);content:"";display:inline-block;flex-shrink:0;height:1.1em;-webkit-mask-image:url(${m});mask-image:url(${m});-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.1em}button{cursor:pointer}`,""]);let p=(0,o.iv)([h.toString()])}};
8
- //# sourceMappingURL=1739.16064f8d04091fb6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"1739.16064f8d04091fb6.js","sources":["webpack://@mdn/fred/./node_modules/css-loader/dist/runtime/getUrl.js","webpack://@mdn/fred/./components/homepage-search/element.js","webpack://@mdn/fred/./components/homepage-search/element.css"],"sourcesContent":["\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};","import { LitElement, html } from \"lit\";\n\nimport { L10nMixin } from \"../../l10n/mixin.js\";\nimport { MDNSearchModal } from \"../search-modal/element.js\";\n\nimport styles from \"./element.css?lit\";\n\nexport class MDNHomepageSearch extends L10nMixin(LitElement) {\n static styles = styles;\n\n _showModal() {\n const search = document.querySelector(\"#search\");\n if (search instanceof MDNSearchModal) {\n search.showModal();\n } else {\n console.error(\"MDNSearchModal not found!\");\n }\n }\n\n render() {\n return html`<button\n class=\"mdn-homepage-search\"\n title=${this.l10n`Search the site`}\n @click=${this._showModal}\n >\n ${this.l10n`Search`}\n </button>`;\n }\n}\ncustomElements.define(\"mdn-homepage-search\", MDNHomepageSearch);\n","import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../icon/search.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mdn-homepage-search{border-color:var(--color-border-primary);border-radius:2em;border-style:solid;display:flex;font-size:var(--font-size-large);gap:.5ch;justify-content:center;margin:0 auto;padding:1em}.mdn-homepage-search:after{background-color:var(--color-text-primary);content:\"\";display:inline-block;flex-shrink:0;height:1.1em;-webkit-mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.1em}button{cursor:pointer}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["String","MDNHomepageSearch","s","document","console","customElements"],"mappings":"0FAEA,EAAO,OAAO,CAAG,SAAU,CAAG,CAAE,CAAO,SACjC,AAAC,GACH,GAAU,CAAC,GAER,IAGL,EAAMA,OAAO,EAAI,UAAU,CAAG,EAAI,OAAO,CAAG,GAGxC,eAAe,IAAI,CAAC,IACtB,GAAM,EAAI,KAAK,CAAC,EAAG,GAAE,EAEnB,EAAQ,IAAI,EACd,IAAO,EAAQ,IAAI,AAAD,EAKhB,oBAAoB,IAAI,CAAC,IAAQ,EAAQ,UAAU,GAC9C,IAAK,MAAM,CAAC,EAAI,OAAO,CAAC,KAAM,OAAO,OAAO,CAAC,MAAO,OAAQ,KAE9D,CACT,C,kMClBO,IAAMC,kBAAN,MAAMA,yBAA0B,QAAU,IAAU,EACzD,OAAO,OAASC,EAAA,CAAM,AAAC,AAEvB,aAAa,CACX,IAAM,EAASC,SAAS,aAAa,CAAC,UAClC,cAAkB,gBAAc,CAClC,EAAO,SAAS,GAEhBC,QAAQ,KAAK,CAAC,4BAElB,CAEA,QAAS,CACP,MAAO,QAAI,CAAC;;YAEJ,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAC5B,EAAE,IAAI,CAAC,UAAU,CAAC;;MAEzB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACb,CAAC,AACZ,CACF,EACAC,eAAe,MAAM,CAAC,sBAAuBJ,kB,kHCxBzC,EAAgC,kBAChC,EAA0B,IAA4B,KACtD,EAAqC,IAAgC,GAEzE,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,CAAC,mWAAmW,EAAE,EAAmC,iBAAiB,EAAE,EAAmC,oIAAoI,CAAC,CAAE,GAAG,EAElnB,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C"}
@@ -1,32 +0,0 @@
1
- export const __webpack_ids__=["2776"];export const __webpack_modules__={39187:function(e,t,s){s.r(t),s.d(t,{MDNSearchModal:()=>MDNSearchModal,splitQuery:()=>n});var i=s(35470),a=s(14703),l=s(69535),o=s(1613);let MDNSearchModal=class MDNSearchModal extends(0,l.q)(a.oi){static styles=o.Z;static properties={_index:{state:!0},_query:{state:!0},_selected:{state:!0},_shiftFocus:{state:!0}};constructor(){super(),this._index=void 0,this._query="",this._selected=0,this._shiftFocus=!1}async _loadIndex(){this._index||(this._index=this._fetchIndex())}async _fetchIndex(){let e=await fetch(`/${this.locale}/search-index.json`),t=await e.json();return{flex:t.map(({title:e,url:t},s)=>({index:s,title:e.toLowerCase(),slugTail:t.split("/").pop()?.toLowerCase()||""})),items:t}}showModal(){this._loadIndex(),this.shadowRoot?.querySelector("dialog")?.showModal(),this.shadowRoot?.querySelector("input")?.select()}_input({target:e}){e instanceof HTMLInputElement&&(this._query=e.value)}_keydown(e){let t=(this._queryIndex.value?.length||0)+1;switch(e.key){case"ArrowUp":{e.preventDefault();let s=(this._selected-1)%t;this._selected=s<0?t+s:s;break}case"ArrowDown":e.preventDefault(),this._selected=(this._selected+1)%t;break;default:return}}_submit(e){e.preventDefault();let t=this.shadowRoot?.querySelector("[data-selected] a");t instanceof HTMLElement&&t.click()}_focus({target:e}){if(e instanceof HTMLElement){let t=e.closest("[data-result]");if(t instanceof HTMLElement){let e=Number.parseInt(t.dataset.result||"NaN",10);Number.isNaN(e)||(this._selected=e,this._shiftFocus=!0)}else this._shiftFocus=!1}}_globalKeydown(e){let t=e.composedPath()?.[0]||e.target;if(t instanceof HTMLElement&&(["TEXTAREA","INPUT"].includes(t.tagName)||t.isContentEditable))return;let s=globalThis.getSelection()?.toString(),i=e.key,a=e.ctrlKey||e.metaKey,l="k"===i&&a&&!e.shiftKey;("/"===i&&!a||l)&&(e.preventDefault(),this.showModal(),s&&(this._query=s))}_queryIndex=new i.iQ(this,{args:()=>[this._index,this._query],task:async([e,t])=>{if(e&&t){var s=t,i=await e;let a=s.toLowerCase().trim(),l=n(s);return i.flex.filter(({title:e})=>l.every(t=>e.includes(t))).map(({index:e,title:t,slugTail:s})=>[Number([t,s].includes(a)),e]).sort(([e],[t])=>t-e).map(([e,t])=>t).slice(0,10).map(e=>e&&(i.items||[])[e]).filter(Boolean)}}});connectedCallback(){super.connectedCallback(),this._globalKeydown=this._globalKeydown.bind(this),document.addEventListener("keydown",this._globalKeydown),this._loadIndex=this._loadIndex.bind(this),this.renderRoot.addEventListener("mouseover",this._loadIndex)}disconnectedCallback(){super.disconnectedCallback(),this.renderRoot.removeEventListener("mouseover",this._loadIndex),document.removeEventListener("keydown",this._globalKeydown)}render(){let e=this._queryIndex.value?.length||0;return(0,a.dy)`
2
- <dialog @keydown=${this._keydown} @focusin=${this._focus} closedby="any">
3
- <form @submit=${this._submit}>
4
- <input
5
- type="text"
6
- .value=${this._query}
7
- autofocus
8
- @input=${this._input}
9
- />
10
- </form>
11
- <ul>
12
- ${this._queryIndex.render({initial:()=>(0,a.dy)`<progress></progress>`,pending:()=>(0,a.dy)`<progress></progress>`,complete:e=>e?.map(({title:e,url:t},s)=>(0,a.dy)`
13
- <li ?data-selected=${this._selected===s} data-result=${s}>
14
- <a href=${t}>${(function(e,t){let s=n(t),i=s.map(e=>e.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`)).map(e=>`(${e})`).join("|");return e.split(RegExp(i,"gi")).filter(Boolean).map(e=>s.includes(e.toLowerCase())?(0,a.dy)`<mark>${e}</mark>`:e)})(e,this._query)}</a>
15
- <small>
16
- ${t.split("/").slice(1).filter(e=>!["docs",this.locale].includes(e)).join(" / ")}
17
- </small>
18
- </li>
19
- `)})}
20
- ${this._query?(0,a.dy)`<li
21
- ?data-selected=${this._selected===e}
22
- data-result=${e}
23
- >
24
- <a
25
- href=${`/${this.locale}/search?${new URLSearchParams({q:this._query})}`}
26
- >${this.l10n.raw({id:"search-modal-site-search",args:{query:this._query},elements:{query:{tag:"code"}}})}</a
27
- >
28
- </li>`:a.Ld}
29
- </ul>
30
- </dialog>
31
- `}updated(){if(this._shiftFocus){let e=this.shadowRoot?.querySelector("[data-selected] a");e instanceof HTMLElement&&e.focus()}}};function n(e){return(e=e.trim().toLowerCase()).startsWith(".")||e.endsWith(".")?e.split(/[ ,]+/):e.split(/[ ,.]+/)}customElements.define("mdn-search-modal",MDNSearchModal)},1613:function(e,t,s){s.d(t,{Z:()=>r});var i=s(14703),a=s(8081),l=s.n(a),o=s(23645),n=s.n(o)()(l());n.push([e.id,"*,:after,:before{box-sizing:border-box}dialog{margin:5vh auto;max-height:90vh;width:50vw}li[data-selected]{background:#ff0}",""]);let r=(0,i.iv)([n.toString()])}};
32
- //# sourceMappingURL=2776.f1ca2b5f474ba69f.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"2776.f1ca2b5f474ba69f.js","sources":["webpack://@mdn/fred/./components/search-modal/element.js","webpack://@mdn/fred/./components/search-modal/element.css"],"sourcesContent":["import { Task } from \"@lit/task\";\nimport { LitElement, html, nothing } from \"lit\";\n\nimport { L10nMixin } from \"../../l10n/mixin.js\";\n\nimport styles from \"./element.css?lit\";\n\nexport class MDNSearchModal extends L10nMixin(LitElement) {\n static styles = styles;\n\n static properties = {\n _index: { state: true },\n _query: { state: true },\n _selected: { state: true },\n _shiftFocus: { state: true },\n };\n\n constructor() {\n super();\n /** @type {Promise<import(\"./types.js\").SearchIndex> | undefined} */\n this._index = undefined;\n this._query = \"\";\n this._selected = 0;\n this._shiftFocus = false;\n }\n\n async _loadIndex() {\n if (this._index) {\n return;\n }\n\n this._index = this._fetchIndex();\n }\n\n async _fetchIndex() {\n const res = await fetch(`/${this.locale}/search-index.json`);\n /** @type {import(\"./types.js\").SearchIndexItem[]} */\n const items = await res.json();\n /** @type {import(\"./types.js\").SearchIndexFlexItem[]} */\n const flex = items.map(({ title, url }, index) => ({\n index,\n title: title.toLowerCase(),\n slugTail: url.split(\"/\").pop()?.toLowerCase() || \"\",\n }));\n\n return {\n flex,\n items,\n };\n }\n\n showModal() {\n this._loadIndex();\n this.shadowRoot?.querySelector(\"dialog\")?.showModal();\n this.shadowRoot?.querySelector(\"input\")?.select();\n }\n\n /** @param {InputEvent} event */\n _input({ target }) {\n if (target instanceof HTMLInputElement) {\n this._query = target.value;\n }\n }\n\n /** @param {KeyboardEvent} event */\n _keydown(event) {\n const results = (this._queryIndex.value?.length || 0) + 1;\n switch (event.key) {\n case \"ArrowUp\": {\n event.preventDefault();\n const value = (this._selected - 1) % results;\n this._selected = value < 0 ? results + value : value;\n break;\n }\n case \"ArrowDown\":\n event.preventDefault();\n this._selected = (this._selected + 1) % results;\n break;\n default:\n return;\n }\n }\n\n /** @param {SubmitEvent} event */\n _submit(event) {\n event.preventDefault();\n const item = this.shadowRoot?.querySelector(\"[data-selected] a\");\n if (item instanceof HTMLElement) {\n item.click();\n }\n }\n\n /** @param {FocusEvent} event */\n _focus({ target }) {\n if (target instanceof HTMLElement) {\n const focused = target.closest(\"[data-result]\");\n if (focused instanceof HTMLElement) {\n const index = Number.parseInt(focused.dataset.result || \"NaN\", 10);\n if (!Number.isNaN(index)) {\n this._selected = index;\n this._shiftFocus = true;\n }\n } else {\n this._shiftFocus = false;\n }\n }\n }\n\n /** @param {KeyboardEvent} event */\n _globalKeydown(event) {\n const target = event.composedPath()?.[0] || event.target;\n const isTextField =\n target instanceof HTMLElement &&\n ([\"TEXTAREA\", \"INPUT\"].includes(target.tagName) ||\n target.isContentEditable);\n\n if (isTextField) {\n return;\n }\n\n const selection = globalThis.getSelection()?.toString();\n const keyPressed = event.key;\n const ctrlOrMetaPressed = event.ctrlKey || event.metaKey;\n const isSlash = keyPressed === \"/\" && !ctrlOrMetaPressed;\n const isCtrlK = keyPressed === \"k\" && ctrlOrMetaPressed && !event.shiftKey;\n\n if (isSlash || isCtrlK) {\n event.preventDefault();\n this.showModal();\n if (selection) {\n this._query = selection;\n }\n }\n }\n\n _queryIndex = new Task(this, {\n args: () => [this._index, this._query],\n task: async ([index, query]) => {\n if (!index || !query) {\n return;\n }\n return quickSearch(query, await index);\n },\n });\n\n connectedCallback() {\n super.connectedCallback();\n this._globalKeydown = this._globalKeydown.bind(this);\n document.addEventListener(\"keydown\", this._globalKeydown);\n this._loadIndex = this._loadIndex.bind(this);\n this.renderRoot.addEventListener(\"mouseover\", this._loadIndex);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.renderRoot.removeEventListener(\"mouseover\", this._loadIndex);\n document.removeEventListener(\"keydown\", this._globalKeydown);\n }\n\n render() {\n const siteSearchIndex = this._queryIndex.value?.length || 0;\n return html`\n <dialog @keydown=${this._keydown} @focusin=${this._focus} closedby=\"any\">\n <form @submit=${this._submit}>\n <input\n type=\"text\"\n .value=${this._query}\n autofocus\n @input=${this._input}\n />\n </form>\n <ul>\n ${this._queryIndex.render({\n initial: () => html`<progress></progress>`,\n pending: () => html`<progress></progress>`,\n complete: (results) =>\n results?.map(\n ({ title, url }, i) => html`\n <li ?data-selected=${this._selected === i} data-result=${i}>\n <a href=${url}>${HighlightMatch(title, this._query)}</a>\n <small>\n ${url\n .split(\"/\")\n .slice(1)\n .filter((p) => ![\"docs\", this.locale].includes(p))\n .join(\" / \")}\n </small>\n </li>\n `,\n ),\n })}\n ${this._query\n ? html`<li\n ?data-selected=${this._selected === siteSearchIndex}\n data-result=${siteSearchIndex}\n >\n <a\n href=${`/${this.locale}/search?${new URLSearchParams({ q: this._query })}`}\n >${this.l10n.raw({\n id: \"search-modal-site-search\",\n args: {\n query: this._query,\n },\n elements: {\n query: { tag: \"code\" },\n },\n })}</a\n >\n </li>`\n : nothing}\n </ul>\n </dialog>\n `;\n }\n\n updated() {\n if (this._shiftFocus) {\n const selected = this.shadowRoot?.querySelector(\"[data-selected] a\");\n if (selected instanceof HTMLElement) {\n selected.focus();\n }\n }\n }\n}\n\ncustomElements.define(\"mdn-search-modal\", MDNSearchModal);\n\n/**\n * @param {string} input\n * @param {import(\"./types.js\").SearchIndex} index\n * @returns {import(\"./types.js\").SearchResultItem[]}\n */\nfunction quickSearch(input, index) {\n const inputValueLC = input.toLowerCase().trim();\n const q = splitQuery(input);\n const indexResults = index.flex\n .filter(({ title }) => q.every((q) => title.includes(q)))\n .map(({ index, title, slugTail }) => {\n const exact = Number([title, slugTail].includes(inputValueLC));\n return /** @type {const} */ ([exact, index]);\n })\n .sort(([aExact], [bExact]) => bExact - aExact) // Boost exact matches.\n .map(([_, i]) => i)\n .slice(0, 10);\n\n return indexResults.map((i) => i && (index.items || [])[i]).filter(Boolean);\n}\n\n/**\n * Used by quicksearch and sidebar filters.\n * @param {string} term\n * @returns {string[]}\n */\nexport function splitQuery(term) {\n term = term.trim().toLowerCase();\n return term.startsWith(\".\") || term.endsWith(\".\")\n ? // Dot is probably meaningful.\n term.split(/[ ,]+/)\n : // Dot is probably just a word separator.\n term.split(/[ ,.]+/);\n}\n\n/**\n * @param {string} title\n * @param {string} query\n */\nfunction HighlightMatch(title, query) {\n // Split on highlight term and include term into parts, ignore case.\n const words = splitQuery(query);\n // $& means the whole matched string\n const regexWords = words.map((s) =>\n s.replaceAll(/[.*+?^${}()|[\\]\\\\]/g, String.raw`\\$&`),\n );\n const regex = regexWords.map((word) => `(${word})`).join(\"|\");\n const parts = title.split(new RegExp(regex, \"gi\"));\n return parts\n .filter(Boolean)\n .map((part) =>\n words.includes(part.toLowerCase()) ? html`<mark>${part}</mark>` : part,\n );\n}\n","import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `*,:after,:before{box-sizing:border-box}dialog{margin:5vh auto;max-height:90vh;width:50vw}li[data-selected]{background:#ff0}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["MDNSearchModal","fetch","HTMLInputElement","e","HTMLElement","Number","t","s","globalThis","i","Boolean","document","String","RegExp","URLSearchParams","customElements"],"mappings":"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"}