<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-VariantAllyDialog.js</id>
	<title>MediaWiki:Gadget-VariantAllyDialog.js - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-VariantAllyDialog.js"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=MediaWiki:Gadget-VariantAllyDialog.js&amp;action=history"/>
	<updated>2026-07-14T09:35:15Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=MediaWiki:Gadget-VariantAllyDialog.js&amp;diff=4340047&amp;oldid=prev</id>
		<title>imported&gt;Diskdance：​Update metric collection</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=MediaWiki:Gadget-VariantAllyDialog.js&amp;diff=4340047&amp;oldid=prev"/>
		<updated>2025-11-11T10:08:35Z</updated>

		<summary type="html">&lt;p&gt;Update metric collection&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**!&lt;br /&gt;
 *  _________________________________________________________________________________&lt;br /&gt;
 * |                                                                                 |&lt;br /&gt;
 * |                      === WARNING: GLOBAL GADGET FILE ===                        |&lt;br /&gt;
 * |                    Changes to this page affect many users.                      |&lt;br /&gt;
 * |  Please discuss changes on the talk page, [[WP:VPT]] or GitHub before editing.  |&lt;br /&gt;
 * |_________________________________________________________________________________|&lt;br /&gt;
 *&lt;br /&gt;
 * Built from GitHub repository (https://github.com/wikimedia-gadgets/VariantAlly), you should not make&lt;br /&gt;
 * changes directly here.&lt;br /&gt;
 *&lt;br /&gt;
 * See https://github.com/wikimedia-gadgets/VariantAlly/blob/main/CONTRIBUTING.md for build instructions.&lt;br /&gt;
 */&lt;br /&gt;
// &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
var _a;&lt;br /&gt;
const vue = require(&amp;quot;vue&amp;quot;);&lt;br /&gt;
const ext_gadget_VariantAlly = require(&amp;quot;ext.gadget.VariantAlly&amp;quot;);&lt;br /&gt;
const _hoisted_1$3 = [&amp;quot;width&amp;quot;, &amp;quot;height&amp;quot;];&lt;br /&gt;
const _hoisted_2$2 = { key: 0 };&lt;br /&gt;
const _hoisted_3$2 = { key: 1 };&lt;br /&gt;
const _hoisted_4$2 = { key: 2 };&lt;br /&gt;
const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({&lt;br /&gt;
  __name: &amp;quot;VAIcon&amp;quot;,&lt;br /&gt;
  props: {&lt;br /&gt;
    icon: {},&lt;br /&gt;
    size: { default: 20 }&lt;br /&gt;
  },&lt;br /&gt;
  setup(__props) {&lt;br /&gt;
    return (_ctx, _cache) =&amp;gt; {&lt;br /&gt;
      return vue.openBlock(), vue.createElementBlock(&amp;quot;svg&amp;quot;, {&lt;br /&gt;
        class: &amp;quot;va-icon&amp;quot;,&lt;br /&gt;
        xmlns: &amp;quot;http://www.w3.org/2000/svg&amp;quot;,&lt;br /&gt;
        &amp;quot;xmlns:xlink&amp;quot;: &amp;quot;http://www.w3.org/1999/xlink&amp;quot;,&lt;br /&gt;
        width: _ctx.size,&lt;br /&gt;
        height: _ctx.size,&lt;br /&gt;
        viewBox: &amp;quot;0 0 20 20&amp;quot;,&lt;br /&gt;
        &amp;quot;aria-hidden&amp;quot;: &amp;quot;true&amp;quot;&lt;br /&gt;
      }, [&lt;br /&gt;
        _ctx.icon === &amp;quot;lang&amp;quot; ? (vue.openBlock(), vue.createElementBlock(&amp;quot;g&amp;quot;, _hoisted_2$2, _cache[0] || (_cache[0] = [&lt;br /&gt;
          vue.createElementVNode(&amp;quot;path&amp;quot;, { d: &amp;quot;M20 18h-1.44a.61.61 0 01-.4-.12.81.81 0 01-.23-.31L17 15h-5l-1 2.54a.77.77 0 01-.22.3.59.59 0 01-.4.14H9l4.55-11.47h1.89zm-3.53-4.31L14.89 9.5a11.62 11.62 0 01-.39-1.24q-.09.37-.19.69l-.19.56-1.58 4.19zm-6.3-1.58a13.43 13.43 0 01-2.91-1.41 11.46 11.46 0 002.81-5.37H12V4H7.31a4 4 0 00-.2-.56C6.87 2.79 6.6 2 6.6 2l-1.47.5s.4.89.6 1.5H0v1.33h2.15A11.23 11.23 0 005 10.7a17.19 17.19 0 01-5 2.1q.56.82.87 1.38a23.28 23.28 0 005.22-2.51 15.64 15.64 0 003.56 1.77zM3.63 5.33h4.91a8.11 8.11 0 01-2.45 4.45 9.11 9.11 0 01-2.46-4.45z&amp;quot; }, null, -1)&lt;br /&gt;
        ]))) : _ctx.icon === &amp;quot;close&amp;quot; ? (vue.openBlock(), vue.createElementBlock(&amp;quot;g&amp;quot;, _hoisted_3$2, _cache[1] || (_cache[1] = [&lt;br /&gt;
          vue.createElementVNode(&amp;quot;path&amp;quot;, { d: &amp;quot;m4.34 2.93 12.73 12.73-1.41 1.41L2.93 4.35z&amp;quot; }, null, -1),&lt;br /&gt;
          vue.createElementVNode(&amp;quot;path&amp;quot;, { d: &amp;quot;M17.07 4.34 4.34 17.07l-1.41-1.41L15.66 2.93z&amp;quot; }, null, -1)&lt;br /&gt;
        ]))) : (vue.openBlock(), vue.createElementBlock(&amp;quot;g&amp;quot;, _hoisted_4$2, _cache[2] || (_cache[2] = [&lt;br /&gt;
          vue.createElementVNode(&amp;quot;path&amp;quot;, { d: &amp;quot;M8.59 3.42 14.17 9H2v2h12.17l-5.58 5.59L10 18l8-8-8-8z&amp;quot; }, null, -1)&lt;br /&gt;
        ])))&lt;br /&gt;
      ], 8, _hoisted_1$3);&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
const _hoisted_1$2 = {&lt;br /&gt;
  key: 1,&lt;br /&gt;
  class: &amp;quot;va-button__text&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({&lt;br /&gt;
  __name: &amp;quot;VAButton&amp;quot;,&lt;br /&gt;
  props: {&lt;br /&gt;
    icon: {},&lt;br /&gt;
    indicator: {},&lt;br /&gt;
    action: {},&lt;br /&gt;
    weight: {}&lt;br /&gt;
  },&lt;br /&gt;
  emits: [&amp;quot;click&amp;quot;],&lt;br /&gt;
  setup(__props) {&lt;br /&gt;
    return (_ctx, _cache) =&amp;gt; {&lt;br /&gt;
      return vue.openBlock(), vue.createElementBlock(&amp;quot;button&amp;quot;, {&lt;br /&gt;
        class: vue.normalizeClass([&amp;quot;va-button&amp;quot;, {&lt;br /&gt;
          &amp;quot;va-button--action-progressive&amp;quot;: _ctx.action === &amp;quot;progressive&amp;quot;,&lt;br /&gt;
          &amp;quot;va-button--weight-quiet&amp;quot;: _ctx.weight === &amp;quot;quiet&amp;quot;&lt;br /&gt;
        }]),&lt;br /&gt;
        onClick: _cache[0] || (_cache[0] = ($event) =&amp;gt; _ctx.$emit(&amp;quot;click&amp;quot;))&lt;br /&gt;
      }, [&lt;br /&gt;
        _ctx.icon !== void 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$6, {&lt;br /&gt;
          key: 0,&lt;br /&gt;
          class: &amp;quot;va-button__icon&amp;quot;,&lt;br /&gt;
          icon: _ctx.icon&lt;br /&gt;
        }, null, 8, [&amp;quot;icon&amp;quot;])) : vue.createCommentVNode(&amp;quot;&amp;quot;, true),&lt;br /&gt;
        _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock(&amp;quot;span&amp;quot;, _hoisted_1$2, [&lt;br /&gt;
          vue.renderSlot(_ctx.$slots, &amp;quot;default&amp;quot;, {}, void 0, true)&lt;br /&gt;
        ])) : vue.createCommentVNode(&amp;quot;&amp;quot;, true),&lt;br /&gt;
        _ctx.indicator !== void 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$6, {&lt;br /&gt;
          key: 2,&lt;br /&gt;
          class: &amp;quot;va-button__indicator&amp;quot;,&lt;br /&gt;
          icon: _ctx.indicator,&lt;br /&gt;
          size: 16&lt;br /&gt;
        }, null, 8, [&amp;quot;icon&amp;quot;])) : vue.createCommentVNode(&amp;quot;&amp;quot;, true)&lt;br /&gt;
      ], 2);&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
const _export_sfc = (sfc, props) =&amp;gt; {&lt;br /&gt;
  const target = sfc.__vccOpts || sfc;&lt;br /&gt;
  for (const [key, val] of props) {&lt;br /&gt;
    target[key] = val;&lt;br /&gt;
  }&lt;br /&gt;
  return target;&lt;br /&gt;
};&lt;br /&gt;
const VAButton = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[&amp;quot;__scopeId&amp;quot;, &amp;quot;data-v-e9c2c849&amp;quot;]]);&lt;br /&gt;
const _sfc_main$4 = {};&lt;br /&gt;
function _sfc_render(_ctx, _cache) {&lt;br /&gt;
  return vue.openBlock(), vue.createBlock(vue.Transition, {&lt;br /&gt;
    name: &amp;quot;va-fade&amp;quot;,&lt;br /&gt;
    mode: &amp;quot;out-in&amp;quot;&lt;br /&gt;
  }, {&lt;br /&gt;
    default: vue.withCtx(() =&amp;gt; [&lt;br /&gt;
      vue.renderSlot(_ctx.$slots, &amp;quot;default&amp;quot;, {}, void 0, true)&lt;br /&gt;
    ]),&lt;br /&gt;
    _: 3&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
const VAFadeTransition = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[&amp;quot;render&amp;quot;, _sfc_render], [&amp;quot;__scopeId&amp;quot;, &amp;quot;data-v-c22b77e6&amp;quot;]]);&lt;br /&gt;
const variants = { &amp;quot;zh-cn&amp;quot;: &amp;quot;中国大陆简体&amp;quot;, &amp;quot;zh-sg&amp;quot;: &amp;quot;新加坡简体&amp;quot;, &amp;quot;zh-my&amp;quot;: &amp;quot;马来西亚简体&amp;quot;, &amp;quot;zh-hk&amp;quot;: &amp;quot;香港繁體&amp;quot;, &amp;quot;zh-mo&amp;quot;: &amp;quot;澳門繁體&amp;quot;, &amp;quot;zh-tw&amp;quot;: &amp;quot;臺灣正體&amp;quot; };&lt;br /&gt;
const hans = { &amp;quot;space&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;close&amp;quot;: &amp;quot;关闭&amp;quot;, &amp;quot;vp.header&amp;quot;: &amp;quot;我们支持&amp;quot;, &amp;quot;vp.header.alt&amp;quot;: &amp;quot;记住此变体？&amp;quot;, &amp;quot;vp.main&amp;quot;: &amp;quot;选取内容的语言变体&amp;quot;, &amp;quot;vp.main.alt&amp;quot;: &amp;quot;以后都使用此变体呈现内容&amp;quot;, &amp;quot;vp.main.ext&amp;quot;: &amp;quot;保存您偏好的中文语言变体，以避免显示简繁混杂的内容，提供最佳的阅读体验。&amp;quot;, &amp;quot;vp.button.ok&amp;quot;: &amp;quot;确定&amp;quot;, &amp;quot;vp.button.other&amp;quot;: &amp;quot;其他&amp;quot; };&lt;br /&gt;
const hant = { &amp;quot;space&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;close&amp;quot;: &amp;quot;關閉&amp;quot;, &amp;quot;vp.header&amp;quot;: &amp;quot;我們支援&amp;quot;, &amp;quot;vp.header.alt&amp;quot;: &amp;quot;記住此變體？&amp;quot;, &amp;quot;vp.main&amp;quot;: &amp;quot;選取內容的語言變體&amp;quot;, &amp;quot;vp.main.alt&amp;quot;: &amp;quot;以後都使用此變體呈現內容&amp;quot;, &amp;quot;vp.main.ext&amp;quot;: &amp;quot;儲存您偏好的中文語言變體，以避免顯示簡繁混雜的內容，提供最佳的閱讀體驗。&amp;quot;, &amp;quot;vp.button.ok&amp;quot;: &amp;quot;確定&amp;quot;, &amp;quot;vp.button.other&amp;quot;: &amp;quot;其他&amp;quot; };&lt;br /&gt;
const messages = {&lt;br /&gt;
  variants,&lt;br /&gt;
  hans,&lt;br /&gt;
  hant&lt;br /&gt;
};&lt;br /&gt;
const VALID_VARIANTS = [&lt;br /&gt;
  &amp;quot;zh-cn&amp;quot;,&lt;br /&gt;
  &amp;quot;zh-sg&amp;quot;,&lt;br /&gt;
  &amp;quot;zh-my&amp;quot;,&lt;br /&gt;
  &amp;quot;zh-tw&amp;quot;,&lt;br /&gt;
  &amp;quot;zh-hk&amp;quot;,&lt;br /&gt;
  &amp;quot;zh-mo&amp;quot;&lt;br /&gt;
];&lt;br /&gt;
const wgUserVariant = vue.ref((_a = mw.config.get(&amp;quot;wgUserVariant&amp;quot;)) != null ? _a : &amp;quot;&amp;quot;);&lt;br /&gt;
function isMobileDevice() {&lt;br /&gt;
  return matchMedia(&amp;quot;(hover: none), (pointer: coarse)&amp;quot;).matches;&lt;br /&gt;
}&lt;br /&gt;
function getMountPoint() {&lt;br /&gt;
  var _a2, _b;&lt;br /&gt;
  switch (mw.config.get(&amp;quot;skin&amp;quot;)) {&lt;br /&gt;
    case &amp;quot;vector-2022&amp;quot;:&lt;br /&gt;
      return (_a2 = document.getElementsByClassName(&amp;quot;mw-page-container&amp;quot;)[0]) != null ? _a2 : document.body;&lt;br /&gt;
    case &amp;quot;timeless&amp;quot;:&lt;br /&gt;
      return (_b = document.getElementById(&amp;quot;mw-content-block&amp;quot;)) != null ? _b : document.body;&lt;br /&gt;
    case &amp;quot;vector&amp;quot;:&lt;br /&gt;
    case &amp;quot;minerva&amp;quot;:&lt;br /&gt;
    case &amp;quot;monobook&amp;quot;:&lt;br /&gt;
    default:&lt;br /&gt;
      return document.body;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
const inferredVariant = vue.computed(() =&amp;gt; {&lt;br /&gt;
  if (VALID_VARIANTS.includes(wgUserVariant.value)) {&lt;br /&gt;
    return wgUserVariant.value;&lt;br /&gt;
  }&lt;br /&gt;
  return null;&lt;br /&gt;
});&lt;br /&gt;
function shuffleVariant(last) {&lt;br /&gt;
  const targetArray = [...VALID_VARIANTS].filter((i) =&amp;gt; i !== last);&lt;br /&gt;
  const randomIndex = Math.floor(Math.random() * targetArray.length);&lt;br /&gt;
  return targetArray[randomIndex];&lt;br /&gt;
}&lt;br /&gt;
const i18nVariant = vue.computed(() =&amp;gt; {&lt;br /&gt;
  if (wgUserVariant.value === &amp;quot;zh&amp;quot;) {&lt;br /&gt;
    return Math.random() &amp;gt; 0.5 ? &amp;quot;hans&amp;quot; : &amp;quot;hant&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  if ([&amp;quot;zh-hant&amp;quot;, &amp;quot;zh-tw&amp;quot;, &amp;quot;zh-hk&amp;quot;, &amp;quot;zh-mo&amp;quot;].includes(wgUserVariant.value)) {&lt;br /&gt;
    return &amp;quot;hant&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  return &amp;quot;hans&amp;quot;;&lt;br /&gt;
});&lt;br /&gt;
function useI18n(key) {&lt;br /&gt;
  var _a2;&lt;br /&gt;
  const currentMsgsGroup = messages[i18nVariant.value];&lt;br /&gt;
  return (_a2 = currentMsgsGroup[key]) != null ? _a2 : key;&lt;br /&gt;
}&lt;br /&gt;
let counter = 0;&lt;br /&gt;
function useUniqueId() {&lt;br /&gt;
  return `va-${counter++}`;&lt;br /&gt;
}&lt;br /&gt;
const INTERVAL = 3 * 1e3;&lt;br /&gt;
function useShuffledVariant(isFreezed) {&lt;br /&gt;
  const result = vue.ref(shuffleVariant());&lt;br /&gt;
  let id;&lt;br /&gt;
  vue.watch(isFreezed, (newValue) =&amp;gt; {&lt;br /&gt;
    var _a2;&lt;br /&gt;
    if (!newValue) {&lt;br /&gt;
      id = window.setInterval(() =&amp;gt; {&lt;br /&gt;
        result.value = shuffleVariant(result.value);&lt;br /&gt;
      }, INTERVAL);&lt;br /&gt;
    } else {&lt;br /&gt;
      clearInterval(id);&lt;br /&gt;
      result.value = (_a2 = inferredVariant.value) != null ? _a2 : shuffleVariant();&lt;br /&gt;
    }&lt;br /&gt;
  }, { immediate: true });&lt;br /&gt;
  return result;&lt;br /&gt;
}&lt;br /&gt;
function useModelWrapper(props, emit, name = &amp;quot;modelValue&amp;quot;) {&lt;br /&gt;
  return vue.computed({&lt;br /&gt;
    get() {&lt;br /&gt;
      return props[name];&lt;br /&gt;
    },&lt;br /&gt;
    set(value) {&lt;br /&gt;
      emit(`update:${name}`, value);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
function useDefault(defaultValue) {&lt;br /&gt;
  const realRef = vue.shallowRef(typeof defaultValue === &amp;quot;function&amp;quot; ? defaultValue() : defaultValue.value);&lt;br /&gt;
  vue.watch(defaultValue, (newValue) =&amp;gt; {&lt;br /&gt;
    realRef.value = newValue;&lt;br /&gt;
  }, { deep: true });&lt;br /&gt;
  return vue.computed({&lt;br /&gt;
    get() {&lt;br /&gt;
      return realRef.value;&lt;br /&gt;
    },&lt;br /&gt;
    set(newValue) {&lt;br /&gt;
      realRef.value = newValue;&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
const _hoisted_1$1 = [&amp;quot;lang&amp;quot;, &amp;quot;aria-labelledby&amp;quot;, &amp;quot;aria-describedby&amp;quot;];&lt;br /&gt;
const _hoisted_2$1 = [&amp;quot;id&amp;quot;];&lt;br /&gt;
const _hoisted_3$1 = [&amp;quot;lang&amp;quot;];&lt;br /&gt;
const _hoisted_4$1 = [&amp;quot;id&amp;quot;];&lt;br /&gt;
const _hoisted_5$1 = { class: &amp;quot;va-variant-prompt__options&amp;quot; };&lt;br /&gt;
const _hoisted_6$1 = { class: &amp;quot;va-variant-prompt__footer&amp;quot; };&lt;br /&gt;
const _hoisted_7$1 = { class: &amp;quot;va-para va-para--subtle&amp;quot; };&lt;br /&gt;
const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({&lt;br /&gt;
  __name: &amp;quot;VAVariantPrompt&amp;quot;,&lt;br /&gt;
  props: {&lt;br /&gt;
    open: { type: Boolean },&lt;br /&gt;
    disabled: { type: Boolean, default: false },&lt;br /&gt;
    autoClose: { type: Boolean, default: false }&lt;br /&gt;
  },&lt;br /&gt;
  emits: [&amp;quot;update:open&amp;quot;, &amp;quot;update:disabled&amp;quot;, &amp;quot;select&amp;quot;, &amp;quot;optout&amp;quot;],&lt;br /&gt;
  setup(__props, { emit: __emit }) {&lt;br /&gt;
    const props = __props;&lt;br /&gt;
    const emit = __emit;&lt;br /&gt;
    const prompt = vue.ref(null);&lt;br /&gt;
    const titleId = useUniqueId();&lt;br /&gt;
    const descId = useUniqueId();&lt;br /&gt;
    const isOpen = useModelWrapper(props, emit, &amp;quot;open&amp;quot;);&lt;br /&gt;
    const isDisabled = useModelWrapper(props, emit, &amp;quot;disabled&amp;quot;);&lt;br /&gt;
    const isVariantNarrowed = useDefault(() =&amp;gt; inferredVariant.value !== null);&lt;br /&gt;
    const shuffledVariant = useShuffledVariant(isVariantNarrowed);&lt;br /&gt;
    function optOutAndClose() {&lt;br /&gt;
      emit(&amp;quot;optout&amp;quot;);&lt;br /&gt;
      isOpen.value = false;&lt;br /&gt;
    }&lt;br /&gt;
    function select(variant) {&lt;br /&gt;
      isDisabled.value = true;&lt;br /&gt;
      emit(&amp;quot;select&amp;quot;, variant);&lt;br /&gt;
    }&lt;br /&gt;
    vue.watch(prompt, () =&amp;gt; {&lt;br /&gt;
      const element = prompt.value;&lt;br /&gt;
      if (element !== null) {&lt;br /&gt;
        element.addEventListener(&amp;quot;mouseleave&amp;quot;, (ev) =&amp;gt; {&lt;br /&gt;
          if (ev.buttons === 0 &amp;amp;&amp;amp; props.autoClose &amp;amp;&amp;amp; !props.disabled) {&lt;br /&gt;
            isOpen.value = false;&lt;br /&gt;
          }&lt;br /&gt;
        });&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    return (_ctx, _cache) =&amp;gt; {&lt;br /&gt;
      return vue.openBlock(), vue.createBlock(vue.Transition, {&lt;br /&gt;
        name: &amp;quot;va-variant-prompt&amp;quot;,&lt;br /&gt;
        appear: &amp;quot;&amp;quot;&lt;br /&gt;
      }, {&lt;br /&gt;
        default: vue.withCtx(() =&amp;gt; [&lt;br /&gt;
          _ctx.open ? (vue.openBlock(), vue.createElementBlock(&amp;quot;div&amp;quot;, {&lt;br /&gt;
            key: 0,&lt;br /&gt;
            ref_key: &amp;quot;prompt&amp;quot;,&lt;br /&gt;
            ref: prompt,&lt;br /&gt;
            lang: `zh-${vue.unref(i18nVariant)}`,&lt;br /&gt;
            class: &amp;quot;va-variant-prompt&amp;quot;,&lt;br /&gt;
            role: &amp;quot;dialog&amp;quot;,&lt;br /&gt;
            &amp;quot;aria-modal&amp;quot;: &amp;quot;false&amp;quot;,&lt;br /&gt;
            &amp;quot;aria-labelledby&amp;quot;: vue.unref(titleId),&lt;br /&gt;
            &amp;quot;aria-describedby&amp;quot;: vue.unref(descId)&lt;br /&gt;
          }, [&lt;br /&gt;
            vue.createVNode(VAButton, {&lt;br /&gt;
              class: &amp;quot;va-variant-prompt__close&amp;quot;,&lt;br /&gt;
              weight: &amp;quot;quiet&amp;quot;,&lt;br /&gt;
              icon: &amp;quot;close&amp;quot;,&lt;br /&gt;
              title: vue.unref(useI18n)(&amp;quot;close&amp;quot;),&lt;br /&gt;
              &amp;quot;aria-label&amp;quot;: vue.unref(useI18n)(&amp;quot;close&amp;quot;),&lt;br /&gt;
              disabled: _ctx.disabled,&lt;br /&gt;
              onClick: optOutAndClose&lt;br /&gt;
            }, null, 8, [&amp;quot;title&amp;quot;, &amp;quot;aria-label&amp;quot;, &amp;quot;disabled&amp;quot;]),&lt;br /&gt;
            vue.createElementVNode(&amp;quot;h2&amp;quot;, {&lt;br /&gt;
              id: vue.unref(titleId),&lt;br /&gt;
              class: &amp;quot;va-variant-prompt__title va-title&amp;quot;&lt;br /&gt;
            }, [&lt;br /&gt;
              vue.createTextVNode(vue.toDisplayString(vue.unref(useI18n)(vue.unref(isVariantNarrowed) ? &amp;quot;vp.header.alt&amp;quot; : &amp;quot;vp.header&amp;quot;)), 1),&lt;br /&gt;
              _cache[1] || (_cache[1] = vue.createElementVNode(&amp;quot;br&amp;quot;, null, null, -1)),&lt;br /&gt;
              vue.createVNode(VAFadeTransition, null, {&lt;br /&gt;
                default: vue.withCtx(() =&amp;gt; [&lt;br /&gt;
                  !vue.unref(isVariantNarrowed) ? (vue.openBlock(), vue.createElementBlock(&amp;quot;span&amp;quot;, {&lt;br /&gt;
                    key: vue.unref(shuffledVariant),&lt;br /&gt;
                    lang: `zh-${vue.unref(shuffledVariant)}`,&lt;br /&gt;
                    class: &amp;quot;va-variant-prompt__title__variant&amp;quot;&lt;br /&gt;
                  }, vue.toDisplayString(vue.unref(messages).variants[vue.unref(shuffledVariant)]), 9, _hoisted_3$1)) : vue.createCommentVNode(&amp;quot;&amp;quot;, true)&lt;br /&gt;
                ]),&lt;br /&gt;
                _: 1&lt;br /&gt;
              })&lt;br /&gt;
            ], 8, _hoisted_2$1),&lt;br /&gt;
            vue.createElementVNode(&amp;quot;p&amp;quot;, {&lt;br /&gt;
              id: vue.unref(descId),&lt;br /&gt;
              class: &amp;quot;va-variant-prompt__desc va-para&amp;quot;&lt;br /&gt;
            }, vue.toDisplayString(vue.unref(useI18n)(vue.unref(isVariantNarrowed) ? &amp;quot;vp.main.alt&amp;quot; : &amp;quot;vp.main&amp;quot;)), 9, _hoisted_4$1),&lt;br /&gt;
            vue.createElementVNode(&amp;quot;div&amp;quot;, _hoisted_5$1, [&lt;br /&gt;
              (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(isVariantNarrowed) &amp;amp;&amp;amp; vue.unref(inferredVariant) !== null ? [vue.unref(inferredVariant)] : vue.unref(VALID_VARIANTS), (variant) =&amp;gt; {&lt;br /&gt;
                return vue.openBlock(), vue.createBlock(VAButton, {&lt;br /&gt;
                  key: variant,&lt;br /&gt;
                  class: vue.normalizeClass([&amp;quot;va-variant-prompt__options__button&amp;quot;, { &amp;quot;va-variant-prompt__options__button--primary&amp;quot;: vue.unref(isVariantNarrowed) }]),&lt;br /&gt;
                  indicator: &amp;quot;arrowNext&amp;quot;,&lt;br /&gt;
                  weight: &amp;quot;quiet&amp;quot;,&lt;br /&gt;
                  action: &amp;quot;progressive&amp;quot;,&lt;br /&gt;
                  lang: variant,&lt;br /&gt;
                  disabled: _ctx.disabled,&lt;br /&gt;
                  onClick: ($event) =&amp;gt; select(variant)&lt;br /&gt;
                }, {&lt;br /&gt;
                  default: vue.withCtx(() =&amp;gt; [&lt;br /&gt;
                    vue.createTextVNode(vue.toDisplayString(vue.unref(messages).variants[variant]), 1)&lt;br /&gt;
                  ]),&lt;br /&gt;
                  _: 2&lt;br /&gt;
                }, 1032, [&amp;quot;class&amp;quot;, &amp;quot;lang&amp;quot;, &amp;quot;disabled&amp;quot;, &amp;quot;onClick&amp;quot;]);&lt;br /&gt;
              }), 128)),&lt;br /&gt;
              vue.unref(isVariantNarrowed) ? (vue.openBlock(), vue.createBlock(VAButton, {&lt;br /&gt;
                key: 0,&lt;br /&gt;
                class: &amp;quot;va-variant-prompt__options__button&amp;quot;,&lt;br /&gt;
                indicator: &amp;quot;arrowNext&amp;quot;,&lt;br /&gt;
                weight: &amp;quot;quiet&amp;quot;,&lt;br /&gt;
                action: &amp;quot;progressive&amp;quot;,&lt;br /&gt;
                disabled: _ctx.disabled,&lt;br /&gt;
                onClick: _cache[0] || (_cache[0] = ($event) =&amp;gt; isVariantNarrowed.value = false)&lt;br /&gt;
              }, {&lt;br /&gt;
                default: vue.withCtx(() =&amp;gt; [&lt;br /&gt;
                  vue.createTextVNode(vue.toDisplayString(vue.unref(useI18n)(&amp;quot;vp.button.other&amp;quot;)), 1)&lt;br /&gt;
                ]),&lt;br /&gt;
                _: 1&lt;br /&gt;
              }, 8, [&amp;quot;disabled&amp;quot;])) : vue.createCommentVNode(&amp;quot;&amp;quot;, true)&lt;br /&gt;
            ]),&lt;br /&gt;
            vue.createElementVNode(&amp;quot;footer&amp;quot;, _hoisted_6$1, [&lt;br /&gt;
              vue.createElementVNode(&amp;quot;p&amp;quot;, _hoisted_7$1, vue.toDisplayString(vue.unref(useI18n)(&amp;quot;vp.main.ext&amp;quot;)), 1)&lt;br /&gt;
            ])&lt;br /&gt;
          ], 8, _hoisted_1$1)) : vue.createCommentVNode(&amp;quot;&amp;quot;, true)&lt;br /&gt;
        ]),&lt;br /&gt;
        _: 1&lt;br /&gt;
      });&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
const VAVariantPrompt = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[&amp;quot;__scopeId&amp;quot;, &amp;quot;data-v-1582c41c&amp;quot;]]);&lt;br /&gt;
const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({&lt;br /&gt;
  __name: &amp;quot;VASelect&amp;quot;,&lt;br /&gt;
  props: {&lt;br /&gt;
    modelValue: {}&lt;br /&gt;
  },&lt;br /&gt;
  emits: [&amp;quot;update:modelValue&amp;quot;],&lt;br /&gt;
  setup(__props, { emit: __emit }) {&lt;br /&gt;
    const props = __props;&lt;br /&gt;
    const emit = __emit;&lt;br /&gt;
    const modelValue = useModelWrapper(props, emit);&lt;br /&gt;
    return (_ctx, _cache) =&amp;gt; {&lt;br /&gt;
      return vue.withDirectives((vue.openBlock(), vue.createElementBlock(&amp;quot;select&amp;quot;, {&lt;br /&gt;
        &amp;quot;onUpdate:modelValue&amp;quot;: _cache[0] || (_cache[0] = ($event) =&amp;gt; vue.isRef(modelValue) ? modelValue.value = $event : null),&lt;br /&gt;
        class: &amp;quot;va-select&amp;quot;&lt;br /&gt;
      }, [&lt;br /&gt;
        vue.renderSlot(_ctx.$slots, &amp;quot;default&amp;quot;, {}, void 0, true)&lt;br /&gt;
      ], 512)), [&lt;br /&gt;
        [vue.vModelSelect, vue.unref(modelValue)]&lt;br /&gt;
      ]);&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
const VASelect = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[&amp;quot;__scopeId&amp;quot;, &amp;quot;data-v-c9623b25&amp;quot;]]);&lt;br /&gt;
const _hoisted_1 = [&amp;quot;lang&amp;quot;, &amp;quot;aria-labelledby&amp;quot;];&lt;br /&gt;
const _hoisted_2 = { class: &amp;quot;va-variant-prompt-mobile__header&amp;quot; };&lt;br /&gt;
const _hoisted_3 = [&amp;quot;id&amp;quot;];&lt;br /&gt;
const _hoisted_4 = { class: &amp;quot;va-variant-prompt-mobile__main&amp;quot; };&lt;br /&gt;
const _hoisted_5 = [&amp;quot;value&amp;quot;, &amp;quot;lang&amp;quot;];&lt;br /&gt;
const _hoisted_6 = { class: &amp;quot;va-variant-prompt-mobile__footer&amp;quot; };&lt;br /&gt;
const _hoisted_7 = { class: &amp;quot;va-para va-para--subtle&amp;quot; };&lt;br /&gt;
const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({&lt;br /&gt;
  __name: &amp;quot;VAVariantPromptMobile&amp;quot;,&lt;br /&gt;
  props: {&lt;br /&gt;
    open: { type: Boolean },&lt;br /&gt;
    disabled: { type: Boolean, default: false }&lt;br /&gt;
  },&lt;br /&gt;
  emits: [&amp;quot;update:open&amp;quot;, &amp;quot;update:disabled&amp;quot;, &amp;quot;select&amp;quot;, &amp;quot;optout&amp;quot;],&lt;br /&gt;
  setup(__props, { emit: __emit }) {&lt;br /&gt;
    const props = __props;&lt;br /&gt;
    const emit = __emit;&lt;br /&gt;
    const prompt = vue.ref(null);&lt;br /&gt;
    const titleId = useUniqueId();&lt;br /&gt;
    const selectedVariant = useDefault(() =&amp;gt; {&lt;br /&gt;
      var _a2;&lt;br /&gt;
      return (_a2 = inferredVariant.value) != null ? _a2 : shuffleVariant();&lt;br /&gt;
    });&lt;br /&gt;
    const isOpen = useModelWrapper(props, emit, &amp;quot;open&amp;quot;);&lt;br /&gt;
    const isDisabled = useModelWrapper(props, emit, &amp;quot;disabled&amp;quot;);&lt;br /&gt;
    function optOutAndClose() {&lt;br /&gt;
      emit(&amp;quot;optout&amp;quot;);&lt;br /&gt;
      isOpen.value = false;&lt;br /&gt;
    }&lt;br /&gt;
    function select(variant) {&lt;br /&gt;
      isDisabled.value = true;&lt;br /&gt;
      emit(&amp;quot;select&amp;quot;, variant);&lt;br /&gt;
    }&lt;br /&gt;
    return (_ctx, _cache) =&amp;gt; {&lt;br /&gt;
      return vue.openBlock(), vue.createBlock(vue.Transition, {&lt;br /&gt;
        name: &amp;quot;va-variant-prompt-mobile&amp;quot;,&lt;br /&gt;
        appear: &amp;quot;&amp;quot;&lt;br /&gt;
      }, {&lt;br /&gt;
        default: vue.withCtx(() =&amp;gt; [&lt;br /&gt;
          _ctx.open ? (vue.openBlock(), vue.createElementBlock(&amp;quot;div&amp;quot;, {&lt;br /&gt;
            key: 0,&lt;br /&gt;
            ref_key: &amp;quot;prompt&amp;quot;,&lt;br /&gt;
            ref: prompt,&lt;br /&gt;
            lang: `zh-${vue.unref(i18nVariant)}`,&lt;br /&gt;
            class: &amp;quot;va-variant-prompt-mobile&amp;quot;,&lt;br /&gt;
            role: &amp;quot;dialog&amp;quot;,&lt;br /&gt;
            &amp;quot;aria-modal&amp;quot;: &amp;quot;false&amp;quot;,&lt;br /&gt;
            &amp;quot;aria-labelledby&amp;quot;: vue.unref(titleId)&lt;br /&gt;
          }, [&lt;br /&gt;
            vue.createElementVNode(&amp;quot;div&amp;quot;, _hoisted_2, [&lt;br /&gt;
              vue.createElementVNode(&amp;quot;h2&amp;quot;, {&lt;br /&gt;
                id: vue.unref(titleId),&lt;br /&gt;
                class: &amp;quot;va-variant-prompt-mobile__header__title va-title&amp;quot;&lt;br /&gt;
              }, vue.toDisplayString(vue.unref(useI18n)(&amp;quot;vp.main&amp;quot;)), 9, _hoisted_3),&lt;br /&gt;
              vue.createVNode(VAButton, {&lt;br /&gt;
                class: &amp;quot;va-variant-prompt-mobile__header__close&amp;quot;,&lt;br /&gt;
                weight: &amp;quot;quiet&amp;quot;,&lt;br /&gt;
                icon: &amp;quot;close&amp;quot;,&lt;br /&gt;
                title: vue.unref(useI18n)(&amp;quot;close&amp;quot;),&lt;br /&gt;
                &amp;quot;aria-label&amp;quot;: vue.unref(useI18n)(&amp;quot;close&amp;quot;),&lt;br /&gt;
                disabled: _ctx.disabled,&lt;br /&gt;
                onClick: optOutAndClose&lt;br /&gt;
              }, null, 8, [&amp;quot;title&amp;quot;, &amp;quot;aria-label&amp;quot;, &amp;quot;disabled&amp;quot;])&lt;br /&gt;
            ]),&lt;br /&gt;
            vue.createElementVNode(&amp;quot;div&amp;quot;, _hoisted_4, [&lt;br /&gt;
              vue.createVNode(VASelect, {&lt;br /&gt;
                modelValue: vue.unref(selectedVariant),&lt;br /&gt;
                &amp;quot;onUpdate:modelValue&amp;quot;: _cache[0] || (_cache[0] = ($event) =&amp;gt; vue.isRef(selectedVariant) ? selectedVariant.value = $event : null),&lt;br /&gt;
                class: &amp;quot;va-variant-prompt-mobile__main__select&amp;quot;,&lt;br /&gt;
                lang: vue.unref(selectedVariant),&lt;br /&gt;
                disabled: _ctx.disabled,&lt;br /&gt;
                &amp;quot;aria-labelledby&amp;quot;: vue.unref(titleId)&lt;br /&gt;
              }, {&lt;br /&gt;
                default: vue.withCtx(() =&amp;gt; [&lt;br /&gt;
                  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(VALID_VARIANTS), (variant) =&amp;gt; {&lt;br /&gt;
                    return vue.openBlock(), vue.createElementBlock(&amp;quot;option&amp;quot;, {&lt;br /&gt;
                      key: variant,&lt;br /&gt;
                      value: variant,&lt;br /&gt;
                      lang: variant&lt;br /&gt;
                    }, vue.toDisplayString(vue.unref(messages).variants[variant]), 9, _hoisted_5);&lt;br /&gt;
                  }), 128))&lt;br /&gt;
                ]),&lt;br /&gt;
                _: 1&lt;br /&gt;
              }, 8, [&amp;quot;modelValue&amp;quot;, &amp;quot;lang&amp;quot;, &amp;quot;disabled&amp;quot;, &amp;quot;aria-labelledby&amp;quot;]),&lt;br /&gt;
              vue.createVNode(VAButton, {&lt;br /&gt;
                class: &amp;quot;va-variant-prompt-mobile__main__action&amp;quot;,&lt;br /&gt;
                action: &amp;quot;progressive&amp;quot;,&lt;br /&gt;
                icon: &amp;quot;arrowNext&amp;quot;,&lt;br /&gt;
                disabled: _ctx.disabled,&lt;br /&gt;
                onClick: _cache[1] || (_cache[1] = ($event) =&amp;gt; select(vue.unref(selectedVariant)))&lt;br /&gt;
              }, {&lt;br /&gt;
                default: vue.withCtx(() =&amp;gt; [&lt;br /&gt;
                  vue.createTextVNode(vue.toDisplayString(vue.unref(useI18n)(&amp;quot;vp.button.ok&amp;quot;)), 1)&lt;br /&gt;
                ]),&lt;br /&gt;
                _: 1&lt;br /&gt;
              }, 8, [&amp;quot;disabled&amp;quot;])&lt;br /&gt;
            ]),&lt;br /&gt;
            vue.createElementVNode(&amp;quot;footer&amp;quot;, _hoisted_6, [&lt;br /&gt;
              vue.createElementVNode(&amp;quot;p&amp;quot;, _hoisted_7, vue.toDisplayString(vue.unref(useI18n)(&amp;quot;vp.main.ext&amp;quot;)), 1)&lt;br /&gt;
            ])&lt;br /&gt;
          ], 8, _hoisted_1)) : vue.createCommentVNode(&amp;quot;&amp;quot;, true)&lt;br /&gt;
        ]),&lt;br /&gt;
        _: 1&lt;br /&gt;
      });&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
const VAVariantPromptMobile = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[&amp;quot;__scopeId&amp;quot;, &amp;quot;data-v-2ca12e49&amp;quot;]]);&lt;br /&gt;
const _sfc_main = /* @__PURE__ */ vue.defineComponent({&lt;br /&gt;
  __name: &amp;quot;App&amp;quot;,&lt;br /&gt;
  setup(__props) {&lt;br /&gt;
    const isOpen = vue.ref(true);&lt;br /&gt;
    const isDisabled = vue.ref(false);&lt;br /&gt;
    const isMobile = isMobileDevice();&lt;br /&gt;
    const desktopMountPoint = getMountPoint();&lt;br /&gt;
    ext_gadget_VariantAlly.stat(`dialog_${isMobile ? &amp;quot;mobile&amp;quot; : &amp;quot;desktop&amp;quot;}`, &amp;quot;show&amp;quot;);&lt;br /&gt;
    function setVariant(variant) {&lt;br /&gt;
      ext_gadget_VariantAlly.stat(`dialog_${isMobile ? &amp;quot;mobile&amp;quot; : &amp;quot;desktop&amp;quot;}`, &amp;quot;select&amp;quot;);&lt;br /&gt;
      ext_gadget_VariantAlly.setLocalVariant(variant);&lt;br /&gt;
      ext_gadget_VariantAlly.redirect(variant, { forced: true });&lt;br /&gt;
    }&lt;br /&gt;
    addEventListener(isMobile ? &amp;quot;touchmove&amp;quot; : &amp;quot;scroll&amp;quot;, () =&amp;gt; {&lt;br /&gt;
      if (!isDisabled.value) {&lt;br /&gt;
        isOpen.value = false;&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    function onOptOut() {&lt;br /&gt;
      ext_gadget_VariantAlly.stat(`dialog_${isMobile ? &amp;quot;mobile&amp;quot; : &amp;quot;desktop&amp;quot;}`, &amp;quot;opt_out&amp;quot;);&lt;br /&gt;
      ext_gadget_VariantAlly.setOptOut();&lt;br /&gt;
    }&lt;br /&gt;
    vue.watch(isOpen, (newValue) =&amp;gt; {&lt;br /&gt;
      if (!newValue) {&lt;br /&gt;
        ext_gadget_VariantAlly.stat(`dialog_${isMobile ? &amp;quot;mobile&amp;quot; : &amp;quot;desktop&amp;quot;}`, &amp;quot;dismiss&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    return (_ctx, _cache) =&amp;gt; {&lt;br /&gt;
      return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [&lt;br /&gt;
        (vue.openBlock(), vue.createBlock(vue.Teleport, { to: vue.unref(desktopMountPoint) }, [&lt;br /&gt;
          !vue.unref(isMobile) ? (vue.openBlock(), vue.createBlock(VAVariantPrompt, {&lt;br /&gt;
            key: 0,&lt;br /&gt;
            open: isOpen.value,&lt;br /&gt;
            &amp;quot;onUpdate:open&amp;quot;: _cache[0] || (_cache[0] = ($event) =&amp;gt; isOpen.value = $event),&lt;br /&gt;
            disabled: isDisabled.value,&lt;br /&gt;
            &amp;quot;onUpdate:disabled&amp;quot;: _cache[1] || (_cache[1] = ($event) =&amp;gt; isDisabled.value = $event),&lt;br /&gt;
            &amp;quot;auto-close&amp;quot;: false,&lt;br /&gt;
            onOptout: onOptOut,&lt;br /&gt;
            onSelect: setVariant&lt;br /&gt;
          }, null, 8, [&amp;quot;open&amp;quot;, &amp;quot;disabled&amp;quot;])) : vue.createCommentVNode(&amp;quot;&amp;quot;, true)&lt;br /&gt;
        ], 8, [&amp;quot;to&amp;quot;])),&lt;br /&gt;
        (vue.openBlock(), vue.createBlock(vue.Teleport, { to: &amp;quot;body&amp;quot; }, [&lt;br /&gt;
          vue.unref(isMobile) ? (vue.openBlock(), vue.createBlock(VAVariantPromptMobile, {&lt;br /&gt;
            key: 0,&lt;br /&gt;
            open: isOpen.value,&lt;br /&gt;
            &amp;quot;onUpdate:open&amp;quot;: _cache[2] || (_cache[2] = ($event) =&amp;gt; isOpen.value = $event),&lt;br /&gt;
            disabled: isDisabled.value,&lt;br /&gt;
            &amp;quot;onUpdate:disabled&amp;quot;: _cache[3] || (_cache[3] = ($event) =&amp;gt; isDisabled.value = $event),&lt;br /&gt;
            onOptout: onOptOut,&lt;br /&gt;
            onSelect: setVariant&lt;br /&gt;
          }, null, 8, [&amp;quot;open&amp;quot;, &amp;quot;disabled&amp;quot;])) : vue.createCommentVNode(&amp;quot;&amp;quot;, true)&lt;br /&gt;
        ]))&lt;br /&gt;
      ], 64);&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
const root = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
document.body.appendChild(root);&lt;br /&gt;
vue.createMwApp(_sfc_main).mount(root);&lt;br /&gt;
// &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>imported&gt;Diskdance</name></author>
	</entry>
</feed>