{"version":3,"file":"lib.common.js","sources":["../src/index.ts"],"sourcesContent":["import { VNodeData } from \"vue\";\n\nconst pattern = {\n kebab: /-(\\w)/g,\n styleProp: /:(.*)/,\n\tstyleList: /;(?![^(]*\\))/g,\n} as const;\n\nfunction camelReplace(_substr: string, match: string) {\n return match ? match.toUpperCase() : \"\";\n}\n\nfunction camelCase(str: string) {\n return str.replace(pattern.kebab, camelReplace);\n}\n\nfunction parseStyle(style: string) {\n let styleMap: Record = {};\n\n for (let s of style.split(pattern.styleList)) {\n let [key, val] = s.split(pattern.styleProp);\n key = key.trim();\n if (!key) {\n continue;\n }\n // May be undefined if the `key: value` pair is incomplete.\n if (typeof val === \"string\") {\n val = val.trim();\n }\n styleMap[camelCase(key)] = val;\n }\n\n return styleMap;\n}\n\n/**\n * Intelligently merges data for createElement.\n * Merges arguments left to right, preferring the right argument.\n * Returns new VNodeData object.\n */\nfunction mergeData(...vNodeData: VNodeData[]): VNodeData;\nfunction mergeData(): VNodeData {\n let mergeTarget: VNodeData & Record = {};\n let i: number = arguments.length;\n let prop: string;\n let event: string;\n\n // Allow for variadic argument length.\n while (i--) {\n // Iterate through the data properties and execute merge strategies\n // Object.keys eliminates need for hasOwnProperty call\n for (prop of Object.keys(arguments[i])) {\n switch (prop) {\n // Array merge strategy (array concatenation)\n case \"class\":\n case \"style\":\n case \"directives\":\n if (!Array.isArray(mergeTarget[prop])) {\n mergeTarget[prop] = [];\n }\n\n if (prop === \"style\") {\n let style: any[];\n if (Array.isArray(arguments[i].style)) {\n style = arguments[i].style;\n } else {\n style = [arguments[i].style];\n }\n for (let j = 0; j < style.length; j++) {\n let s = style[j];\n if (typeof s === \"string\") {\n style[j] = parseStyle(s);\n }\n }\n arguments[i].style = style;\n }\n\n // Repackaging in an array allows Vue runtime\n // to merge class/style bindings regardless of type.\n mergeTarget[prop] = mergeTarget[prop].concat(arguments[i][prop]);\n break;\n // Space delimited string concatenation strategy\n case \"staticClass\":\n if (!arguments[i][prop]) {\n break;\n }\n if (mergeTarget[prop] === undefined) {\n mergeTarget[prop] = \"\";\n }\n if (mergeTarget[prop]) {\n // Not an empty string, so concatenate\n mergeTarget[prop] += \" \";\n }\n mergeTarget[prop] += arguments[i][prop].trim();\n break;\n // Object, the properties of which to merge via array merge strategy (array concatenation).\n // Callback merge strategy merges callbacks to the beginning of the array,\n // so that the last defined callback will be invoked first.\n // This is done since to mimic how Object.assign merging\n // uses the last given value to assign.\n case \"on\":\n case \"nativeOn\":\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {};\n }\n for (event of Object.keys(arguments[i][prop] || {})) {\n // Concat function to array of functions if callback present.\n if (mergeTarget[prop][event]) {\n // Insert current iteration data in beginning of merged array.\n mergeTarget[prop][event] = [].concat(\n mergeTarget[prop][event],\n arguments[i][prop][event]\n );\n } else {\n // Straight assign.\n mergeTarget[prop][event] = arguments[i][prop][event];\n }\n }\n break;\n // Object merge strategy\n case \"attrs\":\n case \"props\":\n case \"domProps\":\n case \"scopedSlots\":\n case \"staticStyle\":\n case \"hook\":\n case \"transition\":\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {};\n }\n mergeTarget[prop] = { ...arguments[i][prop], ...mergeTarget[prop] };\n break;\n // Reassignment strategy (no merge)\n case \"slot\":\n case \"key\":\n case \"ref\":\n case \"tag\":\n case \"show\":\n case \"keepAlive\":\n default:\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop];\n }\n }\n }\n }\n\n return mergeTarget;\n}\n\nexport { mergeData };\n"],"names":["pattern","kebab","styleProp","styleList","camelReplace","_substr","match","toUpperCase","camelCase","str","replace","parseStyle","style","styleMap","_a","split","_i","_b","key","val","trim","mergeData","prop","event","mergeTarget","i","arguments","length","Object","keys","Array","isArray","j","s","concat","undefined","_c"],"mappings":"qSAEMA,QAAU,CACdC,MAAO,SACPC,UAAW,QACZC,UAAW,iBAGZ,SAASC,aAAaC,EAAiBC,GACrC,OAAOA,EAAQA,EAAMC,cAAgB,GAGvC,SAASC,UAAUC,GACjB,OAAOA,EAAIC,QAAQV,QAAQC,MAAOG,cAGpC,SAASO,WAAWC,GAGlB,IAFA,IAAIC,EAAgC,OAEtBC,EAAAF,EAAMG,MAAMf,QAAQG,WAApBa,WAAAA,IAAgC,CAAzC,IACCC,gCAACC,OAAKC,QACVD,EAAMA,EAAIE,UAKS,iBAARD,IACTA,EAAMA,EAAIC,QAEZP,EAASL,UAAUU,IAAQC,GAG7B,OAAON,EAST,SAASQ,YAOP,IANA,IAEIC,EACAC,EAHAC,EAA+C,GAC/CC,EAAYC,UAAUC,OAKnBF,KAGL,IAAa,QAAAX,EAAAc,OAAOC,KAAKH,UAAUD,IAAtBT,WAAAA,IACX,OADGM,QAGD,IAAK,QACL,IAAK,QACL,IAAK,aAKH,GAJKQ,MAAMC,QAAQP,EAAYF,MAC7BE,EAAYF,GAAQ,IAGT,UAATA,EAAkB,CACpB,IAAIV,SAEFA,EADEkB,MAAMC,QAAQL,UAAUD,GAAGb,OACrBc,UAAUD,GAAGb,MAEb,CAACc,UAAUD,GAAGb,OAExB,IAAK,IAAIoB,EAAI,EAAGA,EAAIpB,EAAMe,OAAQK,IAAK,CACrC,IAAIC,EAAIrB,EAAMoB,GACG,iBAANC,IACTrB,EAAMoB,GAAKrB,WAAWsB,IAG1BP,UAAUD,GAAGb,MAAQA,EAKvBY,EAAYF,GAAQE,EAAYF,GAAMY,OAAOR,UAAUD,GAAGH,IAC1D,MAEF,IAAK,cACH,IAAKI,UAAUD,GAAGH,GAChB,WAEwBa,IAAtBX,EAAYF,KACdE,EAAYF,GAAQ,IAElBE,EAAYF,KAEdE,EAAYF,IAAS,KAEvBE,EAAYF,IAASI,UAAUD,GAAGH,GAAMF,OACxC,MAMF,IAAK,KACL,IAAK,WACEI,EAAYF,KACfE,EAAYF,GAAQ,IAEtB,IAAc,QAAAc,EAAAR,OAAOC,KAAKH,UAAUD,GAAGH,IAAS,IAAlCL,WAAAA,IAATM,OAECC,EAAYF,GAAMC,GAEpBC,EAAYF,GAAMC,GAAS,GAAGW,OAC5BV,EAAYF,GAAMC,GAClBG,UAAUD,GAAGH,GAAMC,IAIrBC,EAAYF,GAAMC,GAASG,UAAUD,GAAGH,GAAMC,GAGlD,MAEF,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,cACL,IAAK,cACL,IAAK,OACL,IAAK,aACEC,EAAYF,KACfE,EAAYF,GAAQ,IAEtBE,EAAYF,eAAaI,UAAUD,GAAGH,GAAUE,EAAYF,IAC5D,MAEF,IAAK,OACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,OACL,IAAK,YACL,QACOE,EAAYF,KACfE,EAAYF,GAAQI,UAAUD,GAAGH,IAM3C,OAAOE"}