UNPKG

7.22 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/createRenderFn.js"],"names":["isObject","Object","prototype","toString","call","test","isFn","justBindOptions","justBindFn","indexOf","key","getOptionsKeys","keys","options","concat","filter","k","i","a","createOptionHandlers","originalOptions","forEach","option","owner","optionKeys","some","assign","result","justBind","value","bind","preprocessOptions","context","isFunctional","on","props","attrs","data","createRenderFn","Component","getData","renderHoc","h","scopedSlots","$scopedSlots","slots","children","$slots","createRenderFnc"],"mappings":";;;;;;;AACA;;;;AACA;;;;;;AASA,IAAMA,WAAW,SAAXA,QAAW;AAAA,SAAQC,OAAOC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BC,IAA/B,MAAyC,iBAAjD;AAAA,CAAjB;AACA,IAAMC,OAAO,SAAPA,IAAO;AAAA,SAAQL,OAAOC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BC,IAA/B,MAAyC,mBAAjD;AAAA,CAAb;;AAEA,IAAME,kBAAkB,CACtB,WADsB,EAEtB,UAFsB,EAGtB,aAHsB,CAAxB;;AAMA,IAAMC,aAAa,SAAbA,UAAa;AAAA,SAAOD,gBAAgBE,OAAhB,CAAwBC,GAAxB,IAA+B,CAAC,CAAvC;AAAA,CAAnB;;AAEA,IAAMC,iBAAiB,SAAjBA,cAAiB;AAAA,SAAWV,OAC/BW,IAD+B,CAC1BC,OAD0B,EAE/BC,MAF+B,CAExB,CAAC,WAAD,EAAc,OAAd,EAAuB,OAAvB,CAFwB,EAG/BC,MAH+B,CAGxB,UAACC,CAAD,EAAIC,CAAJ,EAAOC,CAAP;AAAA,WAAaA,EAAET,OAAF,CAAUO,CAAV,MAAiBC,CAA9B;AAAA,GAHwB,CAAX;AAAA,CAAvB;;AAKA,IAAME,uBAAuB,SAAvBA,oBAAuB,CAACC,eAAD,EAAkBR,IAAlB,EAA2B;AACtD,MAAMC,UAEF,EAFJ;;AAIAD,OAAKS,OAAL,CAAa,eAAO;AAClB,QAAMC,SAASF,gBAAgBV,GAAhB,CAAf;;AAEA,QAAI,CAACY,MAAL,EAAY;AACVT,cAAQH,GAAR,IAAe;AAAA,eAASa,KAAT;AAAA,OAAf;AACA;AACD;;AAED,QAAIjB,KAAKgB,MAAL,CAAJ,EAAiB;AACf;AACAT,cAAQH,GAAR,IAAeY,MAAf;AACA;AACD;;AAED,QAAItB,SAASsB,MAAT,CAAJ,EAAqB;AACnB,UAAME,aAAavB,OAAOW,IAAP,CAAYU,MAAZ,CAAnB;;AAEA,UAAI,CAACE,WAAWC,IAAX,CAAgB;AAAA,eAAKnB,KAAKgB,OAAON,CAAP,CAAL,CAAL;AAAA,OAAhB,CAAL,EAA2C;AACzCH,gBAAQH,GAAR,IAAe,UAACa,KAAD;AAAA,iBAAWtB,OAAOyB,MAAP,CAAc,EAAd,EAAkBH,KAAlB,EAAyBD,MAAzB,CAAX;AAAA,SAAf;AACA;AACD;;AAEDT,cAAQH,GAAR,IAAe,UAASa,KAAT,EAAgB;AAAA;;AAC7B,YAAMI,SAAS1B,OAAOyB,MAAP,CAAc,EAAd,EAAkBH,KAAlB,CAAf;AACA,YAAMK,WAAWpB,WAAWE,GAAX,CAAjB;;AAEAc,mBAAWH,OAAX,CAAmB,aAAK;AACtB,cAAIQ,QAAQP,UAAUA,OAAON,CAAP,CAAtB;;AAEA,cAAIV,KAAKuB,KAAL,CAAJ,EAAgB;AACd,gBAAID,QAAJ,EAAa;AACXC,sBAAQA,MAAMC,IAAN,OAAR;AACD,aAFD,MAEK;AACHD,sBAAQA,MAAMzB,IAAN,QAAiBmB,KAAjB,CAAR;AACD;AACF;AACDI,iBAAOX,CAAP,IAAYa,KAAZ;AACD,SAXD;AAYA,eAAOF,MAAP;AACD,OAjBD;AAkBA;AACD;;AAEDd,YAAQH,GAAR,IAAe;AAAA,aAAMY,MAAN;AAAA,KAAf;AACD,GA5CD;;AA8CA,SAAOT,OAAP;AACD,CApDD;;AAsDA,IAAMkB,oBAAoB,SAApBA,iBAAoB,CAACX,eAAD,EAAqB;AAC7C,MAAMR,OAAOD,eAAeS,eAAf,CAAb;AACA,MAAMP,UAAUM,qBAAqBC,eAArB,EAAsCR,IAAtC,CAAhB;;AAEA,SAAO,UAACoB,OAAD,EAAUC,YAAV,EAA2B;AAChC,QAAMN,SAKF;AACFO,UAAI,EADF;AAEFC,aAAO,EAFL;AAGFC,aAAO;AAHL,KALJ;;AAWAxB,SAAKS,OAAL,CAAa,eAAO;AAClB,UAAME,QAAQU,eACZD,QAAQtB,GAAR,KAAgBsB,QAAQK,IAAR,CAAa3B,GAAb,CADJ,GAEZsB,cAAYtB,GAAZ,CAFF;;AAIA,UAAMmB,QAAQhB,QAAQH,GAAR,EAAaN,IAAb,CAAkB4B,OAAlB,EAA2BT,KAA3B,CAAd;;AAEA,UAAIb,QAAQ,WAAZ,EAAwB;AACtBA,cAAM,IAAN;AACD;;AAEDiB,aAAOjB,GAAP,IAAcmB,KAAd;AACD,KAZD;;AAcA,WAAOF,MAAP;AACD,GA3BD;AA4BD,CAhCD;;AAmCO,IAAMW,0CAAiC,SAAjCA,cAAiC,CAACC,SAAD,EAAY1B,OAAZ,EAAwB;AACpE,MAAM2B,UAAUT,kBAAkBlB,WAAW,EAA7B,CAAhB;;AAEA,SAAO,SAAS4B,SAAT,CACLC,CADK,EAMLV,OANK,EAOL;AACA;AACA,QAAMK,OAAOG,QAAQR,WAAW,IAAnB,EAAyB,CAAC,CAACA,OAA3B,CAAb;AACA,QAAMW,cAAuBX,WAAWA,QAAQK,IAAnB,IAA2BL,QAAQK,IAAR,CAAaM,WAAzC,IACP,QAAQ,KAAKC,YADlC;AAEA,QAAMC,QAAqBb,WAAWA,QAAQc,QAApB,IAAkC,QAAQ,KAAKC,MAAb,IAAuB,8BAAe,KAAKA,MAApB,CAAzD,IAAyF,EAAnH;;AAEAV,SAAKM,WAAL,GAAmBN,KAAKM,WAAL,IAAoBA,WAAvC;;AAEA,WAAOD,EAAEH,SAAF,EAAaF,IAAb,EAAmBQ,KAAnB,CAAP;AACD,GAjBD;AAkBD,CArBM;;AAuBA,IAAMG,4CAAmC,uBAAQ,CAAR,EAAW,UACzDnC,OADyD,EAEzD0B,SAFyD,EAGtD;AACH,SAAOD,eAAeC,SAAf,EAA0B1B,OAA1B,CAAP;AACD,CAL+C,CAAzC","file":"createRenderFn.js","sourcesContent":["// @flow\nimport courier from './courier';\nimport normalizeSlots from './normalizeSlots';\n\nimport type {\n Ctor,\n CreateRenderFnOptions,\n CreateRenderFn,\n CreateRenderFnc,\n} from './annotations';\n\nconst isObject = test => Object.prototype.toString.call(test) === '[object Object]';\nconst isFn = test => Object.prototype.toString.call(test) === '[object Function]';\n\nconst justBindOptions = [\n 'listeners',\n 'nativeOn',\n 'scopedSlots',\n];\n\nconst justBindFn = key => justBindOptions.indexOf(key) > -1;\n\nconst getOptionsKeys = options => Object\n .keys(options)\n .concat(['listeners', 'props', 'attrs'])\n .filter((k, i, a) => a.indexOf(k) === i);\n\nconst createOptionHandlers = (originalOptions, keys) => {\n const options: {\n [dataName: string]: Function\n } = {};\n\n keys.forEach(key => {\n const option = originalOptions[key];\n\n if (!option){\n options[key] = owner => owner;\n return;\n }\n\n if (isFn(option)){\n // $FlowFixMe\n options[key] = option;\n return;\n }\n\n if (isObject(option)){\n const optionKeys = Object.keys(option);\n\n if (!optionKeys.some(k => isFn(option[k]))){\n options[key] = (owner) => Object.assign({}, owner, option);\n return;\n }\n\n options[key] = function(owner) {\n const result = Object.assign({}, owner);\n const justBind = justBindFn(key);\n\n optionKeys.forEach(k => {\n let value = option && option[k];\n\n if (isFn(value)){\n if (justBind){\n value = value.bind(this);\n }else{\n value = value.call(this, owner);\n }\n }\n result[k] = value;\n });\n return result;\n };\n return;\n }\n\n options[key] = () => option;\n });\n\n return options;\n};\n\nconst preprocessOptions = (originalOptions) => {\n const keys = getOptionsKeys(originalOptions);\n const options = createOptionHandlers(originalOptions, keys);\n\n return (context, isFunctional) => {\n const result: {\n on: Object,\n props: Object,\n attrs: Object,\n scopedSlots?: Object,\n } = {\n on: {},\n props: {},\n attrs: {},\n };\n\n keys.forEach(key => {\n const owner = isFunctional ?\n context[key] || context.data[key] :\n context[`$${key}`];\n\n const value = options[key].call(context, owner);\n\n if (key === 'listeners'){\n key = 'on';\n }\n\n result[key] = value;\n });\n\n return result;\n };\n};\n\n\nexport const createRenderFn: CreateRenderFn = (Component, options) => {\n const getData = preprocessOptions(options || {});\n\n return function renderHoc(\n h: (\n ctor: Object,\n data: Object,\n slots: Array<any>\n ) => any,\n context?: Object\n ) {\n //const data = processOptions(this || context || {}, options || {});\n const data = getData(context || this, !!context);\n const scopedSlots: Object = (context && context.data && context.data.scopedSlots) ||\n (this && this.$scopedSlots);\n const slots: Array<any> = (context && context.children) || (this && this.$slots && normalizeSlots(this.$slots)) || [];\n\n data.scopedSlots = data.scopedSlots || scopedSlots;\n\n return h(Component, data, slots);\n };\n};\n\nexport const createRenderFnc: CreateRenderFnc = courier(2, (\n options: CreateRenderFnOptions,\n Component: Ctor\n) => {\n return createRenderFn(Component, options);\n});\n"]}
\No newline at end of file