@mdn/fred 2.9.0 → 2.9.1
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/.nvmrc +1 -1
- package/CHANGELOG.md +14 -0
- package/components/blog/utils.js +1 -1
- package/components/compat-table/element.js +2 -2
- package/components/latest-news/server.js +1 -1
- package/components/live-sample-result/element.js +1 -1
- package/components/navigation/hook.js +1 -1
- package/components/observatory-form/element.js +3 -3
- package/components/placement-bottom/element.js +1 -1
- package/components/placement-hp-main/element.js +1 -1
- package/components/placement-sidebar/element.js +1 -1
- package/components/placement-top/element.js +1 -1
- package/components/play-console/utils.js +2 -2
- package/components/recent-contributions/server.js +1 -1
- package/components/recently-visited/index.js +1 -2
- package/components/sidebar-filter/sidebar-filterer.js +1 -1
- package/components/survey/element.js +3 -1
- package/components/translation-banner/server.js +1 -1
- package/components/writer-reload/element.js +1 -1
- package/out/service-worker.js +1 -1
- package/out/service-worker.js.map +1 -1
- package/out/static/client/{1672.aef594997e95d362.js → 1672.d66704179bcd69ee.js} +2 -2
- package/out/static/client/{1672.aef594997e95d362.js.map → 1672.d66704179bcd69ee.js.map} +1 -1
- package/out/static/client/{169.71c8bb45e4bcc0b1.js → 169.ab4227448e206e0d.js} +2 -2
- package/out/static/client/169.ab4227448e206e0d.js.map +1 -0
- package/out/static/client/{2173.a812d7b499aeb899.js → 2173.a1ead47e2d458f50.js} +2 -2
- package/out/static/client/{2173.a812d7b499aeb899.js.map → 2173.a1ead47e2d458f50.js.map} +1 -1
- package/out/static/client/3818.8819a9d779da3429.js.map +1 -1
- package/out/static/client/{4060.b5edd2eca5be7d2b.js → 4060.687b98e9db2bc493.js} +2 -2
- package/out/static/client/{4060.b5edd2eca5be7d2b.js.map → 4060.687b98e9db2bc493.js.map} +1 -1
- package/out/static/client/4366.80589277ea3ce36d.js +4 -0
- package/out/static/client/4366.80589277ea3ce36d.js.map +1 -0
- package/out/static/client/{4759.5c1f42f6042d6457.js → 4759.f58bb90e314ae9c1.js} +2 -2
- package/out/static/client/{4759.5c1f42f6042d6457.js.map → 4759.f58bb90e314ae9c1.js.map} +1 -1
- package/out/static/client/{5196.a890e2f848933898.js → 5196.635f7f8d7984bead.js} +2 -2
- package/out/static/client/{5196.a890e2f848933898.js.map → 5196.635f7f8d7984bead.js.map} +1 -1
- package/out/static/client/5562.3cfad67583264655.js +2 -0
- package/out/static/client/5562.3cfad67583264655.js.map +1 -0
- package/out/static/client/{8067.2861f05611862516.js → 8067.e21835e06833480e.js} +2 -2
- package/out/static/client/{8067.2861f05611862516.js.map → 8067.e21835e06833480e.js.map} +1 -1
- package/out/static/client/8233.1b63aaa17c6d19cd.js +2 -0
- package/out/static/client/8233.1b63aaa17c6d19cd.js.map +1 -0
- package/out/static/client/{8401.adf96abc27ac7387.js → 8401.c754c2baea3818c1.js} +7 -7
- package/out/static/client/8401.c754c2baea3818c1.js.map +1 -0
- package/out/static/client/{9204.30fc8791c7c95e43.js → 9204.6b8c65e2852a256e.js} +2 -2
- package/out/static/client/{9204.30fc8791c7c95e43.js.map → 9204.6b8c65e2852a256e.js.map} +1 -1
- package/out/static/client/{index.65c98247c2b54259.js → index.f16f7d58914f3c7b.js} +3 -3
- package/out/static/client/index.f16f7d58914f3c7b.js.map +1 -0
- package/out/static/client/{runtime.9057bb25edbe1b53.js → runtime.000fbab5674b8a62.js} +2 -2
- package/out/static/client/{runtime.9057bb25edbe1b53.js.map → runtime.000fbab5674b8a62.js.map} +1 -1
- package/out/static/client/stats.json +432 -432
- package/out/static/client/watify_bg.9e17afb2a5a4c03f.wasm +0 -0
- package/out/static/legacy/7555.d2dbf4d88e2a043e.js +2 -0
- package/out/static/legacy/7555.d2dbf4d88e2a043e.js.map +1 -0
- package/out/static/legacy/8233.1b63aaa17c6d19cd.js +2 -0
- package/out/static/legacy/8233.1b63aaa17c6d19cd.js.map +1 -0
- package/out/static/legacy/asset-manifest.json +46 -46
- package/out/static/legacy/{index.a19bd45b9f39af81.html → index.0842dd30e67d6569.html} +1 -1
- package/out/static/legacy/{index.66c601d9bee5c979.js → index.3076cec4f319e633.js} +4 -4
- package/out/static/legacy/{index.66c601d9bee5c979.js.map → index.3076cec4f319e633.js.map} +1 -1
- package/out/static/legacy/stats.json +16 -16
- package/out/static/legacy/watify_bg.9e17afb2a5a4c03f.wasm +0 -0
- package/out/static/legacy/{yari.fabca254fad42bcc.js → yari.c83d87c429dcda1f.js} +4 -4
- package/out/static/legacy/{yari.fabca254fad42bcc.js.map → yari.c83d87c429dcda1f.js.map} +1 -1
- package/out/static/ssr/8233.js +1 -1
- package/out/static/ssr/8233.js.map +1 -1
- package/out/static/ssr/index.js +14 -14
- package/out/static/ssr/index.js.map +1 -1
- package/out/static/ssr/stats.json +4 -4
- package/out/static/ssr/watify_bg.9e17afb2a5a4c03f.wasm +0 -0
- package/package.json +31 -18
- package/utils/mdn-url2breadcrumb.js +1 -1
- package/out/static/client/169.71c8bb45e4bcc0b1.js.map +0 -1
- package/out/static/client/4366.c631051400430846.js +0 -4
- package/out/static/client/4366.c631051400430846.js.map +0 -1
- package/out/static/client/5562.6cc078ec59eb355d.js +0 -2
- package/out/static/client/5562.6cc078ec59eb355d.js.map +0 -1
- package/out/static/client/8233.270639ccdecf7be1.js +0 -2
- package/out/static/client/8233.270639ccdecf7be1.js.map +0 -1
- package/out/static/client/8401.adf96abc27ac7387.js.map +0 -1
- package/out/static/client/index.65c98247c2b54259.js.map +0 -1
- package/out/static/client/watify_bg.e3ab88fab7f71ec6.wasm +0 -0
- package/out/static/legacy/7555.332ebfc3a6b0147d.js +0 -2
- package/out/static/legacy/7555.332ebfc3a6b0147d.js.map +0 -1
- package/out/static/legacy/8233.270639ccdecf7be1.js +0 -2
- package/out/static/legacy/8233.270639ccdecf7be1.js.map +0 -1
- package/out/static/legacy/watify_bg.e3ab88fab7f71ec6.wasm +0 -0
- package/out/static/ssr/watify_bg.e3ab88fab7f71ec6.wasm +0 -0
- /package/out/static/client/{8401.adf96abc27ac7387.js.LICENSE.txt → 8401.c754c2baea3818c1.js.LICENSE.txt} +0 -0
- /package/out/static/client/{index.65c98247c2b54259.js.LICENSE.txt → index.f16f7d58914f3c7b.js.LICENSE.txt} +0 -0
- /package/out/static/legacy/{index.66c601d9bee5c979.js.LICENSE.txt → index.3076cec4f319e633.js.LICENSE.txt} +0 -0
- /package/out/static/legacy/{yari.fabca254fad42bcc.js.LICENSE.txt → yari.c83d87c429dcda1f.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"5196.a890e2f848933898.js","sources":["webpack://@mdn/fred/./components/survey/element.css","webpack://@mdn/fred/./components/survey/surveys.js","webpack://@mdn/fred/./components/survey/utils.js","webpack://@mdn/fred/./components/survey/element.js"],"sourcesContent":["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_AT_RULE_IMPORT_0___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../external-link/global.css\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"assets/survey.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\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, `:host{display:block}.survey{background-color:var(--color-background-purple);border-radius:.5rem;display:grid;padding:1rem 1rem 1rem 5rem;row-gap:.75rem}header{align-items:center;display:flex;justify-content:space-between}header:before{background:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:cover;content:\"\";height:49px;margin-left:calc(-53px - .5rem);margin-top:1rem;position:absolute;width:53px}p{margin:0}mdn-button::part(button):hover{background-color:initial;border:1px solid var(--color-text-purple)}mdn-button::part(icon){color:var(--color-text-purple)}summary{cursor:pointer}a,summary{color:var(--color-text-purple)}a:hover{-webkit-text-decoration:none;text-decoration:none}iframe{border:none;border-radius:.5rem;height:500px;overflow:hidden;width:100%}footer{font-size:var(--font-size-small);font-style:italic}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n","// import { html } from \"lit\";\n\n/**\n * @import * as Survey from \"./types.js\";\n */\n/**\n * Survey bucket identifiers used for localStorage state management.\n * Each bucket represents a unique survey campaign and maintains separate state.\n * @readonly\n * @enum {string}\n */\nexport const SurveyBucket = Object.freeze({\n BLOG_FEEDBACK_2023: \"BLOG_FEEDBACK_2023\",\n BROWSER_SURVEY_OCT_2022: \"BROWSER_SURVEY_OCT_2022\",\n CONTENT_DISCOVERY_2023: \"CONTENT_DISCOVERY_2023\",\n CSS_CASCADE_2022: \"CSS_CASCADE_2022\",\n DE_LOCALE_2024: \"DE_LOCALE_2024\",\n DE_LOCALE_2024_EVAL: \"DE_LOCALE_2024_EVAL\",\n FIREFOX_WEB_COMPAT_2023: \"FIREFOX_WEB_COMPAT_2023\",\n INTEROP_2023: \"INTEROP_2023\",\n IT_LOCALE_2025: \"IT_LOCALE_2025\",\n WEB_COMPONENTS_2023: \"WEB_COMPONENTS_2023\",\n DISCOVERABILITY_2023: \"DISCOVERABILITY_2023\",\n WEB_SECURITY_2023: \"WEB_SECURITY_2023\",\n DISCOVERABILITY_AUG_2023: \"DISCOVERABILITY_AUG_2023\",\n WEB_APP_AUGUST_2024: \"WEB_APP_AUGUST_2024\",\n HOMEPAGE_FEEDBACK_2024: \"HOMEPAGE_FEEDBACK_2024\",\n WEBDX_EDITING_2024: \"WEBDX_EDITING_2024\",\n HOUSE_SURVEY_2025: \"HOUSE_SURVEY_2025\",\n JS_PROPOSALS_2025: \"JS_PROPOSALS_2025\",\n FIRST_FRED_2025: \"FIRST_FRED_2025\",\n DEVELOPER_SURVEY_2025: \"DEVELOPER_SURVEY_2025\",\n BASELINE_A11Y_2026: \"BASELINE_A11Y_2026\",\n CANVAS_2026: \"CANVAS_2026\",\n});\n\n/**\n * Array of survey configurations.\n *\n * When adding a survey, make sure it has this JavaScript action (in Alchemer)\n * so the banner is hidden for users who have already submitted it:\n * ```javascript\n * window.parent && window.parent.postMessage(\"submit\", \"*\");\n * ```\n *\n * @type {Survey.Survey[]}\n */\nexport const SURVEYS = [\n {\n key: SurveyBucket.CANVAS_2026,\n bucket: SurveyBucket.CANVAS_2026,\n show: (mdn_url) => {\n return /^\\/en-US\\/docs\\/Web\\/API/.test(mdn_url);\n },\n src: (mdn_url) => {\n const url = new URL(\n \"https://survey.alchemer.com/s3/8586037/MDN-Canvas-API\",\n );\n url.searchParams.set(\"referrer\", mdn_url);\n return url.toString();\n },\n teaser:\n \"We’re running a survey to better understand use of the Canvas API.\",\n question: \"We’d love for you to take 2 minutes to share your feedback.\",\n link: true,\n rateFrom: 0,\n rateTill: 0.1,\n start: Date.parse(\"2026-06-08\"),\n end: Date.parse(\"2026-06-15\"),\n },\n];\n","/**\n * @import * as Survey from \"./types.js\";\n */\n/**\n * @param {string} key\n * @returns {Survey.SurveyState}\n */\nexport function getSurveyState(key) {\n const stateKey = `survey.${key}`;\n let state;\n\n try {\n state = JSON.parse(localStorage?.getItem(stateKey) ?? \"{}\");\n } catch {\n state = {};\n }\n\n if (Object.keys(state).length === 0) {\n state = {\n random: Math.random(),\n seen_at: null,\n dismissed_at: null,\n submitted_at: null,\n opened_at: null,\n };\n writeSurveyState(key, state);\n }\n\n return state;\n}\n\n/**\n * @param {string} key\n * @param {Survey.SurveyState} state\n */\nexport function writeSurveyState(key, state) {\n const stateKey = `survey.${key}`;\n try {\n localStorage?.setItem(stateKey, JSON.stringify(state));\n } catch {\n // Handle localStorage errors silently\n }\n}\n","import { LitElement, html, nothing } from \"lit\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\n\nimport \"../button/element.js\";\nimport { L10nMixin } from \"../../l10n/mixin.js\";\nimport { gleanClick } from \"../../utils/glean.js\";\nimport closeIcon from \"../icon/cancel.svg?lit\";\n\nimport styles from \"./element.css?lit\";\nimport { SURVEYS } from \"./surveys.js\";\nimport { getSurveyState, writeSurveyState } from \"./utils.js\";\n\n/**\n * @import * as Survey from \"./types.js\";\n */\n\nexport class MDNSurvey extends L10nMixin(LitElement) {\n static styles = styles;\n\n static ssr = false;\n\n constructor() {\n super();\n /** @type {Survey.Survey | undefined} */\n this._survey = undefined;\n /** @type {Survey.SurveyState | undefined} */\n this._surveyState = undefined;\n /** @type {boolean} */\n this._isOpen = false;\n /** @type {boolean} */\n this._force = false;\n /** @type {string | undefined} */\n this._source = undefined;\n\n /** @type {import(\"@lit\").Ref<HTMLDetailsElement>} */\n this._detailsRef = createRef();\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.#checkForSurvey();\n this.#setupMessageListener();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.#removeMessageListener();\n }\n\n #checkForSurvey() {\n this._survey = this.#findSurvey();\n\n if (this._survey) {\n this._surveyState = getSurveyState(this._survey.bucket);\n this._source =\n typeof this._survey.src === \"function\"\n ? this._survey.src(location.pathname)\n : this._survey.src;\n\n this.#markAsSeen();\n }\n }\n\n /**\n * @returns {Survey.Survey | undefined}\n */\n #findSurvey() {\n const forcedSurvey = new URLSearchParams(location.search).get(\n \"force_survey\",\n );\n this._force = forcedSurvey !== null;\n return SURVEYS.find((survey) => {\n if (this._force) {\n return forcedSurvey ? survey.key === forcedSurvey : true;\n }\n\n if (!survey.show(location.pathname)) {\n return false;\n }\n\n const now = Date.now();\n if (now < survey.start || survey.end < now) {\n return false;\n }\n\n const state = getSurveyState(survey.bucket);\n return state.random >= survey.rateFrom && state.random < survey.rateTill;\n });\n }\n\n #markAsSeen() {\n if (!this._survey || !this._surveyState || this._surveyState.seen_at)\n return;\n\n this._surveyState = {\n ...this._surveyState,\n seen_at: Date.now(),\n };\n writeSurveyState(this._survey.bucket, this._surveyState);\n this.#measure(\"seen\");\n }\n\n #dismiss() {\n if (!this._survey || !this._surveyState) return;\n\n this._surveyState = {\n ...this._surveyState,\n dismissed_at: Date.now(),\n };\n writeSurveyState(this._survey.bucket, this._surveyState);\n this.#measure(\"dismissed\");\n this.requestUpdate();\n }\n\n #onLinkClick() {\n this.#markOpened();\n }\n\n #onToggle() {\n if (!this._survey || !this._surveyState || this._isOpen) return;\n\n const details = this._detailsRef.value;\n if (details && details.open) {\n this.#markOpened();\n this._isOpen = true;\n this.requestUpdate();\n }\n }\n\n #markOpened() {\n if (!this._survey || !this._surveyState) return;\n\n this._surveyState = {\n ...this._surveyState,\n opened_at: Date.now(),\n };\n writeSurveyState(this._survey.bucket, this._surveyState);\n this.#measure(\"opened\");\n }\n\n #onSubmitted() {\n if (!this._survey || !this._surveyState) return;\n\n this._surveyState = {\n ...this._surveyState,\n submitted_at: Date.now(),\n };\n writeSurveyState(this._survey.bucket, this._surveyState);\n this.#measure(\"submitted\");\n this.requestUpdate();\n }\n\n /**\n * @param {string} action\n */\n #measure(action) {\n if (!this._survey) return;\n\n gleanClick(`survey: ${action} ${this._survey.bucket}`);\n }\n\n #setupMessageListener() {\n /** @type {(event: MessageEvent) => void} */\n this._messageListener = (event) => {\n if (\n event.origin === \"https://survey.alchemer.com\" &&\n event.data === \"submit\"\n ) {\n this.#onSubmitted();\n }\n };\n window.addEventListener(\"message\", this._messageListener, false);\n }\n\n #removeMessageListener() {\n if (this._messageListener) {\n window.removeEventListener(\"message\", this._messageListener, false);\n }\n }\n\n /**\n * @returns {import(\"@lit\").TemplateResult | nothing}\n */\n render() {\n if (!this._survey || !this._surveyState) {\n return nothing;\n }\n\n if (\n !this._force &&\n (this._surveyState.dismissed_at || this._surveyState?.submitted_at)\n ) {\n return nothing;\n }\n\n const title = this.l10n(\"survey-hide-this-survey\")`Hide this survey`;\n\n return html`\n <div class=\"survey\">\n <header>\n <p>${this._survey.teaser}</p>\n <mdn-button\n variant=\"plain\"\n .icon=${closeIcon}\n icon-only\n title=${title}\n aria-label=${title}\n @click=${this.#dismiss}\n ></mdn-button>\n </header>\n ${\n this._survey.link\n ? html`<a\n class=\"external\"\n href=${this._source}\n target=\"_blank\"\n title=${this.l10n(\n \"survey-take-survey-opens-in-a-new-tab\",\n )`Take survey (Opens in a new tab)`}\n @click=${this.#onLinkClick}\n >${this._survey.question}</a\n >`\n : html`<details ${ref(this._detailsRef)} @toggle=${this.#onToggle}>\n <summary>${this._survey.question}</summary>\n ${\n this._isOpen && this._source\n ? html`\n <iframe\n title=${ifDefined(this._survey.question)}\n src=${this._source}\n ></iframe>\n `\n : nothing\n }\n </details>`\n }\n ${\n this._survey.footnote\n ? html` <footer>(${this._survey.footnote})</footer> `\n : nothing\n }\n </div>\n `;\n }\n}\n\ncustomElements.define(\"mdn-survey\", MDNSurvey);\n"],"names":["Object","URL","Date","s","JSON","localStorage","Math","MDNSurvey","location","URLSearchParams","e","window","i","customElements"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"5196.635f7f8d7984bead.js","sources":["webpack://@mdn/fred/./components/survey/element.css","webpack://@mdn/fred/./components/survey/surveys.js","webpack://@mdn/fred/./components/survey/utils.js","webpack://@mdn/fred/./components/survey/element.js"],"sourcesContent":["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_AT_RULE_IMPORT_0___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../external-link/global.css\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"assets/survey.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\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, `:host{display:block}.survey{background-color:var(--color-background-purple);border-radius:.5rem;display:grid;padding:1rem 1rem 1rem 5rem;row-gap:.75rem}header{align-items:center;display:flex;justify-content:space-between}header:before{background:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:cover;content:\"\";height:49px;margin-left:calc(-53px - .5rem);margin-top:1rem;position:absolute;width:53px}p{margin:0}mdn-button::part(button):hover{background-color:initial;border:1px solid var(--color-text-purple)}mdn-button::part(icon){color:var(--color-text-purple)}summary{cursor:pointer}a,summary{color:var(--color-text-purple)}a:hover{-webkit-text-decoration:none;text-decoration:none}iframe{border:none;border-radius:.5rem;height:500px;overflow:hidden;width:100%}footer{font-size:var(--font-size-small);font-style:italic}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n","// import { html } from \"lit\";\n\n/**\n * @import * as Survey from \"./types.js\";\n */\n/**\n * Survey bucket identifiers used for localStorage state management.\n * Each bucket represents a unique survey campaign and maintains separate state.\n * @readonly\n * @enum {string}\n */\nexport const SurveyBucket = Object.freeze({\n BLOG_FEEDBACK_2023: \"BLOG_FEEDBACK_2023\",\n BROWSER_SURVEY_OCT_2022: \"BROWSER_SURVEY_OCT_2022\",\n CONTENT_DISCOVERY_2023: \"CONTENT_DISCOVERY_2023\",\n CSS_CASCADE_2022: \"CSS_CASCADE_2022\",\n DE_LOCALE_2024: \"DE_LOCALE_2024\",\n DE_LOCALE_2024_EVAL: \"DE_LOCALE_2024_EVAL\",\n FIREFOX_WEB_COMPAT_2023: \"FIREFOX_WEB_COMPAT_2023\",\n INTEROP_2023: \"INTEROP_2023\",\n IT_LOCALE_2025: \"IT_LOCALE_2025\",\n WEB_COMPONENTS_2023: \"WEB_COMPONENTS_2023\",\n DISCOVERABILITY_2023: \"DISCOVERABILITY_2023\",\n WEB_SECURITY_2023: \"WEB_SECURITY_2023\",\n DISCOVERABILITY_AUG_2023: \"DISCOVERABILITY_AUG_2023\",\n WEB_APP_AUGUST_2024: \"WEB_APP_AUGUST_2024\",\n HOMEPAGE_FEEDBACK_2024: \"HOMEPAGE_FEEDBACK_2024\",\n WEBDX_EDITING_2024: \"WEBDX_EDITING_2024\",\n HOUSE_SURVEY_2025: \"HOUSE_SURVEY_2025\",\n JS_PROPOSALS_2025: \"JS_PROPOSALS_2025\",\n FIRST_FRED_2025: \"FIRST_FRED_2025\",\n DEVELOPER_SURVEY_2025: \"DEVELOPER_SURVEY_2025\",\n BASELINE_A11Y_2026: \"BASELINE_A11Y_2026\",\n CANVAS_2026: \"CANVAS_2026\",\n});\n\n/**\n * Array of survey configurations.\n *\n * When adding a survey, make sure it has this JavaScript action (in Alchemer)\n * so the banner is hidden for users who have already submitted it:\n * ```javascript\n * window.parent && window.parent.postMessage(\"submit\", \"*\");\n * ```\n *\n * @type {Survey.Survey[]}\n */\nexport const SURVEYS = [\n {\n key: SurveyBucket.CANVAS_2026,\n bucket: SurveyBucket.CANVAS_2026,\n show: (mdn_url) => {\n return /^\\/en-US\\/docs\\/Web\\/API/.test(mdn_url);\n },\n src: (mdn_url) => {\n const url = new URL(\n \"https://survey.alchemer.com/s3/8586037/MDN-Canvas-API\",\n );\n url.searchParams.set(\"referrer\", mdn_url);\n return url.toString();\n },\n teaser:\n \"We’re running a survey to better understand use of the Canvas API.\",\n question: \"We’d love for you to take 2 minutes to share your feedback.\",\n link: true,\n rateFrom: 0,\n rateTill: 0.1,\n start: Date.parse(\"2026-06-08\"),\n end: Date.parse(\"2026-06-15\"),\n },\n];\n","/**\n * @import * as Survey from \"./types.js\";\n */\n/**\n * @param {string} key\n * @returns {Survey.SurveyState}\n */\nexport function getSurveyState(key) {\n const stateKey = `survey.${key}`;\n let state;\n\n try {\n state = JSON.parse(localStorage?.getItem(stateKey) ?? \"{}\");\n } catch {\n state = {};\n }\n\n if (Object.keys(state).length === 0) {\n state = {\n random: Math.random(),\n seen_at: null,\n dismissed_at: null,\n submitted_at: null,\n opened_at: null,\n };\n writeSurveyState(key, state);\n }\n\n return state;\n}\n\n/**\n * @param {string} key\n * @param {Survey.SurveyState} state\n */\nexport function writeSurveyState(key, state) {\n const stateKey = `survey.${key}`;\n try {\n localStorage?.setItem(stateKey, JSON.stringify(state));\n } catch {\n // Handle localStorage errors silently\n }\n}\n","import { LitElement, html, nothing } from \"lit\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\n\nimport \"../button/element.js\";\nimport { L10nMixin } from \"../../l10n/mixin.js\";\nimport { gleanClick } from \"../../utils/glean.js\";\nimport closeIcon from \"../icon/cancel.svg?lit\";\n\nimport styles from \"./element.css?lit\";\nimport { SURVEYS } from \"./surveys.js\";\nimport { getSurveyState, writeSurveyState } from \"./utils.js\";\n\n/**\n * @import * as Survey from \"./types.js\";\n */\n\nexport class MDNSurvey extends L10nMixin(LitElement) {\n static styles = styles;\n\n static ssr = false;\n\n constructor() {\n super();\n /** @type {Survey.Survey | undefined} */\n this._survey = undefined;\n /** @type {Survey.SurveyState | undefined} */\n this._surveyState = undefined;\n /** @type {boolean} */\n this._isOpen = false;\n /** @type {boolean} */\n this._force = false;\n /** @type {string | undefined} */\n this._source = undefined;\n\n /** @type {import(\"@lit\").Ref<HTMLDetailsElement>} */\n this._detailsRef = createRef();\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.#checkForSurvey();\n this.#setupMessageListener();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.#removeMessageListener();\n }\n\n #checkForSurvey() {\n this._survey = this.#findSurvey();\n\n if (this._survey) {\n this._surveyState = getSurveyState(this._survey.bucket);\n this._source =\n typeof this._survey.src === \"function\"\n ? this._survey.src(location.pathname)\n : this._survey.src;\n\n this.#markAsSeen();\n }\n }\n\n /**\n * @returns {Survey.Survey | undefined}\n */\n #findSurvey() {\n const forcedSurvey = new URLSearchParams(location.search).get(\n \"force_survey\",\n );\n this._force = forcedSurvey !== null;\n return SURVEYS.find((survey) => {\n if (this._force) {\n return forcedSurvey ? survey.key === forcedSurvey : true;\n }\n\n if (!survey.show(location.pathname)) {\n return false;\n }\n\n const now = Date.now();\n if (now < survey.start || survey.end < now) {\n return false;\n }\n\n const state = getSurveyState(survey.bucket);\n return state.random >= survey.rateFrom && state.random < survey.rateTill;\n });\n }\n\n #markAsSeen() {\n if (!this._survey || !this._surveyState || this._surveyState.seen_at)\n return;\n\n this._surveyState = {\n ...this._surveyState,\n seen_at: Date.now(),\n };\n writeSurveyState(this._survey.bucket, this._surveyState);\n this.#measure(\"seen\");\n }\n\n #dismiss() {\n if (!this._survey || !this._surveyState) return;\n\n this._surveyState = {\n ...this._surveyState,\n dismissed_at: Date.now(),\n };\n writeSurveyState(this._survey.bucket, this._surveyState);\n this.#measure(\"dismissed\");\n this.requestUpdate();\n }\n\n #onLinkClick() {\n this.#markOpened();\n }\n\n #onToggle() {\n if (!this._survey || !this._surveyState || this._isOpen) return;\n\n const details = this._detailsRef.value;\n if (details && details.open) {\n this.#markOpened();\n this._isOpen = true;\n this.requestUpdate();\n }\n }\n\n #markOpened() {\n if (!this._survey || !this._surveyState) return;\n\n this._surveyState = {\n ...this._surveyState,\n opened_at: Date.now(),\n };\n writeSurveyState(this._survey.bucket, this._surveyState);\n this.#measure(\"opened\");\n }\n\n #onSubmitted() {\n if (!this._survey || !this._surveyState) return;\n\n this._surveyState = {\n ...this._surveyState,\n submitted_at: Date.now(),\n };\n writeSurveyState(this._survey.bucket, this._surveyState);\n this.#measure(\"submitted\");\n this.requestUpdate();\n }\n\n /**\n * @param {string} action\n */\n #measure(action) {\n if (!this._survey) return;\n\n gleanClick(`survey: ${action} ${this._survey.bucket}`);\n }\n\n #setupMessageListener() {\n /** @type {(event: MessageEvent) => void} */\n this._messageListener = (event) => {\n if (\n event.origin === \"https://survey.alchemer.com\" &&\n event.data === \"submit\"\n ) {\n this.#onSubmitted();\n }\n };\n window.addEventListener(\"message\", this._messageListener, {\n capture: false,\n });\n }\n\n #removeMessageListener() {\n if (this._messageListener) {\n window.removeEventListener(\"message\", this._messageListener, false);\n }\n }\n\n /**\n * @returns {import(\"@lit\").TemplateResult | nothing}\n */\n render() {\n if (!this._survey || !this._surveyState) {\n return nothing;\n }\n\n if (\n !this._force &&\n (this._surveyState.dismissed_at || this._surveyState?.submitted_at)\n ) {\n return nothing;\n }\n\n const title = this.l10n(\"survey-hide-this-survey\")`Hide this survey`;\n\n return html`\n <div class=\"survey\">\n <header>\n <p>${this._survey.teaser}</p>\n <mdn-button\n variant=\"plain\"\n .icon=${closeIcon}\n icon-only\n title=${title}\n aria-label=${title}\n @click=${this.#dismiss}\n ></mdn-button>\n </header>\n ${\n this._survey.link\n ? html`<a\n class=\"external\"\n href=${this._source}\n target=\"_blank\"\n title=${this.l10n(\n \"survey-take-survey-opens-in-a-new-tab\",\n )`Take survey (Opens in a new tab)`}\n @click=${this.#onLinkClick}\n >${this._survey.question}</a\n >`\n : html`<details ${ref(this._detailsRef)} @toggle=${this.#onToggle}>\n <summary>${this._survey.question}</summary>\n ${\n this._isOpen && this._source\n ? html`\n <iframe\n title=${ifDefined(this._survey.question)}\n src=${this._source}\n ></iframe>\n `\n : nothing\n }\n </details>`\n }\n ${\n this._survey.footnote\n ? html` <footer>(${this._survey.footnote})</footer> `\n : nothing\n }\n </div>\n `;\n }\n}\n\ncustomElements.define(\"mdn-survey\", MDNSurvey);\n"],"names":["Object","URL","Date","s","JSON","localStorage","Math","MDNSurvey","location","URLSearchParams","e","window","i","customElements"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const __rspack_esm_id=5562;export const __rspack_esm_ids=[5562];export const __webpack_modules__={93649(e,t,s){let RecentlyVisitedPages=class RecentlyVisitedPages{static #e="recently-visited";#t;constructor(){this.#t=this.#s()}#s(){let e=localStorage.getItem(RecentlyVisitedPages.#e);if(e)try{let t=JSON.parse(e);if(Array.isArray(t))return t.map(e=>new RecentlyVisitedPage(e))}catch{console.error(`Parsing ${RecentlyVisitedPages.#e} failed`)}return[]}#a(){localStorage.setItem(RecentlyVisitedPages.#e,JSON.stringify(this.#t))}map(e){return this.#t.map(e)}add(e){this.#t=[...new Map([e,...this.#t].map(e=>[e.path,e])).values()].slice(0,10),this.#a()}};let RecentlyVisitedPage=class RecentlyVisitedPage{title="";path="";constructor(e){Object.assign(this,e)}};s.d(t,{B:()=>RecentlyVisitedPages,E:()=>RecentlyVisitedPage})}};
|
|
2
|
+
//# sourceMappingURL=5562.3cfad67583264655.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"5562.3cfad67583264655.js","sources":["webpack://@mdn/fred/./components/recently-visited/index.js"],"sourcesContent":["export class RecentlyVisitedPages {\n static #key = \"recently-visited\";\n #pages;\n\n constructor() {\n this.#pages = this.#getFromStorage();\n }\n\n #getFromStorage() {\n const storage = localStorage.getItem(RecentlyVisitedPages.#key);\n if (storage) {\n try {\n const pages = JSON.parse(storage);\n if (Array.isArray(pages)) {\n return pages.map((page) => new RecentlyVisitedPage(page));\n }\n } catch {\n console.error(`Parsing ${RecentlyVisitedPages.#key} failed`);\n }\n }\n return [];\n }\n\n #saveToStorage() {\n localStorage.setItem(\n RecentlyVisitedPages.#key,\n JSON.stringify(this.#pages),\n );\n }\n\n /**\n * @template T\n * @param {(value: RecentlyVisitedPage, index: number, array: RecentlyVisitedPage[]) => T} callback\n * @returns {T[]}\n */\n map(callback) {\n return this.#pages.map(callback);\n }\n\n /**\n * @param {RecentlyVisitedPage} page\n */\n add(page) {\n this.#pages = [\n ...new Map([page, ...this.#pages].map((p) => [p.path, p])).values(),\n ].slice(0, 10);\n this.#saveToStorage();\n }\n}\n\nexport class RecentlyVisitedPage {\n title = \"\";\n path = \"\";\n\n /**\n * @param {object} data\n * @param {string} data.title\n * @param {string} data.path\n */\n constructor(data) {\n Object.assign(this, data);\n }\n}\n"],"names":["RecentlyVisitedPages","localStorage","JSON","Array","RecentlyVisitedPage","console","Map","Object"],"mappings":"sHAAO,IAAMA,qBAAN,MAAMA,qBACX,OAAO,EAAI,CAAG,kBAAmB,AACjC,GAAM,AAAC,AAEP,cAAc,CACZ,IAAI,CAAC,EAAM,CAAG,IAAI,CAAC,EAAe,EACpC,CAEA,EAAe,GACb,IAAM,EAAUC,aAAa,OAAO,CAACD,qBAAqB,EAAI,EAC9D,GAAI,EACF,GAAI,CACF,IAAM,EAAQE,KAAK,KAAK,CAAC,GACzB,GAAIC,MAAM,OAAO,CAAC,GAChB,OAAO,EAAM,GAAG,CAAC,AAAC,GAAS,IAAIC,oBAAoB,GAEvD,CAAE,KAAM,CACNC,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAEL,qBAAqB,EAAI,CAAC,OAAO,CAAC,CAC7D,CAEF,MAAO,EAAE,AACX,CAEA,EAAc,GACZC,aAAa,OAAO,CAClBD,qBAAqB,EAAI,CACzBE,KAAK,SAAS,CAAC,IAAI,CAAC,EAAM,EAE9B,CAOA,IAAI,CAAQ,CAAE,CACZ,OAAO,IAAI,CAAC,EAAM,CAAC,GAAG,CAAC,EACzB,CAKA,IAAI,CAAI,CAAE,CACR,IAAI,CAAC,EAAM,CAAG,IACT,IAAII,IAAI,CAAC,KAAS,IAAI,CAAC,EAAM,CAAC,CAAC,GAAG,CAAC,AAAC,GAAM,CAAC,EAAE,IAAI,CAAE,EAAE,GAAG,MAAM,GAClE,CAAC,KAAK,CAAC,EAAG,IACX,IAAI,CAAC,EAAc,EACrB,CACF,EAEO,IAAMF,oBAAN,MAAMA,oBACX,MAAQ,EAAG,AACX,MAAO,EAAG,AAOV,aAAY,CAAI,CAAE,CAChBG,OAAO,MAAM,CAAC,IAAI,CAAE,EACtB,CACF,E"}
|
|
@@ -121,7 +121,7 @@ export const __rspack_esm_id=8067;export const __rspack_esm_ids=[8067];export co
|
|
|
121
121
|
</div>`})}_renderBranchHeading(e,t){let r=e&&t?"compat-branch-prefix-altname":e?"compat-branch-prefix":"compat-branch-altname",a=this.l10n.raw({id:r,args:{prefix:e,altname:t},elements:{prefix:{tag:"code"},altname:{tag:"code"}}}),i=[e&&this._renderIcon("prefix"),t&&this._renderIcon("altname")].filter(Boolean);return(0,o.qy)`<div class="bc-branch-heading">
|
|
122
122
|
<div class="bc-icons">${i}</div>
|
|
123
123
|
<span>${a}</span>
|
|
124
|
-
</div>`}_getNotes(e,t,r,{omitAliasModifiers:o=!1}={}){let a=[];if(r.version_removed
|
|
124
|
+
</div>`}_getNotes(e,t,r,{omitAliasModifiers:o=!1}={}){let a=[];if(r.version_removed&&(0,b.DD)(t).every(e=>e.version_added!==r.version_removed)&&a.push({iconName:"footnote",label:this.l10n.raw({id:"compat-support-removed",args:{version:u(r.version_removed,e)}})}),r.partial_implementation&&a.push({iconName:"footnote",label:this.l10n("compat-support-partial")`Partial support`}),r.flags){let t="string"==typeof r.version_added&&"preview"!==r.version_added,o="string"==typeof r.version_last,i=t?o?"range":"from":o?"until":"none";for(let{type:t,name:o,value_to_set:n}of r.flags)a.push({iconName:"disabled",label:this.l10n.raw({id:"compat-support-flag-range",args:{version_range:i,version_added:r.version_added,version_last:r.version_last,flag_type:t,flag_name:o,has_value:Number("string"==typeof n),flag_value:n,has_pref_url:Number("string"==typeof e.pref_url),browser_name:e.name,browser_pref_url:e.pref_url},elements:{name:{tag:"code"},value:{tag:"code"}}})})}if(r.notes)for(let e of Array.isArray(r.notes)?r.notes:[r.notes])a.push({iconName:"footnote",label:e});if(r.impl_url)for(let e of Array.isArray(r.impl_url)?r.impl_url:[r.impl_url])a.push({iconName:"footnote",label:this.l10n.raw({id:"compat-support-see-impl-url",args:{label:(0,b.YW)(e)},elements:{impl_url:{tag:"a",href:e}}})});return(0,b.do)(r.version_added,e)&&a.push({iconName:"footnote",label:this.l10n("compat-support-preview-browser")`Preview browser support`}),(0,b.j$)(r,{ignoreAliasModifiers:o})&&!(0,b.do)(r.version_added,e)?a.push({iconName:"footnote",label:this.l10n("compat-support-full")`Full support`}):(0,b._K)(r)&&a.push({iconName:"footnote",label:this.l10n("compat-support-no")`No support`}),0===a.length&&a.push({iconName:"unknown",label:this.l10n("compat-support-unknown")`Support unknown`}),a}_renderCellText(e,t,r=!1,{omitAliasModifiers:a=!1}={}){let i,n,s=(0,b.$e)(e),l=s?.version_added??void 0,c=s?.version_last??void 0,d=function(e){if(e)return(0,b.$e)(e)?.release_date}(e),p=m(e,t);switch(l){case void 0:i={isSupported:"unknown"};break;case!1:i={isSupported:"no"};break;case"preview":i={isSupported:"preview"};break;default:i={isSupported:p,label:"string"!=typeof c?(0,o.qy)`${u(l,t)}`:(0,o.qy)`${u(l,t)} – ${u(c,t)}`}}let h="";switch(i.isSupported){case"yes":h=this.l10n("compat-support-full")`Full support`,n=i.label||this.l10n("compat-yes")`Yes`;break;case"partial":h=this.l10n("compat-support-partial")`Partial support`,n=i.label||this.l10n("compat-partial")`Partial`;break;case"removed-partial":r?(h=this.l10n("compat-support-partial")`Partial support`,n=i.label||this.l10n("compat-partial")`Partial`):(h=this.l10n("compat-support-no")`No support`,n=i.label||this.l10n("compat-no")`No`);break;case"no":h=this.l10n("compat-support-no")`No support`,n=i.label||this.l10n("compat-no")`No`;break;case"preview":h=this.l10n("compat-support-preview")`Preview support`,n=i.label||t.preview_name;break;case"unknown":h=this.l10n("compat-support-unknown")`Support unknown`,n="?"}return h=`${t.name} – ${h}`,(0,o.qy)`<div
|
|
125
125
|
class=${r?"bcd-timeline-cell-text-wrapper":"bcd-cell-text-wrapper"}
|
|
126
126
|
>
|
|
127
127
|
<div class="bcd-cell-icons">
|
|
@@ -174,4 +174,4 @@ export const __rspack_esm_id=8067;export const __rspack_esm_ids=[8067];export co
|
|
|
174
174
|
</p>
|
|
175
175
|
<dl class="bc-legend-items-container">${r}</dl>
|
|
176
176
|
</section>`}render(){return(0,o.qy)` ${this._renderTable()} ${this._renderTableLegend()} `}};function g(e,t,r){let o=Object.entries(r).filter(([,{type:e}])=>"server"==e).map(([e])=>e),a=["desktop","mobile"];("javascript"===e||o.some(e=>t.__compat&&e in t.__compat.support))&&a.push("server");let i=[];for(let e of a){let t=Object.keys(r);i.push(...t.filter(t=>t in r&&r[t]?.type===e))}if("webextensions"===e&&(i=i.filter(e=>r[e]?.accepts_webextensions)),"javascript"!==e)for(let e of o)!t.__compat||e in t.__compat.support||(i=i.filter(t=>t!==e));return[a,[...i=i.filter(e=>b.cv.includes(e))]]}customElements.define("mdn-compat-table",MDNCompatTable)},34156(e,t,r){var o=r(22207);function a(e){return Array.isArray(e)?e[0]:e}function i(e){return Array.isArray(e)?e:[e]}function n(e){return Array.isArray(e)&&e.length>1}function s(e){let t=new Map;for(let r of i(e)){let e=`${r.prefix??""}/${r.alternative_name??""}`,o=t.get(e);o?o.push(r):t.set(e,[r])}let r=t.get("/");return t.delete("/"),[...r?[r]:[],...[...t.values()].sort(([e],[t])=>(e.alternative_name??"").localeCompare(t.alternative_name??"")||(e.prefix??"").localeCompare(t.prefix??""))]}function l(e,t){return"preview"===e||!!t&&"string"==typeof e&&!!t.releases[e]&&["beta","nightly","planned"].includes(t.releases[e].status)}function c(e){return!!(e.notes&&e.notes.length>0||e.impl_url&&e.impl_url.length>0)&&!e.version_removed&&!e.partial_implementation}function d(e){let t=e.match(/^https:\/\/(?:crbug\.com|webkit\.org\/b|bugzil\.la)\/([0-9]+)/i),r=t?t[1]:void 0;return r?`bug ${r}`:e}function p(e,{ignoreAliasModifiers:t=!1}={}){return b(e,{ignoreAliasModifiers:t})||!!e.notes||!!e.impl_url}function b(e,{ignoreAliasModifiers:t=!1}={}){return e.partial_implementation||!t&&!!e.alternative_name||!!e.flags||!t&&!!e.prefix||!!e.version_removed}function m(e,{ignoreAliasModifiers:t=!1}={}){return!!e.version_added&&!p(e,{ignoreAliasModifiers:t})}function u(e){return!1===e.version_added&&!p(e)}function h(e){if(!e)return;let t=i(e).find(e=>m(e));if(t)return t;let r=i(e).find(e=>!!e.version_added&&!b(e));if(r)return r;let o=i(e).find(e=>!e.version_removed&&(e.prefix||e.alternative_name));if(o)return o;let n=i(e).find(e=>!e.version_removed&&e.partial_implementation);if(n)return n;let s=i(e).find(e=>!e.version_removed&&e.flags);if(s)return s;let l=i(e).find(e=>e.version_removed);return l||a(e)}function g(e){return`${o.iW}/bcd/api/v0/current/${e}.json`}r.d(t,{$e:()=>h,D:()=>g,DD:()=>i,YW:()=>d,_K:()=>u,aF:()=>function e(t,r="",o="",a=0,i=0){let n=[];for(let[s,l]of(o&&t.__compat&&n.push({name:o,compat:t.__compat,depth:a}),o&&(i=function(e){let t=[["",e]];do{let e=t.shift();if(!e)break;let[r,o]=e;if(o.__compat)return r.split(".").length;for(let[e,a]of Object.entries(o)){let o=r?`${r}.${e}`:e;"__compat"in a&&t.push([o,a])}}while(t.length>0)return 0}(t)),Object.entries(t)))"__compat"!==s&&("__compat"in l&&l.__compat&&n.push({name:r?`${r}.${s}`:s,compat:l.__compat,depth:a+1}),"__compat"in l&&n.push(...e(l,s,"",a+1,i)));return n},dH:()=>a,do:()=>l,hp:()=>s,j$:()=>m,pY:()=>c,u9:()=>n},{cv:["chrome","edge","firefox","opera","safari","chrome_android","firefox_android","opera_android","safari_ios","samsunginternet_android","webview_android","webview_ios","bun","deno","nodejs"]})},91118(e,t,r){var o=r(18376);let ViewedController=class ViewedController{#e;observer=null;constructor(e,t,r,o){this.#e=e,this.#e.addController(this),this.target=t,this.callback=r,this.observerOptions=o}hostDisconnected(){this.observer?.disconnect(),this.observer=null}hostUpdated(){let e=this.target.value;e&&!this.observer&&(this.observer=new o.x(e,this.callback,this.observerOptions),this.observer.connect())}};r.d(t,{B:()=>ViewedController})}};
|
|
177
|
-
//# sourceMappingURL=8067.
|
|
177
|
+
//# sourceMappingURL=8067.e21835e06833480e.js.map
|