a small relational database with user-editable schema for manual data entry
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
yopa/yopa-web/resources/static/bundle.js.map

1 lines
687 KiB

{"version":3,"file":"bundle.js","sources":["../node_modules/@vue/shared/dist/shared.esm-bundler.js","../node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../node_modules/vue/dist/vue.runtime.esm-bundler.js","../src/components/value/StringValue.vue","../src/components/value/DecimalValue.vue","../src/components/value/BooleanValue.vue","../src/components/value/IntegerValue.vue","../src/components/value/TextValue.vue","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/_nativeKeys.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/_baseKeys.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/isFunction.js","../node_modules/lodash-es/_coreJsData.js","../node_modules/lodash-es/_isMasked.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_baseIsNative.js","../node_modules/lodash-es/_getNative.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_DataView.js","../node_modules/lodash-es/_Map.js","../node_modules/lodash-es/_Promise.js","../node_modules/lodash-es/_Set.js","../node_modules/lodash-es/_WeakMap.js","../node_modules/lodash-es/_getTag.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/_baseIsArguments.js","../node_modules/lodash-es/isArguments.js","../node_modules/lodash-es/isArray.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/isArrayLike.js","../node_modules/lodash-es/isBuffer.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/lodash-es/_nodeUtil.js","../node_modules/lodash-es/isTypedArray.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/isEmpty.js","../src/utils.js","../src/components/PropertyField.vue","../node_modules/lodash-es/_arrayEach.js","../node_modules/lodash-es/_baseFor.js","../node_modules/lodash-es/_createBaseFor.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/keys.js","../node_modules/lodash-es/_baseEach.js","../node_modules/lodash-es/_createBaseEach.js","../node_modules/lodash-es/_baseForOwn.js","../node_modules/lodash-es/identity.js","../node_modules/lodash-es/forEach.js","../node_modules/lodash-es/_castFunction.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/index.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_assocIndexOf.js","../node_modules/lodash-es/_listCacheDelete.js","../node_modules/lodash-es/_ListCache.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/_listCacheGet.js","../node_modules/lodash-es/_listCacheHas.js","../node_modules/lodash-es/_listCacheSet.js","../node_modules/lodash-es/_nativeCreate.js","../node_modules/lodash-es/_hashGet.js","../node_modules/lodash-es/_hashHas.js","../node_modules/lodash-es/_Hash.js","../node_modules/lodash-es/_getMapData.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_MapCache.js","../node_modules/lodash-es/_hashClear.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_hashSet.js","../node_modules/lodash-es/_mapCacheClear.js","../node_modules/lodash-es/_mapCacheDelete.js","../node_modules/lodash-es/_mapCacheGet.js","../node_modules/lodash-es/_mapCacheHas.js","../node_modules/lodash-es/_mapCacheSet.js","../node_modules/lodash-es/_Stack.js","../node_modules/lodash-es/_stackClear.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/_stackSet.js","../node_modules/lodash-es/_SetCache.js","../node_modules/lodash-es/_arraySome.js","../node_modules/lodash-es/_setCacheAdd.js","../node_modules/lodash-es/_setCacheHas.js","../node_modules/lodash-es/_equalArrays.js","../node_modules/lodash-es/_cacheHas.js","../node_modules/lodash-es/_Uint8Array.js","../node_modules/lodash-es/_mapToArray.js","../node_modules/lodash-es/_setToArray.js","../node_modules/lodash-es/_equalByTag.js","../node_modules/lodash-es/_getSymbols.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_getAllKeys.js","../node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/_equalObjects.js","../node_modules/lodash-es/_baseIsEqualDeep.js","../node_modules/lodash-es/_baseIsEqual.js","../node_modules/lodash-es/isEqual.js","../src/components/NewObjectForm.vue","../src/components/NewRelationForm.vue","../src/components/EditObjectForm.vue","../src/components/EditRelationForm.vue","../src/components/EditPropertyField.vue","../src/main.js"],"sourcesContent":["/**\r\n * Make a map and return a function for checking if a key\r\n * is in that map.\r\n * IMPORTANT: all calls of this function must be prefixed with\r\n * \\/\\*#\\_\\_PURE\\_\\_\\*\\/\r\n * So that rollup can tree-shake them if necessary.\r\n */\r\nfunction makeMap(str, expectsLowerCase) {\r\n const map = Object.create(null);\r\n const list = str.split(',');\r\n for (let i = 0; i < list.length; i++) {\r\n map[list[i]] = true;\r\n }\r\n return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];\r\n}\n\n/**\r\n * dev only flag -> name mapping\r\n */\r\nconst PatchFlagNames = {\r\n [1 /* TEXT */]: `TEXT`,\r\n [2 /* CLASS */]: `CLASS`,\r\n [4 /* STYLE */]: `STYLE`,\r\n [8 /* PROPS */]: `PROPS`,\r\n [16 /* FULL_PROPS */]: `FULL_PROPS`,\r\n [32 /* HYDRATE_EVENTS */]: `HYDRATE_EVENTS`,\r\n [64 /* STABLE_FRAGMENT */]: `STABLE_FRAGMENT`,\r\n [128 /* KEYED_FRAGMENT */]: `KEYED_FRAGMENT`,\r\n [256 /* UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`,\r\n [512 /* NEED_PATCH */]: `NEED_PATCH`,\r\n [1024 /* DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`,\r\n [2048 /* DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`,\r\n [-1 /* HOISTED */]: `HOISTED`,\r\n [-2 /* BAIL */]: `BAIL`\r\n};\n\n/**\r\n * Dev only\r\n */\r\nconst slotFlagsText = {\r\n [1 /* STABLE */]: 'STABLE',\r\n [2 /* DYNAMIC */]: 'DYNAMIC',\r\n [3 /* FORWARDED */]: 'FORWARDED'\r\n};\n\nconst GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +\r\n 'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +\r\n 'Object,Boolean,String,RegExp,Map,Set,JSON,Intl';\r\nconst isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);\n\nconst range = 2;\r\nfunction generateCodeFrame(source, start = 0, end = source.length) {\r\n const lines = source.split(/\\r?\\n/);\r\n let count = 0;\r\n const res = [];\r\n for (let i = 0; i < lines.length; i++) {\r\n count += lines[i].length + 1;\r\n if (count >= start) {\r\n for (let j = i - range; j <= i + range || end > count; j++) {\r\n if (j < 0 || j >= lines.length)\r\n continue;\r\n const line = j + 1;\r\n res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`);\r\n const lineLength = lines[j].length;\r\n if (j === i) {\r\n // push underline\r\n const pad = start - (count - lineLength) + 1;\r\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\r\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\r\n }\r\n else if (j > i) {\r\n if (end > count) {\r\n const length = Math.max(Math.min(end - count, lineLength), 1);\r\n res.push(` | ` + '^'.repeat(length));\r\n }\r\n count += lineLength + 1;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n return res.join('\\n');\r\n}\n\n/**\r\n * On the client we only need to offer special cases for boolean attributes that\r\n * have different names from their corresponding dom properties:\r\n * - itemscope -> N/A\r\n * - allowfullscreen -> allowFullscreen\r\n * - formnovalidate -> formNoValidate\r\n * - ismap -> isMap\r\n * - nomodule -> noModule\r\n * - novalidate -> noValidate\r\n * - readonly -> readOnly\r\n */\r\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\r\nconst isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs);\r\n/**\r\n * The full list is needed during SSR to produce the correct initial markup.\r\n */\r\nconst isBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs +\r\n `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,` +\r\n `loop,open,required,reversed,scoped,seamless,` +\r\n `checked,muted,multiple,selected`);\r\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\r\nconst attrValidationCache = {};\r\nfunction isSSRSafeAttrName(name) {\r\n if (attrValidationCache.hasOwnProperty(name)) {\r\n return attrValidationCache[name];\r\n }\r\n const isUnsafe = unsafeAttrCharRE.test(name);\r\n if (isUnsafe) {\r\n console.error(`unsafe attribute name: ${name}`);\r\n }\r\n return (attrValidationCache[name] = !isUnsafe);\r\n}\r\nconst propsToAttrMap = {\r\n acceptCharset: 'accept-charset',\r\n className: 'class',\r\n htmlFor: 'for',\r\n httpEquiv: 'http-equiv'\r\n};\r\n/**\r\n * CSS properties that accept plain numbers\r\n */\r\nconst isNoUnitNumericStyleProp = /*#__PURE__*/ makeMap(`animation-iteration-count,border-image-outset,border-image-slice,` +\r\n `border-image-width,box-flex,box-flex-group,box-ordinal-group,column-count,` +\r\n `columns,flex,flex-grow,flex-positive,flex-shrink,flex-negative,flex-order,` +\r\n `grid-row,grid-row-end,grid-row-span,grid-row-start,grid-column,` +\r\n `grid-column-end,grid-column-span,grid-column-start,font-weight,line-clamp,` +\r\n `line-height,opacity,order,orphans,tab-size,widows,z-index,zoom,` +\r\n // SVG\r\n `fill-opacity,flood-opacity,stop-opacity,stroke-dasharray,stroke-dashoffset,` +\r\n `stroke-miterlimit,stroke-opacity,stroke-width`);\r\n/**\r\n * Known attributes, this is used for stringification of runtime static nodes\r\n * so that we don't stringify bindings that cannot be set from HTML.\r\n * Don't also forget to allow `data-*` and `aria-*`!\r\n * Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes\r\n */\r\nconst isKnownAttr = /*#__PURE__*/ makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,` +\r\n `autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,` +\r\n `border,buffered,capture,challenge,charset,checked,cite,class,code,` +\r\n `codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,` +\r\n `coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,` +\r\n `disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,` +\r\n `formaction,formenctype,formmethod,formnovalidate,formtarget,headers,` +\r\n `height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,` +\r\n `ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,` +\r\n `manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,` +\r\n `open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,` +\r\n `referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,` +\r\n `selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,` +\r\n `start,step,style,summary,tabindex,target,title,translate,type,usemap,` +\r\n `value,width,wrap`);\n\nfunction normalizeStyle(value) {\r\n if (isArray(value)) {\r\n const res = {};\r\n for (let i = 0; i < value.length; i++) {\r\n const item = value[i];\r\n const normalized = normalizeStyle(isString(item) ? parseStringStyle(item) : item);\r\n if (normalized) {\r\n for (const key in normalized) {\r\n res[key] = normalized[key];\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n else if (isObject(value)) {\r\n return value;\r\n }\r\n}\r\nconst listDelimiterRE = /;(?![^(]*\\))/g;\r\nconst propertyDelimiterRE = /:(.+)/;\r\nfunction parseStringStyle(cssText) {\r\n const ret = {};\r\n cssText.split(listDelimiterRE).forEach(item => {\r\n if (item) {\r\n const tmp = item.split(propertyDelimiterRE);\r\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\r\n }\r\n });\r\n return ret;\r\n}\r\nfunction stringifyStyle(styles) {\r\n let ret = '';\r\n if (!styles) {\r\n return ret;\r\n }\r\n for (const key in styles) {\r\n const value = styles[key];\r\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\r\n if (isString(value) ||\r\n (typeof value === 'number' && isNoUnitNumericStyleProp(normalizedKey))) {\r\n // only render valid values\r\n ret += `${normalizedKey}:${value};`;\r\n }\r\n }\r\n return ret;\r\n}\r\nfunction normalizeClass(value) {\r\n let res = '';\r\n if (isString(value)) {\r\n res = value;\r\n }\r\n else if (isArray(value)) {\r\n for (let i = 0; i < value.length; i++) {\r\n res += normalizeClass(value[i]) + ' ';\r\n }\r\n }\r\n else if (isObject(value)) {\r\n for (const name in value) {\r\n if (value[name]) {\r\n res += name + ' ';\r\n }\r\n }\r\n }\r\n return res.trim();\r\n}\n\n// These tag configs are shared between compiler-dom and runtime-dom, so they\r\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element\r\nconst HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +\r\n 'header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,' +\r\n 'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +\r\n 'data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,' +\r\n 'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +\r\n 'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +\r\n 'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +\r\n 'option,output,progress,select,textarea,details,dialog,menu,' +\r\n 'summary,template,blockquote,iframe,tfoot';\r\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Element\r\nconst SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +\r\n 'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +\r\n 'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +\r\n 'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +\r\n 'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +\r\n 'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +\r\n 'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +\r\n 'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +\r\n 'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +\r\n 'text,textPath,title,tspan,unknown,use,view';\r\nconst VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';\r\nconst isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);\r\nconst isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);\r\nconst isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);\n\nconst escapeRE = /[\"'&<>]/;\r\nfunction escapeHtml(string) {\r\n const str = '' + string;\r\n const match = escapeRE.exec(str);\r\n if (!match) {\r\n return str;\r\n }\r\n let html = '';\r\n let escaped;\r\n let index;\r\n let lastIndex = 0;\r\n for (index = match.index; index < str.length; index++) {\r\n switch (str.charCodeAt(index)) {\r\n case 34: // \"\r\n escaped = '&quot;';\r\n break;\r\n case 38: // &\r\n escaped = '&amp;';\r\n break;\r\n case 39: // '\r\n escaped = '&#39;';\r\n break;\r\n case 60: // <\r\n escaped = '&lt;';\r\n break;\r\n case 62: // >\r\n escaped = '&gt;';\r\n break;\r\n default:\r\n continue;\r\n }\r\n if (lastIndex !== index) {\r\n html += str.substring(lastIndex, index);\r\n }\r\n lastIndex = index + 1;\r\n html += escaped;\r\n }\r\n return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\r\n}\r\n// https://www.w3.org/TR/html52/syntax.html#comments\r\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\r\nfunction escapeHtmlComment(src) {\r\n return src.replace(commentStripRE, '');\r\n}\n\nfunction looseCompareArrays(a, b) {\r\n if (a.length !== b.length)\r\n return false;\r\n let equal = true;\r\n for (let i = 0; equal && i < a.length; i++) {\r\n equal = looseEqual(a[i], b[i]);\r\n }\r\n return equal;\r\n}\r\nfunction looseEqual(a, b) {\r\n if (a === b)\r\n return true;\r\n let aValidType = isDate(a);\r\n let bValidType = isDate(b);\r\n if (aValidType || bValidType) {\r\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\r\n }\r\n aValidType = isArray(a);\r\n bValidType = isArray(b);\r\n if (aValidType || bValidType) {\r\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\r\n }\r\n aValidType = isObject(a);\r\n bValidType = isObject(b);\r\n if (aValidType || bValidType) {\r\n /* istanbul ignore if: this if will probably never be called */\r\n if (!aValidType || !bValidType) {\r\n return false;\r\n }\r\n const aKeysCount = Object.keys(a).length;\r\n const bKeysCount = Object.keys(b).length;\r\n if (aKeysCount !== bKeysCount) {\r\n return false;\r\n }\r\n for (const key in a) {\r\n const aHasKey = a.hasOwnProperty(key);\r\n const bHasKey = b.hasOwnProperty(key);\r\n if ((aHasKey && !bHasKey) ||\r\n (!aHasKey && bHasKey) ||\r\n !looseEqual(a[key], b[key])) {\r\n return false;\r\n }\r\n }\r\n }\r\n return String(a) === String(b);\r\n}\r\nfunction looseIndexOf(arr, val) {\r\n return arr.findIndex(item => looseEqual(item, val));\r\n}\n\n/**\r\n * For converting {{ interpolation }} values to displayed strings.\r\n * @private\r\n */\r\nconst toDisplayString = (val) => {\r\n return val == null\r\n ? ''\r\n : isObject(val)\r\n ? JSON.stringify(val, replacer, 2)\r\n : String(val);\r\n};\r\nconst replacer = (_key, val) => {\r\n if (isMap(val)) {\r\n return {\r\n [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => {\r\n entries[`${key} =>`] = val;\r\n return entries;\r\n }, {})\r\n };\r\n }\r\n else if (isSet(val)) {\r\n return {\r\n [`Set(${val.size})`]: [...val.values()]\r\n };\r\n }\r\n else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\r\n return String(val);\r\n }\r\n return val;\r\n};\n\n/**\r\n * List of @babel/parser plugins that are used for template expression\r\n * transforms and SFC script transforms. By default we enable proposals slated\r\n * for ES2020. This will need to be updated as the spec moves forward.\r\n * Full list at https://babeljs.io/docs/en/next/babel-parser#plugins\r\n */\r\nconst babelParserDefaultPlugins = [\r\n 'bigInt',\r\n 'optionalChaining',\r\n 'nullishCoalescingOperator'\r\n];\r\nconst EMPTY_OBJ = (process.env.NODE_ENV !== 'production')\r\n ? Object.freeze({})\r\n : {};\r\nconst EMPTY_ARR = (process.env.NODE_ENV !== 'production') ? Object.freeze([]) : [];\r\nconst NOOP = () => { };\r\n/**\r\n * Always return false.\r\n */\r\nconst NO = () => false;\r\nconst onRE = /^on[^a-z]/;\r\nconst isOn = (key) => onRE.test(key);\r\nconst isModelListener = (key) => key.startsWith('onUpdate:');\r\nconst extend = Object.assign;\r\nconst remove = (arr, el) => {\r\n const i = arr.indexOf(el);\r\n if (i > -1) {\r\n arr.splice(i, 1);\r\n }\r\n};\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\r\nconst isArray = Array.isArray;\r\nconst isMap = (val) => toTypeString(val) === '[object Map]';\r\nconst isSet = (val) => toTypeString(val) === '[object Set]';\r\nconst isDate = (val) => val instanceof Date;\r\nconst isFunction = (val) => typeof val === 'function';\r\nconst isString = (val) => typeof val === 'string';\r\nconst isSymbol = (val) => typeof val === 'symbol';\r\nconst isObject = (val) => val !== null && typeof val === 'object';\r\nconst isPromise = (val) => {\r\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\r\n};\r\nconst objectToString = Object.prototype.toString;\r\nconst toTypeString = (value) => objectToString.call(value);\r\nconst toRawType = (value) => {\r\n // extract \"RawType\" from strings like \"[object RawType]\"\r\n return toTypeString(value).slice(8, -1);\r\n};\r\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\r\nconst isIntegerKey = (key) => isString(key) &&\r\n key !== 'NaN' &&\r\n key[0] !== '-' &&\r\n '' + parseInt(key, 10) === key;\r\nconst isReservedProp = /*#__PURE__*/ makeMap(\r\n// the leading comma is intentional so empty string \"\" is also included\r\n',key,ref,' +\r\n 'onVnodeBeforeMount,onVnodeMounted,' +\r\n 'onVnodeBeforeUpdate,onVnodeUpdated,' +\r\n 'onVnodeBeforeUnmount,onVnodeUnmounted');\r\nconst cacheStringFunction = (fn) => {\r\n const cache = Object.create(null);\r\n return ((str) => {\r\n const hit = cache[str];\r\n return hit || (cache[str] = fn(str));\r\n });\r\n};\r\nconst camelizeRE = /-(\\w)/g;\r\n/**\r\n * @private\r\n */\r\nconst camelize = cacheStringFunction((str) => {\r\n return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));\r\n});\r\nconst hyphenateRE = /\\B([A-Z])/g;\r\n/**\r\n * @private\r\n */\r\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase());\r\n/**\r\n * @private\r\n */\r\nconst capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\r\n/**\r\n * @private\r\n */\r\nconst toHandlerKey = cacheStringFunction((str) => (str ? `on${capitalize(str)}` : ``));\r\n// compare whether a value has changed, accounting for NaN.\r\nconst hasChanged = (value, oldValue) => value !== oldValue && (value === value || oldValue === oldValue);\r\nconst invokeArrayFns = (fns, arg) => {\r\n for (let i = 0; i < fns.length; i++) {\r\n fns[i](arg);\r\n }\r\n};\r\nconst def = (obj, key, value) => {\r\n Object.defineProperty(obj, key, {\r\n configurable: true,\r\n enumerable: false,\r\n value\r\n });\r\n};\r\nconst toNumber = (val) => {\r\n const n = parseFloat(val);\r\n return isNaN(n) ? val : n;\r\n};\r\nlet _globalThis;\r\nconst getGlobalThis = () => {\r\n return (_globalThis ||\r\n (_globalThis =\r\n typeof globalThis !== 'undefined'\r\n ? globalThis\r\n : typeof self !== 'undefined'\r\n ? self\r\n : typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : {}));\r\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, babelParserDefaultPlugins, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, invokeArrayFns, isArray, isBooleanAttr, isDate, isFunction, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownAttr, isMap, isModelListener, isNoUnitNumericStyleProp, isObject, isOn, isPlainObject, isPromise, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, makeMap, normalizeClass, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","import { EMPTY_OBJ, isArray, isMap, isIntegerKey, isSymbol, extend, hasOwn, isObject, hasChanged, capitalize, toRawType, def, isFunction, NOOP } from '@vue/shared';\n\nconst targetMap = new WeakMap();\r\nconst effectStack = [];\r\nlet activeEffect;\r\nconst ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'iterate' : '');\r\nconst MAP_KEY_ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'Map key iterate' : '');\r\nfunction isEffect(fn) {\r\n return fn && fn._isEffect === true;\r\n}\r\nfunction effect(fn, options = EMPTY_OBJ) {\r\n if (isEffect(fn)) {\r\n fn = fn.raw;\r\n }\r\n const effect = createReactiveEffect(fn, options);\r\n if (!options.lazy) {\r\n effect();\r\n }\r\n return effect;\r\n}\r\nfunction stop(effect) {\r\n if (effect.active) {\r\n cleanup(effect);\r\n if (effect.options.onStop) {\r\n effect.options.onStop();\r\n }\r\n effect.active = false;\r\n }\r\n}\r\nlet uid = 0;\r\nfunction createReactiveEffect(fn, options) {\r\n const effect = function reactiveEffect() {\r\n if (!effect.active) {\r\n return options.scheduler ? undefined : fn();\r\n }\r\n if (!effectStack.includes(effect)) {\r\n cleanup(effect);\r\n try {\r\n enableTracking();\r\n effectStack.push(effect);\r\n activeEffect = effect;\r\n return fn();\r\n }\r\n finally {\r\n effectStack.pop();\r\n resetTracking();\r\n activeEffect = effectStack[effectStack.length - 1];\r\n }\r\n }\r\n };\r\n effect.id = uid++;\r\n effect.allowRecurse = !!options.allowRecurse;\r\n effect._isEffect = true;\r\n effect.active = true;\r\n effect.raw = fn;\r\n effect.deps = [];\r\n effect.options = options;\r\n return effect;\r\n}\r\nfunction cleanup(effect) {\r\n const { deps } = effect;\r\n if (deps.length) {\r\n for (let i = 0; i < deps.length; i++) {\r\n deps[i].delete(effect);\r\n }\r\n deps.length = 0;\r\n }\r\n}\r\nlet shouldTrack = true;\r\nconst trackStack = [];\r\nfunction pauseTracking() {\r\n trackStack.push(shouldTrack);\r\n shouldTrack = false;\r\n}\r\nfunction enableTracking() {\r\n trackStack.push(shouldTrack);\r\n shouldTrack = true;\r\n}\r\nfunction resetTracking() {\r\n const last = trackStack.pop();\r\n shouldTrack = last === undefined ? true : last;\r\n}\r\nfunction track(target, type, key) {\r\n if (!shouldTrack || activeEffect === undefined) {\r\n return;\r\n }\r\n let depsMap = targetMap.get(target);\r\n if (!depsMap) {\r\n targetMap.set(target, (depsMap = new Map()));\r\n }\r\n let dep = depsMap.get(key);\r\n if (!dep) {\r\n depsMap.set(key, (dep = new Set()));\r\n }\r\n if (!dep.has(activeEffect)) {\r\n dep.add(activeEffect);\r\n activeEffect.deps.push(dep);\r\n if ((process.env.NODE_ENV !== 'production') && activeEffect.options.onTrack) {\r\n activeEffect.options.onTrack({\r\n effect: activeEffect,\r\n target,\r\n type,\r\n key\r\n });\r\n }\r\n }\r\n}\r\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\r\n const depsMap = targetMap.get(target);\r\n if (!depsMap) {\r\n // never been tracked\r\n return;\r\n }\r\n const effects = new Set();\r\n const add = (effectsToAdd) => {\r\n if (effectsToAdd) {\r\n effectsToAdd.forEach(effect => {\r\n if (effect !== activeEffect || effect.allowRecurse) {\r\n effects.add(effect);\r\n }\r\n });\r\n }\r\n };\r\n if (type === \"clear\" /* CLEAR */) {\r\n // collection being cleared\r\n // trigger all effects for target\r\n depsMap.forEach(add);\r\n }\r\n else if (key === 'length' && isArray(target)) {\r\n depsMap.forEach((dep, key) => {\r\n if (key === 'length' || key >= newValue) {\r\n add(dep);\r\n }\r\n });\r\n }\r\n else {\r\n // schedule runs for SET | ADD | DELETE\r\n if (key !== void 0) {\r\n add(depsMap.get(key));\r\n }\r\n // also run for iteration key on ADD | DELETE | Map.SET\r\n switch (type) {\r\n case \"add\" /* ADD */:\r\n if (!isArray(target)) {\r\n add(depsMap.get(ITERATE_KEY));\r\n if (isMap(target)) {\r\n add(depsMap.get(MAP_KEY_ITERATE_KEY));\r\n }\r\n }\r\n else if (isIntegerKey(key)) {\r\n // new index added to array -> length changes\r\n add(depsMap.get('length'));\r\n }\r\n break;\r\n case \"delete\" /* DELETE */:\r\n if (!isArray(target)) {\r\n add(depsMap.get(ITERATE_KEY));\r\n if (isMap(target)) {\r\n add(depsMap.get(MAP_KEY_ITERATE_KEY));\r\n }\r\n }\r\n break;\r\n case \"set\" /* SET */:\r\n if (isMap(target)) {\r\n add(depsMap.get(ITERATE_KEY));\r\n }\r\n break;\r\n }\r\n }\r\n const run = (effect) => {\r\n if ((process.env.NODE_ENV !== 'production') && effect.options.onTrigger) {\r\n effect.options.onTrigger({\r\n effect,\r\n target,\r\n key,\r\n type,\r\n newValue,\r\n oldValue,\r\n oldTarget\r\n });\r\n }\r\n if (effect.options.scheduler) {\r\n effect.options.scheduler(effect);\r\n }\r\n else {\r\n effect();\r\n }\r\n };\r\n effects.forEach(run);\r\n}\n\nconst builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol)\r\n .map(key => Symbol[key])\r\n .filter(isSymbol));\r\nconst get = /*#__PURE__*/ createGetter();\r\nconst shallowGet = /*#__PURE__*/ createGetter(false, true);\r\nconst readonlyGet = /*#__PURE__*/ createGetter(true);\r\nconst shallowReadonlyGet = /*#__PURE__*/ createGetter(true, true);\r\nconst arrayInstrumentations = {};\r\n['includes', 'indexOf', 'lastIndexOf'].forEach(key => {\r\n const method = Array.prototype[key];\r\n arrayInstrumentations[key] = function (...args) {\r\n const arr = toRaw(this);\r\n for (let i = 0, l = this.length; i < l; i++) {\r\n track(arr, \"get\" /* GET */, i + '');\r\n }\r\n // we run the method using the original args first (which may be reactive)\r\n const res = method.apply(arr, args);\r\n if (res === -1 || res === false) {\r\n // if that didn't work, run it again using raw values.\r\n return method.apply(arr, args.map(toRaw));\r\n }\r\n else {\r\n return res;\r\n }\r\n };\r\n});\r\n['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => {\r\n const method = Array.prototype[key];\r\n arrayInstrumentations[key] = function (...args) {\r\n pauseTracking();\r\n const res = method.apply(this, args);\r\n resetTracking();\r\n return res;\r\n };\r\n});\r\nfunction createGetter(isReadonly = false, shallow = false) {\r\n return function get(target, key, receiver) {\r\n if (key === \"__v_isReactive\" /* IS_REACTIVE */) {\r\n return !isReadonly;\r\n }\r\n else if (key === \"__v_isReadonly\" /* IS_READONLY */) {\r\n return isReadonly;\r\n }\r\n else if (key === \"__v_raw\" /* RAW */ &&\r\n receiver === (isReadonly ? readonlyMap : reactiveMap).get(target)) {\r\n return target;\r\n }\r\n const targetIsArray = isArray(target);\r\n if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {\r\n return Reflect.get(arrayInstrumentations, key, receiver);\r\n }\r\n const res = Reflect.get(target, key, receiver);\r\n if (isSymbol(key)\r\n ? builtInSymbols.has(key)\r\n : key === `__proto__` || key === `__v_isRef`) {\r\n return res;\r\n }\r\n if (!isReadonly) {\r\n track(target, \"get\" /* GET */, key);\r\n }\r\n if (shallow) {\r\n return res;\r\n }\r\n if (isRef(res)) {\r\n // ref unwrapping - does not apply for Array + integer key.\r\n const shouldUnwrap = !targetIsArray || !isIntegerKey(key);\r\n return shouldUnwrap ? res.value : res;\r\n }\r\n if (isObject(res)) {\r\n // Convert returned value into a proxy as well. we do the isObject check\r\n // here to avoid invalid value warning. Also need to lazy access readonly\r\n // and reactive here to avoid circular dependency.\r\n return isReadonly ? readonly(res) : reactive(res);\r\n }\r\n return res;\r\n };\r\n}\r\nconst set = /*#__PURE__*/ createSetter();\r\nconst shallowSet = /*#__PURE__*/ createSetter(true);\r\nfunction createSetter(shallow = false) {\r\n return function set(target, key, value, receiver) {\r\n const oldValue = target[key];\r\n if (!shallow) {\r\n value = toRaw(value);\r\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\r\n oldValue.value = value;\r\n return true;\r\n }\r\n }\r\n const hadKey = isArray(target) && isIntegerKey(key)\r\n ? Number(key) < target.length\r\n : hasOwn(target, key);\r\n const result = Reflect.set(target, key, value, receiver);\r\n // don't trigger if target is something up in the prototype chain of original\r\n if (target === toRaw(receiver)) {\r\n if (!hadKey) {\r\n trigger(target, \"add\" /* ADD */, key, value);\r\n }\r\n else if (hasChanged(value, oldValue)) {\r\n trigger(target, \"set\" /* SET */, key, value, oldValue);\r\n }\r\n }\r\n return result;\r\n };\r\n}\r\nfunction deleteProperty(target, key) {\r\n const hadKey = hasOwn(target, key);\r\n const oldValue = target[key];\r\n const result = Reflect.deleteProperty(target, key);\r\n if (result && hadKey) {\r\n trigger(target, \"delete\" /* DELETE */, key, undefined, oldValue);\r\n }\r\n return result;\r\n}\r\nfunction has(target, key) {\r\n const result = Reflect.has(target, key);\r\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\r\n track(target, \"has\" /* HAS */, key);\r\n }\r\n return result;\r\n}\r\nfunction ownKeys(target) {\r\n track(target, \"iterate\" /* ITERATE */, isArray(target) ? 'length' : ITERATE_KEY);\r\n return Reflect.ownKeys(target);\r\n}\r\nconst mutableHandlers = {\r\n get,\r\n set,\r\n deleteProperty,\r\n has,\r\n ownKeys\r\n};\r\nconst readonlyHandlers = {\r\n get: readonlyGet,\r\n set(target, key) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n console.warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\r\n }\r\n return true;\r\n },\r\n deleteProperty(target, key) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n console.warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\r\n }\r\n return true;\r\n }\r\n};\r\nconst shallowReactiveHandlers = extend({}, mutableHandlers, {\r\n get: shallowGet,\r\n set: shallowSet\r\n});\r\n// Props handlers are special in the sense that it should not unwrap top-level\r\n// refs (in order to allow refs to be explicitly passed down), but should\r\n// retain the reactivity of the normal readonly object.\r\nconst shallowReadonlyHandlers = extend({}, readonlyHandlers, {\r\n get: shallowReadonlyGet\r\n});\n\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\r\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\r\nconst toShallow = (value) => value;\r\nconst getProto = (v) => Reflect.getPrototypeOf(v);\r\nfunction get$1(target, key, isReadonly = false, isShallow = false) {\r\n // #1772: readonly(reactive(Map)) should return readonly + reactive version\r\n // of the value\r\n target = target[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const rawKey = toRaw(key);\r\n if (key !== rawKey) {\r\n !isReadonly && track(rawTarget, \"get\" /* GET */, key);\r\n }\r\n !isReadonly && track(rawTarget, \"get\" /* GET */, rawKey);\r\n const { has } = getProto(rawTarget);\r\n const wrap = isReadonly ? toReadonly : isShallow ? toShallow : toReactive;\r\n if (has.call(rawTarget, key)) {\r\n return wrap(target.get(key));\r\n }\r\n else if (has.call(rawTarget, rawKey)) {\r\n return wrap(target.get(rawKey));\r\n }\r\n}\r\nfunction has$1(key, isReadonly = false) {\r\n const target = this[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const rawKey = toRaw(key);\r\n if (key !== rawKey) {\r\n !isReadonly && track(rawTarget, \"has\" /* HAS */, key);\r\n }\r\n !isReadonly && track(rawTarget, \"has\" /* HAS */, rawKey);\r\n return key === rawKey\r\n ? target.has(key)\r\n : target.has(key) || target.has(rawKey);\r\n}\r\nfunction size(target, isReadonly = false) {\r\n target = target[\"__v_raw\" /* RAW */];\r\n !isReadonly && track(toRaw(target), \"iterate\" /* ITERATE */, ITERATE_KEY);\r\n return Reflect.get(target, 'size', target);\r\n}\r\nfunction add(value) {\r\n value = toRaw(value);\r\n const target = toRaw(this);\r\n const proto = getProto(target);\r\n const hadKey = proto.has.call(target, value);\r\n target.add(value);\r\n if (!hadKey) {\r\n trigger(target, \"add\" /* ADD */, value, value);\r\n }\r\n return this;\r\n}\r\nfunction set$1(key, value) {\r\n value = toRaw(value);\r\n const target = toRaw(this);\r\n const { has, get } = getProto(target);\r\n let hadKey = has.call(target, key);\r\n if (!hadKey) {\r\n key = toRaw(key);\r\n hadKey = has.call(target, key);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n checkIdentityKeys(target, has, key);\r\n }\r\n const oldValue = get.call(target, key);\r\n target.set(key, value);\r\n if (!hadKey) {\r\n trigger(target, \"add\" /* ADD */, key, value);\r\n }\r\n else if (hasChanged(value, oldValue)) {\r\n trigger(target, \"set\" /* SET */, key, value, oldValue);\r\n }\r\n return this;\r\n}\r\nfunction deleteEntry(key) {\r\n const target = toRaw(this);\r\n const { has, get } = getProto(target);\r\n let hadKey = has.call(target, key);\r\n if (!hadKey) {\r\n key = toRaw(key);\r\n hadKey = has.call(target, key);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n checkIdentityKeys(target, has, key);\r\n }\r\n const oldValue = get ? get.call(target, key) : undefined;\r\n // forward the operation before queueing reactions\r\n const result = target.delete(key);\r\n if (hadKey) {\r\n trigger(target, \"delete\" /* DELETE */, key, undefined, oldValue);\r\n }\r\n return result;\r\n}\r\nfunction clear() {\r\n const target = toRaw(this);\r\n const hadItems = target.size !== 0;\r\n const oldTarget = (process.env.NODE_ENV !== 'production')\r\n ? isMap(target)\r\n ? new Map(target)\r\n : new Set(target)\r\n : undefined;\r\n // forward the operation before queueing reactions\r\n const result = target.clear();\r\n if (hadItems) {\r\n trigger(target, \"clear\" /* CLEAR */, undefined, undefined, oldTarget);\r\n }\r\n return result;\r\n}\r\nfunction createForEach(isReadonly, isShallow) {\r\n return function forEach(callback, thisArg) {\r\n const observed = this;\r\n const target = observed[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const wrap = isReadonly ? toReadonly : isShallow ? toShallow : toReactive;\r\n !isReadonly && track(rawTarget, \"iterate\" /* ITERATE */, ITERATE_KEY);\r\n return target.forEach((value, key) => {\r\n // important: make sure the callback is\r\n // 1. invoked with the reactive map as `this` and 3rd arg\r\n // 2. the value received should be a corresponding reactive/readonly.\r\n return callback.call(thisArg, wrap(value), wrap(key), observed);\r\n });\r\n };\r\n}\r\nfunction createIterableMethod(method, isReadonly, isShallow) {\r\n return function (...args) {\r\n const target = this[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const targetIsMap = isMap(rawTarget);\r\n const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);\r\n const isKeyOnly = method === 'keys' && targetIsMap;\r\n const innerIterator = target[method](...args);\r\n const wrap = isReadonly ? toReadonly : isShallow ? toShallow : toReactive;\r\n !isReadonly &&\r\n track(rawTarget, \"iterate\" /* ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\r\n // return a wrapped iterator which returns observed versions of the\r\n // values emitted from the real iterator\r\n return {\r\n // iterator protocol\r\n next() {\r\n const { value, done } = innerIterator.next();\r\n return done\r\n ? { value, done }\r\n : {\r\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\r\n done\r\n };\r\n },\r\n // iterable protocol\r\n [Symbol.iterator]() {\r\n return this;\r\n }\r\n };\r\n };\r\n}\r\nfunction createReadonlyMethod(type) {\r\n return function (...args) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\r\n console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));\r\n }\r\n return type === \"delete\" /* DELETE */ ? false : this;\r\n };\r\n}\r\nconst mutableInstrumentations = {\r\n get(key) {\r\n return get$1(this, key);\r\n },\r\n get size() {\r\n return size(this);\r\n },\r\n has: has$1,\r\n add,\r\n set: set$1,\r\n delete: deleteEntry,\r\n clear,\r\n forEach: createForEach(false, false)\r\n};\r\nconst shallowInstrumentations = {\r\n get(key) {\r\n return get$1(this, key, false, true);\r\n },\r\n get size() {\r\n return size(this);\r\n },\r\n has: has$1,\r\n add,\r\n set: set$1,\r\n delete: deleteEntry,\r\n clear,\r\n forEach: createForEach(false, true)\r\n};\r\nconst readonlyInstrumentations = {\r\n get(key) {\r\n return get$1(this, key, true);\r\n },\r\n get size() {\r\n return size(this, true);\r\n },\r\n has(key) {\r\n return has$1.call(this, key, true);\r\n },\r\n add: createReadonlyMethod(\"add\" /* ADD */),\r\n set: createReadonlyMethod(\"set\" /* SET */),\r\n delete: createReadonlyMethod(\"delete\" /* DELETE */),\r\n clear: createReadonlyMethod(\"clear\" /* CLEAR */),\r\n forEach: createForEach(true, false)\r\n};\r\nconst iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];\r\niteratorMethods.forEach(method => {\r\n mutableInstrumentations[method] = createIterableMethod(method, false, false);\r\n readonlyInstrumentations[method] = createIterableMethod(method, true, false);\r\n shallowInstrumentations[method] = createIterableMethod(method, false, true);\r\n});\r\nfunction createInstrumentationGetter(isReadonly, shallow) {\r\n const instrumentations = shallow\r\n ? shallowInstrumentations\r\n : isReadonly\r\n ? readonlyInstrumentations\r\n : mutableInstrumentations;\r\n return (target, key, receiver) => {\r\n if (key === \"__v_isReactive\" /* IS_REACTIVE */) {\r\n return !isReadonly;\r\n }\r\n else if (key === \"__v_isReadonly\" /* IS_READONLY */) {\r\n return isReadonly;\r\n }\r\n else if (key === \"__v_raw\" /* RAW */) {\r\n return target;\r\n }\r\n return Reflect.get(hasOwn(instrumentations, key) && key in target\r\n ? instrumentations\r\n : target, key, receiver);\r\n };\r\n}\r\nconst mutableCollectionHandlers = {\r\n get: createInstrumentationGetter(false, false)\r\n};\r\nconst shallowCollectionHandlers = {\r\n get: createInstrumentationGetter(false, true)\r\n};\r\nconst readonlyCollectionHandlers = {\r\n get: createInstrumentationGetter(true, false)\r\n};\r\nfunction checkIdentityKeys(target, has, key) {\r\n const rawKey = toRaw(key);\r\n if (rawKey !== key && has.call(target, rawKey)) {\r\n const type = toRawType(target);\r\n console.warn(`Reactive ${type} contains both the raw and reactive ` +\r\n `versions of the same object${type === `Map` ? ` as keys` : ``}, ` +\r\n `which can lead to inconsistencies. ` +\r\n `Avoid differentiating between the raw and reactive versions ` +\r\n `of an object and only use the reactive version if possible.`);\r\n }\r\n}\n\nconst reactiveMap = new WeakMap();\r\nconst readonlyMap = new WeakMap();\r\nfunction targetTypeMap(rawType) {\r\n switch (rawType) {\r\n case 'Object':\r\n case 'Array':\r\n return 1 /* COMMON */;\r\n case 'Map':\r\n case 'Set':\r\n case 'WeakMap':\r\n case 'WeakSet':\r\n return 2 /* COLLECTION */;\r\n default:\r\n return 0 /* INVALID */;\r\n }\r\n}\r\nfunction getTargetType(value) {\r\n return value[\"__v_skip\" /* SKIP */] || !Object.isExtensible(value)\r\n ? 0 /* INVALID */\r\n : targetTypeMap(toRawType(value));\r\n}\r\nfunction reactive(target) {\r\n // if trying to observe a readonly proxy, return the readonly version.\r\n if (target && target[\"__v_isReadonly\" /* IS_READONLY */]) {\r\n return target;\r\n }\r\n return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers);\r\n}\r\n/**\r\n * Return a shallowly-reactive copy of the original object, where only the root\r\n * level properties are reactive. It also does not auto-unwrap refs (even at the\r\n * root level).\r\n */\r\nfunction shallowReactive(target) {\r\n return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers);\r\n}\r\n/**\r\n * Creates a readonly copy of the original object. Note the returned copy is not\r\n * made reactive, but `readonly` can be called on an already reactive object.\r\n */\r\nfunction readonly(target) {\r\n return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers);\r\n}\r\n/**\r\n * Returns a reactive-copy of the original object, where only the root level\r\n * properties are readonly, and does NOT unwrap refs nor recursively convert\r\n * returned properties.\r\n * This is used for creating the props proxy object for stateful components.\r\n */\r\nfunction shallowReadonly(target) {\r\n return createReactiveObject(target, true, shallowReadonlyHandlers, readonlyCollectionHandlers);\r\n}\r\nfunction createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers) {\r\n if (!isObject(target)) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n console.warn(`value cannot be made reactive: ${String(target)}`);\r\n }\r\n return target;\r\n }\r\n // target is already a Proxy, return it.\r\n // exception: calling readonly() on a reactive object\r\n if (target[\"__v_raw\" /* RAW */] &&\r\n !(isReadonly && target[\"__v_isReactive\" /* IS_REACTIVE */])) {\r\n return target;\r\n }\r\n // target already has corresponding Proxy\r\n const proxyMap = isReadonly ? readonlyMap : reactiveMap;\r\n const existingProxy = proxyMap.get(target);\r\n if (existingProxy) {\r\n return existingProxy;\r\n }\r\n // only a whitelist of value types can be observed.\r\n const targetType = getTargetType(target);\r\n if (targetType === 0 /* INVALID */) {\r\n return target;\r\n }\r\n const proxy = new Proxy(target, targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers);\r\n proxyMap.set(target, proxy);\r\n return proxy;\r\n}\r\nfunction isReactive(value) {\r\n if (isReadonly(value)) {\r\n return isReactive(value[\"__v_raw\" /* RAW */]);\r\n }\r\n return !!(value && value[\"__v_isReactive\" /* IS_REACTIVE */]);\r\n}\r\nfunction isReadonly(value) {\r\n return !!(value && value[\"__v_isReadonly\" /* IS_READONLY */]);\r\n}\r\nfunction isProxy(value) {\r\n return isReactive(value) || isReadonly(value);\r\n}\r\nfunction toRaw(observed) {\r\n return ((observed && toRaw(observed[\"__v_raw\" /* RAW */])) || observed);\r\n}\r\nfunction markRaw(value) {\r\n def(value, \"__v_skip\" /* SKIP */, true);\r\n return value;\r\n}\n\nconst convert = (val) => isObject(val) ? reactive(val) : val;\r\nfunction isRef(r) {\r\n return Boolean(r && r.__v_isRef === true);\r\n}\r\nfunction ref(value) {\r\n return createRef(value);\r\n}\r\nfunction shallowRef(value) {\r\n return createRef(value, true);\r\n}\r\nclass RefImpl {\r\n constructor(_rawValue, _shallow = false) {\r\n this._rawValue = _rawValue;\r\n this._shallow = _shallow;\r\n this.__v_isRef = true;\r\n this._value = _shallow ? _rawValue : convert(_rawValue);\r\n }\r\n get value() {\r\n track(toRaw(this), \"get\" /* GET */, 'value');\r\n return this._value;\r\n }\r\n set value(newVal) {\r\n if (hasChanged(toRaw(newVal), this._rawValue)) {\r\n this._rawValue = newVal;\r\n this._value = this._shallow ? newVal : convert(newVal);\r\n trigger(toRaw(this), \"set\" /* SET */, 'value', newVal);\r\n }\r\n }\r\n}\r\nfunction createRef(rawValue, shallow = false) {\r\n if (isRef(rawValue)) {\r\n return rawValue;\r\n }\r\n return new RefImpl(rawValue, shallow);\r\n}\r\nfunction triggerRef(ref) {\r\n trigger(toRaw(ref), \"set\" /* SET */, 'value', (process.env.NODE_ENV !== 'production') ? ref.value : void 0);\r\n}\r\nfunction unref(ref) {\r\n return isRef(ref) ? ref.value : ref;\r\n}\r\nconst shallowUnwrapHandlers = {\r\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\r\n set: (target, key, value, receiver) => {\r\n const oldValue = target[key];\r\n if (isRef(oldValue) && !isRef(value)) {\r\n oldValue.value = value;\r\n return true;\r\n }\r\n else {\r\n return Reflect.set(target, key, value, receiver);\r\n }\r\n }\r\n};\r\nfunction proxyRefs(objectWithRefs) {\r\n return isReactive(objectWithRefs)\r\n ? objectWithRefs\r\n : new Proxy(objectWithRefs, shallowUnwrapHandlers);\r\n}\r\nclass CustomRefImpl {\r\n constructor(factory) {\r\n this.__v_isRef = true;\r\n const { get, set } = factory(() => track(this, \"get\" /* GET */, 'value'), () => trigger(this, \"set\" /* SET */, 'value'));\r\n this._get = get;\r\n this._set = set;\r\n }\r\n get value() {\r\n return this._get();\r\n }\r\n set value(newVal) {\r\n this._set(newVal);\r\n }\r\n}\r\nfunction customRef(factory) {\r\n return new CustomRefImpl(factory);\r\n}\r\nfunction toRefs(object) {\r\n if ((process.env.NODE_ENV !== 'production') && !isProxy(object)) {\r\n console.warn(`toRefs() expects a reactive object but received a plain one.`);\r\n }\r\n const ret = isArray(object) ? new Array(object.length) : {};\r\n for (const key in object) {\r\n ret[key] = toRef(object, key);\r\n }\r\n return ret;\r\n}\r\nclass ObjectRefImpl {\r\n constructor(_object, _key) {\r\n this._object = _object;\r\n this._key = _key;\r\n this.__v_isRef = true;\r\n }\r\n get value() {\r\n return this._object[this._key];\r\n }\r\n set value(newVal) {\r\n this._object[this._key] = newVal;\r\n }\r\n}\r\nfunction toRef(object, key) {\r\n return isRef(object[key])\r\n ? object[key]\r\n : new ObjectRefImpl(object, key);\r\n}\n\nclass ComputedRefImpl {\r\n constructor(getter, _setter, isReadonly) {\r\n this._setter = _setter;\r\n this._dirty = true;\r\n this.__v_isRef = true;\r\n this.effect = effect(getter, {\r\n lazy: true,\r\n scheduler: () => {\r\n if (!this._dirty) {\r\n this._dirty = true;\r\n trigger(toRaw(this), \"set\" /* SET */, 'value');\r\n }\r\n }\r\n });\r\n this[\"__v_isReadonly\" /* IS_READONLY */] = isReadonly;\r\n }\r\n get value() {\r\n if (this._dirty) {\r\n this._value = this.effect();\r\n this._dirty = false;\r\n }\r\n track(toRaw(this), \"get\" /* GET */, 'value');\r\n return this._value;\r\n }\r\n set value(newValue) {\r\n this._setter(newValue);\r\n }\r\n}\r\nfunction computed(getterOrOptions) {\r\n let getter;\r\n let setter;\r\n if (isFunction(getterOrOptions)) {\r\n getter = getterOrOptions;\r\n setter = (process.env.NODE_ENV !== 'production')\r\n ? () => {\r\n console.warn('Write operation failed: computed value is readonly');\r\n }\r\n : NOOP;\r\n }\r\n else {\r\n getter = getterOrOptions.get;\r\n setter = getterOrOptions.set;\r\n }\r\n return new ComputedRefImpl(getter, setter, isFunction(getterOrOptions) || !getterOrOptions.set);\r\n}\n\nexport { ITERATE_KEY, computed, customRef, effect, enableTracking, isProxy, isReactive, isReadonly, isRef, markRaw, pauseTracking, proxyRefs, reactive, readonly, ref, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, track, trigger, triggerRef, unref };\n","import { pauseTracking, resetTracking, isRef, toRaw, shallowReactive, trigger, isReactive, effect, stop, ref, isProxy, proxyRefs, toRef, reactive, shallowReadonly, track, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { customRef, isProxy, isReactive, isReadonly, isRef, markRaw, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, toRaw, toRef, toRefs, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, extend, EMPTY_OBJ, toHandlerKey, toNumber, hyphenate, camelize, isOn, hasOwn, isModelListener, def, isReservedProp, EMPTY_ARR, isObject, capitalize, toRawType, makeMap, remove, NOOP, hasChanged, isSet, isMap, invokeArrayFns, NO, getGlobalThis, normalizeClass, normalizeStyle, isGloballyWhitelisted } from '@vue/shared';\nexport { camelize, capitalize, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\r\nfunction pushWarningContext(vnode) {\r\n stack.push(vnode);\r\n}\r\nfunction popWarningContext() {\r\n stack.pop();\r\n}\r\nfunction warn(msg, ...args) {\r\n // avoid props formatting or warn handler tracking deps that might be mutated\r\n // during patch, leading to infinite recursion.\r\n pauseTracking();\r\n const instance = stack.length ? stack[stack.length - 1].component : null;\r\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\r\n const trace = getComponentTrace();\r\n if (appWarnHandler) {\r\n callWithErrorHandling(appWarnHandler, instance, 11 /* APP_WARN_HANDLER */, [\r\n msg + args.join(''),\r\n instance && instance.proxy,\r\n trace\r\n .map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`)\r\n .join('\\n'),\r\n trace\r\n ]);\r\n }\r\n else {\r\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\r\n /* istanbul ignore if */\r\n if (trace.length &&\r\n // avoid spamming console during tests\r\n !false) {\r\n warnArgs.push(`\\n`, ...formatTrace(trace));\r\n }\r\n console.warn(...warnArgs);\r\n }\r\n resetTracking();\r\n}\r\nfunction getComponentTrace() {\r\n let currentVNode = stack[stack.length - 1];\r\n if (!currentVNode) {\r\n return [];\r\n }\r\n // we can't just use the stack because it will be incomplete during updates\r\n // that did not start from the root. Re-construct the parent chain using\r\n // instance parent pointers.\r\n const normalizedStack = [];\r\n while (currentVNode) {\r\n const last = normalizedStack[0];\r\n if (last && last.vnode === currentVNode) {\r\n last.recurseCount++;\r\n }\r\n else {\r\n normalizedStack.push({\r\n vnode: currentVNode,\r\n recurseCount: 0\r\n });\r\n }\r\n const parentInstance = currentVNode.component && currentVNode.component.parent;\r\n currentVNode = parentInstance && parentInstance.vnode;\r\n }\r\n return normalizedStack;\r\n}\r\n/* istanbul ignore next */\r\nfunction formatTrace(trace) {\r\n const logs = [];\r\n trace.forEach((entry, i) => {\r\n logs.push(...(i === 0 ? [] : [`\\n`]), ...formatTraceEntry(entry));\r\n });\r\n return logs;\r\n}\r\nfunction formatTraceEntry({ vnode, recurseCount }) {\r\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\r\n const isRoot = vnode.component ? vnode.component.parent == null : false;\r\n const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`;\r\n const close = `>` + postfix;\r\n return vnode.props\r\n ? [open, ...formatProps(vnode.props), close]\r\n : [open + close];\r\n}\r\n/* istanbul ignore next */\r\nfunction formatProps(props) {\r\n const res = [];\r\n const keys = Object.keys(props);\r\n keys.slice(0, 3).forEach(key => {\r\n res.push(...formatProp(key, props[key]));\r\n });\r\n if (keys.length > 3) {\r\n res.push(` ...`);\r\n }\r\n return res;\r\n}\r\n/* istanbul ignore next */\r\nfunction formatProp(key, value, raw) {\r\n if (isString(value)) {\r\n value = JSON.stringify(value);\r\n return raw ? value : [`${key}=${value}`];\r\n }\r\n else if (typeof value === 'number' ||\r\n typeof value === 'boolean' ||\r\n value == null) {\r\n return raw ? value : [`${key}=${value}`];\r\n }\r\n else if (isRef(value)) {\r\n value = formatProp(key, toRaw(value.value), true);\r\n return raw ? value : [`${key}=Ref<`, value, `>`];\r\n }\r\n else if (isFunction(value)) {\r\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\r\n }\r\n else {\r\n value = toRaw(value);\r\n return raw ? value : [`${key}=`, value];\r\n }\r\n}\n\nconst ErrorTypeStrings = {\r\n [\"bc\" /* BEFORE_CREATE */]: 'beforeCreate hook',\r\n [\"c\" /* CREATED */]: 'created hook',\r\n [\"bm\" /* BEFORE_MOUNT */]: 'beforeMount hook',\r\n [\"m\" /* MOUNTED */]: 'mounted hook',\r\n [\"bu\" /* BEFORE_UPDATE */]: 'beforeUpdate hook',\r\n [\"u\" /* UPDATED */]: 'updated',\r\n [\"bum\" /* BEFORE_UNMOUNT */]: 'beforeUnmount hook',\r\n [\"um\" /* UNMOUNTED */]: 'unmounted hook',\r\n [\"a\" /* ACTIVATED */]: 'activated hook',\r\n [\"da\" /* DEACTIVATED */]: 'deactivated hook',\r\n [\"ec\" /* ERROR_CAPTURED */]: 'errorCaptured hook',\r\n [\"rtc\" /* RENDER_TRACKED */]: 'renderTracked hook',\r\n [\"rtg\" /* RENDER_TRIGGERED */]: 'renderTriggered hook',\r\n [0 /* SETUP_FUNCTION */]: 'setup function',\r\n [1 /* RENDER_FUNCTION */]: 'render function',\r\n [2 /* WATCH_GETTER */]: 'watcher getter',\r\n [3 /* WATCH_CALLBACK */]: 'watcher callback',\r\n [4 /* WATCH_CLEANUP */]: 'watcher cleanup function',\r\n [5 /* NATIVE_EVENT_HANDLER */]: 'native event handler',\r\n [6 /* COMPONENT_EVENT_HANDLER */]: 'component event handler',\r\n [7 /* VNODE_HOOK */]: 'vnode hook',\r\n [8 /* DIRECTIVE_HOOK */]: 'directive hook',\r\n [9 /* TRANSITION_HOOK */]: 'transition hook',\r\n [10 /* APP_ERROR_HANDLER */]: 'app errorHandler',\r\n [11 /* APP_WARN_HANDLER */]: 'app warnHandler',\r\n [12 /* FUNCTION_REF */]: 'ref function',\r\n [13 /* ASYNC_COMPONENT_LOADER */]: 'async component loader',\r\n [14 /* SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +\r\n 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/vue-next'\r\n};\r\nfunction callWithErrorHandling(fn, instance, type, args) {\r\n let res;\r\n try {\r\n res = args ? fn(...args) : fn();\r\n }\r\n catch (err) {\r\n handleError(err, instance, type);\r\n }\r\n return res;\r\n}\r\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\r\n if (isFunction(fn)) {\r\n const res = callWithErrorHandling(fn, instance, type, args);\r\n if (res && isPromise(res)) {\r\n res.catch(err => {\r\n handleError(err, instance, type);\r\n });\r\n }\r\n return res;\r\n }\r\n const values = [];\r\n for (let i = 0; i < fn.length; i++) {\r\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\r\n }\r\n return values;\r\n}\r\nfunction handleError(err, instance, type, throwInDev = true) {\r\n const contextVNode = instance ? instance.vnode : null;\r\n if (instance) {\r\n let cur = instance.parent;\r\n // the exposed instance is the render proxy to keep it consistent with 2.x\r\n const exposedInstance = instance.proxy;\r\n // in production the hook receives only the error code\r\n const errorInfo = (process.env.NODE_ENV !== 'production') ? ErrorTypeStrings[type] : type;\r\n while (cur) {\r\n const errorCapturedHooks = cur.ec;\r\n if (errorCapturedHooks) {\r\n for (let i = 0; i < errorCapturedHooks.length; i++) {\r\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\r\n return;\r\n }\r\n }\r\n }\r\n cur = cur.parent;\r\n }\r\n // app-level handling\r\n const appErrorHandler = instance.appContext.config.errorHandler;\r\n if (appErrorHandler) {\r\n callWithErrorHandling(appErrorHandler, null, 10 /* APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]);\r\n return;\r\n }\r\n }\r\n logError(err, type, contextVNode, throwInDev);\r\n}\r\nfunction logError(err, type, contextVNode, throwInDev = true) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const info = ErrorTypeStrings[type];\r\n if (contextVNode) {\r\n pushWarningContext(contextVNode);\r\n }\r\n warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\r\n if (contextVNode) {\r\n popWarningContext();\r\n }\r\n // crash in dev by default so it's more noticeable\r\n if (throwInDev) {\r\n throw err;\r\n }\r\n else {\r\n console.error(err);\r\n }\r\n }\r\n else {\r\n // recover in prod to reduce the impact on end-user\r\n console.error(err);\r\n }\r\n}\n\nlet isFlushing = false;\r\nlet isFlushPending = false;\r\nconst queue = [];\r\nlet flushIndex = 0;\r\nconst pendingPreFlushCbs = [];\r\nlet activePreFlushCbs = null;\r\nlet preFlushIndex = 0;\r\nconst pendingPostFlushCbs = [];\r\nlet activePostFlushCbs = null;\r\nlet postFlushIndex = 0;\r\nconst resolvedPromise = Promise.resolve();\r\nlet currentFlushPromise = null;\r\nlet currentPreFlushParentJob = null;\r\nconst RECURSION_LIMIT = 100;\r\nfunction nextTick(fn) {\r\n const p = currentFlushPromise || resolvedPromise;\r\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\r\n}\r\nfunction queueJob(job) {\r\n // the dedupe search uses the startIndex argument of Array.includes()\r\n // by default the search index includes the current job that is being run\r\n // so it cannot recursively trigger itself again.\r\n // if the job is a watch() callback, the search will start with a +1 index to\r\n // allow it recursively trigger itself - it is the user's responsibility to\r\n // ensure it doesn't end up in an infinite loop.\r\n if ((!queue.length ||\r\n !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) &&\r\n job !== currentPreFlushParentJob) {\r\n queue.push(job);\r\n queueFlush();\r\n }\r\n}\r\nfunction queueFlush() {\r\n if (!isFlushing && !isFlushPending) {\r\n isFlushPending = true;\r\n currentFlushPromise = resolvedPromise.then(flushJobs);\r\n }\r\n}\r\nfunction invalidateJob(job) {\r\n const i = queue.indexOf(job);\r\n if (i > -1) {\r\n queue.splice(i, 1);\r\n }\r\n}\r\nfunction queueCb(cb, activeQueue, pendingQueue, index) {\r\n if (!isArray(cb)) {\r\n if (!activeQueue ||\r\n !activeQueue.includes(cb, cb.allowRecurse ? index + 1 : index)) {\r\n pendingQueue.push(cb);\r\n }\r\n }\r\n else {\r\n // if cb is an array, it is a component lifecycle hook which can only be\r\n // triggered by a job, which is already deduped in the main queue, so\r\n // we can skip duplicate check here to improve perf\r\n pendingQueue.push(...cb);\r\n }\r\n queueFlush();\r\n}\r\nfunction queuePreFlushCb(cb) {\r\n queueCb(cb, activePreFlushCbs, pendingPreFlushCbs, preFlushIndex);\r\n}\r\nfunction queuePostFlushCb(cb) {\r\n queueCb(cb, activePostFlushCbs, pendingPostFlushCbs, postFlushIndex);\r\n}\r\nfunction flushPreFlushCbs(seen, parentJob = null) {\r\n if (pendingPreFlushCbs.length) {\r\n currentPreFlushParentJob = parentJob;\r\n activePreFlushCbs = [...new Set(pendingPreFlushCbs)];\r\n pendingPreFlushCbs.length = 0;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n seen = seen || new Map();\r\n }\r\n for (preFlushIndex = 0; preFlushIndex < activePreFlushCbs.length; preFlushIndex++) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkRecursiveUpdates(seen, activePreFlushCbs[preFlushIndex]);\r\n }\r\n activePreFlushCbs[preFlushIndex]();\r\n }\r\n activePreFlushCbs = null;\r\n preFlushIndex = 0;\r\n currentPreFlushParentJob = null;\r\n // recursively flush until it drains\r\n flushPreFlushCbs(seen, parentJob);\r\n }\r\n}\r\nfunction flushPostFlushCbs(seen) {\r\n if (pendingPostFlushCbs.length) {\r\n const deduped = [...new Set(pendingPostFlushCbs)];\r\n pendingPostFlushCbs.length = 0;\r\n // #1947 already has active queue, nested flushPostFlushCbs call\r\n if (activePostFlushCbs) {\r\n activePostFlushCbs.push(...deduped);\r\n return;\r\n }\r\n activePostFlushCbs = deduped;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n seen = seen || new Map();\r\n }\r\n activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\r\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex]);\r\n }\r\n activePostFlushCbs[postFlushIndex]();\r\n }\r\n activePostFlushCbs = null;\r\n postFlushIndex = 0;\r\n }\r\n}\r\nconst getId = (job) => job.id == null ? Infinity : job.id;\r\nfunction flushJobs(seen) {\r\n isFlushPending = false;\r\n isFlushing = true;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n seen = seen || new Map();\r\n }\r\n flushPreFlushCbs(seen);\r\n // Sort queue before flush.\r\n // This ensures that:\r\n // 1. Components are updated from parent to child. (because parent is always\r\n // created before the child so its render effect will have smaller\r\n // priority number)\r\n // 2. If a component is unmounted during a parent component's update,\r\n // its update can be skipped.\r\n queue.sort((a, b) => getId(a) - getId(b));\r\n try {\r\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\r\n const job = queue[flushIndex];\r\n if (job) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkRecursiveUpdates(seen, job);\r\n }\r\n callWithErrorHandling(job, null, 14 /* SCHEDULER */);\r\n }\r\n }\r\n }\r\n finally {\r\n flushIndex = 0;\r\n queue.length = 0;\r\n flushPostFlushCbs(seen);\r\n isFlushing = false;\r\n currentFlushPromise = null;\r\n // some postFlushCb queued jobs!\r\n // keep flushing until it drains.\r\n if (queue.length || pendingPostFlushCbs.length) {\r\n flushJobs(seen);\r\n }\r\n }\r\n}\r\nfunction checkRecursiveUpdates(seen, fn) {\r\n if (!seen.has(fn)) {\r\n seen.set(fn, 1);\r\n }\r\n else {\r\n const count = seen.get(fn);\r\n if (count > RECURSION_LIMIT) {\r\n throw new Error(`Maximum recursive updates exceeded. ` +\r\n `This means you have a reactive effect that is mutating its own ` +\r\n `dependencies and thus recursively triggering itself. Possible sources ` +\r\n `include component template, render function, updated hook or ` +\r\n `watcher source function.`);\r\n }\r\n else {\r\n seen.set(fn, count + 1);\r\n }\r\n }\r\n}\n\n/* eslint-disable no-restricted-globals */\r\nlet isHmrUpdating = false;\r\nconst hmrDirtyComponents = new Set();\r\n// Expose the HMR runtime on the global object\r\n// This makes it entirely tree-shakable without polluting the exports and makes\r\n// it easier to be used in toolings like vue-loader\r\n// Note: for a component to be eligible for HMR it also needs the __hmrId option\r\n// to be set so that its instances can be registered / removed.\r\nif ((process.env.NODE_ENV !== 'production')) {\r\n const globalObject = typeof global !== 'undefined'\r\n ? global\r\n : typeof self !== 'undefined'\r\n ? self\r\n : typeof window !== 'undefined'\r\n ? window\r\n : {};\r\n globalObject.__VUE_HMR_RUNTIME__ = {\r\n createRecord: tryWrap(createRecord),\r\n rerender: tryWrap(rerender),\r\n reload: tryWrap(reload)\r\n };\r\n}\r\nconst map = new Map();\r\nfunction registerHMR(instance) {\r\n const id = instance.type.__hmrId;\r\n let record = map.get(id);\r\n if (!record) {\r\n createRecord(id, instance.type);\r\n record = map.get(id);\r\n }\r\n record.instances.add(instance);\r\n}\r\nfunction unregisterHMR(instance) {\r\n map.get(instance.type.__hmrId).instances.delete(instance);\r\n}\r\nfunction createRecord(id, component) {\r\n if (!component) {\r\n warn(`HMR API usage is out of date.\\n` +\r\n `Please upgrade vue-loader/vite/rollup-plugin-vue or other relevant ` +\r\n `depdendency that handles Vue SFC compilation.`);\r\n component = {};\r\n }\r\n if (map.has(id)) {\r\n return false;\r\n }\r\n map.set(id, {\r\n component: isClassComponent(component) ? component.__vccOpts : component,\r\n instances: new Set()\r\n });\r\n return true;\r\n}\r\nfunction rerender(id, newRender) {\r\n const record = map.get(id);\r\n if (!record)\r\n return;\r\n if (newRender)\r\n record.component.render = newRender;\r\n // Array.from creates a snapshot which avoids the set being mutated during\r\n // updates\r\n Array.from(record.instances).forEach(instance => {\r\n if (newRender) {\r\n instance.render = newRender;\r\n }\r\n instance.renderCache = [];\r\n // this flag forces child components with slot content to update\r\n isHmrUpdating = true;\r\n instance.update();\r\n isHmrUpdating = false;\r\n });\r\n}\r\nfunction reload(id, newComp) {\r\n const record = map.get(id);\r\n if (!record)\r\n return;\r\n // Array.from creates a snapshot which avoids the set being mutated during\r\n // updates\r\n const { component, instances } = record;\r\n if (!hmrDirtyComponents.has(component)) {\r\n // 1. Update existing comp definition to match new one\r\n newComp = isClassComponent(newComp) ? newComp.__vccOpts : newComp;\r\n extend(component, newComp);\r\n for (const key in component) {\r\n if (!(key in newComp)) {\r\n delete component[key];\r\n }\r\n }\r\n // 2. Mark component dirty. This forces the renderer to replace the component\r\n // on patch.\r\n hmrDirtyComponents.add(component);\r\n // 3. Make sure to unmark the component after the reload.\r\n queuePostFlushCb(() => {\r\n hmrDirtyComponents.delete(component);\r\n });\r\n }\r\n Array.from(instances).forEach(instance => {\r\n if (instance.parent) {\r\n // 4. Force the parent instance to re-render. This will cause all updated\r\n // components to be unmounted and re-mounted. Queue the update so that we\r\n // don't end up forcing the same parent to re-render multiple times.\r\n queueJob(instance.parent.update);\r\n }\r\n else if (instance.appContext.reload) {\r\n // root instance mounted via createApp() has a reload method\r\n instance.appContext.reload();\r\n }\r\n else if (typeof window !== 'undefined') {\r\n // root instance inside tree created via raw render(). Force reload.\r\n window.location.reload();\r\n }\r\n else {\r\n console.warn('[HMR] Root or manually mounted instance modified. Full reload required.');\r\n }\r\n });\r\n}\r\nfunction tryWrap(fn) {\r\n return (id, arg) => {\r\n try {\r\n return fn(id, arg);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` +\r\n `Full reload required.`);\r\n }\r\n };\r\n}\n\nlet devtools;\r\nfunction setDevtoolsHook(hook) {\r\n devtools = hook;\r\n}\r\nfunction devtoolsInitApp(app, version) {\r\n // TODO queue if devtools is undefined\r\n if (!devtools)\r\n return;\r\n devtools.emit(\"app:init\" /* APP_INIT */, app, version, {\r\n Fragment,\r\n Text,\r\n Comment,\r\n Static\r\n });\r\n}\r\nfunction devtoolsUnmountApp(app) {\r\n if (!devtools)\r\n return;\r\n devtools.emit(\"app:unmount\" /* APP_UNMOUNT */, app);\r\n}\r\nconst devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook(\"component:added\" /* COMPONENT_ADDED */);\r\nconst devtoolsComponentUpdated = /*#__PURE__*/ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\r\nconst devtoolsComponentRemoved = /*#__PURE__*/ createDevtoolsComponentHook(\"component:removed\" /* COMPONENT_REMOVED */);\r\nfunction createDevtoolsComponentHook(hook) {\r\n return (component) => {\r\n if (!devtools)\r\n return;\r\n devtools.emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);\r\n };\r\n}\r\nfunction devtoolsComponentEmit(component, event, params) {\r\n if (!devtools)\r\n return;\r\n devtools.emit(\"component:emit\" /* COMPONENT_EMIT */, component.appContext.app, component, event, params);\r\n}\n\nfunction emit(instance, event, ...rawArgs) {\r\n const props = instance.vnode.props || EMPTY_OBJ;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const { emitsOptions, propsOptions: [propsOptions] } = instance;\r\n if (emitsOptions) {\r\n if (!(event in emitsOptions)) {\r\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\r\n warn(`Component emitted event \"${event}\" but it is neither declared in ` +\r\n `the emits option nor as an \"${toHandlerKey(event)}\" prop.`);\r\n }\r\n }\r\n else {\r\n const validator = emitsOptions[event];\r\n if (isFunction(validator)) {\r\n const isValid = validator(...rawArgs);\r\n if (!isValid) {\r\n warn(`Invalid event arguments: event validation failed for event \"${event}\".`);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n let args = rawArgs;\r\n const isModelListener = event.startsWith('update:');\r\n // for v-model update:xxx events, apply modifiers on args\r\n const modelArg = isModelListener && event.slice(7);\r\n if (modelArg && modelArg in props) {\r\n const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`;\r\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\r\n if (trim) {\r\n args = rawArgs.map(a => a.trim());\r\n }\r\n else if (number) {\r\n args = rawArgs.map(toNumber);\r\n }\r\n }\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n devtoolsComponentEmit(instance, event, args);\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const lowerCaseEvent = event.toLowerCase();\r\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\r\n warn(`Event \"${lowerCaseEvent}\" is emitted in component ` +\r\n `${formatComponentName(instance, instance.type)} but the handler is registered for \"${event}\". ` +\r\n `Note that HTML attributes are case-insensitive and you cannot use ` +\r\n `v-on to listen to camelCase events when using in-DOM templates. ` +\r\n `You should probably use \"${hyphenate(event)}\" instead of \"${event}\".`);\r\n }\r\n }\r\n // convert handler name to camelCase. See issue #2249\r\n let handlerName = toHandlerKey(camelize(event));\r\n let handler = props[handlerName];\r\n // for v-model update:xxx events, also trigger kebab-case equivalent\r\n // for props passed via kebab-case\r\n if (!handler && isModelListener) {\r\n handlerName = toHandlerKey(hyphenate(event));\r\n handler = props[handlerName];\r\n }\r\n if (handler) {\r\n callWithAsyncErrorHandling(handler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args);\r\n }\r\n const onceHandler = props[handlerName + `Once`];\r\n if (onceHandler) {\r\n if (!instance.emitted) {\r\n (instance.emitted = {})[handlerName] = true;\r\n }\r\n else if (instance.emitted[handlerName]) {\r\n return;\r\n }\r\n callWithAsyncErrorHandling(onceHandler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args);\r\n }\r\n}\r\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\r\n if (!appContext.deopt && comp.__emits !== undefined) {\r\n return comp.__emits;\r\n }\r\n const raw = comp.emits;\r\n let normalized = {};\r\n // apply mixin/extends props\r\n let hasExtends = false;\r\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\r\n const extendEmits = (raw) => {\r\n hasExtends = true;\r\n extend(normalized, normalizeEmitsOptions(raw, appContext, true));\r\n };\r\n if (!asMixin && appContext.mixins.length) {\r\n appContext.mixins.forEach(extendEmits);\r\n }\r\n if (comp.extends) {\r\n extendEmits(comp.extends);\r\n }\r\n if (comp.mixins) {\r\n comp.mixins.forEach(extendEmits);\r\n }\r\n }\r\n if (!raw && !hasExtends) {\r\n return (comp.__emits = null);\r\n }\r\n if (isArray(raw)) {\r\n raw.forEach(key => (normalized[key] = null));\r\n }\r\n else {\r\n extend(normalized, raw);\r\n }\r\n return (comp.__emits = normalized);\r\n}\r\n// Check if an incoming prop key is a declared emit event listener.\r\n// e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are\r\n// both considered matched listeners.\r\nfunction isEmitListener(options, key) {\r\n if (!options || !isOn(key)) {\r\n return false;\r\n }\r\n key = key.slice(2).replace(/Once$/, '');\r\n return (hasOwn(options, key[0].toLowerCase() + key.slice(1)) ||\r\n hasOwn(options, hyphenate(key)) ||\r\n hasOwn(options, key));\r\n}\n\n/**\r\n * mark the current rendering instance for asset resolution (e.g.\r\n * resolveComponent, resolveDirective) during render\r\n */\r\nlet currentRenderingInstance = null;\r\nfunction setCurrentRenderingInstance(instance) {\r\n currentRenderingInstance = instance;\r\n}\r\n/**\r\n * dev only flag to track whether $attrs was used during render.\r\n * If $attrs was used during render then the warning for failed attrs\r\n * fallthrough can be suppressed.\r\n */\r\nlet accessedAttrs = false;\r\nfunction markAttrsAccessed() {\r\n accessedAttrs = true;\r\n}\r\nfunction renderComponentRoot(instance) {\r\n const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx } = instance;\r\n let result;\r\n currentRenderingInstance = instance;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n accessedAttrs = false;\r\n }\r\n try {\r\n let fallthroughAttrs;\r\n if (vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */) {\r\n // withProxy is a proxy with a different `has` trap only for\r\n // runtime-compiled render functions using `with` block.\r\n const proxyToUse = withProxy || proxy;\r\n result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\r\n fallthroughAttrs = attrs;\r\n }\r\n else {\r\n // functional\r\n const render = Component;\r\n // in dev, mark attrs accessed if optional props (attrs === props)\r\n if ((process.env.NODE_ENV !== 'production') && attrs === props) {\r\n markAttrsAccessed();\r\n }\r\n result = normalizeVNode(render.length > 1\r\n ? render(props, (process.env.NODE_ENV !== 'production')\r\n ? {\r\n get attrs() {\r\n markAttrsAccessed();\r\n return attrs;\r\n },\r\n slots,\r\n emit\r\n }\r\n : { attrs, slots, emit })\r\n : render(props, null /* we know it doesn't need it */));\r\n fallthroughAttrs = Component.props\r\n ? attrs\r\n : getFunctionalFallthrough(attrs);\r\n }\r\n // attr merging\r\n // in dev mode, comments are preserved, and it's possible for a template\r\n // to have comments along side the root element which makes it a fragment\r\n let root = result;\r\n let setRoot = undefined;\r\n if ((process.env.NODE_ENV !== 'production') && result.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */) {\r\n ;\r\n [root, setRoot] = getChildRoot(result);\r\n }\r\n if (Component.inheritAttrs !== false && fallthroughAttrs) {\r\n const keys = Object.keys(fallthroughAttrs);\r\n const { shapeFlag } = root;\r\n if (keys.length) {\r\n if (shapeFlag & 1 /* ELEMENT */ ||\r\n shapeFlag & 6 /* COMPONENT */) {\r\n if (propsOptions && keys.some(isModelListener)) {\r\n // If a v-model listener (onUpdate:xxx) has a corresponding declared\r\n // prop, it indicates this component expects to handle v-model and\r\n // it should not fallthrough.\r\n // related: #1543, #1643, #1989\r\n fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\r\n }\r\n root = cloneVNode(root, fallthroughAttrs);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production') && !accessedAttrs && root.type !== Comment) {\r\n const allAttrs = Object.keys(attrs);\r\n const eventAttrs = [];\r\n const extraAttrs = [];\r\n for (let i = 0, l = allAttrs.length; i < l; i++) {\r\n const key = allAttrs[i];\r\n if (isOn(key)) {\r\n // ignore v-model handlers when they fail to fallthrough\r\n if (!isModelListener(key)) {\r\n // remove `on`, lowercase first letter to reflect event casing\r\n // accurately\r\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\r\n }\r\n }\r\n else {\r\n extraAttrs.push(key);\r\n }\r\n }\r\n if (extraAttrs.length) {\r\n warn(`Extraneous non-props attributes (` +\r\n `${extraAttrs.join(', ')}) ` +\r\n `were passed to component but could not be automatically inherited ` +\r\n `because component renders fragment or text root nodes.`);\r\n }\r\n if (eventAttrs.length) {\r\n warn(`Extraneous non-emits event listeners (` +\r\n `${eventAttrs.join(', ')}) ` +\r\n `were passed to component but could not be automatically inherited ` +\r\n `because component renders fragment or text root nodes. ` +\r\n `If the listener is intended to be a component custom event listener only, ` +\r\n `declare it using the \"emits\" option.`);\r\n }\r\n }\r\n }\r\n }\r\n // inherit directives\r\n if (vnode.dirs) {\r\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\r\n warn(`Runtime directive used on component with non-element root node. ` +\r\n `The directives will not function as intended.`);\r\n }\r\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\r\n }\r\n // inherit transition data\r\n if (vnode.transition) {\r\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\r\n warn(`Component inside <Transition> renders non-element root node ` +\r\n `that cannot be animated.`);\r\n }\r\n root.transition = vnode.transition;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && setRoot) {\r\n setRoot(root);\r\n }\r\n else {\r\n result = root;\r\n }\r\n }\r\n catch (err) {\r\n handleError(err, instance, 1 /* RENDER_FUNCTION */);\r\n result = createVNode(Comment);\r\n }\r\n currentRenderingInstance = null;\r\n return result;\r\n}\r\n/**\r\n * dev only\r\n * In dev mode, template root level comments are rendered, which turns the\r\n * template into a fragment root, but we need to locate the single element\r\n * root for attrs and scope id processing.\r\n */\r\nconst getChildRoot = (vnode) => {\r\n const rawChildren = vnode.children;\r\n const dynamicChildren = vnode.dynamicChildren;\r\n const childRoot = filterSingleRoot(rawChildren);\r\n if (!childRoot) {\r\n return [vnode, undefined];\r\n }\r\n const index = rawChildren.indexOf(childRoot);\r\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\r\n const setRoot = (updatedRoot) => {\r\n rawChildren[index] = updatedRoot;\r\n if (dynamicChildren) {\r\n if (dynamicIndex > -1) {\r\n dynamicChildren[dynamicIndex] = updatedRoot;\r\n }\r\n else if (updatedRoot.patchFlag > 0) {\r\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\r\n }\r\n }\r\n };\r\n return [normalizeVNode(childRoot), setRoot];\r\n};\r\nfunction filterSingleRoot(children) {\r\n let singleRoot;\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n if (isVNode(child)) {\r\n // ignore user comment\r\n if (child.type !== Comment || child.children === 'v-if') {\r\n if (singleRoot) {\r\n // has more than 1 non-comment child, return now\r\n return;\r\n }\r\n else {\r\n singleRoot = child;\r\n }\r\n }\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n return singleRoot;\r\n}\r\nconst getFunctionalFallthrough = (attrs) => {\r\n let res;\r\n for (const key in attrs) {\r\n if (key === 'class' || key === 'style' || isOn(key)) {\r\n (res || (res = {}))[key] = attrs[key];\r\n }\r\n }\r\n return res;\r\n};\r\nconst filterModelListeners = (attrs, props) => {\r\n const res = {};\r\n for (const key in attrs) {\r\n if (!isModelListener(key) || !(key.slice(9) in props)) {\r\n res[key] = attrs[key];\r\n }\r\n }\r\n return res;\r\n};\r\nconst isElementRoot = (vnode) => {\r\n return (vnode.shapeFlag & 6 /* COMPONENT */ ||\r\n vnode.shapeFlag & 1 /* ELEMENT */ ||\r\n vnode.type === Comment // potential v-if branch switch\r\n );\r\n};\r\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\r\n const { props: prevProps, children: prevChildren, component } = prevVNode;\r\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\r\n const emits = component.emitsOptions;\r\n // Parent component's render function was hot-updated. Since this may have\r\n // caused the child component's slots content to have changed, we need to\r\n // force the child to update as well.\r\n if ((process.env.NODE_ENV !== 'production') && (prevChildren || nextChildren) && isHmrUpdating) {\r\n return true;\r\n }\r\n // force child update for runtime directive or transition on component vnode.\r\n if (nextVNode.dirs || nextVNode.transition) {\r\n return true;\r\n }\r\n if (optimized && patchFlag >= 0) {\r\n if (patchFlag & 1024 /* DYNAMIC_SLOTS */) {\r\n // slot content that references values that might have changed,\r\n // e.g. in a v-for\r\n return true;\r\n }\r\n if (patchFlag & 16 /* FULL_PROPS */) {\r\n if (!prevProps) {\r\n return !!nextProps;\r\n }\r\n // presence of this flag indicates props are always non-null\r\n return hasPropsChanged(prevProps, nextProps, emits);\r\n }\r\n else if (patchFlag & 8 /* PROPS */) {\r\n const dynamicProps = nextVNode.dynamicProps;\r\n for (let i = 0; i < dynamicProps.length; i++) {\r\n const key = dynamicProps[i];\r\n if (nextProps[key] !== prevProps[key] &&\r\n !isEmitListener(emits, key)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // this path is only taken by manually written render functions\r\n // so presence of any children leads to a forced update\r\n if (prevChildren || nextChildren) {\r\n if (!nextChildren || !nextChildren.$stable) {\r\n return true;\r\n }\r\n }\r\n if (prevProps === nextProps) {\r\n return false;\r\n }\r\n if (!prevProps) {\r\n return !!nextProps;\r\n }\r\n if (!nextProps) {\r\n return true;\r\n }\r\n return hasPropsChanged(prevProps, nextProps, emits);\r\n }\r\n return false;\r\n}\r\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\r\n const nextKeys = Object.keys(nextProps);\r\n if (nextKeys.length !== Object.keys(prevProps).length) {\r\n return true;\r\n }\r\n for (let i = 0; i < nextKeys.length; i++) {\r\n const key = nextKeys[i];\r\n if (nextProps[key] !== prevProps[key] &&\r\n !isEmitListener(emitsOptions, key)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction updateHOCHostEl({ vnode, parent }, el // HostNode\r\n) {\r\n while (parent && parent.subTree === vnode) {\r\n (vnode = parent.vnode).el = el;\r\n parent = parent.parent;\r\n }\r\n}\n\nconst isSuspense = (type) => type.__isSuspense;\r\n// Suspense exposes a component-like API, and is treated like a component\r\n// in the compiler, but internally it's a special built-in type that hooks\r\n// directly into the renderer.\r\nconst SuspenseImpl = {\r\n // In order to make Suspense tree-shakable, we need to avoid importing it\r\n // directly in the renderer. The renderer checks for the __isSuspense flag\r\n // on a vnode's type and calls the `process` method, passing in renderer\r\n // internals.\r\n __isSuspense: true,\r\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized, \r\n // platform-specific impl passed from renderer\r\n rendererInternals) {\r\n if (n1 == null) {\r\n mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized, rendererInternals);\r\n }\r\n else {\r\n patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, rendererInternals);\r\n }\r\n },\r\n hydrate: hydrateSuspense,\r\n create: createSuspenseBoundary\r\n};\r\n// Force-casted public typing for h and TSX props inference\r\nconst Suspense = ( SuspenseImpl\r\n );\r\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, optimized, rendererInternals) {\r\n const { p: patch, o: { createElement } } = rendererInternals;\r\n const hiddenContainer = createElement('div');\r\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, optimized, rendererInternals));\r\n // start mounting the content subtree in an off-dom container\r\n patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG);\r\n // now check if we have encountered any async deps\r\n if (suspense.deps > 0) {\r\n // has async\r\n // mount the fallback tree\r\n patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG);\r\n setActiveBranch(suspense, vnode.ssFallback);\r\n }\r\n else {\r\n // Suspense has no async deps. Just resolve.\r\n suspense.resolve();\r\n }\r\n}\r\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, { p: patch, um: unmount, o: { createElement } }) {\r\n const suspense = (n2.suspense = n1.suspense);\r\n suspense.vnode = n2;\r\n n2.el = n1.el;\r\n const newBranch = n2.ssContent;\r\n const newFallback = n2.ssFallback;\r\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\r\n if (pendingBranch) {\r\n suspense.pendingBranch = newBranch;\r\n if (isSameVNodeType(newBranch, pendingBranch)) {\r\n // same root type but content may have changed.\r\n patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG);\r\n if (suspense.deps <= 0) {\r\n suspense.resolve();\r\n }\r\n else if (isInFallback) {\r\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG);\r\n setActiveBranch(suspense, newFallback);\r\n }\r\n }\r\n else {\r\n // toggled before pending tree is resolved\r\n suspense.pendingId++;\r\n if (isHydrating) {\r\n // if toggled before hydration is finished, the current DOM tree is\r\n // no longer valid. set it as the active branch so it will be unmounted\r\n // when resolved\r\n suspense.isHydrating = false;\r\n suspense.activeBranch = pendingBranch;\r\n }\r\n else {\r\n unmount(pendingBranch, parentComponent, suspense);\r\n }\r\n // increment pending ID. this is used to invalidate async callbacks\r\n // reset suspense state\r\n suspense.deps = 0;\r\n // discard effects from pending branch\r\n suspense.effects.length = 0;\r\n // discard previous container\r\n suspense.hiddenContainer = createElement('div');\r\n if (isInFallback) {\r\n // already in fallback state\r\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG);\r\n if (suspense.deps <= 0) {\r\n suspense.resolve();\r\n }\r\n else {\r\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG);\r\n setActiveBranch(suspense, newFallback);\r\n }\r\n }\r\n else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\r\n // toggled \"back\" to current active branch\r\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG);\r\n // force resolve\r\n suspense.resolve(true);\r\n }\r\n else {\r\n // switched to a 3rd branch\r\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG);\r\n if (suspense.deps <= 0) {\r\n suspense.resolve();\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\r\n // root did not change, just normal patch\r\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG);\r\n setActiveBranch(suspense, newBranch);\r\n }\r\n else {\r\n // root node toggled\r\n // invoke @pending event\r\n const onPending = n2.props && n2.props.onPending;\r\n if (isFunction(onPending)) {\r\n onPending();\r\n }\r\n // mount pending branch in off-dom container\r\n suspense.pendingBranch = newBranch;\r\n suspense.pendingId++;\r\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG);\r\n if (suspense.deps <= 0) {\r\n // incoming branch has no async deps, resolve now.\r\n suspense.resolve();\r\n }\r\n else {\r\n const { timeout, pendingId } = suspense;\r\n if (timeout > 0) {\r\n setTimeout(() => {\r\n if (suspense.pendingId === pendingId) {\r\n suspense.fallback(newFallback);\r\n }\r\n }, timeout);\r\n }\r\n else if (timeout === 0) {\r\n suspense.fallback(newFallback);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nlet hasWarned = false;\r\nfunction createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, optimized, rendererInternals, isHydrating = false) {\r\n /* istanbul ignore if */\r\n if ((process.env.NODE_ENV !== 'production') && !false && !hasWarned) {\r\n hasWarned = true;\r\n // @ts-ignore `console.info` cannot be null error\r\n console[console.info ? 'info' : 'log'](`<Suspense> is an experimental feature and its API will likely change.`);\r\n }\r\n const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove } } = rendererInternals;\r\n const timeout = toNumber(vnode.props && vnode.props.timeout);\r\n const suspense = {\r\n vnode,\r\n parent,\r\n parentComponent,\r\n isSVG,\r\n container,\r\n hiddenContainer,\r\n anchor,\r\n deps: 0,\r\n pendingId: 0,\r\n timeout: typeof timeout === 'number' ? timeout : -1,\r\n activeBranch: null,\r\n pendingBranch: null,\r\n isInFallback: true,\r\n isHydrating,\r\n isUnmounted: false,\r\n effects: [],\r\n resolve(resume = false) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (!resume && !suspense.pendingBranch) {\r\n throw new Error(`suspense.resolve() is called without a pending branch.`);\r\n }\r\n if (suspense.isUnmounted) {\r\n throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`);\r\n }\r\n }\r\n const { vnode, activeBranch, pendingBranch, pendingId, effects, parentComponent, container } = suspense;\r\n if (suspense.isHydrating) {\r\n suspense.isHydrating = false;\r\n }\r\n else if (!resume) {\r\n const delayEnter = activeBranch &&\r\n pendingBranch.transition &&\r\n pendingBranch.transition.mode === 'out-in';\r\n if (delayEnter) {\r\n activeBranch.transition.afterLeave = () => {\r\n if (pendingId === suspense.pendingId) {\r\n move(pendingBranch, container, anchor, 0 /* ENTER */);\r\n }\r\n };\r\n }\r\n // this is initial anchor on mount\r\n let { anchor } = suspense;\r\n // unmount current active tree\r\n if (activeBranch) {\r\n // if the fallback tree was mounted, it may have been moved\r\n // as part of a parent suspense. get the latest anchor for insertion\r\n anchor = next(activeBranch);\r\n unmount(activeBranch, parentComponent, suspense, true);\r\n }\r\n if (!delayEnter) {\r\n // move content from off-dom container to actual container\r\n move(pendingBranch, container, anchor, 0 /* ENTER */);\r\n }\r\n }\r\n setActiveBranch(suspense, pendingBranch);\r\n suspense.pendingBranch = null;\r\n suspense.isInFallback = false;\r\n // flush buffered effects\r\n // check if there is a pending parent suspense\r\n let parent = suspense.parent;\r\n let hasUnresolvedAncestor = false;\r\n while (parent) {\r\n if (parent.pendingBranch) {\r\n // found a pending parent suspense, merge buffered post jobs\r\n // into that parent\r\n parent.effects.push(...effects);\r\n hasUnresolvedAncestor = true;\r\n break;\r\n }\r\n parent = parent.parent;\r\n }\r\n // no pending parent suspense, flush all jobs\r\n if (!hasUnresolvedAncestor) {\r\n queuePostFlushCb(effects);\r\n }\r\n suspense.effects = [];\r\n // invoke @resolve event\r\n const onResolve = vnode.props && vnode.props.onResolve;\r\n if (isFunction(onResolve)) {\r\n onResolve();\r\n }\r\n },\r\n fallback(fallbackVNode) {\r\n if (!suspense.pendingBranch) {\r\n return;\r\n }\r\n const { vnode, activeBranch, parentComponent, container, isSVG } = suspense;\r\n // invoke @fallback event\r\n const onFallback = vnode.props && vnode.props.onFallback;\r\n if (isFunction(onFallback)) {\r\n onFallback();\r\n }\r\n const anchor = next(activeBranch);\r\n const mountFallback = () => {\r\n if (!suspense.isInFallback) {\r\n return;\r\n }\r\n // mount the fallback tree\r\n patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG);\r\n setActiveBranch(suspense, fallbackVNode);\r\n };\r\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in';\r\n if (delayEnter) {\r\n activeBranch.transition.afterLeave = mountFallback;\r\n }\r\n // unmount current active branch\r\n unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now\r\n true // shouldRemove\r\n );\r\n suspense.isInFallback = true;\r\n if (!delayEnter) {\r\n mountFallback();\r\n }\r\n },\r\n move(container, anchor, type) {\r\n suspense.activeBranch &&\r\n move(suspense.activeBranch, container, anchor, type);\r\n suspense.container = container;\r\n },\r\n next() {\r\n return suspense.activeBranch && next(suspense.activeBranch);\r\n },\r\n registerDep(instance, setupRenderEffect) {\r\n const isInPendingSuspense = !!suspense.pendingBranch;\r\n if (isInPendingSuspense) {\r\n suspense.deps++;\r\n }\r\n const hydratedEl = instance.vnode.el;\r\n instance\r\n .asyncDep.catch(err => {\r\n handleError(err, instance, 0 /* SETUP_FUNCTION */);\r\n })\r\n .then(asyncSetupResult => {\r\n // retry when the setup() promise resolves.\r\n // component may have been unmounted before resolve.\r\n if (instance.isUnmounted ||\r\n suspense.isUnmounted ||\r\n suspense.pendingId !== instance.suspenseId) {\r\n return;\r\n }\r\n // retry from this component\r\n instance.asyncResolved = true;\r\n const { vnode } = instance;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n pushWarningContext(vnode);\r\n }\r\n handleSetupResult(instance, asyncSetupResult);\r\n if (hydratedEl) {\r\n // vnode may have been replaced if an update happened before the\r\n // async dep is resolved.\r\n vnode.el = hydratedEl;\r\n }\r\n const placeholder = !hydratedEl && instance.subTree.el;\r\n setupRenderEffect(instance, vnode, \r\n // component may have been moved before resolve.\r\n // if this is not a hydration, instance.subTree will be the comment\r\n // placeholder.\r\n parentNode(hydratedEl || instance.subTree.el), \r\n // anchor will not be used if this is hydration, so only need to\r\n // consider the comment placeholder case.\r\n hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized);\r\n if (placeholder) {\r\n remove(placeholder);\r\n }\r\n updateHOCHostEl(instance, vnode.el);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n popWarningContext();\r\n }\r\n // only decrease deps count if suspense is not already resolved\r\n if (isInPendingSuspense && --suspense.deps === 0) {\r\n suspense.resolve();\r\n }\r\n });\r\n },\r\n unmount(parentSuspense, doRemove) {\r\n suspense.isUnmounted = true;\r\n if (suspense.activeBranch) {\r\n unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);\r\n }\r\n if (suspense.pendingBranch) {\r\n unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);\r\n }\r\n }\r\n };\r\n return suspense;\r\n}\r\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, optimized, rendererInternals, hydrateNode) {\r\n /* eslint-disable no-restricted-globals */\r\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, optimized, rendererInternals, true /* hydrating */));\r\n // there are two possible scenarios for server-rendered suspense:\r\n // - success: ssr content should be fully resolved\r\n // - failure: ssr content should be the fallback branch.\r\n // however, on the client we don't really know if it has failed or not\r\n // attempt to hydrate the DOM assuming it has succeeded, but we still\r\n // need to construct a suspense boundary first\r\n const result = hydrateNode(node, (suspense.pendingBranch = vnode.ssContent), parentComponent, suspense, optimized);\r\n if (suspense.deps === 0) {\r\n suspense.resolve();\r\n }\r\n return result;\r\n /* eslint-enable no-restricted-globals */\r\n}\r\nfunction normalizeSuspenseChildren(vnode) {\r\n const { shapeFlag, children } = vnode;\r\n let content;\r\n let fallback;\r\n if (shapeFlag & 32 /* SLOTS_CHILDREN */) {\r\n content = normalizeSuspenseSlot(children.default);\r\n fallback = normalizeSuspenseSlot(children.fallback);\r\n }\r\n else {\r\n content = normalizeSuspenseSlot(children);\r\n fallback = normalizeVNode(null);\r\n }\r\n return {\r\n content,\r\n fallback\r\n };\r\n}\r\nfunction normalizeSuspenseSlot(s) {\r\n if (isFunction(s)) {\r\n s = s();\r\n }\r\n if (isArray(s)) {\r\n const singleChild = filterSingleRoot(s);\r\n if ((process.env.NODE_ENV !== 'production') && !singleChild) {\r\n warn(`<Suspense> slots expect a single root node.`);\r\n }\r\n s = singleChild;\r\n }\r\n return normalizeVNode(s);\r\n}\r\nfunction queueEffectWithSuspense(fn, suspense) {\r\n if (suspense && suspense.pendingBranch) {\r\n if (isArray(fn)) {\r\n suspense.effects.push(...fn);\r\n }\r\n else {\r\n suspense.effects.push(fn);\r\n }\r\n }\r\n else {\r\n queuePostFlushCb(fn);\r\n }\r\n}\r\nfunction setActiveBranch(suspense, branch) {\r\n suspense.activeBranch = branch;\r\n const { vnode, parentComponent } = suspense;\r\n const el = (vnode.el = branch.el);\r\n // in case suspense is the root node of a component,\r\n // recursively update the HOC el\r\n if (parentComponent && parentComponent.subTree === vnode) {\r\n parentComponent.vnode.el = el;\r\n updateHOCHostEl(parentComponent, el);\r\n }\r\n}\n\nlet isRenderingCompiledSlot = 0;\r\nconst setCompiledSlotRendering = (n) => (isRenderingCompiledSlot += n);\r\n/**\r\n * Compiler runtime helper for rendering `<slot/>`\r\n * @private\r\n */\r\nfunction renderSlot(slots, name, props = {}, \r\n// this is not a user-facing function, so the fallback is always generated by\r\n// the compiler and guaranteed to be a function returning an array\r\nfallback) {\r\n let slot = slots[name];\r\n if ((process.env.NODE_ENV !== 'production') && slot && slot.length > 1) {\r\n warn(`SSR-optimized slot function detected in a non-SSR-optimized render ` +\r\n `function. You need to mark this component with $dynamic-slots in the ` +\r\n `parent template.`);\r\n slot = () => [];\r\n }\r\n // a compiled slot disables block tracking by default to avoid manual\r\n // invocation interfering with template-based block tracking, but in\r\n // `renderSlot` we can be sure that it's template-based so we can force\r\n // enable it.\r\n isRenderingCompiledSlot++;\r\n openBlock();\r\n const validSlotContent = slot && ensureValidVNode(slot(props));\r\n const rendered = createBlock(Fragment, { key: props.key || `_${name}` }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 /* STABLE */\r\n ? 64 /* STABLE_FRAGMENT */\r\n : -2 /* BAIL */);\r\n isRenderingCompiledSlot--;\r\n return rendered;\r\n}\r\nfunction ensureValidVNode(vnodes) {\r\n return vnodes.some(child => {\r\n if (!isVNode(child))\r\n return true;\r\n if (child.type === Comment)\r\n return false;\r\n if (child.type === Fragment &&\r\n !ensureValidVNode(child.children))\r\n return false;\r\n return true;\r\n })\r\n ? vnodes\r\n : null;\r\n}\n\n/**\r\n * Wrap a slot function to memoize current rendering instance\r\n * @private\r\n */\r\nfunction withCtx(fn, ctx = currentRenderingInstance) {\r\n if (!ctx)\r\n return fn;\r\n const renderFnWithContext = (...args) => {\r\n // If a user calls a compiled slot inside a template expression (#1745), it\r\n // can mess up block tracking, so by default we need to push a null block to\r\n // avoid that. This isn't necessary if rendering a compiled `<slot>`.\r\n if (!isRenderingCompiledSlot) {\r\n openBlock(true /* null block that disables tracking */);\r\n }\r\n const owner = currentRenderingInstance;\r\n setCurrentRenderingInstance(ctx);\r\n const res = fn(...args);\r\n setCurrentRenderingInstance(owner);\r\n if (!isRenderingCompiledSlot) {\r\n closeBlock();\r\n }\r\n return res;\r\n };\r\n renderFnWithContext._c = true;\r\n return renderFnWithContext;\r\n}\n\n// SFC scoped style ID management.\r\nlet currentScopeId = null;\r\nconst scopeIdStack = [];\r\n/**\r\n * @private\r\n */\r\nfunction pushScopeId(id) {\r\n scopeIdStack.push((currentScopeId = id));\r\n}\r\n/**\r\n * @private\r\n */\r\nfunction popScopeId() {\r\n scopeIdStack.pop();\r\n currentScopeId = scopeIdStack[scopeIdStack.length - 1] || null;\r\n}\r\n/**\r\n * @private\r\n */\r\nfunction withScopeId(id) {\r\n return ((fn) => withCtx(function () {\r\n pushScopeId(id);\r\n const res = fn.apply(this, arguments);\r\n popScopeId();\r\n return res;\r\n }));\r\n}\n\nfunction initProps(instance, rawProps, isStateful, // result of bitwise flag comparison\r\nisSSR = false) {\r\n const props = {};\r\n const attrs = {};\r\n def(attrs, InternalObjectKey, 1);\r\n setFullProps(instance, rawProps, props, attrs);\r\n // validation\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n validateProps(props, instance);\r\n }\r\n if (isStateful) {\r\n // stateful\r\n instance.props = isSSR ? props : shallowReactive(props);\r\n }\r\n else {\r\n if (!instance.type.props) {\r\n // functional w/ optional props, props === attrs\r\n instance.props = attrs;\r\n }\r\n else {\r\n // functional w/ declared props\r\n instance.props = props;\r\n }\r\n }\r\n instance.attrs = attrs;\r\n}\r\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\r\n const { props, attrs, vnode: { patchFlag } } = instance;\r\n const rawCurrentProps = toRaw(props);\r\n const [options] = instance.propsOptions;\r\n if (\r\n // always force full diff in dev\r\n // - #1942 if hmr is enabled with sfc component\r\n // - vite#872 non-sfc component used by sfc component\r\n !((process.env.NODE_ENV !== 'production') &&\r\n (instance.type.__hmrId ||\r\n (instance.parent && instance.parent.type.__hmrId))) &&\r\n (optimized || patchFlag > 0) &&\r\n !(patchFlag & 16 /* FULL_PROPS */)) {\r\n if (patchFlag & 8 /* PROPS */) {\r\n // Compiler-generated props & no keys change, just set the updated\r\n // the props.\r\n const propsToUpdate = instance.vnode.dynamicProps;\r\n for (let i = 0; i < propsToUpdate.length; i++) {\r\n const key = propsToUpdate[i];\r\n // PROPS flag guarantees rawProps to be non-null\r\n const value = rawProps[key];\r\n if (options) {\r\n // attr / props separation was done on init and will be consistent\r\n // in this code path, so just check if attrs have it.\r\n if (hasOwn(attrs, key)) {\r\n attrs[key] = value;\r\n }\r\n else {\r\n const camelizedKey = camelize(key);\r\n props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance);\r\n }\r\n }\r\n else {\r\n attrs[key] = value;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // full props update.\r\n setFullProps(instance, rawProps, props, attrs);\r\n // in case of dynamic props, check if we need to delete keys from\r\n // the props object\r\n let kebabKey;\r\n for (const key in rawCurrentProps) {\r\n if (!rawProps ||\r\n // for camelCase\r\n (!hasOwn(rawProps, key) &&\r\n // it's possible the original props was passed in as kebab-case\r\n // and converted to camelCase (#955)\r\n ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey)))) {\r\n if (options) {\r\n if (rawPrevProps &&\r\n // for camelCase\r\n (rawPrevProps[key] !== undefined ||\r\n // for kebab-case\r\n rawPrevProps[kebabKey] !== undefined)) {\r\n props[key] = resolvePropValue(options, rawProps || EMPTY_OBJ, key, undefined, instance);\r\n }\r\n }\r\n else {\r\n delete props[key];\r\n }\r\n }\r\n }\r\n // in the case of functional component w/o props declaration, props and\r\n // attrs point to the same object so it should already have been updated.\r\n if (attrs !== rawCurrentProps) {\r\n for (const key in attrs) {\r\n if (!rawProps || !hasOwn(rawProps, key)) {\r\n delete attrs[key];\r\n }\r\n }\r\n }\r\n }\r\n // trigger updates for $attrs in case it's used in component slots\r\n trigger(instance, \"set\" /* SET */, '$attrs');\r\n if ((process.env.NODE_ENV !== 'production') && rawProps) {\r\n validateProps(props, instance);\r\n }\r\n}\r\nfunction setFullProps(instance, rawProps, props, attrs) {\r\n const [options, needCastKeys] = instance.propsOptions;\r\n if (rawProps) {\r\n for (const key in rawProps) {\r\n const value = rawProps[key];\r\n // key, ref are reserved and never passed down\r\n if (isReservedProp(key)) {\r\n continue;\r\n }\r\n // prop option names are camelized during normalization, so to support\r\n // kebab -> camel conversion here we need to camelize the key.\r\n let camelKey;\r\n if (options && hasOwn(options, (camelKey = camelize(key)))) {\r\n props[camelKey] = value;\r\n }\r\n else if (!isEmitListener(instance.emitsOptions, key)) {\r\n // Any non-declared (either as a prop or an emitted event) props are put\r\n // into a separate `attrs` object for spreading. Make sure to preserve\r\n // original key casing\r\n attrs[key] = value;\r\n }\r\n }\r\n }\r\n if (needCastKeys) {\r\n const rawCurrentProps = toRaw(props);\r\n for (let i = 0; i < needCastKeys.length; i++) {\r\n const key = needCastKeys[i];\r\n props[key] = resolvePropValue(options, rawCurrentProps, key, rawCurrentProps[key], instance);\r\n }\r\n }\r\n}\r\nfunction resolvePropValue(options, props, key, value, instance) {\r\n const opt = options[key];\r\n if (opt != null) {\r\n const hasDefault = hasOwn(opt, 'default');\r\n // default values\r\n if (hasDefault && value === undefined) {\r\n const defaultValue = opt.default;\r\n if (opt.type !== Function && isFunction(defaultValue)) {\r\n setCurrentInstance(instance);\r\n value = defaultValue(props);\r\n setCurrentInstance(null);\r\n }\r\n else {\r\n value = defaultValue;\r\n }\r\n }\r\n // boolean casting\r\n if (opt[0 /* shouldCast */]) {\r\n if (!hasOwn(props, key) && !hasDefault) {\r\n value = false;\r\n }\r\n else if (opt[1 /* shouldCastTrue */] &&\r\n (value === '' || value === hyphenate(key))) {\r\n value = true;\r\n }\r\n }\r\n }\r\n return value;\r\n}\r\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\r\n if (!appContext.deopt && comp.__props) {\r\n return comp.__props;\r\n }\r\n const raw = comp.props;\r\n const normalized = {};\r\n const needCastKeys = [];\r\n // apply mixin/extends props\r\n let hasExtends = false;\r\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\r\n const extendProps = (raw) => {\r\n hasExtends = true;\r\n const [props, keys] = normalizePropsOptions(raw, appContext, true);\r\n extend(normalized, props);\r\n if (keys)\r\n needCastKeys.push(...keys);\r\n };\r\n if (!asMixin && appContext.mixins.length) {\r\n appContext.mixins.forEach(extendProps);\r\n }\r\n if (comp.extends) {\r\n extendProps(comp.extends);\r\n }\r\n if (comp.mixins) {\r\n comp.mixins.forEach(extendProps);\r\n }\r\n }\r\n if (!raw && !hasExtends) {\r\n return (comp.__props = EMPTY_ARR);\r\n }\r\n if (isArray(raw)) {\r\n for (let i = 0; i < raw.length; i++) {\r\n if ((process.env.NODE_ENV !== 'production') && !isString(raw[i])) {\r\n warn(`props must be strings when using array syntax.`, raw[i]);\r\n }\r\n const normalizedKey = camelize(raw[i]);\r\n if (validatePropName(normalizedKey)) {\r\n normalized[normalizedKey] = EMPTY_OBJ;\r\n }\r\n }\r\n }\r\n else if (raw) {\r\n if ((process.env.NODE_ENV !== 'production') && !isObject(raw)) {\r\n warn(`invalid props options`, raw);\r\n }\r\n for (const key in raw) {\r\n const normalizedKey = camelize(key);\r\n if (validatePropName(normalizedKey)) {\r\n const opt = raw[key];\r\n const prop = (normalized[normalizedKey] =\r\n isArray(opt) || isFunction(opt) ? { type: opt } : opt);\r\n if (prop) {\r\n const booleanIndex = getTypeIndex(Boolean, prop.type);\r\n const stringIndex = getTypeIndex(String, prop.type);\r\n prop[0 /* shouldCast */] = booleanIndex > -1;\r\n prop[1 /* shouldCastTrue */] =\r\n stringIndex < 0 || booleanIndex < stringIndex;\r\n // if the prop needs boolean casting or default value\r\n if (booleanIndex > -1 || hasOwn(prop, 'default')) {\r\n needCastKeys.push(normalizedKey);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return (comp.__props = [normalized, needCastKeys]);\r\n}\r\nfunction validatePropName(key) {\r\n if (key[0] !== '$') {\r\n return true;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Invalid prop name: \"${key}\" is a reserved property.`);\r\n }\r\n return false;\r\n}\r\n// use function string name to check type constructors\r\n// so that it works across vms / iframes.\r\nfunction getType(ctor) {\r\n const match = ctor && ctor.toString().match(/^\\s*function (\\w+)/);\r\n return match ? match[1] : '';\r\n}\r\nfunction isSameType(a, b) {\r\n return getType(a) === getType(b);\r\n}\r\nfunction getTypeIndex(type, expectedTypes) {\r\n if (isArray(expectedTypes)) {\r\n for (let i = 0, len = expectedTypes.length; i < len; i++) {\r\n if (isSameType(expectedTypes[i], type)) {\r\n return i;\r\n }\r\n }\r\n }\r\n else if (isFunction(expectedTypes)) {\r\n return isSameType(expectedTypes, type) ? 0 : -1;\r\n }\r\n return -1;\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction validateProps(props, instance) {\r\n const rawValues = toRaw(props);\r\n const options = instance.propsOptions[0];\r\n for (const key in options) {\r\n let opt = options[key];\r\n if (opt == null)\r\n continue;\r\n validateProp(key, rawValues[key], opt, !hasOwn(rawValues, key));\r\n }\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction validateProp(name, value, prop, isAbsent) {\r\n const { type, required, validator } = prop;\r\n // required!\r\n if (required && isAbsent) {\r\n warn('Missing required prop: \"' + name + '\"');\r\n return;\r\n }\r\n // missing but optional\r\n if (value == null && !prop.required) {\r\n return;\r\n }\r\n // type check\r\n if (type != null && type !== true) {\r\n let isValid = false;\r\n const types = isArray(type) ? type : [type];\r\n const expectedTypes = [];\r\n // value is valid as long as one of the specified types match\r\n for (let i = 0; i < types.length && !isValid; i++) {\r\n const { valid, expectedType } = assertType(value, types[i]);\r\n expectedTypes.push(expectedType || '');\r\n isValid = valid;\r\n }\r\n if (!isValid) {\r\n warn(getInvalidTypeMessage(name, value, expectedTypes));\r\n return;\r\n }\r\n }\r\n // custom validator\r\n if (validator && !validator(value)) {\r\n warn('Invalid prop: custom validator check failed for prop \"' + name + '\".');\r\n }\r\n}\r\nconst isSimpleType = /*#__PURE__*/ makeMap('String,Number,Boolean,Function,Symbol');\r\n/**\r\n * dev only\r\n */\r\nfunction assertType(value, type) {\r\n let valid;\r\n const expectedType = getType(type);\r\n if (isSimpleType(expectedType)) {\r\n const t = typeof value;\r\n valid = t === expectedType.toLowerCase();\r\n // for primitive wrapper objects\r\n if (!valid && t === 'object') {\r\n valid = value instanceof type;\r\n }\r\n }\r\n else if (expectedType === 'Object') {\r\n valid = isObject(value);\r\n }\r\n else if (expectedType === 'Array') {\r\n valid = isArray(value);\r\n }\r\n else {\r\n valid = value instanceof type;\r\n }\r\n return {\r\n valid,\r\n expectedType\r\n };\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\r\n let message = `Invalid prop: type check failed for prop \"${name}\".` +\r\n ` Expected ${expectedTypes.map(capitalize).join(', ')}`;\r\n const expectedType = expectedTypes[0];\r\n const receivedType = toRawType(value);\r\n const expectedValue = styleValue(value, expectedType);\r\n const receivedValue = styleValue(value, receivedType);\r\n // check if we need to specify expected value\r\n if (expectedTypes.length === 1 &&\r\n isExplicable(expectedType) &&\r\n !isBoolean(expectedType, receivedType)) {\r\n message += ` with value ${expectedValue}`;\r\n }\r\n message += `, got ${receivedType} `;\r\n // check if we need to specify received value\r\n if (isExplicable(receivedType)) {\r\n message += `with value ${receivedValue}.`;\r\n }\r\n return message;\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction styleValue(value, type) {\r\n if (type === 'String') {\r\n return `\"${value}\"`;\r\n }\r\n else if (type === 'Number') {\r\n return `${Number(value)}`;\r\n }\r\n else {\r\n return `${value}`;\r\n }\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction isExplicable(type) {\r\n const explicitTypes = ['string', 'number', 'boolean'];\r\n return explicitTypes.some(elem => type.toLowerCase() === elem);\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction isBoolean(...args) {\r\n return args.some(elem => elem.toLowerCase() === 'boolean');\r\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\r\n if (target) {\r\n const hooks = target[type] || (target[type] = []);\r\n // cache the error handling wrapper for injected hooks so the same hook\r\n // can be properly deduped by the scheduler. \"__weh\" stands for \"with error\r\n // handling\".\r\n const wrappedHook = hook.__weh ||\r\n (hook.__weh = (...args) => {\r\n if (target.isUnmounted) {\r\n return;\r\n }\r\n // disable tracking inside all lifecycle hooks\r\n // since they can potentially be called inside effects.\r\n pauseTracking();\r\n // Set currentInstance during hook invocation.\r\n // This assumes the hook does not synchronously trigger other hooks, which\r\n // can only be false when the user does something really funky.\r\n setCurrentInstance(target);\r\n const res = callWithAsyncErrorHandling(hook, target, type, args);\r\n setCurrentInstance(null);\r\n resetTracking();\r\n return res;\r\n });\r\n if (prepend) {\r\n hooks.unshift(wrappedHook);\r\n }\r\n else {\r\n hooks.push(wrappedHook);\r\n }\r\n return wrappedHook;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, ''));\r\n warn(`${apiName} is called when there is no active component instance to be ` +\r\n `associated with. ` +\r\n `Lifecycle injection APIs can only be used during execution of setup().` +\r\n ( ` If you are using async setup(), make sure to register lifecycle ` +\r\n `hooks before the first await statement.`\r\n ));\r\n }\r\n}\r\nconst createHook = (lifecycle) => (hook, target = currentInstance) => \r\n// post-create lifecycle registrations are noops during SSR\r\n!isInSSRComponentSetup && injectHook(lifecycle, hook, target);\r\nconst onBeforeMount = createHook(\"bm\" /* BEFORE_MOUNT */);\r\nconst onMounted = createHook(\"m\" /* MOUNTED */);\r\nconst onBeforeUpdate = createHook(\"bu\" /* BEFORE_UPDATE */);\r\nconst onUpdated = createHook(\"u\" /* UPDATED */);\r\nconst onBeforeUnmount = createHook(\"bum\" /* BEFORE_UNMOUNT */);\r\nconst onUnmounted = createHook(\"um\" /* UNMOUNTED */);\r\nconst onRenderTriggered = createHook(\"rtg\" /* RENDER_TRIGGERED */);\r\nconst onRenderTracked = createHook(\"rtc\" /* RENDER_TRACKED */);\r\nconst onErrorCaptured = (hook, target = currentInstance) => {\r\n injectHook(\"ec\" /* ERROR_CAPTURED */, hook, target);\r\n};\n\n// Simple effect.\r\nfunction watchEffect(effect, options) {\r\n return doWatch(effect, null, options);\r\n}\r\n// initial value for watchers to trigger on undefined initial values\r\nconst INITIAL_WATCHER_VALUE = {};\r\n// implementation\r\nfunction watch(source, cb, options) {\r\n if ((process.env.NODE_ENV !== 'production') && !isFunction(cb)) {\r\n warn(`\\`watch(fn, options?)\\` signature has been moved to a separate API. ` +\r\n `Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only ` +\r\n `supports \\`watch(source, cb, options?) signature.`);\r\n }\r\n return doWatch(source, cb, options);\r\n}\r\nfunction doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ, instance = currentInstance) {\r\n if ((process.env.NODE_ENV !== 'production') && !cb) {\r\n if (immediate !== undefined) {\r\n warn(`watch() \"immediate\" option is only respected when using the ` +\r\n `watch(source, callback, options?) signature.`);\r\n }\r\n if (deep !== undefined) {\r\n warn(`watch() \"deep\" option is only respected when using the ` +\r\n `watch(source, callback, options?) signature.`);\r\n }\r\n }\r\n const warnInvalidSource = (s) => {\r\n warn(`Invalid watch source: `, s, `A watch source can only be a getter/effect function, a ref, ` +\r\n `a reactive object, or an array of these types.`);\r\n };\r\n let getter;\r\n let forceTrigger = false;\r\n if (isRef(source)) {\r\n getter = () => source.value;\r\n forceTrigger = !!source._shallow;\r\n }\r\n else if (isReactive(source)) {\r\n getter = () => source;\r\n deep = true;\r\n }\r\n else if (isArray(source)) {\r\n getter = () => source.map(s => {\r\n if (isRef(s)) {\r\n return s.value;\r\n }\r\n else if (isReactive(s)) {\r\n return traverse(s);\r\n }\r\n else if (isFunction(s)) {\r\n return callWithErrorHandling(s, instance, 2 /* WATCH_GETTER */);\r\n }\r\n else {\r\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(s);\r\n }\r\n });\r\n }\r\n else if (isFunction(source)) {\r\n if (cb) {\r\n // getter with cb\r\n getter = () => callWithErrorHandling(source, instance, 2 /* WATCH_GETTER */);\r\n }\r\n else {\r\n // no cb -> simple effect\r\n getter = () => {\r\n if (instance && instance.isUnmounted) {\r\n return;\r\n }\r\n if (cleanup) {\r\n cleanup();\r\n }\r\n return callWithErrorHandling(source, instance, 3 /* WATCH_CALLBACK */, [onInvalidate]);\r\n };\r\n }\r\n }\r\n else {\r\n getter = NOOP;\r\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(source);\r\n }\r\n if (cb && deep) {\r\n const baseGetter = getter;\r\n getter = () => traverse(baseGetter());\r\n }\r\n let cleanup;\r\n const onInvalidate = (fn) => {\r\n cleanup = runner.options.onStop = () => {\r\n callWithErrorHandling(fn, instance, 4 /* WATCH_CLEANUP */);\r\n };\r\n };\r\n let oldValue = isArray(source) ? [] : INITIAL_WATCHER_VALUE;\r\n const job = () => {\r\n if (!runner.active) {\r\n return;\r\n }\r\n if (cb) {\r\n // watch(source, cb)\r\n const newValue = runner();\r\n if (deep || forceTrigger || hasChanged(newValue, oldValue)) {\r\n // cleanup before running cb again\r\n if (cleanup) {\r\n cleanup();\r\n }\r\n callWithAsyncErrorHandling(cb, instance, 3 /* WATCH_CALLBACK */, [\r\n newValue,\r\n // pass undefined as the old value when it's changed for the first time\r\n oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue,\r\n onInvalidate\r\n ]);\r\n oldValue = newValue;\r\n }\r\n }\r\n else {\r\n // watchEffect\r\n runner();\r\n }\r\n };\r\n // important: mark the job as a watcher callback so that scheduler knows\r\n // it is allowed to self-trigger (#1727)\r\n job.allowRecurse = !!cb;\r\n let scheduler;\r\n if (flush === 'sync') {\r\n scheduler = job;\r\n }\r\n else if (flush === 'post') {\r\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\r\n }\r\n else {\r\n // default: 'pre'\r\n scheduler = () => {\r\n if (!instance || instance.isMounted) {\r\n queuePreFlushCb(job);\r\n }\r\n else {\r\n // with 'pre' option, the first call must happen before\r\n // the component is mounted so it is called synchronously.\r\n job();\r\n }\r\n };\r\n }\r\n const runner = effect(getter, {\r\n lazy: true,\r\n onTrack,\r\n onTrigger,\r\n scheduler\r\n });\r\n recordInstanceBoundEffect(runner, instance);\r\n // initial run\r\n if (cb) {\r\n if (immediate) {\r\n job();\r\n }\r\n else {\r\n oldValue = runner();\r\n }\r\n }\r\n else if (flush === 'post') {\r\n queuePostRenderEffect(runner, instance && instance.suspense);\r\n }\r\n else {\r\n runner();\r\n }\r\n return () => {\r\n stop(runner);\r\n if (instance) {\r\n remove(instance.effects, runner);\r\n }\r\n };\r\n}\r\n// this.$watch\r\nfunction instanceWatch(source, cb, options) {\r\n const publicThis = this.proxy;\r\n const getter = isString(source)\r\n ? () => publicThis[source]\r\n : source.bind(publicThis);\r\n return doWatch(getter, cb.bind(publicThis), options, this);\r\n}\r\nfunction traverse(value, seen = new Set()) {\r\n if (!isObject(value) || seen.has(value)) {\r\n return value;\r\n }\r\n seen.add(value);\r\n if (isRef(value)) {\r\n traverse(value.value, seen);\r\n }\r\n else if (isArray(value)) {\r\n for (let i = 0; i < value.length; i++) {\r\n traverse(value[i], seen);\r\n }\r\n }\r\n else if (isSet(value) || isMap(value)) {\r\n value.forEach((v) => {\r\n traverse(v, seen);\r\n });\r\n }\r\n else {\r\n for (const key in value) {\r\n traverse(value[key], seen);\r\n }\r\n }\r\n return value;\r\n}\n\nfunction useTransitionState() {\r\n const state = {\r\n isMounted: false,\r\n isLeaving: false,\r\n isUnmounting: false,\r\n leavingVNodes: new Map()\r\n };\r\n onMounted(() => {\r\n state.isMounted = true;\r\n });\r\n onBeforeUnmount(() => {\r\n state.isUnmounting = true;\r\n });\r\n return state;\r\n}\r\nconst TransitionHookValidator = [Function, Array];\r\nconst BaseTransitionImpl = {\r\n name: `BaseTransition`,\r\n props: {\r\n mode: String,\r\n appear: Boolean,\r\n persisted: Boolean,\r\n // enter\r\n onBeforeEnter: TransitionHookValidator,\r\n onEnter: TransitionHookValidator,\r\n onAfterEnter: TransitionHookValidator,\r\n onEnterCancelled: TransitionHookValidator,\r\n // leave\r\n onBeforeLeave: TransitionHookValidator,\r\n onLeave: TransitionHookValidator,\r\n onAfterLeave: TransitionHookValidator,\r\n onLeaveCancelled: TransitionHookValidator,\r\n // appear\r\n onBeforeAppear: TransitionHookValidator,\r\n onAppear: TransitionHookValidator,\r\n onAfterAppear: TransitionHookValidator,\r\n onAppearCancelled: TransitionHookValidator\r\n },\r\n setup(props, { slots }) {\r\n const instance = getCurrentInstance();\r\n const state = useTransitionState();\r\n let prevTransitionKey;\r\n return () => {\r\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\r\n if (!children || !children.length) {\r\n return;\r\n }\r\n // warn multiple elements\r\n if ((process.env.NODE_ENV !== 'production') && children.length > 1) {\r\n warn('<transition> can only be used on a single element or component. Use ' +\r\n '<transition-group> for lists.');\r\n }\r\n // there's no need to track reactivity for these props so use the raw\r\n // props for a bit better perf\r\n const rawProps = toRaw(props);\r\n const { mode } = rawProps;\r\n // check mode\r\n if ((process.env.NODE_ENV !== 'production') && mode && !['in-out', 'out-in', 'default'].includes(mode)) {\r\n warn(`invalid <transition> mode: ${mode}`);\r\n }\r\n // at this point children has a guaranteed length of 1.\r\n const child = children[0];\r\n if (state.isLeaving) {\r\n return emptyPlaceholder(child);\r\n }\r\n // in the case of <transition><keep-alive/></transition>, we need to\r\n // compare the type of the kept-alive children.\r\n const innerChild = getKeepAliveChild(child);\r\n if (!innerChild) {\r\n return emptyPlaceholder(child);\r\n }\r\n const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);\r\n setTransitionHooks(innerChild, enterHooks);\r\n const oldChild = instance.subTree;\r\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\r\n let transitionKeyChanged = false;\r\n const { getTransitionKey } = innerChild.type;\r\n if (getTransitionKey) {\r\n const key = getTransitionKey();\r\n if (prevTransitionKey === undefined) {\r\n prevTransitionKey = key;\r\n }\r\n else if (key !== prevTransitionKey) {\r\n prevTransitionKey = key;\r\n transitionKeyChanged = true;\r\n }\r\n }\r\n // handle mode\r\n if (oldInnerChild &&\r\n oldInnerChild.type !== Comment &&\r\n (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\r\n const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);\r\n // update old tree's hooks in case of dynamic transition\r\n setTransitionHooks(oldInnerChild, leavingHooks);\r\n // switching between different views\r\n if (mode === 'out-in') {\r\n state.isLeaving = true;\r\n // return placeholder node and queue update when leave finishes\r\n leavingHooks.afterLeave = () => {\r\n state.isLeaving = false;\r\n instance.update();\r\n };\r\n return emptyPlaceholder(child);\r\n }\r\n else if (mode === 'in-out') {\r\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\r\n const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);\r\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\r\n // early removal callback\r\n el._leaveCb = () => {\r\n earlyRemove();\r\n el._leaveCb = undefined;\r\n delete enterHooks.delayedLeave;\r\n };\r\n enterHooks.delayedLeave = delayedLeave;\r\n };\r\n }\r\n }\r\n return child;\r\n };\r\n }\r\n};\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\nconst BaseTransition = BaseTransitionImpl;\r\nfunction getLeavingNodesForType(state, vnode) {\r\n const { leavingVNodes } = state;\r\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\r\n if (!leavingVNodesCache) {\r\n leavingVNodesCache = Object.create(null);\r\n leavingVNodes.set(vnode.type, leavingVNodesCache);\r\n }\r\n return leavingVNodesCache;\r\n}\r\n// The transition hooks are attached to the vnode as vnode.transition\r\n// and will be called at appropriate timing in the renderer.\r\nfunction resolveTransitionHooks(vnode, props, state, instance) {\r\n const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;\r\n const key = String(vnode.key);\r\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\r\n const callHook = (hook, args) => {\r\n hook &&\r\n callWithAsyncErrorHandling(hook, instance, 9 /* TRANSITION_HOOK */, args);\r\n };\r\n const hooks = {\r\n mode,\r\n persisted,\r\n beforeEnter(el) {\r\n let hook = onBeforeEnter;\r\n if (!state.isMounted) {\r\n if (appear) {\r\n hook = onBeforeAppear || onBeforeEnter;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n // for same element (v-show)\r\n if (el._leaveCb) {\r\n el._leaveCb(true /* cancelled */);\r\n }\r\n // for toggled element with same key (v-if)\r\n const leavingVNode = leavingVNodesCache[key];\r\n if (leavingVNode &&\r\n isSameVNodeType(vnode, leavingVNode) &&\r\n leavingVNode.el._leaveCb) {\r\n // force early removal (not cancelled)\r\n leavingVNode.el._leaveCb();\r\n }\r\n callHook(hook, [el]);\r\n },\r\n enter(el) {\r\n let hook = onEnter;\r\n let afterHook = onAfterEnter;\r\n let cancelHook = onEnterCancelled;\r\n if (!state.isMounted) {\r\n if (appear) {\r\n hook = onAppear || onEnter;\r\n afterHook = onAfterAppear || onAfterEnter;\r\n cancelHook = onAppearCancelled || onEnterCancelled;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n let called = false;\r\n const done = (el._enterCb = (cancelled) => {\r\n if (called)\r\n return;\r\n called = true;\r\n if (cancelled) {\r\n callHook(cancelHook, [el]);\r\n }\r\n else {\r\n callHook(afterHook, [el]);\r\n }\r\n if (hooks.delayedLeave) {\r\n hooks.delayedLeave();\r\n }\r\n el._enterCb = undefined;\r\n });\r\n if (hook) {\r\n hook(el, done);\r\n if (hook.length <= 1) {\r\n done();\r\n }\r\n }\r\n else {\r\n done();\r\n }\r\n },\r\n leave(el, remove) {\r\n const key = String(vnode.key);\r\n if (el._enterCb) {\r\n el._enterCb(true /* cancelled */);\r\n }\r\n if (state.isUnmounting) {\r\n return remove();\r\n }\r\n callHook(onBeforeLeave, [el]);\r\n let called = false;\r\n const done = (el._leaveCb = (cancelled) => {\r\n if (called)\r\n return;\r\n called = true;\r\n remove();\r\n if (cancelled) {\r\n callHook(onLeaveCancelled, [el]);\r\n }\r\n else {\r\n callHook(onAfterLeave, [el]);\r\n }\r\n el._leaveCb = undefined;\r\n if (leavingVNodesCache[key] === vnode) {\r\n delete leavingVNodesCache[key];\r\n }\r\n });\r\n leavingVNodesCache[key] = vnode;\r\n if (onLeave) {\r\n onLeave(el, done);\r\n if (onLeave.length <= 1) {\r\n done();\r\n }\r\n }\r\n else {\r\n done();\r\n }\r\n },\r\n clone(vnode) {\r\n return resolveTransitionHooks(vnode, props, state, instance);\r\n }\r\n };\r\n return hooks;\r\n}\r\n// the placeholder really only handles one special case: KeepAlive\r\n// in the case of a KeepAlive in a leave phase we need to return a KeepAlive\r\n// placeholder with empty content to avoid the KeepAlive instance from being\r\n// unmounted.\r\nfunction emptyPlaceholder(vnode) {\r\n if (isKeepAlive(vnode)) {\r\n vnode = cloneVNode(vnode);\r\n vnode.children = null;\r\n return vnode;\r\n }\r\n}\r\nfunction getKeepAliveChild(vnode) {\r\n return isKeepAlive(vnode)\r\n ? vnode.children\r\n ? vnode.children[0]\r\n : undefined\r\n : vnode;\r\n}\r\nfunction setTransitionHooks(vnode, hooks) {\r\n if (vnode.shapeFlag & 6 /* COMPONENT */ && vnode.component) {\r\n setTransitionHooks(vnode.component.subTree, hooks);\r\n }\r\n else if ( vnode.shapeFlag & 128 /* SUSPENSE */) {\r\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\r\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\r\n }\r\n else {\r\n vnode.transition = hooks;\r\n }\r\n}\r\nfunction getTransitionRawChildren(children, keepComment = false) {\r\n let ret = [];\r\n let keyedFragmentCount = 0;\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n // handle fragment children case, e.g. v-for\r\n if (child.type === Fragment) {\r\n if (child.patchFlag & 128 /* KEYED_FRAGMENT */)\r\n keyedFragmentCount++;\r\n ret = ret.concat(getTransitionRawChildren(child.children, keepComment));\r\n }\r\n // comment placeholders should be skipped, e.g. v-if\r\n else if (keepComment || child.type !== Comment) {\r\n ret.push(child);\r\n }\r\n }\r\n // #1126 if a transition children list contains multiple sub fragments, these\r\n // fragments will be merged into a flat children array. Since each v-for\r\n // fragment may contain different static bindings inside, we need to de-op\r\n // these children to force full diffs to ensure correct behavior.\r\n if (keyedFragmentCount > 1) {\r\n for (let i = 0; i < ret.length; i++) {\r\n ret[i].patchFlag = -2 /* BAIL */;\r\n }\r\n }\r\n return ret;\r\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\r\nconst KeepAliveImpl = {\r\n name: `KeepAlive`,\r\n // Marker for special handling inside the renderer. We are not using a ===\r\n // check directly on KeepAlive in the renderer, because importing it directly\r\n // would prevent it from being tree-shaken.\r\n __isKeepAlive: true,\r\n inheritRef: true,\r\n props: {\r\n include: [String, RegExp, Array],\r\n exclude: [String, RegExp, Array],\r\n max: [String, Number]\r\n },\r\n setup(props, { slots }) {\r\n const cache = new Map();\r\n const keys = new Set();\r\n let current = null;\r\n const instance = getCurrentInstance();\r\n const parentSuspense = instance.suspense;\r\n // KeepAlive communicates with the instantiated renderer via the\r\n // ctx where the renderer passes in its internals,\r\n // and the KeepAlive instance exposes activate/deactivate implementations.\r\n // The whole point of this is to avoid importing KeepAlive directly in the\r\n // renderer to facilitate tree-shaking.\r\n const sharedContext = instance.ctx;\r\n const { renderer: { p: patch, m: move, um: _unmount, o: { createElement } } } = sharedContext;\r\n const storageContainer = createElement('div');\r\n sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {\r\n const instance = vnode.component;\r\n move(vnode, container, anchor, 0 /* ENTER */, parentSuspense);\r\n // in case props have changed\r\n patch(instance.vnode, vnode, container, anchor, instance, parentSuspense, isSVG, optimized);\r\n queuePostRenderEffect(() => {\r\n instance.isDeactivated = false;\r\n if (instance.a) {\r\n invokeArrayFns(instance.a);\r\n }\r\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\r\n if (vnodeHook) {\r\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\r\n }\r\n }, parentSuspense);\r\n };\r\n sharedContext.deactivate = (vnode) => {\r\n const instance = vnode.component;\r\n move(vnode, storageContainer, null, 1 /* LEAVE */, parentSuspense);\r\n queuePostRenderEffect(() => {\r\n if (instance.da) {\r\n invokeArrayFns(instance.da);\r\n }\r\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\r\n if (vnodeHook) {\r\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\r\n }\r\n instance.isDeactivated = true;\r\n }, parentSuspense);\r\n };\r\n function unmount(vnode) {\r\n // reset the shapeFlag so it can be properly unmounted\r\n resetShapeFlag(vnode);\r\n _unmount(vnode, instance, parentSuspense);\r\n }\r\n function pruneCache(filter) {\r\n cache.forEach((vnode, key) => {\r\n const name = getComponentName(vnode.type);\r\n if (name && (!filter || !filter(name))) {\r\n pruneCacheEntry(key);\r\n }\r\n });\r\n }\r\n function pruneCacheEntry(key) {\r\n const cached = cache.get(key);\r\n if (!current || cached.type !== current.type) {\r\n unmount(cached);\r\n }\r\n else if (current) {\r\n // current active instance should no longer be kept-alive.\r\n // we can't unmount it now but it might be later, so reset its flag now.\r\n resetShapeFlag(current);\r\n }\r\n cache.delete(key);\r\n keys.delete(key);\r\n }\r\n // prune cache on include/exclude prop change\r\n watch(() => [props.include, props.exclude], ([include, exclude]) => {\r\n include && pruneCache(name => matches(include, name));\r\n exclude && pruneCache(name => !matches(exclude, name));\r\n }, \r\n // prune post-render after `current` has been updated\r\n { flush: 'post', deep: true });\r\n // cache sub tree after render\r\n let pendingCacheKey = null;\r\n const cacheSubtree = () => {\r\n // fix #1621, the pendingCacheKey could be 0\r\n if (pendingCacheKey != null) {\r\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\r\n }\r\n };\r\n onMounted(cacheSubtree);\r\n onUpdated(cacheSubtree);\r\n onBeforeUnmount(() => {\r\n cache.forEach(cached => {\r\n const { subTree, suspense } = instance;\r\n const vnode = getInnerChild(subTree);\r\n if (cached.type === vnode.type) {\r\n // current instance will be unmounted as part of keep-alive's unmount\r\n resetShapeFlag(vnode);\r\n // but invoke its deactivated hook here\r\n const da = vnode.component.da;\r\n da && queuePostRenderEffect(da, suspense);\r\n return;\r\n }\r\n unmount(cached);\r\n });\r\n });\r\n return () => {\r\n pendingCacheKey = null;\r\n if (!slots.default) {\r\n return null;\r\n }\r\n const children = slots.default();\r\n const rawVNode = children[0];\r\n if (children.length > 1) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`KeepAlive should contain exactly one component child.`);\r\n }\r\n current = null;\r\n return children;\r\n }\r\n else if (!isVNode(rawVNode) ||\r\n (!(rawVNode.shapeFlag & 4 /* STATEFUL_COMPONENT */) &&\r\n !(rawVNode.shapeFlag & 128 /* SUSPENSE */))) {\r\n current = null;\r\n return rawVNode;\r\n }\r\n let vnode = getInnerChild(rawVNode);\r\n const comp = vnode.type;\r\n const name = getComponentName(comp);\r\n const { include, exclude, max } = props;\r\n if ((include && (!name || !matches(include, name))) ||\r\n (exclude && name && matches(exclude, name))) {\r\n current = vnode;\r\n return rawVNode;\r\n }\r\n const key = vnode.key == null ? comp : vnode.key;\r\n const cachedVNode = cache.get(key);\r\n // clone vnode if it's reused because we are going to mutate it\r\n if (vnode.el) {\r\n vnode = cloneVNode(vnode);\r\n if (rawVNode.shapeFlag & 128 /* SUSPENSE */) {\r\n rawVNode.ssContent = vnode;\r\n }\r\n }\r\n // #1513 it's possible for the returned vnode to be cloned due to attr\r\n // fallthrough or scopeId, so the vnode here may not be the final vnode\r\n // that is mounted. Instead of caching it directly, we store the pending\r\n // key and cache `instance.subTree` (the normalized vnode) in\r\n // beforeMount/beforeUpdate hooks.\r\n pendingCacheKey = key;\r\n if (cachedVNode) {\r\n // copy over mounted state\r\n vnode.el = cachedVNode.el;\r\n vnode.component = cachedVNode.component;\r\n if (vnode.transition) {\r\n // recursively update transition hooks on subTree\r\n setTransitionHooks(vnode, vnode.transition);\r\n }\r\n // avoid vnode being mounted as fresh\r\n vnode.shapeFlag |= 512 /* COMPONENT_KEPT_ALIVE */;\r\n // make this key the freshest\r\n keys.delete(key);\r\n keys.add(key);\r\n }\r\n else {\r\n keys.add(key);\r\n // prune oldest entry\r\n if (max && keys.size > parseInt(max, 10)) {\r\n pruneCacheEntry(keys.values().next().value);\r\n }\r\n }\r\n // avoid vnode being unmounted\r\n vnode.shapeFlag |= 256 /* COMPONENT_SHOULD_KEEP_ALIVE */;\r\n current = vnode;\r\n return rawVNode;\r\n };\r\n }\r\n};\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\nconst KeepAlive = KeepAliveImpl;\r\nfunction matches(pattern, name) {\r\n if (isArray(pattern)) {\r\n return pattern.some((p) => matches(p, name));\r\n }\r\n else if (isString(pattern)) {\r\n return pattern.split(',').indexOf(name) > -1;\r\n }\r\n else if (pattern.test) {\r\n return pattern.test(name);\r\n }\r\n /* istanbul ignore next */\r\n return false;\r\n}\r\nfunction onActivated(hook, target) {\r\n registerKeepAliveHook(hook, \"a\" /* ACTIVATED */, target);\r\n}\r\nfunction onDeactivated(hook, target) {\r\n registerKeepAliveHook(hook, \"da\" /* DEACTIVATED */, target);\r\n}\r\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\r\n // cache the deactivate branch check wrapper for injected hooks so the same\r\n // hook can be properly deduped by the scheduler. \"__wdc\" stands for \"with\r\n // deactivation check\".\r\n const wrappedHook = hook.__wdc ||\r\n (hook.__wdc = () => {\r\n // only fire the hook if the target instance is NOT in a deactivated branch.\r\n let current = target;\r\n while (current) {\r\n if (current.isDeactivated) {\r\n return;\r\n }\r\n current = current.parent;\r\n }\r\n hook();\r\n });\r\n injectHook(type, wrappedHook, target);\r\n // In addition to registering it on the target instance, we walk up the parent\r\n // chain and register it on all ancestor instances that are keep-alive roots.\r\n // This avoids the need to walk the entire component tree when invoking these\r\n // hooks, and more importantly, avoids the need to track child components in\r\n // arrays.\r\n if (target) {\r\n let current = target.parent;\r\n while (current && current.parent) {\r\n if (isKeepAlive(current.parent.vnode)) {\r\n injectToKeepAliveRoot(wrappedHook, type, target, current);\r\n }\r\n current = current.parent;\r\n }\r\n }\r\n}\r\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\r\n // injectHook wraps the original for error handling, so make sure to remove\r\n // the wrapped version.\r\n const injected = injectHook(type, hook, keepAliveRoot, true /* prepend */);\r\n onUnmounted(() => {\r\n remove(keepAliveRoot[type], injected);\r\n }, target);\r\n}\r\nfunction resetShapeFlag(vnode) {\r\n let shapeFlag = vnode.shapeFlag;\r\n if (shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */) {\r\n shapeFlag -= 256 /* COMPONENT_SHOULD_KEEP_ALIVE */;\r\n }\r\n if (shapeFlag & 512 /* COMPONENT_KEPT_ALIVE */) {\r\n shapeFlag -= 512 /* COMPONENT_KEPT_ALIVE */;\r\n }\r\n vnode.shapeFlag = shapeFlag;\r\n}\r\nfunction getInnerChild(vnode) {\r\n return vnode.shapeFlag & 128 /* SUSPENSE */ ? vnode.ssContent : vnode;\r\n}\n\nconst isInternalKey = (key) => key[0] === '_' || key === '$stable';\r\nconst normalizeSlotValue = (value) => isArray(value)\r\n ? value.map(normalizeVNode)\r\n : [normalizeVNode(value)];\r\nconst normalizeSlot = (key, rawSlot, ctx) => withCtx((props) => {\r\n if ((process.env.NODE_ENV !== 'production') && currentInstance) {\r\n warn(`Slot \"${key}\" invoked outside of the render function: ` +\r\n `this will not track dependencies used in the slot. ` +\r\n `Invoke the slot function inside the render function instead.`);\r\n }\r\n return normalizeSlotValue(rawSlot(props));\r\n}, ctx);\r\nconst normalizeObjectSlots = (rawSlots, slots) => {\r\n const ctx = rawSlots._ctx;\r\n for (const key in rawSlots) {\r\n if (isInternalKey(key))\r\n continue;\r\n const value = rawSlots[key];\r\n if (isFunction(value)) {\r\n slots[key] = normalizeSlot(key, value, ctx);\r\n }\r\n else if (value != null) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Non-function value encountered for slot \"${key}\". ` +\r\n `Prefer function slots for better performance.`);\r\n }\r\n const normalized = normalizeSlotValue(value);\r\n slots[key] = () => normalized;\r\n }\r\n }\r\n};\r\nconst normalizeVNodeSlots = (instance, children) => {\r\n if ((process.env.NODE_ENV !== 'production') && !isKeepAlive(instance.vnode)) {\r\n warn(`Non-function value encountered for default slot. ` +\r\n `Prefer function slots for better performance.`);\r\n }\r\n const normalized = normalizeSlotValue(children);\r\n instance.slots.default = () => normalized;\r\n};\r\nconst initSlots = (instance, children) => {\r\n if (instance.vnode.shapeFlag & 32 /* SLOTS_CHILDREN */) {\r\n const type = children._;\r\n if (type) {\r\n instance.slots = children;\r\n // make compiler marker non-enumerable\r\n def(children, '_', type);\r\n }\r\n else {\r\n normalizeObjectSlots(children, (instance.slots = {}));\r\n }\r\n }\r\n else {\r\n instance.slots = {};\r\n if (children) {\r\n normalizeVNodeSlots(instance, children);\r\n }\r\n }\r\n def(instance.slots, InternalObjectKey, 1);\r\n};\r\nconst updateSlots = (instance, children) => {\r\n const { vnode, slots } = instance;\r\n let needDeletionCheck = true;\r\n let deletionComparisonTarget = EMPTY_OBJ;\r\n if (vnode.shapeFlag & 32 /* SLOTS_CHILDREN */) {\r\n const type = children._;\r\n if (type) {\r\n // compiled slots.\r\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\r\n // Parent was HMR updated so slot content may have changed.\r\n // force update slots and mark instance for hmr as well\r\n extend(slots, children);\r\n }\r\n else if (type === 1 /* STABLE */) {\r\n // compiled AND stable.\r\n // no need to update, and skip stale slots removal.\r\n needDeletionCheck = false;\r\n }\r\n else {\r\n // compiled but dynamic (v-if/v-for on slots) - update slots, but skip\r\n // normalization.\r\n extend(slots, children);\r\n }\r\n }\r\n else {\r\n needDeletionCheck = !children.$stable;\r\n normalizeObjectSlots(children, slots);\r\n }\r\n deletionComparisonTarget = children;\r\n }\r\n else if (children) {\r\n // non slot object children (direct value) passed to a component\r\n normalizeVNodeSlots(instance, children);\r\n deletionComparisonTarget = { default: 1 };\r\n }\r\n // delete stale slots\r\n if (needDeletionCheck) {\r\n for (const key in slots) {\r\n if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {\r\n delete slots[key];\r\n }\r\n }\r\n }\r\n};\n\n/**\r\nRuntime helper for applying directives to a vnode. Example usage:\r\n\nconst comp = resolveComponent('comp')\r\nconst foo = resolveDirective('foo')\r\nconst bar = resolveDirective('bar')\r\n\nreturn withDirectives(h(comp), [\r\n [foo, this.x],\r\n [bar, this.y]\r\n])\r\n*/\r\nconst isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text');\r\nfunction validateDirectiveName(name) {\r\n if (isBuiltInDirective(name)) {\r\n warn('Do not use built-in directive ids as custom directive id: ' + name);\r\n }\r\n}\r\n/**\r\n * Adds directives to a VNode.\r\n */\r\nfunction withDirectives(vnode, directives) {\r\n const internalInstance = currentRenderingInstance;\r\n if (internalInstance === null) {\r\n (process.env.NODE_ENV !== 'production') && warn(`withDirectives can only be used inside render functions.`);\r\n return vnode;\r\n }\r\n const instance = internalInstance.proxy;\r\n const bindings = vnode.dirs || (vnode.dirs = []);\r\n for (let i = 0; i < directives.length; i++) {\r\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\r\n if (isFunction(dir)) {\r\n dir = {\r\n mounted: dir,\r\n updated: dir\r\n };\r\n }\r\n bindings.push({\r\n dir,\r\n instance,\r\n value,\r\n oldValue: void 0,\r\n arg,\r\n modifiers\r\n });\r\n }\r\n return vnode;\r\n}\r\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\r\n const bindings = vnode.dirs;\r\n const oldBindings = prevVNode && prevVNode.dirs;\r\n for (let i = 0; i < bindings.length; i++) {\r\n const binding = bindings[i];\r\n if (oldBindings) {\r\n binding.oldValue = oldBindings[i].value;\r\n }\r\n const hook = binding.dir[name];\r\n if (hook) {\r\n callWithAsyncErrorHandling(hook, instance, 8 /* DIRECTIVE_HOOK */, [\r\n vnode.el,\r\n binding,\r\n vnode,\r\n prevVNode\r\n ]);\r\n }\r\n }\r\n}\n\nfunction createAppContext() {\r\n return {\r\n app: null,\r\n config: {\r\n isNativeTag: NO,\r\n performance: false,\r\n globalProperties: {},\r\n optionMergeStrategies: {},\r\n isCustomElement: NO,\r\n errorHandler: undefined,\r\n warnHandler: undefined\r\n },\r\n mixins: [],\r\n components: {},\r\n directives: {},\r\n provides: Object.create(null)\r\n };\r\n}\r\nlet uid = 0;\r\nfunction createAppAPI(render, hydrate) {\r\n return function createApp(rootComponent, rootProps = null) {\r\n if (rootProps != null && !isObject(rootProps)) {\r\n (process.env.NODE_ENV !== 'production') && warn(`root props passed to app.mount() must be an object.`);\r\n rootProps = null;\r\n }\r\n const context = createAppContext();\r\n const installedPlugins = new Set();\r\n let isMounted = false;\r\n const app = (context.app = {\r\n _uid: uid++,\r\n _component: rootComponent,\r\n _props: rootProps,\r\n _container: null,\r\n _context: context,\r\n version,\r\n get config() {\r\n return context.config;\r\n },\r\n set config(v) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`app.config cannot be replaced. Modify individual options instead.`);\r\n }\r\n },\r\n use(plugin, ...options) {\r\n if (installedPlugins.has(plugin)) {\r\n (process.env.NODE_ENV !== 'production') && warn(`Plugin has already been applied to target app.`);\r\n }\r\n else if (plugin && isFunction(plugin.install)) {\r\n installedPlugins.add(plugin);\r\n plugin.install(app, ...options);\r\n }\r\n else if (isFunction(plugin)) {\r\n installedPlugins.add(plugin);\r\n plugin(app, ...options);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`A plugin must either be a function or an object with an \"install\" ` +\r\n `function.`);\r\n }\r\n return app;\r\n },\r\n mixin(mixin) {\r\n if (__VUE_OPTIONS_API__) {\r\n if (!context.mixins.includes(mixin)) {\r\n context.mixins.push(mixin);\r\n // global mixin with props/emits de-optimizes props/emits\r\n // normalization caching.\r\n if (mixin.props || mixin.emits) {\r\n context.deopt = true;\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Mixin has already been applied to target app' +\r\n (mixin.name ? `: ${mixin.name}` : ''));\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Mixins are only available in builds supporting Options API');\r\n }\r\n return app;\r\n },\r\n component(name, component) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n validateComponentName(name, context.config);\r\n }\r\n if (!component) {\r\n return context.components[name];\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && context.components[name]) {\r\n warn(`Component \"${name}\" has already been registered in target app.`);\r\n }\r\n context.components[name] = component;\r\n return app;\r\n },\r\n directive(name, directive) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n validateDirectiveName(name);\r\n }\r\n if (!directive) {\r\n return context.directives[name];\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && context.directives[name]) {\r\n warn(`Directive \"${name}\" has already been registered in target app.`);\r\n }\r\n context.directives[name] = directive;\r\n return app;\r\n },\r\n mount(rootContainer, isHydrate) {\r\n if (!isMounted) {\r\n const vnode = createVNode(rootComponent, rootProps);\r\n // store app context on the root VNode.\r\n // this will be set on the root instance on initial mount.\r\n vnode.appContext = context;\r\n // HMR root reload\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n context.reload = () => {\r\n render(cloneVNode(vnode), rootContainer);\r\n };\r\n }\r\n if (isHydrate && hydrate) {\r\n hydrate(vnode, rootContainer);\r\n }\r\n else {\r\n render(vnode, rootContainer);\r\n }\r\n isMounted = true;\r\n app._container = rootContainer;\r\n rootContainer.__vue_app__ = app;\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n devtoolsInitApp(app, version);\r\n }\r\n return vnode.component.proxy;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`App has already been mounted.\\n` +\r\n `If you want to remount the same app, move your app creation logic ` +\r\n `into a factory function and create fresh app instances for each ` +\r\n `mount - e.g. \\`const createMyApp = () => createApp(App)\\``);\r\n }\r\n },\r\n unmount() {\r\n if (isMounted) {\r\n render(null, app._container);\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n devtoolsUnmountApp(app);\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Cannot unmount an app that is not mounted.`);\r\n }\r\n },\r\n provide(key, value) {\r\n if ((process.env.NODE_ENV !== 'production') && key in context.provides) {\r\n warn(`App already provides property with key \"${String(key)}\". ` +\r\n `It will be overwritten with the new value.`);\r\n }\r\n // TypeScript doesn't allow symbols as index type\r\n // https://github.com/Microsoft/TypeScript/issues/24587\r\n context.provides[key] = value;\r\n return app;\r\n }\r\n });\r\n return app;\r\n };\r\n}\n\nlet hasMismatch = false;\r\nconst isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject';\r\nconst isComment = (node) => node.nodeType === 8 /* COMMENT */;\r\n// Note: hydration is DOM-specific\r\n// But we have to place it in core due to tight coupling with core - splitting\r\n// it out creates a ton of unnecessary complexity.\r\n// Hydration also depends on some renderer internal logic which needs to be\r\n// passed in via arguments.\r\nfunction createHydrationFunctions(rendererInternals) {\r\n const { mt: mountComponent, p: patch, o: { patchProp, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;\r\n const hydrate = (vnode, container) => {\r\n if ((process.env.NODE_ENV !== 'production') && !container.hasChildNodes()) {\r\n warn(`Attempting to hydrate existing markup but container is empty. ` +\r\n `Performing full mount instead.`);\r\n patch(null, vnode, container);\r\n return;\r\n }\r\n hasMismatch = false;\r\n hydrateNode(container.firstChild, vnode, null, null);\r\n flushPostFlushCbs();\r\n if (hasMismatch && !false) {\r\n // this error should show up in production\r\n console.error(`Hydration completed but contains mismatches.`);\r\n }\r\n };\r\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, optimized = false) => {\r\n const isFragmentStart = isComment(node) && node.data === '[';\r\n const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, isFragmentStart);\r\n const { type, ref, shapeFlag } = vnode;\r\n const domType = node.nodeType;\r\n vnode.el = node;\r\n let nextNode = null;\r\n switch (type) {\r\n case Text:\r\n if (domType !== 3 /* TEXT */) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n if (node.data !== vnode.children) {\r\n hasMismatch = true;\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Hydration text mismatch:` +\r\n `\\n- Client: ${JSON.stringify(node.data)}` +\r\n `\\n- Server: ${JSON.stringify(vnode.children)}`);\r\n node.data = vnode.children;\r\n }\r\n nextNode = nextSibling(node);\r\n }\r\n break;\r\n case Comment:\r\n if (domType !== 8 /* COMMENT */ || isFragmentStart) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n nextNode = nextSibling(node);\r\n }\r\n break;\r\n case Static:\r\n if (domType !== 1 /* ELEMENT */) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n // determine anchor, adopt content\r\n nextNode = node;\r\n // if the static vnode has its content stripped during build,\r\n // adopt it from the server-rendered HTML.\r\n const needToAdoptContent = !vnode.children.length;\r\n for (let i = 0; i < vnode.staticCount; i++) {\r\n if (needToAdoptContent)\r\n vnode.children += nextNode.outerHTML;\r\n if (i === vnode.staticCount - 1) {\r\n vnode.anchor = nextNode;\r\n }\r\n nextNode = nextSibling(nextNode);\r\n }\r\n return nextNode;\r\n }\r\n break;\r\n case Fragment:\r\n if (!isFragmentStart) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, optimized);\r\n }\r\n break;\r\n default:\r\n if (shapeFlag & 1 /* ELEMENT */) {\r\n if (domType !== 1 /* ELEMENT */ ||\r\n vnode.type !== node.tagName.toLowerCase()) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, optimized);\r\n }\r\n }\r\n else if (shapeFlag & 6 /* COMPONENT */) {\r\n // when setting up the render effect, if the initial vnode already\r\n // has .el set, the component will perform hydration instead of mount\r\n // on its sub-tree.\r\n const container = parentNode(node);\r\n const hydrateComponent = () => {\r\n mountComponent(vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), optimized);\r\n };\r\n // async component\r\n const loadAsync = vnode.type.__asyncLoader;\r\n if (loadAsync) {\r\n loadAsync().then(hydrateComponent);\r\n }\r\n else {\r\n hydrateComponent();\r\n }\r\n // component may be async, so in the case of fragments we cannot rely\r\n // on component's rendered output to determine the end of the fragment\r\n // instead, we do a lookahead to find the end anchor node.\r\n nextNode = isFragmentStart\r\n ? locateClosingAsyncAnchor(node)\r\n : nextSibling(node);\r\n }\r\n else if (shapeFlag & 64 /* TELEPORT */) {\r\n if (domType !== 8 /* COMMENT */) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, optimized, rendererInternals, hydrateChildren);\r\n }\r\n }\r\n else if ( shapeFlag & 128 /* SUSPENSE */) {\r\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(parentNode(node)), optimized, rendererInternals, hydrateNode);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Invalid HostVNode type:', type, `(${typeof type})`);\r\n }\r\n }\r\n if (ref != null) {\r\n setRef(ref, null, parentSuspense, vnode);\r\n }\r\n return nextNode;\r\n };\r\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, optimized) => {\r\n optimized = optimized || !!vnode.dynamicChildren;\r\n const { props, patchFlag, shapeFlag, dirs } = vnode;\r\n // skip props & children if this is hoisted static nodes\r\n if (patchFlag !== -1 /* HOISTED */) {\r\n if (dirs) {\r\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\r\n }\r\n // props\r\n if (props) {\r\n if (!optimized ||\r\n (patchFlag & 16 /* FULL_PROPS */ ||\r\n patchFlag & 32 /* HYDRATE_EVENTS */)) {\r\n for (const key in props) {\r\n if (!isReservedProp(key) && isOn(key)) {\r\n patchProp(el, key, null, props[key]);\r\n }\r\n }\r\n }\r\n else if (props.onClick) {\r\n // Fast path for click listeners (which is most often) to avoid\r\n // iterating through props.\r\n patchProp(el, 'onClick', null, props.onClick);\r\n }\r\n }\r\n // vnode / directive hooks\r\n let vnodeHooks;\r\n if ((vnodeHooks = props && props.onVnodeBeforeMount)) {\r\n invokeVNodeHook(vnodeHooks, parentComponent, vnode);\r\n }\r\n if (dirs) {\r\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\r\n }\r\n if ((vnodeHooks = props && props.onVnodeMounted) || dirs) {\r\n queueEffectWithSuspense(() => {\r\n vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\r\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\r\n }, parentSuspense);\r\n }\r\n // children\r\n if (shapeFlag & 16 /* ARRAY_CHILDREN */ &&\r\n // skip if element has innerHTML / textContent\r\n !(props && (props.innerHTML || props.textContent))) {\r\n let next = hydrateChildren(el.firstChild, vnode, el, parentComponent, parentSuspense, optimized);\r\n let hasWarned = false;\r\n while (next) {\r\n hasMismatch = true;\r\n if ((process.env.NODE_ENV !== 'production') && !hasWarned) {\r\n warn(`Hydration children mismatch in <${vnode.type}>: ` +\r\n `server rendered element contains more child nodes than client vdom.`);\r\n hasWarned = true;\r\n }\r\n // The SSRed DOM contains more nodes than it should. Remove them.\r\n const cur = next;\r\n next = next.nextSibling;\r\n remove(cur);\r\n }\r\n }\r\n else if (shapeFlag & 8 /* TEXT_CHILDREN */) {\r\n if (el.textContent !== vnode.children) {\r\n hasMismatch = true;\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Hydration text content mismatch in <${vnode.type}>:\\n` +\r\n `- Client: ${el.textContent}\\n` +\r\n `- Server: ${vnode.children}`);\r\n el.textContent = vnode.children;\r\n }\r\n }\r\n }\r\n return el.nextSibling;\r\n };\r\n const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, optimized) => {\r\n optimized = optimized || !!parentVNode.dynamicChildren;\r\n const children = parentVNode.children;\r\n const l = children.length;\r\n let hasWarned = false;\r\n for (let i = 0; i < l; i++) {\r\n const vnode = optimized\r\n ? children[i]\r\n : (children[i] = normalizeVNode(children[i]));\r\n if (node) {\r\n node = hydrateNode(node, vnode, parentComponent, parentSuspense, optimized);\r\n }\r\n else {\r\n hasMismatch = true;\r\n if ((process.env.NODE_ENV !== 'production') && !hasWarned) {\r\n warn(`Hydration children mismatch in <${container.tagName.toLowerCase()}>: ` +\r\n `server rendered element contains fewer child nodes than client vdom.`);\r\n hasWarned = true;\r\n }\r\n // the SSRed DOM didn't contain enough nodes. Mount the missing ones.\r\n patch(null, vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container));\r\n }\r\n }\r\n return node;\r\n };\r\n const hydrateFragment = (node, vnode, parentComponent, parentSuspense, optimized) => {\r\n const container = parentNode(node);\r\n const next = hydrateChildren(nextSibling(node), vnode, container, parentComponent, parentSuspense, optimized);\r\n if (next && isComment(next) && next.data === ']') {\r\n return nextSibling((vnode.anchor = next));\r\n }\r\n else {\r\n // fragment didn't hydrate successfully, since we didn't get a end anchor\r\n // back. This should have led to node/children mismatch warnings.\r\n hasMismatch = true;\r\n // since the anchor is missing, we need to create one and insert it\r\n insert((vnode.anchor = createComment(`]`)), container, next);\r\n return next;\r\n }\r\n };\r\n const handleMismatch = (node, vnode, parentComponent, parentSuspense, isFragment) => {\r\n hasMismatch = true;\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Hydration node mismatch:\\n- Client vnode:`, vnode.type, `\\n- Server rendered DOM:`, node, node.nodeType === 3 /* TEXT */\r\n ? `(text)`\r\n : isComment(node) && node.data === '['\r\n ? `(start of fragment)`\r\n : ``);\r\n vnode.el = null;\r\n if (isFragment) {\r\n // remove excessive fragment nodes\r\n const end = locateClosingAsyncAnchor(node);\r\n while (true) {\r\n const next = nextSibling(node);\r\n if (next && next !== end) {\r\n remove(next);\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n const next = nextSibling(node);\r\n const container = parentNode(node);\r\n remove(node);\r\n patch(null, vnode, container, next, parentComponent, parentSuspense, isSVGContainer(container));\r\n return next;\r\n };\r\n const locateClosingAsyncAnchor = (node) => {\r\n let match = 0;\r\n while (node) {\r\n node = nextSibling(node);\r\n if (node && isComment(node)) {\r\n if (node.data === '[')\r\n match++;\r\n if (node.data === ']') {\r\n if (match === 0) {\r\n return nextSibling(node);\r\n }\r\n else {\r\n match--;\r\n }\r\n }\r\n }\r\n }\r\n return node;\r\n };\r\n return [hydrate, hydrateNode];\r\n}\n\nlet supported;\r\nlet perf;\r\nfunction startMeasure(instance, type) {\r\n if (instance.appContext.config.performance && isSupported()) {\r\n perf.mark(`vue-${type}-${instance.uid}`);\r\n }\r\n}\r\nfunction endMeasure(instance, type) {\r\n if (instance.appContext.config.performance && isSupported()) {\r\n const startTag = `vue-${type}-${instance.uid}`;\r\n const endTag = startTag + `:end`;\r\n perf.mark(endTag);\r\n perf.measure(`<${formatComponentName(instance, instance.type)}> ${type}`, startTag, endTag);\r\n perf.clearMarks(startTag);\r\n perf.clearMarks(endTag);\r\n }\r\n}\r\nfunction isSupported() {\r\n if (supported !== undefined) {\r\n return supported;\r\n }\r\n /* eslint-disable no-restricted-globals */\r\n if (typeof window !== 'undefined' && window.performance) {\r\n supported = true;\r\n perf = window.performance;\r\n }\r\n else {\r\n supported = false;\r\n }\r\n /* eslint-enable no-restricted-globals */\r\n return supported;\r\n}\n\n/**\r\n * This is only called in esm-bundler builds.\r\n * It is called when a renderer is created, in `baseCreateRenderer` so that\r\n * importing runtime-core is side-effects free.\r\n *\r\n * istanbul-ignore-next\r\n */\r\nfunction initFeatureFlags() {\r\n let needWarn = false;\r\n if (typeof __VUE_OPTIONS_API__ !== 'boolean') {\r\n needWarn = true;\r\n getGlobalThis().__VUE_OPTIONS_API__ = true;\r\n }\r\n if (typeof __VUE_PROD_DEVTOOLS__ !== 'boolean') {\r\n needWarn = true;\r\n getGlobalThis().__VUE_PROD_DEVTOOLS__ = false;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && needWarn) {\r\n console.warn(`You are running the esm-bundler build of Vue. It is recommended to ` +\r\n `configure your bundler to explicitly replace feature flag globals ` +\r\n `with boolean literals to get proper tree-shaking in the final bundle. ` +\r\n `See http://link.vuejs.org/feature-flags for more details.`);\r\n }\r\n}\n\n// implementation, close to no-op\r\nfunction defineComponent(options) {\r\n return isFunction(options) ? { setup: options, name: options.name } : options;\r\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\r\nfunction defineAsyncComponent(source) {\r\n if (isFunction(source)) {\r\n source = { loader: source };\r\n }\r\n const { loader, loadingComponent: loadingComponent, errorComponent: errorComponent, delay = 200, timeout, // undefined = never times out\r\n suspensible = true, onError: userOnError } = source;\r\n let pendingRequest = null;\r\n let resolvedComp;\r\n let retries = 0;\r\n const retry = () => {\r\n retries++;\r\n pendingRequest = null;\r\n return load();\r\n };\r\n const load = () => {\r\n let thisRequest;\r\n return (pendingRequest ||\r\n (thisRequest = pendingRequest = loader()\r\n .catch(err => {\r\n err = err instanceof Error ? err : new Error(String(err));\r\n if (userOnError) {\r\n return new Promise((resolve, reject) => {\r\n const userRetry = () => resolve(retry());\r\n const userFail = () => reject(err);\r\n userOnError(err, userRetry, userFail, retries + 1);\r\n });\r\n }\r\n else {\r\n throw err;\r\n }\r\n })\r\n .then((comp) => {\r\n if (thisRequest !== pendingRequest && pendingRequest) {\r\n return pendingRequest;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && !comp) {\r\n warn(`Async component loader resolved to undefined. ` +\r\n `If you are using retry(), make sure to return its return value.`);\r\n }\r\n // interop module default\r\n if (comp &&\r\n (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {\r\n comp = comp.default;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && comp && !isObject(comp) && !isFunction(comp)) {\r\n throw new Error(`Invalid async component load result: ${comp}`);\r\n }\r\n resolvedComp = comp;\r\n return comp;\r\n })));\r\n };\r\n return defineComponent({\r\n __asyncLoader: load,\r\n name: 'AsyncComponentWrapper',\r\n setup() {\r\n const instance = currentInstance;\r\n // already resolved\r\n if (resolvedComp) {\r\n return () => createInnerComp(resolvedComp, instance);\r\n }\r\n const onError = (err) => {\r\n pendingRequest = null;\r\n handleError(err, instance, 13 /* ASYNC_COMPONENT_LOADER */, !errorComponent /* do not throw in dev if user provided error component */);\r\n };\r\n // suspense-controlled or SSR.\r\n if (( suspensible && instance.suspense) ||\r\n (false )) {\r\n return load()\r\n .then(comp => {\r\n return () => createInnerComp(comp, instance);\r\n })\r\n .catch(err => {\r\n onError(err);\r\n return () => errorComponent\r\n ? createVNode(errorComponent, {\r\n error: err\r\n })\r\n : null;\r\n });\r\n }\r\n const loaded = ref(false);\r\n const error = ref();\r\n const delayed = ref(!!delay);\r\n if (delay) {\r\n setTimeout(() => {\r\n delayed.value = false;\r\n }, delay);\r\n }\r\n if (timeout != null) {\r\n setTimeout(() => {\r\n if (!loaded.value && !error.value) {\r\n const err = new Error(`Async component timed out after ${timeout}ms.`);\r\n onError(err);\r\n error.value = err;\r\n }\r\n }, timeout);\r\n }\r\n load()\r\n .then(() => {\r\n loaded.value = true;\r\n })\r\n .catch(err => {\r\n onError(err);\r\n error.value = err;\r\n });\r\n return () => {\r\n if (loaded.value && resolvedComp) {\r\n return createInnerComp(resolvedComp, instance);\r\n }\r\n else if (error.value && errorComponent) {\r\n return createVNode(errorComponent, {\r\n error: error.value\r\n });\r\n }\r\n else if (loadingComponent && !delayed.value) {\r\n return createVNode(loadingComponent);\r\n }\r\n };\r\n }\r\n });\r\n}\r\nfunction createInnerComp(comp, { vnode: { ref, props, children } }) {\r\n const vnode = createVNode(comp, props, children);\r\n // ensure inner component inherits the async wrapper's ref owner\r\n vnode.ref = ref;\r\n return vnode;\r\n}\n\nconst prodEffectOptions = {\r\n scheduler: queueJob,\r\n // #1801, #2043 component render effects should allow recursive updates\r\n allowRecurse: true\r\n};\r\nfunction createDevEffectOptions(instance) {\r\n return {\r\n scheduler: queueJob,\r\n allowRecurse: true,\r\n onTrack: instance.rtc ? e => invokeArrayFns(instance.rtc, e) : void 0,\r\n onTrigger: instance.rtg ? e => invokeArrayFns(instance.rtg, e) : void 0\r\n };\r\n}\r\nconst queuePostRenderEffect = queueEffectWithSuspense\r\n ;\r\nconst setRef = (rawRef, oldRawRef, parentSuspense, vnode) => {\r\n if (isArray(rawRef)) {\r\n rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode));\r\n return;\r\n }\r\n let value;\r\n if (!vnode || isAsyncWrapper(vnode)) {\r\n value = null;\r\n }\r\n else {\r\n if (vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */) {\r\n value = vnode.component.exposed || vnode.component.proxy;\r\n }\r\n else {\r\n value = vnode.el;\r\n }\r\n }\r\n const { i: owner, r: ref } = rawRef;\r\n if ((process.env.NODE_ENV !== 'production') && !owner) {\r\n warn(`Missing ref owner context. ref cannot be used on hoisted vnodes. ` +\r\n `A vnode with ref must be created inside the render function.`);\r\n return;\r\n }\r\n const oldRef = oldRawRef && oldRawRef.r;\r\n const refs = owner.refs === EMPTY_OBJ ? (owner.refs = {}) : owner.refs;\r\n const setupState = owner.setupState;\r\n // unset old ref\r\n if (oldRef != null && oldRef !== ref) {\r\n if (isString(oldRef)) {\r\n refs[oldRef] = null;\r\n if (hasOwn(setupState, oldRef)) {\r\n setupState[oldRef] = null;\r\n }\r\n }\r\n else if (isRef(oldRef)) {\r\n oldRef.value = null;\r\n }\r\n }\r\n if (isString(ref)) {\r\n const doSet = () => {\r\n refs[ref] = value;\r\n if (hasOwn(setupState, ref)) {\r\n setupState[ref] = value;\r\n }\r\n };\r\n // #1789: for non-null values, set them after render\r\n // null values means this is unmount and it should not overwrite another\r\n // ref with the same key\r\n if (value) {\r\n doSet.id = -1;\r\n queuePostRenderEffect(doSet, parentSuspense);\r\n }\r\n else {\r\n doSet();\r\n }\r\n }\r\n else if (isRef(ref)) {\r\n const doSet = () => {\r\n ref.value = value;\r\n };\r\n if (value) {\r\n doSet.id = -1;\r\n queuePostRenderEffect(doSet, parentSuspense);\r\n }\r\n else {\r\n doSet();\r\n }\r\n }\r\n else if (isFunction(ref)) {\r\n callWithErrorHandling(ref, owner, 12 /* FUNCTION_REF */, [value, refs]);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Invalid template ref type:', value, `(${typeof value})`);\r\n }\r\n};\r\n/**\r\n * The createRenderer function accepts two generic arguments:\r\n * HostNode and HostElement, corresponding to Node and Element types in the\r\n * host environment. For example, for runtime-dom, HostNode would be the DOM\r\n * `Node` interface and HostElement would be the DOM `Element` interface.\r\n *\r\n * Custom renderers can pass in the platform specific types like this:\r\n *\r\n * ``` js\r\n * const { render, createApp } = createRenderer<Node, Element>({\r\n * patchProp,\r\n * ...nodeOps\r\n * })\r\n * ```\r\n */\r\nfunction createRenderer(options) {\r\n return baseCreateRenderer(options);\r\n}\r\n// Separate API for creating hydration-enabled renderer.\r\n// Hydration logic is only used when calling this function, making it\r\n// tree-shakable.\r\nfunction createHydrationRenderer(options) {\r\n return baseCreateRenderer(options, createHydrationFunctions);\r\n}\r\n// implementation\r\nfunction baseCreateRenderer(options, createHydrationFns) {\r\n // compile-time feature flags check\r\n {\r\n initFeatureFlags();\r\n }\r\n const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, forcePatchProp: hostForcePatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, cloneNode: hostCloneNode, insertStaticContent: hostInsertStaticContent } = options;\r\n // Note: functions inside this closure should use `const xxx = () => {}`\r\n // style in order to prevent being inlined by minifiers.\r\n const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, optimized = false) => {\r\n // patching & not same type, unmount old tree\r\n if (n1 && !isSameVNodeType(n1, n2)) {\r\n anchor = getNextHostNode(n1);\r\n unmount(n1, parentComponent, parentSuspense, true);\r\n n1 = null;\r\n }\r\n if (n2.patchFlag === -2 /* BAIL */) {\r\n optimized = false;\r\n n2.dynamicChildren = null;\r\n }\r\n const { type, ref, shapeFlag } = n2;\r\n switch (type) {\r\n case Text:\r\n processText(n1, n2, container, anchor);\r\n break;\r\n case Comment:\r\n processCommentNode(n1, n2, container, anchor);\r\n break;\r\n case Static:\r\n if (n1 == null) {\r\n mountStaticNode(n2, container, anchor, isSVG);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n patchStaticNode(n1, n2, container, isSVG);\r\n }\r\n break;\r\n case Fragment:\r\n processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\r\n break;\r\n default:\r\n if (shapeFlag & 1 /* ELEMENT */) {\r\n processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n else if (shapeFlag & 6 /* COMPONENT */) {\r\n processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n else if (shapeFlag & 64 /* TELEPORT */) {\r\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized, internals);\r\n }\r\n else if ( shapeFlag & 128 /* SUSPENSE */) {\r\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized, internals);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Invalid VNode type:', type, `(${typeof type})`);\r\n }\r\n }\r\n // set ref\r\n if (ref != null && parentComponent) {\r\n setRef(ref, n1 && n1.ref, parentSuspense, n2);\r\n }\r\n };\r\n const processText = (n1, n2, container, anchor) => {\r\n if (n1 == null) {\r\n hostInsert((n2.el = hostCreateText(n2.children)), container, anchor);\r\n }\r\n else {\r\n const el = (n2.el = n1.el);\r\n if (n2.children !== n1.children) {\r\n hostSetText(el, n2.children);\r\n }\r\n }\r\n };\r\n const processCommentNode = (n1, n2, container, anchor) => {\r\n if (n1 == null) {\r\n hostInsert((n2.el = hostCreateComment(n2.children || '')), container, anchor);\r\n }\r\n else {\r\n // there's no support for dynamic comments\r\n n2.el = n1.el;\r\n }\r\n };\r\n const mountStaticNode = (n2, container, anchor, isSVG) => {\r\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG);\r\n };\r\n /**\r\n * Dev / HMR only\r\n */\r\n const patchStaticNode = (n1, n2, container, isSVG) => {\r\n // static nodes are only patched during dev for HMR\r\n if (n2.children !== n1.children) {\r\n const anchor = hostNextSibling(n1.anchor);\r\n // remove existing\r\n removeStaticNode(n1);\r\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG);\r\n }\r\n else {\r\n n2.el = n1.el;\r\n n2.anchor = n1.anchor;\r\n }\r\n };\r\n const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\r\n let next;\r\n while (el && el !== anchor) {\r\n next = hostNextSibling(el);\r\n hostInsert(el, container, nextSibling);\r\n el = next;\r\n }\r\n hostInsert(anchor, container, nextSibling);\r\n };\r\n const removeStaticNode = ({ el, anchor }) => {\r\n let next;\r\n while (el && el !== anchor) {\r\n next = hostNextSibling(el);\r\n hostRemove(el);\r\n el = next;\r\n }\r\n hostRemove(anchor);\r\n };\r\n const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\r\n isSVG = isSVG || n2.type === 'svg';\r\n if (n1 == null) {\r\n mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n else {\r\n patchElement(n1, n2, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n };\r\n const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\r\n let el;\r\n let vnodeHook;\r\n const { type, props, shapeFlag, transition, scopeId, patchFlag, dirs } = vnode;\r\n if (!(process.env.NODE_ENV !== 'production') &&\r\n vnode.el &&\r\n hostCloneNode !== undefined &&\r\n patchFlag === -1 /* HOISTED */) {\r\n // If a vnode has non-null el, it means it's being reused.\r\n // Only static vnodes can be reused, so its mounted DOM nodes should be\r\n // exactly the same, and we can simply do a clone here.\r\n // only do this in production since cloned trees cannot be HMR updated.\r\n el = vnode.el = hostCloneNode(vnode.el);\r\n }\r\n else {\r\n el = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is);\r\n // mount children first, since some props may rely on child content\r\n // being already rendered, e.g. `<select value>`\r\n if (shapeFlag & 8 /* TEXT_CHILDREN */) {\r\n hostSetElementText(el, vnode.children);\r\n }\r\n else if (shapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== 'foreignObject', optimized || !!vnode.dynamicChildren);\r\n }\r\n if (dirs) {\r\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\r\n }\r\n // props\r\n if (props) {\r\n for (const key in props) {\r\n if (!isReservedProp(key)) {\r\n hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\r\n }\r\n }\r\n if ((vnodeHook = props.onVnodeBeforeMount)) {\r\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\r\n }\r\n }\r\n // scopeId\r\n setScopeId(el, scopeId, vnode, parentComponent);\r\n }\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n Object.defineProperty(el, '__vnode', {\r\n value: vnode,\r\n enumerable: false\r\n });\r\n Object.defineProperty(el, '__vueParentComponent', {\r\n value: parentComponent,\r\n enumerable: false\r\n });\r\n }\r\n if (dirs) {\r\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\r\n }\r\n // #1583 For inside suspense + suspense not resolved case, enter hook should call when suspense resolved\r\n // #1689 For inside suspense + suspense resolved case, just call it\r\n const needCallTransitionHooks = (!parentSuspense || (parentSuspense && !parentSuspense.pendingBranch)) &&\r\n transition &&\r\n !transition.persisted;\r\n if (needCallTransitionHooks) {\r\n transition.beforeEnter(el);\r\n }\r\n hostInsert(el, container, anchor);\r\n if ((vnodeHook = props && props.onVnodeMounted) ||\r\n needCallTransitionHooks ||\r\n dirs) {\r\n queuePostRenderEffect(() => {\r\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\r\n needCallTransitionHooks && transition.enter(el);\r\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\r\n }, parentSuspense);\r\n }\r\n };\r\n const setScopeId = (el, scopeId, vnode, parentComponent) => {\r\n if (scopeId) {\r\n hostSetScopeId(el, scopeId);\r\n }\r\n if (parentComponent) {\r\n const treeOwnerId = parentComponent.type.__scopeId;\r\n // vnode's own scopeId and the current patched component's scopeId is\r\n // different - this is a slot content node.\r\n if (treeOwnerId && treeOwnerId !== scopeId) {\r\n hostSetScopeId(el, treeOwnerId + '-s');\r\n }\r\n let subTree = parentComponent.subTree;\r\n if ((process.env.NODE_ENV !== 'production') && subTree.type === Fragment) {\r\n subTree =\r\n filterSingleRoot(subTree.children) || subTree;\r\n }\r\n if (vnode === subTree) {\r\n setScopeId(el, parentComponent.vnode.scopeId, parentComponent.vnode, parentComponent.parent);\r\n }\r\n }\r\n };\r\n const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, optimized, start = 0) => {\r\n for (let i = start; i < children.length; i++) {\r\n const child = (children[i] = optimized\r\n ? cloneIfMounted(children[i])\r\n : normalizeVNode(children[i]));\r\n patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n };\r\n const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, optimized) => {\r\n const el = (n2.el = n1.el);\r\n let { patchFlag, dynamicChildren, dirs } = n2;\r\n // #1426 take the old vnode's patch flag into account since user may clone a\r\n // compiler-generated vnode, which de-opts to FULL_PROPS\r\n patchFlag |= n1.patchFlag & 16 /* FULL_PROPS */;\r\n const oldProps = n1.props || EMPTY_OBJ;\r\n const newProps = n2.props || EMPTY_OBJ;\r\n let vnodeHook;\r\n if ((vnodeHook = newProps.onVnodeBeforeUpdate)) {\r\n invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\r\n }\r\n if (dirs) {\r\n invokeDirectiveHook(n2, n1, parentComponent, 'beforeUpdate');\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\r\n // HMR updated, force full diff\r\n patchFlag = 0;\r\n optimized = false;\r\n dynamicChildren = null;\r\n }\r\n if (patchFlag > 0) {\r\n // the presence of a patchFlag means this element's render code was\r\n // generated by the compiler and can take the fast path.\r\n // in this path old node and new node are guaranteed to have the same shape\r\n // (i.e. at the exact same position in the source template)\r\n if (patchFlag & 16 /* FULL_PROPS */) {\r\n // element props contain dynamic keys, full diff needed\r\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\r\n }\r\n else {\r\n // class\r\n // this flag is matched when the element has dynamic class bindings.\r\n if (patchFlag & 2 /* CLASS */) {\r\n if (oldProps.class !== newProps.class) {\r\n hostPatchProp(el, 'class', null, newProps.class, isSVG);\r\n }\r\n }\r\n // style\r\n // this flag is matched when the element has dynamic style bindings\r\n if (patchFlag & 4 /* STYLE */) {\r\n hostPatchProp(el, 'style', oldProps.style, newProps.style, isSVG);\r\n }\r\n // props\r\n // This flag is matched when the element has dynamic prop/attr bindings\r\n // other than class and style. The keys of dynamic prop/attrs are saved for\r\n // faster iteration.\r\n // Note dynamic keys like :[foo]=\"bar\" will cause this optimization to\r\n // bail out and go through a full diff because we need to unset the old key\r\n if (patchFlag & 8 /* PROPS */) {\r\n // if the flag is present then dynamicProps must be non-null\r\n const propsToUpdate = n2.dynamicProps;\r\n for (let i = 0; i < propsToUpdate.length; i++) {\r\n const key = propsToUpdate[i];\r\n const prev = oldProps[key];\r\n const next = newProps[key];\r\n if (next !== prev ||\r\n (hostForcePatchProp && hostForcePatchProp(el, key))) {\r\n hostPatchProp(el, key, prev, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren);\r\n }\r\n }\r\n }\r\n }\r\n // text\r\n // This flag is matched when the element has only dynamic text children.\r\n if (patchFlag & 1 /* TEXT */) {\r\n if (n1.children !== n2.children) {\r\n hostSetElementText(el, n2.children);\r\n }\r\n }\r\n }\r\n else if (!optimized && dynamicChildren == null) {\r\n // unoptimized, full diff\r\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\r\n }\r\n const areChildrenSVG = isSVG && n2.type !== 'foreignObject';\r\n if (dynamicChildren) {\r\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, areChildrenSVG);\r\n if ((process.env.NODE_ENV !== 'production') && parentComponent && parentComponent.type.__hmrId) {\r\n traverseStaticChildren(n1, n2);\r\n }\r\n }\r\n else if (!optimized) {\r\n // full diff\r\n patchChildren(n1, n2, el, null, parentComponent, parentSuspense, areChildrenSVG);\r\n }\r\n if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\r\n queuePostRenderEffect(() => {\r\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\r\n dirs && invokeDirectiveHook(n2, n1, parentComponent, 'updated');\r\n }, parentSuspense);\r\n }\r\n };\r\n // The fast path for blocks.\r\n const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG) => {\r\n for (let i = 0; i < newChildren.length; i++) {\r\n const oldVNode = oldChildren[i];\r\n const newVNode = newChildren[i];\r\n // Determine the container (parent element) for the patch.\r\n const container = \r\n // - In the case of a Fragment, we need to provide the actual parent\r\n // of the Fragment itself so it can move its children.\r\n oldVNode.type === Fragment ||\r\n // - In the case of different nodes, there is going to be a replacement\r\n // which also requires the correct parent container\r\n !isSameVNodeType(oldVNode, newVNode) ||\r\n // - In the case of a component, it could contain anything.\r\n oldVNode.shapeFlag & 6 /* COMPONENT */ ||\r\n oldVNode.shapeFlag & 64 /* TELEPORT */\r\n ? hostParentNode(oldVNode.el)\r\n : // In other cases, the parent container is not actually used so we\r\n // just pass the block element here to avoid a DOM parentNode call.\r\n fallbackContainer;\r\n patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, true);\r\n }\r\n };\r\n const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {\r\n if (oldProps !== newProps) {\r\n for (const key in newProps) {\r\n // empty string is not valid prop\r\n if (isReservedProp(key))\r\n continue;\r\n const next = newProps[key];\r\n const prev = oldProps[key];\r\n if (next !== prev ||\r\n (hostForcePatchProp && hostForcePatchProp(el, key))) {\r\n hostPatchProp(el, key, prev, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\r\n }\r\n }\r\n if (oldProps !== EMPTY_OBJ) {\r\n for (const key in oldProps) {\r\n if (!isReservedProp(key) && !(key in newProps)) {\r\n hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\r\n const fragmentStartAnchor = (n2.el = n1 ? n1.el : hostCreateText(''));\r\n const fragmentEndAnchor = (n2.anchor = n1 ? n1.anchor : hostCreateText(''));\r\n let { patchFlag, dynamicChildren } = n2;\r\n if (patchFlag > 0) {\r\n optimized = true;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\r\n // HMR updated, force full diff\r\n patchFlag = 0;\r\n optimized = false;\r\n dynamicChildren = null;\r\n }\r\n if (n1 == null) {\r\n hostInsert(fragmentStartAnchor, container, anchor);\r\n hostInsert(fragmentEndAnchor, container, anchor);\r\n // a fragment can only have array children\r\n // since they are either generated by the compiler, or implicitly created\r\n // from arrays.\r\n mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n else {\r\n if (patchFlag > 0 &&\r\n patchFlag & 64 /* STABLE_FRAGMENT */ &&\r\n dynamicChildren &&\r\n // #2715 the previous fragment could've been a BAILed one as a result\r\n // of renderSlot() with no valid children\r\n n1.dynamicChildren) {\r\n // a stable fragment (template root or <template v-for>) doesn't need to\r\n // patch children order, but it may contain dynamicChildren.\r\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG);\r\n if ((process.env.NODE_ENV !== 'production') && parentComponent && parentComponent.type.__hmrId) {\r\n traverseStaticChildren(n1, n2);\r\n }\r\n else if (\r\n // #2080 if the stable fragment has a key, it's a <template v-for> that may\r\n // get moved around. Make sure all root level vnodes inherit el.\r\n // #2134 or if it's a component root, it may also get moved around\r\n // as the component is being moved.\r\n n2.key != null ||\r\n (parentComponent && n2 === parentComponent.subTree)) {\r\n traverseStaticChildren(n1, n2, true /* shallow */);\r\n }\r\n }\r\n else {\r\n // keyed / unkeyed, or manual fragments.\r\n // for keyed & unkeyed, since they are compiler generated from v-for,\r\n // each child is guaranteed to be a block so the fragment will never\r\n // have dynamicChildren.\r\n patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n }\r\n };\r\n const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\r\n if (n1 == null) {\r\n if (n2.shapeFlag & 512 /* COMPONENT_KEPT_ALIVE */) {\r\n parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized);\r\n }\r\n else {\r\n mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n }\r\n else {\r\n updateComponent(n1, n2, optimized);\r\n }\r\n };\r\n const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\r\n const instance = (initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense));\r\n if ((process.env.NODE_ENV !== 'production') && instance.type.__hmrId) {\r\n registerHMR(instance);\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n pushWarningContext(initialVNode);\r\n startMeasure(instance, `mount`);\r\n }\r\n // inject renderer internals for keepAlive\r\n if (isKeepAlive(initialVNode)) {\r\n instance.ctx.renderer = internals;\r\n }\r\n // resolve props and slots for setup context\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n startMeasure(instance, `init`);\r\n }\r\n setupComponent(instance);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n endMeasure(instance, `init`);\r\n }\r\n // setup() is async. This component relies on async logic to be resolved\r\n // before proceeding\r\n if ( instance.asyncDep) {\r\n parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);\r\n // Give it a placeholder if this is not hydration\r\n // TODO handle self-defined fallback\r\n if (!initialVNode.el) {\r\n const placeholder = (instance.subTree = createVNode(Comment));\r\n processCommentNode(null, placeholder, container, anchor);\r\n }\r\n return;\r\n }\r\n setupRenderEffect(instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n popWarningContext();\r\n endMeasure(instance, `mount`);\r\n }\r\n };\r\n const updateComponent = (n1, n2, optimized) => {\r\n const instance = (n2.component = n1.component);\r\n if (shouldUpdateComponent(n1, n2, optimized)) {\r\n if (\r\n instance.asyncDep &&\r\n !instance.asyncResolved) {\r\n // async & still pending - just update props and slots\r\n // since the component's reactive effect for render isn't set-up yet\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n pushWarningContext(n2);\r\n }\r\n updateComponentPreRender(instance, n2, optimized);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n popWarningContext();\r\n }\r\n return;\r\n }\r\n else {\r\n // normal update\r\n instance.next = n2;\r\n // in case the child component is also queued, remove it to avoid\r\n // double updating the same child component in the same flush.\r\n invalidateJob(instance.update);\r\n // instance.update is the reactive effect runner.\r\n instance.update();\r\n }\r\n }\r\n else {\r\n // no update needed. just copy over properties\r\n n2.component = n1.component;\r\n n2.el = n1.el;\r\n instance.vnode = n2;\r\n }\r\n };\r\n const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {\r\n // create reactive effect for rendering\r\n instance.update = effect(function componentEffect() {\r\n if (!instance.isMounted) {\r\n let vnodeHook;\r\n const { el, props } = initialVNode;\r\n const { bm, m, parent } = instance;\r\n // beforeMount hook\r\n if (bm) {\r\n invokeArrayFns(bm);\r\n }\r\n // onVnodeBeforeMount\r\n if ((vnodeHook = props && props.onVnodeBeforeMount)) {\r\n invokeVNodeHook(vnodeHook, parent, initialVNode);\r\n }\r\n // render\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n startMeasure(instance, `render`);\r\n }\r\n const subTree = (instance.subTree = renderComponentRoot(instance));\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n endMeasure(instance, `render`);\r\n }\r\n if (el && hydrateNode) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n startMeasure(instance, `hydrate`);\r\n }\r\n // vnode has adopted host node - perform hydration instead of mount.\r\n hydrateNode(initialVNode.el, subTree, instance, parentSuspense);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n endMeasure(instance, `hydrate`);\r\n }\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n startMeasure(instance, `patch`);\r\n }\r\n patch(null, subTree, container, anchor, instance, parentSuspense, isSVG);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n endMeasure(instance, `patch`);\r\n }\r\n initialVNode.el = subTree.el;\r\n }\r\n // mounted hook\r\n if (m) {\r\n queuePostRenderEffect(m, parentSuspense);\r\n }\r\n // onVnodeMounted\r\n if ((vnodeHook = props && props.onVnodeMounted)) {\r\n const scopedInitialVNode = initialVNode;\r\n queuePostRenderEffect(() => {\r\n invokeVNodeHook(vnodeHook, parent, scopedInitialVNode);\r\n }, parentSuspense);\r\n }\r\n // activated hook for keep-alive roots.\r\n // #1742 activated hook must be accessed after first render\r\n // since the hook may be injected by a child keep-alive\r\n const { a } = instance;\r\n if (a &&\r\n initialVNode.shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */) {\r\n queuePostRenderEffect(a, parentSuspense);\r\n }\r\n instance.isMounted = true;\r\n // #2458: deference mount-only object parameters to prevent memleaks\r\n initialVNode = container = anchor = null;\r\n }\r\n else {\r\n // updateComponent\r\n // This is triggered by mutation of component's own state (next: null)\r\n // OR parent calling processComponent (next: VNode)\r\n let { next, bu, u, parent, vnode } = instance;\r\n let originNext = next;\r\n let vnodeHook;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n pushWarningContext(next || instance.vnode);\r\n }\r\n if (next) {\r\n next.el = vnode.el;\r\n updateComponentPreRender(instance, next, optimized);\r\n }\r\n else {\r\n next = vnode;\r\n }\r\n // beforeUpdate hook\r\n if (bu) {\r\n invokeArrayFns(bu);\r\n }\r\n // onVnodeBeforeUpdate\r\n if ((vnodeHook = next.props && next.props.onVnodeBeforeUpdate)) {\r\n invokeVNodeHook(vnodeHook, parent, next, vnode);\r\n }\r\n // render\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n startMeasure(instance, `render`);\r\n }\r\n const nextTree = renderComponentRoot(instance);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n endMeasure(instance, `render`);\r\n }\r\n const prevTree = instance.subTree;\r\n instance.subTree = nextTree;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n startMeasure(instance, `patch`);\r\n }\r\n patch(prevTree, nextTree, \r\n // parent may have changed if it's in a teleport\r\n hostParentNode(prevTree.el), \r\n // anchor may have changed if it's in a fragment\r\n getNextHostNode(prevTree), instance, parentSuspense, isSVG);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n endMeasure(instance, `patch`);\r\n }\r\n next.el = nextTree.el;\r\n if (originNext === null) {\r\n // self-triggered update. In case of HOC, update parent component\r\n // vnode el. HOC is indicated by parent instance's subTree pointing\r\n // to child component's vnode\r\n updateHOCHostEl(instance, nextTree.el);\r\n }\r\n // updated hook\r\n if (u) {\r\n queuePostRenderEffect(u, parentSuspense);\r\n }\r\n // onVnodeUpdated\r\n if ((vnodeHook = next.props && next.props.onVnodeUpdated)) {\r\n queuePostRenderEffect(() => {\r\n invokeVNodeHook(vnodeHook, parent, next, vnode);\r\n }, parentSuspense);\r\n }\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n devtoolsComponentUpdated(instance);\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n popWarningContext();\r\n }\r\n }\r\n }, (process.env.NODE_ENV !== 'production') ? createDevEffectOptions(instance) : prodEffectOptions);\r\n };\r\n const updateComponentPreRender = (instance, nextVNode, optimized) => {\r\n nextVNode.component = instance;\r\n const prevProps = instance.vnode.props;\r\n instance.vnode = nextVNode;\r\n instance.next = null;\r\n updateProps(instance, nextVNode.props, prevProps, optimized);\r\n updateSlots(instance, nextVNode.children);\r\n // props update may have triggered pre-flush watchers.\r\n // flush them before the render update.\r\n flushPreFlushCbs(undefined, instance.update);\r\n };\r\n const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized = false) => {\r\n const c1 = n1 && n1.children;\r\n const prevShapeFlag = n1 ? n1.shapeFlag : 0;\r\n const c2 = n2.children;\r\n const { patchFlag, shapeFlag } = n2;\r\n // fast path\r\n if (patchFlag > 0) {\r\n if (patchFlag & 128 /* KEYED_FRAGMENT */) {\r\n // this could be either fully-keyed or mixed (some keyed some not)\r\n // presence of patchFlag means children are guaranteed to be arrays\r\n patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\r\n return;\r\n }\r\n else if (patchFlag & 256 /* UNKEYED_FRAGMENT */) {\r\n // unkeyed\r\n patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\r\n return;\r\n }\r\n }\r\n // children has 3 possibilities: text, array or no children.\r\n if (shapeFlag & 8 /* TEXT_CHILDREN */) {\r\n // text children fast path\r\n if (prevShapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n unmountChildren(c1, parentComponent, parentSuspense);\r\n }\r\n if (c2 !== c1) {\r\n hostSetElementText(container, c2);\r\n }\r\n }\r\n else {\r\n if (prevShapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n // prev children was array\r\n if (shapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n // two arrays, cannot assume anything, do full diff\r\n patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n else {\r\n // no new children, just unmount old\r\n unmountChildren(c1, parentComponent, parentSuspense, true);\r\n }\r\n }\r\n else {\r\n // prev children was text OR null\r\n // new children is array OR null\r\n if (prevShapeFlag & 8 /* TEXT_CHILDREN */) {\r\n hostSetElementText(container, '');\r\n }\r\n // mount new if array\r\n if (shapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n }\r\n }\r\n };\r\n const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\r\n c1 = c1 || EMPTY_ARR;\r\n c2 = c2 || EMPTY_ARR;\r\n const oldLength = c1.length;\r\n const newLength = c2.length;\r\n const commonLength = Math.min(oldLength, newLength);\r\n let i;\r\n for (i = 0; i < commonLength; i++) {\r\n const nextChild = (c2[i] = optimized\r\n ? cloneIfMounted(c2[i])\r\n : normalizeVNode(c2[i]));\r\n patch(c1[i], nextChild, container, null, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n if (oldLength > newLength) {\r\n // remove old\r\n unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength);\r\n }\r\n else {\r\n // mount new\r\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, optimized, commonLength);\r\n }\r\n };\r\n // can be all-keyed or mixed\r\n const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, optimized) => {\r\n let i = 0;\r\n const l2 = c2.length;\r\n let e1 = c1.length - 1; // prev ending index\r\n let e2 = l2 - 1; // next ending index\r\n // 1. sync from start\r\n // (a b) c\r\n // (a b) d e\r\n while (i <= e1 && i <= e2) {\r\n const n1 = c1[i];\r\n const n2 = (c2[i] = optimized\r\n ? cloneIfMounted(c2[i])\r\n : normalizeVNode(c2[i]));\r\n if (isSameVNodeType(n1, n2)) {\r\n patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n else {\r\n break;\r\n }\r\n i++;\r\n }\r\n // 2. sync from end\r\n // a (b c)\r\n // d e (b c)\r\n while (i <= e1 && i <= e2) {\r\n const n1 = c1[e1];\r\n const n2 = (c2[e2] = optimized\r\n ? cloneIfMounted(c2[e2])\r\n : normalizeVNode(c2[e2]));\r\n if (isSameVNodeType(n1, n2)) {\r\n patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n else {\r\n break;\r\n }\r\n e1--;\r\n e2--;\r\n }\r\n // 3. common sequence + mount\r\n // (a b)\r\n // (a b) c\r\n // i = 2, e1 = 1, e2 = 2\r\n // (a b)\r\n // c (a b)\r\n // i = 0, e1 = -1, e2 = 0\r\n if (i > e1) {\r\n if (i <= e2) {\r\n const nextPos = e2 + 1;\r\n const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\r\n while (i <= e2) {\r\n patch(null, (c2[i] = optimized\r\n ? cloneIfMounted(c2[i])\r\n : normalizeVNode(c2[i])), container, anchor, parentComponent, parentSuspense, isSVG);\r\n i++;\r\n }\r\n }\r\n }\r\n // 4. common sequence + unmount\r\n // (a b) c\r\n // (a b)\r\n // i = 2, e1 = 2, e2 = 1\r\n // a (b c)\r\n // (b c)\r\n // i = 0, e1 = 0, e2 = -1\r\n else if (i > e2) {\r\n while (i <= e1) {\r\n unmount(c1[i], parentComponent, parentSuspense, true);\r\n i++;\r\n }\r\n }\r\n // 5. unknown sequence\r\n // [i ... e1 + 1]: a b [c d e] f g\r\n // [i ... e2 + 1]: a b [e d c h] f g\r\n // i = 2, e1 = 4, e2 = 5\r\n else {\r\n const s1 = i; // prev starting index\r\n const s2 = i; // next starting index\r\n // 5.1 build key:index map for newChildren\r\n const keyToNewIndexMap = new Map();\r\n for (i = s2; i <= e2; i++) {\r\n const nextChild = (c2[i] = optimized\r\n ? cloneIfMounted(c2[i])\r\n : normalizeVNode(c2[i]));\r\n if (nextChild.key != null) {\r\n if ((process.env.NODE_ENV !== 'production') && keyToNewIndexMap.has(nextChild.key)) {\r\n warn(`Duplicate keys found during update:`, JSON.stringify(nextChild.key), `Make sure keys are unique.`);\r\n }\r\n keyToNewIndexMap.set(nextChild.key, i);\r\n }\r\n }\r\n // 5.2 loop through old children left to be patched and try to patch\r\n // matching nodes & remove nodes that are no longer present\r\n let j;\r\n let patched = 0;\r\n const toBePatched = e2 - s2 + 1;\r\n let moved = false;\r\n // used to track whether any node has moved\r\n let maxNewIndexSoFar = 0;\r\n // works as Map<newIndex, oldIndex>\r\n // Note that oldIndex is offset by +1\r\n // and oldIndex = 0 is a special value indicating the new node has\r\n // no corresponding old node.\r\n // used for determining longest stable subsequence\r\n const newIndexToOldIndexMap = new Array(toBePatched);\r\n for (i = 0; i < toBePatched; i++)\r\n newIndexToOldIndexMap[i] = 0;\r\n for (i = s1; i <= e1; i++) {\r\n const prevChild = c1[i];\r\n if (patched >= toBePatched) {\r\n // all new children have been patched so this can only be a removal\r\n unmount(prevChild, parentComponent, parentSuspense, true);\r\n continue;\r\n }\r\n let newIndex;\r\n if (prevChild.key != null) {\r\n newIndex = keyToNewIndexMap.get(prevChild.key);\r\n }\r\n else {\r\n // key-less node, try to locate a key-less node of the same type\r\n for (j = s2; j <= e2; j++) {\r\n if (newIndexToOldIndexMap[j - s2] === 0 &&\r\n isSameVNodeType(prevChild, c2[j])) {\r\n newIndex = j;\r\n break;\r\n }\r\n }\r\n }\r\n if (newIndex === undefined) {\r\n unmount(prevChild, parentComponent, parentSuspense, true);\r\n }\r\n else {\r\n newIndexToOldIndexMap[newIndex - s2] = i + 1;\r\n if (newIndex >= maxNewIndexSoFar) {\r\n maxNewIndexSoFar = newIndex;\r\n }\r\n else {\r\n moved = true;\r\n }\r\n patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, optimized);\r\n patched++;\r\n }\r\n }\r\n // 5.3 move and mount\r\n // generate longest stable subsequence only when nodes have moved\r\n const increasingNewIndexSequence = moved\r\n ? getSequence(newIndexToOldIndexMap)\r\n : EMPTY_ARR;\r\n j = increasingNewIndexSequence.length - 1;\r\n // looping backwards so that we can use last patched node as anchor\r\n for (i = toBePatched - 1; i >= 0; i--) {\r\n const nextIndex = s2 + i;\r\n const nextChild = c2[nextIndex];\r\n const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\r\n if (newIndexToOldIndexMap[i] === 0) {\r\n // mount new\r\n patch(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG);\r\n }\r\n else if (moved) {\r\n // move if:\r\n // There is no stable subsequence (e.g. a reverse)\r\n // OR current node is not among the stable sequence\r\n if (j < 0 || i !== increasingNewIndexSequence[j]) {\r\n move(nextChild, container, anchor, 2 /* REORDER */);\r\n }\r\n else {\r\n j--;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\r\n const { el, type, transition, children, shapeFlag } = vnode;\r\n if (shapeFlag & 6 /* COMPONENT */) {\r\n move(vnode.component.subTree, container, anchor, moveType);\r\n return;\r\n }\r\n if ( shapeFlag & 128 /* SUSPENSE */) {\r\n vnode.suspense.move(container, anchor, moveType);\r\n return;\r\n }\r\n if (shapeFlag & 64 /* TELEPORT */) {\r\n type.move(vnode, container, anchor, internals);\r\n return;\r\n }\r\n if (type === Fragment) {\r\n hostInsert(el, container, anchor);\r\n for (let i = 0; i < children.length; i++) {\r\n move(children[i], container, anchor, moveType);\r\n }\r\n hostInsert(vnode.anchor, container, anchor);\r\n return;\r\n }\r\n if (type === Static) {\r\n moveStaticNode(vnode, container, anchor);\r\n return;\r\n }\r\n // single nodes\r\n const needTransition = moveType !== 2 /* REORDER */ &&\r\n shapeFlag & 1 /* ELEMENT */ &&\r\n transition;\r\n if (needTransition) {\r\n if (moveType === 0 /* ENTER */) {\r\n transition.beforeEnter(el);\r\n hostInsert(el, container, anchor);\r\n queuePostRenderEffect(() => transition.enter(el), parentSuspense);\r\n }\r\n else {\r\n const { leave, delayLeave, afterLeave } = transition;\r\n const remove = () => hostInsert(el, container, anchor);\r\n const performLeave = () => {\r\n leave(el, () => {\r\n remove();\r\n afterLeave && afterLeave();\r\n });\r\n };\r\n if (delayLeave) {\r\n delayLeave(el, remove, performLeave);\r\n }\r\n else {\r\n performLeave();\r\n }\r\n }\r\n }\r\n else {\r\n hostInsert(el, container, anchor);\r\n }\r\n };\r\n const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\r\n const { type, props, ref, children, dynamicChildren, shapeFlag, patchFlag, dirs } = vnode;\r\n // unset ref\r\n if (ref != null) {\r\n setRef(ref, null, parentSuspense, null);\r\n }\r\n if (shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */) {\r\n parentComponent.ctx.deactivate(vnode);\r\n return;\r\n }\r\n const shouldInvokeDirs = shapeFlag & 1 /* ELEMENT */ && dirs;\r\n let vnodeHook;\r\n if ((vnodeHook = props && props.onVnodeBeforeUnmount)) {\r\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\r\n }\r\n if (shapeFlag & 6 /* COMPONENT */) {\r\n unmountComponent(vnode.component, parentSuspense, doRemove);\r\n }\r\n else {\r\n if ( shapeFlag & 128 /* SUSPENSE */) {\r\n vnode.suspense.unmount(parentSuspense, doRemove);\r\n return;\r\n }\r\n if (shouldInvokeDirs) {\r\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeUnmount');\r\n }\r\n if (dynamicChildren &&\r\n // #1153: fast path should not be taken for non-stable (v-for) fragments\r\n (type !== Fragment ||\r\n (patchFlag > 0 && patchFlag & 64 /* STABLE_FRAGMENT */))) {\r\n // fast path for block nodes: only need to unmount dynamic children.\r\n unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);\r\n }\r\n else if ((type === Fragment &&\r\n (patchFlag & 128 /* KEYED_FRAGMENT */ ||\r\n patchFlag & 256 /* UNKEYED_FRAGMENT */)) ||\r\n (!optimized && shapeFlag & 16 /* ARRAY_CHILDREN */)) {\r\n unmountChildren(children, parentComponent, parentSuspense);\r\n }\r\n // an unmounted teleport should always remove its children if not disabled\r\n if (shapeFlag & 64 /* TELEPORT */ &&\r\n (doRemove || !isTeleportDisabled(vnode.props))) {\r\n vnode.type.remove(vnode, internals);\r\n }\r\n if (doRemove) {\r\n remove(vnode);\r\n }\r\n }\r\n if ((vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {\r\n queuePostRenderEffect(() => {\r\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\r\n shouldInvokeDirs &&\r\n invokeDirectiveHook(vnode, null, parentComponent, 'unmounted');\r\n }, parentSuspense);\r\n }\r\n };\r\n const remove = vnode => {\r\n const { type, el, anchor, transition } = vnode;\r\n if (type === Fragment) {\r\n removeFragment(el, anchor);\r\n return;\r\n }\r\n if (type === Static) {\r\n removeStaticNode(vnode);\r\n return;\r\n }\r\n const performRemove = () => {\r\n hostRemove(el);\r\n if (transition && !transition.persisted && transition.afterLeave) {\r\n transition.afterLeave();\r\n }\r\n };\r\n if (vnode.shapeFlag & 1 /* ELEMENT */ &&\r\n transition &&\r\n !transition.persisted) {\r\n const { leave, delayLeave } = transition;\r\n const performLeave = () => leave(el, performRemove);\r\n if (delayLeave) {\r\n delayLeave(vnode.el, performRemove, performLeave);\r\n }\r\n else {\r\n performLeave();\r\n }\r\n }\r\n else {\r\n performRemove();\r\n }\r\n };\r\n const removeFragment = (cur, end) => {\r\n // For fragments, directly remove all contained DOM nodes.\r\n // (fragment child nodes cannot have transition)\r\n let next;\r\n while (cur !== end) {\r\n next = hostNextSibling(cur);\r\n hostRemove(cur);\r\n cur = next;\r\n }\r\n hostRemove(end);\r\n };\r\n const unmountComponent = (instance, parentSuspense, doRemove) => {\r\n if ((process.env.NODE_ENV !== 'production') && instance.type.__hmrId) {\r\n unregisterHMR(instance);\r\n }\r\n const { bum, effects, update, subTree, um } = instance;\r\n // beforeUnmount hook\r\n if (bum) {\r\n invokeArrayFns(bum);\r\n }\r\n if (effects) {\r\n for (let i = 0; i < effects.length; i++) {\r\n stop(effects[i]);\r\n }\r\n }\r\n // update may be null if a component is unmounted before its async\r\n // setup has resolved.\r\n if (update) {\r\n stop(update);\r\n unmount(subTree, instance, parentSuspense, doRemove);\r\n }\r\n // unmounted hook\r\n if (um) {\r\n queuePostRenderEffect(um, parentSuspense);\r\n }\r\n queuePostRenderEffect(() => {\r\n instance.isUnmounted = true;\r\n }, parentSuspense);\r\n // A component with async dep inside a pending suspense is unmounted before\r\n // its async dep resolves. This should remove the dep from the suspense, and\r\n // cause the suspense to resolve immediately if that was the last dep.\r\n if (\r\n parentSuspense &&\r\n parentSuspense.pendingBranch &&\r\n !parentSuspense.isUnmounted &&\r\n instance.asyncDep &&\r\n !instance.asyncResolved &&\r\n instance.suspenseId === parentSuspense.pendingId) {\r\n parentSuspense.deps--;\r\n if (parentSuspense.deps === 0) {\r\n parentSuspense.resolve();\r\n }\r\n }\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n devtoolsComponentRemoved(instance);\r\n }\r\n };\r\n const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\r\n for (let i = start; i < children.length; i++) {\r\n unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\r\n }\r\n };\r\n const getNextHostNode = vnode => {\r\n if (vnode.shapeFlag & 6 /* COMPONENT */) {\r\n return getNextHostNode(vnode.component.subTree);\r\n }\r\n if ( vnode.shapeFlag & 128 /* SUSPENSE */) {\r\n return vnode.suspense.next();\r\n }\r\n return hostNextSibling((vnode.anchor || vnode.el));\r\n };\r\n const render = (vnode, container) => {\r\n if (vnode == null) {\r\n if (container._vnode) {\r\n unmount(container._vnode, null, null, true);\r\n }\r\n }\r\n else {\r\n patch(container._vnode || null, vnode, container);\r\n }\r\n flushPostFlushCbs();\r\n container._vnode = vnode;\r\n };\r\n const internals = {\r\n p: patch,\r\n um: unmount,\r\n m: move,\r\n r: remove,\r\n mt: mountComponent,\r\n mc: mountChildren,\r\n pc: patchChildren,\r\n pbc: patchBlockChildren,\r\n n: getNextHostNode,\r\n o: options\r\n };\r\n let hydrate;\r\n let hydrateNode;\r\n if (createHydrationFns) {\r\n [hydrate, hydrateNode] = createHydrationFns(internals);\r\n }\r\n return {\r\n render,\r\n hydrate,\r\n createApp: createAppAPI(render, hydrate)\r\n };\r\n}\r\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\r\n callWithAsyncErrorHandling(hook, instance, 7 /* VNODE_HOOK */, [\r\n vnode,\r\n prevVNode\r\n ]);\r\n}\r\n/**\r\n * #1156\r\n * When a component is HMR-enabled, we need to make sure that all static nodes\r\n * inside a block also inherit the DOM element from the previous tree so that\r\n * HMR updates (which are full updates) can retrieve the element for patching.\r\n *\r\n * #2080\r\n * Inside keyed `template` fragment static children, if a fragment is moved,\r\n * the children will always moved so that need inherit el form previous nodes\r\n * to ensure correct moved position.\r\n */\r\nfunction traverseStaticChildren(n1, n2, shallow = false) {\r\n const ch1 = n1.children;\r\n const ch2 = n2.children;\r\n if (isArray(ch1) && isArray(ch2)) {\r\n for (let i = 0; i < ch1.length; i++) {\r\n // this is only called in the optimized path so array children are\r\n // guaranteed to be vnodes\r\n const c1 = ch1[i];\r\n let c2 = ch2[i];\r\n if (c2.shapeFlag & 1 /* ELEMENT */ && !c2.dynamicChildren) {\r\n if (c2.patchFlag <= 0 || c2.patchFlag === 32 /* HYDRATE_EVENTS */) {\r\n c2 = ch2[i] = cloneIfMounted(ch2[i]);\r\n c2.el = c1.el;\r\n }\r\n if (!shallow)\r\n traverseStaticChildren(c1, c2);\r\n }\r\n // also inherit for comment nodes, but not placeholders (e.g. v-if which\r\n // would have received .el during block patch)\r\n if ((process.env.NODE_ENV !== 'production') && c2.type === Comment && !c2.el) {\r\n c2.el = c1.el;\r\n }\r\n }\r\n }\r\n}\r\n// https://en.wikipedia.org/wiki/Longest_increasing_subsequence\r\nfunction getSequence(arr) {\r\n const p = arr.slice();\r\n const result = [0];\r\n let i, j, u, v, c;\r\n const len = arr.length;\r\n for (i = 0; i < len; i++) {\r\n const arrI = arr[i];\r\n if (arrI !== 0) {\r\n j = result[result.length - 1];\r\n if (arr[j] < arrI) {\r\n p[i] = j;\r\n result.push(i);\r\n continue;\r\n }\r\n u = 0;\r\n v = result.length - 1;\r\n while (u < v) {\r\n c = ((u + v) / 2) | 0;\r\n if (arr[result[c]] < arrI) {\r\n u = c + 1;\r\n }\r\n else {\r\n v = c;\r\n }\r\n }\r\n if (arrI < arr[result[u]]) {\r\n if (u > 0) {\r\n p[i] = result[u - 1];\r\n }\r\n result[u] = i;\r\n }\r\n }\r\n }\r\n u = result.length;\r\n v = result[u - 1];\r\n while (u-- > 0) {\r\n result[u] = v;\r\n v = p[v];\r\n }\r\n return result;\r\n}\n\nconst isTeleport = (type) => type.__isTeleport;\r\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === '');\r\nconst isTargetSVG = (target) => typeof SVGElement !== 'undefined' && target instanceof SVGElement;\r\nconst resolveTarget = (props, select) => {\r\n const targetSelector = props && props.to;\r\n if (isString(targetSelector)) {\r\n if (!select) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Current renderer does not support string target for Teleports. ` +\r\n `(missing querySelector renderer option)`);\r\n return null;\r\n }\r\n else {\r\n const target = select(targetSelector);\r\n if (!target) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Failed to locate Teleport target with selector \"${targetSelector}\". ` +\r\n `Note the target element must exist before the component is mounted - ` +\r\n `i.e. the target cannot be rendered by the component itself, and ` +\r\n `ideally should be outside of the entire Vue component tree.`);\r\n }\r\n return target;\r\n }\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production') && !targetSelector && !isTeleportDisabled(props)) {\r\n warn(`Invalid Teleport target: ${targetSelector}`);\r\n }\r\n return targetSelector;\r\n }\r\n};\r\nconst TeleportImpl = {\r\n __isTeleport: true,\r\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized, internals) {\r\n const { mc: mountChildren, pc: patchChildren, pbc: patchBlockChildren, o: { insert, querySelector, createText, createComment } } = internals;\r\n const disabled = isTeleportDisabled(n2.props);\r\n const { shapeFlag, children } = n2;\r\n if (n1 == null) {\r\n // insert anchors in the main view\r\n const placeholder = (n2.el = (process.env.NODE_ENV !== 'production')\r\n ? createComment('teleport start')\r\n : createText(''));\r\n const mainAnchor = (n2.anchor = (process.env.NODE_ENV !== 'production')\r\n ? createComment('teleport end')\r\n : createText(''));\r\n insert(placeholder, container, anchor);\r\n insert(mainAnchor, container, anchor);\r\n const target = (n2.target = resolveTarget(n2.props, querySelector));\r\n const targetAnchor = (n2.targetAnchor = createText(''));\r\n if (target) {\r\n insert(targetAnchor, target);\r\n // #2652 we could be teleporting from a non-SVG tree into an SVG tree\r\n isSVG = isSVG || isTargetSVG(target);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production') && !disabled) {\r\n warn('Invalid Teleport target on mount:', target, `(${typeof target})`);\r\n }\r\n const mount = (container, anchor) => {\r\n // Teleport *always* has Array children. This is enforced in both the\r\n // compiler and vnode children normalization.\r\n if (shapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n mountChildren(children, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n };\r\n if (disabled) {\r\n mount(container, mainAnchor);\r\n }\r\n else if (target) {\r\n mount(target, targetAnchor);\r\n }\r\n }\r\n else {\r\n // update content\r\n n2.el = n1.el;\r\n const mainAnchor = (n2.anchor = n1.anchor);\r\n const target = (n2.target = n1.target);\r\n const targetAnchor = (n2.targetAnchor = n1.targetAnchor);\r\n const wasDisabled = isTeleportDisabled(n1.props);\r\n const currentContainer = wasDisabled ? container : target;\r\n const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\r\n isSVG = isSVG || isTargetSVG(target);\r\n if (n2.dynamicChildren) {\r\n // fast path when the teleport happens to be a block root\r\n patchBlockChildren(n1.dynamicChildren, n2.dynamicChildren, currentContainer, parentComponent, parentSuspense, isSVG);\r\n // even in block tree mode we need to make sure all root-level nodes\r\n // in the teleport inherit previous DOM references so that they can\r\n // be moved in future patches.\r\n traverseStaticChildren(n1, n2, true);\r\n }\r\n else if (!optimized) {\r\n patchChildren(n1, n2, currentContainer, currentAnchor, parentComponent, parentSuspense, isSVG);\r\n }\r\n if (disabled) {\r\n if (!wasDisabled) {\r\n // enabled -> disabled\r\n // move into main container\r\n moveTeleport(n2, container, mainAnchor, internals, 1 /* TOGGLE */);\r\n }\r\n }\r\n else {\r\n // target changed\r\n if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\r\n const nextTarget = (n2.target = resolveTarget(n2.props, querySelector));\r\n if (nextTarget) {\r\n moveTeleport(n2, nextTarget, null, internals, 0 /* TARGET_CHANGE */);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Invalid Teleport target on update:', target, `(${typeof target})`);\r\n }\r\n }\r\n else if (wasDisabled) {\r\n // disabled -> enabled\r\n // move into teleport target\r\n moveTeleport(n2, target, targetAnchor, internals, 1 /* TOGGLE */);\r\n }\r\n }\r\n }\r\n },\r\n remove(vnode, { r: remove, o: { remove: hostRemove } }) {\r\n const { shapeFlag, children, anchor } = vnode;\r\n hostRemove(anchor);\r\n if (shapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n for (let i = 0; i < children.length; i++) {\r\n remove(children[i]);\r\n }\r\n }\r\n },\r\n move: moveTeleport,\r\n hydrate: hydrateTeleport\r\n};\r\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2 /* REORDER */) {\r\n // move target anchor if this is a target change.\r\n if (moveType === 0 /* TARGET_CHANGE */) {\r\n insert(vnode.targetAnchor, container, parentAnchor);\r\n }\r\n const { el, anchor, shapeFlag, children, props } = vnode;\r\n const isReorder = moveType === 2 /* REORDER */;\r\n // move main view anchor if this is a re-order.\r\n if (isReorder) {\r\n insert(el, container, parentAnchor);\r\n }\r\n // if this is a re-order and teleport is enabled (content is in target)\r\n // do not move children. So the opposite is: only move children if this\r\n // is not a reorder, or the teleport is disabled\r\n if (!isReorder || isTeleportDisabled(props)) {\r\n // Teleport has either Array children or no children.\r\n if (shapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n for (let i = 0; i < children.length; i++) {\r\n move(children[i], container, parentAnchor, 2 /* REORDER */);\r\n }\r\n }\r\n }\r\n // move main view anchor if this is a re-order.\r\n if (isReorder) {\r\n insert(anchor, container, parentAnchor);\r\n }\r\n}\r\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, optimized, { o: { nextSibling, parentNode, querySelector } }, hydrateChildren) {\r\n const target = (vnode.target = resolveTarget(vnode.props, querySelector));\r\n if (target) {\r\n // if multiple teleports rendered to the same target element, we need to\r\n // pick up from where the last teleport finished instead of the first node\r\n const targetNode = target._lpa || target.firstChild;\r\n if (vnode.shapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n if (isTeleportDisabled(vnode.props)) {\r\n vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, optimized);\r\n vnode.targetAnchor = targetNode;\r\n }\r\n else {\r\n vnode.anchor = nextSibling(node);\r\n vnode.targetAnchor = hydrateChildren(targetNode, vnode, target, parentComponent, parentSuspense, optimized);\r\n }\r\n target._lpa =\r\n vnode.targetAnchor && nextSibling(vnode.targetAnchor);\r\n }\r\n }\r\n return vnode.anchor && nextSibling(vnode.anchor);\r\n}\r\n// Force-casted public typing for h and TSX props inference\r\nconst Teleport = TeleportImpl;\n\nconst COMPONENTS = 'components';\r\nconst DIRECTIVES = 'directives';\r\n/**\r\n * @private\r\n */\r\nfunction resolveComponent(name) {\r\n return resolveAsset(COMPONENTS, name) || name;\r\n}\r\nconst NULL_DYNAMIC_COMPONENT = Symbol();\r\n/**\r\n * @private\r\n */\r\nfunction resolveDynamicComponent(component) {\r\n if (isString(component)) {\r\n return resolveAsset(COMPONENTS, component, false) || component;\r\n }\r\n else {\r\n // invalid types will fallthrough to createVNode and raise warning\r\n return (component || NULL_DYNAMIC_COMPONENT);\r\n }\r\n}\r\n/**\r\n * @private\r\n */\r\nfunction resolveDirective(name) {\r\n return resolveAsset(DIRECTIVES, name);\r\n}\r\n// implementation\r\nfunction resolveAsset(type, name, warnMissing = true) {\r\n const instance = currentRenderingInstance || currentInstance;\r\n if (instance) {\r\n const Component = instance.type;\r\n // self name has highest priority\r\n if (type === COMPONENTS) {\r\n // special self referencing call generated by compiler\r\n // inferred from SFC filename\r\n if (name === `_self`) {\r\n return Component;\r\n }\r\n const selfName = getComponentName(Component);\r\n if (selfName &&\r\n (selfName === name ||\r\n selfName === camelize(name) ||\r\n selfName === capitalize(camelize(name)))) {\r\n return Component;\r\n }\r\n }\r\n const res = \r\n // local registration\r\n // check instance[type] first for components with mixin or extends.\r\n resolve(instance[type] || Component[type], name) ||\r\n // global registration\r\n resolve(instance.appContext[type], name);\r\n if ((process.env.NODE_ENV !== 'production') && warnMissing && !res) {\r\n warn(`Failed to resolve ${type.slice(0, -1)}: ${name}`);\r\n }\r\n return res;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`resolve${capitalize(type.slice(0, -1))} ` +\r\n `can only be used in render() or setup().`);\r\n }\r\n}\r\nfunction resolve(registry, name) {\r\n return (registry &&\r\n (registry[name] ||\r\n registry[camelize(name)] ||\r\n registry[capitalize(camelize(name))]));\r\n}\n\nconst Fragment = Symbol((process.env.NODE_ENV !== 'production') ? 'Fragment' : undefined);\r\nconst Text = Symbol((process.env.NODE_ENV !== 'production') ? 'Text' : undefined);\r\nconst Comment = Symbol((process.env.NODE_ENV !== 'production') ? 'Comment' : undefined);\r\nconst Static = Symbol((process.env.NODE_ENV !== 'production') ? 'Static' : undefined);\r\n// Since v-if and v-for are the two possible ways node structure can dynamically\r\n// change, once we consider v-if branches and each v-for fragment a block, we\r\n// can divide a template into nested blocks, and within each block the node\r\n// structure would be stable. This allows us to skip most children diffing\r\n// and only worry about the dynamic nodes (indicated by patch flags).\r\nconst blockStack = [];\r\nlet currentBlock = null;\r\n/**\r\n * Open a block.\r\n * This must be called before `createBlock`. It cannot be part of `createBlock`\r\n * because the children of the block are evaluated before `createBlock` itself\r\n * is called. The generated code typically looks like this:\r\n *\r\n * ```js\r\n * function render() {\r\n * return (openBlock(),createBlock('div', null, [...]))\r\n * }\r\n * ```\r\n * disableTracking is true when creating a v-for fragment block, since a v-for\r\n * fragment always diffs its children.\r\n *\r\n * @private\r\n */\r\nfunction openBlock(disableTracking = false) {\r\n blockStack.push((currentBlock = disableTracking ? null : []));\r\n}\r\nfunction closeBlock() {\r\n blockStack.pop();\r\n currentBlock = blockStack[blockStack.length - 1] || null;\r\n}\r\n// Whether we should be tracking dynamic child nodes inside a block.\r\n// Only tracks when this value is > 0\r\n// We are not using a simple boolean because this value may need to be\r\n// incremented/decremented by nested usage of v-once (see below)\r\nlet shouldTrack = 1;\r\n/**\r\n * Block tracking sometimes needs to be disabled, for example during the\r\n * creation of a tree that needs to be cached by v-once. The compiler generates\r\n * code like this:\r\n *\r\n * ``` js\r\n * _cache[1] || (\r\n * setBlockTracking(-1),\r\n * _cache[1] = createVNode(...),\r\n * setBlockTracking(1),\r\n * _cache[1]\r\n * )\r\n * ```\r\n *\r\n * @private\r\n */\r\nfunction setBlockTracking(value) {\r\n shouldTrack += value;\r\n}\r\n/**\r\n * Create a block root vnode. Takes the same exact arguments as `createVNode`.\r\n * A block root keeps track of dynamic nodes within the block in the\r\n * `dynamicChildren` array.\r\n *\r\n * @private\r\n */\r\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\r\n const vnode = createVNode(type, props, children, patchFlag, dynamicProps, true /* isBlock: prevent a block from tracking itself */);\r\n // save current block children on the block vnode\r\n vnode.dynamicChildren = currentBlock || EMPTY_ARR;\r\n // close block\r\n closeBlock();\r\n // a block is always going to be patched, so track it as a child of its\r\n // parent block\r\n if (shouldTrack > 0 && currentBlock) {\r\n currentBlock.push(vnode);\r\n }\r\n return vnode;\r\n}\r\nfunction isVNode(value) {\r\n return value ? value.__v_isVNode === true : false;\r\n}\r\nfunction isSameVNodeType(n1, n2) {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n n2.shapeFlag & 6 /* COMPONENT */ &&\r\n hmrDirtyComponents.has(n2.type)) {\r\n // HMR only: if the component has been hot-updated, force a reload.\r\n return false;\r\n }\r\n return n1.type === n2.type && n1.key === n2.key;\r\n}\r\nlet vnodeArgsTransformer;\r\n/**\r\n * Internal API for registering an arguments transform for createVNode\r\n * used for creating stubs in the test-utils\r\n * It is *internal* but needs to be exposed for test-utils to pick up proper\r\n * typings\r\n */\r\nfunction transformVNodeArgs(transformer) {\r\n vnodeArgsTransformer = transformer;\r\n}\r\nconst createVNodeWithArgsTransform = (...args) => {\r\n return _createVNode(...(vnodeArgsTransformer\r\n ? vnodeArgsTransformer(args, currentRenderingInstance)\r\n : args));\r\n};\r\nconst InternalObjectKey = `__vInternal`;\r\nconst normalizeKey = ({ key }) => key != null ? key : null;\r\nconst normalizeRef = ({ ref }) => {\r\n return (ref != null\r\n ? isString(ref) || isRef(ref) || isFunction(ref)\r\n ? { i: currentRenderingInstance, r: ref }\r\n : ref\r\n : null);\r\n};\r\nconst createVNode = ((process.env.NODE_ENV !== 'production')\r\n ? createVNodeWithArgsTransform\r\n : _createVNode);\r\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\r\n if (!type || type === NULL_DYNAMIC_COMPONENT) {\r\n if ((process.env.NODE_ENV !== 'production') && !type) {\r\n warn(`Invalid vnode type when creating vnode: ${type}.`);\r\n }\r\n type = Comment;\r\n }\r\n if (isVNode(type)) {\r\n // createVNode receiving an existing vnode. This happens in cases like\r\n // <component :is=\"vnode\"/>\r\n // #2078 make sure to merge refs during the clone instead of overwriting it\r\n const cloned = cloneVNode(type, props, true /* mergeRef: true */);\r\n if (children) {\r\n normalizeChildren(cloned, children);\r\n }\r\n return cloned;\r\n }\r\n // class component normalization.\r\n if (isClassComponent(type)) {\r\n type = type.__vccOpts;\r\n }\r\n // class & style normalization.\r\n if (props) {\r\n // for reactive or proxy objects, we need to clone it to enable mutation.\r\n if (isProxy(props) || InternalObjectKey in props) {\r\n props = extend({}, props);\r\n }\r\n let { class: klass, style } = props;\r\n if (klass && !isString(klass)) {\r\n props.class = normalizeClass(klass);\r\n }\r\n if (isObject(style)) {\r\n // reactive state objects need to be cloned since they are likely to be\r\n // mutated\r\n if (isProxy(style) && !isArray(style)) {\r\n style = extend({}, style);\r\n }\r\n props.style = normalizeStyle(style);\r\n }\r\n }\r\n // encode the vnode type information into a bitmap\r\n const shapeFlag = isString(type)\r\n ? 1 /* ELEMENT */\r\n : isSuspense(type)\r\n ? 128 /* SUSPENSE */\r\n : isTeleport(type)\r\n ? 64 /* TELEPORT */\r\n : isObject(type)\r\n ? 4 /* STATEFUL_COMPONENT */\r\n : isFunction(type)\r\n ? 2 /* FUNCTIONAL_COMPONENT */\r\n : 0;\r\n if ((process.env.NODE_ENV !== 'production') && shapeFlag & 4 /* STATEFUL_COMPONENT */ && isProxy(type)) {\r\n type = toRaw(type);\r\n warn(`Vue received a Component which was made a reactive object. This can ` +\r\n `lead to unnecessary performance overhead, and should be avoided by ` +\r\n `marking the component with \\`markRaw\\` or using \\`shallowRef\\` ` +\r\n `instead of \\`ref\\`.`, `\\nComponent that was made reactive: `, type);\r\n }\r\n const vnode = {\r\n __v_isVNode: true,\r\n [\"__v_skip\" /* SKIP */]: true,\r\n type,\r\n props,\r\n key: props && normalizeKey(props),\r\n ref: props && normalizeRef(props),\r\n scopeId: currentScopeId,\r\n children: null,\r\n component: null,\r\n suspense: null,\r\n ssContent: null,\r\n ssFallback: null,\r\n dirs: null,\r\n transition: null,\r\n el: null,\r\n anchor: null,\r\n target: null,\r\n targetAnchor: null,\r\n staticCount: 0,\r\n shapeFlag,\r\n patchFlag,\r\n dynamicProps,\r\n dynamicChildren: null,\r\n appContext: null\r\n };\r\n // validate key\r\n if ((process.env.NODE_ENV !== 'production') && vnode.key !== vnode.key) {\r\n warn(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\r\n }\r\n normalizeChildren(vnode, children);\r\n // normalize suspense children\r\n if ( shapeFlag & 128 /* SUSPENSE */) {\r\n const { content, fallback } = normalizeSuspenseChildren(vnode);\r\n vnode.ssContent = content;\r\n vnode.ssFallback = fallback;\r\n }\r\n if (shouldTrack > 0 &&\r\n // avoid a block node from tracking itself\r\n !isBlockNode &&\r\n // has current parent block\r\n currentBlock &&\r\n // presence of a patch flag indicates this node needs patching on updates.\r\n // component nodes also should always be patched, because even if the\r\n // component doesn't need to update, it needs to persist the instance on to\r\n // the next vnode so that it can be properly unmounted later.\r\n (patchFlag > 0 || shapeFlag & 6 /* COMPONENT */) &&\r\n // the EVENTS flag is only for hydration and if it is the only flag, the\r\n // vnode should not be considered dynamic due to handler caching.\r\n patchFlag !== 32 /* HYDRATE_EVENTS */) {\r\n currentBlock.push(vnode);\r\n }\r\n return vnode;\r\n}\r\nfunction cloneVNode(vnode, extraProps, mergeRef = false) {\r\n // This is intentionally NOT using spread or extend to avoid the runtime\r\n // key enumeration cost.\r\n const { props, ref, patchFlag } = vnode;\r\n const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\r\n return {\r\n __v_isVNode: true,\r\n [\"__v_skip\" /* SKIP */]: true,\r\n type: vnode.type,\r\n props: mergedProps,\r\n key: mergedProps && normalizeKey(mergedProps),\r\n ref: extraProps && extraProps.ref\r\n ? // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\r\n // if the vnode itself already has a ref, cloneVNode will need to merge\r\n // the refs so the single vnode can be set on multiple refs\r\n mergeRef && ref\r\n ? isArray(ref)\r\n ? ref.concat(normalizeRef(extraProps))\r\n : [ref, normalizeRef(extraProps)]\r\n : normalizeRef(extraProps)\r\n : ref,\r\n scopeId: vnode.scopeId,\r\n children: vnode.children,\r\n target: vnode.target,\r\n targetAnchor: vnode.targetAnchor,\r\n staticCount: vnode.staticCount,\r\n shapeFlag: vnode.shapeFlag,\r\n // if the vnode is cloned with extra props, we can no longer assume its\r\n // existing patch flag to be reliable and need to add the FULL_PROPS flag.\r\n // note: perserve flag for fragments since they use the flag for children\r\n // fast paths only.\r\n patchFlag: extraProps && vnode.type !== Fragment\r\n ? patchFlag === -1 // hoisted node\r\n ? 16 /* FULL_PROPS */\r\n : patchFlag | 16 /* FULL_PROPS */\r\n : patchFlag,\r\n dynamicProps: vnode.dynamicProps,\r\n dynamicChildren: vnode.dynamicChildren,\r\n appContext: vnode.appContext,\r\n dirs: vnode.dirs,\r\n transition: vnode.transition,\r\n // These should technically only be non-null on mounted VNodes. However,\r\n // they *should* be copied for kept-alive vnodes. So we just always copy\r\n // them since them being non-null during a mount doesn't affect the logic as\r\n // they will simply be overwritten.\r\n component: vnode.component,\r\n suspense: vnode.suspense,\r\n ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\r\n ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\r\n el: vnode.el,\r\n anchor: vnode.anchor\r\n };\r\n}\r\n/**\r\n * @private\r\n */\r\nfunction createTextVNode(text = ' ', flag = 0) {\r\n return createVNode(Text, null, text, flag);\r\n}\r\n/**\r\n * @private\r\n */\r\nfunction createStaticVNode(content, numberOfNodes) {\r\n // A static vnode can contain multiple stringified elements, and the number\r\n // of elements is necessary for hydration.\r\n const vnode = createVNode(Static, null, content);\r\n vnode.staticCount = numberOfNodes;\r\n return vnode;\r\n}\r\n/**\r\n * @private\r\n */\r\nfunction createCommentVNode(text = '', \r\n// when used as the v-else branch, the comment node must be created as a\r\n// block to ensure correct updates.\r\nasBlock = false) {\r\n return asBlock\r\n ? (openBlock(), createBlock(Comment, null, text))\r\n : createVNode(Comment, null, text);\r\n}\r\nfunction normalizeVNode(child) {\r\n if (child == null || typeof child === 'boolean') {\r\n // empty placeholder\r\n return createVNode(Comment);\r\n }\r\n else if (isArray(child)) {\r\n // fragment\r\n return createVNode(Fragment, null, child);\r\n }\r\n else if (typeof child === 'object') {\r\n // already vnode, this should be the most common since compiled templates\r\n // always produce all-vnode children arrays\r\n return child.el === null ? child : cloneVNode(child);\r\n }\r\n else {\r\n // strings and numbers\r\n return createVNode(Text, null, String(child));\r\n }\r\n}\r\n// optimized normalization for template-compiled render fns\r\nfunction cloneIfMounted(child) {\r\n return child.el === null ? child : cloneVNode(child);\r\n}\r\nfunction normalizeChildren(vnode, children) {\r\n let type = 0;\r\n const { shapeFlag } = vnode;\r\n if (children == null) {\r\n children = null;\r\n }\r\n else if (isArray(children)) {\r\n type = 16 /* ARRAY_CHILDREN */;\r\n }\r\n else if (typeof children === 'object') {\r\n if (shapeFlag & 1 /* ELEMENT */ || shapeFlag & 64 /* TELEPORT */) {\r\n // Normalize slot to plain children for plain element and Teleport\r\n const slot = children.default;\r\n if (slot) {\r\n // _c marker is added by withCtx() indicating this is a compiled slot\r\n slot._c && setCompiledSlotRendering(1);\r\n normalizeChildren(vnode, slot());\r\n slot._c && setCompiledSlotRendering(-1);\r\n }\r\n return;\r\n }\r\n else {\r\n type = 32 /* SLOTS_CHILDREN */;\r\n const slotFlag = children._;\r\n if (!slotFlag && !(InternalObjectKey in children)) {\r\n children._ctx = currentRenderingInstance;\r\n }\r\n else if (slotFlag === 3 /* FORWARDED */ && currentRenderingInstance) {\r\n // a child component receives forwarded slots from the parent.\r\n // its slot type is determined by its parent's slot type.\r\n if (currentRenderingInstance.vnode.patchFlag & 1024 /* DYNAMIC_SLOTS */) {\r\n children._ = 2 /* DYNAMIC */;\r\n vnode.patchFlag |= 1024 /* DYNAMIC_SLOTS */;\r\n }\r\n else {\r\n children._ = 1 /* STABLE */;\r\n }\r\n }\r\n }\r\n }\r\n else if (isFunction(children)) {\r\n children = { default: children, _ctx: currentRenderingInstance };\r\n type = 32 /* SLOTS_CHILDREN */;\r\n }\r\n else {\r\n children = String(children);\r\n // force teleport children to array so it can be moved around\r\n if (shapeFlag & 64 /* TELEPORT */) {\r\n type = 16 /* ARRAY_CHILDREN */;\r\n children = [createTextVNode(children)];\r\n }\r\n else {\r\n type = 8 /* TEXT_CHILDREN */;\r\n }\r\n }\r\n vnode.children = children;\r\n vnode.shapeFlag |= type;\r\n}\r\nfunction mergeProps(...args) {\r\n const ret = extend({}, args[0]);\r\n for (let i = 1; i < args.length; i++) {\r\n const toMerge = args[i];\r\n for (const key in toMerge) {\r\n if (key === 'class') {\r\n if (ret.class !== toMerge.class) {\r\n ret.class = normalizeClass([ret.class, toMerge.class]);\r\n }\r\n }\r\n else if (key === 'style') {\r\n ret.style = normalizeStyle([ret.style, toMerge.style]);\r\n }\r\n else if (isOn(key)) {\r\n const existing = ret[key];\r\n const incoming = toMerge[key];\r\n if (existing !== incoming) {\r\n ret[key] = existing\r\n ? [].concat(existing, toMerge[key])\r\n : incoming;\r\n }\r\n }\r\n else if (key !== '') {\r\n ret[key] = toMerge[key];\r\n }\r\n }\r\n }\r\n return ret;\r\n}\n\nfunction provide(key, value) {\r\n if (!currentInstance) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`provide() can only be used inside setup().`);\r\n }\r\n }\r\n else {\r\n let provides = currentInstance.provides;\r\n // by default an instance inherits its parent's provides object\r\n // but when it needs to provide values of its own, it creates its\r\n // own provides object using parent provides object as prototype.\r\n // this way in `inject` we can simply look up injections from direct\r\n // parent and let the prototype chain do the work.\r\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\r\n if (parentProvides === provides) {\r\n provides = currentInstance.provides = Object.create(parentProvides);\r\n }\r\n // TS doesn't allow symbol as index type\r\n provides[key] = value;\r\n }\r\n}\r\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\r\n // fallback to `currentRenderingInstance` so that this can be called in\r\n // a functional component\r\n const instance = currentInstance || currentRenderingInstance;\r\n if (instance) {\r\n // #2400\r\n // to support `app.use` plugins,\r\n // fallback to appContext's `provides` if the intance is at root\r\n const provides = instance.parent == null\r\n ? instance.vnode.appContext && instance.vnode.appContext.provides\r\n : instance.parent.provides;\r\n if (provides && key in provides) {\r\n // TS doesn't allow symbol as index type\r\n return provides[key];\r\n }\r\n else if (arguments.length > 1) {\r\n return treatDefaultAsFactory && isFunction(defaultValue)\r\n ? defaultValue()\r\n : defaultValue;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`injection \"${String(key)}\" not found.`);\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`inject() can only be used inside setup() or functional components.`);\r\n }\r\n}\n\nfunction createDuplicateChecker() {\r\n const cache = Object.create(null);\r\n return (type, key) => {\r\n if (cache[key]) {\r\n warn(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\r\n }\r\n else {\r\n cache[key] = type;\r\n }\r\n };\r\n}\r\nlet isInBeforeCreate = false;\r\nfunction applyOptions(instance, options, deferredData = [], deferredWatch = [], deferredProvide = [], asMixin = false) {\r\n const { \r\n // composition\r\n mixins, extends: extendsOptions, \r\n // state\r\n data: dataOptions, computed: computedOptions, methods, watch: watchOptions, provide: provideOptions, inject: injectOptions, \r\n // assets\r\n components, directives, \r\n // lifecycle\r\n beforeMount, mounted, beforeUpdate, updated, activated, deactivated, beforeDestroy, beforeUnmount, destroyed, unmounted, render, renderTracked, renderTriggered, errorCaptured, \r\n // public API\r\n expose } = options;\r\n const publicThis = instance.proxy;\r\n const ctx = instance.ctx;\r\n const globalMixins = instance.appContext.mixins;\r\n if (asMixin && render && instance.render === NOOP) {\r\n instance.render = render;\r\n }\r\n // applyOptions is called non-as-mixin once per instance\r\n if (!asMixin) {\r\n isInBeforeCreate = true;\r\n callSyncHook('beforeCreate', \"bc\" /* BEFORE_CREATE */, options, instance, globalMixins);\r\n isInBeforeCreate = false;\r\n // global mixins are applied first\r\n applyMixins(instance, globalMixins, deferredData, deferredWatch, deferredProvide);\r\n }\r\n // extending a base component...\r\n if (extendsOptions) {\r\n applyOptions(instance, extendsOptions, deferredData, deferredWatch, deferredProvide, true);\r\n }\r\n // local mixins\r\n if (mixins) {\r\n applyMixins(instance, mixins, deferredData, deferredWatch, deferredProvide);\r\n }\r\n const checkDuplicateProperties = (process.env.NODE_ENV !== 'production') ? createDuplicateChecker() : null;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const [propsOptions] = instance.propsOptions;\r\n if (propsOptions) {\r\n for (const key in propsOptions) {\r\n checkDuplicateProperties(\"Props\" /* PROPS */, key);\r\n }\r\n }\r\n }\r\n // options initialization order (to be consistent with Vue 2):\r\n // - props (already done outside of this function)\r\n // - inject\r\n // - methods\r\n // - data (deferred since it relies on `this` access)\r\n // - computed\r\n // - watch (deferred since it relies on `this` access)\r\n if (injectOptions) {\r\n if (isArray(injectOptions)) {\r\n for (let i = 0; i < injectOptions.length; i++) {\r\n const key = injectOptions[i];\r\n ctx[key] = inject(key);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkDuplicateProperties(\"Inject\" /* INJECT */, key);\r\n }\r\n }\r\n }\r\n else {\r\n for (const key in injectOptions) {\r\n const opt = injectOptions[key];\r\n if (isObject(opt)) {\r\n ctx[key] = inject(opt.from || key, opt.default, true /* treat default function as factory */);\r\n }\r\n else {\r\n ctx[key] = inject(opt);\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkDuplicateProperties(\"Inject\" /* INJECT */, key);\r\n }\r\n }\r\n }\r\n }\r\n if (methods) {\r\n for (const key in methods) {\r\n const methodHandler = methods[key];\r\n if (isFunction(methodHandler)) {\r\n ctx[key] = methodHandler.bind(publicThis);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkDuplicateProperties(\"Methods\" /* METHODS */, key);\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. ` +\r\n `Did you reference the function correctly?`);\r\n }\r\n }\r\n }\r\n if (!asMixin) {\r\n if (deferredData.length) {\r\n deferredData.forEach(dataFn => resolveData(instance, dataFn, publicThis));\r\n }\r\n if (dataOptions) {\r\n // @ts-ignore dataOptions is not fully type safe\r\n resolveData(instance, dataOptions, publicThis);\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const rawData = toRaw(instance.data);\r\n for (const key in rawData) {\r\n checkDuplicateProperties(\"Data\" /* DATA */, key);\r\n // expose data on ctx during dev\r\n if (key[0] !== '$' && key[0] !== '_') {\r\n Object.defineProperty(ctx, key, {\r\n configurable: true,\r\n enumerable: true,\r\n get: () => rawData[key],\r\n set: NOOP\r\n });\r\n }\r\n }\r\n }\r\n }\r\n else if (dataOptions) {\r\n deferredData.push(dataOptions);\r\n }\r\n if (computedOptions) {\r\n for (const key in computedOptions) {\r\n const opt = computedOptions[key];\r\n const get = isFunction(opt)\r\n ? opt.bind(publicThis, publicThis)\r\n : isFunction(opt.get)\r\n ? opt.get.bind(publicThis, publicThis)\r\n : NOOP;\r\n if ((process.env.NODE_ENV !== 'production') && get === NOOP) {\r\n warn(`Computed property \"${key}\" has no getter.`);\r\n }\r\n const set = !isFunction(opt) && isFunction(opt.set)\r\n ? opt.set.bind(publicThis)\r\n : (process.env.NODE_ENV !== 'production')\r\n ? () => {\r\n warn(`Write operation failed: computed property \"${key}\" is readonly.`);\r\n }\r\n : NOOP;\r\n const c = computed({\r\n get,\r\n set\r\n });\r\n Object.defineProperty(ctx, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: () => c.value,\r\n set: v => (c.value = v)\r\n });\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkDuplicateProperties(\"Computed\" /* COMPUTED */, key);\r\n }\r\n }\r\n }\r\n if (watchOptions) {\r\n deferredWatch.push(watchOptions);\r\n }\r\n if (!asMixin && deferredWatch.length) {\r\n deferredWatch.forEach(watchOptions => {\r\n for (const key in watchOptions) {\r\n createWatcher(watchOptions[key], ctx, publicThis, key);\r\n }\r\n });\r\n }\r\n if (provideOptions) {\r\n deferredProvide.push(provideOptions);\r\n }\r\n if (!asMixin && deferredProvide.length) {\r\n deferredProvide.forEach(provideOptions => {\r\n const provides = isFunction(provideOptions)\r\n ? provideOptions.call(publicThis)\r\n : provideOptions;\r\n Reflect.ownKeys(provides).forEach(key => {\r\n provide(key, provides[key]);\r\n });\r\n });\r\n }\r\n // asset options.\r\n // To reduce memory usage, only components with mixins or extends will have\r\n // resolved asset registry attached to instance.\r\n if (asMixin) {\r\n if (components) {\r\n extend(instance.components ||\r\n (instance.components = extend({}, instance.type.components)), components);\r\n }\r\n if (directives) {\r\n extend(instance.directives ||\r\n (instance.directives = extend({}, instance.type.directives)), directives);\r\n }\r\n }\r\n // lifecycle options\r\n if (!asMixin) {\r\n callSyncHook('created', \"c\" /* CREATED */, options, instance, globalMixins);\r\n }\r\n if (beforeMount) {\r\n onBeforeMount(beforeMount.bind(publicThis));\r\n }\r\n if (mounted) {\r\n onMounted(mounted.bind(publicThis));\r\n }\r\n if (beforeUpdate) {\r\n onBeforeUpdate(beforeUpdate.bind(publicThis));\r\n }\r\n if (updated) {\r\n onUpdated(updated.bind(publicThis));\r\n }\r\n if (activated) {\r\n onActivated(activated.bind(publicThis));\r\n }\r\n if (deactivated) {\r\n onDeactivated(deactivated.bind(publicThis));\r\n }\r\n if (errorCaptured) {\r\n onErrorCaptured(errorCaptured.bind(publicThis));\r\n }\r\n if (renderTracked) {\r\n onRenderTracked(renderTracked.bind(publicThis));\r\n }\r\n if (renderTriggered) {\r\n onRenderTriggered(renderTriggered.bind(publicThis));\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && beforeDestroy) {\r\n warn(`\\`beforeDestroy\\` has been renamed to \\`beforeUnmount\\`.`);\r\n }\r\n if (beforeUnmount) {\r\n onBeforeUnmount(beforeUnmount.bind(publicThis));\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && destroyed) {\r\n warn(`\\`destroyed\\` has been renamed to \\`unmounted\\`.`);\r\n }\r\n if (unmounted) {\r\n onUnmounted(unmounted.bind(publicThis));\r\n }\r\n if (isArray(expose)) {\r\n if (!asMixin) {\r\n if (expose.length) {\r\n const exposed = instance.exposed || (instance.exposed = proxyRefs({}));\r\n expose.forEach(key => {\r\n exposed[key] = toRef(publicThis, key);\r\n });\r\n }\r\n else if (!instance.exposed) {\r\n instance.exposed = EMPTY_OBJ;\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`The \\`expose\\` option is ignored when used in mixins.`);\r\n }\r\n }\r\n}\r\nfunction callSyncHook(name, type, options, instance, globalMixins) {\r\n callHookFromMixins(name, type, globalMixins, instance);\r\n const { extends: base, mixins } = options;\r\n if (base) {\r\n callHookFromExtends(name, type, base, instance);\r\n }\r\n if (mixins) {\r\n callHookFromMixins(name, type, mixins, instance);\r\n }\r\n const selfHook = options[name];\r\n if (selfHook) {\r\n callWithAsyncErrorHandling(selfHook.bind(instance.proxy), instance, type);\r\n }\r\n}\r\nfunction callHookFromExtends(name, type, base, instance) {\r\n if (base.extends) {\r\n callHookFromExtends(name, type, base.extends, instance);\r\n }\r\n const baseHook = base[name];\r\n if (baseHook) {\r\n callWithAsyncErrorHandling(baseHook.bind(instance.proxy), instance, type);\r\n }\r\n}\r\nfunction callHookFromMixins(name, type, mixins, instance) {\r\n for (let i = 0; i < mixins.length; i++) {\r\n const chainedMixins = mixins[i].mixins;\r\n if (chainedMixins) {\r\n callHookFromMixins(name, type, chainedMixins, instance);\r\n }\r\n const fn = mixins[i][name];\r\n if (fn) {\r\n callWithAsyncErrorHandling(fn.bind(instance.proxy), instance, type);\r\n }\r\n }\r\n}\r\nfunction applyMixins(instance, mixins, deferredData, deferredWatch, deferredProvide) {\r\n for (let i = 0; i < mixins.length; i++) {\r\n applyOptions(instance, mixins[i], deferredData, deferredWatch, deferredProvide, true);\r\n }\r\n}\r\nfunction resolveData(instance, dataFn, publicThis) {\r\n if ((process.env.NODE_ENV !== 'production') && !isFunction(dataFn)) {\r\n warn(`The data option must be a function. ` +\r\n `Plain object usage is no longer supported.`);\r\n }\r\n const data = dataFn.call(publicThis, publicThis);\r\n if ((process.env.NODE_ENV !== 'production') && isPromise(data)) {\r\n warn(`data() returned a Promise - note data() cannot be async; If you ` +\r\n `intend to perform data fetching before component renders, use ` +\r\n `async setup() + <Suspense>.`);\r\n }\r\n if (!isObject(data)) {\r\n (process.env.NODE_ENV !== 'production') && warn(`data() should return an object.`);\r\n }\r\n else if (instance.data === EMPTY_OBJ) {\r\n instance.data = reactive(data);\r\n }\r\n else {\r\n // existing data: this is a mixin or extends.\r\n extend(instance.data, data);\r\n }\r\n}\r\nfunction createWatcher(raw, ctx, publicThis, key) {\r\n const getter = key.includes('.')\r\n ? createPathGetter(publicThis, key)\r\n : () => publicThis[key];\r\n if (isString(raw)) {\r\n const handler = ctx[raw];\r\n if (isFunction(handler)) {\r\n watch(getter, handler);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Invalid watch handler specified by key \"${raw}\"`, handler);\r\n }\r\n }\r\n else if (isFunction(raw)) {\r\n watch(getter, raw.bind(publicThis));\r\n }\r\n else if (isObject(raw)) {\r\n if (isArray(raw)) {\r\n raw.forEach(r => createWatcher(r, ctx, publicThis, key));\r\n }\r\n else {\r\n const handler = isFunction(raw.handler)\r\n ? raw.handler.bind(publicThis)\r\n : ctx[raw.handler];\r\n if (isFunction(handler)) {\r\n watch(getter, handler, raw);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\r\n }\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Invalid watch option: \"${key}\"`, raw);\r\n }\r\n}\r\nfunction createPathGetter(ctx, path) {\r\n const segments = path.split('.');\r\n return () => {\r\n let cur = ctx;\r\n for (let i = 0; i < segments.length && cur; i++) {\r\n cur = cur[segments[i]];\r\n }\r\n return cur;\r\n };\r\n}\r\nfunction resolveMergedOptions(instance) {\r\n const raw = instance.type;\r\n const { __merged, mixins, extends: extendsOptions } = raw;\r\n if (__merged)\r\n return __merged;\r\n const globalMixins = instance.appContext.mixins;\r\n if (!globalMixins.length && !mixins && !extendsOptions)\r\n return raw;\r\n const options = {};\r\n globalMixins.forEach(m => mergeOptions(options, m, instance));\r\n mergeOptions(options, raw, instance);\r\n return (raw.__merged = options);\r\n}\r\nfunction mergeOptions(to, from, instance) {\r\n const strats = instance.appContext.config.optionMergeStrategies;\r\n const { mixins, extends: extendsOptions } = from;\r\n extendsOptions && mergeOptions(to, extendsOptions, instance);\r\n mixins &&\r\n mixins.forEach((m) => mergeOptions(to, m, instance));\r\n for (const key in from) {\r\n if (strats && hasOwn(strats, key)) {\r\n to[key] = strats[key](to[key], from[key], instance.proxy, key);\r\n }\r\n else {\r\n to[key] = from[key];\r\n }\r\n }\r\n}\n\n/**\r\n * #2437 In Vue 3, functional components do not have a public instance proxy but\r\n * they exist in the internal parent chain. For code that relies on traversing\r\n * public $parent chains, skip functional ones and go to the parent instead.\r\n */\r\nconst getPublicInstance = (i) => i && (i.proxy ? i.proxy : getPublicInstance(i.parent));\r\nconst publicPropertiesMap = extend(Object.create(null), {\r\n $: i => i,\r\n $el: i => i.vnode.el,\r\n $data: i => i.data,\r\n $props: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.props) : i.props),\r\n $attrs: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.attrs) : i.attrs),\r\n $slots: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.slots) : i.slots),\r\n $refs: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.refs) : i.refs),\r\n $parent: i => getPublicInstance(i.parent),\r\n $root: i => i.root && i.root.proxy,\r\n $emit: i => i.emit,\r\n $options: i => (__VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type),\r\n $forceUpdate: i => () => queueJob(i.update),\r\n $nextTick: i => nextTick.bind(i.proxy),\r\n $watch: i => (__VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP)\r\n});\r\nconst PublicInstanceProxyHandlers = {\r\n get({ _: instance }, key) {\r\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\r\n // let @vue/reactivity know it should never observe Vue public instances.\r\n if (key === \"__v_skip\" /* SKIP */) {\r\n return true;\r\n }\r\n // for internal formatters to know that this is a Vue instance\r\n if ((process.env.NODE_ENV !== 'production') && key === '__isVue') {\r\n return true;\r\n }\r\n // data / props / ctx\r\n // This getter gets called for every property access on the render context\r\n // during render and is a major hotspot. The most expensive part of this\r\n // is the multiple hasOwn() calls. It's much faster to do a simple property\r\n // access on a plain object, so we use an accessCache object (with null\r\n // prototype) to memoize what access type a key corresponds to.\r\n let normalizedProps;\r\n if (key[0] !== '$') {\r\n const n = accessCache[key];\r\n if (n !== undefined) {\r\n switch (n) {\r\n case 0 /* SETUP */:\r\n return setupState[key];\r\n case 1 /* DATA */:\r\n return data[key];\r\n case 3 /* CONTEXT */:\r\n return ctx[key];\r\n case 2 /* PROPS */:\r\n return props[key];\r\n // default: just fallthrough\r\n }\r\n }\r\n else if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {\r\n accessCache[key] = 0 /* SETUP */;\r\n return setupState[key];\r\n }\r\n else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\r\n accessCache[key] = 1 /* DATA */;\r\n return data[key];\r\n }\r\n else if (\r\n // only cache other properties when instance has declared (thus stable)\r\n // props\r\n (normalizedProps = instance.propsOptions[0]) &&\r\n hasOwn(normalizedProps, key)) {\r\n accessCache[key] = 2 /* PROPS */;\r\n return props[key];\r\n }\r\n else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\r\n accessCache[key] = 3 /* CONTEXT */;\r\n return ctx[key];\r\n }\r\n else if (!__VUE_OPTIONS_API__ || !isInBeforeCreate) {\r\n accessCache[key] = 4 /* OTHER */;\r\n }\r\n }\r\n const publicGetter = publicPropertiesMap[key];\r\n let cssModule, globalProperties;\r\n // public $xxx properties\r\n if (publicGetter) {\r\n if (key === '$attrs') {\r\n track(instance, \"get\" /* GET */, key);\r\n (process.env.NODE_ENV !== 'production') && markAttrsAccessed();\r\n }\r\n return publicGetter(instance);\r\n }\r\n else if (\r\n // css module (injected by vue-loader)\r\n (cssModule = type.__cssModules) &&\r\n (cssModule = cssModule[key])) {\r\n return cssModule;\r\n }\r\n else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\r\n // user may set custom properties to `this` that start with `$`\r\n accessCache[key] = 3 /* CONTEXT */;\r\n return ctx[key];\r\n }\r\n else if (\r\n // global properties\r\n ((globalProperties = appContext.config.globalProperties),\r\n hasOwn(globalProperties, key))) {\r\n return globalProperties[key];\r\n }\r\n else if ((process.env.NODE_ENV !== 'production') &&\r\n currentRenderingInstance &&\r\n (!isString(key) ||\r\n // #1091 avoid internal isRef/isVNode checks on component instance leading\r\n // to infinite warning loop\r\n key.indexOf('__v') !== 0)) {\r\n if (data !== EMPTY_OBJ &&\r\n (key[0] === '$' || key[0] === '_') &&\r\n hasOwn(data, key)) {\r\n warn(`Property ${JSON.stringify(key)} must be accessed via $data because it starts with a reserved ` +\r\n `character (\"$\" or \"_\") and is not proxied on the render context.`);\r\n }\r\n else {\r\n warn(`Property ${JSON.stringify(key)} was accessed during render ` +\r\n `but is not defined on instance.`);\r\n }\r\n }\r\n },\r\n set({ _: instance }, key, value) {\r\n const { data, setupState, ctx } = instance;\r\n if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {\r\n setupState[key] = value;\r\n }\r\n else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\r\n data[key] = value;\r\n }\r\n else if (key in instance.props) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Attempting to mutate prop \"${key}\". Props are readonly.`, instance);\r\n return false;\r\n }\r\n if (key[0] === '$' && key.slice(1) in instance) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Attempting to mutate public property \"${key}\". ` +\r\n `Properties starting with $ are reserved and readonly.`, instance);\r\n return false;\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production') && key in instance.appContext.config.globalProperties) {\r\n Object.defineProperty(ctx, key, {\r\n enumerable: true,\r\n configurable: true,\r\n value\r\n });\r\n }\r\n else {\r\n ctx[key] = value;\r\n }\r\n }\r\n return true;\r\n },\r\n has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) {\r\n let normalizedProps;\r\n return (accessCache[key] !== undefined ||\r\n (data !== EMPTY_OBJ && hasOwn(data, key)) ||\r\n (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) ||\r\n ((normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key)) ||\r\n hasOwn(ctx, key) ||\r\n hasOwn(publicPropertiesMap, key) ||\r\n hasOwn(appContext.config.globalProperties, key));\r\n }\r\n};\r\nif ((process.env.NODE_ENV !== 'production') && !false) {\r\n PublicInstanceProxyHandlers.ownKeys = (target) => {\r\n warn(`Avoid app logic that relies on enumerating keys on a component instance. ` +\r\n `The keys will be empty in production mode to avoid performance overhead.`);\r\n return Reflect.ownKeys(target);\r\n };\r\n}\r\nconst RuntimeCompiledPublicInstanceProxyHandlers = extend({}, PublicInstanceProxyHandlers, {\r\n get(target, key) {\r\n // fast path for unscopables when using `with` block\r\n if (key === Symbol.unscopables) {\r\n return;\r\n }\r\n return PublicInstanceProxyHandlers.get(target, key, target);\r\n },\r\n has(_, key) {\r\n const has = key[0] !== '_' && !isGloballyWhitelisted(key);\r\n if ((process.env.NODE_ENV !== 'production') && !has && PublicInstanceProxyHandlers.has(_, key)) {\r\n warn(`Property ${JSON.stringify(key)} should not start with _ which is a reserved prefix for Vue internals.`);\r\n }\r\n return has;\r\n }\r\n});\r\n// In dev mode, the proxy target exposes the same properties as seen on `this`\r\n// for easier console inspection. In prod mode it will be an empty object so\r\n// these properties definitions can be skipped.\r\nfunction createRenderContext(instance) {\r\n const target = {};\r\n // expose internal instance for proxy handlers\r\n Object.defineProperty(target, `_`, {\r\n configurable: true,\r\n enumerable: false,\r\n get: () => instance\r\n });\r\n // expose public properties\r\n Object.keys(publicPropertiesMap).forEach(key => {\r\n Object.defineProperty(target, key, {\r\n configurable: true,\r\n enumerable: false,\r\n get: () => publicPropertiesMap[key](instance),\r\n // intercepted by the proxy so no need for implementation,\r\n // but needed to prevent set errors\r\n set: NOOP\r\n });\r\n });\r\n // expose global properties\r\n const { globalProperties } = instance.appContext.config;\r\n Object.keys(globalProperties).forEach(key => {\r\n Object.defineProperty(target, key, {\r\n configurable: true,\r\n enumerable: false,\r\n get: () => globalProperties[key],\r\n set: NOOP\r\n });\r\n });\r\n return target;\r\n}\r\n// dev only\r\nfunction exposePropsOnRenderContext(instance) {\r\n const { ctx, propsOptions: [propsOptions] } = instance;\r\n if (propsOptions) {\r\n Object.keys(propsOptions).forEach(key => {\r\n Object.defineProperty(ctx, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: () => instance.props[key],\r\n set: NOOP\r\n });\r\n });\r\n }\r\n}\r\n// dev only\r\nfunction exposeSetupStateOnRenderContext(instance) {\r\n const { ctx, setupState } = instance;\r\n Object.keys(toRaw(setupState)).forEach(key => {\r\n if (key[0] === '$' || key[0] === '_') {\r\n warn(`setup() return property ${JSON.stringify(key)} should not start with \"$\" or \"_\" ` +\r\n `which are reserved prefixes for Vue internals.`);\r\n return;\r\n }\r\n Object.defineProperty(ctx, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: () => setupState[key],\r\n set: NOOP\r\n });\r\n });\r\n}\n\nconst emptyAppContext = createAppContext();\r\nlet uid$1 = 0;\r\nfunction createComponentInstance(vnode, parent, suspense) {\r\n const type = vnode.type;\r\n // inherit parent app context - or - if root, adopt from root vnode\r\n const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\r\n const instance = {\r\n uid: uid$1++,\r\n vnode,\r\n type,\r\n parent,\r\n appContext,\r\n root: null,\r\n next: null,\r\n subTree: null,\r\n update: null,\r\n render: null,\r\n proxy: null,\r\n exposed: null,\r\n withProxy: null,\r\n effects: null,\r\n provides: parent ? parent.provides : Object.create(appContext.provides),\r\n accessCache: null,\r\n renderCache: [],\r\n // local resovled assets\r\n components: null,\r\n directives: null,\r\n // resolved props and emits options\r\n propsOptions: normalizePropsOptions(type, appContext),\r\n emitsOptions: normalizeEmitsOptions(type, appContext),\r\n // emit\r\n emit: null,\r\n emitted: null,\r\n // state\r\n ctx: EMPTY_OBJ,\r\n data: EMPTY_OBJ,\r\n props: EMPTY_OBJ,\r\n attrs: EMPTY_OBJ,\r\n slots: EMPTY_OBJ,\r\n refs: EMPTY_OBJ,\r\n setupState: EMPTY_OBJ,\r\n setupContext: null,\r\n // suspense related\r\n suspense,\r\n suspenseId: suspense ? suspense.pendingId : 0,\r\n asyncDep: null,\r\n asyncResolved: false,\r\n // lifecycle hooks\r\n // not using enums here because it results in computed properties\r\n isMounted: false,\r\n isUnmounted: false,\r\n isDeactivated: false,\r\n bc: null,\r\n c: null,\r\n bm: null,\r\n m: null,\r\n bu: null,\r\n u: null,\r\n um: null,\r\n bum: null,\r\n da: null,\r\n a: null,\r\n rtg: null,\r\n rtc: null,\r\n ec: null\r\n };\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n instance.ctx = createRenderContext(instance);\r\n }\r\n else {\r\n instance.ctx = { _: instance };\r\n }\r\n instance.root = parent ? parent.root : instance;\r\n instance.emit = emit.bind(null, instance);\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n devtoolsComponentAdded(instance);\r\n }\r\n return instance;\r\n}\r\nlet currentInstance = null;\r\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\r\nconst setCurrentInstance = (instance) => {\r\n currentInstance = instance;\r\n};\r\nconst isBuiltInTag = /*#__PURE__*/ makeMap('slot,component');\r\nfunction validateComponentName(name, config) {\r\n const appIsNativeTag = config.isNativeTag || NO;\r\n if (isBuiltInTag(name) || appIsNativeTag(name)) {\r\n warn('Do not use built-in or reserved HTML elements as component id: ' + name);\r\n }\r\n}\r\nlet isInSSRComponentSetup = false;\r\nfunction setupComponent(instance, isSSR = false) {\r\n isInSSRComponentSetup = isSSR;\r\n const { props, children, shapeFlag } = instance.vnode;\r\n const isStateful = shapeFlag & 4 /* STATEFUL_COMPONENT */;\r\n initProps(instance, props, isStateful, isSSR);\r\n initSlots(instance, children);\r\n const setupResult = isStateful\r\n ? setupStatefulComponent(instance, isSSR)\r\n : undefined;\r\n isInSSRComponentSetup = false;\r\n return setupResult;\r\n}\r\nfunction setupStatefulComponent(instance, isSSR) {\r\n const Component = instance.type;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (Component.name) {\r\n validateComponentName(Component.name, instance.appContext.config);\r\n }\r\n if (Component.components) {\r\n const names = Object.keys(Component.components);\r\n for (let i = 0; i < names.length; i++) {\r\n validateComponentName(names[i], instance.appContext.config);\r\n }\r\n }\r\n if (Component.directives) {\r\n const names = Object.keys(Component.directives);\r\n for (let i = 0; i < names.length; i++) {\r\n validateDirectiveName(names[i]);\r\n }\r\n }\r\n }\r\n // 0. create render proxy property access cache\r\n instance.accessCache = Object.create(null);\r\n // 1. create public instance / render proxy\r\n // also mark it raw so it's never observed\r\n instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n exposePropsOnRenderContext(instance);\r\n }\r\n // 2. call setup()\r\n const { setup } = Component;\r\n if (setup) {\r\n const setupContext = (instance.setupContext =\r\n setup.length > 1 ? createSetupContext(instance) : null);\r\n currentInstance = instance;\r\n pauseTracking();\r\n const setupResult = callWithErrorHandling(setup, instance, 0 /* SETUP_FUNCTION */, [(process.env.NODE_ENV !== 'production') ? shallowReadonly(instance.props) : instance.props, setupContext]);\r\n resetTracking();\r\n currentInstance = null;\r\n if (isPromise(setupResult)) {\r\n if (isSSR) {\r\n // return the promise so server-renderer can wait on it\r\n return setupResult.then((resolvedResult) => {\r\n handleSetupResult(instance, resolvedResult);\r\n });\r\n }\r\n else {\r\n // async setup returned Promise.\r\n // bail here and wait for re-entry.\r\n instance.asyncDep = setupResult;\r\n }\r\n }\r\n else {\r\n handleSetupResult(instance, setupResult);\r\n }\r\n }\r\n else {\r\n finishComponentSetup(instance);\r\n }\r\n}\r\nfunction handleSetupResult(instance, setupResult, isSSR) {\r\n if (isFunction(setupResult)) {\r\n // setup returned an inline render function\r\n {\r\n instance.render = setupResult;\r\n }\r\n }\r\n else if (isObject(setupResult)) {\r\n if ((process.env.NODE_ENV !== 'production') && isVNode(setupResult)) {\r\n warn(`setup() should not return VNodes directly - ` +\r\n `return a render function instead.`);\r\n }\r\n // setup returned bindings.\r\n // assuming a render function compiled from template is present.\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n instance.devtoolsRawSetupState = setupResult;\r\n }\r\n instance.setupState = proxyRefs(setupResult);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n exposeSetupStateOnRenderContext(instance);\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production') && setupResult !== undefined) {\r\n warn(`setup() should return an object. Received: ${setupResult === null ? 'null' : typeof setupResult}`);\r\n }\r\n finishComponentSetup(instance);\r\n}\r\nlet compile;\r\n/**\r\n * For runtime-dom to register the compiler.\r\n * Note the exported method uses any to avoid d.ts relying on the compiler types.\r\n */\r\nfunction registerRuntimeCompiler(_compile) {\r\n compile = _compile;\r\n}\r\nfunction finishComponentSetup(instance, isSSR) {\r\n const Component = instance.type;\r\n // template / render function normalization\r\n if (!instance.render) {\r\n // could be set from setup()\r\n if (compile && Component.template && !Component.render) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n startMeasure(instance, `compile`);\r\n }\r\n Component.render = compile(Component.template, {\r\n isCustomElement: instance.appContext.config.isCustomElement,\r\n delimiters: Component.delimiters\r\n });\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n endMeasure(instance, `compile`);\r\n }\r\n }\r\n instance.render = (Component.render || NOOP);\r\n // for runtime-compiled render functions using `with` blocks, the render\r\n // proxy used needs a different `has` handler which is more performant and\r\n // also only allows a whitelist of globals to fallthrough.\r\n if (instance.render._rc) {\r\n instance.withProxy = new Proxy(instance.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\r\n }\r\n }\r\n // support for 2.x options\r\n if (__VUE_OPTIONS_API__) {\r\n currentInstance = instance;\r\n pauseTracking();\r\n applyOptions(instance, Component);\r\n resetTracking();\r\n currentInstance = null;\r\n }\r\n // warn missing template/render\r\n if ((process.env.NODE_ENV !== 'production') && !Component.render && instance.render === NOOP) {\r\n /* istanbul ignore if */\r\n if (!compile && Component.template) {\r\n warn(`Component provided template option but ` +\r\n `runtime compilation is not supported in this build of Vue.` +\r\n ( ` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".`\r\n ) /* should not happen */);\r\n }\r\n else {\r\n warn(`Component is missing template or render function.`);\r\n }\r\n }\r\n}\r\nconst attrHandlers = {\r\n get: (target, key) => {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n markAttrsAccessed();\r\n }\r\n return target[key];\r\n },\r\n set: () => {\r\n warn(`setupContext.attrs is readonly.`);\r\n return false;\r\n },\r\n deleteProperty: () => {\r\n warn(`setupContext.attrs is readonly.`);\r\n return false;\r\n }\r\n};\r\nfunction createSetupContext(instance) {\r\n const expose = exposed => {\r\n if ((process.env.NODE_ENV !== 'production') && instance.exposed) {\r\n warn(`expose() should be called only once per setup().`);\r\n }\r\n instance.exposed = proxyRefs(exposed);\r\n };\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n // We use getters in dev in case libs like test-utils overwrite instance\r\n // properties (overwrites should not be done in prod)\r\n return Object.freeze({\r\n get props() {\r\n return instance.props;\r\n },\r\n get attrs() {\r\n return new Proxy(instance.attrs, attrHandlers);\r\n },\r\n get slots() {\r\n return shallowReadonly(instance.slots);\r\n },\r\n get emit() {\r\n return (event, ...args) => instance.emit(event, ...args);\r\n },\r\n expose\r\n });\r\n }\r\n else {\r\n return {\r\n attrs: instance.attrs,\r\n slots: instance.slots,\r\n emit: instance.emit,\r\n expose\r\n };\r\n }\r\n}\r\n// record effects created during a component's setup() so that they can be\r\n// stopped when the component unmounts\r\nfunction recordInstanceBoundEffect(effect, instance = currentInstance) {\r\n if (instance) {\r\n (instance.effects || (instance.effects = [])).push(effect);\r\n }\r\n}\r\nconst classifyRE = /(?:^|[-_])(\\w)/g;\r\nconst classify = (str) => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');\r\nfunction getComponentName(Component) {\r\n return isFunction(Component)\r\n ? Component.displayName || Component.name\r\n : Component.name;\r\n}\r\n/* istanbul ignore next */\r\nfunction formatComponentName(instance, Component, isRoot = false) {\r\n let name = getComponentName(Component);\r\n if (!name && Component.__file) {\r\n const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\r\n if (match) {\r\n name = match[1];\r\n }\r\n }\r\n if (!name && instance && instance.parent) {\r\n // try to infer the name based on reverse resolution\r\n const inferFromRegistry = (registry) => {\r\n for (const key in registry) {\r\n if (registry[key] === Component) {\r\n return key;\r\n }\r\n }\r\n };\r\n name =\r\n inferFromRegistry(instance.components ||\r\n instance.parent.type.components) || inferFromRegistry(instance.appContext.components);\r\n }\r\n return name ? classify(name) : isRoot ? `App` : `Anonymous`;\r\n}\r\nfunction isClassComponent(value) {\r\n return isFunction(value) && '__vccOpts' in value;\r\n}\n\nfunction computed(getterOrOptions) {\r\n const c = computed$1(getterOrOptions);\r\n recordInstanceBoundEffect(c.effect);\r\n return c;\r\n}\n\n// implementation\r\nfunction defineProps() {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`defineProps() is a compiler-hint helper that is only usable inside ` +\r\n `<script setup> of a single file component. Its arguments should be ` +\r\n `compiled away and passing it at runtime has no effect.`);\r\n }\r\n return null;\r\n}\r\n// implementation\r\nfunction defineEmit() {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`defineEmit() is a compiler-hint helper that is only usable inside ` +\r\n `<script setup> of a single file component. Its arguments should be ` +\r\n `compiled away and passing it at runtime has no effect.`);\r\n }\r\n return null;\r\n}\r\nfunction useContext() {\r\n const i = getCurrentInstance();\r\n if ((process.env.NODE_ENV !== 'production') && !i) {\r\n warn(`useContext() called without active instance.`);\r\n }\r\n return i.setupContext || (i.setupContext = createSetupContext(i));\r\n}\n\n// Actual implementation\r\nfunction h(type, propsOrChildren, children) {\r\n const l = arguments.length;\r\n if (l === 2) {\r\n if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {\r\n // single vnode without props\r\n if (isVNode(propsOrChildren)) {\r\n return createVNode(type, null, [propsOrChildren]);\r\n }\r\n // props without children\r\n return createVNode(type, propsOrChildren);\r\n }\r\n else {\r\n // omit props\r\n return createVNode(type, null, propsOrChildren);\r\n }\r\n }\r\n else {\r\n if (l > 3) {\r\n children = Array.prototype.slice.call(arguments, 2);\r\n }\r\n else if (l === 3 && isVNode(children)) {\r\n children = [children];\r\n }\r\n return createVNode(type, propsOrChildren, children);\r\n }\r\n}\n\nconst ssrContextKey = Symbol((process.env.NODE_ENV !== 'production') ? `ssrContext` : ``);\r\nconst useSSRContext = () => {\r\n {\r\n const ctx = inject(ssrContextKey);\r\n if (!ctx) {\r\n warn(`Server rendering context not provided. Make sure to only call ` +\r\n `useSsrContext() conditionally in the server build.`);\r\n }\r\n return ctx;\r\n }\r\n};\n\nfunction initCustomFormatter() {\r\n /* eslint-disable no-restricted-globals */\r\n if (!(process.env.NODE_ENV !== 'production') || typeof window === 'undefined') {\r\n return;\r\n }\r\n const vueStyle = { style: 'color:#3ba776' };\r\n const numberStyle = { style: 'color:#0b1bc9' };\r\n const stringStyle = { style: 'color:#b62e24' };\r\n const keywordStyle = { style: 'color:#9d288c' };\r\n // custom formatter for Chrome\r\n // https://www.mattzeunert.com/2016/02/19/custom-chrome-devtools-object-formatters.html\r\n const formatter = {\r\n header(obj) {\r\n // TODO also format ComponentPublicInstance & ctx.slots/attrs in setup\r\n if (!isObject(obj)) {\r\n return null;\r\n }\r\n if (obj.__isVue) {\r\n return ['div', vueStyle, `VueInstance`];\r\n }\r\n else if (isRef(obj)) {\r\n return [\r\n 'div',\r\n {},\r\n ['span', vueStyle, genRefFlag(obj)],\r\n '<',\r\n formatValue(obj.value),\r\n `>`\r\n ];\r\n }\r\n else if (isReactive(obj)) {\r\n return [\r\n 'div',\r\n {},\r\n ['span', vueStyle, 'Reactive'],\r\n '<',\r\n formatValue(obj),\r\n `>${isReadonly(obj) ? ` (readonly)` : ``}`\r\n ];\r\n }\r\n else if (isReadonly(obj)) {\r\n return [\r\n 'div',\r\n {},\r\n ['span', vueStyle, 'Readonly'],\r\n '<',\r\n formatValue(obj),\r\n '>'\r\n ];\r\n }\r\n return null;\r\n },\r\n hasBody(obj) {\r\n return obj && obj.__isVue;\r\n },\r\n body(obj) {\r\n if (obj && obj.__isVue) {\r\n return [\r\n 'div',\r\n {},\r\n ...formatInstance(obj.$)\r\n ];\r\n }\r\n }\r\n };\r\n function formatInstance(instance) {\r\n const blocks = [];\r\n if (instance.type.props && instance.props) {\r\n blocks.push(createInstanceBlock('props', toRaw(instance.props)));\r\n }\r\n if (instance.setupState !== EMPTY_OBJ) {\r\n blocks.push(createInstanceBlock('setup', instance.setupState));\r\n }\r\n if (instance.data !== EMPTY_OBJ) {\r\n blocks.push(createInstanceBlock('data', toRaw(instance.data)));\r\n }\r\n const computed = extractKeys(instance, 'computed');\r\n if (computed) {\r\n blocks.push(createInstanceBlock('computed', computed));\r\n }\r\n const injected = extractKeys(instance, 'inject');\r\n if (injected) {\r\n blocks.push(createInstanceBlock('injected', injected));\r\n }\r\n blocks.push([\r\n 'div',\r\n {},\r\n [\r\n 'span',\r\n {\r\n style: keywordStyle.style + ';opacity:0.66'\r\n },\r\n '$ (internal): '\r\n ],\r\n ['object', { object: instance }]\r\n ]);\r\n return blocks;\r\n }\r\n function createInstanceBlock(type, target) {\r\n target = extend({}, target);\r\n if (!Object.keys(target).length) {\r\n return ['span', {}];\r\n }\r\n return [\r\n 'div',\r\n { style: 'line-height:1.25em;margin-bottom:0.6em' },\r\n [\r\n 'div',\r\n {\r\n style: 'color:#476582'\r\n },\r\n type\r\n ],\r\n [\r\n 'div',\r\n {\r\n style: 'padding-left:1.25em'\r\n },\r\n ...Object.keys(target).map(key => {\r\n return [\r\n 'div',\r\n {},\r\n ['span', keywordStyle, key + ': '],\r\n formatValue(target[key], false)\r\n ];\r\n })\r\n ]\r\n ];\r\n }\r\n function formatValue(v, asRaw = true) {\r\n if (typeof v === 'number') {\r\n return ['span', numberStyle, v];\r\n }\r\n else if (typeof v === 'string') {\r\n return ['span', stringStyle, JSON.stringify(v)];\r\n }\r\n else if (typeof v === 'boolean') {\r\n return ['span', keywordStyle, v];\r\n }\r\n else if (isObject(v)) {\r\n return ['object', { object: asRaw ? toRaw(v) : v }];\r\n }\r\n else {\r\n return ['span', stringStyle, String(v)];\r\n }\r\n }\r\n function extractKeys(instance, type) {\r\n const Comp = instance.type;\r\n if (isFunction(Comp)) {\r\n return;\r\n }\r\n const extracted = {};\r\n for (const key in instance.ctx) {\r\n if (isKeyOfType(Comp, key, type)) {\r\n extracted[key] = instance.ctx[key];\r\n }\r\n }\r\n return extracted;\r\n }\r\n function isKeyOfType(Comp, key, type) {\r\n const opts = Comp[type];\r\n if ((isArray(opts) && opts.includes(key)) ||\r\n (isObject(opts) && key in opts)) {\r\n return true;\r\n }\r\n if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\r\n return true;\r\n }\r\n if (Comp.mixins && Comp.mixins.some(m => isKeyOfType(m, key, type))) {\r\n return true;\r\n }\r\n }\r\n function genRefFlag(v) {\r\n if (v._shallow) {\r\n return `ShallowRef`;\r\n }\r\n if (v.effect) {\r\n return `ComputedRef`;\r\n }\r\n return `Ref`;\r\n }\r\n if (window.devtoolsFormatters) {\r\n window.devtoolsFormatters.push(formatter);\r\n }\r\n else {\r\n window.devtoolsFormatters = [formatter];\r\n }\r\n}\n\n/**\r\n * Actual implementation\r\n */\r\nfunction renderList(source, renderItem) {\r\n let ret;\r\n if (isArray(source) || isString(source)) {\r\n ret = new Array(source.length);\r\n for (let i = 0, l = source.length; i < l; i++) {\r\n ret[i] = renderItem(source[i], i);\r\n }\r\n }\r\n else if (typeof source === 'number') {\r\n if ((process.env.NODE_ENV !== 'production') && !Number.isInteger(source)) {\r\n warn(`The v-for range expect an integer value but got ${source}.`);\r\n return [];\r\n }\r\n ret = new Array(source);\r\n for (let i = 0; i < source; i++) {\r\n ret[i] = renderItem(i + 1, i);\r\n }\r\n }\r\n else if (isObject(source)) {\r\n if (source[Symbol.iterator]) {\r\n ret = Array.from(source, renderItem);\r\n }\r\n else {\r\n const keys = Object.keys(source);\r\n ret = new Array(keys.length);\r\n for (let i = 0, l = keys.length; i < l; i++) {\r\n const key = keys[i];\r\n ret[i] = renderItem(source[key], key, i);\r\n }\r\n }\r\n }\r\n else {\r\n ret = [];\r\n }\r\n return ret;\r\n}\n\n/**\r\n * For prefixing keys in v-on=\"obj\" with \"on\"\r\n * @private\r\n */\r\nfunction toHandlers(obj) {\r\n const ret = {};\r\n if ((process.env.NODE_ENV !== 'production') && !isObject(obj)) {\r\n warn(`v-on with no argument expects an object value.`);\r\n return ret;\r\n }\r\n for (const key in obj) {\r\n ret[toHandlerKey(key)] = obj[key];\r\n }\r\n return ret;\r\n}\n\n/**\r\n * Compiler runtime helper for creating dynamic slots object\r\n * @private\r\n */\r\nfunction createSlots(slots, dynamicSlots) {\r\n for (let i = 0; i < dynamicSlots.length; i++) {\r\n const slot = dynamicSlots[i];\r\n // array of dynamic slot generated by <template v-for=\"...\" #[...]>\r\n if (isArray(slot)) {\r\n for (let j = 0; j < slot.length; j++) {\r\n slots[slot[j].name] = slot[j].fn;\r\n }\r\n }\r\n else if (slot) {\r\n // conditional single slot generated by <template v-if=\"...\" #foo>\r\n slots[slot.name] = slot.fn;\r\n }\r\n }\r\n return slots;\r\n}\n\n// Core API ------------------------------------------------------------------\r\nconst version = \"3.0.5\";\r\n/**\r\n * SSR utils for \\@vue/server-renderer. Only exposed in cjs builds.\r\n * @internal\r\n */\r\nconst ssrUtils = ( null);\n\nexport { BaseTransition, Comment, Fragment, KeepAlive, Static, Suspense, Teleport, Text, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, computed, createBlock, createCommentVNode, createHydrationRenderer, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmit, defineProps, devtools, getCurrentInstance, getTransitionRawChildren, h, handleError, initCustomFormatter, inject, isVNode, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useContext, useSSRContext, useTransitionState, version, warn, watch, watchEffect, withCtx, withDirectives, withScopeId };\n","import { camelize, warn, callWithAsyncErrorHandling, getCurrentInstance, onMounted, watchEffect, onUpdated, Fragment, h, BaseTransition, useTransitionState, toRaw, getTransitionRawChildren, setTransitionHooks, resolveTransitionHooks, createVNode, createRenderer, createHydrationRenderer } from '@vue/runtime-core';\nexport * from '@vue/runtime-core';\nimport { isString, isArray, hyphenate, capitalize, isSpecialBooleanAttr, isOn, isModelListener, isFunction, EMPTY_OBJ, extend, isObject, toNumber, invokeArrayFns, looseIndexOf, isSet, looseEqual, isHTMLTag, isSVGTag } from '@vue/shared';\n\nconst svgNS = 'http://www.w3.org/2000/svg';\r\nconst doc = (typeof document !== 'undefined' ? document : null);\r\nlet tempContainer;\r\nlet tempSVGContainer;\r\nconst nodeOps = {\r\n insert: (child, parent, anchor) => {\r\n parent.insertBefore(child, anchor || null);\r\n },\r\n remove: child => {\r\n const parent = child.parentNode;\r\n if (parent) {\r\n parent.removeChild(child);\r\n }\r\n },\r\n createElement: (tag, isSVG, is) => isSVG\r\n ? doc.createElementNS(svgNS, tag)\r\n : doc.createElement(tag, is ? { is } : undefined),\r\n createText: text => doc.createTextNode(text),\r\n createComment: text => doc.createComment(text),\r\n setText: (node, text) => {\r\n node.nodeValue = text;\r\n },\r\n setElementText: (el, text) => {\r\n el.textContent = text;\r\n },\r\n parentNode: node => node.parentNode,\r\n nextSibling: node => node.nextSibling,\r\n querySelector: selector => doc.querySelector(selector),\r\n setScopeId(el, id) {\r\n el.setAttribute(id, '');\r\n },\r\n cloneNode(el) {\r\n return el.cloneNode(true);\r\n },\r\n // __UNSAFE__\r\n // Reason: innerHTML.\r\n // Static content here can only come from compiled templates.\r\n // As long as the user only uses trusted templates, this is safe.\r\n insertStaticContent(content, parent, anchor, isSVG) {\r\n const temp = isSVG\r\n ? tempSVGContainer ||\r\n (tempSVGContainer = doc.createElementNS(svgNS, 'svg'))\r\n : tempContainer || (tempContainer = doc.createElement('div'));\r\n temp.innerHTML = content;\r\n const first = temp.firstChild;\r\n let node = first;\r\n let last = node;\r\n while (node) {\r\n last = node;\r\n nodeOps.insert(node, parent, anchor);\r\n node = temp.firstChild;\r\n }\r\n return [first, last];\r\n }\r\n};\n\n// compiler should normalize class + :class bindings on the same element\r\n// into a single binding ['staticClass', dynamic]\r\nfunction patchClass(el, value, isSVG) {\r\n if (value == null) {\r\n value = '';\r\n }\r\n if (isSVG) {\r\n el.setAttribute('class', value);\r\n }\r\n else {\r\n // directly setting className should be faster than setAttribute in theory\r\n // if this is an element during a transition, take the temporary transition\r\n // classes into account.\r\n const transitionClasses = el._vtc;\r\n if (transitionClasses) {\r\n value = (value\r\n ? [value, ...transitionClasses]\r\n : [...transitionClasses]).join(' ');\r\n }\r\n el.className = value;\r\n }\r\n}\n\nfunction patchStyle(el, prev, next) {\r\n const style = el.style;\r\n if (!next) {\r\n el.removeAttribute('style');\r\n }\r\n else if (isString(next)) {\r\n if (prev !== next) {\r\n style.cssText = next;\r\n }\r\n }\r\n else {\r\n for (const key in next) {\r\n setStyle(style, key, next[key]);\r\n }\r\n if (prev && !isString(prev)) {\r\n for (const key in prev) {\r\n if (next[key] == null) {\r\n setStyle(style, key, '');\r\n }\r\n }\r\n }\r\n }\r\n}\r\nconst importantRE = /\\s*!important$/;\r\nfunction setStyle(style, name, val) {\r\n if (isArray(val)) {\r\n val.forEach(v => setStyle(style, name, v));\r\n }\r\n else {\r\n if (name.startsWith('--')) {\r\n // custom property definition\r\n style.setProperty(name, val);\r\n }\r\n else {\r\n const prefixed = autoPrefix(style, name);\r\n if (importantRE.test(val)) {\r\n // !important\r\n style.setProperty(hyphenate(prefixed), val.replace(importantRE, ''), 'important');\r\n }\r\n else {\r\n style[prefixed] = val;\r\n }\r\n }\r\n }\r\n}\r\nconst prefixes = ['Webkit', 'Moz', 'ms'];\r\nconst prefixCache = {};\r\nfunction autoPrefix(style, rawName) {\r\n const cached = prefixCache[rawName];\r\n if (cached) {\r\n return cached;\r\n }\r\n let name = camelize(rawName);\r\n if (name !== 'filter' && name in style) {\r\n return (prefixCache[rawName] = name);\r\n }\r\n name = capitalize(name);\r\n for (let i = 0; i < prefixes.length; i++) {\r\n const prefixed = prefixes[i] + name;\r\n if (prefixed in style) {\r\n return (prefixCache[rawName] = prefixed);\r\n }\r\n }\r\n return rawName;\r\n}\n\nconst xlinkNS = 'http://www.w3.org/1999/xlink';\r\nfunction patchAttr(el, key, value, isSVG) {\r\n if (isSVG && key.startsWith('xlink:')) {\r\n if (value == null) {\r\n el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\r\n }\r\n else {\r\n el.setAttributeNS(xlinkNS, key, value);\r\n }\r\n }\r\n else {\r\n // note we are only checking boolean attributes that don't have a\r\n // corresponding dom prop of the same name here.\r\n const isBoolean = isSpecialBooleanAttr(key);\r\n if (value == null || (isBoolean && value === false)) {\r\n el.removeAttribute(key);\r\n }\r\n else {\r\n el.setAttribute(key, isBoolean ? '' : value);\r\n }\r\n }\r\n}\n\n// __UNSAFE__\r\n// functions. The user is responsible for using them with only trusted content.\r\nfunction patchDOMProp(el, key, value, \r\n// the following args are passed only due to potential innerHTML/textContent\r\n// overriding existing VNodes, in which case the old tree must be properly\r\n// unmounted.\r\nprevChildren, parentComponent, parentSuspense, unmountChildren) {\r\n if (key === 'innerHTML' || key === 'textContent') {\r\n if (prevChildren) {\r\n unmountChildren(prevChildren, parentComponent, parentSuspense);\r\n }\r\n el[key] = value == null ? '' : value;\r\n return;\r\n }\r\n if (key === 'value' && el.tagName !== 'PROGRESS') {\r\n // store value as _value as well since\r\n // non-string values will be stringified.\r\n el._value = value;\r\n const newValue = value == null ? '' : value;\r\n if (el.value !== newValue) {\r\n el.value = newValue;\r\n }\r\n return;\r\n }\r\n if (value === '' || value == null) {\r\n const type = typeof el[key];\r\n if (value === '' && type === 'boolean') {\r\n // e.g. <select multiple> compiles to { multiple: '' }\r\n el[key] = true;\r\n return;\r\n }\r\n else if (value == null && type === 'string') {\r\n // e.g. <div :id=\"null\">\r\n el[key] = '';\r\n el.removeAttribute(key);\r\n return;\r\n }\r\n else if (type === 'number') {\r\n // e.g. <img :width=\"null\">\r\n el[key] = 0;\r\n el.removeAttribute(key);\r\n return;\r\n }\r\n }\r\n // some properties perform value validation and throw\r\n try {\r\n el[key] = value;\r\n }\r\n catch (e) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Failed setting prop \"${key}\" on <${el.tagName.toLowerCase()}>: ` +\r\n `value ${value} is invalid.`, e);\r\n }\r\n }\r\n}\n\n// Async edge case fix requires storing an event listener's attach timestamp.\r\nlet _getNow = Date.now;\r\n// Determine what event timestamp the browser is using. Annoyingly, the\r\n// timestamp can either be hi-res (relative to page load) or low-res\r\n// (relative to UNIX epoch), so in order to compare time we have to use the\r\n// same timestamp type when saving the flush timestamp.\r\nif (typeof document !== 'undefined' &&\r\n _getNow() > document.createEvent('Event').timeStamp) {\r\n // if the low-res timestamp which is bigger than the event timestamp\r\n // (which is evaluated AFTER) it means the event is using a hi-res timestamp,\r\n // and we need to use the hi-res version for event listeners as well.\r\n _getNow = () => performance.now();\r\n}\r\n// To avoid the overhead of repeatedly calling performance.now(), we cache\r\n// and use the same timestamp for all event listeners attached in the same tick.\r\nlet cachedNow = 0;\r\nconst p = Promise.resolve();\r\nconst reset = () => {\r\n cachedNow = 0;\r\n};\r\nconst getNow = () => cachedNow || (p.then(reset), (cachedNow = _getNow()));\r\nfunction addEventListener(el, event, handler, options) {\r\n el.addEventListener(event, handler, options);\r\n}\r\nfunction removeEventListener(el, event, handler, options) {\r\n el.removeEventListener(event, handler, options);\r\n}\r\nfunction patchEvent(el, rawName, prevValue, nextValue, instance = null) {\r\n // vei = vue event invokers\r\n const invokers = el._vei || (el._vei = {});\r\n const existingInvoker = invokers[rawName];\r\n if (nextValue && existingInvoker) {\r\n // patch\r\n existingInvoker.value = nextValue;\r\n }\r\n else {\r\n const [name, options] = parseName(rawName);\r\n if (nextValue) {\r\n // add\r\n const invoker = (invokers[rawName] = createInvoker(nextValue, instance));\r\n addEventListener(el, name, invoker, options);\r\n }\r\n else if (existingInvoker) {\r\n // remove\r\n removeEventListener(el, name, existingInvoker, options);\r\n invokers[rawName] = undefined;\r\n }\r\n }\r\n}\r\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\r\nfunction parseName(name) {\r\n let options;\r\n if (optionsModifierRE.test(name)) {\r\n options = {};\r\n let m;\r\n while ((m = name.match(optionsModifierRE))) {\r\n name = name.slice(0, name.length - m[0].length);\r\n options[m[0].toLowerCase()] = true;\r\n }\r\n }\r\n return [name.slice(2).toLowerCase(), options];\r\n}\r\nfunction createInvoker(initialValue, instance) {\r\n const invoker = (e) => {\r\n // async edge case #6566: inner click event triggers patch, event handler\r\n // attached to outer element during patch, and triggered again. This\r\n // happens because browsers fire microtask ticks between event propagation.\r\n // the solution is simple: we save the timestamp when a handler is attached,\r\n // and the handler would only fire if the event passed to it was fired\r\n // AFTER it was attached.\r\n const timeStamp = e.timeStamp || _getNow();\r\n if (timeStamp >= invoker.attached - 1) {\r\n callWithAsyncErrorHandling(patchStopImmediatePropagation(e, invoker.value), instance, 5 /* NATIVE_EVENT_HANDLER */, [e]);\r\n }\r\n };\r\n invoker.value = initialValue;\r\n invoker.attached = getNow();\r\n return invoker;\r\n}\r\nfunction patchStopImmediatePropagation(e, value) {\r\n if (isArray(value)) {\r\n const originalStop = e.stopImmediatePropagation;\r\n e.stopImmediatePropagation = () => {\r\n originalStop.call(e);\r\n e._stopped = true;\r\n };\r\n return value.map(fn => (e) => !e._stopped && fn(e));\r\n }\r\n else {\r\n return value;\r\n }\r\n}\n\nconst nativeOnRE = /^on[a-z]/;\r\nconst forcePatchProp = (_, key) => key === 'value';\r\nconst patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {\r\n switch (key) {\r\n // special\r\n case 'class':\r\n patchClass(el, nextValue, isSVG);\r\n break;\r\n case 'style':\r\n patchStyle(el, prevValue, nextValue);\r\n break;\r\n default:\r\n if (isOn(key)) {\r\n // ignore v-model listeners\r\n if (!isModelListener(key)) {\r\n patchEvent(el, key, prevValue, nextValue, parentComponent);\r\n }\r\n }\r\n else if (shouldSetAsProp(el, key, nextValue, isSVG)) {\r\n patchDOMProp(el, key, nextValue, prevChildren, parentComponent, parentSuspense, unmountChildren);\r\n }\r\n else {\r\n // special case for <input v-model type=\"checkbox\"> with\r\n // :true-value & :false-value\r\n // store value as dom properties since non-string values will be\r\n // stringified.\r\n if (key === 'true-value') {\r\n el._trueValue = nextValue;\r\n }\r\n else if (key === 'false-value') {\r\n el._falseValue = nextValue;\r\n }\r\n patchAttr(el, key, nextValue, isSVG);\r\n }\r\n break;\r\n }\r\n};\r\nfunction shouldSetAsProp(el, key, value, isSVG) {\r\n if (isSVG) {\r\n // most keys must be set as attribute on svg elements to work\r\n // ...except innerHTML\r\n if (key === 'innerHTML') {\r\n return true;\r\n }\r\n // or native onclick with function values\r\n if (key in el && nativeOnRE.test(key) && isFunction(value)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n // spellcheck and draggable are numerated attrs, however their\r\n // corresponding DOM properties are actually booleans - this leads to\r\n // setting it with a string \"false\" value leading it to be coerced to\r\n // `true`, so we need to always treat them as attributes.\r\n // Note that `contentEditable` doesn't have this problem: its DOM\r\n // property is also enumerated string values.\r\n if (key === 'spellcheck' || key === 'draggable') {\r\n return false;\r\n }\r\n // #1787 form as an attribute must be a string, while it accepts an Element as\r\n // a prop\r\n if (key === 'form' && typeof value === 'string') {\r\n return false;\r\n }\r\n // #1526 <input list> must be set as attribute\r\n if (key === 'list' && el.tagName === 'INPUT') {\r\n return false;\r\n }\r\n // native onclick with string value, must be set as attribute\r\n if (nativeOnRE.test(key) && isString(value)) {\r\n return false;\r\n }\r\n return key in el;\r\n}\n\nfunction useCssModule(name = '$style') {\r\n /* istanbul ignore else */\r\n {\r\n const instance = getCurrentInstance();\r\n if (!instance) {\r\n (process.env.NODE_ENV !== 'production') && warn(`useCssModule must be called inside setup()`);\r\n return EMPTY_OBJ;\r\n }\r\n const modules = instance.type.__cssModules;\r\n if (!modules) {\r\n (process.env.NODE_ENV !== 'production') && warn(`Current instance does not have CSS modules injected.`);\r\n return EMPTY_OBJ;\r\n }\r\n const mod = modules[name];\r\n if (!mod) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Current instance does not have CSS module named \"${name}\".`);\r\n return EMPTY_OBJ;\r\n }\r\n return mod;\r\n }\r\n}\n\n/**\r\n * Runtime helper for SFC's CSS variable injection feature.\r\n * @private\r\n */\r\nfunction useCssVars(getter) {\r\n const instance = getCurrentInstance();\r\n /* istanbul ignore next */\r\n if (!instance) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`useCssVars is called without current active component instance.`);\r\n return;\r\n }\r\n const setVars = () => setVarsOnVNode(instance.subTree, getter(instance.proxy));\r\n onMounted(() => watchEffect(setVars, { flush: 'post' }));\r\n onUpdated(setVars);\r\n}\r\nfunction setVarsOnVNode(vnode, vars) {\r\n if ( vnode.shapeFlag & 128 /* SUSPENSE */) {\r\n const suspense = vnode.suspense;\r\n vnode = suspense.activeBranch;\r\n if (suspense.pendingBranch && !suspense.isHydrating) {\r\n suspense.effects.push(() => {\r\n setVarsOnVNode(suspense.activeBranch, vars);\r\n });\r\n }\r\n }\r\n // drill down HOCs until it's a non-component vnode\r\n while (vnode.component) {\r\n vnode = vnode.component.subTree;\r\n }\r\n if (vnode.shapeFlag & 1 /* ELEMENT */ && vnode.el) {\r\n const style = vnode.el.style;\r\n for (const key in vars) {\r\n style.setProperty(`--${key}`, vars[key]);\r\n }\r\n }\r\n else if (vnode.type === Fragment) {\r\n vnode.children.forEach(c => setVarsOnVNode(c, vars));\r\n }\r\n}\n\nconst TRANSITION = 'transition';\r\nconst ANIMATION = 'animation';\r\n// DOM Transition is a higher-order-component based on the platform-agnostic\r\n// base Transition component, with DOM-specific logic.\r\nconst Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);\r\nTransition.displayName = 'Transition';\r\nconst DOMTransitionPropsValidators = {\r\n name: String,\r\n type: String,\r\n css: {\r\n type: Boolean,\r\n default: true\r\n },\r\n duration: [String, Number, Object],\r\n enterFromClass: String,\r\n enterActiveClass: String,\r\n enterToClass: String,\r\n appearFromClass: String,\r\n appearActiveClass: String,\r\n appearToClass: String,\r\n leaveFromClass: String,\r\n leaveActiveClass: String,\r\n leaveToClass: String\r\n};\r\nconst TransitionPropsValidators = (Transition.props = /*#__PURE__*/ extend({}, BaseTransition.props, DOMTransitionPropsValidators));\r\nfunction resolveTransitionProps(rawProps) {\r\n let { name = 'v', type, css = true, duration, enterFromClass = `${name}-enter-from`, enterActiveClass = `${name}-enter-active`, enterToClass = `${name}-enter-to`, appearFromClass = enterFromClass, appearActiveClass = enterActiveClass, appearToClass = enterToClass, leaveFromClass = `${name}-leave-from`, leaveActiveClass = `${name}-leave-active`, leaveToClass = `${name}-leave-to` } = rawProps;\r\n const baseProps = {};\r\n for (const key in rawProps) {\r\n if (!(key in DOMTransitionPropsValidators)) {\r\n baseProps[key] = rawProps[key];\r\n }\r\n }\r\n if (!css) {\r\n return baseProps;\r\n }\r\n const durations = normalizeDuration(duration);\r\n const enterDuration = durations && durations[0];\r\n const leaveDuration = durations && durations[1];\r\n const { onBeforeEnter, onEnter, onEnterCancelled, onLeave, onLeaveCancelled, onBeforeAppear = onBeforeEnter, onAppear = onEnter, onAppearCancelled = onEnterCancelled } = baseProps;\r\n const finishEnter = (el, isAppear, done) => {\r\n removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\r\n removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\r\n done && done();\r\n };\r\n const finishLeave = (el, done) => {\r\n removeTransitionClass(el, leaveToClass);\r\n removeTransitionClass(el, leaveActiveClass);\r\n done && done();\r\n };\r\n const makeEnterHook = (isAppear) => {\r\n return (el, done) => {\r\n const hook = isAppear ? onAppear : onEnter;\r\n const resolve = () => finishEnter(el, isAppear, done);\r\n hook && hook(el, resolve);\r\n nextFrame(() => {\r\n removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\r\n addTransitionClass(el, isAppear ? appearToClass : enterToClass);\r\n if (!(hook && hook.length > 1)) {\r\n whenTransitionEnds(el, type, enterDuration, resolve);\r\n }\r\n });\r\n };\r\n };\r\n return extend(baseProps, {\r\n onBeforeEnter(el) {\r\n onBeforeEnter && onBeforeEnter(el);\r\n addTransitionClass(el, enterFromClass);\r\n addTransitionClass(el, enterActiveClass);\r\n },\r\n onBeforeAppear(el) {\r\n onBeforeAppear && onBeforeAppear(el);\r\n addTransitionClass(el, appearFromClass);\r\n addTransitionClass(el, appearActiveClass);\r\n },\r\n onEnter: makeEnterHook(false),\r\n onAppear: makeEnterHook(true),\r\n onLeave(el, done) {\r\n const resolve = () => finishLeave(el, done);\r\n addTransitionClass(el, leaveFromClass);\r\n // force reflow so *-leave-from classes immediately take effect (#2593)\r\n forceReflow();\r\n addTransitionClass(el, leaveActiveClass);\r\n nextFrame(() => {\r\n removeTransitionClass(el, leaveFromClass);\r\n addTransitionClass(el, leaveToClass);\r\n if (!(onLeave && onLeave.length > 1)) {\r\n whenTransitionEnds(el, type, leaveDuration, resolve);\r\n }\r\n });\r\n onLeave && onLeave(el, resolve);\r\n },\r\n onEnterCancelled(el) {\r\n finishEnter(el, false);\r\n onEnterCancelled && onEnterCancelled(el);\r\n },\r\n onAppearCancelled(el) {\r\n finishEnter(el, true);\r\n onAppearCancelled && onAppearCancelled(el);\r\n },\r\n onLeaveCancelled(el) {\r\n finishLeave(el);\r\n onLeaveCancelled && onLeaveCancelled(el);\r\n }\r\n });\r\n}\r\nfunction normalizeDuration(duration) {\r\n if (duration == null) {\r\n return null;\r\n }\r\n else if (isObject(duration)) {\r\n return [NumberOf(duration.enter), NumberOf(duration.leave)];\r\n }\r\n else {\r\n const n = NumberOf(duration);\r\n return [n, n];\r\n }\r\n}\r\nfunction NumberOf(val) {\r\n const res = toNumber(val);\r\n if ((process.env.NODE_ENV !== 'production'))\r\n validateDuration(res);\r\n return res;\r\n}\r\nfunction validateDuration(val) {\r\n if (typeof val !== 'number') {\r\n warn(`<transition> explicit duration is not a valid number - ` +\r\n `got ${JSON.stringify(val)}.`);\r\n }\r\n else if (isNaN(val)) {\r\n warn(`<transition> explicit duration is NaN - ` +\r\n 'the duration expression might be incorrect.');\r\n }\r\n}\r\nfunction addTransitionClass(el, cls) {\r\n cls.split(/\\s+/).forEach(c => c && el.classList.add(c));\r\n (el._vtc ||\r\n (el._vtc = new Set())).add(cls);\r\n}\r\nfunction removeTransitionClass(el, cls) {\r\n cls.split(/\\s+/).forEach(c => c && el.classList.remove(c));\r\n const { _vtc } = el;\r\n if (_vtc) {\r\n _vtc.delete(cls);\r\n if (!_vtc.size) {\r\n el._vtc = undefined;\r\n }\r\n }\r\n}\r\nfunction nextFrame(cb) {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(cb);\r\n });\r\n}\r\nlet endId = 0;\r\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {\r\n const id = (el._endId = ++endId);\r\n const resolveIfNotStale = () => {\r\n if (id === el._endId) {\r\n resolve();\r\n }\r\n };\r\n if (explicitTimeout) {\r\n return setTimeout(resolveIfNotStale, explicitTimeout);\r\n }\r\n const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\r\n if (!type) {\r\n return resolve();\r\n }\r\n const endEvent = type + 'end';\r\n let ended = 0;\r\n const end = () => {\r\n el.removeEventListener(endEvent, onEnd);\r\n resolveIfNotStale();\r\n };\r\n const onEnd = (e) => {\r\n if (e.target === el && ++ended >= propCount) {\r\n end();\r\n }\r\n };\r\n setTimeout(() => {\r\n if (ended < propCount) {\r\n end();\r\n }\r\n }, timeout + 1);\r\n el.addEventListener(endEvent, onEnd);\r\n}\r\nfunction getTransitionInfo(el, expectedType) {\r\n const styles = window.getComputedStyle(el);\r\n // JSDOM may return undefined for transition properties\r\n const getStyleProperties = (key) => (styles[key] || '').split(', ');\r\n const transitionDelays = getStyleProperties(TRANSITION + 'Delay');\r\n const transitionDurations = getStyleProperties(TRANSITION + 'Duration');\r\n const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\r\n const animationDelays = getStyleProperties(ANIMATION + 'Delay');\r\n const animationDurations = getStyleProperties(ANIMATION + 'Duration');\r\n const animationTimeout = getTimeout(animationDelays, animationDurations);\r\n let type = null;\r\n let timeout = 0;\r\n let propCount = 0;\r\n /* istanbul ignore if */\r\n if (expectedType === TRANSITION) {\r\n if (transitionTimeout > 0) {\r\n type = TRANSITION;\r\n timeout = transitionTimeout;\r\n propCount = transitionDurations.length;\r\n }\r\n }\r\n else if (expectedType === ANIMATION) {\r\n if (animationTimeout > 0) {\r\n type = ANIMATION;\r\n timeout = animationTimeout;\r\n propCount = animationDurations.length;\r\n }\r\n }\r\n else {\r\n timeout = Math.max(transitionTimeout, animationTimeout);\r\n type =\r\n timeout > 0\r\n ? transitionTimeout > animationTimeout\r\n ? TRANSITION\r\n : ANIMATION\r\n : null;\r\n propCount = type\r\n ? type === TRANSITION\r\n ? transitionDurations.length\r\n : animationDurations.length\r\n : 0;\r\n }\r\n const hasTransform = type === TRANSITION &&\r\n /\\b(transform|all)(,|$)/.test(styles[TRANSITION + 'Property']);\r\n return {\r\n type,\r\n timeout,\r\n propCount,\r\n hasTransform\r\n };\r\n}\r\nfunction getTimeout(delays, durations) {\r\n while (delays.length < durations.length) {\r\n delays = delays.concat(delays);\r\n }\r\n return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\r\n}\r\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer\r\n// numbers in a locale-dependent way, using a comma instead of a dot.\r\n// If comma is not replaced with a dot, the input will be rounded down\r\n// (i.e. acting as a floor function) causing unexpected behaviors\r\nfunction toMs(s) {\r\n return Number(s.slice(0, -1).replace(',', '.')) * 1000;\r\n}\r\n// synchronously force layout to put elements into a certain state\r\nfunction forceReflow() {\r\n return document.body.offsetHeight;\r\n}\n\nconst positionMap = new WeakMap();\r\nconst newPositionMap = new WeakMap();\r\nconst TransitionGroupImpl = {\r\n name: 'TransitionGroup',\r\n props: /*#__PURE__*/ extend({}, TransitionPropsValidators, {\r\n tag: String,\r\n moveClass: String\r\n }),\r\n setup(props, { slots }) {\r\n const instance = getCurrentInstance();\r\n const state = useTransitionState();\r\n let prevChildren;\r\n let children;\r\n onUpdated(() => {\r\n // children is guaranteed to exist after initial render\r\n if (!prevChildren.length) {\r\n return;\r\n }\r\n const moveClass = props.moveClass || `${props.name || 'v'}-move`;\r\n if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) {\r\n return;\r\n }\r\n // we divide the work into three loops to avoid mixing DOM reads and writes\r\n // in each iteration - which helps prevent layout thrashing.\r\n prevChildren.forEach(callPendingCbs);\r\n prevChildren.forEach(recordPosition);\r\n const movedChildren = prevChildren.filter(applyTranslation);\r\n // force reflow to put everything in position\r\n forceReflow();\r\n movedChildren.forEach(c => {\r\n const el = c.el;\r\n const style = el.style;\r\n addTransitionClass(el, moveClass);\r\n style.transform = style.webkitTransform = style.transitionDuration = '';\r\n const cb = (el._moveCb = (e) => {\r\n if (e && e.target !== el) {\r\n return;\r\n }\r\n if (!e || /transform$/.test(e.propertyName)) {\r\n el.removeEventListener('transitionend', cb);\r\n el._moveCb = null;\r\n removeTransitionClass(el, moveClass);\r\n }\r\n });\r\n el.addEventListener('transitionend', cb);\r\n });\r\n });\r\n return () => {\r\n const rawProps = toRaw(props);\r\n const cssTransitionProps = resolveTransitionProps(rawProps);\r\n const tag = rawProps.tag || Fragment;\r\n prevChildren = children;\r\n children = slots.default ? getTransitionRawChildren(slots.default()) : [];\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n if (child.key != null) {\r\n setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`<TransitionGroup> children must be keyed.`);\r\n }\r\n }\r\n if (prevChildren) {\r\n for (let i = 0; i < prevChildren.length; i++) {\r\n const child = prevChildren[i];\r\n setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));\r\n positionMap.set(child, child.el.getBoundingClientRect());\r\n }\r\n }\r\n return createVNode(tag, null, children);\r\n };\r\n }\r\n};\r\nconst TransitionGroup = TransitionGroupImpl;\r\nfunction callPendingCbs(c) {\r\n const el = c.el;\r\n if (el._moveCb) {\r\n el._moveCb();\r\n }\r\n if (el._enterCb) {\r\n el._enterCb();\r\n }\r\n}\r\nfunction recordPosition(c) {\r\n newPositionMap.set(c, c.el.getBoundingClientRect());\r\n}\r\nfunction applyTranslation(c) {\r\n const oldPos = positionMap.get(c);\r\n const newPos = newPositionMap.get(c);\r\n const dx = oldPos.left - newPos.left;\r\n const dy = oldPos.top - newPos.top;\r\n if (dx || dy) {\r\n const s = c.el.style;\r\n s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\r\n s.transitionDuration = '0s';\r\n return c;\r\n }\r\n}\r\nfunction hasCSSTransform(el, root, moveClass) {\r\n // Detect whether an element with the move class applied has\r\n // CSS transitions. Since the element may be inside an entering\r\n // transition at this very moment, we make a clone of it and remove\r\n // all other transition classes applied to ensure only the move class\r\n // is applied.\r\n const clone = el.cloneNode();\r\n if (el._vtc) {\r\n el._vtc.forEach(cls => {\r\n cls.split(/\\s+/).forEach(c => c && clone.classList.remove(c));\r\n });\r\n }\r\n moveClass.split(/\\s+/).forEach(c => c && clone.classList.add(c));\r\n clone.style.display = 'none';\r\n const container = (root.nodeType === 1\r\n ? root\r\n : root.parentNode);\r\n container.appendChild(clone);\r\n const { hasTransform } = getTransitionInfo(clone);\r\n container.removeChild(clone);\r\n return hasTransform;\r\n}\n\nconst getModelAssigner = (vnode) => {\r\n const fn = vnode.props['onUpdate:modelValue'];\r\n return isArray(fn) ? value => invokeArrayFns(fn, value) : fn;\r\n};\r\nfunction onCompositionStart(e) {\r\n e.target.composing = true;\r\n}\r\nfunction onCompositionEnd(e) {\r\n const target = e.target;\r\n if (target.composing) {\r\n target.composing = false;\r\n trigger(target, 'input');\r\n }\r\n}\r\nfunction trigger(el, type) {\r\n const e = document.createEvent('HTMLEvents');\r\n e.initEvent(type, true, true);\r\n el.dispatchEvent(e);\r\n}\r\n// We are exporting the v-model runtime directly as vnode hooks so that it can\r\n// be tree-shaken in case v-model is never used.\r\nconst vModelText = {\r\n created(el, { modifiers: { lazy, trim, number } }, vnode) {\r\n el._assign = getModelAssigner(vnode);\r\n const castToNumber = number || el.type === 'number';\r\n addEventListener(el, lazy ? 'change' : 'input', e => {\r\n if (e.target.composing)\r\n return;\r\n let domValue = el.value;\r\n if (trim) {\r\n domValue = domValue.trim();\r\n }\r\n else if (castToNumber) {\r\n domValue = toNumber(domValue);\r\n }\r\n el._assign(domValue);\r\n });\r\n if (trim) {\r\n addEventListener(el, 'change', () => {\r\n el.value = el.value.trim();\r\n });\r\n }\r\n if (!lazy) {\r\n addEventListener(el, 'compositionstart', onCompositionStart);\r\n addEventListener(el, 'compositionend', onCompositionEnd);\r\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\r\n // switching focus before confirming composition choice\r\n // this also fixes the issue where some browsers e.g. iOS Chrome\r\n // fires \"change\" instead of \"input\" on autocomplete.\r\n addEventListener(el, 'change', onCompositionEnd);\r\n }\r\n },\r\n // set value on mounted so it's after min/max for type=\"range\"\r\n mounted(el, { value }) {\r\n el.value = value == null ? '' : value;\r\n },\r\n beforeUpdate(el, { value, modifiers: { trim, number } }, vnode) {\r\n el._assign = getModelAssigner(vnode);\r\n // avoid clearing unresolved text. #2302\r\n if (el.composing)\r\n return;\r\n if (document.activeElement === el) {\r\n if (trim && el.value.trim() === value) {\r\n return;\r\n }\r\n if ((number || el.type === 'number') && toNumber(el.value) === value) {\r\n return;\r\n }\r\n }\r\n const newValue = value == null ? '' : value;\r\n if (el.value !== newValue) {\r\n el.value = newValue;\r\n }\r\n }\r\n};\r\nconst vModelCheckbox = {\r\n created(el, _, vnode) {\r\n el._assign = getModelAssigner(vnode);\r\n addEventListener(el, 'change', () => {\r\n const modelValue = el._modelValue;\r\n const elementValue = getValue(el);\r\n const checked = el.checked;\r\n const assign = el._assign;\r\n if (isArray(modelValue)) {\r\n const index = looseIndexOf(modelValue, elementValue);\r\n const found = index !== -1;\r\n if (checked && !found) {\r\n assign(modelValue.concat(elementValue));\r\n }\r\n else if (!checked && found) {\r\n const filtered = [...modelValue];\r\n filtered.splice(index, 1);\r\n assign(filtered);\r\n }\r\n }\r\n else if (isSet(modelValue)) {\r\n const cloned = new Set(modelValue);\r\n if (checked) {\r\n cloned.add(elementValue);\r\n }\r\n else {\r\n cloned.delete(elementValue);\r\n }\r\n assign(cloned);\r\n }\r\n else {\r\n assign(getCheckboxValue(el, checked));\r\n }\r\n });\r\n },\r\n // set initial checked on mount to wait for true-value/false-value\r\n mounted: setChecked,\r\n beforeUpdate(el, binding, vnode) {\r\n el._assign = getModelAssigner(vnode);\r\n setChecked(el, binding, vnode);\r\n }\r\n};\r\nfunction setChecked(el, { value, oldValue }, vnode) {\r\n el._modelValue = value;\r\n if (isArray(value)) {\r\n el.checked = looseIndexOf(value, vnode.props.value) > -1;\r\n }\r\n else if (isSet(value)) {\r\n el.checked = value.has(vnode.props.value);\r\n }\r\n else if (value !== oldValue) {\r\n el.checked = looseEqual(value, getCheckboxValue(el, true));\r\n }\r\n}\r\nconst vModelRadio = {\r\n created(el, { value }, vnode) {\r\n el.checked = looseEqual(value, vnode.props.value);\r\n el._assign = getModelAssigner(vnode);\r\n addEventListener(el, 'change', () => {\r\n el._assign(getValue(el));\r\n });\r\n },\r\n beforeUpdate(el, { value, oldValue }, vnode) {\r\n el._assign = getModelAssigner(vnode);\r\n if (value !== oldValue) {\r\n el.checked = looseEqual(value, vnode.props.value);\r\n }\r\n }\r\n};\r\nconst vModelSelect = {\r\n created(el, { value, modifiers: { number } }, vnode) {\r\n const isSetModel = isSet(value);\r\n addEventListener(el, 'change', () => {\r\n const selectedVal = Array.prototype.filter\r\n .call(el.options, (o) => o.selected)\r\n .map((o) => number ? toNumber(getValue(o)) : getValue(o));\r\n el._assign(el.multiple\r\n ? isSetModel\r\n ? new Set(selectedVal)\r\n : selectedVal\r\n : selectedVal[0]);\r\n });\r\n el._assign = getModelAssigner(vnode);\r\n },\r\n // set value in mounted & updated because <select> relies on its children\r\n // <option>s.\r\n mounted(el, { value }) {\r\n setSelected(el, value);\r\n },\r\n beforeUpdate(el, _binding, vnode) {\r\n el._assign = getModelAssigner(vnode);\r\n },\r\n updated(el, { value }) {\r\n setSelected(el, value);\r\n }\r\n};\r\nfunction setSelected(el, value) {\r\n const isMultiple = el.multiple;\r\n if (isMultiple && !isArray(value) && !isSet(value)) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`<select multiple v-model> expects an Array or Set value for its binding, ` +\r\n `but got ${Object.prototype.toString.call(value).slice(8, -1)}.`);\r\n return;\r\n }\r\n for (let i = 0, l = el.options.length; i < l; i++) {\r\n const option = el.options[i];\r\n const optionValue = getValue(option);\r\n if (isMultiple) {\r\n if (isArray(value)) {\r\n option.selected = looseIndexOf(value, optionValue) > -1;\r\n }\r\n else {\r\n option.selected = value.has(optionValue);\r\n }\r\n }\r\n else {\r\n if (looseEqual(getValue(option), value)) {\r\n el.selectedIndex = i;\r\n return;\r\n }\r\n }\r\n }\r\n if (!isMultiple) {\r\n el.selectedIndex = -1;\r\n }\r\n}\r\n// retrieve raw value set via :value bindings\r\nfunction getValue(el) {\r\n return '_value' in el ? el._value : el.value;\r\n}\r\n// retrieve raw value for true-value and false-value set via :true-value or :false-value bindings\r\nfunction getCheckboxValue(el, checked) {\r\n const key = checked ? '_trueValue' : '_falseValue';\r\n return key in el ? el[key] : checked;\r\n}\r\nconst vModelDynamic = {\r\n created(el, binding, vnode) {\r\n callModelHook(el, binding, vnode, null, 'created');\r\n },\r\n mounted(el, binding, vnode) {\r\n callModelHook(el, binding, vnode, null, 'mounted');\r\n },\r\n beforeUpdate(el, binding, vnode, prevVNode) {\r\n callModelHook(el, binding, vnode, prevVNode, 'beforeUpdate');\r\n },\r\n updated(el, binding, vnode, prevVNode) {\r\n callModelHook(el, binding, vnode, prevVNode, 'updated');\r\n }\r\n};\r\nfunction callModelHook(el, binding, vnode, prevVNode, hook) {\r\n let modelToUse;\r\n switch (el.tagName) {\r\n case 'SELECT':\r\n modelToUse = vModelSelect;\r\n break;\r\n case 'TEXTAREA':\r\n modelToUse = vModelText;\r\n break;\r\n default:\r\n switch (vnode.props && vnode.props.type) {\r\n case 'checkbox':\r\n modelToUse = vModelCheckbox;\r\n break;\r\n case 'radio':\r\n modelToUse = vModelRadio;\r\n break;\r\n default:\r\n modelToUse = vModelText;\r\n }\r\n }\r\n const fn = modelToUse[hook];\r\n fn && fn(el, binding, vnode, prevVNode);\r\n}\n\nconst systemModifiers = ['ctrl', 'shift', 'alt', 'meta'];\r\nconst modifierGuards = {\r\n stop: e => e.stopPropagation(),\r\n prevent: e => e.preventDefault(),\r\n self: e => e.target !== e.currentTarget,\r\n ctrl: e => !e.ctrlKey,\r\n shift: e => !e.shiftKey,\r\n alt: e => !e.altKey,\r\n meta: e => !e.metaKey,\r\n left: e => 'button' in e && e.button !== 0,\r\n middle: e => 'button' in e && e.button !== 1,\r\n right: e => 'button' in e && e.button !== 2,\r\n exact: (e, modifiers) => systemModifiers.some(m => e[`${m}Key`] && !modifiers.includes(m))\r\n};\r\n/**\r\n * @private\r\n */\r\nconst withModifiers = (fn, modifiers) => {\r\n return (event, ...args) => {\r\n for (let i = 0; i < modifiers.length; i++) {\r\n const guard = modifierGuards[modifiers[i]];\r\n if (guard && guard(event, modifiers))\r\n return;\r\n }\r\n return fn(event, ...args);\r\n };\r\n};\r\n// Kept for 2.x compat.\r\n// Note: IE11 compat for `spacebar` and `del` is removed for now.\r\nconst keyNames = {\r\n esc: 'escape',\r\n space: ' ',\r\n up: 'arrow-up',\r\n left: 'arrow-left',\r\n right: 'arrow-right',\r\n down: 'arrow-down',\r\n delete: 'backspace'\r\n};\r\n/**\r\n * @private\r\n */\r\nconst withKeys = (fn, modifiers) => {\r\n return (event) => {\r\n if (!('key' in event))\r\n return;\r\n const eventKey = hyphenate(event.key);\r\n if (\r\n // None of the provided key modifiers match the current event key\r\n !modifiers.some(k => k === eventKey || keyNames[k] === eventKey)) {\r\n return;\r\n }\r\n return fn(event);\r\n };\r\n};\n\nconst vShow = {\r\n beforeMount(el, { value }, { transition }) {\r\n el._vod = el.style.display === 'none' ? '' : el.style.display;\r\n if (transition && value) {\r\n transition.beforeEnter(el);\r\n }\r\n else {\r\n setDisplay(el, value);\r\n }\r\n },\r\n mounted(el, { value }, { transition }) {\r\n if (transition && value) {\r\n transition.enter(el);\r\n }\r\n },\r\n updated(el, { value, oldValue }, { transition }) {\r\n if (transition && value !== oldValue) {\r\n if (value) {\r\n transition.beforeEnter(el);\r\n setDisplay(el, true);\r\n transition.enter(el);\r\n }\r\n else {\r\n transition.leave(el, () => {\r\n setDisplay(el, false);\r\n });\r\n }\r\n }\r\n else {\r\n setDisplay(el, value);\r\n }\r\n },\r\n beforeUnmount(el, { value }) {\r\n setDisplay(el, value);\r\n }\r\n};\r\nfunction setDisplay(el, value) {\r\n el.style.display = value ? el._vod : 'none';\r\n}\n\nconst rendererOptions = extend({ patchProp, forcePatchProp }, nodeOps);\r\n// lazy create the renderer - this makes core renderer logic tree-shakable\r\n// in case the user only imports reactivity utilities from Vue.\r\nlet renderer;\r\nlet enabledHydration = false;\r\nfunction ensureRenderer() {\r\n return renderer || (renderer = createRenderer(rendererOptions));\r\n}\r\nfunction ensureHydrationRenderer() {\r\n renderer = enabledHydration\r\n ? renderer\r\n : createHydrationRenderer(rendererOptions);\r\n enabledHydration = true;\r\n return renderer;\r\n}\r\n// use explicit type casts here to avoid import() calls in rolled-up d.ts\r\nconst render = ((...args) => {\r\n ensureRenderer().render(...args);\r\n});\r\nconst hydrate = ((...args) => {\r\n ensureHydrationRenderer().hydrate(...args);\r\n});\r\nconst createApp = ((...args) => {\r\n const app = ensureRenderer().createApp(...args);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n injectNativeTagCheck(app);\r\n }\r\n const { mount } = app;\r\n app.mount = (containerOrSelector) => {\r\n const container = normalizeContainer(containerOrSelector);\r\n if (!container)\r\n return;\r\n const component = app._component;\r\n if (!isFunction(component) && !component.render && !component.template) {\r\n component.template = container.innerHTML;\r\n }\r\n // clear content before mounting\r\n container.innerHTML = '';\r\n const proxy = mount(container);\r\n if (container instanceof Element) {\r\n container.removeAttribute('v-cloak');\r\n container.setAttribute('data-v-app', '');\r\n }\r\n return proxy;\r\n };\r\n return app;\r\n});\r\nconst createSSRApp = ((...args) => {\r\n const app = ensureHydrationRenderer().createApp(...args);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n injectNativeTagCheck(app);\r\n }\r\n const { mount } = app;\r\n app.mount = (containerOrSelector) => {\r\n const container = normalizeContainer(containerOrSelector);\r\n if (container) {\r\n return mount(container, true);\r\n }\r\n };\r\n return app;\r\n});\r\nfunction injectNativeTagCheck(app) {\r\n // Inject `isNativeTag`\r\n // this is used for component name validation (dev only)\r\n Object.defineProperty(app.config, 'isNativeTag', {\r\n value: (tag) => isHTMLTag(tag) || isSVGTag(tag),\r\n writable: false\r\n });\r\n}\r\nfunction normalizeContainer(container) {\r\n if (isString(container)) {\r\n const res = document.querySelector(container);\r\n if ((process.env.NODE_ENV !== 'production') && !res) {\r\n warn(`Failed to mount app: mount target selector \"${container}\" returned null.`);\r\n }\r\n return res;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n container instanceof ShadowRoot &&\r\n container.mode === 'closed') {\r\n warn(`mounting on a ShadowRoot with \\`{mode: \"closed\"}\\` may lead to unpredictable bugs`);\r\n }\r\n return container;\r\n}\n\nexport { Transition, TransitionGroup, createApp, createSSRApp, hydrate, render, useCssModule, useCssVars, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, withKeys, withModifiers };\n","import { setDevtoolsHook, initCustomFormatter, warn } from '@vue/runtime-dom';\nexport * from '@vue/runtime-dom';\nimport { getGlobalThis } from '@vue/shared';\n\nfunction initDev() {\r\n const target = getGlobalThis();\r\n target.__VUE__ = true;\r\n setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__);\r\n {\r\n initCustomFormatter();\r\n }\r\n}\n\n// This entry exports the runtime only, and is built as\r\n(process.env.NODE_ENV !== 'production') && initDev();\r\nconst compile = () => {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Runtime compilation is not supported in this build of Vue.` +\r\n ( ` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".`\r\n ) /* should not happen */);\r\n }\r\n};\n\nexport { compile };\n","<script>\nexport default {\n name: \"StringValue\",\n props: {\n id: {\n type: String,\n default: '',\n },\n value: Object\n },\n methods: {\n focus() {\n this.$refs.input.focus();\n }\n },\n computed: {\n inputValue: {\n set(value) {\n this.value.String = value\n },\n get() {\n return this.value.String;\n }\n }\n }\n};\n</script>\n\n<template>\n <input ref=\"input\" class=\"form-input input-inline\" type=\"text\" :id=\"id\" v-model=\"inputValue\">\n</template>\n","<script>\nexport default {\n name: \"DecimalValue\",\n props: {\n id: {\n type: String,\n default: '',\n },\n value: Object\n },\n methods: {\n focus() {\n this.$refs.input.focus();\n }\n },\n computed: {\n inputValue: {\n set(value) {\n this.value.Decimal = parseFloat(value);\n },\n get() {\n return this.value.Decimal;\n }\n }\n }\n};\n</script>\n\n<template>\n <input ref=\"input\" class=\"form-input input-inline\" type=\"number\" :id=\"id\" step=\"any\" v-model=\"inputValue\">\n</template>\n","<script>\nexport default {\n name: \"BooleanValue\",\n props: {\n id: {\n type: String,\n default: '',\n },\n value: Object\n },\n methods: {\n focus() {\n this.$refs.input.focus();\n }\n },\n computed: {\n inputValue: {\n set(value) {\n this.value.Boolean = !!value;\n },\n get() {\n return this.value.Boolean;\n }\n }\n }\n};\n</script>\n\n<template>\n <label class=\"form-switch input-inline\">\n <input ref=\"input\" type=\"checkbox\" :id=\"id\" value=\"true\" v-model=\"inputValue\">\n <i class=\"form-icon\"></i>\n </label>\n</template>\n","<script>\nexport default {\n name: \"IntegerValue\",\n props: {\n id: {\n type: String,\n default: '',\n },\n value: Object\n },\n methods: {\n focus() {\n this.$refs.input.focus();\n }\n },\n computed: {\n inputValue: {\n set(value) {\n this.value.Integer = parseInt(value);\n },\n get() {\n return this.value.Integer;\n }\n }\n }\n};\n</script>\n\n<template>\n <input ref=\"input\" class=\"form-input input-inline\" type=\"number\" :id=\"id\" step=\"1\" v-model=\"inputValue\">\n</template>\n","<script>\nexport default {\n name: \"StringValue\",\n props: {\n id: {\n type: String,\n default: '',\n },\n value: Object\n },\n methods: {\n focus() {\n this.$refs.input.focus();\n }\n },\n computed: {\n inputValue: {\n set(value) {\n this.value.String = value\n },\n get() {\n return this.value.String;\n }\n }\n }\n};\n</script>\n\n<template>\n <textarea ref=\"input\" class=\"form-input\" style=\"resize: vertical\" rows=\"6\" :id=\"id\" v-model=\"inputValue\"></textarea>\n</template>\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n","import lodash_isEmpty from \"lodash-es/isEmpty\";\n\nexport function uniqueId() {\n return 'f'\n + Math.random().toString(16).replace('.', '')\n + (+new Date()).toString(16);\n}\n\nexport function keyBy(array, keyfunc) {\n let result = {};\n for(let item of array) {\n if (typeof keyfunc == 'string') {\n result[item[keyfunc]] = item;\n } else {\n result[keyfunc(item)] = item;\n }\n }\n return result;\n}\n\nexport function objCopy(object) {\n return JSON.parse(JSON.stringify(object));\n}\n\nexport function castId(id) {\n //return id.toString();\n return +id;\n}\n\n// like _.isEmpty, but less stupid\nexport function isEmpty(object) {\n if (typeof object == 'number') {\n return false;\n }\n\n if (object === true) {\n return false;\n }\n\n if (typeof object == 'string') {\n return object.length === 0;\n }\n\n return lodash_isEmpty(object)\n}\n\nexport function qs(s) { return document.querySelector(s); }\nexport function qss(s) { return document.querySelectorAll(s); }\n","<script>\nimport {objCopy, uniqueId} from \"../utils\";\nimport * as Vue from 'vue';\n\nexport default {\n name: \"PropertyField\",\n props: ['model', 'values'],\n data() {\n return {\n widget_id: uniqueId(),\n fieldRefs: [],\n }\n },\n methods: {\n addValue(event) {\n this.values.push(objCopy(this.model.default));\n\n Vue.nextTick(() => {\n this.fieldRefs[this.values.length-1].focus();\n })\n },\n removeValue(vi) {\n this.values.splice(vi, 1);\n },\n setFieldRef(el) {\n if (el) {\n this.fieldRefs.push(el)\n }\n },\n },\n beforeUpdate() {\n this.fieldRefs = []\n }\n}\n</script>\n\n<template>\n <div v-if=\"values.length===0\" class=\"form-group cols\">\n <div class=\"col-3 pl-2\">\n <label class=\"form-label\">{{ model.name }}</label>\n </div>\n <div class=\"col-9 pr-2\">\n <button type=\"button\" class=\"btn\" @click=\"addValue\">\n <i class=\"icon icon-plus\"></i>Add\n </button>\n </div>\n </div>\n\n <div v-if=\"values.length>0\" class=\"form-group cols\" v-for=\"(value, vi) in values\" :key=\"vi\">\n <div class=\"col-3 pl-2\">\n <label class=\"form-label\" :for=\"widget_id\" v-if=\"vi===0\">{{ model.name }}</label>\n </div>\n <div class=\"col-9 pr-2\">\n <string-value :ref=\"setFieldRef\" :value=\"value\" :id=\"vi === 0 ? widget_id : null\" v-if=\"model.data_type==='String' && !model.options.multiline\"></string-value>\n <text-value :ref=\"setFieldRef\" :value=\"value\" :id=\"vi === 0 ? widget_id : null\" v-if=\"model.data_type==='String' && model.options.multiline\"></text-value>\n <integer-value :ref=\"setFieldRef\" :value=\"value\" :id=\"vi === 0 ? widget_id : null\" v-if=\"model.data_type==='Integer'\"></integer-value>\n <decimal-value :ref=\"setFieldRef\" :value=\"value\" :id=\"vi === 0 ? widget_id : null\" v-if=\"model.data_type==='Decimal'\"></decimal-value>\n <boolean-value :ref=\"setFieldRef\" :value=\"value\" :id=\"vi === 0 ? widget_id : null\" v-if=\"model.data_type==='Boolean'\"></boolean-value>\n <button type=\"button\" :class=\"['btn','btn-delete', (model.data_type==='String' && model.options.multiline)?'mt-1': 'ml-1']\" @click=\"removeValue(vi)\" v-if=\"values.length > 1 || model.optional\">\n <i class=\"icon icon-cross\"></i>Remove\n </button>\n </div>\n </div>\n\n <div v-if=\"values.length>0 && model.multiple\" class=\"form-group cols\">\n <div class=\"col-3 pl-2\"></div>\n <div class=\"col-9 pr-2\">\n <button type=\"button\" class=\"btn\" @click=\"addValue\">\n <i class=\"icon icon-plus\"></i>Add\n </button>\n </div>\n </div>\n</template>\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n","import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nexport default createBaseEach;\n","import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","import arrayEach from './_arrayEach.js';\nimport baseEach from './_baseEach.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nexport default forEach;\n","import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","module.exports = require('./lib/axios');","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","<script>\nimport {castId, keyBy, objCopy, isEmpty} from \"../utils\";\nimport forEach from \"lodash-es/forEach\";\nimport axios from \"axios\";\nimport isEqual from \"lodash-es/isEqual\";\n\nexport default {\n props: ['model_id', 'schema', 'objects'],\n name: \"NewObjectForm\",\n data() {\n const model = this.schema.obj_models.find((m) => m.id === this.model_id);\n let properties = this.schema.prop_models.filter((m) => m.object === model.id);\n let relations = this.schema.rel_models.filter((m) => m.object === model.id);\n\n let values = {};\n properties.forEach((p) => {\n if (p.optional) {\n values[p.id] = [];\n } else {\n values[p.id] = [objCopy(p.default)];\n }\n });\n\n let propertiesById = keyBy(properties, 'id');\n let relationsById = keyBy(relations, 'id');\n\n let model_names = {};\n this.schema.obj_models.forEach((m) => {\n model_names[m.id] = m.name;\n });\n\n return {\n model,\n properties,\n relations,\n propertiesById,\n relationsById,\n haveRelations: !isEmpty(relations),\n model_names,\n values,\n relationRefs: [],\n }\n },\n methods: {\n /** Get values in the raw format without grouping */\n collectData() {\n let values = [];\n forEach(objCopy(this.values), (vv, prop_model_id) => {\n for (let v of vv) {\n if (isEqual(v, {\"String\": \"\"}) && this.properties[prop_model_id].optional) {\n continue;\n }\n\n values.push({\n model: castId(prop_model_id),\n value: v\n })\n }\n })\n\n let relations = [];\n for (let rref of this.relationRefs) {\n for (let r of rref.collectData()) {\n relations.push(r);\n }\n }\n\n return {\n model: this.model.id,\n values,\n relations,\n };\n },\n\n trySave() {\n let data;\n try {\n data = this.collectData();\n } catch (e) {\n alert(e.message);\n return;\n }\n console.log('Try save', data);\n\n axios({\n method: 'post',\n url: '/object/create',\n data: data\n })\n .then(function (response) {\n location.href = '/objects';\n })\n .catch(function (error) {\n // TODO show error toast instead\n alert(error.response ?\n error.response.data :\n error)\n });\n },\n\n setRelationRef(el) {\n if (el) {\n this.relationRefs.push(el)\n }\n },\n },\n beforeUpdate() {\n this.relationRefs = []\n },\n mounted() {\n this.$el.parentNode\n .classList.add('EditForm');\n }\n}\n</script>\n\n<template>\n <div class=\"container\">\n <div class=\"cols\">\n <div class=\"col col-9\">\n <h1>New {{ model.name }}</h1>\n </div>\n <div class=\"col col-3 text-right\">\n <button @click=\"trySave\" class=\"btn btn-primary\">\n <i class=\"icon icon-check\"></i>Save\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"form-horizontal container\">\n <property v-for=\"(property, pi) in properties\" :model=\"property\" :values=\"values[property.id]\" :key=\"pi\"></property>\n </div>\n\n <div v-if=\"haveRelations\">\n <h3>Relations</h3>\n\n <new-relation\n v-for=\"relation in relations\"\n :ref=\"setRelationRef\"\n :model_id=\"relation.id\"\n :objects=\"objects\"\n :schema=\"schema\"\n ></new-relation>\n </div>\n</template>\n","<script>\nimport {castId, keyBy, objCopy, isEmpty} from \"../utils\";\nimport forEach from \"lodash-es/forEach\";\nimport isEqual from \"lodash-es/isEqual\";\n\nexport default {\n props: ['model_id', 'schema', 'objects'],\n name: \"NewRelationForm\",\n data() {\n const model = this.schema.rel_models.find((m) => m.id === this.model_id);\n if(!model) throw Error(\"Relation model not exist\");\n\n let properties = this.schema.prop_models.filter((m) => m.object === model.id);\n\n let propertiesById = {};\n if (!isEmpty(properties)) {\n propertiesById = keyBy(properties, 'id');\n }\n\n let related_model = this.schema.obj_models.find((m) => m.id === model.related);\n\n if(!related_model) throw Error(\"Related model not exist\");\n\n let choices = {};\n this.objects.forEach((obj) => {\n if (obj.model === model.related) {\n choices[obj.id] = obj.name;\n }\n });\n\n let instances = [];\n if (!model.optional) {\n // TODO avoid duplicated code\n let values = {};\n forEach(this.properties, (p) => {\n if (p.optional) {\n values[p.id] = [];\n } else {\n values[p.id] = [objCopy(p.default)];\n }\n });\n instances.push({\n related: '',\n values\n })\n }\n\n return {\n model,\n related_model,\n properties,\n propertiesById,\n object_names: choices,\n instances,\n }\n },\n methods: {\n collectData() {\n let relations = [];\n forEach(objCopy(this.instances), (instance) => {\n if (isEmpty(instance.related)) {\n if (!this.model.optional) {\n throw new Error(`Relation \"${this.model.name}\" is required`)\n }\n return; // continue\n }\n\n let values = [];\n forEach(instance.values, (vv, prop_model_id) => {\n\n for (let v of vv) {\n if (isEqual(v, {\"String\": \"\"}) && this.propertiesById[prop_model_id].optional) {\n continue;\n }\n\n values.push({\n model: castId(prop_model_id),\n value: v\n });\n }\n })\n\n relations.push({\n model: this.model.id,\n related: castId(instance.related),\n values\n });\n })\n return relations;\n },\n\n addInstance() {\n let values = {};\n forEach(this.properties, (p) => {\n if (p.optional) {\n values[p.id] = [];\n } else {\n values[p.id] = [objCopy(p.default)];\n }\n });\n this.instances.push({\n model: this.model.id,\n related: '',\n values\n })\n },\n\n removeInstance(ri) {\n this.instances.splice(ri, 1)\n }\n }\n}\n</script>\n\n<template>\n <div class=\"form-horizontal panel mt-1 mb-1 p-2\" v-for=\"(instance, ri) in instances\" :key=\"ri\">\n <div class=\"form-group cols\">\n <div class=\"col-3 pl-2\">\n <label class=\"form-label text-bold\">{{ model.name }}</label>\n </div>\n <div class=\"col-7\">\n <select class=\"form-select input-inline\" v-model=\"instance.related\">\n <option v-for=\"(name, id) in object_names\" :value=\"id\">{{name}}</option>\n </select>\n </div>\n <div class=\"col-2 text-right pr-2\">\n <button type=\"button\" class=\"btn btn-delete\" v-if=\"model.multiple || model.optional && instances.length > 0\"\n @click=\"removeInstance(ri)\"><i class=\"icon-delete icon\"></i>Delete</button>\n </div>\n </div>\n\n <property v-for=\"property in properties\"\n :model=\"property\"\n :values=\"instance.values[property.id]\" :key=\"property.id\"></property>\n </div>\n\n <div class=\"mt-2 mb-2\">\n <button type=\"button\" class=\"btn\" v-if=\"model.multiple || model.optional && instances.length===0\"\n @click=\"addInstance\">\n <i class=\"icon icon-plus\"></i>Add {{ model.name }}\n </button>\n </div>\n</template>\n","<script>\nimport {castId, keyBy, objCopy, isEmpty} from \"../utils\";\nimport forEach from \"lodash-es/forEach\";\nimport isEqual from \"lodash-es/isEqual\";\nimport axios from \"axios\";\n\nexport default {\n props: ['object', 'schema', 'objects'],\n name: \"EditObjectForm\",\n data() {\n let object = this.object;\n\n const model = this.schema.obj_models.find((m) => m.id === object.model);\n let properties = this.schema.prop_models.filter((m) => m.object === model.id);\n let relations = this.schema.rel_models.filter((m) => m.object === model.id);\n\n let values = {};\n properties.forEach((p) => {\n let existing = object.values[p.id] || [];\n\n if (existing.length) {\n values[p.id] = existing;\n } else {\n if (p.optional) {\n values[p.id] = [];\n } else {\n values[p.id] = [\n // this is the format used for values\n {\n // it can also have model: ... here\n value: objCopy(p.default)\n }\n ];\n }\n }\n });\n\n let propertiesById = keyBy(properties, 'id');\n let relationsById = keyBy(relations, 'id');\n\n let model_names = {};\n this.schema.obj_models.forEach((m) => {\n model_names[m.id] = m.name;\n });\n\n return {\n model,\n properties,\n propertiesById,\n relations,\n relationsById,\n haveRelations: !isEmpty(relations),\n model_names,\n values,\n name: object.name,\n relationRefs: [],\n }\n },\n methods: {\n /** Get values in the raw format without grouping */\n collectData() {\n if (isEmpty(this.name)) {\n throw new Error(\"Name is required\");\n }\n\n let values = [];\n forEach(objCopy(this.values), (vv, prop_model_id) => {\n for (let v of vv) {\n if (isEqual(v.value, {\"String\": \"\"}) && this.propertiesById[prop_model_id].optional) {\n continue;\n }\n\n v.model = castId(prop_model_id);\n values.push(v);\n }\n })\n\n let relations = [];\n for (let rref of this.relationRefs) {\n for (let r of rref.collectData()) {\n relations.push(r);\n }\n }\n\n return {\n model: this.object.model, // string is fine\n id: this.object.id,\n values,\n relations,\n };\n },\n\n trySave() {\n let data;\n try {\n data = this.collectData();\n } catch (e) {\n alert(e.message);\n return;\n }\n console.log('Try save', data);\n\n axios({\n method: 'post',\n url: `/object/update/${this.object.id}`,\n data: data\n })\n .then((response) => {\n location.href = `/object/detail/${this.object.id}`;\n })\n .catch((error) => {\n // TODO show error toast instead\n alert(error.response ?\n error.response.data :\n error)\n });\n },\n\n setRelationRef(el) {\n if (el) {\n this.relationRefs.push(el)\n }\n },\n },\n beforeUpdate() {\n this.relationRefs = []\n },\n mounted() {\n this.$el.parentNode\n .classList.add('EditForm');\n }\n}\n</script>\n\n<template>\n <div class=\"container\">\n <div class=\"cols\">\n <div class=\"col col-9\">\n <h1>Edit {{ model.name }}</h1>\n </div>\n <div class=\"col col-3 text-right\">\n <button type=\"button\" @click=\"trySave\" class=\"btn btn-primary\">\n <i class=\"icon icon-check\"></i>Save\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"form-horizontal container\">\n <edit-property v-for=\"property in properties\" :model=\"property\" :values=\"values[property.id]\" :key=\"property.id\"></edit-property>\n </div>\n\n <div v-if=\"haveRelations\">\n <h3>Relations</h3>\n\n <edit-relation\n v-for=\"relation in relations\"\n :ref=\"setRelationRef\"\n :model_id=\"relation.id\"\n :objects=\"objects\"\n :initialInstances=\"object.relations[relation.id]\"\n :schema=\"schema\"\n ></edit-relation>\n </div>\n</template>\n","<script>\nimport {castId, isEmpty, keyBy, objCopy} from \"../utils\";\nimport forEach from \"lodash-es/forEach\";\nimport isEqual from \"lodash-es/isEqual\";\n\nexport default {\n props: ['model_id', 'schema', 'objects', 'initialInstances'],\n name: \"EditRelationForm\",\n data() {\n const model = this.schema.rel_models.find((m) => m.id === this.model_id);\n if(!model) throw Error(\"Relation model not exist\");\n\n let properties = this.schema.prop_models.filter((m) => m.object === model.id);\n\n let propertiesById = {};\n if (!isEmpty(properties)) {\n propertiesById = keyBy(properties, 'id');\n }\n\n let related_model = this.schema.obj_models.find((m) => m.id === model.related);\n\n if(!related_model) throw Error(\"Related model not exist\");\n\n let choices = {};\n this.objects.forEach((obj) => {\n if (obj.model === model.related) {\n choices[obj.id] = obj.name;\n }\n });\n\n return {\n model,\n related_model,\n properties,\n propertiesById,\n object_names: choices,\n instances: objCopy(this.initialInstances),\n }\n },\n methods: {\n collectData() {\n console.log('relation->collect', this.instances);\n let relations = [];\n forEach(objCopy(this.instances), (instance) => {\n console.log('a instance', instance);\n if (isEmpty(instance.related)) {\n if (!this.model.optional) {\n throw new Error(`Relation \"${this.model.name}\" is required`)\n }\n console.log(\"empty related\", instance.related);\n return; // continue\n }\n\n let values = [];\n forEach(instance.values, (vv, prop_model_id) => {\n for (let v of vv) {\n if (isEqual(v.value, {\"String\": \"\"}) && this.propertiesById[prop_model_id].optional) {\n continue;\n }\n v.model = castId(prop_model_id);\n values.push(v);\n }\n })\n instance.related = castId(instance.related);\n instance.model = this.model.id;\n instance.values = values;\n relations.push(instance);\n })\n return relations;\n },\n\n addInstance() {\n console.log('Add instance');\n let values = {};\n forEach(this.properties, (p) => {\n if (p.optional) {\n values[p.id] = [];\n } else {\n values[p.id] = [{id: null, value: objCopy(p.default)}];\n }\n });\n this.instances.push({\n related: '',\n values\n })\n },\n\n removeInstance(ri) {\n this.instances.splice(ri, 1)\n }\n }\n}\n</script>\n\n<template>\n <div class=\"form-horizontal panel mt-1 mb-1 p-2\" v-for=\"(instance, ri) in instances\" :key=\"ri\">\n <div class=\"form-group cols\">\n <div class=\"col-3 pl-2\">\n <label class=\"form-label text-bold\">{{ model.name }}</label>\n </div>\n <div class=\"col-7\">\n <select class=\"form-select input-inline\" v-model=\"instance.related\">\n <option v-for=\"(name, id) in object_names\" :value=\"id\">{{name}}</option>\n </select>\n </div>\n <div class=\"col-2 text-right pr-2\">\n <button type=\"button\" class=\"btn btn-delete\" v-if=\"model.multiple || model.optional && instances.length > 0\"\n @click=\"removeInstance(ri)\"><i class=\"icon-delete icon\"></i>Delete</button>\n </div>\n </div>\n\n <edit-property v-for=\"property in properties\"\n :model=\"property\"\n :values=\"instance.values[property.id]\" :key=\"property.id\"></edit-property>\n </div>\n\n <div class=\"mt-2 mb-2\">\n <button type=\"button\" class=\"btn\" v-if=\"model.multiple || model.optional && instances.length==0\"\n @click=\"addInstance\">\n <i class=\"icon icon-plus\"></i>Add {{ model.name }}\n </button>\n </div>\n</template>\n","<script>\nimport {objCopy, uniqueId} from \"../utils\";\nimport * as Vue from 'vue';\n\nexport default {\n name: \"EditPropertyField\",\n props: ['model', 'values'],\n data() {\n return {\n widget_id: uniqueId(),\n fieldRefs: [],\n }\n },\n methods: {\n addValue(event) {\n this.values.push({\n model: this.model.id,\n value: objCopy(this.model.default)\n });\n\n Vue.nextTick(() => {\n this.fieldRefs[this.values.length - 1].focus();\n })\n },\n removeValue(vi) {\n this.values.splice(vi, 1);\n },\n setFieldRef(el) {\n if (el) {\n this.fieldRefs.push(el)\n }\n },\n },\n beforeUpdate() {\n this.fieldRefs = []\n }\n}\n</script>\n\n<template>\n <div v-if=\"values.length===0\" class=\"form-group cols\">\n <div class=\"col-3 pl-2\">\n <label class=\"form-label\">{{ model.name }}</label>\n </div>\n <div class=\"col-9 pr-2\">\n <button type=\"button\" class=\"btn\" @click=\"addValue\">\n <i class=\"icon icon-plus\"></i>Add\n </button>\n </div>\n </div>\n\n <div v-if=\"values.length>0\" class=\"form-group cols\" v-for=\"(instance, vi) in values\" :key=\"vi\">\n <div class=\"col-3 pl-2\">\n <label class=\"form-label\" :for=\"widget_id\" v-if=\"vi===0\">{{ model.name }}</label>\n </div>\n <div class=\"col-9 pr-2\">\n <string-value :ref=\"setFieldRef\" :value=\"instance.value\" :id=\"vi === 0 ? widget_id : null\" v-if=\"model.data_type==='String' && !model.options.multiline\"></string-value>\n <text-value :ref=\"setFieldRef\" :value=\"instance.value\" :id=\"vi === 0 ? widget_id : null\" v-if=\"model.data_type==='String' && model.options.multiline\"></text-value>\n <integer-value :ref=\"setFieldRef\" :value=\"instance.value\" :id=\"vi === 0 ? widget_id : null\" v-if=\"model.data_type==='Integer'\"></integer-value>\n <decimal-value :ref=\"setFieldRef\" :value=\"instance.value\" :id=\"vi === 0 ? widget_id : null\" v-if=\"model.data_type==='Decimal'\"></decimal-value>\n <boolean-value :ref=\"setFieldRef\" :value=\"instance.value\" :id=\"vi === 0 ? widget_id : null\" v-if=\"model.data_type==='Boolean'\"></boolean-value>\n <button type=\"button\" :class=\"['btn','btn-delete', (model.data_type==='String' && model.options.multiline)?'mt-1': 'ml-1']\" @click=\"removeValue(vi)\" v-if=\"values.length > 1 || model.optional\">\n <i class=\"icon icon-cross\"></i>Remove\n </button>\n </div>\n </div>\n\n <div v-if=\"values.length>0 && model.multiple\" class=\"form-group cols\">\n <div class=\"col-3 pl-2\"></div>\n <div class=\"col-9 pr-2\">\n <button type=\"button\" class=\"btn\" @click=\"addValue\">\n <i class=\"icon icon-plus\"></i>Add\n </button>\n </div>\n </div>\n</template>\n","import * as Vue from \"vue\";\n\nimport './style/app.scss';\n\nimport StringValue from \"./components/value/StringValue.vue\";\nimport DecimalValue from \"./components/value/DecimalValue.vue\";\nimport BooleanValue from \"./components/value/BooleanValue.vue\";\nimport IntegerValue from \"./components/value/IntegerValue.vue\";\nimport TextValue from \"./components/value/TextValue.vue\";\nimport PropertyField from \"./components/PropertyField.vue\";\n\nimport NewObjectForm from \"./components/NewObjectForm.vue\";\nimport NewRelationForm from \"./components/NewRelationForm.vue\"\n\nimport EditObjectForm from \"./components/EditObjectForm.vue\";\nimport EditRelationForm from \"./components/EditRelationForm.vue\";\nimport EditPropertyField from \"./components/EditPropertyField.vue\";\nimport {qs} from \"./utils\";\n\nfunction registerComponents(app) {\n app.component('string-value', StringValue);\n app.component('text-value', TextValue);\n app.component('integer-value', IntegerValue);\n app.component('decimal-value', DecimalValue);\n app.component('boolean-value', BooleanValue);\n}\n\nwindow.onLoad = function (callback) {\n document.addEventListener('DOMContentLoaded', callback);\n}\n\nwindow.Yopa = {\n newObjectForm(opts) {\n // Opts: model_id, schema, objects (named objects for relations)\n let app = window.app = Vue.createApp(NewObjectForm, opts);\n registerComponents(app);\n app.component('new-relation', NewRelationForm);\n app.component('property', PropertyField);\n let instance = app.mount('#new-object-form');\n\n // ...\n return instance;\n },\n editObjectForm(opts) {\n // Opts: model_id, schema, objects (named objects for relations)\n let app = window.app = Vue.createApp(EditObjectForm, opts);\n registerComponents(app);\n app.component('edit-relation', EditRelationForm);\n app.component('edit-property', EditPropertyField);\n let instance = app.mount('#edit-object-form');\n\n // ...\n return instance;\n },\n propertyEditForm() {\n // multiple and unique are XORed. This is also enforced server-side\n let multiple = qs('#multiple');\n let unique = qs('#unique');\n let type = qs('#data_type');\n unique.addEventListener('input', function () {\n multiple.checked &= !unique.checked;\n })\n multiple.addEventListener('input', function () {\n unique.checked &= !multiple.checked;\n })\n\n type.addEventListener('input', function () {\n console.log(type.value);\n toggleOptionalBoxes();\n })\n function toggleOptionalBoxes() {\n qs('#string-options').classList.toggle('hidden', type.value !== 'String');\n }\n toggleOptionalBoxes();\n }\n};\n\nonLoad(() => {\n setTimeout(() => {\n let toasts = document.getElementsByClassName('toast');\n if (toasts.length) {\n toasts[0].style.display = 'none';\n }\n }, 3000)\n})\n"],"names":["makeMap","str","expectsLowerCase","map","Object","create","list","split","i","length","val","toLowerCase","isGloballyWhitelisted","isSpecialBooleanAttr","normalizeStyle","value","isArray","res","item","normalized","isString","parseStringStyle","key","isObject","listDelimiterRE","propertyDelimiterRE","cssText","ret","forEach","tmp","trim","normalizeClass","name","isHTMLTag","isSVGTag","looseEqual","a","b","aValidType","isDate","bValidType","getTime","equal","looseCompareArrays","keys","aHasKey","hasOwnProperty","bHasKey","String","looseIndexOf","arr","findIndex","toDisplayString","JSON","stringify","replacer","_key","isMap","[object Object]","size","entries","reduce","isSet","values","isPlainObject","EMPTY_OBJ","freeze","EMPTY_ARR","NOOP","NO","onRE","isOn","test","isModelListener","startsWith","extend","assign","remove","el","indexOf","splice","prototype","hasOwn","call","Array","toTypeString","Date","isFunction","isSymbol","isPromise","then","catch","objectToString","toString","toRawType","slice","isIntegerKey","parseInt","isReservedProp","cacheStringFunction","fn","cache","camelizeRE","camelize","replace","_","c","toUpperCase","hyphenateRE","hyphenate","capitalize","charAt","toHandlerKey","hasChanged","oldValue","invokeArrayFns","fns","arg","def","obj","defineProperty","configurable","enumerable","toNumber","n","parseFloat","isNaN","_globalThis","targetMap","WeakMap","effectStack","activeEffect","ITERATE_KEY","Symbol","MAP_KEY_ITERATE_KEY","effect","options","_isEffect","isEffect","raw","active","scheduler","undefined","includes","cleanup","trackStack","push","shouldTrack","pop","resetTracking","id","uid","allowRecurse","deps","createReactiveEffect","lazy","stop","onStop","delete","pauseTracking","last","track","target","type","depsMap","get","set","Map","dep","Set","has","add","onTrack","trigger","newValue","oldTarget","effects","effectsToAdd","onTrigger","builtInSymbols","getOwnPropertyNames","filter","createGetter","shallowGet","readonlyGet","shallowReadonlyGet","arrayInstrumentations","isReadonly","shallow","receiver","readonlyMap","reactiveMap","targetIsArray","Reflect","isRef","readonly","reactive","method","args","toRaw","this","l","apply","createSetter","hadKey","Number","result","mutableHandlers","deleteProperty","ownKeys","readonlyHandlers","console","warn","shallowReactiveHandlers","shallowReadonlyHandlers","toReactive","toReadonly","toShallow","getProto","v","getPrototypeOf","get$1","isShallow","rawTarget","rawKey","wrap","has$1","set$1","checkIdentityKeys","deleteEntry","clear","hadItems","createForEach","callback","thisArg","observed","createIterableMethod","targetIsMap","isPair","iterator","isKeyOnly","innerIterator","done","next","createReadonlyMethod","mutableInstrumentations","shallowInstrumentations","readonlyInstrumentations","createInstrumentationGetter","instrumentations","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","createReactiveObject","shallowReadonly","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","isExtensible","rawType","targetTypeMap","proxy","Proxy","isReactive","isProxy","r","Boolean","__v_isRef","shallowUnwrapHandlers","unref","ref","proxyRefs","objectWithRefs","ObjectRefImpl","_object","newVal","ComputedRefImpl","getter","_setter","_dirty","_value","stack","pushWarningContext","vnode","popWarningContext","msg","instance","component","appWarnHandler","appContext","config","warnHandler","trace","currentVNode","normalizedStack","recurseCount","parentInstance","parent","getComponentTrace","callWithErrorHandling","join","formatComponentName","warnArgs","logs","entry","postfix","isRoot","open","close","props","formatProps","formatTraceEntry","formatTrace","formatProp","ErrorTypeStrings","bc","bm","m","bu","u","bum","um","da","ec","rtc","rtg","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","err","handleError","callWithAsyncErrorHandling","throwInDev","contextVNode","cur","exposedInstance","errorInfo","errorCapturedHooks","appErrorHandler","errorHandler","info","error","logError","isFlushing","isFlushPending","queue","flushIndex","pendingPreFlushCbs","activePreFlushCbs","preFlushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","Promise","resolve","currentFlushPromise","currentPreFlushParentJob","nextTick","p","bind","queueJob","job","queueFlush","flushJobs","queueCb","cb","activeQueue","pendingQueue","index","queuePostFlushCb","flushPreFlushCbs","seen","parentJob","checkRecursiveUpdates","flushPostFlushCbs","deduped","sort","getId","Infinity","count","Error","isHmrUpdating","hmrDirtyComponents","global","self","window","__VUE_HMR_RUNTIME__","createRecord","tryWrap","rerender","newRender","record","render","from","instances","renderCache","update","reload","newComp","isClassComponent","__vccOpts","location","e","devtools","devtoolsComponentAdded","createDevtoolsComponentHook","devtoolsComponentUpdated","devtoolsComponentRemoved","hook","emit","app","event","rawArgs","emitsOptions","propsOptions","validator","modelArg","modifiersKey","number","params","devtoolsComponentEmit","lowerCaseEvent","handlerName","handler","onceHandler","emitted","normalizeEmitsOptions","comp","asMixin","deopt","__emits","emits","hasExtends","extendEmits","mixins","extends","isEmitListener","currentRenderingInstance","setCurrentRenderingInstance","accessedAttrs","markAttrsAccessed","renderComponentRoot","Component","withProxy","slots","attrs","data","setupState","ctx","fallthroughAttrs","shapeFlag","proxyToUse","normalizeVNode","getFunctionalFallthrough","setRoot","root","patchFlag","getChildRoot","inheritAttrs","some","filterModelListeners","cloneVNode","Comment","allAttrs","eventAttrs","extraAttrs","dirs","isElementRoot","concat","transition","createVNode","rawChildren","children","dynamicChildren","childRoot","filterSingleRoot","dynamicIndex","updatedRoot","singleRoot","child","isVNode","hasPropsChanged","prevProps","nextProps","nextKeys","normalizeSuspenseSlot","s","singleChild","isRenderingCompiledSlot","setCompiledSlotRendering","initProps","rawProps","isStateful","isSSR","InternalObjectKey","setFullProps","validateProps","needCastKeys","camelKey","rawCurrentProps","resolvePropValue","opt","hasDefault","defaultValue","default","Function","setCurrentInstance","normalizePropsOptions","__props","extendProps","normalizedKey","validatePropName","prop","booleanIndex","getTypeIndex","stringIndex","getType","ctor","match","isSameType","expectedTypes","len","rawValues","validateProp","isAbsent","required","isValid","types","valid","expectedType","assertType","message","receivedType","expectedValue","styleValue","receivedValue","isExplicable","elem","isBoolean","getInvalidTypeMessage","isSimpleType","t","injectHook","currentInstance","prepend","hooks","wrappedHook","__weh","isUnmounted","unshift","createHook","lifecycle","isInSSRComponentSetup","onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onUnmounted","onRenderTriggered","onRenderTracked","INITIAL_WATCHER_VALUE","watch","source","doWatch","immediate","deep","flush","warnInvalidSource","forceTrigger","_shallow","traverse","onInvalidate","baseGetter","runner","queuePostRenderEffect","suspense","isMounted","queuePreFlushCb","recordInstanceBoundEffect","instanceWatch","publicThis","isKeepAlive","__isKeepAlive","registerKeepAliveHook","__wdc","current","isDeactivated","injectToKeepAliveRoot","keepAliveRoot","injected","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","renderFnWithContext","openBlock","owner","closeBlock","_c","withCtx","normalizeObjectSlots","rawSlots","_ctx","normalizeVNodeSlots","isBuiltInDirective","validateDirectiveName","withDirectives","directives","internalInstance","bindings","dir","modifiers","mounted","updated","invokeDirectiveHook","prevVNode","oldBindings","binding","createAppContext","isNativeTag","performance","globalProperties","optionMergeStrategies","isCustomElement","components","provides","supported","perf","createAppAPI","hydrate","rootComponent","rootProps","context","installedPlugins","_uid","_component","_props","_container","_context","version","use","plugin","install","mixin","validateComponentName","directive","rootContainer","isHydrate","__vue_app__","Fragment","Text","Static","devtoolsInitApp","devtoolsUnmountApp","provide","startMeasure","isSupported","mark","endMeasure","startTag","endTag","measure","clearMarks","pendingBranch","setRef","rawRef","oldRawRef","parentSuspense","__asyncLoader","exposed","oldRef","refs","doSet","createRenderer","createHydrationFns","insert","hostInsert","hostRemove","patchProp","hostPatchProp","forcePatchProp","hostForcePatchProp","createElement","hostCreateElement","createText","hostCreateText","createComment","hostCreateComment","setText","hostSetText","setElementText","hostSetElementText","parentNode","hostParentNode","nextSibling","hostNextSibling","setScopeId","hostSetScopeId","cloneNode","hostCloneNode","insertStaticContent","hostInsertStaticContent","patch","n1","n2","container","anchor","parentComponent","isSVG","optimized","isSameVNodeType","getNextHostNode","unmount","processText","processCommentNode","mountStaticNode","patchStaticNode","processFragment","processElement","processComponent","process","internals","removeStaticNode","moveStaticNode","mountElement","patchElement","vnodeHook","scopeId","is","mountChildren","unmountChildren","onVnodeBeforeMount","invokeVNodeHook","needCallTransitionHooks","persisted","beforeEnter","onVnodeMounted","enter","treeOwnerId","__scopeId","subTree","start","cloneIfMounted","oldProps","newProps","onVnodeBeforeUpdate","patchProps","class","style","propsToUpdate","dynamicProps","prev","areChildrenSVG","patchBlockChildren","__hmrId","traverseStaticChildren","patchChildren","onVnodeUpdated","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","activate","mountComponent","updateComponent","initialVNode","emptyAppContext","uid$1","accessCache","setupContext","suspenseId","pendingId","asyncDep","asyncResolved","publicPropertiesMap","createRenderContext","createComponentInstance","registerHMR","renderer","initSlots","setupResult","names","PublicInstanceProxyHandlers","exposePropsOnRenderContext","setup","expose","attrHandlers","createSetupContext","resolvedResult","handleSetupResult","finishComponentSetup","setupStatefulComponent","setupComponent","registerDep","setupRenderEffect","placeholder","nextVNode","prevChildren","nextChildren","$stable","shouldUpdateComponent","updateComponentPreRender","invalidateJob","originNext","nextTree","prevTree","updateHOCHostEl","hydrateNode","scopedInitialVNode","createDevEffectOptions","rawPrevProps","kebabKey","camelizedKey","updateProps","needDeletionCheck","deletionComparisonTarget","updateSlots","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","oldLength","newLength","commonLength","Math","min","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","j","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","arrI","getSequence","nextIndex","move","moveType","leave","delayLeave","afterLeave","performLeave","doRemove","deactivate","shouldInvokeDirs","onVnodeBeforeUnmount","unmountComponent","isTeleportDisabled","onVnodeUnmounted","removeFragment","performRemove","end","unregisterHMR","_vnode","mt","mc","pc","pbc","o","createApp","baseCreateRenderer","ch1","ch2","disabled","COMPONENTS","resolveComponent","warnMissing","selfName","getComponentName","resolveAsset","NULL_DYNAMIC_COMPONENT","registry","blockStack","currentBlock","disableTracking","createBlock","__v_isVNode","normalizeKey","normalizeRef","isBlockNode","cloned","normalizeChildren","klass","__isSuspense","isSuspense","__isTeleport","isTeleport","__v_skip","ssContent","ssFallback","targetAnchor","staticCount","content","fallback","normalizeSuspenseChildren","_createVNode","extraProps","mergeRef","mergedProps","toMerge","existing","incoming","mergeProps","createTextVNode","text","flag","createCommentVNode","asBlock","slot","slotFlag","inject","treatDefaultAsFactory","arguments","isInBeforeCreate","applyOptions","deferredData","deferredWatch","deferredProvide","extendsOptions","dataOptions","computed","computedOptions","methods","watchOptions","provideOptions","injectOptions","beforeMount","beforeUpdate","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","unmounted","renderTracked","renderTriggered","errorCaptured","globalMixins","callSyncHook","applyMixins","checkDuplicateProperties","createDuplicateChecker","methodHandler","dataFn","resolveData","rawData","createWatcher","parentProvides","onDeactivated","onErrorCaptured","object","toRef","callHookFromMixins","base","callHookFromExtends","selfHook","baseHook","chainedMixins","path","segments","createPathGetter","mergeOptions","to","strats","getPublicInstance","$","$el","$data","$props","$attrs","$slots","$refs","$parent","$root","$emit","$options","__merged","$forceUpdate","$nextTick","$watch","normalizedProps","publicGetter","cssModule","__cssModules","RuntimeCompiledPublicInstanceProxyHandlers","unscopables","isBuiltInTag","appIsNativeTag","devtoolsRawSetupState","exposeSetupStateOnRenderContext","_rc","template","classifyRE","displayName","__file","inferFromRegistry","getterOrOptions","setter","computed$1","renderList","renderItem","isInteger","svgNS","doc","document","tempContainer","tempSVGContainer","nodeOps","insertBefore","removeChild","tag","createElementNS","createTextNode","node","nodeValue","textContent","querySelector","selector","setAttribute","temp","innerHTML","first","firstChild","importantRE","setStyle","setProperty","prefixed","rawName","cached","prefixCache","prefixes","autoPrefix","xlinkNS","_getNow","now","createEvent","timeStamp","cachedNow","reset","addEventListener","patchEvent","prevValue","nextValue","invokers","_vei","existingInvoker","optionsModifierRE","parseName","initialValue","invoker","attached","originalStop","stopImmediatePropagation","_stopped","patchStopImmediatePropagation","getNow","createInvoker","removeEventListener","nativeOnRE","getModelAssigner","onCompositionStart","composing","onCompositionEnd","initEvent","dispatchEvent","vModelText","_assign","castToNumber","domValue","activeElement","vModelCheckbox","modelValue","_modelValue","elementValue","getValue","checked","found","filtered","getCheckboxValue","setChecked","vModelSelect","isSetModel","selectedVal","selected","multiple","setSelected","_binding","isMultiple","option","optionValue","selectedIndex","rendererOptions","transitionClasses","_vtc","className","patchClass","removeAttribute","patchStyle","tagName","shouldSetAsProp","patchDOMProp","_trueValue","_falseValue","removeAttributeNS","setAttributeNS","patchAttr","writable","injectNativeTagCheck","mount","containerOrSelector","ShadowRoot","mode","normalizeContainer","Element","globalThis","__VUE__","__VUE_DEVTOOLS_GLOBAL_HOOK__","vueStyle","numberStyle","stringStyle","keywordStyle","formatter","header","__isVue","genRefFlag","formatValue","hasBody","formatInstance","blocks","createInstanceBlock","extractKeys","asRaw","Comp","extracted","isKeyOfType","opts","devtoolsFormatters","initCustomFormatter","initDev","input","focus","inputValue","Decimal","Integer","objectProto","isPrototype","Ctor","constructor","func","transform","nativeKeys","baseKeys","freeGlobal","freeSelf","nativeObjectToString","symToStringTag","toStringTag","baseGetTag","isOwn","unmasked","getRawTag","coreJsData","maskSrcKey","exec","IE_PROTO","funcToString","toSource","reIsHostCtor","funcProto","reIsNative","RegExp","baseIsNative","isMasked","getNative","DataView","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","ctorString","isObjectLike","baseIsArguments","propertyIsEnumerable","isArguments","isLength","isArrayLike","freeExports","exports","nodeType","freeModule","module","Buffer","isBuffer","typedArrayTags","freeProcess","nodeUtil","require","nodeIsTypedArray","isTypedArray","baseUnary","uniqueId","random","keyBy","array","keyfunc","objCopy","parse","castId","isEmpty","lodash_isEmpty","qs","widget_id","fieldRefs","model","Vue.nextTick","vi","arrayEach","iteratee","fromRight","baseFor","keysFunc","iterable","reIsUint","isIndex","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseTimes","baseEach","eachFunc","collection","createBaseEach","identity","isUndefined","utils","isArrayBuffer","isFormData","FormData","isArrayBufferView","isView","buffer","isNumber","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","merge","assignValue","stripBOM","charCodeAt","encode","encodeURIComponent","buildURL","url","paramsSerializer","serializedParams","parts","toISOString","hashmarkIndex","InterceptorManager","handlers","fulfilled","rejected","eject","h","InterceptorManager_1","transformData","headers","isCancel","__CANCEL__","normalizeHeaderName","normalizedName","createError","code","request","response","isAxiosError","toJSON","description","fileName","lineNumber","columnNumber","enhanceError","cookies","write","expires","domain","secure","cookie","toGMTString","read","decodeURIComponent","ignoreDuplicateOf","isURLSameOrigin","originURL","msie","userAgent","urlParsingNode","resolveURL","href","protocol","host","search","hash","hostname","port","pathname","requestURL","parsed","xhr","reject","requestData","requestHeaders","XMLHttpRequest","auth","username","password","unescape","Authorization","btoa","baseURL","requestedURL","fullPath","relativeURL","combineURLs","timeout","onreadystatechange","readyState","status","responseURL","responseHeaders","getAllResponseHeaders","line","substr","responseType","responseText","statusText","validateStatus","settle","onabort","onerror","ontimeout","timeoutErrorMessage","xsrfValue","withCredentials","xsrfCookieName","xsrfHeaderName","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","cancel","abort","send","DEFAULT_CONTENT_TYPE","Content-Type","setContentTypeIfUnset","adapter","defaults","require$$0","transformRequest","transformResponse","maxContentLength","maxBodyLength","common","Accept","defaults_1","throwIfCancellationRequested","throwIfRequested","dispatchRequest","reason","mergeConfig","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","axiosKeys","otherKeys","Axios","instanceConfig","interceptors","chain","interceptor","shift","getUri","Axios_1","Cancel","Cancel_1","CancelToken","executor","TypeError","resolvePromise","token","CancelToken_1","createInstance","defaultConfig","axios","require$$1","require$$2","all","promises","spread","payload","axios_1","_default","eq","other","assocIndexOf","ListCache","__data__","nativeCreate","Hash","getMapData","MapCache","string","Stack","pairs","LARGE_ARRAY_SIZE","SetCache","arraySome","predicate","equalArrays","bitmask","customizer","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","Uint8Array","mapToArray","setToArray","symbolProto","symbolValueOf","valueOf","nativeGetSymbols","getOwnPropertySymbols","getSymbols","resIndex","arrayFilter","symbol","getAllKeys","symbolsFunc","offset","arrayPush","baseGetAllKeys","argsTag","arrayTag","objectTag","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","byteLength","byteOffset","convert","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","skipCtor","objValue","objCtor","othCtor","equalObjects","baseIsEqual","isEqual","schema","obj_models","find","model_id","properties","prop_models","relations","rel_models","optional","propertiesById","relationsById","model_names","haveRelations","relationRefs","vv","prop_model_id","rref","collectData","alert","log","classList","related_model","related","choices","objects","object_names","ri","initialInstances","registerComponents","StringValue","TextValue","IntegerValue","DecimalValue","BooleanValue","onLoad","Yopa","Vue.createApp","NewObjectForm","NewRelationForm","PropertyField","EditObjectForm","EditRelationForm","EditPropertyField","unique","toggleOptionalBoxes","toggle","setTimeout","toasts","getElementsByClassName","display"],"mappings":"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"}