{"version":3,"file":"index-e3c6cc71.cjs","sources":["../../../node_modules/.pnpm/@tarojs+shared@3.6.20/node_modules/@tarojs/shared/dist/shared.esm.js","../../../node_modules/.pnpm/@tarojs+runtime@3.6.20/node_modules/@tarojs/runtime/dist/runtime.esm.js","../../../node_modules/.pnpm/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/.pnpm/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../node_modules/.pnpm/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../node_modules/.pnpm/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../node_modules/.pnpm/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../../node_modules/.pnpm/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../node_modules/.pnpm/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/createClass.js","../../../node_modules/.pnpm/@tarojs+api@3.6.20/node_modules/@tarojs/api/dist/index.esm.js","../../../node_modules/.pnpm/@tarojs+taro@3.6.20_postcss@8.4.31_vue@3.3.4/node_modules/@tarojs/taro/index.js"],"sourcesContent":["const DEFAULT_EMPTY_ARRAY = '[]';\nconst NO_DEFAULT_VALUE = '';\nconst DEFAULT_TRUE = '!0';\nconst DEFAULT_FALSE = '!1';\nconst touchEvents = {\n    bindTouchStart: NO_DEFAULT_VALUE,\n    bindTouchMove: NO_DEFAULT_VALUE,\n    bindTouchEnd: NO_DEFAULT_VALUE,\n    bindTouchCancel: NO_DEFAULT_VALUE,\n    bindLongTap: NO_DEFAULT_VALUE\n};\nconst animation = {\n    animation: NO_DEFAULT_VALUE,\n    bindAnimationStart: NO_DEFAULT_VALUE,\n    bindAnimationIteration: NO_DEFAULT_VALUE,\n    bindAnimationEnd: NO_DEFAULT_VALUE,\n    bindTransitionEnd: NO_DEFAULT_VALUE\n};\nfunction singleQuote(s) {\n    return `'${s}'`;\n}\nconst View = Object.assign(Object.assign({ 'hover-class': singleQuote('none'), 'hover-stop-propagation': DEFAULT_FALSE, 'hover-start-time': '50', 'hover-stay-time': '400' }, touchEvents), animation);\nconst Icon = {\n    type: NO_DEFAULT_VALUE,\n    size: '23',\n    color: NO_DEFAULT_VALUE\n};\nconst MapComp = Object.assign({ longitude: NO_DEFAULT_VALUE, latitude: NO_DEFAULT_VALUE, scale: '16', markers: DEFAULT_EMPTY_ARRAY, covers: NO_DEFAULT_VALUE, polyline: DEFAULT_EMPTY_ARRAY, circles: DEFAULT_EMPTY_ARRAY, controls: DEFAULT_EMPTY_ARRAY, 'include-points': DEFAULT_EMPTY_ARRAY, 'show-location': NO_DEFAULT_VALUE, 'layer-style': '1', bindMarkerTap: NO_DEFAULT_VALUE, bindControlTap: NO_DEFAULT_VALUE, bindCalloutTap: NO_DEFAULT_VALUE, bindUpdated: NO_DEFAULT_VALUE }, touchEvents);\nconst Progress = {\n    percent: NO_DEFAULT_VALUE,\n    'stroke-width': '6',\n    color: singleQuote('#09BB07'),\n    activeColor: singleQuote('#09BB07'),\n    backgroundColor: singleQuote('#EBEBEB'),\n    active: DEFAULT_FALSE,\n    'active-mode': singleQuote('backwards'),\n    'show-info': DEFAULT_FALSE\n};\nconst RichText = {\n    nodes: DEFAULT_EMPTY_ARRAY\n};\nconst Text = {\n    selectable: DEFAULT_FALSE,\n    space: NO_DEFAULT_VALUE,\n    decode: DEFAULT_FALSE\n};\nconst Button = Object.assign({ size: singleQuote('default'), type: NO_DEFAULT_VALUE, plain: DEFAULT_FALSE, disabled: NO_DEFAULT_VALUE, loading: DEFAULT_FALSE, 'form-type': NO_DEFAULT_VALUE, 'open-type': NO_DEFAULT_VALUE, 'hover-class': singleQuote('button-hover'), 'hover-stop-propagation': DEFAULT_FALSE, 'hover-start-time': '20', 'hover-stay-time': '70', name: NO_DEFAULT_VALUE, bindagreeprivacyauthorization: NO_DEFAULT_VALUE }, touchEvents);\nconst Checkbox = {\n    value: NO_DEFAULT_VALUE,\n    disabled: NO_DEFAULT_VALUE,\n    checked: DEFAULT_FALSE,\n    color: singleQuote('#09BB07'),\n    name: NO_DEFAULT_VALUE\n};\nconst CheckboxGroup = {\n    bindChange: NO_DEFAULT_VALUE,\n    name: NO_DEFAULT_VALUE\n};\nconst Form = {\n    'report-submit': DEFAULT_FALSE,\n    bindSubmit: NO_DEFAULT_VALUE,\n    bindReset: NO_DEFAULT_VALUE,\n    name: NO_DEFAULT_VALUE\n};\nconst Input = {\n    value: NO_DEFAULT_VALUE,\n    type: singleQuote(NO_DEFAULT_VALUE),\n    password: DEFAULT_FALSE,\n    placeholder: NO_DEFAULT_VALUE,\n    'placeholder-style': NO_DEFAULT_VALUE,\n    'placeholder-class': singleQuote('input-placeholder'),\n    disabled: NO_DEFAULT_VALUE,\n    maxlength: '140',\n    'cursor-spacing': '0',\n    focus: DEFAULT_FALSE,\n    'confirm-type': singleQuote('done'),\n    'confirm-hold': DEFAULT_FALSE,\n    cursor: '-1',\n    'selection-start': '-1',\n    'selection-end': '-1',\n    bindInput: NO_DEFAULT_VALUE,\n    bindFocus: NO_DEFAULT_VALUE,\n    bindBlur: NO_DEFAULT_VALUE,\n    bindConfirm: NO_DEFAULT_VALUE,\n    name: NO_DEFAULT_VALUE\n};\nconst Label = {\n    for: NO_DEFAULT_VALUE,\n    name: NO_DEFAULT_VALUE\n};\nconst Picker = {\n    mode: singleQuote('selector'),\n    disabled: NO_DEFAULT_VALUE,\n    range: NO_DEFAULT_VALUE,\n    'range-key': NO_DEFAULT_VALUE,\n    value: NO_DEFAULT_VALUE,\n    start: NO_DEFAULT_VALUE,\n    end: NO_DEFAULT_VALUE,\n    fields: singleQuote('day'),\n    'custom-item': NO_DEFAULT_VALUE,\n    name: NO_DEFAULT_VALUE,\n    bindCancel: NO_DEFAULT_VALUE,\n    bindChange: NO_DEFAULT_VALUE,\n    bindColumnChange: NO_DEFAULT_VALUE\n};\nconst PickerView = {\n    value: NO_DEFAULT_VALUE,\n    'indicator-style': NO_DEFAULT_VALUE,\n    'indicator-class': NO_DEFAULT_VALUE,\n    'mask-style': NO_DEFAULT_VALUE,\n    'mask-class': NO_DEFAULT_VALUE,\n    bindChange: NO_DEFAULT_VALUE,\n    name: NO_DEFAULT_VALUE\n};\nconst PickerViewColumn = {\n    name: NO_DEFAULT_VALUE\n};\nconst Radio = {\n    value: NO_DEFAULT_VALUE,\n    checked: DEFAULT_FALSE,\n    disabled: NO_DEFAULT_VALUE,\n    color: singleQuote('#09BB07'),\n    name: NO_DEFAULT_VALUE\n};\nconst RadioGroup = {\n    bindChange: NO_DEFAULT_VALUE,\n    name: NO_DEFAULT_VALUE\n};\nconst Slider = {\n    min: '0',\n    max: '100',\n    step: '1',\n    disabled: NO_DEFAULT_VALUE,\n    value: '0',\n    activeColor: singleQuote('#1aad19'),\n    backgroundColor: singleQuote('#e9e9e9'),\n    'block-size': '28',\n    'block-color': singleQuote('#ffffff'),\n    'show-value': DEFAULT_FALSE,\n    bindChange: NO_DEFAULT_VALUE,\n    bindChanging: NO_DEFAULT_VALUE,\n    name: NO_DEFAULT_VALUE\n};\nconst Switch = {\n    checked: DEFAULT_FALSE,\n    disabled: NO_DEFAULT_VALUE,\n    type: singleQuote('switch'),\n    color: singleQuote('#04BE02'),\n    bindChange: NO_DEFAULT_VALUE,\n    name: NO_DEFAULT_VALUE\n};\nconst Textarea = {\n    value: NO_DEFAULT_VALUE,\n    placeholder: NO_DEFAULT_VALUE,\n    'placeholder-style': NO_DEFAULT_VALUE,\n    'placeholder-class': singleQuote('textarea-placeholder'),\n    disabled: NO_DEFAULT_VALUE,\n    maxlength: '140',\n    'auto-focus': DEFAULT_FALSE,\n    focus: DEFAULT_FALSE,\n    'auto-height': DEFAULT_FALSE,\n    fixed: DEFAULT_FALSE,\n    'cursor-spacing': '0',\n    cursor: '-1',\n    'selection-start': '-1',\n    'selection-end': '-1',\n    bindFocus: NO_DEFAULT_VALUE,\n    bindBlur: NO_DEFAULT_VALUE,\n    bindLineChange: NO_DEFAULT_VALUE,\n    bindInput: NO_DEFAULT_VALUE,\n    bindConfirm: NO_DEFAULT_VALUE,\n    name: NO_DEFAULT_VALUE\n};\nconst CoverImage = {\n    src: NO_DEFAULT_VALUE,\n    bindLoad: 'eh',\n    bindError: 'eh'\n};\nconst CoverView = Object.assign({ 'scroll-top': DEFAULT_FALSE }, touchEvents);\nconst MovableArea = {\n    'scale-area': DEFAULT_FALSE\n};\nconst MovableView = Object.assign(Object.assign({ direction: 'none', inertia: DEFAULT_FALSE, 'out-of-bounds': DEFAULT_FALSE, x: NO_DEFAULT_VALUE, y: NO_DEFAULT_VALUE, damping: '20', friction: '2', disabled: NO_DEFAULT_VALUE, scale: DEFAULT_FALSE, 'scale-min': '0.5', 'scale-max': '10', 'scale-value': '1', bindChange: NO_DEFAULT_VALUE, bindScale: NO_DEFAULT_VALUE, bindHTouchMove: NO_DEFAULT_VALUE, bindVTouchMove: NO_DEFAULT_VALUE, width: singleQuote('10px'), height: singleQuote('10px') }, touchEvents), animation);\nconst ScrollView = Object.assign(Object.assign({ 'scroll-x': DEFAULT_FALSE, 'scroll-y': DEFAULT_FALSE, 'upper-threshold': '50', 'lower-threshold': '50', 'scroll-top': NO_DEFAULT_VALUE, 'scroll-left': NO_DEFAULT_VALUE, 'scroll-into-view': NO_DEFAULT_VALUE, 'scroll-with-animation': DEFAULT_FALSE, 'enable-back-to-top': DEFAULT_FALSE, bindScrollToUpper: NO_DEFAULT_VALUE, bindScrollToLower: NO_DEFAULT_VALUE, bindScroll: NO_DEFAULT_VALUE }, touchEvents), animation);\nconst Swiper = Object.assign({ 'indicator-dots': DEFAULT_FALSE, 'indicator-color': singleQuote('rgba(0, 0, 0, .3)'), 'indicator-active-color': singleQuote('#000000'), autoplay: DEFAULT_FALSE, current: '0', interval: '5000', duration: '500', circular: DEFAULT_FALSE, vertical: DEFAULT_FALSE, 'previous-margin': singleQuote('0px'), 'next-margin': singleQuote('0px'), 'display-multiple-items': '1', bindChange: NO_DEFAULT_VALUE, bindTransition: NO_DEFAULT_VALUE, bindAnimationFinish: NO_DEFAULT_VALUE }, touchEvents);\nconst SwiperItem = {\n    'item-id': NO_DEFAULT_VALUE\n};\nconst Navigator = {\n    url: NO_DEFAULT_VALUE,\n    'open-type': singleQuote('navigate'),\n    delta: '1',\n    'hover-class': singleQuote('navigator-hover'),\n    'hover-stop-propagation': DEFAULT_FALSE,\n    'hover-start-time': '50',\n    'hover-stay-time': '600',\n    bindSuccess: NO_DEFAULT_VALUE,\n    bindFail: NO_DEFAULT_VALUE,\n    bindComplete: NO_DEFAULT_VALUE\n};\nconst Audio = {\n    id: NO_DEFAULT_VALUE,\n    src: NO_DEFAULT_VALUE,\n    loop: DEFAULT_FALSE,\n    controls: DEFAULT_FALSE,\n    poster: NO_DEFAULT_VALUE,\n    name: NO_DEFAULT_VALUE,\n    author: NO_DEFAULT_VALUE,\n    bindError: NO_DEFAULT_VALUE,\n    bindPlay: NO_DEFAULT_VALUE,\n    bindPause: NO_DEFAULT_VALUE,\n    bindTimeUpdate: NO_DEFAULT_VALUE,\n    bindEnded: NO_DEFAULT_VALUE\n};\nconst Camera = {\n    'device-position': singleQuote('back'),\n    flash: singleQuote('auto'),\n    bindStop: NO_DEFAULT_VALUE,\n    bindError: NO_DEFAULT_VALUE\n};\nconst Image = Object.assign({ src: NO_DEFAULT_VALUE, mode: singleQuote('scaleToFill'), 'lazy-load': DEFAULT_FALSE, bindError: NO_DEFAULT_VALUE, bindLoad: NO_DEFAULT_VALUE }, touchEvents);\nconst LivePlayer = Object.assign({ src: NO_DEFAULT_VALUE, autoplay: DEFAULT_FALSE, muted: DEFAULT_FALSE, orientation: singleQuote('vertical'), 'object-fit': singleQuote('contain'), 'background-mute': DEFAULT_FALSE, 'min-cache': '1', 'max-cache': '3', bindStateChange: NO_DEFAULT_VALUE, bindFullScreenChange: NO_DEFAULT_VALUE, bindNetStatus: NO_DEFAULT_VALUE }, animation);\nconst Video = Object.assign({ src: NO_DEFAULT_VALUE, duration: NO_DEFAULT_VALUE, controls: DEFAULT_TRUE, 'danmu-list': NO_DEFAULT_VALUE, 'danmu-btn': NO_DEFAULT_VALUE, 'enable-danmu': NO_DEFAULT_VALUE, autoplay: DEFAULT_FALSE, loop: DEFAULT_FALSE, muted: DEFAULT_FALSE, 'initial-time': '0', 'page-gesture': DEFAULT_FALSE, direction: NO_DEFAULT_VALUE, 'show-progress': DEFAULT_TRUE, 'show-fullscreen-btn': DEFAULT_TRUE, 'show-play-btn': DEFAULT_TRUE, 'show-center-play-btn': DEFAULT_TRUE, 'enable-progress-gesture': DEFAULT_TRUE, 'object-fit': singleQuote('contain'), poster: NO_DEFAULT_VALUE, 'show-mute-btn': DEFAULT_FALSE, bindPlay: NO_DEFAULT_VALUE, bindPause: NO_DEFAULT_VALUE, bindEnded: NO_DEFAULT_VALUE, bindTimeUpdate: NO_DEFAULT_VALUE, bindFullScreenChange: NO_DEFAULT_VALUE, bindWaiting: NO_DEFAULT_VALUE, bindError: NO_DEFAULT_VALUE }, animation);\nconst Canvas = Object.assign({ 'canvas-id': NO_DEFAULT_VALUE, 'disable-scroll': DEFAULT_FALSE, bindError: NO_DEFAULT_VALUE }, touchEvents);\nconst Ad = {\n    'unit-id': NO_DEFAULT_VALUE,\n    'ad-intervals': NO_DEFAULT_VALUE,\n    bindLoad: NO_DEFAULT_VALUE,\n    bindError: NO_DEFAULT_VALUE,\n    bindClose: NO_DEFAULT_VALUE\n};\nconst WebView = {\n    src: NO_DEFAULT_VALUE,\n    bindMessage: NO_DEFAULT_VALUE,\n    bindLoad: NO_DEFAULT_VALUE,\n    bindError: NO_DEFAULT_VALUE\n};\nconst Block = {};\n// For Vue，因为 slot 标签被 vue 占用了\nconst SlotView = {\n    name: NO_DEFAULT_VALUE\n};\n// For React\n// Slot 和 SlotView 最终都会编译成 <view slot={{ i.name }} />\n// 因为 <slot name=\"{{ i.name }}\" /> 适用性没有前者高（无法添加类和样式）\n// 不给 View 直接加 slot 属性的原因是性能损耗\nconst Slot = {\n    name: NO_DEFAULT_VALUE\n};\nconst NativeSlot = {\n    name: NO_DEFAULT_VALUE\n};\nconst internalComponents = {\n    View,\n    Icon,\n    Progress,\n    RichText,\n    Text,\n    Button,\n    Checkbox,\n    CheckboxGroup,\n    Form,\n    Input,\n    Label,\n    Picker,\n    PickerView,\n    PickerViewColumn,\n    Radio,\n    RadioGroup,\n    Slider,\n    Switch,\n    CoverImage,\n    Textarea,\n    CoverView,\n    MovableArea,\n    MovableView,\n    ScrollView,\n    Swiper,\n    SwiperItem,\n    Navigator,\n    Audio,\n    Camera,\n    Image,\n    LivePlayer,\n    Video,\n    Canvas,\n    Ad,\n    WebView,\n    Block,\n    Map: MapComp,\n    Slot,\n    SlotView,\n    NativeSlot,\n};\nconst controlledComponent = new Set([\n    'input',\n    'checkbox',\n    'picker',\n    'picker-view',\n    'radio',\n    'slider',\n    'switch',\n    'textarea'\n]);\nconst focusComponents = new Set([\n    'input',\n    'textarea'\n]);\nconst voidElements = new Set([\n    'progress',\n    'icon',\n    'rich-text',\n    'input',\n    'textarea',\n    'slider',\n    'switch',\n    'audio',\n    'ad',\n    'official-account',\n    'open-data',\n    'navigation-bar'\n]);\nconst nestElements = new Map([\n    ['view', -1],\n    ['catch-view', -1],\n    ['cover-view', -1],\n    ['static-view', -1],\n    ['pure-view', -1],\n    ['block', -1],\n    ['text', -1],\n    ['static-text', 6],\n    ['slot', 8],\n    ['slot-view', 8],\n    ['label', 6],\n    ['form', 4],\n    ['scroll-view', 4],\n    ['swiper', 4],\n    ['swiper-item', 4]\n]);\n\nvar PLATFORM_TYPE;\n(function (PLATFORM_TYPE) {\n    PLATFORM_TYPE[\"MINI\"] = \"mini\";\n    PLATFORM_TYPE[\"WEB\"] = \"web\";\n    PLATFORM_TYPE[\"RN\"] = \"rn\";\n    PLATFORM_TYPE[\"HARMONY\"] = \"harmony\";\n    PLATFORM_TYPE[\"QUICK\"] = \"quickapp\";\n})(PLATFORM_TYPE || (PLATFORM_TYPE = {}));\nconst PLATFORM_CONFIG_MAP = {\n    h5: {\n        type: PLATFORM_TYPE.WEB\n    },\n    harmony: {\n        type: PLATFORM_TYPE.HARMONY\n    },\n    mini: {\n        type: PLATFORM_TYPE.MINI\n    },\n    rn: {\n        type: PLATFORM_TYPE.RN\n    },\n    quickapp: {\n        type: PLATFORM_TYPE.QUICK\n    }\n};\n\nclass Events {\n    constructor(opts) {\n        var _a;\n        this.callbacks = (_a = opts === null || opts === void 0 ? void 0 : opts.callbacks) !== null && _a !== void 0 ? _a : {};\n    }\n    on(eventName, callback, context) {\n        let event, tail, _eventName;\n        if (!callback) {\n            return this;\n        }\n        if (typeof eventName === 'symbol') {\n            _eventName = [eventName];\n        }\n        else {\n            _eventName = eventName.split(Events.eventSplitter);\n        }\n        this.callbacks || (this.callbacks = {});\n        const calls = this.callbacks;\n        while ((event = _eventName.shift())) {\n            const list = calls[event];\n            const node = list ? list.tail : {};\n            node.next = tail = {};\n            node.context = context;\n            node.callback = callback;\n            calls[event] = {\n                tail,\n                next: list ? list.next : node\n            };\n        }\n        return this;\n    }\n    once(events, callback, context) {\n        const wrapper = (...args) => {\n            callback.apply(this, args);\n            this.off(events, wrapper, context);\n        };\n        this.on(events, wrapper, context);\n        return this;\n    }\n    off(events, callback, context) {\n        let event, calls, _events;\n        if (!(calls = this.callbacks)) {\n            return this;\n        }\n        if (!(events || callback || context)) {\n            delete this.callbacks;\n            return this;\n        }\n        if (typeof events === 'symbol') {\n            _events = [events];\n        }\n        else {\n            _events = events ? events.split(Events.eventSplitter) : Object.keys(calls);\n        }\n        while ((event = _events.shift())) {\n            let node = calls[event];\n            delete calls[event];\n            if (!node || !(callback || context)) {\n                continue;\n            }\n            const tail = node.tail;\n            while ((node = node.next) !== tail) {\n                const cb = node.callback;\n                const ctx = node.context;\n                if ((callback && cb !== callback) || (context && ctx !== context)) {\n                    this.on(event, cb, ctx);\n                }\n            }\n        }\n        return this;\n    }\n    trigger(events, ...args) {\n        let event, node, calls, _events;\n        if (!(calls = this.callbacks)) {\n            return this;\n        }\n        if (typeof events === 'symbol') {\n            _events = [events];\n        }\n        else {\n            _events = events.split(Events.eventSplitter);\n        }\n        while ((event = _events.shift())) {\n            if ((node = calls[event])) {\n                const tail = node.tail;\n                while ((node = node.next) !== tail) {\n                    node.callback.apply(node.context || this, args);\n                }\n            }\n        }\n        return this;\n    }\n}\nEvents.eventSplitter = ','; // Note: Harmony ACE API 8 开发板不支持使用正则 split 字符串 /\\s+/\n\nfunction isString(o) {\n    return typeof o === 'string';\n}\nfunction isUndefined(o) {\n    return typeof o === 'undefined';\n}\nfunction isNull(o) {\n    return o === null;\n}\nfunction isObject(o) {\n    return o !== null && typeof o === 'object';\n}\nfunction isBoolean(o) {\n    return o === true || o === false;\n}\nfunction isFunction(o) {\n    return typeof o === 'function';\n}\nfunction isNumber(o) {\n    return typeof o === 'number';\n}\nfunction isBooleanStringLiteral(o) {\n    return o === 'true' || o === 'false';\n}\nconst isArray = Array.isArray;\nconst isWebPlatform = () => process.env.TARO_ENV === 'h5' || process.env.TARO_PLATFORM === 'web';\n\nvar HOOK_TYPE;\n(function (HOOK_TYPE) {\n    HOOK_TYPE[HOOK_TYPE[\"SINGLE\"] = 0] = \"SINGLE\";\n    HOOK_TYPE[HOOK_TYPE[\"MULTI\"] = 1] = \"MULTI\";\n    HOOK_TYPE[HOOK_TYPE[\"WATERFALL\"] = 2] = \"WATERFALL\";\n})(HOOK_TYPE || (HOOK_TYPE = {}));\nconst defaultMiniLifecycle = {\n    app: [\n        'onLaunch',\n        'onShow',\n        'onHide'\n    ],\n    page: [\n        'onLoad',\n        'onUnload',\n        'onReady',\n        'onShow',\n        'onHide',\n        [\n            'onPullDownRefresh',\n            'onReachBottom',\n            'onPageScroll',\n            'onResize',\n            'defer:onTabItemTap',\n            'onTitleClick',\n            'onOptionMenuClick',\n            'onPopMenuClick',\n            'onPullIntercept',\n            'onAddToFavorites'\n        ],\n        [\n            'onShareAppMessage',\n            'onShareTimeline'\n        ]\n    ],\n    component: [\n        'attached',\n        'detached'\n    ]\n};\nfunction TaroHook(type, initial) {\n    return {\n        type,\n        initial: initial || null\n    };\n}\nclass TaroHooks extends Events {\n    constructor(hooks, opts) {\n        super(opts);\n        this.hooks = hooks;\n        for (const hookName in hooks) {\n            const { initial } = hooks[hookName];\n            if (isFunction(initial)) {\n                this.on(hookName, initial);\n            }\n        }\n    }\n    tapOneOrMany(hookName, callback) {\n        const list = isFunction(callback) ? [callback] : callback;\n        list.forEach(cb => this.on(hookName, cb));\n    }\n    tap(hookName, callback) {\n        const hooks = this.hooks;\n        const { type, initial } = hooks[hookName];\n        if (type === HOOK_TYPE.SINGLE) {\n            this.off(hookName);\n            this.on(hookName, isFunction(callback) ? callback : callback[callback.length - 1]);\n        }\n        else {\n            initial && this.off(hookName, initial);\n            this.tapOneOrMany(hookName, callback);\n        }\n    }\n    call(hookName, ...rest) {\n        var _a;\n        const hook = this.hooks[hookName];\n        if (!hook)\n            return;\n        const { type } = hook;\n        const calls = this.callbacks;\n        if (!calls)\n            return;\n        const list = calls[hookName];\n        if (list) {\n            const tail = list.tail;\n            let node = list.next;\n            let args = rest;\n            let res;\n            while (node !== tail) {\n                res = (_a = node.callback) === null || _a === void 0 ? void 0 : _a.apply(node.context || this, args);\n                if (type === HOOK_TYPE.WATERFALL) {\n                    const params = [res];\n                    args = params;\n                }\n                node = node.next;\n            }\n            return res;\n        }\n    }\n    isExist(hookName) {\n        var _a;\n        return Boolean((_a = this.callbacks) === null || _a === void 0 ? void 0 : _a[hookName]);\n    }\n}\nconst hooks = new TaroHooks({\n    getMiniLifecycle: TaroHook(HOOK_TYPE.SINGLE, defaultConfig => defaultConfig),\n    getMiniLifecycleImpl: TaroHook(HOOK_TYPE.SINGLE, function () {\n        return this.call('getMiniLifecycle', defaultMiniLifecycle);\n    }),\n    getLifecycle: TaroHook(HOOK_TYPE.SINGLE, (instance, lifecycle) => instance[lifecycle]),\n    modifyRecursiveComponentConfig: TaroHook(HOOK_TYPE.SINGLE, (defaultConfig) => defaultConfig),\n    getPathIndex: TaroHook(HOOK_TYPE.SINGLE, indexOfNode => `[${indexOfNode}]`),\n    getEventCenter: TaroHook(HOOK_TYPE.SINGLE, Events => new Events()),\n    isBubbleEvents: TaroHook(HOOK_TYPE.SINGLE, eventName => {\n        /**\n         * 支持冒泡的事件, 除 支付宝小程序外，其余的可冒泡事件都和微信保持一致\n         * 详见 见 https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html\n         */\n        const BUBBLE_EVENTS = new Set([\n            'touchstart',\n            'touchmove',\n            'touchcancel',\n            'touchend',\n            'touchforcechange',\n            'tap',\n            'longpress',\n            'longtap',\n            'transitionend',\n            'animationstart',\n            'animationiteration',\n            'animationend'\n        ]);\n        return BUBBLE_EVENTS.has(eventName);\n    }),\n    getSpecialNodes: TaroHook(HOOK_TYPE.SINGLE, () => ['view', 'text', 'image']),\n    onRemoveAttribute: TaroHook(HOOK_TYPE.SINGLE),\n    batchedEventUpdates: TaroHook(HOOK_TYPE.SINGLE),\n    mergePageInstance: TaroHook(HOOK_TYPE.SINGLE),\n    modifyPageObject: TaroHook(HOOK_TYPE.SINGLE),\n    createPullDownComponent: TaroHook(HOOK_TYPE.SINGLE),\n    getDOMNode: TaroHook(HOOK_TYPE.SINGLE),\n    modifyHydrateData: TaroHook(HOOK_TYPE.SINGLE),\n    transferHydrateData: TaroHook(HOOK_TYPE.SINGLE),\n    modifySetAttrPayload: TaroHook(HOOK_TYPE.SINGLE),\n    modifyRmAttrPayload: TaroHook(HOOK_TYPE.SINGLE),\n    onAddEvent: TaroHook(HOOK_TYPE.SINGLE),\n    proxyToRaw: TaroHook(HOOK_TYPE.SINGLE, function (proxyObj) {\n        return proxyObj;\n    }),\n    modifyMpEvent: TaroHook(HOOK_TYPE.MULTI),\n    modifyMpEventImpl: TaroHook(HOOK_TYPE.SINGLE, function (e) {\n        try {\n            // 有些小程序的事件对象的某些属性只读\n            this.call('modifyMpEvent', e);\n        }\n        catch (error) {\n            console.warn('[Taro modifyMpEvent hook Error]: ' + (error === null || error === void 0 ? void 0 : error.message));\n        }\n    }),\n    injectNewStyleProperties: TaroHook(HOOK_TYPE.SINGLE),\n    modifyTaroEvent: TaroHook(HOOK_TYPE.MULTI),\n    dispatchTaroEvent: TaroHook(HOOK_TYPE.SINGLE, (e, node) => {\n        node.dispatchEvent(e);\n    }),\n    dispatchTaroEventFinish: TaroHook(HOOK_TYPE.MULTI),\n    modifyDispatchEvent: TaroHook(HOOK_TYPE.MULTI),\n    initNativeApi: TaroHook(HOOK_TYPE.MULTI),\n    patchElement: TaroHook(HOOK_TYPE.MULTI),\n    modifyAddEventListener: TaroHook(HOOK_TYPE.SINGLE),\n    modifyRemoveEventListener: TaroHook(HOOK_TYPE.SINGLE),\n});\n\nconst EMPTY_OBJ = {};\nconst EMPTY_ARR = [];\nconst noop = (..._) => { };\n/**\n * box creates a boxed value.\n *\n * @typeparam T Value type.\n * @param v Value.\n * @returns Boxed value.\n */\nconst box = (v) => ({ v });\n/**\n * box creates a boxed value.\n *\n * @typeparam T Value type.\n * @param b Boxed value.\n * @returns Value.\n */\nconst unbox = (b) => b.v;\nfunction toDashed(s) {\n    return s.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction toCamelCase(s) {\n    let camel = '';\n    let nextCap = false;\n    for (let i = 0; i < s.length; i++) {\n        if (s[i] !== '-') {\n            camel += nextCap ? s[i].toUpperCase() : s[i];\n            nextCap = false;\n        }\n        else {\n            nextCap = true;\n        }\n    }\n    return camel;\n}\nconst toKebabCase = function (string) {\n    return string.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n};\nfunction capitalize(s) {\n    return s.charAt(0).toUpperCase() + s.slice(1);\n}\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\n/**\n * ensure takes a condition and throw a error if the condition fails,\n * like failure::ensure: https://docs.rs/failure/0.1.1/failure/macro.ensure.html\n * @param condition condition.\n * @param msg error message.\n */\nfunction ensure(condition, msg) {\n    if (!condition) {\n        if (process.env.NODE_ENV !== 'production') {\n            const reportIssue = '\\n如有疑问，请提交 issue 至：https://github.com/nervjs/taro/issues';\n            throw new Error(msg + reportIssue);\n        }\n        else {\n            throw new Error(msg);\n        }\n    }\n}\nfunction warn(condition, msg) {\n    if (process.env.NODE_ENV !== 'production') {\n        if (condition) {\n            console.warn(`[taro warn] ${msg}`);\n        }\n    }\n}\nfunction queryToJson(str) {\n    const dec = decodeURIComponent;\n    const qp = str.split('&');\n    const ret = {};\n    let name;\n    let val;\n    for (let i = 0, l = qp.length, item; i < l; ++i) {\n        item = qp[i];\n        if (item.length) {\n            const s = item.indexOf('=');\n            if (s < 0) {\n                name = dec(item);\n                val = '';\n            }\n            else {\n                name = dec(item.slice(0, s));\n                val = dec(item.slice(s + 1));\n            }\n            if (typeof ret[name] === 'string') { // inline'd type check\n                ret[name] = [ret[name]];\n            }\n            if (Array.isArray(ret[name])) {\n                ret[name].push(val);\n            }\n            else {\n                ret[name] = val;\n            }\n        }\n    }\n    return ret; // Object\n}\nlet _uniqueId = 1;\nconst _loadTime = (new Date()).getTime().toString();\nfunction getUniqueKey() {\n    return _loadTime + (_uniqueId++);\n}\nconst cacheData = {};\nfunction cacheDataSet(key, val) {\n    cacheData[key] = val;\n}\nfunction cacheDataGet(key, delelteAfterGet) {\n    const temp = cacheData[key];\n    delelteAfterGet && delete cacheData[key];\n    return temp;\n}\nfunction cacheDataHas(key) {\n    return key in cacheData;\n}\nfunction mergeInternalComponents(components) {\n    Object.keys(components).forEach(name => {\n        if (name in internalComponents) {\n            Object.assign(internalComponents[name], components[name]);\n        }\n        else {\n            internalComponents[name] = components[name];\n        }\n    });\n    return internalComponents;\n}\nfunction getComponentsAlias(origin) {\n    const mapping = {};\n    const viewAttrs = origin.View;\n    const extraList = {\n        '#text': {},\n        StaticView: viewAttrs,\n        StaticImage: origin.Image,\n        StaticText: origin.Text,\n        PureView: viewAttrs,\n        CatchView: viewAttrs\n    };\n    origin = Object.assign(Object.assign({}, origin), extraList);\n    Object.keys(origin)\n        .sort((a, b) => {\n        const reg = /^(Static|Pure|Catch)*(View|Image|Text)$/;\n        const isACommonly = reg.test(a);\n        const isBCommonly = reg.test(b);\n        if (isACommonly && isBCommonly) {\n            return a > b ? 1 : -1;\n        }\n        else if (isACommonly) {\n            return -1;\n        }\n        else if (isBCommonly) {\n            return 1;\n        }\n        else {\n            return a >= b ? 1 : -1;\n        }\n    })\n        .forEach((key, num) => {\n        const obj = {\n            _num: String(num)\n        };\n        Object.keys(origin[key])\n            .filter(attr => !(/^bind/.test(attr)) && !['focus', 'blur'].includes(attr))\n            .sort()\n            .forEach((attr, index) => {\n            obj[toCamelCase(attr)] = 'p' + index;\n        });\n        mapping[toDashed(key)] = obj;\n    });\n    return mapping;\n}\nfunction getPlatformType(platform = 'weapp', configNameOrType = PLATFORM_TYPE.MINI) {\n    if (Object.keys(PLATFORM_CONFIG_MAP).includes(platform)) {\n        configNameOrType = platform;\n    }\n    const param = PLATFORM_CONFIG_MAP[configNameOrType] || {};\n    return param.type || configNameOrType;\n}\nfunction mergeReconciler(hostConfig, hooksForTest) {\n    const obj = hooksForTest || hooks;\n    const keys = Object.keys(hostConfig);\n    keys.forEach(key => {\n        obj.tap(key, hostConfig[key]);\n    });\n}\nfunction nonsupport(api) {\n    return function () {\n        console.warn(`小程序暂不支持 ${api}`);\n    };\n}\nfunction setUniqueKeyToRoute(key, obj) {\n    const routerParamsPrivateKey = '__key_';\n    const useDataCacheApis = [\n        'navigateTo',\n        'redirectTo',\n        'reLaunch',\n        'switchTab'\n    ];\n    if (useDataCacheApis.indexOf(key) > -1) {\n        const url = obj.url = obj.url || '';\n        const hasMark = url.indexOf('?') > -1;\n        const cacheKey = getUniqueKey();\n        obj.url += (hasMark ? '&' : '?') + `${routerParamsPrivateKey}=${cacheKey}`;\n    }\n}\nfunction indent(str, size) {\n    return str.split('\\n')\n        .map((line, index) => {\n        const indent = index === 0 ? '' : Array(size).fill(' ').join('');\n        return indent + line;\n    })\n        .join('\\n');\n}\n\nconst needPromiseApis = new Set([\n    'addPhoneContact',\n    'authorize',\n    'canvasGetImageData',\n    'canvasPutImageData',\n    'canvasToTempFilePath',\n    'checkSession',\n    'chooseAddress',\n    'chooseImage',\n    'chooseInvoiceTitle',\n    'chooseLocation',\n    'chooseVideo',\n    'clearStorage',\n    'closeBLEConnection',\n    'closeBluetoothAdapter',\n    'closeSocket',\n    'compressImage',\n    'connectSocket',\n    'createBLEConnection',\n    'downloadFile',\n    'exitMiniProgram',\n    'getAvailableAudioSources',\n    'getBLEDeviceCharacteristics',\n    'getBLEDeviceServices',\n    'getBatteryInfo',\n    'getBeacons',\n    'getBluetoothAdapterState',\n    'getBluetoothDevices',\n    'getClipboardData',\n    'getConnectedBluetoothDevices',\n    'getConnectedWifi',\n    'getExtConfig',\n    'getFileInfo',\n    'getImageInfo',\n    'getLocation',\n    'getNetworkType',\n    'getSavedFileInfo',\n    'getSavedFileList',\n    'getScreenBrightness',\n    'getSetting',\n    'getStorage',\n    'getStorageInfo',\n    'getSystemInfo',\n    'getUserInfo',\n    'getWifiList',\n    'hideHomeButton',\n    'hideShareMenu',\n    'hideTabBar',\n    'hideTabBarRedDot',\n    'loadFontFace',\n    'login',\n    'makePhoneCall',\n    'navigateBack',\n    'navigateBackMiniProgram',\n    'navigateTo',\n    'navigateToBookshelf',\n    'navigateToMiniProgram',\n    'notifyBLECharacteristicValueChange',\n    'hideKeyboard',\n    'hideLoading',\n    'hideNavigationBarLoading',\n    'hideToast',\n    'openBluetoothAdapter',\n    'openDocument',\n    'openLocation',\n    'openSetting',\n    'pageScrollTo',\n    'previewImage',\n    'queryBookshelf',\n    'reLaunch',\n    'readBLECharacteristicValue',\n    'redirectTo',\n    'removeSavedFile',\n    'removeStorage',\n    'removeTabBarBadge',\n    'requestSubscribeMessage',\n    'saveFile',\n    'saveImageToPhotosAlbum',\n    'saveVideoToPhotosAlbum',\n    'scanCode',\n    'sendSocketMessage',\n    'setBackgroundColor',\n    'setBackgroundTextStyle',\n    'setClipboardData',\n    'setEnableDebug',\n    'setInnerAudioOption',\n    'setKeepScreenOn',\n    'setNavigationBarColor',\n    'setNavigationBarTitle',\n    'setScreenBrightness',\n    'setStorage',\n    'setTabBarBadge',\n    'setTabBarItem',\n    'setTabBarStyle',\n    'showActionSheet',\n    'showFavoriteGuide',\n    'showLoading',\n    'showModal',\n    'showShareMenu',\n    'showTabBar',\n    'showTabBarRedDot',\n    'showToast',\n    'startBeaconDiscovery',\n    'startBluetoothDevicesDiscovery',\n    'startDeviceMotionListening',\n    'startPullDownRefresh',\n    'stopBeaconDiscovery',\n    'stopBluetoothDevicesDiscovery',\n    'stopCompass',\n    'startCompass',\n    'startAccelerometer',\n    'stopAccelerometer',\n    'showNavigationBarLoading',\n    'stopDeviceMotionListening',\n    'stopPullDownRefresh',\n    'switchTab',\n    'uploadFile',\n    'vibrateLong',\n    'vibrateShort',\n    'writeBLECharacteristicValue'\n]);\nfunction getCanIUseWebp(taro) {\n    return function () {\n        var _a;\n        const res = (_a = taro.getSystemInfoSync) === null || _a === void 0 ? void 0 : _a.call(taro);\n        if (!res) {\n            if (process.env.NODE_ENV !== 'production') {\n                console.error('不支持 API canIUseWebp');\n            }\n            return false;\n        }\n        const { platform } = res;\n        const platformLower = platform.toLowerCase();\n        if (platformLower === 'android' || platformLower === 'devtools') {\n            return true;\n        }\n        return false;\n    };\n}\nfunction getNormalRequest(global) {\n    return function request(options) {\n        options = options\n            ? (isString(options)\n                ? { url: options }\n                : options)\n            : {};\n        const originSuccess = options.success;\n        const originFail = options.fail;\n        const originComplete = options.complete;\n        let requestTask;\n        const p = new Promise((resolve, reject) => {\n            options.success = res => {\n                originSuccess && originSuccess(res);\n                resolve(res);\n            };\n            options.fail = res => {\n                originFail && originFail(res);\n                reject(res);\n            };\n            options.complete = res => {\n                originComplete && originComplete(res);\n            };\n            requestTask = global.request(options);\n        });\n        equipTaskMethodsIntoPromise(requestTask, p);\n        p.abort = (cb) => {\n            cb && cb();\n            if (requestTask) {\n                requestTask.abort();\n            }\n            return p;\n        };\n        return p;\n    };\n}\nfunction processApis(taro, global, config = {}) {\n    const patchNeedPromiseApis = config.needPromiseApis || [];\n    const _needPromiseApis = new Set([...patchNeedPromiseApis, ...needPromiseApis]);\n    const preserved = [\n        'getEnv',\n        'interceptors',\n        'Current',\n        'getCurrentInstance',\n        'options',\n        'nextTick',\n        'eventCenter',\n        'Events',\n        'preload',\n        'webpackJsonp'\n    ];\n    const apis = new Set(!config.isOnlyPromisify\n        ? Object.keys(global).filter(api => preserved.indexOf(api) === -1)\n        : patchNeedPromiseApis);\n    if (config.modifyApis) {\n        config.modifyApis(apis);\n    }\n    apis.forEach(key => {\n        if (_needPromiseApis.has(key)) {\n            const originKey = key;\n            taro[originKey] = (options = {}, ...args) => {\n                let key = originKey;\n                // 第一个参数 options 为字符串，单独处理\n                if (typeof options === 'string') {\n                    if (args.length) {\n                        return global[key](options, ...args);\n                    }\n                    return global[key](options);\n                }\n                // 改变 key 或 option 字段，如需要把支付宝标准的字段对齐微信标准的字段\n                if (config.transformMeta) {\n                    const transformResult = config.transformMeta(key, options);\n                    key = transformResult.key;\n                    options = transformResult.options;\n                    // 新 key 可能不存在\n                    if (!global.hasOwnProperty(key)) {\n                        return nonsupport(key)();\n                    }\n                }\n                let task = null;\n                const obj = Object.assign({}, options);\n                // 为页面跳转相关的 API 设置一个随机数作为路由参数。为了给 runtime 区分页面。\n                setUniqueKeyToRoute(key, options);\n                // Promise 化\n                const p = new Promise((resolve, reject) => {\n                    obj.success = res => {\n                        var _a, _b;\n                        (_a = config.modifyAsyncResult) === null || _a === void 0 ? void 0 : _a.call(config, key, res);\n                        (_b = options.success) === null || _b === void 0 ? void 0 : _b.call(options, res);\n                        if (key === 'connectSocket') {\n                            resolve(Promise.resolve().then(() => task ? Object.assign(task, res) : res));\n                        }\n                        else {\n                            resolve(res);\n                        }\n                    };\n                    obj.fail = res => {\n                        var _a;\n                        (_a = options.fail) === null || _a === void 0 ? void 0 : _a.call(options, res);\n                        reject(res);\n                    };\n                    obj.complete = res => {\n                        var _a;\n                        (_a = options.complete) === null || _a === void 0 ? void 0 : _a.call(options, res);\n                    };\n                    if (args.length) {\n                        task = global[key](obj, ...args);\n                    }\n                    else {\n                        task = global[key](obj);\n                    }\n                });\n                // 给 promise 对象挂载属性\n                if (['uploadFile', 'downloadFile'].includes(key)) {\n                    equipTaskMethodsIntoPromise(task, p);\n                    p.progress = cb => {\n                        task === null || task === void 0 ? void 0 : task.onProgressUpdate(cb);\n                        return p;\n                    };\n                    p.abort = cb => {\n                        cb === null || cb === void 0 ? void 0 : cb();\n                        task === null || task === void 0 ? void 0 : task.abort();\n                        return p;\n                    };\n                }\n                return p;\n            };\n        }\n        else {\n            let platformKey = key;\n            // 改变 key 或 option 字段，如需要把支付宝标准的字段对齐微信标准的字段\n            if (config.transformMeta) {\n                platformKey = config.transformMeta(key, {}).key;\n            }\n            // API 不存在\n            if (!global.hasOwnProperty(platformKey)) {\n                taro[key] = nonsupport(key);\n                return;\n            }\n            if (isFunction(global[key])) {\n                taro[key] = (...args) => {\n                    if (config.handleSyncApis) {\n                        return config.handleSyncApis(key, global, args);\n                    }\n                    else {\n                        return global[platformKey].apply(global, args);\n                    }\n                };\n            }\n            else {\n                taro[key] = global[platformKey];\n            }\n        }\n    });\n    !config.isOnlyPromisify && equipCommonApis(taro, global, config);\n}\n/**\n * 挂载常用 API\n * @param taro Taro 对象\n * @param global 小程序全局对象，如微信的 wx，支付宝的 my\n */\nfunction equipCommonApis(taro, global, apis = {}) {\n    taro.canIUseWebp = getCanIUseWebp(taro);\n    taro.getCurrentPages = getCurrentPages || nonsupport('getCurrentPages');\n    taro.getApp = getApp || nonsupport('getApp');\n    taro.env = global.env || {};\n    try {\n        taro.requirePlugin = requirePlugin || nonsupport('requirePlugin');\n    }\n    catch (error) {\n        taro.requirePlugin = nonsupport('requirePlugin');\n    }\n    // request & interceptors\n    const request = apis.request || getNormalRequest(global);\n    function taroInterceptor(chain) {\n        return request(chain.requestParams);\n    }\n    const link = new taro.Link(taroInterceptor);\n    taro.request = link.request.bind(link);\n    taro.addInterceptor = link.addInterceptor.bind(link);\n    taro.cleanInterceptors = link.cleanInterceptors.bind(link);\n    taro.miniGlobal = taro.options.miniGlobal = global;\n    taro.getAppInfo = function () {\n        return {\n            platform: process.env.TARO_PLATFORM || 'MiniProgram',\n            taroVersion: process.env.TARO_VERSION || 'unknown',\n            designWidth: taro.config.designWidth\n        };\n    };\n    taro.createSelectorQuery = delayRef(taro, global, 'createSelectorQuery', 'exec');\n    taro.createIntersectionObserver = delayRef(taro, global, 'createIntersectionObserver', 'observe');\n}\n/**\n * 将Task对象中的方法挂载到promise对象中，适配小程序api原生返回结果\n * @param task Task对象 {RequestTask | DownloadTask | UploadTask}\n * @param promise Promise\n */\nfunction equipTaskMethodsIntoPromise(task, promise) {\n    if (!task || !promise)\n        return;\n    const taskMethods = ['abort', 'onHeadersReceived', 'offHeadersReceived', 'onProgressUpdate', 'offProgressUpdate', 'onChunkReceived', 'offChunkReceived'];\n    task && taskMethods.forEach(method => {\n        if (method in task) {\n            promise[method] = task[method].bind(task);\n        }\n    });\n}\nfunction delayRef(taro, global, name, method) {\n    return function (...args) {\n        const res = global[name](...args);\n        const raw = res[method].bind(res);\n        res[method] = function (...methodArgs) {\n            taro.nextTick(() => raw(...methodArgs));\n        };\n        return res;\n    };\n}\n\nexport { EMPTY_ARR, EMPTY_OBJ, Events, HOOK_TYPE, PLATFORM_CONFIG_MAP, PLATFORM_TYPE, TaroHook, TaroHooks, animation, box, cacheDataGet, cacheDataHas, cacheDataSet, capitalize, controlledComponent, ensure, focusComponents, getComponentsAlias, getPlatformType, getUniqueKey, hasOwn, hooks, indent, internalComponents, isArray, isBoolean, isBooleanStringLiteral, isFunction, isNull, isNumber, isObject, isString, isUndefined, isWebPlatform, mergeInternalComponents, mergeReconciler, nestElements, nonsupport, noop, processApis, queryToJson, setUniqueKeyToRoute, singleQuote, toCamelCase, toDashed, toKebabCase, touchEvents, unbox, voidElements, warn };\n//# sourceMappingURL=shared.esm.js.map\n","import { noop, isFunction, getComponentsAlias as getComponentsAlias$1, internalComponents, isWebPlatform, EMPTY_OBJ, hooks, toCamelCase, isObject, warn, isArray, ensure, isNull, isUndefined, toDashed, isString, controlledComponent, Events, isNumber } from '@tarojs/shared';\nexport { Events, hooks } from '@tarojs/shared';\n\nconst PROPERTY_THRESHOLD = 2046;\nconst TARO_RUNTIME = 'Taro runtime';\nconst HOOKS_APP_ID = 'taro-app';\nconst SET_DATA = '小程序 setData';\nconst PAGE_INIT = '页面初始化';\nconst ROOT_STR = 'root';\nconst HTML = 'html';\nconst HEAD = 'head';\nconst BODY = 'body';\nconst APP = 'app';\nconst CONTAINER = 'container';\nconst DOCUMENT_ELEMENT_NAME = '#document';\nconst DOCUMENT_FRAGMENT = 'document-fragment';\nconst ID = 'id';\nconst UID = 'uid';\nconst CLASS = 'class';\nconst STYLE = 'style';\nconst FOCUS = 'focus';\nconst VIEW = 'view';\nconst STATIC_VIEW = 'static-view';\nconst PURE_VIEW = 'pure-view';\nconst PROPS = 'props';\nconst DATASET = 'dataset';\nconst OBJECT = 'object';\nconst VALUE = 'value';\nconst INPUT = 'input';\nconst CHANGE = 'change';\nconst CUSTOM_WRAPPER = 'custom-wrapper';\nconst TARGET = 'target';\nconst CURRENT_TARGET = 'currentTarget';\nconst TYPE = 'type';\nconst CONFIRM = 'confirm';\nconst TIME_STAMP = 'timeStamp';\nconst KEY_CODE = 'keyCode';\nconst TOUCHMOVE = 'touchmove';\nconst DATE = 'Date';\nconst SET_TIMEOUT = 'setTimeout';\nconst CATCHMOVE = 'catchMove';\nconst CATCH_VIEW = 'catch-view';\nconst COMMENT = 'comment';\nconst ON_LOAD = 'onLoad';\nconst ON_READY = 'onReady';\nconst ON_SHOW = 'onShow';\nconst ON_HIDE = 'onHide';\nconst OPTIONS = 'options';\nconst EXTERNAL_CLASSES = 'externalClasses';\nconst EVENT_CALLBACK_RESULT = 'e_result';\nconst BEHAVIORS = 'behaviors';\nconst A = 'a';\n/**\n * 页面上下文切换时的行为\n */\nvar CONTEXT_ACTIONS;\n(function (CONTEXT_ACTIONS) {\n    CONTEXT_ACTIONS[\"INIT\"] = \"0\";\n    CONTEXT_ACTIONS[\"RESTORE\"] = \"1\";\n    CONTEXT_ACTIONS[\"RECOVER\"] = \"2\";\n    CONTEXT_ACTIONS[\"DESTORY\"] = \"3\";\n})(CONTEXT_ACTIONS || (CONTEXT_ACTIONS = {}));\n\nconst observers = [];\n/**\n * The MutationObserver provides the ability\n * to watch for changes being made to the DOM tree.\n * It will invoke a specified callback function\n * when DOM changes occur.\n * @see https://dom.spec.whatwg.org/#mutationobserver\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver\n */\nclass MutationObserverImpl {\n    constructor(callback) {\n        this.records = [];\n        this.callback = callback;\n    }\n    /**\n     * Configures the MutationObserver\n     * to begin receiving notifications\n     * through its callback function\n     * when DOM changes matching the given options occur.\n     *\n     * Options matching is to be implemented.\n     */\n    observe(target, options) {\n        this.disconnect();\n        this.target = target;\n        this.options = options || {};\n        observers.push(this);\n    }\n    /**\n     * Stop the MutationObserver instance\n     * from receiving further notifications\n     * until and unless observe() is called again.\n     */\n    disconnect() {\n        this.target = null;\n        const index = observers.indexOf(this);\n        if (index >= 0) {\n            observers.splice(index, 1);\n        }\n    }\n    /**\n     * Removes all pending notifications\n     * from the MutationObserver's notification queue\n     * and returns them in a new Array of MutationRecord objects.\n     */\n    takeRecords() {\n        return this.records.splice(0, this.records.length);\n    }\n}\n/** Match two TaroNodes by sid. */\nconst sidMatches = (observerTarget, target) => {\n    return !!observerTarget && observerTarget.sid === (target === null || target === void 0 ? void 0 : target.sid);\n};\nconst isConcerned = (record, options) => {\n    const { characterData, characterDataOldValue, attributes, attributeOldValue, childList } = options;\n    switch (record.type) {\n        case \"characterData\" /* MutationRecordType.CHARACTER_DATA */:\n            if (characterData) {\n                if (!characterDataOldValue)\n                    record.oldValue = null;\n                return true;\n            }\n            return false;\n        case \"attributes\" /* MutationRecordType.ATTRIBUTES */:\n            if (attributes) {\n                if (!attributeOldValue)\n                    record.oldValue = null;\n                return true;\n            }\n            return false;\n        case \"childList\" /* MutationRecordType.CHILD_LIST */:\n            if (childList) {\n                return true;\n            }\n            return false;\n    }\n};\nlet pendingMuatations = false;\nfunction logMutation(observer, record) {\n    observer.records.push(record);\n    if (!pendingMuatations) {\n        pendingMuatations = true;\n        Promise\n            .resolve()\n            .then(() => {\n            pendingMuatations = false;\n            observers.forEach(observer => {\n                return observer.callback(observer.takeRecords());\n            });\n        });\n    }\n}\nfunction recordMutation(record) {\n    observers.forEach(observer => {\n        const { options } = observer;\n        for (let t = record.target; t; t = t.parentNode) {\n            if (sidMatches(observer.target, t) && isConcerned(record, options)) {\n                logMutation(observer, record);\n                break;\n            }\n            if (!options.subtree)\n                break;\n        }\n    });\n}\n\nclass MutationObserver {\n    constructor(callback) {\n        if (ENABLE_MUTATION_OBSERVER) {\n            this.core = new MutationObserverImpl(callback);\n        }\n        else {\n            if (process.env.NODE_ENV !== 'production') {\n                console.warn('[Taro Warning] 若要使用 MutationObserver，请在 Taro 编译配置中设置 \\'mini.runtime.enableMutationObserver: true\\'');\n            }\n            this.core = {\n                observe: noop,\n                disconnect: noop,\n                takeRecords: noop\n            };\n        }\n    }\n    observe(...args) {\n        this.core.observe(...args);\n    }\n    disconnect() {\n        this.core.disconnect();\n    }\n    takeRecords() {\n        return this.core.takeRecords();\n    }\n    static record(record) {\n        recordMutation(record);\n    }\n}\n\nconst incrementId = () => {\n    const chatCodes = [];\n    // A-Z\n    for (let i = 65; i <= 90; i++) {\n        chatCodes.push(i);\n    }\n    // a-z\n    for (let i = 97; i <= 122; i++) {\n        chatCodes.push(i);\n    }\n    const chatCodesLen = chatCodes.length - 1;\n    const list = [0, 0];\n    return () => {\n        const target = list.map(item => chatCodes[item]);\n        const res = String.fromCharCode(...target);\n        let tailIdx = list.length - 1;\n        list[tailIdx]++;\n        while (list[tailIdx] > chatCodesLen) {\n            list[tailIdx] = 0;\n            tailIdx = tailIdx - 1;\n            if (tailIdx < 0) {\n                list.push(0);\n                break;\n            }\n            list[tailIdx]++;\n        }\n        return res;\n    };\n};\nfunction isElement(node) {\n    return node.nodeType === 1 /* NodeType.ELEMENT_NODE */;\n}\nfunction isText(node) {\n    return node.nodeType === 3 /* NodeType.TEXT_NODE */;\n}\nfunction isComment(node) {\n    return node.nodeName === COMMENT;\n}\nfunction isHasExtractProp(el) {\n    const res = Object.keys(el.props).find(prop => {\n        return !(/^(class|style|id)$/.test(prop) || prop.startsWith('data-'));\n    });\n    return Boolean(res);\n}\n/**\n * 往上寻找组件树直到 root，寻找是否有祖先组件绑定了同类型的事件\n * @param node 当前组件\n * @param type 事件类型\n */\nfunction isParentBinded(node, type) {\n    var _a;\n    while ((node = (node === null || node === void 0 ? void 0 : node.parentElement) || null)) {\n        if (!node || node.nodeName === ROOT_STR || node.nodeName === 'root-portal') {\n            return false;\n        }\n        else if ((_a = node.__handlers[type]) === null || _a === void 0 ? void 0 : _a.length) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction shortcutAttr(key) {\n    switch (key) {\n        case STYLE:\n            return \"st\" /* Shortcuts.Style */;\n        case ID:\n            return UID;\n        case CLASS:\n            return \"cl\" /* Shortcuts.Class */;\n        default:\n            return key;\n    }\n}\nconst customWrapperCache = new Map();\nfunction extend(ctor, methodName, options) {\n    if (isFunction(options)) {\n        options = {\n            value: options\n        };\n    }\n    Object.defineProperty(ctor.prototype, methodName, Object.assign({ configurable: true, enumerable: true }, options));\n}\nlet componentsAlias$1;\nfunction getComponentsAlias() {\n    if (!componentsAlias$1) {\n        componentsAlias$1 = getComponentsAlias$1(internalComponents);\n    }\n    return componentsAlias$1;\n}\n\nclass ClassList {\n    constructor(className, el) {\n        this.tokenList = [];\n        this.el = el;\n        className.trim().split(/\\s+/).forEach(token => this.tokenList.push(token));\n    }\n    get value() {\n        return this.toString();\n    }\n    get length() {\n        return this.tokenList.length;\n    }\n    add() {\n        let index = 0;\n        let updated = false;\n        const tokens = arguments;\n        const length = tokens.length;\n        const tokenList = this.tokenList;\n        do {\n            const token = tokens[index];\n            if (this.checkTokenIsValid(token) && !~tokenList.indexOf(token)) {\n                tokenList.push(token);\n                updated = true;\n            }\n        } while (++index < length);\n        if (updated) {\n            this._update();\n        }\n    }\n    remove() {\n        let i = 0;\n        let updated = false;\n        const tokens = arguments;\n        const length = tokens.length;\n        const tokenList = this.tokenList;\n        do {\n            const token = tokens[i] + '';\n            if (!this.checkTokenIsValid(token))\n                continue;\n            const index = tokenList.indexOf(token);\n            if (~tokenList.indexOf(token)) {\n                tokenList.splice(index, 1);\n                updated = true;\n            }\n        } while (++i < length);\n        if (updated) {\n            this._update();\n        }\n    }\n    contains(token) {\n        if (!this.checkTokenIsValid(token))\n            return false;\n        return !!~this.tokenList.indexOf(token);\n    }\n    toggle(token, force) {\n        const result = this.contains(token);\n        const method = result ? force !== true && 'remove' : force !== false && 'add';\n        if (method) {\n            // @ts-ignore\n            this[method](token);\n        }\n        if (force === true || force === false) {\n            return force;\n        }\n        else {\n            return !result;\n        }\n    }\n    replace(token, replacement_token) {\n        if (!this.checkTokenIsValid(token) || !this.checkTokenIsValid(replacement_token))\n            return;\n        const index = this.tokenList.indexOf(token);\n        if (~index) {\n            this.tokenList.splice(index, 1, replacement_token);\n            this._update();\n        }\n    }\n    toString() {\n        return this.tokenList.filter(v => v !== '').join(' ');\n    }\n    checkTokenIsValid(token) {\n        if (token === '' || /\\s/.test(token))\n            return false;\n        return true;\n    }\n    _update() {\n        this.el.className = this.value;\n    }\n}\n\nclass EventSource extends Map {\n    removeNode(child) {\n        const { sid, uid } = child;\n        this.delete(sid);\n        if (uid !== sid && uid)\n            this.delete(uid);\n    }\n    removeNodeTree(child) {\n        this.removeNode(child);\n        const { childNodes } = child;\n        childNodes.forEach(node => this.removeNodeTree(node));\n    }\n}\nconst eventSource = new EventSource();\n\nconst isWeb$1 = isWebPlatform();\nconst env = {\n    window: isWeb$1 ? window : EMPTY_OBJ,\n    document: isWeb$1 ? document : EMPTY_OBJ\n};\n\nlet SPECIAL_NODES;\nlet componentsAlias;\n/**\n * React also has a fancy function's name for this: `hydrate()`.\n * You may have been heard `hydrate` as a SSR-related function,\n * actually, `hydrate` basicly do the `render()` thing, but ignore some properties,\n * it's a vnode traverser and modifier: that's exactly what Taro's doing in here.\n */\nfunction hydrate(node) {\n    var _a;\n    if (!componentsAlias) {\n        // 初始化 componentsAlias\n        componentsAlias = getComponentsAlias();\n    }\n    if (!SPECIAL_NODES) {\n        // 初始化 SPECIAL_NODES\n        SPECIAL_NODES = hooks.call('getSpecialNodes');\n    }\n    const nodeName = node.nodeName;\n    if (isText(node)) {\n        return {\n            sid: node.sid,\n            [\"v\" /* Shortcuts.Text */]: node.nodeValue,\n            [\"nn\" /* Shortcuts.NodeName */]: ((_a = componentsAlias[nodeName]) === null || _a === void 0 ? void 0 : _a._num) || '8'\n        };\n    }\n    const data = {\n        [\"nn\" /* Shortcuts.NodeName */]: nodeName,\n        sid: node.sid\n    };\n    if (node.uid !== node.sid) {\n        data.uid = node.uid;\n    }\n    if (!node.isAnyEventBinded() && SPECIAL_NODES.indexOf(nodeName) > -1) {\n        data[\"nn\" /* Shortcuts.NodeName */] = `static-${nodeName}`;\n        if (nodeName === VIEW && !isHasExtractProp(node)) {\n            data[\"nn\" /* Shortcuts.NodeName */] = PURE_VIEW;\n        }\n    }\n    const { props } = node;\n    for (const prop in props) {\n        const propInCamelCase = toCamelCase(prop);\n        if (!prop.startsWith('data-') && // 在 node.dataset 的数据\n            prop !== CLASS &&\n            prop !== STYLE &&\n            prop !== ID &&\n            propInCamelCase !== CATCHMOVE) {\n            data[propInCamelCase] = props[prop];\n        }\n        if (nodeName === VIEW && propInCamelCase === CATCHMOVE && props[prop] !== false) {\n            data[\"nn\" /* Shortcuts.NodeName */] = CATCH_VIEW;\n        }\n    }\n    let { childNodes } = node;\n    // 过滤 comment 节点\n    childNodes = childNodes.filter(node => !isComment(node));\n    if (childNodes.length > 0) {\n        data[\"cn\" /* Shortcuts.Childnodes */] = childNodes.map(hydrate);\n    }\n    else {\n        data[\"cn\" /* Shortcuts.Childnodes */] = [];\n    }\n    if (node.className !== '') {\n        data[\"cl\" /* Shortcuts.Class */] = node.className;\n    }\n    const cssText = node.cssText;\n    if (cssText !== '' && nodeName !== 'swiper-item') {\n        data[\"st\" /* Shortcuts.Style */] = cssText;\n    }\n    hooks.call('modifyHydrateData', data, node);\n    const nn = data[\"nn\" /* Shortcuts.NodeName */];\n    const componentAlias = componentsAlias[nn];\n    if (componentAlias) {\n        data[\"nn\" /* Shortcuts.NodeName */] = componentAlias._num;\n        for (const prop in data) {\n            if (prop in componentAlias) {\n                data[componentAlias[prop]] = data[prop];\n                delete data[prop];\n            }\n        }\n    }\n    const resData = hooks.call('transferHydrateData', data, node, componentAlias);\n    return resData || data;\n}\n\nclass TaroEventTarget {\n    constructor() {\n        this.__handlers = {};\n    }\n    addEventListener(type, handler, options) {\n        type = type.toLowerCase();\n        hooks.call('onAddEvent', type, handler, options, this);\n        if (type === 'regionchange') {\n            // map 组件的 regionchange 事件非常特殊，详情：https://github.com/NervJS/taro/issues/5766\n            this.addEventListener('begin', handler, options);\n            this.addEventListener('end', handler, options);\n            return;\n        }\n        let isCapture = Boolean(options);\n        let isOnce = false;\n        if (isObject(options)) {\n            isCapture = Boolean(options.capture);\n            isOnce = Boolean(options.once);\n        }\n        if (isOnce) {\n            const wrapper = function () {\n                handler.apply(this, arguments); // this 指向 Element\n                this.removeEventListener(type, wrapper);\n            };\n            this.addEventListener(type, wrapper, Object.assign(Object.assign({}, options), { once: false }));\n            return;\n        }\n        process.env.NODE_ENV !== 'production' && warn(isCapture, 'Taro 暂未实现 event 的 capture 特性。');\n        // 某些框架，如 PReact 有委托的机制，handler 始终是同一个函数\n        // 这会导致多层停止冒泡失败：view -> view(handler.stop = false) -> view(handler.stop = true)\n        // 这样解决：view -> view(handlerA.stop = false) -> view(handlerB.stop = false)\n        // 因此每次绑定事件都新建一个函数，如果带来了性能问题，可以把这段逻辑抽取到 PReact 插件中。\n        const oldHandler = handler;\n        handler = function () {\n            return oldHandler.apply(this, arguments); // this 指向 Element\n        };\n        handler.oldHandler = oldHandler;\n        const handlers = this.__handlers[type];\n        if (isArray(handlers)) {\n            handlers.push(handler);\n        }\n        else {\n            this.__handlers[type] = [handler];\n        }\n    }\n    removeEventListener(type, handler) {\n        type = type.toLowerCase();\n        if (type === 'regionchange') {\n            // map 组件的 regionchange 事件非常特殊，详情：https://github.com/NervJS/taro/issues/5766\n            this.removeEventListener('begin', handler);\n            this.removeEventListener('end', handler);\n            return;\n        }\n        if (!handler) {\n            return;\n        }\n        const handlers = this.__handlers[type];\n        if (!isArray(handlers)) {\n            return;\n        }\n        const index = handlers.findIndex(item => {\n            if (item === handler || item.oldHandler === handler)\n                return true;\n        });\n        process.env.NODE_ENV !== 'production' && warn(index === -1, `事件: '${type}' 没有注册在 DOM 中，因此不会被移除。`);\n        handlers.splice(index, 1);\n    }\n    isAnyEventBinded() {\n        const handlers = this.__handlers;\n        const isAnyEventBinded = Object.keys(handlers).find(key => handlers[key].length);\n        return Boolean(isAnyEventBinded);\n    }\n}\n\nconst CHILDNODES = \"cn\" /* Shortcuts.Childnodes */;\nconst nodeId = incrementId();\nclass TaroNode extends TaroEventTarget {\n    constructor() {\n        super();\n        this.parentNode = null;\n        this.childNodes = [];\n        this.hydrate = (node) => () => hydrate(node);\n        this.uid = '_' + nodeId(); // dom 节点 id，开发者可修改\n        this.sid = this.uid; // dom 节点全局唯一 id，不可被修改\n        eventSource.set(this.sid, this);\n    }\n    updateChildNodes(isClean) {\n        const cleanChildNodes = () => [];\n        const rerenderChildNodes = () => {\n            const childNodes = this.childNodes.filter(node => !isComment(node));\n            return childNodes.map(hydrate);\n        };\n        this.enqueueUpdate({\n            path: `${this._path}.${CHILDNODES}`,\n            value: isClean ? cleanChildNodes : rerenderChildNodes\n        });\n    }\n    updateSingleChild(index) {\n        this.childNodes.forEach((child, childIndex) => {\n            if (isComment(child))\n                return;\n            if (index && childIndex < index)\n                return;\n            this.enqueueUpdate({\n                path: child._path,\n                value: this.hydrate(child)\n            });\n        });\n    }\n    get _root() {\n        var _a;\n        return ((_a = this.parentNode) === null || _a === void 0 ? void 0 : _a._root) || null;\n    }\n    findIndex(refChild) {\n        const index = this.childNodes.indexOf(refChild);\n        ensure(index !== -1, 'The node to be replaced is not a child of this node.');\n        return index;\n    }\n    get _path() {\n        const parentNode = this.parentNode;\n        if (parentNode) {\n            // 计算路径时，先过滤掉 comment 节点\n            const list = parentNode.childNodes.filter(node => !isComment(node));\n            const indexOfNode = list.indexOf(this);\n            const index = hooks.call('getPathIndex', indexOfNode);\n            return `${parentNode._path}.${CHILDNODES}.${index}`;\n        }\n        return '';\n    }\n    get nextSibling() {\n        const parentNode = this.parentNode;\n        return (parentNode === null || parentNode === void 0 ? void 0 : parentNode.childNodes[parentNode.findIndex(this) + 1]) || null;\n    }\n    get previousSibling() {\n        const parentNode = this.parentNode;\n        return (parentNode === null || parentNode === void 0 ? void 0 : parentNode.childNodes[parentNode.findIndex(this) - 1]) || null;\n    }\n    get parentElement() {\n        const parentNode = this.parentNode;\n        if ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.nodeType) === 1 /* NodeType.ELEMENT_NODE */) {\n            return parentNode;\n        }\n        return null;\n    }\n    get firstChild() {\n        return this.childNodes[0] || null;\n    }\n    get lastChild() {\n        const childNodes = this.childNodes;\n        return childNodes[childNodes.length - 1] || null;\n    }\n    /**\n     * @textContent 目前只能置空子元素\n     * @TODO 等待完整 innerHTML 实现\n     */\n    // eslint-disable-next-line accessor-pairs\n    set textContent(text) {\n        const removedNodes = this.childNodes.slice();\n        const addedNodes = [];\n        // Handle old children' data structure & ref\n        while (this.firstChild) {\n            this.removeChild(this.firstChild, { doUpdate: false });\n        }\n        if (text === '') {\n            this.updateChildNodes(true);\n        }\n        else {\n            const newText = env.document.createTextNode(text);\n            addedNodes.push(newText);\n            this.appendChild(newText);\n            this.updateChildNodes();\n        }\n        // @Todo: appendChild 会多触发一次\n        MutationObserver.record({\n            type: \"childList\" /* MutationRecordType.CHILD_LIST */,\n            target: this,\n            removedNodes,\n            addedNodes\n        });\n    }\n    /**\n     * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/insertBefore\n     * @scenario\n     * [A,B,C]\n     *   1. insert D before C, D has no parent\n     *   2. insert D before C, D has the same parent of C\n     *   3. insert D before C, D has the different parent of C\n     */\n    insertBefore(newChild, refChild, isReplace) {\n        if (newChild.nodeName === DOCUMENT_FRAGMENT) {\n            newChild.childNodes.reduceRight((previousValue, currentValue) => {\n                this.insertBefore(currentValue, previousValue);\n                return currentValue;\n            }, refChild);\n            return newChild;\n        }\n        // Parent release newChild\n        //   - cleanRef: false (No need to clean eventSource, because newChild is about to be inserted)\n        //   - update: true (Need to update parent.childNodes, because parent.childNodes is reordered)\n        newChild.remove({ cleanRef: false });\n        let index = 0;\n        // Data structure\n        newChild.parentNode = this;\n        if (refChild) {\n            // insertBefore & replaceChild\n            index = this.findIndex(refChild);\n            this.childNodes.splice(index, 0, newChild);\n        }\n        else {\n            // appendChild\n            this.childNodes.push(newChild);\n        }\n        const childNodesLength = this.childNodes.length;\n        // Serialization\n        if (this._root) {\n            if (!refChild) {\n                // appendChild\n                const isOnlyChild = childNodesLength === 1;\n                if (isOnlyChild) {\n                    this.updateChildNodes();\n                }\n                else {\n                    this.enqueueUpdate({\n                        path: newChild._path,\n                        value: this.hydrate(newChild)\n                    });\n                }\n            }\n            else if (isReplace) {\n                // replaceChild\n                this.enqueueUpdate({\n                    path: newChild._path,\n                    value: this.hydrate(newChild)\n                });\n            }\n            else {\n                // insertBefore 有两种更新模式\n                // 比方说有 A B C 三个节点，现在要在 C 前插入 D\n                // 1. 插入 D，然后更新整个父节点的 childNodes 数组\n                // setData({ cn: [A, B, D, C] })\n                // 2. 插入 D，然后更新 D 以及 D 之后每个节点的数据\n                // setData ({\n                //   cn.[2]: D,\n                //   cn.[3]: C,\n                // })\n                // 由于微信解析 ’cn.[2]‘ 这些路径的时候也需要消耗时间，\n                // 所以根据 insertBefore 插入的位置来做不同的处理\n                const mark = childNodesLength * 2 / 3;\n                if (mark > index) {\n                    // 如果 insertBefore 的位置在 childNodes 的 2/3 前，则为了避免解析路径消耗过多的时间，采用第一种方式\n                    this.updateChildNodes();\n                }\n                else {\n                    // 如果 insertBefore 的位置在 childNodes 的 2/3 之后，则采用第二种方式，避免 childNodes 的全量更新\n                    this.updateSingleChild(index);\n                }\n            }\n        }\n        MutationObserver.record({\n            type: \"childList\" /* MutationRecordType.CHILD_LIST */,\n            target: this,\n            addedNodes: [newChild],\n            removedNodes: isReplace\n                ? [refChild] /** replaceChild */\n                : [],\n            nextSibling: isReplace\n                ? refChild.nextSibling /** replaceChild */\n                : (refChild || null),\n            previousSibling: newChild.previousSibling\n        });\n        return newChild;\n    }\n    /**\n     * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/appendChild\n     * @scenario\n     * [A,B,C]\n     *   1. append C, C has no parent\n     *   2. append C, C has the same parent of B\n     *   3. append C, C has the different parent of B\n     */\n    appendChild(newChild) {\n        return this.insertBefore(newChild);\n    }\n    /**\n     * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/replaceChild\n     * @scenario\n     * [A,B,C]\n     *   1. replace B with C, C has no parent\n     *   2. replace B with C, C has no parent, C has the same parent of B\n     *   3. replace B with C, C has no parent, C has the different parent of B\n     */\n    replaceChild(newChild, oldChild) {\n        if (oldChild.parentNode !== this)\n            return;\n        // Insert the newChild\n        this.insertBefore(newChild, oldChild, true);\n        // Destroy the oldChild\n        //   - cleanRef: true (Need to clean eventSource, because the oldChild was detached from the DOM tree)\n        //   - update: false (No need to update parent.childNodes, because replace will not cause the parent.childNodes being reordered)\n        oldChild.remove({ doUpdate: false });\n        return oldChild;\n    }\n    /**\n     * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/removeChild\n     * @scenario\n     * [A,B,C]\n     *   1. remove A or B\n     *   2. remove C\n     */\n    removeChild(child, options = {}) {\n        const { cleanRef, doUpdate } = options;\n        if (cleanRef !== false && doUpdate !== false) {\n            // appendChild/replaceChild/insertBefore 不应该触发\n            // @Todo: 但其实如果 newChild 的父节点是另一颗子树的节点，应该是要触发的\n            MutationObserver.record({\n                type: \"childList\" /* MutationRecordType.CHILD_LIST */,\n                target: this,\n                removedNodes: [child],\n                nextSibling: child.nextSibling,\n                previousSibling: child.previousSibling\n            });\n        }\n        // Data Structure\n        const index = this.findIndex(child);\n        this.childNodes.splice(index, 1);\n        child.parentNode = null;\n        // Set eventSource\n        if (cleanRef !== false) {\n            eventSource.removeNodeTree(child);\n        }\n        // Serialization\n        if (this._root && doUpdate !== false) {\n            this.updateChildNodes();\n        }\n        return child;\n    }\n    remove(options) {\n        var _a;\n        (_a = this.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(this, options);\n    }\n    hasChildNodes() {\n        return this.childNodes.length > 0;\n    }\n    enqueueUpdate(payload) {\n        var _a;\n        (_a = this._root) === null || _a === void 0 ? void 0 : _a.enqueueUpdate(payload);\n    }\n    get ownerDocument() {\n        return env.document;\n    }\n    static extend(methodName, options) {\n        extend(TaroNode, methodName, options);\n    }\n}\n\n/*\n *\n * https://www.w3.org/Style/CSS/all-properties.en.html\n */\nconst WEBKIT = 'webkit';\nconst styleProperties = [\n    'all',\n    'appearance',\n    'blockOverflow',\n    'blockSize',\n    'bottom',\n    'clear',\n    'contain',\n    'content',\n    'continue',\n    'cursor',\n    'direction',\n    'display',\n    'filter',\n    'float',\n    'gap',\n    'height',\n    'inset',\n    'isolation',\n    'left',\n    'letterSpacing',\n    'lightingColor',\n    'markerSide',\n    'mixBlendMode',\n    'opacity',\n    'order',\n    'position',\n    'quotes',\n    'resize',\n    'right',\n    'rowGap',\n    'tabSize',\n    'tableLayout',\n    'top',\n    'userSelect',\n    'verticalAlign',\n    'visibility',\n    'voiceFamily',\n    'volume',\n    'whiteSpace',\n    'widows',\n    'width',\n    'zIndex',\n    'pointerEvents',\n    'aspectRatio'\n    /** 非常用 style */\n    // 'azimuth',\n    // 'backfaceVisibility',\n    // 'baselineShift',\n    // 'captionSide',\n    // 'chains',\n    // 'dominantBaseline',\n    // 'elevation',\n    // 'emptyCells',\n    // 'forcedColorAdjust',\n    // 'glyphOrientationVertical',\n    // 'hangingPunctuation',\n    // 'hyphenateCharacter',\n    // 'hyphens',\n    // 'imageOrientation',\n    // 'imageResolution',\n    // 'orphans',\n    // 'playDuring',\n    // 'pointerEvents',\n    // 'regionFragment',\n    // 'richness',\n    // 'running',\n    // 'scrollBehavior',\n    // 'speechRate',\n    // 'stress',\n    // 'stringSet',\n    // 'unicodeBidi',\n    // 'willChange',\n    // 'writingMode',\n];\n// 减少文件体积\nfunction combine(prefix, list, excludeSelf) {\n    !excludeSelf && styleProperties.push(prefix);\n    list.forEach(item => {\n        styleProperties.push(prefix + item);\n        if (prefix === WEBKIT) {\n            styleProperties.push('Webkit' + item);\n        }\n    });\n}\nconst color = 'Color';\nconst style = 'Style';\nconst width = 'Width';\nconst image = 'Image';\nconst size = 'Size';\nconst color_style_width = [color, style, width];\nconst fitlength_fitwidth_image = ['FitLength', 'FitWidth', image];\nconst fitlength_fitwidth_image_radius = [...fitlength_fitwidth_image, 'Radius'];\nconst color_style_width_fitlength_fitwidth_image = [...color_style_width, ...fitlength_fitwidth_image];\nconst endRadius_startRadius = ['EndRadius', 'StartRadius'];\nconst bottom_left_right_top = ['Bottom', 'Left', 'Right', 'Top'];\nconst end_start = ['End', 'Start'];\nconst content_items_self = ['Content', 'Items', 'Self'];\nconst blockSize_height_inlineSize_width = ['BlockSize', 'Height', 'InlineSize', width];\nconst after_before = ['After', 'Before'];\ncombine('borderBlock', color_style_width);\ncombine('borderBlockEnd', color_style_width);\ncombine('borderBlockStart', color_style_width);\ncombine('outline', [...color_style_width, 'Offset']);\ncombine('border', [...color_style_width, 'Boundary', 'Break', 'Collapse', 'Radius', 'Spacing']);\ncombine('borderFit', ['Length', width]);\ncombine('borderInline', color_style_width);\ncombine('borderInlineEnd', color_style_width);\ncombine('borderInlineStart', color_style_width);\ncombine('borderLeft', color_style_width_fitlength_fitwidth_image);\ncombine('borderRight', color_style_width_fitlength_fitwidth_image);\ncombine('borderTop', color_style_width_fitlength_fitwidth_image);\ncombine('borderBottom', color_style_width_fitlength_fitwidth_image);\ncombine('textDecoration', [color, style, 'Line']);\ncombine('textEmphasis', [color, style, 'Position']);\ncombine('scrollMargin', bottom_left_right_top);\ncombine('scrollPadding', bottom_left_right_top);\ncombine('padding', bottom_left_right_top);\ncombine('margin', [...bottom_left_right_top, 'Trim']);\ncombine('scrollMarginBlock', end_start);\ncombine('scrollMarginInline', end_start);\ncombine('scrollPaddingBlock', end_start);\ncombine('scrollPaddingInline', end_start);\ncombine('gridColumn', end_start);\ncombine('gridRow', end_start);\ncombine('insetBlock', end_start);\ncombine('insetInline', end_start);\ncombine('marginBlock', end_start);\ncombine('marginInline', end_start);\ncombine('paddingBlock', end_start);\ncombine('paddingInline', end_start);\ncombine('pause', after_before);\ncombine('cue', after_before);\ncombine('mask', ['Clip', 'Composite', image, 'Mode', 'Origin', 'Position', 'Repeat', size, 'Type']);\ncombine('borderImage', ['Outset', 'Repeat', 'Slice', 'Source', 'Transform', width]);\ncombine('maskBorder', ['Mode', 'Outset', 'Repeat', 'Slice', 'Source', width]);\ncombine('font', ['Family', 'FeatureSettings', 'Kerning', 'LanguageOverride', 'MaxSize', 'MinSize', 'OpticalSizing', 'Palette', size, 'SizeAdjust', 'Stretch', style, 'Weight', 'VariationSettings']);\ncombine('transform', ['Box', 'Origin', style]);\ncombine('background', [color, image, 'Attachment', 'BlendMode', 'Clip', 'Origin', 'Position', 'Repeat', size]);\ncombine('listStyle', [image, 'Position', 'Type']);\ncombine('scrollSnap', ['Align', 'Stop', 'Type']);\ncombine('grid', ['Area', 'AutoColumns', 'AutoFlow', 'AutoRows']);\ncombine('gridTemplate', ['Areas', 'Columns', 'Rows']);\ncombine('overflow', ['Block', 'Inline', 'Wrap', 'X', 'Y']);\ncombine('transition', ['Delay', 'Duration', 'Property', 'TimingFunction']);\ncombine('color', ['Adjust', 'InterpolationFilters', 'Scheme']);\ncombine('textAlign', ['All', 'Last']);\ncombine('page', ['BreakAfter', 'BreakBefore', 'BreakInside']);\ncombine('animation', ['Delay', 'Direction', 'Duration', 'FillMode', 'IterationCount', 'Name', 'PlayState', 'TimingFunction']);\ncombine('flex', ['Basis', 'Direction', 'Flow', 'Grow', 'Shrink', 'Wrap']);\ncombine('offset', [...after_before, ...end_start, 'Anchor', 'Distance', 'Path', 'Position', 'Rotate']);\ncombine('perspective', ['Origin']);\ncombine('clip', ['Path', 'Rule']);\ncombine('flow', ['From', 'Into']);\ncombine('align', ['Content', 'Items', 'Self'], true);\ncombine('alignment', ['Adjust', 'Baseline'], true);\ncombine('borderStart', endRadius_startRadius, true);\ncombine('borderEnd', endRadius_startRadius, true);\ncombine('borderCorner', ['Fit', image, 'ImageTransform'], true);\ncombine('borderTopLeft', fitlength_fitwidth_image_radius, true);\ncombine('borderTopRight', fitlength_fitwidth_image_radius, true);\ncombine('borderBottomLeft', fitlength_fitwidth_image_radius, true);\ncombine('borderBottomRight', fitlength_fitwidth_image_radius, true);\ncombine('column', ['s', 'Count', 'Fill', 'Gap', 'Rule', 'RuleColor', 'RuleStyle', 'RuleWidth', 'Span', width], true);\ncombine('break', [...after_before, 'Inside'], true);\ncombine('wrap', [...after_before, 'Flow', 'Inside', 'Through'], true);\ncombine('justify', content_items_self, true);\ncombine('place', content_items_self, true);\ncombine('max', [...blockSize_height_inlineSize_width, 'Lines'], true);\ncombine('min', blockSize_height_inlineSize_width, true);\ncombine('line', ['Break', 'Clamp', 'Grid', 'Height', 'Padding', 'Snap'], true);\ncombine('inline', ['BoxAlign', size, 'Sizing'], true);\ncombine('text', ['CombineUpright', 'GroupAlign', 'Height', 'Indent', 'Justify', 'Orientation', 'Overflow', 'Shadow', 'SpaceCollapse', 'SpaceTrim', 'Spacing', 'Transform', 'UnderlinePosition', 'Wrap'], true);\ncombine('shape', ['ImageThreshold', 'Inside', 'Margin', 'Outside'], true);\ncombine('word', ['Break', 'Spacing', 'Wrap'], true);\ncombine('object', ['Fit', 'Position'], true);\ncombine('box', ['DecorationBreak', 'Shadow', 'Sizing', 'Snap'], true);\ncombine(WEBKIT, ['LineClamp', 'BoxOrient', 'TextFillColor', 'TextStroke', 'TextStrokeColor', 'TextStrokeWidth'], true);\n\nfunction recordCss(obj) {\n    MutationObserver.record({\n        type: \"attributes\" /* MutationRecordType.ATTRIBUTES */,\n        target: obj._element,\n        attributeName: 'style',\n        oldValue: obj.cssText\n    });\n}\nfunction enqueueUpdate(obj) {\n    const element = obj._element;\n    if (element._root) {\n        element.enqueueUpdate({\n            path: `${element._path}.${\"st\" /* Shortcuts.Style */}`,\n            value: obj.cssText\n        });\n    }\n}\nfunction setStyle(newVal, styleKey) {\n    process.env.NODE_ENV !== 'production' && warn(isString(newVal) && newVal.length > PROPERTY_THRESHOLD, `Style 属性 ${styleKey} 的值数据量过大，可能会影响渲染性能，考虑使用 CSS 类或其它方案替代。`);\n    const old = this[styleKey];\n    if (old === newVal)\n        return;\n    !this._pending && recordCss(this);\n    if (isNull(newVal) || isUndefined(newVal) || newVal === '') {\n        this._usedStyleProp.delete(styleKey);\n        delete this._value[styleKey];\n    }\n    else {\n        this._usedStyleProp.add(styleKey);\n        this._value[styleKey] = newVal;\n    }\n    !this._pending && enqueueUpdate(this);\n}\nfunction initStyle(ctor, styleProperties) {\n    const properties = {};\n    for (let i = 0; i < styleProperties.length; i++) {\n        const styleKey = styleProperties[i];\n        if (ctor[styleKey])\n            return;\n        properties[styleKey] = {\n            get() {\n                const val = this._value[styleKey];\n                return isNull(val) || isUndefined(val) ? '' : val;\n            },\n            set(newVal) {\n                setStyle.call(this, newVal, styleKey);\n            }\n        };\n    }\n    Object.defineProperties(ctor.prototype, properties);\n}\nfunction isCssVariable(propertyName) {\n    return /^--/.test(propertyName);\n}\nclass Style {\n    constructor(element) {\n        this._element = element;\n        this._usedStyleProp = new Set();\n        this._value = {};\n    }\n    setCssVariables(styleKey) {\n        this.hasOwnProperty(styleKey) || Object.defineProperty(this, styleKey, {\n            enumerable: true,\n            configurable: true,\n            get: () => {\n                return this._value[styleKey] || '';\n            },\n            set: (newVal) => {\n                setStyle.call(this, newVal, styleKey);\n            }\n        });\n    }\n    get cssText() {\n        if (!this._usedStyleProp.size)\n            return '';\n        const texts = [];\n        this._usedStyleProp.forEach(key => {\n            const val = this[key];\n            if (isNull(val) || isUndefined(val))\n                return;\n            let styleName = isCssVariable(key) ? key : toDashed(key);\n            if (styleName.indexOf('webkit') === 0 || styleName.indexOf('Webkit') === 0) {\n                styleName = `-${styleName}`;\n            }\n            texts.push(`${styleName}: ${val};`);\n        });\n        return texts.join(' ');\n    }\n    set cssText(str) {\n        this._pending = true;\n        recordCss(this);\n        this._usedStyleProp.forEach(prop => {\n            this.removeProperty(prop);\n        });\n        if (str === '' || isUndefined(str) || isNull(str)) {\n            this._pending = false;\n            enqueueUpdate(this);\n            return;\n        }\n        const rules = str.split(';');\n        for (let i = 0; i < rules.length; i++) {\n            const rule = rules[i].trim();\n            if (rule === '') {\n                continue;\n            }\n            // 可能存在 'background: url(http:x/y/z)' 的情况\n            const [propName, ...valList] = rule.split(':');\n            const val = valList.join(':');\n            if (isUndefined(val)) {\n                continue;\n            }\n            this.setProperty(propName.trim(), val.trim());\n        }\n        this._pending = false;\n        enqueueUpdate(this);\n    }\n    setProperty(propertyName, value) {\n        if (propertyName[0] === '-') {\n            // 支持 webkit 属性或 css 变量\n            this.setCssVariables(propertyName);\n        }\n        else {\n            propertyName = toCamelCase(propertyName);\n        }\n        if (isNull(value) || isUndefined(value)) {\n            this.removeProperty(propertyName);\n        }\n        else {\n            this[propertyName] = value;\n        }\n    }\n    removeProperty(propertyName) {\n        propertyName = toCamelCase(propertyName);\n        if (!this._usedStyleProp.has(propertyName)) {\n            return '';\n        }\n        const value = this[propertyName];\n        this[propertyName] = undefined;\n        return value;\n    }\n    getPropertyValue(propertyName) {\n        propertyName = toCamelCase(propertyName);\n        const value = this[propertyName];\n        if (!value) {\n            return '';\n        }\n        return value;\n    }\n}\ninitStyle(Style, styleProperties);\nhooks.tap('injectNewStyleProperties', (newStyleProperties) => {\n    if (isArray(newStyleProperties)) {\n        initStyle(Style, newStyleProperties);\n    }\n    else {\n        if (typeof newStyleProperties !== 'string')\n            return;\n        initStyle(Style, [newStyleProperties]);\n    }\n});\n\nfunction returnTrue() {\n    return true;\n}\nfunction treeToArray(root, predict) {\n    const array = [];\n    const filter = predict !== null && predict !== void 0 ? predict : returnTrue;\n    let object = root;\n    while (object) {\n        if (object.nodeType === 1 /* NodeType.ELEMENT_NODE */ && filter(object)) {\n            array.push(object);\n        }\n        object = following(object, root);\n    }\n    return array;\n}\nfunction following(el, root) {\n    const firstChild = el.firstChild;\n    const isElmentTypeValid = el.nodeType === 1 /* NodeType.ELEMENT_NODE */ || el.nodeType === 9 /* NodeType.DOCUMENT_NODE */;\n    // 如果当前 el 不是 element 或 document 元素，则可以直接不递归他的子元素了\n    if (firstChild && isElmentTypeValid) {\n        return firstChild;\n    }\n    let current = el;\n    do {\n        if (current === root) {\n            return null;\n        }\n        const nextSibling = current.nextSibling;\n        if (nextSibling) {\n            return nextSibling;\n        }\n        current = current.parentElement;\n    } while (current);\n    return null;\n}\n\nclass TaroElement extends TaroNode {\n    constructor() {\n        super();\n        this.props = {};\n        this.dataset = EMPTY_OBJ;\n        this.nodeType = 1 /* NodeType.ELEMENT_NODE */;\n        this.style = new Style(this);\n        hooks.call('patchElement', this);\n    }\n    _stopPropagation(event) {\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        let target = this;\n        // eslint-disable-next-line no-cond-assign\n        while ((target = target.parentNode)) {\n            const listeners = target.__handlers[event.type];\n            if (!isArray(listeners)) {\n                continue;\n            }\n            for (let i = listeners.length; i--;) {\n                const l = listeners[i];\n                l._stop = true;\n            }\n        }\n    }\n    get id() {\n        return this.getAttribute(ID);\n    }\n    set id(val) {\n        this.setAttribute(ID, val);\n    }\n    get className() {\n        return this.getAttribute(CLASS) || '';\n    }\n    set className(val) {\n        this.setAttribute(CLASS, val);\n    }\n    get cssText() {\n        return this.getAttribute(STYLE) || '';\n    }\n    get classList() {\n        return new ClassList(this.className, this);\n    }\n    get children() {\n        return this.childNodes.filter(isElement);\n    }\n    get attributes() {\n        const props = this.props;\n        const propKeys = Object.keys(props);\n        const style = this.style.cssText;\n        const attrs = propKeys.map(key => ({ name: key, value: props[key] }));\n        return attrs.concat(style ? { name: STYLE, value: style } : []);\n    }\n    get textContent() {\n        let text = '';\n        const childNodes = this.childNodes;\n        for (let i = 0; i < childNodes.length; i++) {\n            text += childNodes[i].textContent;\n        }\n        return text;\n    }\n    set textContent(text) {\n        super.textContent = text;\n    }\n    hasAttribute(qualifiedName) {\n        return !isUndefined(this.props[qualifiedName]);\n    }\n    hasAttributes() {\n        return this.attributes.length > 0;\n    }\n    get focus() {\n        return function () {\n            this.setAttribute(FOCUS, true);\n        };\n    }\n    // 兼容 Vue3，详情请见：https://github.com/NervJS/taro/issues/10579\n    set focus(value) {\n        this.setAttribute(FOCUS, value);\n    }\n    blur() {\n        this.setAttribute(FOCUS, false);\n    }\n    setAttribute(qualifiedName, value) {\n        process.env.NODE_ENV !== 'production' && warn(isString(value) && value.length > PROPERTY_THRESHOLD, `元素 ${this.nodeName} 的 ${qualifiedName} 属性值数据量过大，可能会影响渲染性能。考虑降低图片转为 base64 的阈值或在 CSS 中使用 base64。`);\n        const isPureView = this.nodeName === VIEW && !isHasExtractProp(this) && !this.isAnyEventBinded();\n        if (qualifiedName !== STYLE) {\n            MutationObserver.record({\n                target: this,\n                type: \"attributes\" /* MutationRecordType.ATTRIBUTES */,\n                attributeName: qualifiedName,\n                oldValue: this.getAttribute(qualifiedName)\n            });\n        }\n        switch (qualifiedName) {\n            case STYLE:\n                this.style.cssText = value;\n                break;\n            case ID:\n                if (this.uid !== this.sid) {\n                    // eventSource[sid] 永远保留，直到组件卸载\n                    // eventSource[uid] 可变\n                    eventSource.delete(this.uid);\n                }\n                value = String(value);\n                this.props[qualifiedName] = this.uid = value;\n                eventSource.set(value, this);\n                break;\n            default:\n                this.props[qualifiedName] = value;\n                if (qualifiedName.startsWith('data-')) {\n                    if (this.dataset === EMPTY_OBJ) {\n                        this.dataset = Object.create(null);\n                    }\n                    this.dataset[toCamelCase(qualifiedName.replace(/^data-/, ''))] = value;\n                }\n                break;\n        }\n        // Serialization\n        if (!this._root)\n            return;\n        const componentsAlias = getComponentsAlias();\n        const _alias = componentsAlias[this.nodeName];\n        const viewAlias = componentsAlias[VIEW]._num;\n        const staticViewAlias = componentsAlias[STATIC_VIEW]._num;\n        const catchViewAlias = componentsAlias[CATCH_VIEW]._num;\n        const _path = this._path;\n        qualifiedName = shortcutAttr(qualifiedName);\n        const qualifiedNameInCamelCase = toCamelCase(qualifiedName);\n        const payload = {\n            path: `${_path}.${qualifiedNameInCamelCase}`,\n            value: isFunction(value) ? () => value : value\n        };\n        hooks.call('modifySetAttrPayload', this, qualifiedName, payload, componentsAlias);\n        if (_alias) {\n            const qualifiedNameAlias = _alias[qualifiedNameInCamelCase] || qualifiedName;\n            payload.path = `${_path}.${toCamelCase(qualifiedNameAlias)}`;\n        }\n        this.enqueueUpdate(payload);\n        if (this.nodeName === VIEW) {\n            if (qualifiedNameInCamelCase === CATCHMOVE) {\n                // catchMove = true: catch-view\n                // catchMove = false: view or static-view\n                this.enqueueUpdate({\n                    path: `${_path}.${\"nn\" /* Shortcuts.NodeName */}`,\n                    value: value ? catchViewAlias : (this.isAnyEventBinded() ? viewAlias : staticViewAlias)\n                });\n            }\n            else if (isPureView && isHasExtractProp(this)) {\n                // pure-view => static-view\n                this.enqueueUpdate({\n                    path: `${_path}.${\"nn\" /* Shortcuts.NodeName */}`,\n                    value: staticViewAlias\n                });\n            }\n        }\n    }\n    removeAttribute(qualifiedName) {\n        const isStaticView = this.nodeName === VIEW && isHasExtractProp(this) && !this.isAnyEventBinded();\n        MutationObserver.record({\n            target: this,\n            type: \"attributes\" /* MutationRecordType.ATTRIBUTES */,\n            attributeName: qualifiedName,\n            oldValue: this.getAttribute(qualifiedName)\n        });\n        if (qualifiedName === STYLE) {\n            this.style.cssText = '';\n        }\n        else {\n            const isInterrupt = hooks.call('onRemoveAttribute', this, qualifiedName);\n            if (isInterrupt) {\n                return;\n            }\n            if (!this.props.hasOwnProperty(qualifiedName)) {\n                return;\n            }\n            delete this.props[qualifiedName];\n        }\n        // Serialization\n        if (!this._root)\n            return;\n        const componentsAlias = getComponentsAlias();\n        const _alias = componentsAlias[this.nodeName];\n        const viewAlias = componentsAlias[VIEW]._num;\n        const staticViewAlias = componentsAlias[STATIC_VIEW]._num;\n        const pureViewAlias = componentsAlias[PURE_VIEW]._num;\n        const _path = this._path;\n        qualifiedName = shortcutAttr(qualifiedName);\n        const qualifiedNameInCamelCase = toCamelCase(qualifiedName);\n        const payload = {\n            path: `${_path}.${qualifiedNameInCamelCase}`,\n            value: ''\n        };\n        hooks.call('modifyRmAttrPayload', this, qualifiedName, payload, componentsAlias);\n        if (_alias) {\n            const qualifiedNameAlias = _alias[qualifiedNameInCamelCase] || qualifiedName;\n            payload.path = `${_path}.${toCamelCase(qualifiedNameAlias)}`;\n        }\n        this.enqueueUpdate(payload);\n        if (this.nodeName === VIEW) {\n            if (qualifiedNameInCamelCase === CATCHMOVE) {\n                // catch-view => view or static-view or pure-view\n                this.enqueueUpdate({\n                    path: `${_path}.${\"nn\" /* Shortcuts.NodeName */}`,\n                    value: this.isAnyEventBinded() ? viewAlias : (isHasExtractProp(this) ? staticViewAlias : pureViewAlias)\n                });\n            }\n            else if (isStaticView && !isHasExtractProp(this)) {\n                // static-view => pure-view\n                this.enqueueUpdate({\n                    path: `${_path}.${\"nn\" /* Shortcuts.NodeName */}`,\n                    value: pureViewAlias\n                });\n            }\n        }\n    }\n    getAttribute(qualifiedName) {\n        const attr = qualifiedName === STYLE ? this.style.cssText : this.props[qualifiedName];\n        return attr !== null && attr !== void 0 ? attr : '';\n    }\n    getElementsByTagName(tagName) {\n        return treeToArray(this, (el) => {\n            return el.nodeName === tagName || (tagName === '*' && this !== el);\n        });\n    }\n    getElementsByClassName(className) {\n        const classNames = className.trim().split(/\\s+/);\n        return treeToArray(this, (el) => {\n            const classList = el.classList;\n            return classNames.every(c => classList.contains(c));\n        });\n    }\n    dispatchEvent(event) {\n        const cancelable = event.cancelable;\n        const listeners = this.__handlers[event.type];\n        if (!isArray(listeners)) {\n            return false;\n        }\n        for (let i = listeners.length; i--;) {\n            const listener = listeners[i];\n            let result;\n            if (listener._stop) {\n                listener._stop = false;\n            }\n            else {\n                hooks.call('modifyDispatchEvent', event, this);\n                result = listener.call(this, event);\n            }\n            if ((result === false || event._end) && cancelable) {\n                event.defaultPrevented = true;\n            }\n            if (!isUndefined(result) && event.mpEvent) {\n                event.mpEvent[EVENT_CALLBACK_RESULT] = result;\n            }\n            if (event._end && event._stop) {\n                break;\n            }\n        }\n        if (event._stop) {\n            this._stopPropagation(event);\n        }\n        else {\n            event._stop = true;\n        }\n        return listeners != null;\n    }\n    addEventListener(type, handler, options) {\n        const name = this.nodeName;\n        const SPECIAL_NODES = hooks.call('getSpecialNodes');\n        let sideEffect = true;\n        if (isObject(options) && options.sideEffect === false) {\n            sideEffect = false;\n            delete options.sideEffect;\n        }\n        hooks.call('modifyAddEventListener', this, sideEffect, getComponentsAlias);\n        if (sideEffect !== false && !this.isAnyEventBinded() && SPECIAL_NODES.indexOf(name) > -1) {\n            const componentsAlias = getComponentsAlias();\n            const alias = componentsAlias[name]._num;\n            this.enqueueUpdate({\n                path: `${this._path}.${\"nn\" /* Shortcuts.NodeName */}`,\n                value: alias\n            });\n        }\n        super.addEventListener(type, handler, options);\n    }\n    removeEventListener(type, handler, sideEffect = true) {\n        super.removeEventListener(type, handler);\n        const name = this.nodeName;\n        const SPECIAL_NODES = hooks.call('getSpecialNodes');\n        hooks.call('modifyRemoveEventListener', this, sideEffect, getComponentsAlias);\n        if (sideEffect !== false && !this.isAnyEventBinded() && SPECIAL_NODES.indexOf(name) > -1) {\n            const componentsAlias = getComponentsAlias();\n            const value = isHasExtractProp(this) ? `static-${name}` : `pure-${name}`;\n            const valueAlias = componentsAlias[value]._num;\n            this.enqueueUpdate({\n                path: `${this._path}.${\"nn\" /* Shortcuts.NodeName */}`,\n                value: valueAlias\n            });\n        }\n    }\n    static extend(methodName, options) {\n        extend(TaroElement, methodName, options);\n    }\n}\n\nconst options = {\n    prerender: true,\n    debug: false\n};\n\nfunction initPosition() {\n    return {\n        index: 0,\n        column: 0,\n        line: 0\n    };\n}\nfunction feedPosition(position, str, len) {\n    const start = position.index;\n    const end = position.index = start + len;\n    for (let i = start; i < end; i++) {\n        const char = str.charAt(i);\n        if (char === '\\n') {\n            position.line++;\n            position.column = 0;\n        }\n        else {\n            position.column++;\n        }\n    }\n}\nfunction jumpPosition(position, str, end) {\n    const len = end - position.index;\n    return feedPosition(position, str, len);\n}\nfunction copyPosition(position) {\n    return {\n        index: position.index,\n        line: position.line,\n        column: position.column\n    };\n}\nconst whitespace = /\\s/;\nfunction isWhitespaceChar(char) {\n    return whitespace.test(char);\n}\nconst equalSign = /=/;\nfunction isEqualSignChar(char) {\n    return equalSign.test(char);\n}\nfunction shouldBeIgnore(tagName) {\n    const name = tagName.toLowerCase();\n    if (options.html.skipElements.has(name)) {\n        return true;\n    }\n    return false;\n}\nconst alphanumeric = /[A-Za-z0-9]/;\nfunction findTextEnd(str, index) {\n    while (true) {\n        const textEnd = str.indexOf('<', index);\n        if (textEnd === -1) {\n            return textEnd;\n        }\n        const char = str.charAt(textEnd + 1);\n        if (char === '/' || char === '!' || alphanumeric.test(char)) {\n            return textEnd;\n        }\n        index = textEnd + 1;\n    }\n}\nfunction isWordEnd(cursor, wordBegin, html) {\n    if (!isWhitespaceChar(html.charAt(cursor)))\n        return false;\n    const len = html.length;\n    // backwrad\n    for (let i = cursor - 1; i > wordBegin; i--) {\n        const char = html.charAt(i);\n        if (!isWhitespaceChar(char)) {\n            if (isEqualSignChar(char))\n                return false;\n            break;\n        }\n    }\n    // forward\n    for (let i = cursor + 1; i < len; i++) {\n        const char = html.charAt(i);\n        if (!isWhitespaceChar(char)) {\n            if (isEqualSignChar(char))\n                return false;\n            return true;\n        }\n    }\n}\nclass Scaner {\n    constructor(html) {\n        this.tokens = [];\n        this.position = initPosition();\n        this.html = html;\n    }\n    scan() {\n        const { html, position } = this;\n        const len = html.length;\n        while (position.index < len) {\n            const start = position.index;\n            this.scanText();\n            if (position.index === start) {\n                const isComment = html.startsWith('!--', start + 1);\n                if (isComment) {\n                    this.scanComment();\n                }\n                else {\n                    const tagName = this.scanTag();\n                    if (shouldBeIgnore(tagName)) {\n                        this.scanSkipTag(tagName);\n                    }\n                }\n            }\n        }\n        return this.tokens;\n    }\n    scanText() {\n        const type = 'text';\n        const { html, position } = this;\n        let textEnd = findTextEnd(html, position.index);\n        if (textEnd === position.index) {\n            return;\n        }\n        if (textEnd === -1) {\n            textEnd = html.length;\n        }\n        const start = copyPosition(position);\n        const content = html.slice(position.index, textEnd);\n        jumpPosition(position, html, textEnd);\n        const end = copyPosition(position);\n        this.tokens.push({ type, content, position: { start, end } });\n    }\n    scanComment() {\n        const type = 'comment';\n        const { html, position } = this;\n        const start = copyPosition(position);\n        feedPosition(position, html, 4); // \"<!--\".length\n        let contentEnd = html.indexOf('-->', position.index);\n        let commentEnd = contentEnd + 3; // \"-->\".length\n        if (contentEnd === -1) {\n            contentEnd = commentEnd = html.length;\n        }\n        const content = html.slice(position.index, contentEnd);\n        jumpPosition(position, html, commentEnd);\n        this.tokens.push({\n            type,\n            content,\n            position: {\n                start,\n                end: copyPosition(position)\n            }\n        });\n    }\n    scanTag() {\n        this.scanTagStart();\n        const tagName = this.scanTagName();\n        this.scanAttrs();\n        this.scanTagEnd();\n        return tagName;\n    }\n    scanTagStart() {\n        const type = 'tag-start';\n        const { html, position } = this;\n        const secondChar = html.charAt(position.index + 1);\n        const close = secondChar === '/';\n        const start = copyPosition(position);\n        feedPosition(position, html, close ? 2 : 1);\n        this.tokens.push({ type, close, position: { start } });\n    }\n    scanTagEnd() {\n        const type = 'tag-end';\n        const { html, position } = this;\n        const firstChar = html.charAt(position.index);\n        const close = firstChar === '/';\n        feedPosition(position, html, close ? 2 : 1);\n        const end = copyPosition(position);\n        this.tokens.push({ type, close, position: { end } });\n    }\n    scanTagName() {\n        const type = 'tag';\n        const { html, position } = this;\n        const len = html.length;\n        let start = position.index;\n        while (start < len) {\n            const char = html.charAt(start);\n            const isTagChar = !(isWhitespaceChar(char) || char === '/' || char === '>');\n            if (isTagChar)\n                break;\n            start++;\n        }\n        let end = start + 1;\n        while (end < len) {\n            const char = html.charAt(end);\n            const isTagChar = !(isWhitespaceChar(char) || char === '/' || char === '>');\n            if (!isTagChar)\n                break;\n            end++;\n        }\n        jumpPosition(position, html, end);\n        const tagName = html.slice(start, end);\n        this.tokens.push({\n            type,\n            content: tagName\n        });\n        return tagName;\n    }\n    scanAttrs() {\n        const { html, position, tokens } = this;\n        let cursor = position.index;\n        let quote = null; // null, single-, or double-quote\n        let wordBegin = cursor; // index of word start\n        const words = []; // \"key\", \"key=value\", \"key='value'\", etc\n        const len = html.length;\n        while (cursor < len) {\n            const char = html.charAt(cursor);\n            if (quote) {\n                const isQuoteEnd = char === quote;\n                if (isQuoteEnd) {\n                    quote = null;\n                }\n                cursor++;\n                continue;\n            }\n            const isTagEnd = char === '/' || char === '>';\n            if (isTagEnd) {\n                if (cursor !== wordBegin) {\n                    words.push(html.slice(wordBegin, cursor));\n                }\n                break;\n            }\n            if (isWordEnd(cursor, wordBegin, html)) {\n                if (cursor !== wordBegin) {\n                    words.push(html.slice(wordBegin, cursor));\n                }\n                wordBegin = cursor + 1;\n                cursor++;\n                continue;\n            }\n            const isQuoteStart = char === '\\'' || char === '\"';\n            if (isQuoteStart) {\n                quote = char;\n                cursor++;\n                continue;\n            }\n            cursor++;\n        }\n        jumpPosition(position, html, cursor);\n        const wLen = words.length;\n        const type = 'attribute';\n        for (let i = 0; i < wLen; i++) {\n            const word = words[i];\n            const isNotPair = word.includes('=');\n            if (isNotPair) {\n                const secondWord = words[i + 1];\n                if (secondWord && secondWord.startsWith('=')) {\n                    if (secondWord.length > 1) {\n                        const newWord = word + secondWord;\n                        tokens.push({ type, content: newWord });\n                        i += 1;\n                        continue;\n                    }\n                    const thirdWord = words[i + 2];\n                    i += 1;\n                    if (thirdWord) {\n                        const newWord = word + '=' + thirdWord;\n                        tokens.push({ type, content: newWord });\n                        i += 1;\n                        continue;\n                    }\n                }\n            }\n            if (word.endsWith('=')) {\n                const secondWord = words[i + 1];\n                if (secondWord && !secondWord.includes('=')) {\n                    const newWord = word + secondWord;\n                    tokens.push({ type, content: newWord });\n                    i += 1;\n                    continue;\n                }\n                const newWord = word.slice(0, -1);\n                tokens.push({ type, content: newWord });\n                continue;\n            }\n            tokens.push({ type, content: word });\n        }\n    }\n    scanSkipTag(tagName) {\n        const { html, position } = this;\n        const safeTagName = tagName.toLowerCase();\n        const len = html.length;\n        while (position.index < len) {\n            const nextTag = html.indexOf('</', position.index);\n            if (nextTag === -1) {\n                this.scanText();\n                break;\n            }\n            jumpPosition(position, html, nextTag);\n            const name = this.scanTag();\n            if (safeTagName === name.toLowerCase()) {\n                break;\n            }\n        }\n    }\n}\n\nfunction unquote(str) {\n    const car = str.charAt(0);\n    const end = str.length - 1;\n    const isQuoteStart = car === '\"' || car === \"'\";\n    if (isQuoteStart && car === str.charAt(end)) {\n        return str.slice(1, end);\n    }\n    return str;\n}\n\nconst LEFT_BRACKET = '{';\nconst RIGHT_BRACKET = '}';\nconst CLASS_SELECTOR = '.';\nconst ID_SELECTOR = '#';\nconst CHILD_COMBINATOR = '>';\nconst GENERAL_SIBLING_COMBINATOR = '~';\nconst ADJACENT_SIBLING_COMBINATOR = '+';\nclass StyleTagParser {\n    constructor() {\n        this.styles = [];\n    }\n    extractStyle(src) {\n        const REG_STYLE = /<style\\s?[^>]*>((.|\\n|\\s)+?)<\\/style>/g;\n        let html = src;\n        // let html = src.replace(/\\n/g, '')\n        html = html.replace(REG_STYLE, (_, $1) => {\n            const style = $1.trim();\n            this.stringToSelector(style);\n            return '';\n        });\n        return html.trim();\n    }\n    stringToSelector(style) {\n        let lb = style.indexOf(LEFT_BRACKET);\n        while (lb > -1) {\n            const rb = style.indexOf(RIGHT_BRACKET);\n            const selectors = style.slice(0, lb).trim();\n            let content = style.slice(lb + 1, rb);\n            content = content.replace(/:(.*);/g, function (_, $1) {\n                const t = $1.trim().replace(/ +/g, '+++');\n                return `:${t};`;\n            });\n            content = content.replace(/ /g, '');\n            content = content.replace(/\\+\\+\\+/g, ' ');\n            if (!(/;$/.test(content))) {\n                content += ';';\n            }\n            selectors.split(',').forEach(src => {\n                const selectorList = this.parseSelector(src);\n                this.styles.push({\n                    content,\n                    selectorList\n                });\n            });\n            style = style.slice(rb + 1);\n            lb = style.indexOf(LEFT_BRACKET);\n        }\n        // console.log('res this.styles: ', this.styles)\n    }\n    parseSelector(src) {\n        const list = src\n            .trim()\n            .replace(/ *([>~+]) */g, ' $1')\n            .replace(/ +/g, ' ')\n            .replace(/\\[\\s*([^[\\]=\\s]+)\\s*=\\s*([^[\\]=\\s]+)\\s*\\]/g, '[$1=$2]')\n            .split(' ');\n        const selectors = list.map(item => {\n            const firstChar = item.charAt(0);\n            const selector = {\n                isChild: firstChar === CHILD_COMBINATOR,\n                isGeneralSibling: firstChar === GENERAL_SIBLING_COMBINATOR,\n                isAdjacentSibling: firstChar === ADJACENT_SIBLING_COMBINATOR,\n                tag: null,\n                id: null,\n                class: [],\n                attrs: []\n            };\n            item = item.replace(/^[>~+]/, '');\n            // 属性选择器\n            item = item.replace(/\\[(.+?)\\]/g, function (_, $1) {\n                const [key, value] = $1.split('=');\n                const all = $1.indexOf('=') === -1;\n                const attr = {\n                    all,\n                    key,\n                    value: all ? null : value\n                };\n                selector.attrs.push(attr);\n                return '';\n            });\n            item = item.replace(/([.#][A-Za-z0-9-_]+)/g, function (_, $1) {\n                if ($1[0] === ID_SELECTOR) {\n                    // id 选择器\n                    selector.id = $1.substr(1);\n                }\n                else if ($1[0] === CLASS_SELECTOR) {\n                    // class 选择器\n                    selector.class.push($1.substr(1));\n                }\n                return '';\n            });\n            // 标签选择器\n            if (item !== '') {\n                selector.tag = item;\n            }\n            return selector;\n        });\n        return selectors;\n    }\n    matchStyle(tagName, el, list) {\n        const res = sortStyles(this.styles).reduce((str, { content, selectorList }, i) => {\n            let idx = list[i];\n            let selector = selectorList[idx];\n            const nextSelector = selectorList[idx + 1];\n            if ((nextSelector === null || nextSelector === void 0 ? void 0 : nextSelector.isGeneralSibling) || (nextSelector === null || nextSelector === void 0 ? void 0 : nextSelector.isAdjacentSibling)) {\n                selector = nextSelector;\n                idx += 1;\n                list[i] += 1;\n            }\n            let isMatch = this.matchCurrent(tagName, el, selector);\n            if (isMatch && selector.isGeneralSibling) {\n                let prev = getPreviousElement(el);\n                while (prev) {\n                    if (prev.h5tagName && this.matchCurrent(prev.h5tagName, prev, selectorList[idx - 1])) {\n                        isMatch = true;\n                        break;\n                    }\n                    prev = getPreviousElement(prev);\n                    isMatch = false;\n                }\n            }\n            if (isMatch && selector.isAdjacentSibling) {\n                const prev = getPreviousElement(el);\n                if (!prev || !prev.h5tagName) {\n                    isMatch = false;\n                }\n                else {\n                    const isSiblingMatch = this.matchCurrent(prev.h5tagName, prev, selectorList[idx - 1]);\n                    if (!isSiblingMatch) {\n                        isMatch = false;\n                    }\n                }\n            }\n            if (isMatch) {\n                if (idx === selectorList.length - 1) {\n                    return str + content;\n                }\n                else if (idx < selectorList.length - 1) {\n                    list[i] += 1;\n                }\n            }\n            else {\n                // 直接子代组合器: >\n                if (selector.isChild && idx > 0) {\n                    list[i] -= 1;\n                    if (this.matchCurrent(tagName, el, selectorList[list[i]])) {\n                        list[i] += 1;\n                    }\n                }\n            }\n            return str;\n        }, '');\n        return res;\n    }\n    matchCurrent(tagName, el, selector) {\n        // 标签选择器\n        if (selector.tag && selector.tag !== tagName)\n            return false;\n        // id 选择器\n        if (selector.id && selector.id !== el.id)\n            return false;\n        // class 选择器\n        if (selector.class.length) {\n            const classList = el.className.split(' ');\n            for (let i = 0; i < selector.class.length; i++) {\n                const cls = selector.class[i];\n                if (classList.indexOf(cls) === -1) {\n                    return false;\n                }\n            }\n        }\n        // 属性选择器\n        if (selector.attrs.length) {\n            for (let i = 0; i < selector.attrs.length; i++) {\n                const { all, key, value } = selector.attrs[i];\n                if (all && !el.hasAttribute(key)) {\n                    return false;\n                }\n                else {\n                    const attr = el.getAttribute(key);\n                    if (attr !== unquote(value || '')) {\n                        return false;\n                    }\n                }\n            }\n        }\n        return true;\n    }\n}\nfunction getPreviousElement(el) {\n    const parent = el.parentElement;\n    if (!parent)\n        return null;\n    const prev = el.previousSibling;\n    if (!prev)\n        return null;\n    if (prev.nodeType === 1 /* NodeType.ELEMENT_NODE */) {\n        return prev;\n    }\n    else {\n        return getPreviousElement(prev);\n    }\n}\n// 根据 css selector 权重排序: 权重大的靠后\n// @WARN 不考虑伪类\n// https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance#specificity_2\nfunction sortStyles(styles) {\n    return styles.sort((s1, s2) => {\n        const hundreds1 = getHundredsWeight(s1.selectorList);\n        const hundreds2 = getHundredsWeight(s2.selectorList);\n        if (hundreds1 !== hundreds2)\n            return hundreds1 - hundreds2;\n        const tens1 = getTensWeight(s1.selectorList);\n        const tens2 = getTensWeight(s2.selectorList);\n        if (tens1 !== tens2)\n            return tens1 - tens2;\n        const ones1 = getOnesWeight(s1.selectorList);\n        const ones2 = getOnesWeight(s2.selectorList);\n        return ones1 - ones2;\n    });\n}\nfunction getHundredsWeight(selectors) {\n    return selectors.reduce((pre, cur) => pre + (cur.id ? 1 : 0), 0);\n}\nfunction getTensWeight(selectors) {\n    return selectors.reduce((pre, cur) => pre + cur.class.length + cur.attrs.length, 0);\n}\nfunction getOnesWeight(selectors) {\n    return selectors.reduce((pre, cur) => pre + (cur.tag ? 1 : 0), 0);\n}\n\nfunction makeMap(str, expectsLowerCase) {\n    const map = Object.create(null);\n    const list = str.split(',');\n    for (let i = 0; i < list.length; i++) {\n        map[list[i]] = true;\n    }\n    return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];\n}\nconst specialMiniElements = {\n    img: 'image',\n    iframe: 'web-view'\n};\nconst internalCompsList = Object.keys(internalComponents)\n    .map(i => i.toLowerCase())\n    .join(',');\n// https://developers.weixin.qq.com/miniprogram/dev/component\nconst isMiniElements = makeMap(internalCompsList, true);\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements\nconst isInlineElements = makeMap('a,i,abbr,iframe,select,acronym,slot,small,span,bdi,kbd,strong,big,map,sub,sup,br,mark,mark,meter,template,canvas,textarea,cite,object,time,code,output,u,data,picture,tt,datalist,var,dfn,del,q,em,s,embed,samp,b', true);\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\nconst isBlockElements = makeMap('address,fieldset,li,article,figcaption,main,aside,figure,nav,blockquote,footer,ol,details,form,p,dialog,h1,h2,h3,h4,h5,h6,pre,dd,header,section,div,hgroup,table,dl,hr,ul,dt', true);\n\nconst closingTagAncestorBreakers = {\n    li: ['ul', 'ol', 'menu'],\n    dt: ['dl'],\n    dd: ['dl'],\n    tbody: ['table'],\n    thead: ['table'],\n    tfoot: ['table'],\n    tr: ['table'],\n    td: ['table']\n};\nfunction hasTerminalParent(tagName, stack) {\n    const tagParents = closingTagAncestorBreakers[tagName];\n    if (tagParents) {\n        let currentIndex = stack.length - 1;\n        while (currentIndex >= 0) {\n            const parentTagName = stack[currentIndex].tagName;\n            if (parentTagName === tagName) {\n                break;\n            }\n            if (tagParents && tagParents.includes(parentTagName)) {\n                return true;\n            }\n            currentIndex--;\n        }\n    }\n    return false;\n}\nfunction getTagName(tag) {\n    if (options.html.renderHTMLTag) {\n        return tag;\n    }\n    if (specialMiniElements[tag]) {\n        return specialMiniElements[tag];\n    }\n    else if (isMiniElements(tag)) {\n        return tag;\n    }\n    else if (isBlockElements(tag)) {\n        return 'view';\n    }\n    else if (isInlineElements(tag)) {\n        return 'text';\n    }\n    return 'view';\n}\nfunction splitEqual(str) {\n    const sep = '=';\n    const idx = str.indexOf(sep);\n    if (idx === -1)\n        return [str];\n    const key = str.slice(0, idx).trim();\n    const value = str.slice(idx + sep.length).trim();\n    return [key, value];\n}\nfunction format(children, document, styleOptions, parent) {\n    return children\n        .filter(child => {\n        // 过滤注释和空文本节点\n        if (child.type === 'comment') {\n            return false;\n        }\n        else if (child.type === 'text') {\n            return child.content !== '';\n        }\n        return true;\n    })\n        .map((child) => {\n        // 文本节点\n        if (child.type === 'text') {\n            let text = document.createTextNode(child.content);\n            if (isFunction(options.html.transformText)) {\n                text = options.html.transformText(text, child);\n            }\n            parent === null || parent === void 0 ? void 0 : parent.appendChild(text);\n            return text;\n        }\n        const el = document.createElement(getTagName(child.tagName));\n        el.h5tagName = child.tagName;\n        parent === null || parent === void 0 ? void 0 : parent.appendChild(el);\n        if (!options.html.renderHTMLTag) {\n            el.className = `h5-${child.tagName}`;\n        }\n        for (let i = 0; i < child.attributes.length; i++) {\n            const attr = child.attributes[i];\n            const [key, value] = splitEqual(attr);\n            if (key === 'class') {\n                el.className += ' ' + unquote(value);\n            }\n            else if (key[0] === 'o' && key[1] === 'n') {\n                continue;\n            }\n            else {\n                el.setAttribute(key, value == null ? true : unquote(value));\n            }\n        }\n        const { styleTagParser, descendantList } = styleOptions;\n        const list = descendantList.slice();\n        const style = styleTagParser.matchStyle(child.tagName, el, list);\n        el.setAttribute('style', style + el.style.cssText);\n        // console.log('style, ', style)\n        format(child.children, document, {\n            styleTagParser,\n            descendantList: list\n        }, el);\n        if (isFunction(options.html.transformElement)) {\n            return options.html.transformElement(el, child);\n        }\n        return el;\n    });\n}\nfunction parser(html, document) {\n    const styleTagParser = new StyleTagParser();\n    html = styleTagParser.extractStyle(html);\n    const tokens = new Scaner(html).scan();\n    const root = { tagName: '', children: [], type: 'element', attributes: [] };\n    const state = { tokens, options, cursor: 0, stack: [root] };\n    parse(state);\n    return format(root.children, document, {\n        styleTagParser,\n        descendantList: Array(styleTagParser.styles.length).fill(0)\n    });\n}\nfunction parse(state) {\n    const { tokens, stack } = state;\n    let { cursor } = state;\n    const len = tokens.length;\n    let nodes = stack[stack.length - 1].children;\n    while (cursor < len) {\n        const token = tokens[cursor];\n        if (token.type !== 'tag-start') {\n            // comment or text\n            nodes.push(token);\n            cursor++;\n            continue;\n        }\n        const tagToken = tokens[++cursor];\n        cursor++;\n        const tagName = tagToken.content.toLowerCase();\n        if (token.close) {\n            let index = stack.length;\n            let shouldRewind = false;\n            while (--index > -1) {\n                if (stack[index].tagName === tagName) {\n                    shouldRewind = true;\n                    break;\n                }\n            }\n            while (cursor < len) {\n                const endToken = tokens[cursor];\n                if (endToken.type !== 'tag-end')\n                    break;\n                cursor++;\n            }\n            if (shouldRewind) {\n                stack.splice(index);\n                break;\n            }\n            else {\n                continue;\n            }\n        }\n        const isClosingTag = options.html.closingElements.has(tagName);\n        let shouldRewindToAutoClose = isClosingTag;\n        if (shouldRewindToAutoClose) {\n            shouldRewindToAutoClose = !hasTerminalParent(tagName, stack);\n        }\n        if (shouldRewindToAutoClose) {\n            let currentIndex = stack.length - 1;\n            while (currentIndex > 0) {\n                if (tagName === stack[currentIndex].tagName) {\n                    stack.splice(currentIndex);\n                    const previousIndex = currentIndex - 1;\n                    nodes = stack[previousIndex].children;\n                    break;\n                }\n                currentIndex = currentIndex - 1;\n            }\n        }\n        const attributes = [];\n        let attrToken;\n        while (cursor < len) {\n            attrToken = tokens[cursor];\n            if (attrToken.type === 'tag-end')\n                break;\n            attributes.push(attrToken.content);\n            cursor++;\n        }\n        cursor++;\n        const children = [];\n        const element = {\n            type: 'element',\n            tagName: tagToken.content,\n            attributes,\n            children\n        };\n        nodes.push(element);\n        const hasChildren = !(attrToken.close || options.html.voidElements.has(tagName));\n        if (hasChildren) {\n            stack.push({ tagName, children });\n            const innerState = { tokens, cursor, stack };\n            parse(innerState);\n            cursor = innerState.cursor;\n        }\n    }\n    state.cursor = cursor;\n}\n\noptions.html = {\n    skipElements: new Set(['style', 'script']),\n    voidElements: new Set([\n        '!doctype', 'area', 'base', 'br', 'col', 'command',\n        'embed', 'hr', 'img', 'input', 'keygen', 'link',\n        'meta', 'param', 'source', 'track', 'wbr'\n    ]),\n    closingElements: new Set([\n        'html', 'head', 'body', 'p', 'dt', 'dd', 'li', 'option',\n        'thead', 'th', 'tbody', 'tr', 'td', 'tfoot', 'colgroup'\n    ]),\n    renderHTMLTag: false\n};\nfunction setInnerHTML(element, html) {\n    while (element.firstChild) {\n        element.removeChild(element.firstChild);\n    }\n    const children = parser(html, element.ownerDocument);\n    for (let i = 0; i < children.length; i++) {\n        element.appendChild(children[i]);\n    }\n}\n\nfunction getBoundingClientRectImpl() {\n    if (!options.miniGlobal)\n        return Promise.resolve(null);\n    return new Promise(resolve => {\n        const query = options.miniGlobal.createSelectorQuery();\n        query.select(`#${this.uid}`).boundingClientRect(res => {\n            resolve(res);\n        }).exec();\n    });\n}\nfunction getTemplateContent(ctx) {\n    if (ctx.nodeName === 'template') {\n        const document = ctx.ownerDocument;\n        const content = document.createElement(DOCUMENT_FRAGMENT);\n        content.childNodes = ctx.childNodes;\n        ctx.childNodes = [content];\n        content.parentNode = ctx;\n        content.childNodes.forEach(nodes => {\n            nodes.parentNode = content;\n        });\n        return content;\n    }\n}\n\n/**\n * An implementation of `Element.insertAdjacentHTML()`\n * to support Vue 3 with a version of or greater than `vue@3.1.2`\n */\nfunction insertAdjacentHTML(position, html) {\n    var _a, _b;\n    const parsedNodes = parser(html, this.ownerDocument);\n    for (let i = 0; i < parsedNodes.length; i++) {\n        const n = parsedNodes[i];\n        switch (position) {\n            case 'beforebegin':\n                (_a = this.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(n, this);\n                break;\n            case 'afterbegin':\n                if (this.hasChildNodes()) {\n                    this.insertBefore(n, this.childNodes[0]);\n                }\n                else {\n                    this.appendChild(n);\n                }\n                break;\n            case 'beforeend':\n                this.appendChild(n);\n                break;\n            case 'afterend':\n                (_b = this.parentNode) === null || _b === void 0 ? void 0 : _b.appendChild(n);\n                break;\n        }\n    }\n}\nfunction cloneNode(isDeep = false) {\n    const document = this.ownerDocument;\n    let newNode;\n    if (this.nodeType === 1 /* NodeType.ELEMENT_NODE */) {\n        newNode = document.createElement(this.nodeName);\n    }\n    else if (this.nodeType === 3 /* NodeType.TEXT_NODE */) {\n        newNode = document.createTextNode('');\n    }\n    for (const key in this) {\n        const value = this[key];\n        if ([PROPS, DATASET].includes(key) && typeof value === OBJECT) {\n            newNode[key] = Object.assign({}, value);\n        }\n        else if (key === '_value') {\n            newNode[key] = value;\n        }\n        else if (key === STYLE) {\n            newNode.style._value = Object.assign({}, value._value);\n            newNode.style._usedStyleProp = new Set(Array.from(value._usedStyleProp));\n        }\n    }\n    if (isDeep) {\n        newNode.childNodes = this.childNodes.map(node => node.cloneNode(true));\n    }\n    return newNode;\n}\nfunction contains(node) {\n    let isContains = false;\n    this.childNodes.some(childNode => {\n        const { uid } = childNode;\n        if (uid === node.uid || uid === node.id || childNode.contains(node)) {\n            isContains = true;\n            return true;\n        }\n    });\n    return isContains;\n}\n\nif (!isWebPlatform()) {\n    if (ENABLE_INNER_HTML) {\n        TaroNode.extend('innerHTML', {\n            set(html) {\n                setInnerHTML.call(this, this, html);\n            },\n            get() {\n                return '';\n            }\n        });\n        if (ENABLE_ADJACENT_HTML) {\n            TaroNode.extend('insertAdjacentHTML', insertAdjacentHTML);\n        }\n    }\n    if (ENABLE_CLONE_NODE) {\n        TaroNode.extend('cloneNode', cloneNode);\n    }\n    if (ENABLE_CONTAINS) {\n        TaroNode.extend('contains', contains);\n    }\n    if (ENABLE_SIZE_APIS) {\n        TaroElement.extend('getBoundingClientRect', getBoundingClientRectImpl);\n    }\n    if (ENABLE_TEMPLATE_CONTENT) {\n        TaroElement.extend('content', {\n            get() {\n                return getTemplateContent(this);\n            }\n        });\n    }\n}\n\n// Taro 事件对象。以 Web 标准的事件对象为基础，加入小程序事件对象中携带的部分信息，并模拟实现事件冒泡。\nclass TaroEvent {\n    constructor(type, opts, event) {\n        this._stop = false;\n        this._end = false;\n        this.defaultPrevented = false;\n        // Mouse Event botton property, it's used in 3rd lib, like react-router. default 0 in general\n        this.button = 0;\n        // timestamp can either be hi-res ( relative to page load) or low-res (relative to UNIX epoch)\n        // here use hi-res timestamp\n        this.timeStamp = Date.now();\n        this.type = type.toLowerCase();\n        this.mpEvent = event;\n        this.bubbles = Boolean(opts && opts.bubbles);\n        this.cancelable = Boolean(opts && opts.cancelable);\n    }\n    stopPropagation() {\n        this._stop = true;\n    }\n    stopImmediatePropagation() {\n        this._end = this._stop = true;\n    }\n    preventDefault() {\n        this.defaultPrevented = true;\n    }\n    get target() {\n        var _a, _b, _c, _d;\n        const cacheTarget = this.cacheTarget;\n        if (!cacheTarget) {\n            const target = Object.create(((_a = this.mpEvent) === null || _a === void 0 ? void 0 : _a.target) || null);\n            // Note：优先判断冒泡场景alipay的targetDataset的sid, 不然冒泡场景target属性吐出不对，其余拿取当前绑定id\n            const element = env.document.getElementById(((_b = target.targetDataset) === null || _b === void 0 ? void 0 : _b.sid) || ((_c = target.dataset) === null || _c === void 0 ? void 0 : _c.sid) || target.id || null);\n            target.dataset = element !== null ? element.dataset : EMPTY_OBJ;\n            for (const key in (_d = this.mpEvent) === null || _d === void 0 ? void 0 : _d.detail) {\n                target[key] = this.mpEvent.detail[key];\n            }\n            this.cacheTarget = target;\n            return target;\n        }\n        else {\n            return cacheTarget;\n        }\n    }\n    get currentTarget() {\n        var _a, _b, _c, _d, _e, _f, _g, _h;\n        const cacheCurrentTarget = this.cacheCurrentTarget;\n        if (!cacheCurrentTarget) {\n            const doc = env.document;\n            const currentTarget = Object.create(((_a = this.mpEvent) === null || _a === void 0 ? void 0 : _a.currentTarget) || null);\n            const element = doc.getElementById(((_b = currentTarget.dataset) === null || _b === void 0 ? void 0 : _b.sid) || currentTarget.id || null);\n            const targetElement = doc.getElementById(((_e = (_d = (_c = this.mpEvent) === null || _c === void 0 ? void 0 : _c.target) === null || _d === void 0 ? void 0 : _d.dataset) === null || _e === void 0 ? void 0 : _e.sid) || ((_g = (_f = this.mpEvent) === null || _f === void 0 ? void 0 : _f.target) === null || _g === void 0 ? void 0 : _g.id) || null);\n            if (element === null || (element && element === targetElement)) {\n                this.cacheCurrentTarget = this.target;\n                return this.target;\n            }\n            currentTarget.dataset = element.dataset;\n            for (const key in (_h = this.mpEvent) === null || _h === void 0 ? void 0 : _h.detail) {\n                currentTarget[key] = this.mpEvent.detail[key];\n            }\n            this.cacheCurrentTarget = currentTarget;\n            return currentTarget;\n        }\n        else {\n            return cacheCurrentTarget;\n        }\n    }\n}\nfunction createEvent(event, node) {\n    if (typeof event === 'string') {\n        // For Vue3 using document.createEvent\n        return new TaroEvent(event, { bubbles: true, cancelable: true });\n    }\n    const domEv = new TaroEvent(event.type, { bubbles: true, cancelable: true }, event);\n    for (const key in event) {\n        if (key === CURRENT_TARGET || key === TARGET || key === TYPE || key === TIME_STAMP) {\n            continue;\n        }\n        else {\n            domEv[key] = event[key];\n        }\n    }\n    if (domEv.type === CONFIRM && (node === null || node === void 0 ? void 0 : node.nodeName) === INPUT) {\n        // eslint-disable-next-line dot-notation\n        domEv[KEY_CODE] = 13;\n    }\n    return domEv;\n}\nconst eventsBatch = {};\nfunction getEventCBResult(event) {\n    const result = event[EVENT_CALLBACK_RESULT];\n    if (!isUndefined(result)) {\n        delete event[EVENT_CALLBACK_RESULT];\n    }\n    return result;\n}\n// 小程序的事件代理回调函数\nfunction eventHandler(event) {\n    var _a, _b;\n    // Note: ohos 上事件没有设置 type、detail 类型 setter 方法，且部分事件（例如 load 等）缺失 target 导致事件错误\n    event.type === undefined && Object.defineProperty(event, 'type', {\n        value: event._type // ohos only\n    });\n    event.detail === undefined && Object.defineProperty(event, 'detail', {\n        value: event._detail || Object.assign({}, event) // ohos only\n    });\n    event.currentTarget = event.currentTarget || event.target || Object.assign({}, event);\n    hooks.call('modifyMpEventImpl', event);\n    const currentTarget = event.currentTarget;\n    const id = ((_a = currentTarget.dataset) === null || _a === void 0 ? void 0 : _a.sid /** sid */) || currentTarget.id /** uid */ || ((_b = event.detail) === null || _b === void 0 ? void 0 : _b.id) || '';\n    const node = env.document.getElementById(id);\n    if (node) {\n        const dispatch = () => {\n            const e = createEvent(event, node);\n            hooks.call('modifyTaroEvent', e, node);\n            hooks.call('dispatchTaroEvent', e, node);\n            hooks.call('dispatchTaroEventFinish', e, node);\n        };\n        if (hooks.isExist('batchedEventUpdates')) {\n            const type = event.type;\n            if (!hooks.call('isBubbleEvents', type) ||\n                !isParentBinded(node, type) ||\n                (type === TOUCHMOVE && !!node.props.catchMove)) {\n                // 最上层组件统一 batchUpdate\n                hooks.call('batchedEventUpdates', () => {\n                    if (eventsBatch[type]) {\n                        eventsBatch[type].forEach(fn => fn());\n                        delete eventsBatch[type];\n                    }\n                    dispatch();\n                });\n                return getEventCBResult(event);\n            }\n            else {\n                // 如果上层组件也有绑定同类型的组件，委托给上层组件调用事件回调\n                (eventsBatch[type] || (eventsBatch[type] = [])).push(dispatch);\n            }\n        }\n        else {\n            dispatch();\n            return getEventCBResult(event);\n        }\n    }\n}\n\nclass FormElement extends TaroElement {\n    get type() {\n        var _a;\n        return (_a = this.props[TYPE]) !== null && _a !== void 0 ? _a : '';\n    }\n    set type(val) {\n        this.setAttribute(TYPE, val);\n    }\n    get value() {\n        // eslint-disable-next-line dot-notation\n        const val = this.props[VALUE];\n        return val == null ? '' : val;\n    }\n    set value(val) {\n        this.setAttribute(VALUE, val);\n    }\n    dispatchEvent(event) {\n        if (event.mpEvent) {\n            const val = event.mpEvent.detail.value;\n            if (event.type === CHANGE) {\n                this.props.value = val;\n            }\n            else if (event.type === INPUT) {\n                // Web 规范中表单组件的 value 应该跟着输入改变\n                // 只是改 this.props.value 的话不会进行 setData，因此这里修改 this.value。\n                // 只测试了 React、Vue、Vue3 input 组件的 onInput 事件，onChange 事件不确定有没有副作用，所以暂不修改。\n                this.value = val;\n            }\n        }\n        return super.dispatchEvent(event);\n    }\n}\n\nclass Performance {\n    constructor() {\n        this.recorder = new Map();\n    }\n    start(id) {\n        if (!options.debug) {\n            return;\n        }\n        this.recorder.set(id, Date.now());\n    }\n    stop(id) {\n        if (!options.debug) {\n            return;\n        }\n        const now = Date.now();\n        const prev = this.recorder.get(id);\n        this.recorder.delete(id);\n        const time = now - prev;\n        // eslint-disable-next-line no-console\n        console.log(`${id} 时长： ${time}ms`);\n    }\n}\nconst perf = new Performance();\n\nfunction findCustomWrapper(root, dataPathArr) {\n    // ['root', 'cn', '[0]'] remove 'root' => ['cn', '[0]']\n    const list = dataPathArr.slice(1);\n    let currentData = root;\n    let customWrapper;\n    let splitedPath = '';\n    list.some((item, i) => {\n        const key = item\n            // '[0]' => '0'\n            .replace(/^\\[(.+)\\]$/, '$1')\n            // 'cn' => 'childNodes'\n            .replace(/\\bcn\\b/g, 'childNodes');\n        currentData = currentData[key];\n        if (isArray(currentData)) {\n            currentData = currentData.filter(el => !isComment(el));\n        }\n        if (isUndefined(currentData))\n            return true;\n        if (currentData.nodeName === CUSTOM_WRAPPER) {\n            const res = customWrapperCache.get(currentData.sid);\n            if (res) {\n                customWrapper = res;\n                splitedPath = dataPathArr.slice(i + 2).join('.');\n            }\n        }\n    });\n    if (customWrapper) {\n        return {\n            customWrapper,\n            splitedPath\n        };\n    }\n}\nclass TaroRootElement extends TaroElement {\n    constructor() {\n        super();\n        this.updatePayloads = [];\n        this.updateCallbacks = [];\n        this.pendingUpdate = false;\n        this.ctx = null;\n        this.nodeName = ROOT_STR;\n        this.tagName = ROOT_STR.toUpperCase();\n    }\n    get _path() {\n        return ROOT_STR;\n    }\n    get _root() {\n        return this;\n    }\n    enqueueUpdate(payload) {\n        this.updatePayloads.push(payload);\n        if (!this.pendingUpdate && this.ctx) {\n            this.performUpdate();\n        }\n    }\n    performUpdate(initRender = false, prerender) {\n        this.pendingUpdate = true;\n        const ctx = hooks.call('proxyToRaw', this.ctx);\n        setTimeout(() => {\n            const setDataMark = `${SET_DATA} 开始时间戳 ${Date.now()}`;\n            perf.start(setDataMark);\n            const data = Object.create(null);\n            const resetPaths = new Set(initRender\n                ? ['root.cn.[0]', 'root.cn[0]']\n                : []);\n            while (this.updatePayloads.length > 0) {\n                const { path, value } = this.updatePayloads.shift();\n                if (path.endsWith(\"cn\" /* Shortcuts.Childnodes */)) {\n                    resetPaths.add(path);\n                }\n                data[path] = value;\n            }\n            for (const path in data) {\n                resetPaths.forEach(p => {\n                    // 已经重置了数组，就不需要分别再设置了\n                    if (path.includes(p) && path !== p) {\n                        delete data[path];\n                    }\n                });\n                const value = data[path];\n                if (isFunction(value)) {\n                    data[path] = value();\n                }\n            }\n            // 预渲染\n            if (isFunction(prerender))\n                return prerender(data);\n            // 正常渲染\n            this.pendingUpdate = false;\n            let normalUpdate = {};\n            const customWrapperMap = new Map();\n            if (initRender) {\n                // 初次渲染，使用页面级别的 setData\n                normalUpdate = data;\n            }\n            else {\n                // 更新渲染，区分 CustomWrapper 与页面级别的 setData\n                for (const p in data) {\n                    const dataPathArr = p.split('.');\n                    const found = findCustomWrapper(this, dataPathArr);\n                    if (found) {\n                        // 此项数据使用 CustomWrapper 去更新\n                        const { customWrapper, splitedPath } = found;\n                        // 合并同一个 customWrapper 的相关更新到一次 setData 中\n                        customWrapperMap.set(customWrapper, Object.assign(Object.assign({}, (customWrapperMap.get(customWrapper) || {})), { [`i.${splitedPath}`]: data[p] }));\n                    }\n                    else {\n                        // 此项数据使用页面去更新\n                        normalUpdate[p] = data[p];\n                    }\n                }\n            }\n            const customWrapperCount = customWrapperMap.size;\n            const isNeedNormalUpdate = Object.keys(normalUpdate).length > 0;\n            const updateArrLen = customWrapperCount + (isNeedNormalUpdate ? 1 : 0);\n            let executeTime = 0;\n            const cb = () => {\n                if (++executeTime === updateArrLen) {\n                    perf.stop(setDataMark);\n                    this.flushUpdateCallback();\n                    initRender && perf.stop(PAGE_INIT);\n                }\n            };\n            // custom-wrapper setData\n            if (customWrapperCount) {\n                customWrapperMap.forEach((data, ctx) => {\n                    if (process.env.NODE_ENV !== 'production' && options.debug) {\n                        // eslint-disable-next-line no-console\n                        console.log('custom wrapper setData: ', data);\n                    }\n                    ctx.setData(data, cb);\n                });\n            }\n            // page setData\n            if (isNeedNormalUpdate) {\n                if (process.env.NODE_ENV !== 'production' && options.debug) {\n                    // eslint-disable-next-line no-console\n                    console.log('page setData:', normalUpdate);\n                }\n                ctx.setData(normalUpdate, cb);\n            }\n        }, 0);\n    }\n    enqueueUpdateCallback(cb, ctx) {\n        this.updateCallbacks.push(() => {\n            ctx ? cb.call(ctx) : cb();\n        });\n    }\n    flushUpdateCallback() {\n        const updateCallbacks = this.updateCallbacks;\n        if (!updateCallbacks.length)\n            return;\n        const copies = updateCallbacks.slice(0);\n        this.updateCallbacks.length = 0;\n        for (let i = 0; i < copies.length; i++) {\n            copies[i]();\n        }\n    }\n}\n\nclass TaroText extends TaroNode {\n    constructor(value) {\n        super();\n        this.nodeType = 3 /* NodeType.TEXT_NODE */;\n        this.nodeName = '#text';\n        this._value = value;\n    }\n    set textContent(text) {\n        MutationObserver.record({\n            target: this,\n            type: \"characterData\" /* MutationRecordType.CHARACTER_DATA */,\n            oldValue: this._value\n        });\n        this._value = text;\n        this.enqueueUpdate({\n            path: `${this._path}.${\"v\" /* Shortcuts.Text */}`,\n            value: text\n        });\n    }\n    get textContent() {\n        return this._value;\n    }\n    set nodeValue(text) {\n        this.textContent = text;\n    }\n    get nodeValue() {\n        return this._value;\n    }\n    set data(text) {\n        this.textContent = text;\n    }\n    get data() {\n        return this._value;\n    }\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\n\nvar _URLSearchParams_dict;\nconst findReg = /[!'()~]|%20|%00/g;\nconst plusReg = /\\+/g;\nconst replaceCharMap = {\n    '!': '%21',\n    \"'\": '%27',\n    '(': '%28',\n    ')': '%29',\n    '~': '%7E',\n    '%20': '+',\n    '%00': '\\x00',\n};\nfunction replacer(match) {\n    return replaceCharMap[match];\n}\nfunction appendTo(dict, name, value) {\n    const res = isArray(value) ? value.join(',') : value;\n    if (name in dict)\n        dict[name].push(res);\n    else\n        dict[name] = [res];\n}\nfunction addEach(value, key) {\n    appendTo(this, key, value);\n}\nfunction decode(str) {\n    return decodeURIComponent(str.replace(plusReg, ' '));\n}\nfunction encode(str) {\n    return encodeURIComponent(str).replace(findReg, replacer);\n}\nclass URLSearchParams {\n    constructor(query) {\n        _URLSearchParams_dict.set(this, Object.create(null));\n        query !== null && query !== void 0 ? query : (query = '');\n        const dict = __classPrivateFieldGet(this, _URLSearchParams_dict, \"f\");\n        if (typeof query === 'string') {\n            if (query.charAt(0) === '?') {\n                query = query.slice(1);\n            }\n            for (let pairs = query.split('&'), i = 0, length = pairs.length; i < length; i++) {\n                const value = pairs[i];\n                const index = value.indexOf('=');\n                if (index > -1) {\n                    appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1)));\n                }\n                else if (value.length) {\n                    appendTo(dict, decode(value), '');\n                }\n            }\n        }\n        else {\n            if (isArray(query)) {\n                for (let i = 0, length = query.length; i < length; i++) {\n                    const value = query[i];\n                    appendTo(dict, value[0], value[1]);\n                }\n            }\n            else if (query.forEach) {\n                query.forEach(addEach, dict);\n            }\n            else {\n                for (const key in query) {\n                    appendTo(dict, key, query[key]);\n                }\n            }\n        }\n    }\n    append(name, value) {\n        appendTo(__classPrivateFieldGet(this, _URLSearchParams_dict, \"f\"), name, value);\n    }\n    delete(name) {\n        delete __classPrivateFieldGet(this, _URLSearchParams_dict, \"f\")[name];\n    }\n    get(name) {\n        const dict = __classPrivateFieldGet(this, _URLSearchParams_dict, \"f\");\n        return name in dict ? dict[name][0] : null;\n    }\n    getAll(name) {\n        const dict = __classPrivateFieldGet(this, _URLSearchParams_dict, \"f\");\n        return name in dict ? dict[name].slice(0) : [];\n    }\n    has(name) {\n        return name in __classPrivateFieldGet(this, _URLSearchParams_dict, \"f\");\n    }\n    keys() {\n        return Object.keys(__classPrivateFieldGet(this, _URLSearchParams_dict, \"f\"));\n    }\n    set(name, value) {\n        __classPrivateFieldGet(this, _URLSearchParams_dict, \"f\")[name] = ['' + value];\n    }\n    forEach(callback, thisArg) {\n        const dict = __classPrivateFieldGet(this, _URLSearchParams_dict, \"f\");\n        Object.getOwnPropertyNames(dict).forEach(function (name) {\n            dict[name].forEach(function (value) {\n                callback.call(thisArg, value, name, this);\n            }, this);\n        }, this);\n    }\n    toJSON() {\n        return {};\n    }\n    toString() {\n        const dict = __classPrivateFieldGet(this, _URLSearchParams_dict, \"f\");\n        const query = [];\n        for (const key in dict) {\n            const name = encode(key);\n            for (let i = 0, value = dict[key]; i < value.length; i++) {\n                query.push(name + '=' + encode(value[i]));\n            }\n        }\n        return query.join('&');\n    }\n}\n_URLSearchParams_dict = new WeakMap();\n\nvar _URL_hash, _URL_hostname, _URL_pathname, _URL_port, _URL_protocol, _URL_search;\nclass URL {\n    static createObjectURL() {\n        throw new Error('Oops, not support URL.createObjectURL() in miniprogram.');\n    }\n    static revokeObjectURL() {\n        throw new Error('Oops, not support URL.revokeObjectURL() in miniprogram.');\n    }\n    constructor(url, base) {\n        /* private property */\n        _URL_hash.set(this, '');\n        _URL_hostname.set(this, '');\n        _URL_pathname.set(this, '');\n        _URL_port.set(this, '');\n        _URL_protocol.set(this, '');\n        _URL_search.set(this, void 0);\n        if (!isString(url))\n            url = String(url);\n        const parseResult = parseUrlBase(url, base);\n        const { hash, hostname, pathname, port, protocol, search } = parseResult;\n        __classPrivateFieldSet(this, _URL_hash, hash, \"f\");\n        __classPrivateFieldSet(this, _URL_hostname, hostname, \"f\");\n        __classPrivateFieldSet(this, _URL_pathname, pathname || '/', \"f\");\n        __classPrivateFieldSet(this, _URL_port, port, \"f\");\n        __classPrivateFieldSet(this, _URL_protocol, protocol, \"f\");\n        __classPrivateFieldSet(this, _URL_search, new URLSearchParams(search), \"f\");\n    }\n    /* public property */\n    get protocol() {\n        return __classPrivateFieldGet(this, _URL_protocol, \"f\");\n    }\n    set protocol(val) {\n        isString(val) && (__classPrivateFieldSet(this, _URL_protocol, val.trim(), \"f\"));\n    }\n    get host() {\n        return this.hostname + (this.port ? ':' + this.port : '');\n    }\n    set host(val) {\n        if (val && isString(val)) {\n            val = val.trim();\n            const { hostname, port } = parseUrl(`//${val}`);\n            this.hostname = hostname;\n            this.port = port;\n        }\n    }\n    get hostname() {\n        return __classPrivateFieldGet(this, _URL_hostname, \"f\");\n    }\n    set hostname(val) {\n        val && isString(val) && (__classPrivateFieldSet(this, _URL_hostname, val.trim(), \"f\"));\n    }\n    get port() {\n        return __classPrivateFieldGet(this, _URL_port, \"f\");\n    }\n    set port(val) {\n        isString(val) && (__classPrivateFieldSet(this, _URL_port, val.trim(), \"f\"));\n    }\n    get pathname() {\n        return __classPrivateFieldGet(this, _URL_pathname, \"f\");\n    }\n    set pathname(val) {\n        if (isString(val)) {\n            val = val.trim();\n            const HEAD_REG = /^(\\/|\\.\\/|\\.\\.\\/)/;\n            let temp = val;\n            while (HEAD_REG.test(temp)) {\n                temp = temp.replace(HEAD_REG, '');\n            }\n            if (temp)\n                __classPrivateFieldSet(this, _URL_pathname, '/' + temp, \"f\");\n            else\n                __classPrivateFieldSet(this, _URL_pathname, '/', \"f\");\n        }\n    }\n    get search() {\n        const val = __classPrivateFieldGet(this, _URL_search, \"f\").toString();\n        return (val.length === 0 || val.startsWith('?')) ? val : `?${val}`;\n    }\n    set search(val) {\n        if (isString(val)) {\n            val = val.trim();\n            __classPrivateFieldSet(this, _URL_search, new URLSearchParams(val), \"f\");\n        }\n    }\n    get hash() {\n        return __classPrivateFieldGet(this, _URL_hash, \"f\");\n    }\n    set hash(val) {\n        if (isString(val)) {\n            val = val.trim();\n            if (val)\n                __classPrivateFieldSet(this, _URL_hash, val.startsWith('#') ? val : `#${val}`, \"f\");\n            else\n                __classPrivateFieldSet(this, _URL_hash, '', \"f\");\n        }\n    }\n    get href() {\n        return `${this.protocol}//${this.host}${this.pathname}${this.search}${this.hash}`;\n    }\n    set href(val) {\n        if (val && isString(val)) {\n            val = val.trim();\n            const { protocol, hostname, port, hash, search, pathname } = parseUrl(val);\n            this.protocol = protocol;\n            this.hostname = hostname;\n            this.pathname = pathname;\n            this.port = port;\n            this.hash = hash;\n            this.search = search;\n        }\n    }\n    get origin() {\n        return `${this.protocol}//${this.host}`;\n    }\n    set origin(val) {\n        if (val && isString(val)) {\n            val = val.trim();\n            const { protocol, hostname, port } = parseUrl(val);\n            this.protocol = protocol;\n            this.hostname = hostname;\n            this.port = port;\n        }\n    }\n    get searchParams() {\n        return __classPrivateFieldGet(this, _URL_search, \"f\");\n    }\n    // public method\n    toString() {\n        return this.href;\n    }\n    toJSON() {\n        return this.toString();\n    }\n    // convenient for deconstructor\n    _toRaw() {\n        return {\n            protocol: this.protocol,\n            port: this.port,\n            host: this.host,\n            hostname: this.hostname,\n            pathname: this.pathname,\n            hash: this.hash,\n            search: this.search,\n            origin: this.origin,\n            href: this.href,\n        };\n    }\n}\n_URL_hash = new WeakMap(), _URL_hostname = new WeakMap(), _URL_pathname = new WeakMap(), _URL_port = new WeakMap(), _URL_protocol = new WeakMap(), _URL_search = new WeakMap();\nfunction parseUrl(url = '') {\n    const result = {\n        href: '',\n        origin: '',\n        protocol: '',\n        hostname: '',\n        host: '',\n        port: '',\n        pathname: '',\n        search: '',\n        hash: ''\n    };\n    if (!url || !isString(url))\n        return result;\n    url = url.trim();\n    const PATTERN = /^(([^:/?#]+):)?\\/\\/(([^/?#]+):(.+)@)?([^/?#:]*)(:(\\d+))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n    const matches = url.match(PATTERN);\n    if (!matches)\n        return result;\n    // TODO: username & password ?\n    result.protocol = matches[1] || 'https:';\n    result.hostname = matches[6] || 'taro.com';\n    result.port = matches[8] || '';\n    result.pathname = matches[9] || '/';\n    result.search = matches[10] || '';\n    result.hash = matches[12] || '';\n    result.href = url;\n    result.origin = result.protocol + '//' + result.hostname;\n    result.host = result.hostname + (result.port ? `:${result.port}` : '');\n    return result;\n}\nfunction parseUrlBase(url, base) {\n    const VALID_URL = /^(https?:)\\/\\//i;\n    let fullUrl = '';\n    let parsedBase = null;\n    if (!isUndefined(base)) {\n        base = String(base).trim();\n        if (!VALID_URL.test(base))\n            throw new TypeError(`Failed to construct 'URL': Invalid base URL`);\n        parsedBase = parseUrl(base);\n    }\n    url = String(url).trim();\n    if (VALID_URL.test(url)) {\n        fullUrl = url;\n    }\n    else if (parsedBase) {\n        if (url) {\n            if (url.startsWith('//')) {\n                fullUrl = parsedBase.protocol + url;\n            }\n            else {\n                fullUrl = parsedBase.origin + (url.startsWith('/') ? url : `/${url}`);\n            }\n        }\n        else {\n            fullUrl = parsedBase.href;\n        }\n    }\n    else {\n        throw new TypeError(`Failed to construct 'URL': Invalid URL`);\n    }\n    return parseUrl(fullUrl);\n}\n\nclass AnchorElement extends TaroElement {\n    get href() {\n        var _a;\n        return (_a = this.props[\"href\" /* AnchorElementAttrs.HREF */]) !== null && _a !== void 0 ? _a : '';\n    }\n    set href(val) {\n        this.setAttribute(\"href\" /* AnchorElementAttrs.HREF */, val);\n    }\n    get protocol() {\n        var _a;\n        return (_a = this.props[\"protocol\" /* AnchorElementAttrs.PROTOCOL */]) !== null && _a !== void 0 ? _a : '';\n    }\n    get host() {\n        var _a;\n        return (_a = this.props[\"host\" /* AnchorElementAttrs.HOST */]) !== null && _a !== void 0 ? _a : '';\n    }\n    get search() {\n        var _a;\n        return (_a = this.props[\"search\" /* AnchorElementAttrs.SEARCH */]) !== null && _a !== void 0 ? _a : '';\n    }\n    get hash() {\n        var _a;\n        return (_a = this.props[\"hash\" /* AnchorElementAttrs.HASH */]) !== null && _a !== void 0 ? _a : '';\n    }\n    get hostname() {\n        var _a;\n        return (_a = this.props[\"hostname\" /* AnchorElementAttrs.HOSTNAME */]) !== null && _a !== void 0 ? _a : '';\n    }\n    get port() {\n        var _a;\n        return (_a = this.props[\"port\" /* AnchorElementAttrs.PORT */]) !== null && _a !== void 0 ? _a : '';\n    }\n    get pathname() {\n        var _a;\n        return (_a = this.props[\"pathname\" /* AnchorElementAttrs.PATHNAME */]) !== null && _a !== void 0 ? _a : '';\n    }\n    setAttribute(qualifiedName, value) {\n        if (qualifiedName === \"href\" /* AnchorElementAttrs.HREF */) {\n            const willSetAttr = parseUrl(value);\n            for (const k in willSetAttr) {\n                super.setAttribute(k, willSetAttr[k]);\n            }\n        }\n        else {\n            super.setAttribute(qualifiedName, value);\n        }\n    }\n}\n\nclass TransferElement extends TaroElement {\n    constructor(dataName) {\n        super();\n        this.dataName = dataName;\n        this.isTransferElement = true;\n    }\n    get _path() {\n        return this.dataName;\n    }\n}\n\nclass TaroDocument extends TaroElement {\n    constructor() {\n        super();\n        this.createEvent = createEvent;\n        this.nodeType = 9 /* NodeType.DOCUMENT_NODE */;\n        this.nodeName = DOCUMENT_ELEMENT_NAME;\n    }\n    createElement(type) {\n        const nodeName = type.toLowerCase();\n        let element;\n        switch (true) {\n            case nodeName === ROOT_STR:\n                element = new TaroRootElement();\n                return element;\n            case controlledComponent.has(nodeName):\n                element = new FormElement();\n                break;\n            case nodeName === A:\n                element = new AnchorElement();\n                break;\n            case nodeName === 'page-meta':\n            case nodeName === 'navigation-bar':\n                element = new TransferElement(toCamelCase(nodeName));\n                break;\n            default:\n                element = new TaroElement();\n                break;\n        }\n        element.nodeName = nodeName;\n        element.tagName = type.toUpperCase();\n        return element;\n    }\n    // an ugly fake createElementNS to deal with @vue/runtime-dom's\n    // support mounting app to svg container since vue@3.0.8\n    createElementNS(_svgNS, type) {\n        return this.createElement(type);\n    }\n    createTextNode(text) {\n        return new TaroText(text);\n    }\n    getElementById(id) {\n        const el = eventSource.get(id);\n        return isUndefined(el) ? null : el;\n    }\n    querySelector(query) {\n        // 为了 Vue3 的乞丐版实现\n        if (/^#/.test(query)) {\n            return this.getElementById(query.slice(1));\n        }\n        return null;\n    }\n    querySelectorAll() {\n        // fake hack\n        return [];\n    }\n    // @TODO: @PERF: 在 hydrate 移除掉空的 node\n    createComment() {\n        const textnode = new TaroText('');\n        textnode.nodeName = COMMENT;\n        return textnode;\n    }\n    get defaultView() {\n        return env.window;\n    }\n}\n\nlet document$1;\nif (process.env.TARO_ENV && !isWebPlatform()) {\n    /* eslint-disable no-inner-declarations */\n    function createDocument() {\n        /**\n           * <document>\n           *   <html>\n           *     <head></head>\n           *     <body>\n           *       <container>\n           *         <app id=\"app\" />\n           *       </container>\n           *     </body>\n           *   </html>\n           * </document>\n           */\n        const doc = new TaroDocument();\n        const documentCreateElement = doc.createElement.bind(doc);\n        const html = documentCreateElement(HTML);\n        const head = documentCreateElement(HEAD);\n        const body = documentCreateElement(BODY);\n        const app = documentCreateElement(APP);\n        app.id = APP;\n        const container = documentCreateElement(CONTAINER); // 多包一层主要为了兼容 vue\n        doc.appendChild(html);\n        html.appendChild(head);\n        html.appendChild(body);\n        body.appendChild(container);\n        container.appendChild(app);\n        doc.documentElement = html;\n        doc.head = head;\n        doc.body = body;\n        return doc;\n    }\n    document$1 = env.document = createDocument();\n}\nelse {\n    document$1 = env.document;\n}\n\nfunction getComputedStyle(element) {\n    return element.style;\n}\n\nconst eventCenter = hooks.call('getEventCenter', Events);\n\n/**\n * 一个小型缓存池，用于在切换页面时，存储一些上下文信息\n */\nclass RuntimeCache {\n    constructor(name) {\n        this.cache = new Map();\n        this.name = name;\n    }\n    has(identifier) {\n        return this.cache.has(identifier);\n    }\n    set(identifier, ctx) {\n        if (identifier && ctx) {\n            this.cache.set(identifier, ctx);\n        }\n    }\n    get(identifier) {\n        if (this.has(identifier))\n            return this.cache.get(identifier);\n    }\n    delete(identifier) {\n        this.cache.delete(identifier);\n    }\n}\n\nvar _History_instances, _History_location, _History_stack, _History_cur, _History_window, _History_reset;\nconst cache$1 = new RuntimeCache('history');\nclass History extends Events {\n    constructor(location, options) {\n        super();\n        _History_instances.add(this);\n        /* private property */\n        _History_location.set(this, void 0);\n        _History_stack.set(this, []);\n        _History_cur.set(this, 0);\n        _History_window.set(this, void 0);\n        __classPrivateFieldSet(this, _History_window, options.window, \"f\");\n        __classPrivateFieldSet(this, _History_location, location, \"f\");\n        __classPrivateFieldGet(this, _History_location, \"f\").on('__record_history__', (href) => {\n            var _a;\n            __classPrivateFieldSet(this, _History_cur, (_a = __classPrivateFieldGet(this, _History_cur, \"f\"), _a++, _a), \"f\");\n            __classPrivateFieldSet(this, _History_stack, __classPrivateFieldGet(this, _History_stack, \"f\").slice(0, __classPrivateFieldGet(this, _History_cur, \"f\")), \"f\");\n            __classPrivateFieldGet(this, _History_stack, \"f\").push({\n                state: null,\n                title: '',\n                url: href\n            });\n        }, null);\n        __classPrivateFieldGet(this, _History_location, \"f\").on('__reset_history__', (href) => {\n            __classPrivateFieldGet(this, _History_instances, \"m\", _History_reset).call(this, href);\n        }, null);\n        // 切换上下文行为\n        this.on(CONTEXT_ACTIONS.INIT, () => {\n            __classPrivateFieldGet(this, _History_instances, \"m\", _History_reset).call(this);\n        }, null);\n        this.on(CONTEXT_ACTIONS.RESTORE, (pageId) => {\n            cache$1.set(pageId, {\n                location: __classPrivateFieldGet(this, _History_location, \"f\"),\n                stack: __classPrivateFieldGet(this, _History_stack, \"f\").slice(),\n                cur: __classPrivateFieldGet(this, _History_cur, \"f\")\n            });\n        }, null);\n        this.on(CONTEXT_ACTIONS.RECOVER, (pageId) => {\n            if (cache$1.has(pageId)) {\n                const ctx = cache$1.get(pageId);\n                __classPrivateFieldSet(this, _History_location, ctx.location, \"f\");\n                __classPrivateFieldSet(this, _History_stack, ctx.stack, \"f\");\n                __classPrivateFieldSet(this, _History_cur, ctx.cur, \"f\");\n            }\n        }, null);\n        this.on(CONTEXT_ACTIONS.DESTORY, (pageId) => {\n            cache$1.delete(pageId);\n        }, null);\n        __classPrivateFieldGet(this, _History_instances, \"m\", _History_reset).call(this);\n    }\n    /* public property */\n    get length() {\n        return __classPrivateFieldGet(this, _History_stack, \"f\").length;\n    }\n    get state() {\n        return __classPrivateFieldGet(this, _History_stack, \"f\")[__classPrivateFieldGet(this, _History_cur, \"f\")].state;\n    }\n    /* public method */\n    go(delta) {\n        if (!isNumber(delta) || isNaN(delta))\n            return;\n        let targetIdx = __classPrivateFieldGet(this, _History_cur, \"f\") + delta;\n        targetIdx = Math.min(Math.max(targetIdx, 0), this.length - 1);\n        __classPrivateFieldSet(this, _History_cur, targetIdx, \"f\");\n        __classPrivateFieldGet(this, _History_location, \"f\").trigger('__set_href_without_history__', __classPrivateFieldGet(this, _History_stack, \"f\")[__classPrivateFieldGet(this, _History_cur, \"f\")].url);\n        __classPrivateFieldGet(this, _History_window, \"f\").trigger('popstate', __classPrivateFieldGet(this, _History_stack, \"f\")[__classPrivateFieldGet(this, _History_cur, \"f\")]);\n    }\n    back() {\n        this.go(-1);\n    }\n    forward() {\n        this.go(1);\n    }\n    pushState(state, title, url) {\n        if (!url || !isString(url))\n            return;\n        __classPrivateFieldSet(this, _History_stack, __classPrivateFieldGet(this, _History_stack, \"f\").slice(0, __classPrivateFieldGet(this, _History_cur, \"f\") + 1), \"f\");\n        __classPrivateFieldGet(this, _History_stack, \"f\").push({\n            state,\n            title,\n            url\n        });\n        __classPrivateFieldSet(this, _History_cur, this.length - 1, \"f\");\n        __classPrivateFieldGet(this, _History_location, \"f\").trigger('__set_href_without_history__', url);\n    }\n    replaceState(state, title, url) {\n        if (!url || !isString(url))\n            return;\n        __classPrivateFieldGet(this, _History_stack, \"f\")[__classPrivateFieldGet(this, _History_cur, \"f\")] = {\n            state,\n            title,\n            url\n        };\n        __classPrivateFieldGet(this, _History_location, \"f\").trigger('__set_href_without_history__', url);\n    }\n    // For debug\n    get cache() {\n        return cache$1;\n    }\n}\n_History_location = new WeakMap(), _History_stack = new WeakMap(), _History_cur = new WeakMap(), _History_window = new WeakMap(), _History_instances = new WeakSet(), _History_reset = function _History_reset(href = '') {\n    __classPrivateFieldSet(this, _History_stack, [\n        {\n            state: null,\n            title: '',\n            url: href || __classPrivateFieldGet(this, _History_location, \"f\").href\n        }\n    ], \"f\");\n    __classPrivateFieldSet(this, _History_cur, 0, \"f\");\n};\n\nconst Current = {\n    app: null,\n    router: null,\n    page: null\n};\nconst getCurrentInstance = () => Current;\n\nvar _Location_instances, _Location_url, _Location_noCheckUrl, _Location_window, _Location_reset, _Location_getPreValue, _Location_rollBack, _Location_recordHistory, _Location_checkUrlChange;\nconst INIT_URL = 'https://taro.com';\nconst cache = new RuntimeCache('location');\nclass Location extends Events {\n    constructor(options) {\n        super();\n        _Location_instances.add(this);\n        /* private property */\n        _Location_url.set(this, new URL(INIT_URL));\n        _Location_noCheckUrl.set(this, false);\n        _Location_window.set(this, void 0);\n        __classPrivateFieldSet(this, _Location_window, options.window, \"f\");\n        __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_reset).call(this);\n        this.on('__set_href_without_history__', (href) => {\n            __classPrivateFieldSet(this, _Location_noCheckUrl, true, \"f\");\n            const lastHash = __classPrivateFieldGet(this, _Location_url, \"f\").hash;\n            __classPrivateFieldGet(this, _Location_url, \"f\").href = generateFullUrl(href);\n            if (lastHash !== __classPrivateFieldGet(this, _Location_url, \"f\").hash) {\n                __classPrivateFieldGet(this, _Location_window, \"f\").trigger('hashchange');\n            }\n            __classPrivateFieldSet(this, _Location_noCheckUrl, false, \"f\");\n        }, null);\n        // 切换上下文行为\n        this.on(CONTEXT_ACTIONS.INIT, () => {\n            __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_reset).call(this);\n        }, null);\n        this.on(CONTEXT_ACTIONS.RESTORE, (pageId) => {\n            cache.set(pageId, {\n                lastHref: this.href,\n            });\n        }, null);\n        this.on(CONTEXT_ACTIONS.RECOVER, (pageId) => {\n            // 数据恢复时，不需要执行跳转\n            if (cache.has(pageId)) {\n                const ctx = cache.get(pageId);\n                __classPrivateFieldSet(this, _Location_noCheckUrl, true, \"f\");\n                __classPrivateFieldGet(this, _Location_url, \"f\").href = ctx.lastHref;\n                __classPrivateFieldSet(this, _Location_noCheckUrl, false, \"f\");\n            }\n        }, null);\n        this.on(CONTEXT_ACTIONS.DESTORY, (pageId) => {\n            cache.delete(pageId);\n        }, null);\n    }\n    /* public property */\n    get protocol() {\n        return __classPrivateFieldGet(this, _Location_url, \"f\").protocol;\n    }\n    set protocol(val) {\n        const REG = /^(http|https):$/i;\n        if (!val || !isString(val) || !REG.test(val.trim()))\n            return;\n        val = val.trim();\n        const preValue = __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_getPreValue).call(this);\n        __classPrivateFieldGet(this, _Location_url, \"f\").protocol = val;\n        if (__classPrivateFieldGet(this, _Location_instances, \"m\", _Location_checkUrlChange).call(this, preValue))\n            __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_recordHistory).call(this);\n    }\n    get host() {\n        return __classPrivateFieldGet(this, _Location_url, \"f\").host;\n    }\n    set host(val) {\n        if (!val || !isString(val))\n            return;\n        val = val.trim();\n        const preValue = __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_getPreValue).call(this);\n        __classPrivateFieldGet(this, _Location_url, \"f\").host = val;\n        if (__classPrivateFieldGet(this, _Location_instances, \"m\", _Location_checkUrlChange).call(this, preValue))\n            __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_recordHistory).call(this);\n    }\n    get hostname() {\n        return __classPrivateFieldGet(this, _Location_url, \"f\").hostname;\n    }\n    set hostname(val) {\n        if (!val || !isString(val))\n            return;\n        val = val.trim();\n        const preValue = __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_getPreValue).call(this);\n        __classPrivateFieldGet(this, _Location_url, \"f\").hostname = val;\n        if (__classPrivateFieldGet(this, _Location_instances, \"m\", _Location_checkUrlChange).call(this, preValue))\n            __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_recordHistory).call(this);\n    }\n    get port() {\n        return __classPrivateFieldGet(this, _Location_url, \"f\").port;\n    }\n    set port(val) {\n        const xVal = Number((val = val.trim()));\n        if (!isNumber(xVal) || xVal <= 0)\n            return;\n        const preValue = __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_getPreValue).call(this);\n        __classPrivateFieldGet(this, _Location_url, \"f\").port = val;\n        if (__classPrivateFieldGet(this, _Location_instances, \"m\", _Location_checkUrlChange).call(this, preValue))\n            __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_recordHistory).call(this);\n    }\n    get pathname() {\n        return __classPrivateFieldGet(this, _Location_url, \"f\").pathname;\n    }\n    set pathname(val) {\n        if (!val || !isString(val))\n            return;\n        val = val.trim();\n        const preValue = __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_getPreValue).call(this);\n        __classPrivateFieldGet(this, _Location_url, \"f\").pathname = val;\n        if (__classPrivateFieldGet(this, _Location_instances, \"m\", _Location_checkUrlChange).call(this, preValue))\n            __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_recordHistory).call(this);\n    }\n    get search() {\n        return __classPrivateFieldGet(this, _Location_url, \"f\").search;\n    }\n    set search(val) {\n        if (!val || !isString(val))\n            return;\n        val = val.trim();\n        val = val.startsWith('?') ? val : `?${val}`;\n        const preValue = __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_getPreValue).call(this);\n        __classPrivateFieldGet(this, _Location_url, \"f\").search = val;\n        if (__classPrivateFieldGet(this, _Location_instances, \"m\", _Location_checkUrlChange).call(this, preValue))\n            __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_recordHistory).call(this);\n    }\n    get hash() {\n        return __classPrivateFieldGet(this, _Location_url, \"f\").hash;\n    }\n    // 小程序的navigateTo存在截断hash字符串的问题\n    set hash(val) {\n        if (!val || !isString(val))\n            return;\n        val = val.trim();\n        val = val.startsWith('#') ? val : `#${val}`;\n        const preValue = __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_getPreValue).call(this);\n        __classPrivateFieldGet(this, _Location_url, \"f\").hash = val;\n        if (__classPrivateFieldGet(this, _Location_instances, \"m\", _Location_checkUrlChange).call(this, preValue))\n            __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_recordHistory).call(this);\n    }\n    get href() {\n        return __classPrivateFieldGet(this, _Location_url, \"f\").href;\n    }\n    set href(val) {\n        const REG = /^(http:|https:)?\\/\\/.+/;\n        if (!val || !isString(val) || !REG.test((val = val.trim())))\n            return;\n        const preValue = __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_getPreValue).call(this);\n        __classPrivateFieldGet(this, _Location_url, \"f\").href = val;\n        if (__classPrivateFieldGet(this, _Location_instances, \"m\", _Location_checkUrlChange).call(this, preValue))\n            __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_recordHistory).call(this);\n    }\n    get origin() {\n        return __classPrivateFieldGet(this, _Location_url, \"f\").origin;\n    }\n    set origin(val) {\n        const REG = /^(http:|https:)?\\/\\/.+/;\n        if (!val || !isString(val) || !REG.test((val = val.trim())))\n            return;\n        const preValue = __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_getPreValue).call(this);\n        __classPrivateFieldGet(this, _Location_url, \"f\").origin = val;\n        if (__classPrivateFieldGet(this, _Location_instances, \"m\", _Location_checkUrlChange).call(this, preValue))\n            __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_recordHistory).call(this);\n    }\n    /* public method */\n    assign() {\n        warn(true, '小程序环境中调用location.assign()无效.');\n    }\n    reload() {\n        warn(true, '小程序环境中调用location.reload()无效.');\n    }\n    replace(url) {\n        this.trigger('__set_href_without_history__', url);\n    }\n    toString() {\n        return this.href;\n    }\n    // For debug\n    get cache() {\n        return cache;\n    }\n}\n_Location_url = new WeakMap(), _Location_noCheckUrl = new WeakMap(), _Location_window = new WeakMap(), _Location_instances = new WeakSet(), _Location_reset = function _Location_reset() {\n    const Current = getCurrentInstance();\n    const router = Current.router;\n    if (router) {\n        const { path, params } = router;\n        const searchArr = Object.keys(params).map((key) => {\n            return `${key}=${params[key]}`;\n        });\n        const searchStr = searchArr.length > 0 ? '?' + searchArr.join('&') : '';\n        const url = `${INIT_URL}${path.startsWith('/') ? path : '/' + path}${searchStr}`;\n        __classPrivateFieldSet(this, _Location_url, new URL(url), \"f\");\n        this.trigger('__reset_history__', this.href);\n    }\n}, _Location_getPreValue = function _Location_getPreValue() {\n    return __classPrivateFieldGet(this, _Location_url, \"f\")._toRaw();\n}, _Location_rollBack = function _Location_rollBack(href) {\n    __classPrivateFieldGet(this, _Location_url, \"f\").href = href;\n}, _Location_recordHistory = function _Location_recordHistory() {\n    this.trigger('__record_history__', this.href);\n}, _Location_checkUrlChange = function _Location_checkUrlChange(preValue) {\n    if (__classPrivateFieldGet(this, _Location_noCheckUrl, \"f\")) {\n        return false;\n    }\n    const { protocol, hostname, port, pathname, search, hash } = __classPrivateFieldGet(this, _Location_url, \"f\")._toRaw();\n    // 跨域三要素不允许修改\n    if (protocol !== preValue.protocol || hostname !== preValue.hostname || port !== preValue.port) {\n        __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_rollBack).call(this, preValue.href);\n        return false;\n    }\n    // pathname\n    if (pathname !== preValue.pathname) {\n        return true;\n    }\n    // search\n    if (search !== preValue.search) {\n        return true;\n    }\n    // hashchange\n    if (hash !== preValue.hash) {\n        __classPrivateFieldGet(this, _Location_window, \"f\").trigger('hashchange');\n        return true;\n    }\n    __classPrivateFieldGet(this, _Location_instances, \"m\", _Location_rollBack).call(this, preValue.href);\n    return false;\n};\nfunction generateFullUrl(val = '') {\n    const origin = INIT_URL;\n    if (/^[/?#]/.test(val)) {\n        return origin + val;\n    }\n    return val;\n}\n\nconst machine = 'Macintosh';\nconst arch = 'Intel Mac OS X 10_14_5';\nconst engine = 'AppleWebKit/534.36 (KHTML, like Gecko) NodeJS/v4.1.0 Chrome/76.0.3809.132 Safari/534.36';\nconst msg = '(' + machine + '; ' + arch + ') ' + engine;\nconst nav = isWebPlatform() ? env.window.navigator : {\n    appCodeName: 'Mozilla',\n    appName: 'Netscape',\n    appVersion: '5.0 ' + msg,\n    cookieEnabled: true,\n    mimeTypes: [],\n    onLine: true,\n    platform: 'MacIntel',\n    plugins: [],\n    product: 'Taro',\n    productSub: '20030107',\n    userAgent: 'Mozilla/5.0 ' + msg,\n    vendor: 'Joyent',\n    vendorSub: ''\n};\n\n// https://github.com/myrne/performance-now\nlet now;\n(function () {\n    let loadTime;\n    if ((typeof performance !== 'undefined' && performance !== null) && performance.now) {\n        now = () => performance.now();\n    }\n    else if (Date.now) {\n        loadTime = Date.now();\n        now = () => Date.now() - loadTime;\n    }\n    else {\n        loadTime = new Date().getTime();\n        now = () => new Date().getTime() - loadTime;\n    }\n})();\nlet lastTime = 0;\n// https://gist.github.com/paulirish/1579671\n// https://gist.github.com/jalbam/5fe05443270fa6d8136238ec72accbc0\nconst _raf = typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame !== null ? requestAnimationFrame : function (callback) {\n    const _now = now();\n    const nextTime = Math.max(lastTime + 16, _now); // First time will execute it immediately but barely noticeable and performance is gained.\n    return setTimeout(function () { callback(lastTime = nextTime); }, nextTime - _now);\n};\nconst _caf = typeof cancelAnimationFrame !== 'undefined' && cancelAnimationFrame !== null\n    ? cancelAnimationFrame\n    : function (seed) {\n        // fix https://github.com/NervJS/taro/issues/7749\n        clearTimeout(seed);\n    };\n\nlet window$1;\nif (process.env.TARO_ENV && !isWebPlatform()) {\n    class Window extends Events {\n        constructor() {\n            super();\n            this.navigator = nav;\n            this.requestAnimationFrame = _raf;\n            this.cancelAnimationFrame = _caf;\n            this.getComputedStyle = getComputedStyle;\n            const globalProperties = [\n                ...Object.getOwnPropertyNames(global || {}),\n                ...Object.getOwnPropertySymbols(global || {})\n            ];\n            globalProperties.forEach(property => {\n                if (property === 'atob' || property === 'document')\n                    return;\n                if (!Object.prototype.hasOwnProperty.call(this, property)) {\n                    // 防止小程序环境下，window 上的某些 get 属性在赋值时报错\n                    try {\n                        this[property] = global[property];\n                    }\n                    catch (e) {\n                        if (process.env.NODE_ENV !== 'production') {\n                            console.warn(`[Taro warn] window.${String(property)} 在赋值到 window 时报错`);\n                        }\n                    }\n                }\n            });\n            this.Date || (this.Date = Date);\n            // 应用启动时，提供给需要读取历史信息的库使用\n            this.location = new Location({ window: this });\n            this.history = new History(this.location, { window: this });\n            this.initEvent();\n        }\n        initEvent() {\n            const _location = this.location;\n            const _history = this.history;\n            this.on(CONTEXT_ACTIONS.INIT, (pageId) => {\n                // 页面onload，为该页面建立新的上下文信息\n                _location.trigger(CONTEXT_ACTIONS.INIT, pageId);\n            }, null);\n            this.on(CONTEXT_ACTIONS.RECOVER, (pageId) => {\n                // 页面onshow，恢复当前页面的上下文信息\n                _location.trigger(CONTEXT_ACTIONS.RECOVER, pageId);\n                _history.trigger(CONTEXT_ACTIONS.RECOVER, pageId);\n            }, null);\n            this.on(CONTEXT_ACTIONS.RESTORE, (pageId) => {\n                // 页面onhide，缓存当前页面的上下文信息\n                _location.trigger(CONTEXT_ACTIONS.RESTORE, pageId);\n                _history.trigger(CONTEXT_ACTIONS.RESTORE, pageId);\n            }, null);\n            this.on(CONTEXT_ACTIONS.DESTORY, (pageId) => {\n                // 页面onunload，清除当前页面的上下文信息\n                _location.trigger(CONTEXT_ACTIONS.DESTORY, pageId);\n                _history.trigger(CONTEXT_ACTIONS.DESTORY, pageId);\n            }, null);\n        }\n        get document() {\n            return env.document;\n        }\n        addEventListener(event, callback) {\n            if (!isString(event))\n                return;\n            this.on(event, callback, null);\n        }\n        removeEventListener(event, callback) {\n            if (!isString(event))\n                return;\n            this.off(event, callback, null);\n        }\n        setTimeout(...args) {\n            return setTimeout(...args);\n        }\n        clearTimeout(...args) {\n            return clearTimeout(...args);\n        }\n    }\n    window$1 = env.window = new Window();\n}\nelse {\n    window$1 = env.window;\n}\nconst location = window$1.location;\nconst history = window$1.history;\n\n// for Vue3\nclass SVGElement extends TaroElement {\n}\n\n/* eslint-disable dot-notation */\nconst instances = new Map();\nconst pageId = incrementId();\nconst isWeb = isWebPlatform();\nfunction injectPageInstance(inst, id) {\n    hooks.call('mergePageInstance', instances.get(id), inst);\n    instances.set(id, inst);\n}\nfunction getPageInstance(id) {\n    return instances.get(id);\n}\nfunction removePageInstance(id) {\n    instances.delete(id);\n}\nfunction addLeadingSlash(path) {\n    if (path == null) {\n        return '';\n    }\n    return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction safeExecute(path, lifecycle, ...args) {\n    const instance = instances.get(path);\n    if (instance == null) {\n        return;\n    }\n    const func = hooks.call('getLifecycle', instance, lifecycle);\n    if (isArray(func)) {\n        const res = func.map(fn => fn.apply(instance, args));\n        return res[0];\n    }\n    if (!isFunction(func)) {\n        return;\n    }\n    return func.apply(instance, args);\n}\nfunction stringify(obj) {\n    if (obj == null) {\n        return '';\n    }\n    const path = Object.keys(obj).map((key) => {\n        return key + '=' + obj[key];\n    }).join('&');\n    return path === '' ? path : '?' + path;\n}\nfunction getPath(id, options) {\n    const idx = id.indexOf('?');\n    if (isWeb) {\n        return `${idx > -1 ? id.substring(0, idx) : id}${stringify((options === null || options === void 0 ? void 0 : options.stamp) ? { stamp: options.stamp } : {})}`;\n    }\n    else {\n        return `${idx > -1 ? id.substring(0, idx) : id}${stringify(options)}`;\n    }\n}\nfunction getOnReadyEventKey(path) {\n    return path + '.' + ON_READY;\n}\nfunction getOnShowEventKey(path) {\n    return path + '.' + ON_SHOW;\n}\nfunction getOnHideEventKey(path) {\n    return path + '.' + ON_HIDE;\n}\nfunction createPageConfig(component, pageName, data, pageConfig) {\n    // 小程序 Page 构造器是一个傲娇小公主，不能把复杂的对象挂载到参数上\n    const id = pageName !== null && pageName !== void 0 ? pageName : `taro_page_${pageId()}`;\n    const [ONLOAD, ONUNLOAD, ONREADY, ONSHOW, ONHIDE, LIFECYCLES, SIDE_EFFECT_LIFECYCLES,] = hooks.call('getMiniLifecycleImpl').page;\n    let pageElement = null;\n    let unmounting = false;\n    let prepareMountList = [];\n    function setCurrentRouter(page) {\n        const router = isWeb ? page.$taroPath : page.route || page.__route__ || page.$taroPath;\n        Current.router = {\n            params: page.$taroParams,\n            path: addLeadingSlash(router),\n            $taroPath: page.$taroPath,\n            onReady: getOnReadyEventKey(id),\n            onShow: getOnShowEventKey(id),\n            onHide: getOnHideEventKey(id)\n        };\n        if (!isUndefined(page.exitState)) {\n            Current.router.exitState = page.exitState;\n        }\n    }\n    let loadResolver;\n    let hasLoaded;\n    const config = {\n        [ONLOAD](options = {}, cb) {\n            hasLoaded = new Promise(resolve => { loadResolver = resolve; });\n            perf.start(PAGE_INIT);\n            Current.page = this;\n            this.config = pageConfig || {};\n            // this.$taroPath 是页面唯一标识\n            const uniqueOptions = Object.assign({}, options, { $taroTimestamp: Date.now() });\n            const $taroPath = this.$taroPath = getPath(id, uniqueOptions);\n            if (isWeb) {\n                config.path = $taroPath;\n            }\n            // this.$taroParams 作为暴露给开发者的页面参数对象，可以被随意修改\n            if (this.$taroParams == null) {\n                this.$taroParams = uniqueOptions;\n            }\n            setCurrentRouter(this);\n            // 初始化当前页面的上下文信息\n            if (!isWeb) {\n                window$1.trigger(CONTEXT_ACTIONS.INIT, $taroPath);\n            }\n            const mount = () => {\n                Current.app.mount(component, $taroPath, () => {\n                    pageElement = env.document.getElementById($taroPath);\n                    ensure(pageElement !== null, '没有找到页面实例。');\n                    safeExecute($taroPath, ON_LOAD, this.$taroParams);\n                    loadResolver();\n                    if (!isWeb) {\n                        pageElement.ctx = this;\n                        pageElement.performUpdate(true, cb);\n                    }\n                    else {\n                        isFunction(cb) && cb();\n                    }\n                });\n            };\n            if (unmounting) {\n                prepareMountList.push(mount);\n            }\n            else {\n                mount();\n            }\n        },\n        [ONUNLOAD]() {\n            const $taroPath = this.$taroPath;\n            // 销毁当前页面的上下文信息\n            if (!isWeb) {\n                window$1.trigger(CONTEXT_ACTIONS.DESTORY, $taroPath);\n            }\n            // 触发onUnload生命周期\n            safeExecute($taroPath, ONUNLOAD);\n            unmounting = true;\n            Current.app.unmount($taroPath, () => {\n                unmounting = false;\n                instances.delete($taroPath);\n                if (pageElement) {\n                    pageElement.ctx = null;\n                    pageElement = null;\n                }\n                if (prepareMountList.length) {\n                    prepareMountList.forEach(fn => fn());\n                    prepareMountList = [];\n                }\n            });\n        },\n        [ONREADY]() {\n            hasLoaded.then(() => {\n                // 触发生命周期\n                safeExecute(this.$taroPath, ON_READY);\n                // 通过事件触发子组件的生命周期\n                _raf(() => eventCenter.trigger(getOnReadyEventKey(id)));\n                this.onReady.called = true;\n            });\n        },\n        [ONSHOW](options = {}) {\n            hasLoaded.then(() => {\n                // 设置 Current 的 page 和 router\n                Current.page = this;\n                setCurrentRouter(this);\n                // 恢复上下文信息\n                if (!isWeb) {\n                    window$1.trigger(CONTEXT_ACTIONS.RECOVER, this.$taroPath);\n                }\n                // 触发生命周期\n                safeExecute(this.$taroPath, ON_SHOW, options);\n                // 通过事件触发子组件的生命周期\n                _raf(() => eventCenter.trigger(getOnShowEventKey(id)));\n            });\n        },\n        [ONHIDE]() {\n            // 缓存当前页面上下文信息\n            if (!isWeb) {\n                window$1.trigger(CONTEXT_ACTIONS.RESTORE, this.$taroPath);\n            }\n            // 设置 Current 的 page 和 router\n            if (Current.page === this) {\n                Current.page = null;\n                Current.router = null;\n            }\n            // 触发生命周期\n            safeExecute(this.$taroPath, ON_HIDE);\n            // 通过事件触发子组件的生命周期\n            eventCenter.trigger(getOnHideEventKey(id));\n        }\n    };\n    LIFECYCLES.forEach((lifecycle) => {\n        let isDefer = false;\n        lifecycle = lifecycle.replace(/^defer:/, () => {\n            isDefer = true;\n            return '';\n        });\n        config[lifecycle] = function () {\n            const exec = () => safeExecute(this.$taroPath, lifecycle, ...arguments);\n            if (isDefer) {\n                hasLoaded.then(exec);\n            }\n            else {\n                return exec();\n            }\n        };\n    });\n    // onShareAppMessage 和 onShareTimeline 一样，会影响小程序右上方按钮的选项，因此不能默认注册。\n    SIDE_EFFECT_LIFECYCLES.forEach(lifecycle => {\n        var _a;\n        if (component[lifecycle] ||\n            ((_a = component.prototype) === null || _a === void 0 ? void 0 : _a[lifecycle]) ||\n            component[lifecycle.replace(/^on/, 'enable')] ||\n            (pageConfig === null || pageConfig === void 0 ? void 0 : pageConfig[lifecycle.replace(/^on/, 'enable')])) {\n            config[lifecycle] = function (...args) {\n                var _a;\n                const target = (_a = args[0]) === null || _a === void 0 ? void 0 : _a.target;\n                if (target === null || target === void 0 ? void 0 : target.id) {\n                    const id = target.id;\n                    const element = env.document.getElementById(id);\n                    if (element) {\n                        target.dataset = element.dataset;\n                    }\n                }\n                return safeExecute(this.$taroPath, lifecycle, ...args);\n            };\n        }\n    });\n    config.eh = eventHandler;\n    if (!isUndefined(data)) {\n        config.data = data;\n    }\n    hooks.call('modifyPageObject', config);\n    return config;\n}\nfunction createComponentConfig(component, componentName, data) {\n    const id = componentName !== null && componentName !== void 0 ? componentName : `taro_component_${pageId()}`;\n    let componentElement = null;\n    const [ATTACHED, DETACHED] = hooks.call('getMiniLifecycleImpl').component;\n    const config = {\n        [ATTACHED]() {\n            var _a;\n            perf.start(PAGE_INIT);\n            this.pageIdCache = ((_a = this.getPageId) === null || _a === void 0 ? void 0 : _a.call(this)) || pageId();\n            const path = getPath(id, { id: this.pageIdCache });\n            Current.app.mount(component, path, () => {\n                componentElement = env.document.getElementById(path);\n                ensure(componentElement !== null, '没有找到组件实例。');\n                this.$taroInstances = instances.get(path);\n                safeExecute(path, ON_LOAD);\n                if (!isWeb) {\n                    componentElement.ctx = this;\n                    componentElement.performUpdate(true);\n                }\n            });\n        },\n        [DETACHED]() {\n            const path = getPath(id, { id: this.pageIdCache });\n            Current.app.unmount(path, () => {\n                instances.delete(path);\n                if (componentElement) {\n                    componentElement.ctx = null;\n                }\n            });\n        },\n        methods: {\n            eh: eventHandler\n        }\n    };\n    if (!isUndefined(data)) {\n        config.data = data;\n    }\n    [OPTIONS, EXTERNAL_CLASSES, BEHAVIORS].forEach(key => {\n        var _a;\n        config[key] = (_a = component[key]) !== null && _a !== void 0 ? _a : EMPTY_OBJ;\n    });\n    return config;\n}\nfunction createRecursiveComponentConfig(componentName) {\n    const isCustomWrapper = componentName === CUSTOM_WRAPPER;\n    const [ATTACHED, DETACHED] = hooks.call('getMiniLifecycleImpl').component;\n    const lifeCycles = isCustomWrapper\n        ? {\n            [ATTACHED]() {\n                var _a, _b;\n                const componentId = ((_a = this.data.i) === null || _a === void 0 ? void 0 : _a.sid) || ((_b = this.props.i) === null || _b === void 0 ? void 0 : _b.sid);\n                if (isString(componentId)) {\n                    customWrapperCache.set(componentId, this);\n                    const el = env.document.getElementById(componentId);\n                    if (el) {\n                        el.ctx = this;\n                    }\n                }\n            },\n            [DETACHED]() {\n                var _a, _b;\n                const componentId = ((_a = this.data.i) === null || _a === void 0 ? void 0 : _a.sid) || ((_b = this.props.i) === null || _b === void 0 ? void 0 : _b.sid);\n                if (isString(componentId)) {\n                    customWrapperCache.delete(componentId);\n                    const el = env.document.getElementById(componentId);\n                    if (el) {\n                        el.ctx = null;\n                    }\n                }\n            }\n        }\n        : EMPTY_OBJ;\n    return hooks.call('modifyRecursiveComponentConfig', Object.assign({ properties: {\n            i: {\n                type: Object,\n                value: {\n                    [\"nn\" /* Shortcuts.NodeName */]: getComponentsAlias$1(internalComponents)[VIEW]._num\n                }\n            },\n            l: {\n                type: String,\n                value: ''\n            }\n        }, options: {\n            addGlobalClass: true,\n            virtualHost: !isCustomWrapper\n        }, methods: {\n            eh: eventHandler\n        } }, lifeCycles), { isCustomWrapper });\n}\n\nconst TIMEOUT = 100;\nconst nextTick = (cb, ctx) => {\n    const beginTime = Date.now();\n    const router = Current.router;\n    const timerFunc = () => {\n        setTimeout(function () {\n            ctx ? cb.call(ctx) : cb();\n        }, 1);\n    };\n    if (router === null)\n        return timerFunc();\n    const path = router.$taroPath;\n    /**\n     * 三种情况\n     *   1. 调用 nextTick 时，pendingUpdate 已经从 true 变为 false（即已更新完成），那么需要光等 100ms\n     *   2. 调用 nextTick 时，pendingUpdate 为 true，那么刚好可以搭上便车\n     *   3. 调用 nextTick 时，pendingUpdate 还是 false，框架仍未启动更新逻辑，这时最多轮询 100ms，等待 pendingUpdate 变为 true。\n     */\n    function next() {\n        var _a, _b, _c;\n        const pageElement = env.document.getElementById(path);\n        if (pageElement === null || pageElement === void 0 ? void 0 : pageElement.pendingUpdate) {\n            if (isWebPlatform()) {\n                // eslint-disable-next-line dot-notation\n                (_c = (_b = (_a = pageElement.firstChild) === null || _a === void 0 ? void 0 : _a['componentOnReady']) === null || _b === void 0 ? void 0 : _b.call(_a).then(() => {\n                    timerFunc();\n                })) !== null && _c !== void 0 ? _c : timerFunc();\n            }\n            else {\n                pageElement.enqueueUpdateCallback(cb, ctx);\n            }\n        }\n        else if (Date.now() - beginTime > TIMEOUT) {\n            timerFunc();\n        }\n        else {\n            setTimeout(() => next(), 20);\n        }\n    }\n    next();\n};\n\nexport { A, APP, BEHAVIORS, BODY, CATCHMOVE, CATCH_VIEW, CHANGE, CLASS, COMMENT, CONFIRM, CONTAINER, CONTEXT_ACTIONS, CURRENT_TARGET, CUSTOM_WRAPPER, Current, DATASET, DATE, DOCUMENT_ELEMENT_NAME, DOCUMENT_FRAGMENT, EVENT_CALLBACK_RESULT, EXTERNAL_CLASSES, FOCUS, FormElement, HEAD, HOOKS_APP_ID, HTML, History, ID, INPUT, KEY_CODE, Location, MutationObserver, OBJECT, ON_HIDE, ON_LOAD, ON_READY, ON_SHOW, OPTIONS, PAGE_INIT, PROPERTY_THRESHOLD, PROPS, PURE_VIEW, ROOT_STR, SET_DATA, SET_TIMEOUT, STATIC_VIEW, STYLE, SVGElement, Style, TARGET, TARO_RUNTIME, TIME_STAMP, TOUCHMOVE, TYPE, TaroElement, TaroEvent, TaroNode, TaroRootElement, TaroText, UID, URL, URLSearchParams, VALUE, VIEW, addLeadingSlash, _caf as cancelAnimationFrame, createComponentConfig, createEvent, createPageConfig, createRecursiveComponentConfig, document$1 as document, env, eventCenter, eventHandler, eventSource, getComputedStyle, getCurrentInstance, getOnHideEventKey, getOnReadyEventKey, getOnShowEventKey, getPageInstance, getPath, history, hydrate, incrementId, injectPageInstance, isHasExtractProp, location, nav as navigator, nextTick, now, options, parseUrl, removePageInstance, _raf as requestAnimationFrame, safeExecute, stringify, window$1 as window };\n//# sourceMappingURL=runtime.esm.js.map\n","export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n  return keys;\n}\nexport default function _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n  return target;\n}","export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n  }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}","import _typeof from '@babel/runtime/helpers/typeof';\nimport { Current, getCurrentInstance, options, nextTick, eventCenter, Events } from '@tarojs/runtime';\nimport { isWebPlatform } from '@tarojs/shared';\nimport _objectSpread from '@babel/runtime/helpers/objectSpread2';\nimport _classCallCheck from '@babel/runtime/helpers/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/createClass';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\n\nfunction isFunction(x) {\n  return typeof x === 'function';\n}\nfunction isUndefined(x) {\n  return typeof x === 'undefined';\n}\nfunction isObject(x) {\n  return x && _typeof(x) === 'object';\n}\n\nvar isBadObj = function isBadObj(x) {\n  return !isObject(x);\n};\nfunction throwTypeError(s) {\n  throw new TypeError(s);\n}\nif (!isFunction(Object.assign)) {\n  // Must be writable: true, enumerable: false, configurable: true\n  Object.assign = function (target) {\n    // .length of function is 2\n    if (target == null) {\n      // TypeError if undefined or null\n      throwTypeError('Cannot convert undefined or null to object');\n    }\n    var to = Object(target);\n    for (var index = 1; index < arguments.length; index++) {\n      var nextSource = arguments[index];\n      if (nextSource != null) {\n        // Skip over if undefined or null\n        for (var nextKey in nextSource) {\n          // Avoid bugs when hasOwnProperty is shadowed\n          if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n    return to;\n  };\n}\nif (!isFunction(Object.defineProperties)) {\n  Object.defineProperties = function (obj, properties) {\n    function convertToDescriptor(desc) {\n      function hasProperty(obj, prop) {\n        return Object.prototype.hasOwnProperty.call(obj, prop);\n      }\n      if (isBadObj(desc)) {\n        throwTypeError('bad desc');\n      }\n      var d = {};\n      if (hasProperty(desc, 'enumerable')) d.enumerable = !!desc.enumerable;\n      if (hasProperty(desc, 'configurable')) {\n        d.configurable = !!desc.configurable;\n      }\n      if (hasProperty(desc, 'value')) d.value = desc.value;\n      if (hasProperty(desc, 'writable')) d.writable = !!desc.writable;\n      if (hasProperty(desc, 'get')) {\n        var g = desc.get;\n        if (!isFunction(g) && !isUndefined(g)) {\n          throwTypeError('bad get');\n        }\n        d.get = g;\n      }\n      if (hasProperty(desc, 'set')) {\n        var s = desc.set;\n        if (!isFunction(s) && !isUndefined(s)) {\n          throwTypeError('bad set');\n        }\n        d.set = s;\n      }\n      if (('get' in d || 'set' in d) && ('value' in d || 'writable' in d)) {\n        throwTypeError('identity-confused descriptor');\n      }\n      return d;\n    }\n    if (isBadObj(obj)) throwTypeError('bad obj');\n    properties = Object(properties);\n    var keys = Object.keys(properties);\n    var descs = [];\n    for (var i = 0; i < keys.length; i++) {\n      descs.push([keys[i], convertToDescriptor(properties[keys[i]])]);\n    }\n    for (var _i = 0; _i < descs.length; _i++) {\n      Object.defineProperty(obj, descs[_i][0], descs[_i][1]);\n    }\n    return obj;\n  };\n}\n\nvar ENV_TYPE = {\n  WEAPP: 'WEAPP',\n  SWAN: 'SWAN',\n  ALIPAY: 'ALIPAY',\n  TT: 'TT',\n  QQ: 'QQ',\n  JD: 'JD',\n  WEB: 'WEB',\n  RN: 'RN',\n  HARMONY: 'HARMONY',\n  QUICKAPP: 'QUICKAPP'\n};\nvar isWeb = isWebPlatform();\nfunction getEnv() {\n  if (process.env.TARO_ENV === 'weapp') {\n    return ENV_TYPE.WEAPP;\n  } else if (process.env.TARO_ENV === 'alipay') {\n    return ENV_TYPE.ALIPAY;\n  } else if (process.env.TARO_ENV === 'swan') {\n    return ENV_TYPE.SWAN;\n  } else if (process.env.TARO_ENV === 'tt') {\n    return ENV_TYPE.TT;\n  } else if (process.env.TARO_ENV === 'jd') {\n    return ENV_TYPE.JD;\n  } else if (process.env.TARO_ENV === 'qq') {\n    return ENV_TYPE.QQ;\n  } else if (isWeb) {\n    return ENV_TYPE.WEB;\n  } else if (process.env.TARO_ENV === 'rn') {\n    return ENV_TYPE.RN;\n  } else if (process.env.TARO_ENV === 'harmony') {\n    return ENV_TYPE.HARMONY;\n  } else if (process.env.TARO_ENV === 'quickapp') {\n    return ENV_TYPE.QUICKAPP;\n  } else {\n    return process.env.TARO_ENV || 'Unknown';\n  }\n}\n\nvar Chain = /*#__PURE__*/function () {\n  function Chain(requestParams, interceptors, index) {\n    _classCallCheck(this, Chain);\n    this.index = index || 0;\n    this.requestParams = requestParams;\n    this.interceptors = interceptors || [];\n  }\n  _createClass(Chain, [{\n    key: \"proceed\",\n    value: function proceed(requestParams) {\n      this.requestParams = requestParams;\n      if (this.index >= this.interceptors.length) {\n        throw new Error('chain 参数错误, 请勿直接修改 request.chain');\n      }\n      var nextInterceptor = this._getNextInterceptor();\n      var nextChain = this._getNextChain();\n      var p = nextInterceptor(nextChain);\n      var res = p.catch(function (err) {\n        return Promise.reject(err);\n      });\n      Object.keys(p).forEach(function (k) {\n        return isFunction(p[k]) && (res[k] = p[k]);\n      });\n      return res;\n    }\n  }, {\n    key: \"_getNextInterceptor\",\n    value: function _getNextInterceptor() {\n      return this.interceptors[this.index];\n    }\n  }, {\n    key: \"_getNextChain\",\n    value: function _getNextChain() {\n      return new Chain(this.requestParams, this.interceptors, this.index + 1);\n    }\n  }]);\n  return Chain;\n}();\n\nvar Link = /*#__PURE__*/function () {\n  function Link(interceptor) {\n    _classCallCheck(this, Link);\n    this.taroInterceptor = interceptor;\n    this.chain = new Chain();\n  }\n  _createClass(Link, [{\n    key: \"request\",\n    value: function request(requestParams) {\n      var chain = this.chain;\n      var taroInterceptor = this.taroInterceptor;\n      chain.interceptors = chain.interceptors.filter(function (interceptor) {\n        return interceptor !== taroInterceptor;\n      }).concat(taroInterceptor);\n      return chain.proceed(_objectSpread({}, requestParams));\n    }\n  }, {\n    key: \"addInterceptor\",\n    value: function addInterceptor(interceptor) {\n      this.chain.interceptors.push(interceptor);\n    }\n  }, {\n    key: \"cleanInterceptors\",\n    value: function cleanInterceptors() {\n      this.chain = new Chain();\n    }\n  }]);\n  return Link;\n}();\nfunction interceptorify(promiseifyApi) {\n  return new Link(function (chain) {\n    return promiseifyApi(chain.requestParams);\n  });\n}\n\nfunction timeoutInterceptor(chain) {\n  var requestParams = chain.requestParams;\n  var p;\n  var res = new Promise(function (resolve, reject) {\n    var timeout = setTimeout(function () {\n      timeout = null;\n      reject(new Error('网络链接超时,请稍后再试！'));\n    }, requestParams && requestParams.timeout || 60000);\n    p = chain.proceed(requestParams);\n    p.then(function (res) {\n      if (!timeout) return;\n      clearTimeout(timeout);\n      resolve(res);\n    }).catch(function (err) {\n      timeout && clearTimeout(timeout);\n      reject(err);\n    });\n  });\n  if (!isUndefined(p) && isFunction(p.abort)) res.abort = p.abort;\n  return res;\n}\nfunction logInterceptor(chain) {\n  var requestParams = chain.requestParams;\n  var method = requestParams.method,\n    data = requestParams.data,\n    url = requestParams.url;\n\n  // eslint-disable-next-line no-console\n  console.log(\"http \".concat(method || 'GET', \" --> \").concat(url, \" data: \"), data);\n  var p = chain.proceed(requestParams);\n  var res = p.then(function (res) {\n    // eslint-disable-next-line no-console\n    console.log(\"http <-- \".concat(url, \" result:\"), res);\n    return res;\n  });\n  if (isFunction(p.abort)) res.abort = p.abort;\n  return res;\n}\n\nvar interceptors = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  timeoutInterceptor: timeoutInterceptor,\n  logInterceptor: logInterceptor\n});\n\nfunction Behavior(options) {\n  return options;\n}\nfunction getPreload(current) {\n  return function (key, val) {\n    current.preloadData = isObject(key) ? key : _defineProperty({}, key, val);\n  };\n}\nvar defaultDesignWidth = 750;\nvar defaultDesignRatio = {\n  640: 2.34 / 2,\n  750: 1,\n  828: 1.81 / 2\n};\nvar defaultBaseFontSize = 20;\nvar defaultUnitPrecision = 5;\nvar defaultTargetUnit = 'rpx';\nfunction getInitPxTransform(taro) {\n  return function (config) {\n    var _config$designWidth = config.designWidth,\n      designWidth = _config$designWidth === void 0 ? defaultDesignWidth : _config$designWidth,\n      _config$deviceRatio = config.deviceRatio,\n      deviceRatio = _config$deviceRatio === void 0 ? defaultDesignRatio : _config$deviceRatio,\n      _config$baseFontSize = config.baseFontSize,\n      baseFontSize = _config$baseFontSize === void 0 ? defaultBaseFontSize : _config$baseFontSize,\n      _config$targetUnit = config.targetUnit,\n      targetUnit = _config$targetUnit === void 0 ? defaultTargetUnit : _config$targetUnit,\n      _config$unitPrecision = config.unitPrecision,\n      unitPrecision = _config$unitPrecision === void 0 ? defaultUnitPrecision : _config$unitPrecision;\n    taro.config = taro.config || {};\n    taro.config.designWidth = designWidth;\n    taro.config.deviceRatio = deviceRatio;\n    taro.config.baseFontSize = baseFontSize;\n    taro.config.targetUnit = targetUnit;\n    taro.config.unitPrecision = unitPrecision;\n  };\n}\nfunction getPxTransform(taro) {\n  return function (size) {\n    var config = taro.config || {};\n    var baseFontSize = config.baseFontSize;\n    var deviceRatio = config.deviceRatio || defaultDesignRatio;\n    var designWidth = function () {\n      var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      return isFunction(config.designWidth) ? config.designWidth(input) : config.designWidth || defaultDesignWidth;\n    }(size);\n    if (!(designWidth in deviceRatio)) {\n      throw new Error(\"deviceRatio \\u914D\\u7F6E\\u4E2D\\u4E0D\\u5B58\\u5728 \".concat(designWidth, \" \\u7684\\u8BBE\\u7F6E\\uFF01\"));\n    }\n    var targetUnit = config.targetUnit || defaultTargetUnit;\n    var unitPrecision = config.unitPrecision || defaultUnitPrecision;\n    var formatSize = ~~size;\n    var rootValue = 1 / deviceRatio[designWidth];\n    switch (targetUnit) {\n      case 'rem':\n        rootValue *= baseFontSize * 2;\n        break;\n      case 'px':\n        rootValue *= 2;\n        break;\n    }\n    var val = formatSize / rootValue;\n    if (unitPrecision >= 0 && unitPrecision <= 100) {\n      val = Number(val.toFixed(unitPrecision));\n    }\n    return val + targetUnit;\n  };\n}\n\n/* eslint-disable camelcase */\nvar Taro = {\n  Behavior: Behavior,\n  getEnv: getEnv,\n  ENV_TYPE: ENV_TYPE,\n  Link: Link,\n  interceptors: interceptors,\n  Current: Current,\n  getCurrentInstance: getCurrentInstance,\n  options: options,\n  nextTick: nextTick,\n  eventCenter: eventCenter,\n  Events: Events,\n  getInitPxTransform: getInitPxTransform,\n  interceptorify: interceptorify\n};\nTaro.initPxTransform = getInitPxTransform(Taro);\nTaro.preload = getPreload(Current);\nTaro.pxTransform = getPxTransform(Taro);\n\nexport { Taro as default };\n//# sourceMappingURL=index.esm.js.map\n","const { hooks } = require('@tarojs/runtime')\nconst taro = require('@tarojs/api').default\n\nif (hooks.isExist('initNativeApi')) {\n  hooks.call('initNativeApi', taro)\n}\n\nmodule.exports = taro\nmodule.exports.default = module.exports\n"],"names":["DEFAULT_EMPTY_ARRAY","NO_DEFAULT_VALUE","DEFAULT_TRUE","DEFAULT_FALSE","touchEvents","animation","singleQuote","View","Icon","MapComp","Progress","RichText","Text","Button","Checkbox","CheckboxGroup","Form","Input","Label","Picker","PickerView","PickerViewColumn","Radio","RadioGroup","Slider","Switch","Textarea","CoverImage","CoverView","MovableArea","MovableView","ScrollView","Swiper","SwiperItem","Navigator","Audio","Camera","Image","LivePlayer","Video","Canvas","Ad","WebView","Block","SlotView","Slot","NativeSlot","internalComponents","controlledComponent","PLATFORM_TYPE","Events","opts","_a","eventName","callback","context","event","tail","_eventName","calls","list","node","events","wrapper","args","_events","cb","ctx","isString","o","isUndefined","isNull","isObject","isFunction","isNumber","isArray","isWebPlatform","HOOK_TYPE","defaultMiniLifecycle","TaroHook","type","initial","TaroHooks","hooks","hookName","rest","hook","res","defaultConfig","instance","lifecycle","indexOfNode","proxyObj","e","error","EMPTY_OBJ","noop","_","toDashed","toCamelCase","camel","nextCap","i","ensure","condition","msg","reportIssue","warn","getComponentsAlias","origin","mapping","viewAttrs","extraList","a","b","reg","isACommonly","isBCommonly","key","num","obj","attr","index","PROPERTY_THRESHOLD","TARO_RUNTIME","HOOKS_APP_ID","SET_DATA","PAGE_INIT","ROOT_STR","HTML","HEAD","BODY","APP","CONTAINER","DOCUMENT_ELEMENT_NAME","DOCUMENT_FRAGMENT","ID","UID","CLASS","STYLE","FOCUS","VIEW","STATIC_VIEW","PURE_VIEW","PROPS","DATASET","OBJECT","VALUE","INPUT","CHANGE","CUSTOM_WRAPPER","TARGET","CURRENT_TARGET","TYPE","CONFIRM","TIME_STAMP","KEY_CODE","TOUCHMOVE","DATE","SET_TIMEOUT","CATCHMOVE","CATCH_VIEW","COMMENT","ON_LOAD","ON_READY","ON_SHOW","ON_HIDE","OPTIONS","EXTERNAL_CLASSES","EVENT_CALLBACK_RESULT","BEHAVIORS","A","CONTEXT_ACTIONS","observers","MutationObserverImpl","target","options","sidMatches","observerTarget","isConcerned","record","characterData","characterDataOldValue","attributes","attributeOldValue","childList","pendingMuatations","logMutation","observer","recordMutation","t","MutationObserver","incrementId","chatCodes","chatCodesLen","item","tailIdx","isElement","isText","isComment","isHasExtractProp","el","prop","isParentBinded","shortcutAttr","customWrapperCache","extend","ctor","methodName","componentsAlias$1","getComponentsAlias$1","ClassList","className","token","updated","tokens","length","tokenList","force","result","method","replacement_token","v","EventSource","child","sid","uid","childNodes","eventSource","isWeb$1","env","SPECIAL_NODES","componentsAlias","hydrate","nodeName","data","props","propInCamelCase","cssText","nn","componentAlias","TaroEventTarget","handler","isCapture","isOnce","oldHandler","handlers","CHILDNODES","nodeId","TaroNode","isClean","cleanChildNodes","rerenderChildNodes","childIndex","refChild","parentNode","text","removedNodes","addedNodes","newText","newChild","isReplace","previousValue","currentValue","childNodesLength","oldChild","cleanRef","doUpdate","payload","WEBKIT","styleProperties","combine","prefix","excludeSelf","color","style","width","image","size","color_style_width","fitlength_fitwidth_image","fitlength_fitwidth_image_radius","color_style_width_fitlength_fitwidth_image","endRadius_startRadius","bottom_left_right_top","end_start","content_items_self","blockSize_height_inlineSize_width","after_before","recordCss","enqueueUpdate","element","setStyle","newVal","styleKey","initStyle","properties","val","isCssVariable","propertyName","Style","texts","styleName","str","rules","rule","propName","valList","value","newStyleProperties","returnTrue","treeToArray","root","predict","array","filter","object","following","firstChild","isElmentTypeValid","current","nextSibling","TaroElement","listeners","l","propKeys","qualifiedName","isPureView","_alias","viewAlias","staticViewAlias","catchViewAlias","_path","qualifiedNameInCamelCase","qualifiedNameAlias","isStaticView","pureViewAlias","tagName","classNames","classList","c","cancelable","listener","name","sideEffect","alias","valueAlias","initPosition","feedPosition","position","len","start","end","jumpPosition","copyPosition","whitespace","isWhitespaceChar","char","equalSign","isEqualSignChar","shouldBeIgnore","alphanumeric","findTextEnd","textEnd","isWordEnd","cursor","wordBegin","html","Scaner","content","contentEnd","commentEnd","close","quote","words","wLen","word","secondWord","newWord","thirdWord","safeTagName","nextTag","unquote","car","LEFT_BRACKET","RIGHT_BRACKET","CLASS_SELECTOR","ID_SELECTOR","CHILD_COMBINATOR","GENERAL_SIBLING_COMBINATOR","ADJACENT_SIBLING_COMBINATOR","StyleTagParser","src","REG_STYLE","$1","lb","rb","selectors","selectorList","firstChar","selector","all","sortStyles","idx","nextSelector","isMatch","prev","getPreviousElement","cls","styles","s1","s2","hundreds1","getHundredsWeight","hundreds2","tens1","getTensWeight","tens2","ones1","getOnesWeight","ones2","pre","cur","makeMap","expectsLowerCase","map","specialMiniElements","internalCompsList","isMiniElements","isInlineElements","isBlockElements","closingTagAncestorBreakers","hasTerminalParent","stack","tagParents","currentIndex","parentTagName","getTagName","tag","splitEqual","sep","format","children","document","styleOptions","parent","styleTagParser","descendantList","parser","parse","state","nodes","tagToken","shouldRewind","shouldRewindToAutoClose","previousIndex","attrToken","innerState","setInnerHTML","getBoundingClientRectImpl","resolve","getTemplateContent","insertAdjacentHTML","_b","parsedNodes","n","cloneNode","isDeep","newNode","contains","isContains","childNode","TaroEvent","_c","_d","cacheTarget","_e","_f","_g","_h","cacheCurrentTarget","doc","currentTarget","targetElement","createEvent","domEv","eventsBatch","getEventCBResult","eventHandler","id","dispatch","fn","FormElement","Performance","now","time","perf","findCustomWrapper","dataPathArr","currentData","customWrapper","splitedPath","TaroRootElement","initRender","prerender","setDataMark","resetPaths","path","p","normalUpdate","customWrapperMap","found","customWrapperCount","isNeedNormalUpdate","updateArrLen","executeTime","updateCallbacks","copies","TaroText","__classPrivateFieldGet","receiver","kind","f","__classPrivateFieldSet","_URLSearchParams_dict","findReg","plusReg","replaceCharMap","replacer","match","appendTo","dict","addEach","decode","encode","URLSearchParams","query","pairs","thisArg","_URL_hash","_URL_hostname","_URL_pathname","_URL_port","_URL_protocol","_URL_search","URL","url","base","parseResult","parseUrlBase","hash","hostname","pathname","port","protocol","search","parseUrl","HEAD_REG","temp","PATTERN","matches","VALID_URL","fullUrl","parsedBase","AnchorElement","willSetAttr","k","TransferElement","dataName","TaroDocument","_svgNS","textnode","document$1","createDocument","documentCreateElement","head","body","app","container","getComputedStyle","eventCenter","RuntimeCache","identifier","_History_instances","_History_location","_History_stack","_History_cur","_History_window","_History_reset","cache$1","History","location","href","pageId","delta","targetIdx","title","Current","getCurrentInstance","_Location_instances","_Location_url","_Location_noCheckUrl","_Location_window","_Location_reset","_Location_getPreValue","_Location_rollBack","_Location_recordHistory","_Location_checkUrlChange","INIT_URL","cache","Location","lastHash","generateFullUrl","REG","preValue","xVal","router","params","searchArr","searchStr","machine","arch","engine","nav","loadTime","lastTime","_raf","_now","nextTime","_caf","seed","window$1","Window","property","_location","_history","history","SVGElement","instances","isWeb","injectPageInstance","inst","getPageInstance","removePageInstance","addLeadingSlash","safeExecute","func","stringify","getPath","getOnReadyEventKey","getOnShowEventKey","getOnHideEventKey","createPageConfig","component","pageName","pageConfig","ONLOAD","ONUNLOAD","ONREADY","ONSHOW","ONHIDE","LIFECYCLES","SIDE_EFFECT_LIFECYCLES","pageElement","unmounting","prepareMountList","setCurrentRouter","page","loadResolver","hasLoaded","config","uniqueOptions","$taroPath","mount","isDefer","exec","createComponentConfig","componentName","componentElement","ATTACHED","DETACHED","createRecursiveComponentConfig","isCustomWrapper","lifeCycles","componentId","TIMEOUT","nextTick","beginTime","timerFunc","next","_typeof","_toPrimitive","input","hint","prim","_toPropertyKey","arg","toPrimitive","_defineProperty","toPropertyKey","ownKeys","enumerableOnly","keys","symbols","sym","_objectSpread2","source","defineProperty","_classCallCheck","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","x","isBadObj","throwTypeError","to","nextSource","nextKey","convertToDescriptor","desc","hasProperty","d","g","s","descs","_i","ENV_TYPE","getEnv","Chain","requestParams","interceptors","nextInterceptor","nextChain","err","Link","interceptor","chain","taroInterceptor","_objectSpread","interceptorify","promiseifyApi","timeoutInterceptor","reject","timeout","logInterceptor","Behavior","getPreload","defaultDesignWidth","defaultDesignRatio","defaultBaseFontSize","defaultUnitPrecision","defaultTargetUnit","getInitPxTransform","taro","_config$designWidth","designWidth","_config$deviceRatio","deviceRatio","_config$baseFontSize","baseFontSize","_config$targetUnit","targetUnit","_config$unitPrecision","unitPrecision","getPxTransform","formatSize","rootValue","Taro","require$$0","require$$1","module"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10]}