forked from cuixiaorui/mini-vue
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmini-vue.cjs.js.map
1 lines (1 loc) · 148 KB
/
mini-vue.cjs.js.map
1
{"version":3,"file":"mini-vue.cjs.js","sources":["../src/mini-core/LanguageTranslator.ts","../src/mini-core/Debug.ts","../src/mini-core/index.ts","../node_modules/@vue/shared/dist/shared.esm-bundler.js","../node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../src/shared/shapeFlags.ts","../src/shared/index.ts","../src/runtime-core/vnode.ts","../src/runtime-core/h.ts","../src/runtime-core/componentProps.ts","../src/runtime-core/componentSlots.ts","../node_modules/tslib/tslib.es6.js","../src/runtime-core/componentEmits.ts","../src/runtime-core/componentPublicInstance.ts","../src/runtime-core/component.ts","../src/runtime-dom/index.ts","../src/runtime-core/scheduler.ts","../src/runtime-core/componentRenderUtils.ts","../src/runtime-core/renderer.ts","../src/runtime-core/createApp.ts","../src/runtime-core/apiInject.ts","../src/runtime-core/helpers/renderSlot.ts"],"sourcesContent":["// TODO 需要后面扩展 map 即可\nconst c2eMap = {\n 你好: \"hello\",\n \"调用 patch\": \"call patch function\",\n};\n\nconst e2cMap = {\n hello: \"你好\",\n};\n\nexport default class LanguageTranslator {\n private currentLanguage: string;\n constructor() {\n this.currentLanguage = process.env.LANGUAGE || \"cn\";\n // this.currentLanguage = \"en\";\n }\n\n private get currentMap(): any {\n return this.currentLanguage === \"cn\" ? e2cMap : c2eMap;\n }\n\n transition(text) {\n const result = this.currentMap[text];\n return result ? result : text;\n }\n}\n","// 使用: debug.mainPath(\"你好\")()\n// 必须使用两个括号,要保证 line 的正确性就得在要显示 line 的地方调用函数\n// console.log 这个函数不可以被封装\nexport default class Debug {\n private languageTranslator: any;\n constructor(languageTranslator) {\n // 文本转换器 for support english\n this.languageTranslator = languageTranslator;\n }\n\n mainPath(text) {\n return window.console.log.bind(\n window.console,\n `%c[ mainPath ] ${this.languageTranslator.transition(text)}`,\n \"color:red\"\n );\n }\n}\n","// 这个文件夹是 mini-vue 库自己专用的\n// 用户无需关心\nimport LanguageTranslator from \"./LanguageTranslator\";\nimport Debug from \"./Debug\";\n\nconst debug = new Debug(new LanguageTranslator());\nwindow.debug = debug;\n","/**\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 = '"';\r\n break;\r\n case 38: // &\r\n escaped = '&';\r\n break;\r\n case 39: // '\r\n escaped = ''';\r\n break;\r\n case 60: // <\r\n escaped = '<';\r\n break;\r\n case 62: // >\r\n escaped = '>';\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","// 组件的类型\nexport const enum ShapeFlags {\n // 最后要渲染的 element 类型\n ELEMENT = 1,\n // 组件类型\n STATEFUL_COMPONENT = 1 << 2,\n // vnode 的 children 为 string 类型\n TEXT_CHILDREN = 1 << 3,\n // vnode 的 children 为数组类型\n ARRAY_CHILDREN = 1 << 4,\n // vnode 的 children 为 slots 类型\n SLOTS_CHILDREN = 1 << 5\n }\n ","export * from \"./shapeFlags\";\n\nconst camelizeRE = /-(\\w)/g;\n/**\n * @private\n * 把烤肉串命名方式转换成驼峰命名方式\n */\nexport const camelize = (str: string): string => {\n return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : \"\"));\n};\n\n/**\n * @private\n * 首字母大写\n */\nexport const capitalize = (str: string) =>\n str.charAt(0).toUpperCase() + str.slice(1);\n\n/**\n * @private\n * 添加 on 前缀,并且首字母大写\n */\nexport const toHandlerKey = (str: string) =>\n str ? `on${capitalize(str)}` : ``;\n","import { ShapeFlags } from \"../shared\";\n\nexport const createVNode = function (\n type: any,\n props?: any = {},\n children?: string | Array<any>\n) {\n // 注意 type 有可能是 string 也有可能是对象\n // 如果是对象的话,那么就是用户设置的 options\n // type 为 string 的时候\n // createVNode(\"div\")\n // type 为组件对象的时候\n // createVNode(App)\n const vnode = {\n el: null,\n component: null,\n key: props.key || null,\n type,\n props,\n children,\n shapeFlag: getShapeFlag(type),\n };\n\n // 基于 children 再次设置 shapeFlag\n if (Array.isArray(children)) {\n vnode.shapeFlag |= ShapeFlags.ARRAY_CHILDREN;\n } else if (typeof children === \"string\") {\n vnode.shapeFlag |= ShapeFlags.TEXT_CHILDREN;\n }\n\n normalizeChildren(vnode, children);\n\n return vnode;\n};\n\nexport function normalizeChildren(vnode, children) {\n if (typeof children === \"object\") {\n // 暂时主要是为了标识出 slots_children 这个类型来\n // 暂时我们只有 element 类型和 component 类型的组件\n // 所以我们这里除了 element ,那么只要是 component 的话,那么children 肯定就是 slots 了\n if (vnode.shapeFlag & ShapeFlags.ELEMENT) {\n // 如果是 element 类型的话,那么 children 肯定不是 slots\n } else {\n // 这里就必然是 component 了,\n vnode.shapeFlag |= ShapeFlags.SLOTS_CHILDREN;\n }\n }\n}\n// 用 symbol 作为唯一标识\nexport const Text = Symbol(\"Text\");\n\n/**\n * @private\n */\nexport function createTextVNode(text: string = \" \") {\n return createVNode(Text, {}, text);\n}\n\n// 标准化 vnode 的格式\n// 其目的是为了让 child 支持多种格式\nexport function normalizeVNode(child) {}\n\n// 基于 type 来判断是什么类型的组件\nfunction getShapeFlag(type: any) {\n return typeof type === \"string\"\n ? ShapeFlags.ELEMENT\n : ShapeFlags.STATEFUL_COMPONENT;\n}\n","import { createVNode } from \"./vnode\";\nexport const h = (type: string, props: any, children: string | Array<any>) => {\n return createVNode(type, props, children);\n};\n","export function initProps(instance, rawProps) {\n console.log(\"initProps\");\n\n // TODO\n // 应该还有 attrs 的概念\n // attrs\n // 如果组件声明了 props 的话,那么才可以进入 props 属性内\n // 不然的话是需要存储在 attrs 内\n // 这里暂时直接赋值给 instance.props 即可\n instance.props = rawProps;\n}\n","import { ShapeFlags } from \"../shared\";\nexport function initSlots(instance, children) {\n const { vnode } = instance;\n\n console.log(\"初始化 slots\");\n\n if (vnode.shapeFlag & ShapeFlags.SLOTS_CHILDREN) {\n normalizeObjectSlots(children, (instance.slots = {}));\n }\n}\n\nconst normalizeObjectSlots = (rawSlots, slots) => {\n for (const key in rawSlots) {\n const value = rawSlots[key];\n if (typeof value === \"function\") {\n // 把这个函数给到slots 对象上存起来\n // 后续在 renderSlots 中调用\n // TODO 这里没有对 value 做 normalize,\n // 默认 slots 返回的就是一个 vnode 对象\n slots[key] = value;\n }\n }\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { camelize, toHandlerKey } from \"../shared/index\";\nexport function emit(instance, event: string, ...rawArgs) {\n // 1. emit 是基于 props 里面的 onXXX 的函数来进行匹配的\n // 所以我们先从 props 中看看是否有对应的 event handler\n const props = instance.props;\n // ex: event -> click 那么这里取的就是 onClick\n // 让事情变的复杂一点如果是烤肉串命名的话,需要转换成 change-page -> changePage\n // 需要得到事件名称\n const handlerName = toHandlerKey(camelize(event));\n const handler = props[handlerName];\n if (handler) {\n handler(...rawArgs);\n }\n}\n","const publicPropertiesMap = {\n // 当用户调用 instance.proxy.$emit 时就会触发这个函数\n // i 就是 instance 的缩写 也就是组件实例对象\n $emit: (i) => i.emit,\n $slots: (i) => i.slots,\n};\n\n// todo 需要让用户可以直接在 render 函数内直接使用 this 来触发 proxy\nexport const PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n // 用户访问 proxy[key]\n // 这里就匹配一下看看是否有对应的 function\n // 有的话就直接调用这个 function\n const { setupState } = instance;\n console.log(`触发 proxy hook , key -> : ${key}`);\n\n if (key !== \"$\") {\n // 说明不是访问 public api\n // 先检测访问的 key 是否存在于 setupState 中, 是的话直接返回\n if (key in setupState) {\n return setupState[key];\n }\n }\n\n const publicGetter = publicPropertiesMap[key];\n\n if (publicGetter) {\n return publicGetter(instance);\n }\n },\n};\n","import { initProps } from \"./componentProps\";\nimport { initSlots } from \"./componentSlots\";\nimport { emit } from \"./componentEmits\";\nimport { PublicInstanceProxyHandlers } from \"./componentPublicInstance\";\nimport { proxyRefs } from \"@vue/reactivity\";\nimport { shallowReadonly } from \"@vue/reactivity\";\nexport function createComponentInstance(vnode, parent) {\n const instance = {\n type: vnode.type,\n vnode,\n props: {},\n parent,\n provides: parent ? parent.provides : {}, // 获取 parent 的 provides 作为当前组件的初始化值 这样就可以继承 parent.provides 的属性了\n proxy: null,\n isMounted: false,\n attrs: {}, // 存放 attrs 的数据\n slots: {}, // 存放插槽的数据\n ctx: {}, // context 对象\n setupState: {}, // 存储 setup 的返回值\n emit: () => {},\n };\n\n // 在 prod 坏境下的 ctx 只是下面简单的结构\n // 在 dev 环境下会更复杂\n instance.ctx = {\n _: instance,\n };\n\n // 赋值 emit\n // 这里使用 bind 把 instance 进行绑定\n // 后面用户使用的时候只需要给 event 和参数即可\n instance.emit = emit.bind(null, instance) as any;\n\n return instance;\n}\n\nexport function setupComponent(instance) {\n // 1. 处理 props\n // 取出存在 vnode 里面的 props\n const { props, children } = instance.vnode;\n initProps(instance, props);\n // 2. 处理 slots\n initSlots(instance, children);\n\n // 源码里面有两种类型的 component\n // 一种是基于 options 创建的\n // 还有一种是 function 的\n // 这里处理的是 options 创建的\n // 叫做 stateful 类型\n setupStatefulComponent(instance);\n}\n\nfunction setupStatefulComponent(instance) {\n // todo\n // 1. 先创建代理 proxy\n console.log(\"创建 proxy\");\n\n // proxy 对象其实是代理了 instance.ctx 对象\n // 我们在使用的时候需要使用 instance.proxy 对象\n // 因为 instance.ctx 在 prod 和 dev 坏境下是不同的\n instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers);\n // 用户声明的对象就是 instance.type\n // const Component = {setup(),render()} ....\n const Component = instance.type;\n // 2. 调用 setup\n\n // 调用 setup 的时候传入 props\n const { setup } = Component;\n if (setup) {\n // 设置当前 currentInstance 的值\n // 必须要在调用 setup 之前\n setCurrentInstance(instance);\n\n const setupContext = createSetupContext(instance);\n // 真实的处理场景里面应该是只在 dev 环境才会把 props 设置为只读的\n const setupResult =\n setup && setup(shallowReadonly(instance.props), setupContext);\n\n setCurrentInstance(null);\n\n // 3. 处理 setupResult\n handleSetupResult(instance, setupResult);\n }\n}\n\nfunction createSetupContext(instance) {\n console.log(\"初始化 setup context\");\n return {\n attrs: instance.attrs,\n slots: instance.slots,\n emit: instance.emit,\n expose: () => {}, // TODO 实现 expose 函数逻辑\n };\n}\n\nfunction handleSetupResult(instance, setupResult) {\n // setup 返回值不一样的话,会有不同的处理\n // 1. 看看 setupResult 是个什么\n if (typeof setupResult === \"function\") {\n // 如果返回的是 function 的话,那么绑定到 render 上\n // 认为是 render 逻辑\n // setup(){ return ()=>(h(\"div\")) }\n instance.render = setupResult;\n } else if (typeof setupResult === \"object\") {\n // 返回的是一个对象的话\n // 先存到 setupState 上\n // 先使用 @vue/reactivity 里面的 proxyRefs\n // 后面我们自己构建\n // proxyRefs 的作用就是把 setupResult 对象做一层代理\n // 方便用户直接访问 ref 类型的值\n // 比如 setupResult 里面有个 count 是个 ref 类型的对象,用户使用的时候就可以直接使用 count 了,而不需要在 count.value\n // 这里也就是官网里面说到的自动结构 Ref 类型\n instance.setupState = proxyRefs(setupResult);\n }\n\n finishComponentSetup(instance);\n}\n\nfunction finishComponentSetup(instance) {\n // 给 instance 设置 render\n\n // 先取到用户设置的 component options\n const Component = instance.type;\n\n if (!instance.render) {\n // todo\n // 调用 compile 模块来编译 template\n // Component.render = compile(Component.template, {\n // isCustomElement: instance.appContext.config.isCustomElement || NO\n // })\n instance.render = Component.render;\n }\n\n // applyOptions()\n}\n\nfunction applyOptions() {\n // 兼容 vue2.x\n // todo\n}\n\nlet currentInstance = {};\n// 这个接口暴露给用户,用户可以在 setup 中获取组件实例 instance\nexport function getCurrentInstance() {\n return currentInstance;\n}\n\nexport function setCurrentInstance(instance) {\n currentInstance = instance;\n}\n","// 源码里面这些接口是由 runtime-dom 来实现\n// 这里先简单实现\n// 后面也修改成和源码一样的实现\nexport function hostCreateElement(type) {\n console.log(\"hostCreateElement\", type);\n const element = document.createElement(type);\n return element;\n}\n\nexport function hostCreateText(text) {\n return document.createTextNode(text);\n}\n\nexport function hostSetText(node, text) {\n node.nodeValue = text;\n}\n\nexport function hostSetElementText(el, text) {\n console.log(\"hostSetElementText\", el, text);\n el.innerText = text;\n}\n\nexport function hostPatchProp(el, key, preValue, nextValue) {\n // preValue 之前的值\n // 为了之后 update 做准备的值\n // nextValue 当前的值\n console.log(`hostPatchProp 设置属性:${key} 值:${nextValue}`);\n console.log(`key: ${key} 之前的值是:${preValue}`);\n\n switch (key) {\n case \"id\":\n case \"tId\":\n if (nextValue === null || nextValue === undefined) {\n el.removeAttribute(key);\n } else {\n el.setAttribute(key, nextValue);\n }\n break;\n case \"onClick\":\n // todo\n // 先临时实现 click 事件\n // 后面应该用 directive 来处理\n el.addEventListener(\"click\", nextValue);\n break;\n }\n}\n\nexport function hostInsert(child, parent, anchor = null) {\n console.log(\"hostInsert\");\n if (anchor) {\n parent.insertBefore(child, anchor);\n } else {\n parent.appendChild(child);\n }\n}\n\nexport function hostRemove(child) {\n const parent = child.parentNode;\n if (parent) {\n parent.removeChild(child);\n }\n}\n","const queue: any[] = [];\n\nconst p = Promise.resolve();\nlet isFlushPending = false;\n\nexport function nextTick(fn) {\n return fn ? p.then(fn) : p;\n}\n\nexport function queueJob(job) {\n if (!queue.includes(job)) {\n queue.push(job);\n // 执行所有的 job\n queueFlush();\n }\n}\n\nfunction queueFlush() {\n // 如果同时触发了两个组件的更新的话\n // 这里就会触发两次 then (微任务逻辑)\n // 但是着是没有必要的\n // 我们只需要触发一次即可处理完所有的 job 调用\n // 所以需要判断一下 如果已经触发过 nextTick 了\n // 那么后面就不需要再次触发一次 nextTick 逻辑了\n if (isFlushPending) return;\n isFlushPending = true;\n nextTick(flushJobs);\n}\n\nfunction flushJobs() {\n isFlushPending = false;\n let job;\n while ((job = queue.shift())) {\n if (job) {\n job();\n }\n }\n}\n","export function shouldUpdateComponent(prevVNode, nextVNode) {\n const { props: prevProps } = prevVNode;\n const { props: nextProps } = nextVNode;\n // const emits = component!.emitsOptions;\n\n // 这里主要是检测组件的 props\n // 核心:只要是 props 发生改变了,那么这个 component 就需要更新\n\n // 1. props 没有变化,那么不需要更新\n if (prevProps === nextProps) {\n return false;\n }\n // 如果之前没有 props,那么就需要看看现在有没有 props 了\n // 所以这里基于 nextProps 的值来决定是否更新\n if (!prevProps) {\n return !!nextProps;\n }\n // 之前有值,现在没值,那么肯定需要更新\n if (!nextProps) {\n return true;\n }\n\n // 以上都是比较明显的可以知道 props 是否是变化的\n // 在 hasPropsChanged 会做更细致的对比检测\n return hasPropsChanged(prevProps, nextProps);\n}\n\nfunction hasPropsChanged(prevProps, nextProps): boolean {\n // 依次对比每一个 props.key\n\n // 提前对比一下 length ,length 不一致肯定是需要更新的\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n\n // 只要现在的 prop 和之前的 prop 不一样那么就需要更新\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key]) {\n return true;\n }\n }\n return false;\n}\n","import { ShapeFlags } from \"../shared\";\nimport { createComponentInstance } from \"./component\";\nimport {\n hostCreateElement,\n hostSetElementText,\n hostPatchProp,\n hostInsert,\n hostRemove,\n hostSetText,\n hostCreateText,\n} from \"../runtime-dom\";\nimport { queueJob } from \"./scheduler\";\nimport { effect } from \"@vue/reactivity\";\nimport { setupComponent } from \"./component\";\nimport { Text } from \"./vnode\";\nimport { shouldUpdateComponent } from \"./componentRenderUtils\";\n\nexport const render = (vnode, container) => {\n debug.mainPath(\"调用 patch\")();\n patch(null, vnode, container);\n};\n\nfunction patch(n1, n2, container = null, parentComponent = null) {\n // 基于 n2 的类型来判断\n // 因为 n2 是新的 vnode\n const { type, shapeFlag } = n2;\n switch (type) {\n case Text:\n processText(n1, n2, container);\n break;\n // 其中还有几个类型比如: static fragment comment\n\n default:\n // 这里就基于 shapeFlag 来处理\n if (shapeFlag & ShapeFlags.ELEMENT) {\n console.log(\"处理 element\");\n processElement(n1, n2, container);\n } else if (shapeFlag & ShapeFlags.STATEFUL_COMPONENT) {\n console.log(\"处理 component\");\n processComponent(n1, n2, container, parentComponent);\n }\n }\n}\n\nfunction processText(n1, n2, container) {\n console.log(\"处理 Text 节点\");\n if (n1 === null) {\n // n1 是 null 说明是 init 的阶段\n // 基于 createText 创建出 text 节点,然后使用 insert 添加到 el 内\n console.log(\"初始化 Text 类型的节点\");\n hostInsert((n2.el = hostCreateText(n2.children as string)), container);\n } else {\n // update\n // 先对比一下 updated 之后的内容是否和之前的不一样\n // 在不一样的时候才需要 update text\n // 这里抽离出来的接口是 setText\n // 注意,这里一定要记得把 n1.el 赋值给 n2.el, 不然后续是找不到值的\n const el = (n2.el = n1.el!);\n if (n2.children !== n1.children) {\n console.log(\"更新 Text 类型的节点\");\n hostSetText(el, n2.children as string);\n }\n }\n}\n\nfunction processElement(n1, n2, container) {\n if (!n1) {\n mountElement(n2, container);\n } else {\n // todo\n updateElement(n1, n2, container);\n }\n}\n\nfunction updateElement(n1, n2, container) {\n const oldProps = (n1 && n1.props) || {};\n const newProps = n2.props || {};\n // 应该更新 element\n console.log(\"应该更新 element\");\n console.log(\"旧的 vnode\", n1);\n console.log(\"新的 vnode\", n2);\n\n // 需要把 el 挂载到新的 vnode\n const el = (n2.el = n1.el);\n\n // 对比 props\n patchProps(el, oldProps, newProps);\n\n // 对比 children\n patchChildren(n1, n2, el);\n}\n\nfunction patchProps(el, oldProps, newProps) {\n // 对比 props 有以下几种情况\n // 1. oldProps 有,newProps 也有,但是 val 值变更了\n // 举个栗子\n // 之前: oldProps.id = 1 ,更新后:newProps.id = 2\n\n // key 存在 oldProps 里 也存在 newProps 内\n // 以 newProps 作为基准\n for (const key in newProps) {\n const prevProp = oldProps[key];\n const nextProp = newProps[key];\n if (prevProp !== nextProp) {\n // 对比属性\n // 需要交给 host 来更新 key\n hostPatchProp(el, key, prevProp, nextProp);\n }\n }\n\n // 2. oldProps 有,而 newProps 没有了\n // 之前: {id:1,tId:2} 更新后: {id:1}\n // 这种情况下我们就应该以 oldProps 作为基准,因为在 newProps 里面是没有的 tId 的\n // \b还需要注意一点,如果这个 key 在 newProps 里面已经存在了,说明已经处理过了,就不要在处理了\n for (const key in oldProps) {\n const prevProp = oldProps[key];\n const nextProp = null;\n if (!(key in newProps)) {\n // 这里是以 oldProps 为基准来遍历,\n // 而且得到的值是 newProps 内没有的\n // 所以交给 host 更新的时候,把新的值设置为 null\n hostPatchProp(el, key, prevProp, nextProp);\n }\n }\n}\n\nfunction patchChildren(n1, n2, container) {\n const { shapeFlag: prevShapeFlag, children: c1 } = n1;\n const { shapeFlag, children: c2 } = n2;\n\n // 如果 n2 的 children 是 text 类型的话\n // 就看看和之前的 n1 的 children 是不是一样的\n // 如果不一样的话直接重新设置一下 text 即可\n if (shapeFlag & ShapeFlags.TEXT_CHILDREN) {\n if (c2 !== c1) {\n console.log(\"类型为 text_children, 当前需要更新\");\n hostSetElementText(container, c2 as string);\n }\n } else {\n // 如果之前是 array_children\n // 现在还是 array_children 的话\n // 那么我们就需要对比两个 children 啦\n if (prevShapeFlag & ShapeFlags.ARRAY_CHILDREN) {\n if (shapeFlag & ShapeFlags.ARRAY_CHILDREN) {\n patchKeyedChildren(c1, c2, container);\n }\n }\n }\n}\n\nfunction patchKeyedChildren(c1: any[], c2: any[], container) {\n let i = 0;\n let e1 = c1.length - 1;\n let e2 = c2.length - 1;\n\n const isSameVNodeType = (n1, n2) => {\n return n1.type === n2.type && n1.key === n2.key;\n };\n\n while (i <= e1 && i <= e2) {\n const prevChild = c1[i];\n const nextChild = c2[i];\n\n if (!isSameVNodeType(prevChild, nextChild)) {\n console.log(\"两个 child 不相等(从左往右比对)\");\n console.log(`prevChild:${prevChild}`);\n console.log(`nextChild:${nextChild}`);\n break;\n }\n\n console.log(\"两个 child 相等,接下来对比着两个 child 节点(从左往右比对)\");\n patch(prevChild, nextChild, container);\n i++;\n }\n\n while (i <= e1 && i <= e2) {\n // 从右向左取值\n const prevChild = c1[e1];\n const nextChild = c2[e2];\n\n if (!isSameVNodeType(prevChild, nextChild)) {\n console.log(\"两个 child 不相等(从右往左比对)\");\n console.log(`prevChild:${prevChild}`);\n console.log(`nextChild:${nextChild}`);\n break;\n }\n console.log(\"两个 child 相等,接下来对比着两个 child 节点(从右往左比对)\");\n patch(prevChild, nextChild, container);\n e1--;\n e2--;\n }\n\n if (i > e1 && i <= e2) {\n // 如果是这种情况的话就说明 e2 也就是新节点的数量大于旧节点的数量\n // 也就是说新增了 vnode\n // 应该循环 c2\n while (i <= e2) {\n console.log(`需要新创建一个 vnode: ${c2[i].key}`);\n patch(null, c2[i], container);\n i++;\n }\n } else if (i > e2 && i <= e1) {\n // 这种情况的话说明新节点的数量是小于旧节点的数量的\n // 那么我们就需要把多余的\n while (i <= e1) {\n console.log(`需要删除当前的 vnode: ${c1[i].key}`);\n hostRemove(c1[i].el);\n i++;\n }\n } else {\n // 左右两边都比对完了,然后剩下的就是中间部位顺序变动的\n // 例如下面的情况\n // a,b,[c,d,e],f,g\n // a,b,[e,c,d],f,g\n\n let s1 = i;\n let s2 = i;\n const keyToNewIndexMap = new Map();\n // 先把 key 和 newIndex 绑定好,方便后续基于 key 找到 newIndex\n for (let i = s2; i <= e2; i++) {\n const nextChild = c2[i];\n keyToNewIndexMap.set(nextChild.key, i);\n }\n\n // 需要处理新节点的数量\n const toBePatched = e2 - s2 + 1;\n const newIndexToOldIndexMap = new Array(toBePatched);\n for (let index = 0; index < newIndexToOldIndexMap.length; index++) {\n // 源码里面是用 0 来初始化的\n // 但是有可能 0 是个正常值\n // 我这里先用 -1 来初始化\n newIndexToOldIndexMap[index] = -1;\n }\n // 遍历老节点\n // 1. 需要找出老节点有,而新节点没有的 -> 需要把这个节点删除掉\n // 2. 新老节点都有的,—> 需要 patch\n for (i = s1; i <= e1; i++) {\n const prevChild = c1[i];\n const newIndex = keyToNewIndexMap.get(prevChild.key);\n newIndexToOldIndexMap[newIndex] = i;\n\n // 因为有可能 nexIndex 的值为0(0也是正常值)\n // 所以需要通过值是不是 undefined 来判断\n // 不能直接 if(newIndex) 来判断\n if (newIndex === undefined) {\n // 当前节点的key 不存在于 newChildren 中,需要把当前节点给删除掉\n hostRemove(prevChild.el);\n } else {\n // 新老节点都存在\n console.log(\"新老节点都存在\");\n patch(prevChild, c2[newIndex], container);\n }\n }\n\n // 遍历新节点\n // 1. 需要找出老节点没有,而新节点有的 -> 需要把这个节点创建\n // 2. 最后需要移动一下位置,比如 [c,d,e] -> [e,c,d]\n for (i = e2; i >= s2; i--) {\n const nextChild = c2[i];\n\n if (newIndexToOldIndexMap[i] === -1) {\n // 说明是个新增的节点\n patch(null, c2[i], container);\n } else {\n // 有可能 i+1 没有元素 没有的话就直接设置为 null\n // 在 hostInsert 函数内如果发现是 null 的话,会直接添加到父级容器内\n const anchor = i + 1 >= e2 + 1 ? null : c2[i + 1];\n hostInsert(nextChild.el, container, anchor && anchor.el);\n }\n }\n }\n}\n\nfunction mountElement(vnode, container) {\n const { shapeFlag, props } = vnode;\n // 1. 先创建 element\n // 基于可扩展的渲染 api\n const el = (vnode.el = hostCreateElement(vnode.type));\n\n // 支持单子组件和多子组件的创建\n if (shapeFlag & ShapeFlags.TEXT_CHILDREN) {\n // 举个栗子\n // render(){\n // return h(\"div\",{},\"test\")\n // }\n // 这里 children 就是 test ,只需要渲染一下就完事了\n console.log(`处理文本:${vnode.children}`);\n hostSetElementText(el, vnode.children);\n } else if (shapeFlag & ShapeFlags.ARRAY_CHILDREN) {\n // 举个栗子\n // render(){\n // Hello 是个 component\n // return h(\"div\",{},[h(\"p\"),h(Hello)])\n // }\n // 这里 children 就是个数组了,就需要依次调用 patch 递归来处理\n mountChildren(vnode.children, el);\n }\n\n // 处理 props\n if (props) {\n for (const key in props) {\n // todo\n // 需要过滤掉vue自身用的key\n // 比如生命周期相关的 key: beforeMount、mounted\n const nextVal = props[key];\n hostPatchProp(el, key, null, nextVal);\n }\n }\n\n // todo\n // 触发 beforeMount() 钩子\n console.log(\"vnodeHook -> onVnodeBeforeMount\");\n console.log(\"DirectiveHook -> beforeMount\");\n console.log(\"transition -> beforeEnter\");\n\n // 插入\n hostInsert(el, container);\n\n // todo\n // 触发 mounted() 钩子\n console.log(\"vnodeHook -> onVnodeMounted\");\n console.log(\"DirectiveHook -> mounted\");\n console.log(\"transition -> enter\");\n}\n\nfunction mountChildren(children, container) {\n children.forEach((VNodeChild) => {\n // todo\n // 这里应该需要处理一下 vnodeChild\n // 因为有可能不是 vnode 类型\n console.log(\"mountChildren:\", VNodeChild);\n patch(null, VNodeChild, container);\n });\n}\n\nfunction processComponent(n1, n2, container, parentComponent) {\n // 如果 n1 没有值的话,那么就是 mount\n if (!n1) {\n // 初始化 component\n mountComponent(n2, container, parentComponent);\n } else {\n // todo\n updateComponent(n1, n2, container);\n }\n}\n\n// 组件的更新\nfunction updateComponent(n1, n2, container) {\n console.log(\"更新组件\", n1, n2);\n // 更新组件实例引用\n const instance = (n2.component = n1.component);\n // 先看看这个组件是否应该更新\n if (shouldUpdateComponent(n1, n2)) {\n console.log(`组件需要更新: ${instance}`);\n // 那么 next 就是新的 vnode 了(也就是 n2)\n instance.next = n2;\n // 这里的 update 是在 setupRenderEffect 里面初始化的,update 函数除了当内部的响应式对象发生改变的时候会调用\n // 还可以直接主动的调用(这是属于 effect 的特性)\n // 调用 update 再次更新调用 patch 逻辑\n // 在update 中调用的 next 就变成了 n2了\n // ps:可以详细的看看 update 中 next 的应用\n // TODO 需要在 update 中处理支持 next 的逻辑\n // instance.update();\n } else {\n console.log(`组件不需要更新: ${instance}`);\n // 不需要更新的话,那么只需要覆盖下面的属性即可\n n2.component = n1.component;\n n2.el = n1.el;\n instance.vnode = n2;\n }\n}\n\nfunction mountComponent(initialVNode, container, parentComponent) {\n // 1. 先创建一个 component instance\n const instance = (initialVNode.component = createComponentInstance(\n initialVNode,\n parentComponent\n ));\n console.log(`创建组件实例:${instance.type.name}`);\n // 2. 给 instance 加工加工\n setupComponent(instance);\n\n setupRenderEffect(instance, container);\n}\n\nfunction setupRenderEffect(instance, container) {\n // 调用 render\n // 应该传入 ctx 也就是 proxy\n // ctx 可以选择暴露给用户的 api\n // 源代码里面是调用的 renderComponentRoot 函数\n // 这里为了简化直接调用 render\n\n // obj.name = \"111\"\n // obj.name = \"2222\"\n // 从哪里做一些事\n // 收集数据改变之后要做的事 (函数)\n // 依赖收集 effect 函数\n // 触发依赖\n instance.update = effect(\n function componentEffect() {\n if (!instance.isMounted) {\n // 组件初始化的时候会执行这里\n // 为什么要在这里调用 render 函数呢\n // 是因为在 effect 内调用 render 才能触发依赖收集\n // 等到后面响应式的值变更后会再次触发这个函数\n console.log(\"调用 render,获取 subTree\");\n const proxyToUse = instance.proxy;\n // 可在 render 函数中通过 this 来使用 proxy\n const subTree = (instance.subTree = instance.render.call(\n proxyToUse,\n proxyToUse\n ));\n console.log(\"subTree\", subTree);\n\n // todo\n console.log(`${instance.type.name}:触发 beforeMount hook`);\n console.log(`${instance.type.name}:触发 onVnodeBeforeMount hook`);\n\n // 这里基于 subTree 再次调用 patch\n // 基于 render 返回的 vnode ,再次进行渲染\n // 这里我把这个行为隐喻成开箱\n // 一个组件就是一个箱子\n // 里面有可能是 element (也就是可以直接渲染的)\n // 也有可能还是 component\n // 这里就是递归的开箱\n // 而 subTree 就是当前的这个箱子(组件)装的东西\n // 箱子(组件)只是个概念,它实际是不需要渲染的\n // 要渲染的是箱子里面的 subTree\n patch(null, subTree, container, instance);\n\n console.log(`${instance.type.name}:触发 mounted hook`);\n instance.isMounted = true;\n } else {\n // 响应式的值变更后会从这里执行逻辑\n // 主要就是拿到新的 vnode ,然后和之前的 vnode 进行对比\n console.log(\"调用更新逻辑\");\n // 拿到最新的 subTree\n\n const proxyToUse = instance.proxy;\n const nextTree = instance.render.call(proxyToUse, proxyToUse);\n // 替换之前的 subTree\n const prevTree = instance.subTree;\n instance.subTree = nextTree;\n\n // 触发 beforeUpdated hook\n console.log(\"beforeUpdated hook\");\n console.log(\"onVnodeBeforeUpdate hook\");\n\n // 用旧的 vnode 和新的 vnode 交给 patch 来处理\n patch(prevTree, nextTree, prevTree.el, instance);\n\n // 触发 updated hook\n console.log(\"updated hook\");\n console.log(\"onVnodeUpdated hook\");\n }\n },\n {\n scheduler: (effect) => {\n // 把 effect 推到微任务的时候在执行\n queueJob(effect);\n },\n }\n );\n}\n","import { render } from \"./renderer\";\nimport { createVNode } from \"./vnode\";\n\n// createApp\n// 在 vue3 里面 createApp 是属于 renderer 对象的\n// 而 renderer 对象需要创建\n// 这里我们暂时不实现\n\nexport const createApp = (rootComponent) => {\n const app = {\n _component: rootComponent,\n mount(rootContainer) {\n console.log(\"基于根组件创建 vnode\");\n const vnode = createVNode(rootComponent);\n console.log(\"调用 render,基于 vnode 进行开箱\");\n render(vnode, rootContainer);\n },\n };\n\n return app;\n};\n","import { getCurrentInstance } from \"./component\";\n\nexport function provide(key, value) {\n const currentInstance = getCurrentInstance();\n\n if (currentInstance) {\n let { provides } = currentInstance;\n\n const parentProvides = currentInstance.parent?.provides;\n\n // 这里要解决一个问题\n // 当父级 key 和 爷爷级别的 key 重复的时候,对于子组件来讲,需要取最近的父级别组件的值\n // 那这里的解决方案就是利用原型链来解决\n // provides 初始化的时候是在 createComponent 时处理的,当时是直接把 parent.provides 赋值给组件的 provides 的\n // 所以,如果说这里发现 provides 和 parentProvides 相等的话,那么就说明是第一次做 provide(对于当前组件来讲)\n // 我们就可以把 parent.provides 作为 currentInstance.provides 的原型重新赋值\n // 至于为什么不在 createComponent 的时候做这个处理,可能的好处是在这里初始化的话,是有个懒执行的效果(优化点,只有需要的时候在初始化)\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n\n provides[key] = value;\n }\n}\n\nexport function inject(key, defaultValue) {\n const currentInstance = getCurrentInstance();\n\n if (currentInstance) {\n const provides = currentInstance.parent?.provides;\n\n if (key in provides) {\n return provides[key];\n } else if (defaultValue) {\n if (typeof defaultValue === \"function\") {\n return defaultValue();\n }\n return defaultValue;\n }\n }\n}\n","import { getCurrentInstance } from \"../component\";\n\n/**\n * Compiler runtime helper for rendering `<slot/>`\n * 用来 render slot 的\n * 之前是把 slot 的数据都存在 instance.slots 内(可以看 componentSlot.ts),\n * 这里就是取数据然后渲染出来的点\n * 这个是由 compiler 模块直接渲染出来的 -可以参看这个 demo https://vue-next-template-explorer.netlify.app/#%7B%22src%22%3A%22%3Cdiv%3E%5Cn%20%20%3Cslot%3E%3C%2Fslot%3E%5Cn%3C%2Fdiv%3E%22%2C%22ssr%22%3Afalse%2C%22options%22%3A%7B%22mode%22%3A%22module%22%2C%22prefixIdentifiers%22%3Afalse%2C%22optimizeImports%22%3Afalse%2C%22hoistStatic%22%3Afalse%2C%22cacheHandlers%22%3Afalse%2C%22scopeId%22%3Anull%2C%22inline%22%3Afalse%2C%22ssrCssVars%22%3A%22%7B%20color%20%7D%22%2C%22bindingMetadata%22%3A%7B%22TestComponent%22%3A%22setup-const%22%2C%22setupRef%22%3A%22setup-ref%22%2C%22setupConst%22%3A%22setup-const%22%2C%22setupLet%22%3A%22setup-let%22%2C%22setupMaybeRef%22%3A%22setup-maybe-ref%22%2C%22setupProp%22%3A%22props%22%2C%22vMySetupDir%22%3A%22setup-const%22%7D%2C%22optimizeBindings%22%3Afalse%7D%7D\n * 其最终目的就是在 render 函数中调用 renderSlot 取 instance.slots 内的数据\n * TODO 这里应该是一个返回一个 block ,但是暂时还没有支持 block ,所以这个暂时只需要返回一个 vnode 即可\n * 因为 block 的本质就是返回一个 vnode\n *\n * @private\n */\nexport function renderSlot(slots, name: string, props = {}) {\n const slot = slots[name];\n console.log(`渲染插槽 slot -> ${name}`);\n if (slot) {\n // 因为 slot 是一个返回 vnode 的函数,我们只需要把这个结果返回出去即可\n // TODO 作用域插槽的话需要绑定 ctx 到 slot 函数内,暂时不实现\n return slot(props);\n }\n}\n"],"names":["debug","capitalize"],"mappings":"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"}