diff --git a/js/editor-rich.js b/js/editor-rich.js index 39e94e41f03..566a0a8cf42 100644 --- a/js/editor-rich.js +++ b/js/editor-rich.js @@ -42,5 +42,5 @@ var i=["text/markdown"],o=["text/plain","application/cmd","application/x-empty", * along with this program. If not, see . * */ -var v=function(){var t,e=(t=regeneratorRuntime.mark((function t(e,n){var i,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,r()({method:"PROPFIND",url:Object(a.generateRemoteUrl)("dav/files/".concat(e).concat(n)),headers:{requesttoken:OC.requestToken,"content-Type":"text/xml"},data:'\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n'});case 2:return i=t.sent,o=OCA.Files.App.fileList.filesClient._client.parseMultiStatus(i.data),t.abrupt("return",o.map((function(t){var e=OCA.Files.App.fileList.filesClient._parseFileInfo(t);return e.href=t.href,e})));case 5:case"end":return t.stop()}}),t)})),function(){var e=this,n=arguments;return new Promise((function(i,o){var r=t.apply(e,n);function a(t){m(r,i,o,a,c,"next",t)}function c(t){m(r,i,o,a,c,"throw",t)}a(void 0)}))});return function(t,n){return e.apply(this,arguments)}}(),b=function(){var e={attach:function(e){var n=e.fileList;"files"!==n.id&&"files.public"!==n.id||e.addMenuEntry({id:"file",displayName:t("text","New text document"),templateName:t("text","New text document")+".md",iconClass:"icon-filetype-text",fileType:"file",actionHandler:function(t){n.createFile(t).then((function(t,e){var i=new OCA.Files.FileInfoModel(e);void 0!==OCA.Viewer?OCA.Files.fileActions.triggerAction("view",i,n):void 0===OCA.Viewer&&OCA.Files.fileActions.triggerAction("Edit with text app",i,n)}))}})}};OC.Plugins.register("OCA.Files.NewFileMenu",e)},g=function(){var e=document.getElementById("sharingToken")?document.getElementById("sharingToken").value:null,n=document.getElementById("dir").value;if(!e||""!==n){var o=document.createElement("div");o.id="text-viewer-fallback",document.body.appendChild(o);for(var r=function(n){return OCA.Files.fileActions.register(n,"Edit with text app",OC.PERMISSION_UPDATE|OC.PERMISSION_READ,OC.imagePath("core","actions/rename"),(function(t){var n=window.FileList.findFile(t);Promise.all([i.e(0).then(i.bind(null,45)),Promise.all([i.e(1),i.e(0),i.e(189),i.e(188),i.e(195)]).then(i.bind(null,541))]).then((function(i){var r=window.FileList.getCurrentDirectory()+"/"+t,a=i[0].default;a.prototype.t=window.t,a.prototype.n=window.n,a.prototype.OCA=window.OCA;var c=i[1].default;new a({render:function(t){return t(c,{props:{fileId:n?n.id:null,active:!0,shareToken:e,relativePath:r,mimeType:n.mimetype}})}}).$mount(o)}))}),t("text","Edit"))},a=0;at.length)&&(e=t.length);for(var n=0,i=new Array(e);n=0}},getIconClasses:function(){return function(t,e){var n={"is-active":e.isActive(t)};return n[e.class]=!0,n}},isChildMenuVisible:function(){var t=this;return function(e){return!!Object.prototype.hasOwnProperty.call(t.submenuVisibility,e.label)&&t.submenuVisibility[e.label]}},allIcons:function(){var e=this;return this.isPublic?this.icons:[].concat(g(this.icons),[{label:t("text","Insert image"),class:"icon-image",isActive:function(){},action:function(t){e.showImagePrompt(t.image)}}])},childPopoverMenu:function(){var t=this;return function(e,n,i,o){var r=[],a=function(a){r.push({text:i[a].label,icon:i[a].class,action:function(){i[a].action(n),t.hideChildMenu(o)},active:i[a].isActive(e)})};for(var c in i)a(c);return r}},childIconClass:function(){return function(t,e){for(var n in e){var i=e[n];if(i.isActive(t))return i.class}return"icon-h1"}},iconCount:function(){this.forceRecompute,this.windowWidth;var t=this.$refs.menubar&&this.$refs.menubar.clientWidth>200?this.$refs.menubar.clientWidth:200,e=Math.max(Math.floor(t/44)-2,0);return e}},mounted:function(){var t=this;window.addEventListener("resize",this.getWindowWidth),this.checkInterval=setInterval((function(){var e=t.$refs.menubar&&t.$refs.menubar.clientWidth>0;t.isRichEditor&&e&&t.redrawMenuBar(),t.isRichEditor&&!e||clearInterval(t.checkInterval)}),100)},beforeDestroy:function(){window.removeEventListener("resize",this.getWindowWidth)},methods:{redrawMenuBar:function(){var t=this;this.$nextTick((function(){t.getWindowWidth(),t.forceRecompute++}))},clickIcon:function(t,e){return e.action(t)},getWindowWidth:function(t){this.windowWidth=document.documentElement.clientWidth},getWindowHeight:function(t){this.windowHeight=document.documentElement.clientHeight},hideChildMenu:function(t){this.$set(this.submenuVisibility,t.label,!1)},toggleChildMenu:function(t){var e=!!Object.prototype.hasOwnProperty.call(this.submenuVisibility,t.label)&&this.submenuVisibility[t.label];this.$set(this.submenuVisibility,t.label,!e)},showImagePrompt:function(t){var e=OC.getCurrentUser();if(e){var n=t;OC.dialogs.filepicker("Insert an image",(function(t){Object(s.b)(e.uid,t).then((function(t){var e=t[0];console.debug(e);var i=OC.generateUrl("/core/preview?")+"fileId=".concat(e.id,"&x=1024&y=1024&a=true"),o=OC.generateUrl("/f/"+e.id),r={mimetype:e.mimetype,hasPreview:e.hasPreview,fileId:e.id},a=(e.hasPreview?i:o)+"#"+Object.entries(r).map((function(t){var e=b(t,2),n=e[0],i=e[1];return"".concat(n,"=").concat(encodeURIComponent(i))})).join("&");n({src:a,alt:e.name})}))}),!1,[],!0)}}}},y=(i(513),i(19)),A=Object(y.a)(w,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("EditorMenuBar",{attrs:{editor:t.editor},scopedSlots:t._u([{key:"default",fn:function(e){var i=e.commands,o=e.isActive,r=e.focused;return[n("div",{staticClass:"menubar",class:{"is-focused":r,autohide:t.autohide}},[t.isRichEditor?n("div",{ref:"menubar",staticClass:"menubar-icons"},[t._l(t.allIcons,(function(e,r){return[e.class?n("button",{directives:[{name:"show",rawName:"v-show",value:r hideChildMenu(icon)"}],key:e.label,staticClass:"submenu"},[n("button",{class:t.childIconClass(o,e.children),attrs:{title:e.label},on:{click:function(n){return n.preventDefault(),t.toggleChildMenu(e)}}}),t._v(" "),n("div",{staticClass:"popovermenu menu-center",class:{open:t.isChildMenuVisible(e)}},[n("PopoverMenu",{attrs:{menu:t.childPopoverMenu(o,i,e.children,e)}})],1)])]]})),t._v(" "),n("Actions",[t._l(t.allIcons,(function(e,o){return[e.class&&t.isHiddenInMenu(o)?n("ActionButton",{key:e.class,attrs:{icon:e.class},on:{click:function(n){return t.clickIcon(i,e)}}},[t._v("\n\t\t\t\t\t\t"+t._s(e.label)+"\n\t\t\t\t\t")]):t._e()]}))],2)],2):t._e(),t._v(" "),t._t("default",[t._v("\n\t\t\tLeft side\n\t\t")])],2)]}}],null,!0)})}),[],!1,null,"4f2de32e",null);n.default=A.exports},542:function(t,e,n){"use strict";n.r(e);var i=n(182),o=n(186),r=n.n(o),a={name:"MenuBubble",components:{EditorMenuBubble:i.d},directives:{tooltip:r.a},props:{editor:{type:Object,required:!1,default:null}},data:function(){return{linkUrl:null,linkMenuIsActive:!1}},methods:{showLinkMenu:function(t){var e=this;this.linkUrl=t.href,this.linkMenuIsActive=!0,this.$nextTick((function(){e.$refs.linkInput.focus()}))},hideLinkMenu:function(){this.linkUrl=null,this.linkMenuIsActive=!1},setLinkUrl:function(t,e){!e||e.match(/^[a-zA-Z]+:\/\//)||e.match(/^\//)||(e="https://"+e),t({href:e}),this.hideLinkMenu()}}},c=(n(515),n(19)),s=Object(c.a)(a,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("EditorMenuBubble",{staticClass:"menububble",attrs:{editor:t.editor},on:{hide:t.hideLinkMenu},scopedSlots:t._u([{key:"default",fn:function(e){var i=e.commands,o=e.isActive,r=e.getMarkAttrs,a=e.menu;return[n("div",{staticClass:"menububble",class:{"is-active":a.isActive},style:"left: "+a.left+"px; bottom: "+a.bottom+"px;"},[t.linkMenuIsActive?n("form",{staticClass:"menububble__form",on:{submit:function(e){return e.preventDefault(),t.setLinkUrl(i.link,t.linkUrl)}}},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.linkUrl,expression:"linkUrl"}],ref:"linkInput",staticClass:"menububble__input",attrs:{type:"text",placeholder:"https://"},domProps:{value:t.linkUrl},on:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:t.hideLinkMenu(e)},input:function(e){e.target.composing||(t.linkUrl=e.target.value)}}}),t._v(" "),n("button",{staticClass:"menububble__button icon-confirm",attrs:{type:"button"},on:{click:function(e){return t.setLinkUrl(i.link,t.linkUrl)}}})]):[n("button",{staticClass:"menububble__button",class:{"is-active":o.link()},on:{click:function(e){t.showLinkMenu(r("link"))}}},[n("span",{directives:[{name:"tooltip",rawName:"v-tooltip",value:o.link()?"Update Link":"Add Link",expression:"isActive.link() ? 'Update Link' : 'Add Link'"}],staticClass:"icon-link"}),t._v(" "),n("span",{staticClass:"menububble__buttontext"},[t._v(t._s(t.t("text","Add link")))])])]],2)]}}])})}),[],!1,null,"b3f47288",null);e.default=s.exports},97:function(t,e,n){var i=n(165);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);(0,n(50).default)("55d37b72",i,!0,{})}}]); -//# sourceMappingURL=editor-rich.js.map?v=2c33132d8a6120a699db \ No newline at end of file +var v=function(){var t,e=(t=regeneratorRuntime.mark((function t(e,n){var i,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,r()({method:"PROPFIND",url:Object(a.generateRemoteUrl)("dav/files/".concat(e).concat(n)),headers:{requesttoken:OC.requestToken,"content-Type":"text/xml"},data:'\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n'});case 2:return i=t.sent,o=OCA.Files.App.fileList.filesClient._client.parseMultiStatus(i.data),t.abrupt("return",o.map((function(t){var e=OCA.Files.App.fileList.filesClient._parseFileInfo(t);return e.href=t.href,e})));case 5:case"end":return t.stop()}}),t)})),function(){var e=this,n=arguments;return new Promise((function(i,o){var r=t.apply(e,n);function a(t){m(r,i,o,a,c,"next",t)}function c(t){m(r,i,o,a,c,"throw",t)}a(void 0)}))});return function(t,n){return e.apply(this,arguments)}}(),b=function(){var e={attach:function(e){var n=e.fileList;"files"!==n.id&&"files.public"!==n.id||e.addMenuEntry({id:"file",displayName:t("text","New text document"),templateName:t("text","New text document")+".md",iconClass:"icon-filetype-text",fileType:"file",actionHandler:function(t){n.createFile(t).then((function(t,e){var i=new OCA.Files.FileInfoModel(e);void 0!==OCA.Viewer?OCA.Files.fileActions.triggerAction("view",i,n):void 0===OCA.Viewer&&OCA.Files.fileActions.triggerAction("Edit with text app",i,n)}))}})}};OC.Plugins.register("OCA.Files.NewFileMenu",e)},g=function(){var e=document.getElementById("sharingToken")?document.getElementById("sharingToken").value:null,n=document.getElementById("dir").value;if(!e||""!==n){var o=document.createElement("div");o.id="text-viewer-fallback",document.body.appendChild(o);for(var r=function(n){return OCA.Files.fileActions.register(n,"Edit with text app",OC.PERMISSION_UPDATE|OC.PERMISSION_READ,OC.imagePath("core","actions/rename"),(function(t){var n=window.FileList.findFile(t);Promise.all([i.e(0).then(i.bind(null,45)),Promise.all([i.e(1),i.e(0),i.e(189),i.e(188),i.e(195)]).then(i.bind(null,541))]).then((function(i){var r=window.FileList.getCurrentDirectory()+"/"+t,a=i[0].default;a.prototype.t=window.t,a.prototype.n=window.n,a.prototype.OCA=window.OCA;var c=i[1].default;new a({render:function(t){return t(c,{props:{fileId:n?n.id:null,active:!0,shareToken:e,relativePath:r,mimeType:n.mimetype}})}}).$mount(o)}))}),t("text","Edit"))},a=0;at.length)&&(e=t.length);for(var n=0,i=new Array(e);n=0}},getIconClasses:function(){return function(t,e){var n={"is-active":e.isActive(t)};return n[e.class]=!0,n}},isChildMenuVisible:function(){var t=this;return function(e){return!!Object.prototype.hasOwnProperty.call(t.submenuVisibility,e.label)&&t.submenuVisibility[e.label]}},allIcons:function(){var e=this;return this.isPublic?this.icons:[].concat(g(this.icons),[{label:t("text","Insert image"),class:"icon-image",isActive:function(){},action:function(t){e.showImagePrompt(t.image)}}])},childPopoverMenu:function(){var t=this;return function(e,n,i,o){var r=[],a=function(a){r.push({text:i[a].label,icon:i[a].class,action:function(){i[a].action(n),t.hideChildMenu(o)},active:i[a].isActive(e)})};for(var c in i)a(c);return r}},childIconClass:function(){return function(t,e){for(var n in e){var i=e[n];if(i.isActive(t))return i.class}return"icon-h1"}},iconCount:function(){this.forceRecompute,this.windowWidth;var t=this.$refs.menubar&&this.$refs.menubar.clientWidth>200?this.$refs.menubar.clientWidth:200,e=Math.max(Math.floor(t/44)-2,0);return e}},mounted:function(){var t=this;window.addEventListener("resize",this.getWindowWidth),this.checkInterval=setInterval((function(){var e=t.$refs.menubar&&t.$refs.menubar.clientWidth>0;t.isRichEditor&&e&&t.redrawMenuBar(),t.isRichEditor&&!e||clearInterval(t.checkInterval)}),100)},beforeDestroy:function(){window.removeEventListener("resize",this.getWindowWidth)},methods:{redrawMenuBar:function(){var t=this;this.$nextTick((function(){t.getWindowWidth(),t.forceRecompute++}))},clickIcon:function(t,e){return e.action(t)},getWindowWidth:function(t){this.windowWidth=document.documentElement.clientWidth},getWindowHeight:function(t){this.windowHeight=document.documentElement.clientHeight},hideChildMenu:function(t){this.$set(this.submenuVisibility,t.label,!1)},toggleChildMenu:function(t){var e=!!Object.prototype.hasOwnProperty.call(this.submenuVisibility,t.label)&&this.submenuVisibility[t.label];this.$set(this.submenuVisibility,t.label,!e)},showImagePrompt:function(t){var e=OC.getCurrentUser();if(e){var n=t;OC.dialogs.filepicker("Insert an image",(function(t){Object(s.b)(e.uid,t).then((function(t){var e=t[0];console.debug(e);var i=OC.generateUrl("/core/preview?")+"fileId=".concat(e.id,"&x=1024&y=1024&a=true"),o=OC.generateUrl("/f/"+e.id),r={mimetype:e.mimetype,hasPreview:e.hasPreview,fileId:e.id},a=(e.hasPreview?i:o)+"#"+Object.entries(r).map((function(t){var e=b(t,2),n=e[0],i=e[1];return"".concat(n,"=").concat(encodeURIComponent(i))})).join("&");n({src:a,alt:e.name})}))}),!1,[],!0)}}}},y=(i(513),i(19)),A=Object(y.a)(w,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("EditorMenuBar",{attrs:{editor:t.editor},scopedSlots:t._u([{key:"default",fn:function(e){var i=e.commands,o=e.isActive,r=e.focused;return[n("div",{staticClass:"menubar",class:{"is-focused":r,autohide:t.autohide}},[t.isRichEditor?n("div",{ref:"menubar",staticClass:"menubar-icons"},[t._l(t.allIcons,(function(e,r){return[e.class?n("button",{directives:[{name:"show",rawName:"v-show",value:r hideChildMenu(icon)"}],key:e.label,staticClass:"submenu"},[n("button",{class:t.childIconClass(o,e.children),attrs:{title:e.label},on:{click:function(n){return n.preventDefault(),t.toggleChildMenu(e)}}}),t._v(" "),n("div",{staticClass:"popovermenu menu-center",class:{open:t.isChildMenuVisible(e)}},[n("PopoverMenu",{attrs:{menu:t.childPopoverMenu(o,i,e.children,e)}})],1)])]]})),t._v(" "),n("Actions",[t._l(t.allIcons,(function(e,o){return[e.class&&t.isHiddenInMenu(o)?n("ActionButton",{key:e.class,attrs:{icon:e.class},on:{click:function(n){return t.clickIcon(i,e)}}},[t._v("\n\t\t\t\t\t\t"+t._s(e.label)+"\n\t\t\t\t\t")]):t._e()]}))],2)],2):t._e(),t._v(" "),t._t("default",[t._v("\n\t\t\tLeft side\n\t\t")])],2)]}}],null,!0)})}),[],!1,null,"4f2de32e",null);n.default=A.exports},542:function(t,e,n){"use strict";n.r(e);var i=n(182),o=n(186),r=n.n(o),a={name:"MenuBubble",components:{EditorMenuBubble:i.d},directives:{tooltip:r.a},props:{editor:{type:Object,required:!1,default:null}},data:function(){return{linkUrl:null,linkMenuIsActive:!1}},methods:{showLinkMenu:function(t){var e=this;this.linkUrl=t.href,this.linkMenuIsActive=!0,this.$nextTick((function(){e.$refs.linkInput.focus()}))},hideLinkMenu:function(){this.linkUrl=null,this.linkMenuIsActive=!1},setLinkUrl:function(t,e){!e||e.match(/^[a-zA-Z]+:\/\//)||e.match(/^\//)||(e="https://"+e),t({href:e}),this.hideLinkMenu()}}},c=(n(515),n(19)),s=Object(c.a)(a,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("EditorMenuBubble",{staticClass:"menububble",attrs:{editor:t.editor},on:{hide:t.hideLinkMenu},scopedSlots:t._u([{key:"default",fn:function(e){var i=e.commands,o=e.isActive,r=e.getMarkAttrs,a=e.menu;return[n("div",{staticClass:"menububble",class:{"is-active":a.isActive},style:"left: "+a.left+"px; bottom: "+a.bottom+"px;"},[t.linkMenuIsActive?n("form",{staticClass:"menububble__form",on:{submit:function(e){return e.preventDefault(),t.setLinkUrl(i.link,t.linkUrl)}}},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.linkUrl,expression:"linkUrl"}],ref:"linkInput",staticClass:"menububble__input",attrs:{type:"text",placeholder:"https://"},domProps:{value:t.linkUrl},on:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:t.hideLinkMenu(e)},input:function(e){e.target.composing||(t.linkUrl=e.target.value)}}}),t._v(" "),n("button",{staticClass:"menububble__button icon-confirm",attrs:{type:"button"},on:{click:function(e){return t.setLinkUrl(i.link,t.linkUrl)}}})]):[n("button",{staticClass:"menububble__button",class:{"is-active":o.link()},on:{click:function(e){t.showLinkMenu(r("link"))}}},[n("span",{directives:[{name:"tooltip",rawName:"v-tooltip",value:o.link()?"Update Link":"Add Link",expression:"isActive.link() ? 'Update Link' : 'Add Link'"}],staticClass:"icon-link"}),t._v(" "),n("span",{staticClass:"menububble__buttontext"},[t._v(t._s(t.t("text","Add link")))])])]],2)]}}])})}),[],!1,null,"b3f47288",null);e.default=s.exports},97:function(t,e,n){var i=n(165);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);(0,n(50).default)("55d37b72",i,!0,{})}}]); +//# sourceMappingURL=editor-rich.js.map?v=964a32b42476acb2decc \ No newline at end of file diff --git a/js/editor-rich.js.map b/js/editor-rich.js.map index 45891e4bc50..8daa0b87fd9 100644 --- a/js/editor-rich.js.map +++ b/js/editor-rich.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/helpers/mime.js","webpack:///./src/views/RichWorkspace.vue?8fdc","webpack:///./src/views/RichWorkspace.vue?509e","webpack:///./src/components/MenuBar.vue?df26","webpack:///./src/components/MenuBubble.vue?72b9","webpack:///src/views/RichWorkspace.vue","webpack:///./src/views/RichWorkspace.vue?d0bc","webpack:///./src/views/RichWorkspace.vue","webpack:///./src/views/RichWorkspace.vue?c383","webpack:///./src/helpers/files.js","webpack:///./src/components/MenuBar.vue?fa74","webpack:///./src/components/MenuBar.vue?53d9","webpack:///./src/components/MenuBubble.vue?f5d6","webpack:///./src/components/MenuBubble.vue?cdbd","webpack:///./src/components/MenuBar.vue?ee45","webpack:///./src/mixins/menubar.js","webpack:///src/components/MenuBar.vue","webpack:///./src/components/MenuBar.vue?c014","webpack:///./src/components/MenuBar.vue","webpack:///./src/components/MenuBubble.vue?c3b0","webpack:///./src/components/MenuBubble.vue?7a05","webpack:///src/components/MenuBubble.vue","webpack:///./src/components/MenuBubble.vue","webpack:///./src/views/RichWorkspace.vue?01b3"],"names":["openMimetypesMarkdown","openMimetypesPlainText","openMimetypes","exports","___CSS_LOADER_API_IMPORT___","push","module","i","content","locals","add","default","_vm","this","_h","$createElement","_c","_self","class","loaded","ready","focus","darkTheme","canCreate","attrs","staticClass","on","createNew","_v","_s","t","_e","directives","name","rawName","value","expression","key","file","id","path","shareToken","mimetype","autofocus","$event","unfocus","reset","fetchFileInfo","user","axios","method","url","generateRemoteUrl","headers","requesttoken","OC","requestToken","data","response","files","OCA","Files","App","fileList","filesClient","_client","parseMultiStatus","map","fileInfo","_parseFileInfo","href","registerFileCreate","newFileMenuPlugin","attach","menu","addMenuEntry","displayName","templateName","iconClass","fileType","actionHandler","createFile","then","status","fileInfoModel","FileInfoModel","Viewer","fileActions","triggerAction","Plugins","register","registerFileActionFallback","sharingToken","document","getElementById","dir","ViewerRoot","createElement","body","appendChild","registerAction","mime","PERMISSION_UPDATE","PERMISSION_READ","imagePath","filename","window","FileList","findFile","Promise","all","imports","getCurrentDirectory","Vue","prototype","n","Editor","render","h","props","fileId","active","relativePath","mimeType","$mount","length","setDefault","FilesWorkspacePlugin","el","registerHeader","bind","priority","vm","extend","RichWorkspace","propsData","$el","toString","label","isActive","action","command","undo","redo","strong","em","strike","paragraph","visible","children","heading","level","bullet_list","bullet_list_item","ordered_list","todo_item","blockquote","code_block","component","editor","scopedSlots","_u","fn","ref","commands","focused","autohide","_l","icon","$index","iconCount","getIconClasses","clickIcon","hideChildMenu","childIconClass","preventDefault","toggleChildMenu","open","isChildMenuVisible","childPopoverMenu","isHiddenInMenu","_t","hideLinkMenu","getMarkAttrs","style","setLinkUrl","link","linkUrl","domProps","type","indexOf","_k","keyCode","target","composing","showLinkMenu"],"mappings":"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","file":"editor-rich.js?v=2c33132d8a6120a699db","sourcesContent":["/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nconst openMimetypesMarkdown = [\n\t'text/markdown',\n]\n\nconst openMimetypesPlainText = [\n\t'text/plain',\n\t'application/cmd',\n\t'application/x-empty',\n\t'application/x-msdos-program',\n\t'application/epub+zip',\n\t'application/javascript',\n\t'application/json',\n\t'application/x-perl',\n\t'application/x-php',\n\t'application/x-tex',\n\t'application/xml',\n\t'application/yaml',\n\t'text/css',\n\t'text/csv',\n\t'text/html',\n\t'text/x-c',\n\t'text/x-c++src',\n\t'text/x-h',\n\t'text/x-java-source',\n\t'text/x-ldif',\n\t'text/x-python',\n\t'text/x-shellscript',\n]\n\nconst openMimetypes = [...openMimetypesMarkdown, ...openMimetypesPlainText]\n\nexport {\n\topenMimetypes,\n\topenMimetypesMarkdown,\n\topenMimetypesPlainText,\n}\n","export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=style&index=0&id=01f36cf5&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"#rich-workspace[data-v-01f36cf5]{padding:0 60px;margin-bottom:-24px;text-align:left;max-height:0;transition:max-height 0.5s cubic-bezier(0, 1, 0, 1)}#rich-workspace.creatable[data-v-01f36cf5]{min-height:90px}#rich-workspace[data-v-01f36cf5]:only-child{margin-bottom:0}.empty-workspace[data-v-01f36cf5]{padding-top:43px;color:var(--color-text-maxcontrast);height:0}#rich-workspace[data-v-01f36cf5] div[contenteditable=false]{width:100%;padding:0px;background-color:var(--color-main-background);opacity:1;border:none}#rich-workspace[data-v-01f36cf5] #editor-container{height:100%;position:unset !important;top:auto !important}#rich-workspace[data-v-01f36cf5] #editor-wrapper{position:unset !important;overflow:visible}#rich-workspace[data-v-01f36cf5] #editor{overflow:scroll !important;max-height:50vh}#rich-workspace[data-v-01f36cf5] #editor-wrapper .ProseMirror{padding:0px;margin:0}#rich-workspace[data-v-01f36cf5] .menubar{z-index:50;margin-bottom:-10px}#rich-workspace[data-v-01f36cf5] .menubar .menubar-icons{margin-left:0}#rich-workspace[data-v-01f36cf5] .editor__content{margin:0}#rich-workspace.focus[data-v-01f36cf5]{max-height:50vh}#rich-workspace[data-v-01f36cf5]:not(.focus){max-height:30vh;position:relative;overflow:hidden}#rich-workspace[data-v-01f36cf5]:not(.focus):not(.icon-loading):after{content:'';position:absolute;z-index:1;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(to bottom, rgba(255,255,255,0), var(--color-main-background));width:100%;height:4em}#rich-workspace.dark[data-v-01f36cf5]:not(.focus):not(.icon-loading):after{background-image:linear-gradient(to bottom, rgba(0,0,0,0), var(--color-main-background))}@media only screen and (max-width: 1024px){#rich-workspace[data-v-01f36cf5]:not(.focus){max-height:30vh}}html.ie #rich-workspace[data-v-01f36cf5] #editor-container{position:initial}html.ie #rich-workspace[data-v-01f36cf5] #editor-wrapper{position:relative !important;top:auto !important}html.ie #rich-workspace[data-v-01f36cf5] #editor{display:flex;flex-direction:column;overflow:hidden !important}html.ie #rich-workspace[data-v-01f36cf5] .menubar{position:relative;overflow:hidden;flex-shrink:0;height:44px;top:auto}html.ie #rich-workspace[data-v-01f36cf5] #editor>div:nth-child(2){min-height:44px;overflow-x:hidden;overflow-y:auto;flex-shrink:1}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RichWorkspace.vue?vue&type=template&id=01f36cf5&scoped=true&\"\nimport script from \"./RichWorkspace.vue?vue&type=script&lang=js&\"\nexport * from \"./RichWorkspace.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RichWorkspace.vue?vue&type=style&index=0&id=01f36cf5&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"01f36cf5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.enabled)?_c('div',{class:{'icon-loading': !_vm.loaded || !_vm.ready, 'focus': _vm.focus, 'dark': _vm.darkTheme, 'creatable': _vm.canCreate},attrs:{\"id\":\"rich-workspace\"}},[(_vm.showEmptyWorkspace)?_c('div',{staticClass:\"empty-workspace\",on:{\"click\":_vm.createNew}},[_c('p',{staticClass:\"placeholder\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('text', 'Add notes, lists or links …'))+\"\\n\\t\\t\")])]):_vm._e(),_vm._v(\" \"),(_vm.file)?_c('EditorWrapper',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.ready),expression:\"ready\"}],key:_vm.file.id,attrs:{\"file-id\":_vm.file.id,\"relative-path\":_vm.file.path,\"share-token\":_vm.shareToken,\"active\":true,\"autohide\":true,\"mime\":_vm.file.mimetype,\"autofocus\":_vm.autofocus},on:{\"ready\":function($event){_vm.ready=true},\"focus\":function($event){_vm.focus=true},\"blur\":_vm.unfocus,\"error\":_vm.reset}}):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n/**\n * Callback that should be executed after the document is ready\n * @param callback\n */\nimport axios from '@nextcloud/axios'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { openMimetypes } from './mime'\nimport RichWorkspace from '../views/RichWorkspace'\n\nconst FILE_ACTION_IDENTIFIER = 'Edit with text app'\n\nconst fetchFileInfo = async function(user, path) {\n\tconst response = await axios({\n\t\tmethod: 'PROPFIND',\n\t\turl: generateRemoteUrl(`dav/files/${user}${path}`),\n\t\theaders: {\n\t\t\trequesttoken: OC.requestToken,\n\t\t\t'content-Type': 'text/xml',\n\t\t},\n\t\tdata: `\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`,\n\t})\n\n\tconst files = OCA.Files.App.fileList.filesClient._client.parseMultiStatus(response.data)\n\treturn files.map(file => {\n\t\tconst fileInfo = OCA.Files.App.fileList.filesClient._parseFileInfo(file)\n\t\tfileInfo.href = file.href\n\t\treturn fileInfo\n\t})\n}\n\nconst registerFileCreate = () => {\n\tconst newFileMenuPlugin = {\n\t\tattach(menu) {\n\t\t\tconst fileList = menu.fileList\n\n\t\t\t// only attach to main file list, public view is not supported yet\n\t\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// register the new menu entry\n\t\t\tmenu.addMenuEntry({\n\t\t\t\tid: 'file',\n\t\t\t\tdisplayName: t('text', 'New text document'),\n\t\t\t\ttemplateName: t('text', 'New text document') + '.md',\n\t\t\t\ticonClass: 'icon-filetype-text',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionHandler(name) {\n\t\t\t\t\tfileList.createFile(name).then(function(status, data) {\n\t\t\t\t\t\tconst fileInfoModel = new OCA.Files.FileInfoModel(data)\n\t\t\t\t\t\tif (typeof OCA.Viewer !== 'undefined') {\n\t\t\t\t\t\t\tOCA.Files.fileActions.triggerAction('view', fileInfoModel, fileList)\n\t\t\t\t\t\t} else if (typeof OCA.Viewer === 'undefined') {\n\t\t\t\t\t\t\tOCA.Files.fileActions.triggerAction(FILE_ACTION_IDENTIFIER, fileInfoModel, fileList)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t})\n\t\t},\n\t}\n\tOC.Plugins.register('OCA.Files.NewFileMenu', newFileMenuPlugin)\n}\n\nconst registerFileActionFallback = () => {\n\tconst sharingToken = document.getElementById('sharingToken') ? document.getElementById('sharingToken').value : null\n\tconst dir = document.getElementById('dir').value\n\n\tif (!sharingToken || dir !== '') {\n\t\tconst ViewerRoot = document.createElement('div')\n\t\tViewerRoot.id = 'text-viewer-fallback'\n\t\tdocument.body.appendChild(ViewerRoot)\n\t\tconst registerAction = (mime) => OCA.Files.fileActions.register(\n\t\t\tmime,\n\t\t\tFILE_ACTION_IDENTIFIER,\n\t\t\tOC.PERMISSION_UPDATE | OC.PERMISSION_READ,\n\t\t\tOC.imagePath('core', 'actions/rename'),\n\t\t\t(filename) => {\n\t\t\t\tconst file = window.FileList.findFile(filename)\n\t\t\t\tPromise.all([\n\t\t\t\t\timport('vue'),\n\t\t\t\t\timport(/* webpackChunkName: \"files-modal\" */'./../components/PublicFilesEditor'),\n\t\t\t\t]).then((imports) => {\n\t\t\t\t\tconst path = window.FileList.getCurrentDirectory() + '/' + filename\n\t\t\t\t\tconst Vue = imports[0].default\n\t\t\t\t\tVue.prototype.t = window.t\n\t\t\t\t\tVue.prototype.n = window.n\n\t\t\t\t\tVue.prototype.OCA = window.OCA\n\t\t\t\t\tconst Editor = imports[1].default\n\t\t\t\t\tconst vm = new Vue({\n\t\t\t\t\t\trender: h => h(Editor, {\n\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\tfileId: file ? file.id : null,\n\t\t\t\t\t\t\t\tactive: true,\n\t\t\t\t\t\t\t\tshareToken: sharingToken,\n\t\t\t\t\t\t\t\trelativePath: path,\n\t\t\t\t\t\t\t\tmimeType: file.mimetype,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t})\n\t\t\t\t\tvm.$mount(ViewerRoot)\n\t\t\t\t})\n\t\t\t},\n\t\t\tt('text', 'Edit')\n\t\t)\n\n\t\tfor (let i = 0; i < openMimetypes.length; i++) {\n\t\t\tregisterAction(openMimetypes[i])\n\t\t\tOCA.Files.fileActions.setDefault(openMimetypes[i], FILE_ACTION_IDENTIFIER)\n\t\t}\n\t}\n\n}\n\nconst FilesWorkspacePlugin = {\n\n\tel: null,\n\n\tattach(fileList) {\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\n\n\t\tthis.el = document.createElement('div')\n\t\tfileList.registerHeader({\n\t\t\tid: 'workspace',\n\t\t\tel: this.el,\n\t\t\trender: this.render.bind(this),\n\t\t\tpriority: 10,\n\t\t})\n\t},\n\n\trender(fileList) {\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\n\n\t\timport('vue').then((module) => {\n\t\t\tconst Vue = module.default\n\t\t\tthis.el.id = 'files-workspace-wrapper'\n\t\t\tVue.prototype.t = window.t\n\t\t\tVue.prototype.n = window.n\n\t\t\tVue.prototype.OCA = window.OCA\n\t\t\tconst View = Vue.extend(RichWorkspace)\n\t\t\tconst vm = new View({\n\t\t\t\tpropsData: {\n\t\t\t\t\tpath: fileList.getCurrentDirectory(),\n\t\t\t\t},\n\t\t\t}).$mount(this.el)\n\n\t\t\tfileList.$el.on('changeDirectory', data => {\n\t\t\t\tvm.path = data.dir.toString()\n\t\t\t})\n\t\t})\n\t},\n}\n\nexport {\n\tfetchFileInfo,\n\tregisterFileActionFallback,\n\tregisterFileCreate,\n\tFilesWorkspacePlugin,\n\tFILE_ACTION_IDENTIFIER,\n}\n","export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.vue?vue&type=style&index=0&id=4f2de32e&scoped=true&lang=scss&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".menubar[data-v-4f2de32e]{position:fixed;position:-webkit-sticky;position:sticky;top:0;display:flex;z-index:10010;background-color:var(--color-main-background-translucent);height:44px}.menubar.autohide[data-v-4f2de32e]{visibility:hidden;opacity:0;transition:visibility 0.2s 0.4s, opacity 0.2s 0.4s}.menubar.autohide.is-focused[data-v-4f2de32e]{visibility:visible;opacity:1}.menubar .menubar-icons[data-v-4f2de32e]{flex-grow:1;margin-left:calc((100% - 660px) / 2)}@media (max-width: 660px){.menubar .menubar-icons[data-v-4f2de32e]{margin-left:0}}.menubar[data-v-4f2de32e] .action-item__menu ul{max-height:calc(100vh - 88px);overflow:scroll}.menubar button[data-v-4f2de32e]{width:44px;height:44px;margin:0;background-size:16px;border:0;background-color:transparent;opacity:.5;color:var(--color-main-text);background-position:center center;vertical-align:top}.menubar button[data-v-4f2de32e]:hover,.menubar button[data-v-4f2de32e]:focus,.menubar button[data-v-4f2de32e]:active{background-color:var(--color-background-dark)}.menubar button.is-active[data-v-4f2de32e],.menubar button[data-v-4f2de32e]:hover,.menubar button[data-v-4f2de32e]:focus{opacity:1}.menubar button.icon-undo[data-v-4f2de32e],.menubar button.icon-redo[data-v-4f2de32e]{opacity:.4}.menubar .submenu[data-v-4f2de32e]{display:inline-block;width:44px;height:44px;position:relative;vertical-align:top}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBubble.vue?vue&type=style&index=0&id=b3f47288&scoped=true&lang=scss&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".menububble[data-v-b3f47288]{position:absolute;display:flex;z-index:10020;background:var(--color-main-background-translucent);box-shadow:0 1px 5px var(--color-box-shadow);border-radius:var(--border-radius);padding:0;margin-bottom:0.4rem;visibility:hidden;opacity:0;transform:translateX(-50%);transition:opacity 0.2s, visibility 0.2s}.menububble.is-active[data-v-b3f47288]{opacity:1;visibility:visible}.menububble__button[data-v-b3f47288]{display:block;border:0;padding:0.3rem 0.7rem;margin:0;margin-right:0.2rem;border-radius:var(--border-radius);cursor:pointer}.menububble__button[data-v-b3f47288]:last-child{margin-right:0}.menububble__buttontext[data-v-b3f47288]{padding:0.4rem;padding-right:0}.menububble__form[data-v-b3f47288]{display:flex;align-items:center}.menububble__input[data-v-b3f47288]{font:inherit;border:none;background:transparent;min-width:150px}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('EditorMenuBar',{attrs:{\"editor\":_vm.editor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nvar focused = ref.focused;\nreturn [_c('div',{staticClass:\"menubar\",class:{ 'is-focused': focused, 'autohide': _vm.autohide }},[(_vm.isRichEditor)?_c('div',{ref:\"menubar\",staticClass:\"menubar-icons\"},[_vm._l((_vm.allIcons),function(icon,$index){return [(icon.class)?_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:($index < _vm.iconCount),expression:\"$index < iconCount\"}],key:icon.label,class:_vm.getIconClasses(isActive, icon),attrs:{\"title\":icon.label},on:{\"click\":function($event){return _vm.clickIcon(commands, icon)}}}):[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:($index < _vm.iconCount || !icon.class),expression:\"$index < iconCount || !icon.class\"},{name:\"click-outside\",rawName:\"v-click-outside\",value:(function () { return _vm.hideChildMenu(icon); }),expression:\"() => hideChildMenu(icon)\"}],key:icon.label,staticClass:\"submenu\"},[_c('button',{class:_vm.childIconClass(isActive, icon.children ),attrs:{\"title\":icon.label},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleChildMenu(icon)}}}),_vm._v(\" \"),_c('div',{staticClass:\"popovermenu menu-center\",class:{open: _vm.isChildMenuVisible(icon)}},[_c('PopoverMenu',{attrs:{\"menu\":_vm.childPopoverMenu(isActive, commands, icon.children, icon)}})],1)])]]}),_vm._v(\" \"),_c('Actions',[_vm._l((_vm.allIcons),function(icon,$index){return [(icon.class && _vm.isHiddenInMenu($index))?_c('ActionButton',{key:icon.class,attrs:{\"icon\":icon.class},on:{\"click\":function($event){return _vm.clickIcon(commands, icon)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(icon.label)+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()]})],2)],2):_vm._e(),_vm._v(\" \"),_vm._t(\"default\",[_vm._v(\"\\n\\t\\t\\tLeft side\\n\\t\\t\")])],2)]}}],null,true)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport default [\n\t{\n\t\tlabel: t('text', 'Undo'),\n\t\tclass: 'icon-undo',\n\t\tisActive: (isActive) => {},\n\t\taction: (command) => command.undo(),\n\t},\n\t{\n\t\tlabel: t('text', 'Redo'),\n\t\tclass: 'icon-redo',\n\t\tisActive: (isActive) => {},\n\t\taction: (command) => command.redo(),\n\t},\n\t{\n\t\tlabel: t('text', 'Bold'),\n\t\tclass: 'icon-bold',\n\t\tisActive: (isActive) => isActive.strong(),\n\t\taction: (command) => {\n\t\t\treturn command.strong()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Italic'),\n\t\tclass: 'icon-italic',\n\t\tisActive: (isActive) => isActive.em(),\n\t\taction: (command) => {\n\t\t\treturn command.em()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Strikethrough'),\n\t\tclass: 'icon-strike',\n\t\tisActive: (isActive) => isActive.strike(),\n\t\taction: (command) => {\n\t\t\treturn command.strike()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Paragraph'),\n\t\tclass: 'icon-paragraph',\n\t\tisActive: (isActive) => {},\n\t\taction: (command) => {\n\t\t\treturn command.paragraph()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Headings'),\n\t\tvisible: false,\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 1'),\n\t\t\t\tclass: 'icon-h1',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 1 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 1 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 2'),\n\t\t\t\tclass: 'icon-h2',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 2 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 2 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 3'),\n\t\t\t\tclass: 'icon-h3',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 3 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 3 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 4'),\n\t\t\t\tclass: 'icon-h4',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 4 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 4 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 5'),\n\t\t\t\tclass: 'icon-h5',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 5 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 5 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 6'),\n\t\t\t\tclass: 'icon-h6',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 6 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 6 })\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tlabel: t('text', 'Unordered list'),\n\t\tclass: 'icon-ul',\n\t\tisActive: (isActive) => isActive.bullet_list(),\n\t\taction: (command) => {\n\t\t\treturn command.bullet_list_item()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Ordered list'),\n\t\tclass: 'icon-ol',\n\t\tisActive: (isActive) => isActive.ordered_list(),\n\t\taction: (command) => {\n\t\t\treturn command.ordered_list()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'ToDo list'),\n\t\tclass: 'icon-checkmark',\n\t\tisActive: (isActive) => false,\n\t\taction: (command) => command.todo_item(),\n\t},\n\t{\n\t\tlabel: t('text', 'Blockquote'),\n\t\tclass: 'icon-quote',\n\t\tisActive: (isActive) => isActive.blockquote(),\n\t\taction: (command) => {\n\t\t\treturn command.blockquote()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Code block'),\n\t\tclass: 'icon-code',\n\t\tisActive: (isActive) => isActive.code_block(),\n\t\taction: (command) => {\n\t\t\treturn command.code_block()\n\t\t},\n\t},\n]\n","\n\n\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MenuBar.vue?vue&type=template&id=4f2de32e&scoped=true&\"\nimport script from \"./MenuBar.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MenuBar.vue?vue&type=style&index=0&id=4f2de32e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4f2de32e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('EditorMenuBubble',{staticClass:\"menububble\",attrs:{\"editor\":_vm.editor},on:{\"hide\":_vm.hideLinkMenu},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nvar getMarkAttrs = ref.getMarkAttrs;\nvar menu = ref.menu;\nreturn [_c('div',{staticClass:\"menububble\",class:{ 'is-active': menu.isActive },style:((\"left: \" + (menu.left) + \"px; bottom: \" + (menu.bottom) + \"px;\"))},[(_vm.linkMenuIsActive)?_c('form',{staticClass:\"menububble__form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.setLinkUrl(commands.link, _vm.linkUrl)}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.linkUrl),expression:\"linkUrl\"}],ref:\"linkInput\",staticClass:\"menububble__input\",attrs:{\"type\":\"text\",\"placeholder\":\"https://\"},domProps:{\"value\":(_vm.linkUrl)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.hideLinkMenu($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.linkUrl=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"menububble__button icon-confirm\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.setLinkUrl(commands.link, _vm.linkUrl)}}})]):[_c('button',{staticClass:\"menububble__button\",class:{ 'is-active': isActive.link() },on:{\"click\":function($event){_vm.showLinkMenu(getMarkAttrs('link'))}}},[_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(isActive.link() ? 'Update Link' : 'Add Link'),expression:\"isActive.link() ? 'Update Link' : 'Add Link'\"}],staticClass:\"icon-link\"}),_vm._v(\" \"),_c('span',{staticClass:\"menububble__buttontext\"},[_vm._v(_vm._s(_vm.t('text', 'Add link')))])])]],2)]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBubble.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBubble.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./MenuBubble.vue?vue&type=template&id=b3f47288&scoped=true&\"\nimport script from \"./MenuBubble.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuBubble.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MenuBubble.vue?vue&type=style&index=0&id=b3f47288&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b3f47288\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RichWorkspace.vue?vue&type=template&id=01f36cf5&scoped=true&\"\nimport script from \"./RichWorkspace.vue?vue&type=script&lang=js&\"\nexport * from \"./RichWorkspace.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RichWorkspace.vue?vue&type=style&index=0&id=01f36cf5&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"01f36cf5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.enabled)?_c('div',{class:{'icon-loading': !_vm.loaded || !_vm.ready, 'focus': _vm.focus, 'dark': _vm.darkTheme, 'creatable': _vm.canCreate},attrs:{\"id\":\"rich-workspace\"}},[(_vm.showEmptyWorkspace)?_c('div',{staticClass:\"empty-workspace\",on:{\"click\":_vm.createNew}},[_c('p',{staticClass:\"placeholder\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('text', 'Add notes, lists or links …'))+\"\\n\\t\\t\")])]):_vm._e(),_vm._v(\" \"),(_vm.file)?_c('EditorWrapper',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.ready),expression:\"ready\"}],key:_vm.file.id,attrs:{\"file-id\":_vm.file.id,\"relative-path\":_vm.file.path,\"share-token\":_vm.shareToken,\"active\":true,\"autohide\":true,\"mime\":_vm.file.mimetype,\"autofocus\":_vm.autofocus},on:{\"ready\":function($event){_vm.ready=true},\"focus\":function($event){_vm.focus=true},\"blur\":_vm.unfocus,\"error\":_vm.reset}}):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n/**\n * Callback that should be executed after the document is ready\n * @param callback\n */\nimport axios from '@nextcloud/axios'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { openMimetypes } from './mime'\nimport RichWorkspace from '../views/RichWorkspace'\n\nconst FILE_ACTION_IDENTIFIER = 'Edit with text app'\n\nconst fetchFileInfo = async function(user, path) {\n\tconst response = await axios({\n\t\tmethod: 'PROPFIND',\n\t\turl: generateRemoteUrl(`dav/files/${user}${path}`),\n\t\theaders: {\n\t\t\trequesttoken: OC.requestToken,\n\t\t\t'content-Type': 'text/xml',\n\t\t},\n\t\tdata: `\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`,\n\t})\n\n\tconst files = OCA.Files.App.fileList.filesClient._client.parseMultiStatus(response.data)\n\treturn files.map(file => {\n\t\tconst fileInfo = OCA.Files.App.fileList.filesClient._parseFileInfo(file)\n\t\tfileInfo.href = file.href\n\t\treturn fileInfo\n\t})\n}\n\nconst registerFileCreate = () => {\n\tconst newFileMenuPlugin = {\n\t\tattach(menu) {\n\t\t\tconst fileList = menu.fileList\n\n\t\t\t// only attach to main file list, public view is not supported yet\n\t\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// register the new menu entry\n\t\t\tmenu.addMenuEntry({\n\t\t\t\tid: 'file',\n\t\t\t\tdisplayName: t('text', 'New text document'),\n\t\t\t\ttemplateName: t('text', 'New text document') + '.md',\n\t\t\t\ticonClass: 'icon-filetype-text',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionHandler(name) {\n\t\t\t\t\tfileList.createFile(name).then(function(status, data) {\n\t\t\t\t\t\tconst fileInfoModel = new OCA.Files.FileInfoModel(data)\n\t\t\t\t\t\tif (typeof OCA.Viewer !== 'undefined') {\n\t\t\t\t\t\t\tOCA.Files.fileActions.triggerAction('view', fileInfoModel, fileList)\n\t\t\t\t\t\t} else if (typeof OCA.Viewer === 'undefined') {\n\t\t\t\t\t\t\tOCA.Files.fileActions.triggerAction(FILE_ACTION_IDENTIFIER, fileInfoModel, fileList)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t})\n\t\t},\n\t}\n\tOC.Plugins.register('OCA.Files.NewFileMenu', newFileMenuPlugin)\n}\n\nconst registerFileActionFallback = () => {\n\tconst sharingToken = document.getElementById('sharingToken') ? document.getElementById('sharingToken').value : null\n\tconst dir = document.getElementById('dir').value\n\n\tif (!sharingToken || dir !== '') {\n\t\tconst ViewerRoot = document.createElement('div')\n\t\tViewerRoot.id = 'text-viewer-fallback'\n\t\tdocument.body.appendChild(ViewerRoot)\n\t\tconst registerAction = (mime) => OCA.Files.fileActions.register(\n\t\t\tmime,\n\t\t\tFILE_ACTION_IDENTIFIER,\n\t\t\tOC.PERMISSION_UPDATE | OC.PERMISSION_READ,\n\t\t\tOC.imagePath('core', 'actions/rename'),\n\t\t\t(filename) => {\n\t\t\t\tconst file = window.FileList.findFile(filename)\n\t\t\t\tPromise.all([\n\t\t\t\t\timport('vue'),\n\t\t\t\t\timport(/* webpackChunkName: \"files-modal\" */'./../components/PublicFilesEditor'),\n\t\t\t\t]).then((imports) => {\n\t\t\t\t\tconst path = window.FileList.getCurrentDirectory() + '/' + filename\n\t\t\t\t\tconst Vue = imports[0].default\n\t\t\t\t\tVue.prototype.t = window.t\n\t\t\t\t\tVue.prototype.n = window.n\n\t\t\t\t\tVue.prototype.OCA = window.OCA\n\t\t\t\t\tconst Editor = imports[1].default\n\t\t\t\t\tconst vm = new Vue({\n\t\t\t\t\t\trender: h => h(Editor, {\n\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\tfileId: file ? file.id : null,\n\t\t\t\t\t\t\t\tactive: true,\n\t\t\t\t\t\t\t\tshareToken: sharingToken,\n\t\t\t\t\t\t\t\trelativePath: path,\n\t\t\t\t\t\t\t\tmimeType: file.mimetype,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t})\n\t\t\t\t\tvm.$mount(ViewerRoot)\n\t\t\t\t})\n\t\t\t},\n\t\t\tt('text', 'Edit')\n\t\t)\n\n\t\tfor (let i = 0; i < openMimetypes.length; i++) {\n\t\t\tregisterAction(openMimetypes[i])\n\t\t\tOCA.Files.fileActions.setDefault(openMimetypes[i], FILE_ACTION_IDENTIFIER)\n\t\t}\n\t}\n\n}\n\nconst FilesWorkspacePlugin = {\n\n\tel: null,\n\n\tattach(fileList) {\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\n\n\t\tthis.el = document.createElement('div')\n\t\tfileList.registerHeader({\n\t\t\tid: 'workspace',\n\t\t\tel: this.el,\n\t\t\trender: this.render.bind(this),\n\t\t\tpriority: 10,\n\t\t})\n\t},\n\n\trender(fileList) {\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\n\n\t\timport('vue').then((module) => {\n\t\t\tconst Vue = module.default\n\t\t\tthis.el.id = 'files-workspace-wrapper'\n\t\t\tVue.prototype.t = window.t\n\t\t\tVue.prototype.n = window.n\n\t\t\tVue.prototype.OCA = window.OCA\n\t\t\tconst View = Vue.extend(RichWorkspace)\n\t\t\tconst vm = new View({\n\t\t\t\tpropsData: {\n\t\t\t\t\tpath: fileList.getCurrentDirectory(),\n\t\t\t\t},\n\t\t\t}).$mount(this.el)\n\n\t\t\tfileList.$el.on('urlChanged', data => {\n\t\t\t\tvm.path = data.dir.toString()\n\t\t\t})\n\t\t\tfileList.$el.on('changeDirectory', data => {\n\t\t\t\tvm.path = data.dir.toString()\n\t\t\t})\n\t\t})\n\t},\n}\n\nexport {\n\tfetchFileInfo,\n\tregisterFileActionFallback,\n\tregisterFileCreate,\n\tFilesWorkspacePlugin,\n\tFILE_ACTION_IDENTIFIER,\n}\n","export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.vue?vue&type=style&index=0&id=4f2de32e&scoped=true&lang=scss&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".menubar[data-v-4f2de32e]{position:fixed;position:-webkit-sticky;position:sticky;top:0;display:flex;z-index:10010;background-color:var(--color-main-background-translucent);height:44px}.menubar.autohide[data-v-4f2de32e]{visibility:hidden;opacity:0;transition:visibility 0.2s 0.4s, opacity 0.2s 0.4s}.menubar.autohide.is-focused[data-v-4f2de32e]{visibility:visible;opacity:1}.menubar .menubar-icons[data-v-4f2de32e]{flex-grow:1;margin-left:calc((100% - 660px) / 2)}@media (max-width: 660px){.menubar .menubar-icons[data-v-4f2de32e]{margin-left:0}}.menubar[data-v-4f2de32e] .action-item__menu ul{max-height:calc(100vh - 88px);overflow:scroll}.menubar button[data-v-4f2de32e]{width:44px;height:44px;margin:0;background-size:16px;border:0;background-color:transparent;opacity:.5;color:var(--color-main-text);background-position:center center;vertical-align:top}.menubar button[data-v-4f2de32e]:hover,.menubar button[data-v-4f2de32e]:focus,.menubar button[data-v-4f2de32e]:active{background-color:var(--color-background-dark)}.menubar button.is-active[data-v-4f2de32e],.menubar button[data-v-4f2de32e]:hover,.menubar button[data-v-4f2de32e]:focus{opacity:1}.menubar button.icon-undo[data-v-4f2de32e],.menubar button.icon-redo[data-v-4f2de32e]{opacity:.4}.menubar .submenu[data-v-4f2de32e]{display:inline-block;width:44px;height:44px;position:relative;vertical-align:top}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBubble.vue?vue&type=style&index=0&id=b3f47288&scoped=true&lang=scss&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".menububble[data-v-b3f47288]{position:absolute;display:flex;z-index:10020;background:var(--color-main-background-translucent);box-shadow:0 1px 5px var(--color-box-shadow);border-radius:var(--border-radius);padding:0;margin-bottom:0.4rem;visibility:hidden;opacity:0;transform:translateX(-50%);transition:opacity 0.2s, visibility 0.2s}.menububble.is-active[data-v-b3f47288]{opacity:1;visibility:visible}.menububble__button[data-v-b3f47288]{display:block;border:0;padding:0.3rem 0.7rem;margin:0;margin-right:0.2rem;border-radius:var(--border-radius);cursor:pointer}.menububble__button[data-v-b3f47288]:last-child{margin-right:0}.menububble__buttontext[data-v-b3f47288]{padding:0.4rem;padding-right:0}.menububble__form[data-v-b3f47288]{display:flex;align-items:center}.menububble__input[data-v-b3f47288]{font:inherit;border:none;background:transparent;min-width:150px}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('EditorMenuBar',{attrs:{\"editor\":_vm.editor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nvar focused = ref.focused;\nreturn [_c('div',{staticClass:\"menubar\",class:{ 'is-focused': focused, 'autohide': _vm.autohide }},[(_vm.isRichEditor)?_c('div',{ref:\"menubar\",staticClass:\"menubar-icons\"},[_vm._l((_vm.allIcons),function(icon,$index){return [(icon.class)?_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:($index < _vm.iconCount),expression:\"$index < iconCount\"}],key:icon.label,class:_vm.getIconClasses(isActive, icon),attrs:{\"title\":icon.label},on:{\"click\":function($event){return _vm.clickIcon(commands, icon)}}}):[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:($index < _vm.iconCount || !icon.class),expression:\"$index < iconCount || !icon.class\"},{name:\"click-outside\",rawName:\"v-click-outside\",value:(function () { return _vm.hideChildMenu(icon); }),expression:\"() => hideChildMenu(icon)\"}],key:icon.label,staticClass:\"submenu\"},[_c('button',{class:_vm.childIconClass(isActive, icon.children ),attrs:{\"title\":icon.label},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleChildMenu(icon)}}}),_vm._v(\" \"),_c('div',{staticClass:\"popovermenu menu-center\",class:{open: _vm.isChildMenuVisible(icon)}},[_c('PopoverMenu',{attrs:{\"menu\":_vm.childPopoverMenu(isActive, commands, icon.children, icon)}})],1)])]]}),_vm._v(\" \"),_c('Actions',[_vm._l((_vm.allIcons),function(icon,$index){return [(icon.class && _vm.isHiddenInMenu($index))?_c('ActionButton',{key:icon.class,attrs:{\"icon\":icon.class},on:{\"click\":function($event){return _vm.clickIcon(commands, icon)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(icon.label)+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()]})],2)],2):_vm._e(),_vm._v(\" \"),_vm._t(\"default\",[_vm._v(\"\\n\\t\\t\\tLeft side\\n\\t\\t\")])],2)]}}],null,true)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport default [\n\t{\n\t\tlabel: t('text', 'Undo'),\n\t\tclass: 'icon-undo',\n\t\tisActive: (isActive) => {},\n\t\taction: (command) => command.undo(),\n\t},\n\t{\n\t\tlabel: t('text', 'Redo'),\n\t\tclass: 'icon-redo',\n\t\tisActive: (isActive) => {},\n\t\taction: (command) => command.redo(),\n\t},\n\t{\n\t\tlabel: t('text', 'Bold'),\n\t\tclass: 'icon-bold',\n\t\tisActive: (isActive) => isActive.strong(),\n\t\taction: (command) => {\n\t\t\treturn command.strong()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Italic'),\n\t\tclass: 'icon-italic',\n\t\tisActive: (isActive) => isActive.em(),\n\t\taction: (command) => {\n\t\t\treturn command.em()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Strikethrough'),\n\t\tclass: 'icon-strike',\n\t\tisActive: (isActive) => isActive.strike(),\n\t\taction: (command) => {\n\t\t\treturn command.strike()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Paragraph'),\n\t\tclass: 'icon-paragraph',\n\t\tisActive: (isActive) => {},\n\t\taction: (command) => {\n\t\t\treturn command.paragraph()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Headings'),\n\t\tvisible: false,\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 1'),\n\t\t\t\tclass: 'icon-h1',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 1 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 1 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 2'),\n\t\t\t\tclass: 'icon-h2',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 2 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 2 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 3'),\n\t\t\t\tclass: 'icon-h3',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 3 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 3 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 4'),\n\t\t\t\tclass: 'icon-h4',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 4 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 4 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 5'),\n\t\t\t\tclass: 'icon-h5',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 5 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 5 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 6'),\n\t\t\t\tclass: 'icon-h6',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 6 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 6 })\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tlabel: t('text', 'Unordered list'),\n\t\tclass: 'icon-ul',\n\t\tisActive: (isActive) => isActive.bullet_list(),\n\t\taction: (command) => {\n\t\t\treturn command.bullet_list_item()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Ordered list'),\n\t\tclass: 'icon-ol',\n\t\tisActive: (isActive) => isActive.ordered_list(),\n\t\taction: (command) => {\n\t\t\treturn command.ordered_list()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'ToDo list'),\n\t\tclass: 'icon-checkmark',\n\t\tisActive: (isActive) => false,\n\t\taction: (command) => command.todo_item(),\n\t},\n\t{\n\t\tlabel: t('text', 'Blockquote'),\n\t\tclass: 'icon-quote',\n\t\tisActive: (isActive) => isActive.blockquote(),\n\t\taction: (command) => {\n\t\t\treturn command.blockquote()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Code block'),\n\t\tclass: 'icon-code',\n\t\tisActive: (isActive) => isActive.code_block(),\n\t\taction: (command) => {\n\t\t\treturn command.code_block()\n\t\t},\n\t},\n]\n","\n\n\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MenuBar.vue?vue&type=template&id=4f2de32e&scoped=true&\"\nimport script from \"./MenuBar.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MenuBar.vue?vue&type=style&index=0&id=4f2de32e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4f2de32e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('EditorMenuBubble',{staticClass:\"menububble\",attrs:{\"editor\":_vm.editor},on:{\"hide\":_vm.hideLinkMenu},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nvar getMarkAttrs = ref.getMarkAttrs;\nvar menu = ref.menu;\nreturn [_c('div',{staticClass:\"menububble\",class:{ 'is-active': menu.isActive },style:((\"left: \" + (menu.left) + \"px; bottom: \" + (menu.bottom) + \"px;\"))},[(_vm.linkMenuIsActive)?_c('form',{staticClass:\"menububble__form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.setLinkUrl(commands.link, _vm.linkUrl)}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.linkUrl),expression:\"linkUrl\"}],ref:\"linkInput\",staticClass:\"menububble__input\",attrs:{\"type\":\"text\",\"placeholder\":\"https://\"},domProps:{\"value\":(_vm.linkUrl)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.hideLinkMenu($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.linkUrl=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"menububble__button icon-confirm\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.setLinkUrl(commands.link, _vm.linkUrl)}}})]):[_c('button',{staticClass:\"menububble__button\",class:{ 'is-active': isActive.link() },on:{\"click\":function($event){_vm.showLinkMenu(getMarkAttrs('link'))}}},[_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(isActive.link() ? 'Update Link' : 'Add Link'),expression:\"isActive.link() ? 'Update Link' : 'Add Link'\"}],staticClass:\"icon-link\"}),_vm._v(\" \"),_c('span',{staticClass:\"menububble__buttontext\"},[_vm._v(_vm._s(_vm.t('text', 'Add link')))])])]],2)]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBubble.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBubble.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./MenuBubble.vue?vue&type=template&id=b3f47288&scoped=true&\"\nimport script from \"./MenuBubble.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuBubble.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MenuBubble.vue?vue&type=style&index=0&id=b3f47288&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b3f47288\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RichWorkspace.vue?vue&type=template&id=01f36cf5&scoped=true&\"\nimport script from \"./RichWorkspace.vue?vue&type=script&lang=js&\"\nexport * from \"./RichWorkspace.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RichWorkspace.vue?vue&type=style&index=0&id=01f36cf5&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"01f36cf5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.enabled)?_c('div',{class:{'icon-loading': !_vm.loaded || !_vm.ready, 'focus': _vm.focus, 'dark': _vm.darkTheme, 'creatable': _vm.canCreate},attrs:{\"id\":\"rich-workspace\"}},[(_vm.showEmptyWorkspace)?_c('div',{staticClass:\"empty-workspace\",on:{\"click\":_vm.createNew}},[_c('p',{staticClass:\"placeholder\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('text', 'Add notes, lists or links …'))+\"\\n\\t\\t\")])]):_vm._e(),_vm._v(\" \"),(_vm.file)?_c('EditorWrapper',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.ready),expression:\"ready\"}],key:_vm.file.id,attrs:{\"file-id\":_vm.file.id,\"relative-path\":_vm.file.path,\"share-token\":_vm.shareToken,\"active\":true,\"autohide\":true,\"mime\":_vm.file.mimetype,\"autofocus\":_vm.autofocus},on:{\"ready\":function($event){_vm.ready=true},\"focus\":function($event){_vm.focus=true},\"blur\":_vm.unfocus,\"error\":_vm.reset}}):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n/**\n * Callback that should be executed after the document is ready\n * @param callback\n */\nimport axios from '@nextcloud/axios'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { openMimetypes } from './mime'\nimport RichWorkspace from '../views/RichWorkspace'\n\nconst FILE_ACTION_IDENTIFIER = 'Edit with text app'\n\nconst fetchFileInfo = async function(user, path) {\n\tconst response = await axios({\n\t\tmethod: 'PROPFIND',\n\t\turl: generateRemoteUrl(`dav/files/${user}${path}`),\n\t\theaders: {\n\t\t\trequesttoken: OC.requestToken,\n\t\t\t'content-Type': 'text/xml',\n\t\t},\n\t\tdata: `\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`,\n\t})\n\n\tconst files = OCA.Files.App.fileList.filesClient._client.parseMultiStatus(response.data)\n\treturn files.map(file => {\n\t\tconst fileInfo = OCA.Files.App.fileList.filesClient._parseFileInfo(file)\n\t\tfileInfo.href = file.href\n\t\treturn fileInfo\n\t})\n}\n\nconst registerFileCreate = () => {\n\tconst newFileMenuPlugin = {\n\t\tattach(menu) {\n\t\t\tconst fileList = menu.fileList\n\n\t\t\t// only attach to main file list, public view is not supported yet\n\t\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// register the new menu entry\n\t\t\tmenu.addMenuEntry({\n\t\t\t\tid: 'file',\n\t\t\t\tdisplayName: t('text', 'New text document'),\n\t\t\t\ttemplateName: t('text', 'New text document') + '.md',\n\t\t\t\ticonClass: 'icon-filetype-text',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionHandler(name) {\n\t\t\t\t\tfileList.createFile(name).then(function(status, data) {\n\t\t\t\t\t\tconst fileInfoModel = new OCA.Files.FileInfoModel(data)\n\t\t\t\t\t\tif (typeof OCA.Viewer !== 'undefined') {\n\t\t\t\t\t\t\tOCA.Files.fileActions.triggerAction('view', fileInfoModel, fileList)\n\t\t\t\t\t\t} else if (typeof OCA.Viewer === 'undefined') {\n\t\t\t\t\t\t\tOCA.Files.fileActions.triggerAction(FILE_ACTION_IDENTIFIER, fileInfoModel, fileList)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t})\n\t\t},\n\t}\n\tOC.Plugins.register('OCA.Files.NewFileMenu', newFileMenuPlugin)\n}\n\nconst registerFileActionFallback = () => {\n\tconst sharingToken = document.getElementById('sharingToken') ? document.getElementById('sharingToken').value : null\n\tconst dir = document.getElementById('dir').value\n\n\tif (!sharingToken || dir !== '') {\n\t\tconst ViewerRoot = document.createElement('div')\n\t\tViewerRoot.id = 'text-viewer-fallback'\n\t\tdocument.body.appendChild(ViewerRoot)\n\t\tconst registerAction = (mime) => OCA.Files.fileActions.register(\n\t\t\tmime,\n\t\t\tFILE_ACTION_IDENTIFIER,\n\t\t\tOC.PERMISSION_UPDATE | OC.PERMISSION_READ,\n\t\t\tOC.imagePath('core', 'actions/rename'),\n\t\t\t(filename) => {\n\t\t\t\tconst file = window.FileList.findFile(filename)\n\t\t\t\tPromise.all([\n\t\t\t\t\timport('vue'),\n\t\t\t\t\timport(/* webpackChunkName: \"files-modal\" */'./../components/PublicFilesEditor'),\n\t\t\t\t]).then((imports) => {\n\t\t\t\t\tconst path = window.FileList.getCurrentDirectory() + '/' + filename\n\t\t\t\t\tconst Vue = imports[0].default\n\t\t\t\t\tVue.prototype.t = window.t\n\t\t\t\t\tVue.prototype.n = window.n\n\t\t\t\t\tVue.prototype.OCA = window.OCA\n\t\t\t\t\tconst Editor = imports[1].default\n\t\t\t\t\tconst vm = new Vue({\n\t\t\t\t\t\trender: h => h(Editor, {\n\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\tfileId: file ? file.id : null,\n\t\t\t\t\t\t\t\tactive: true,\n\t\t\t\t\t\t\t\tshareToken: sharingToken,\n\t\t\t\t\t\t\t\trelativePath: path,\n\t\t\t\t\t\t\t\tmimeType: file.mimetype,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t})\n\t\t\t\t\tvm.$mount(ViewerRoot)\n\t\t\t\t})\n\t\t\t},\n\t\t\tt('text', 'Edit')\n\t\t)\n\n\t\tfor (let i = 0; i < openMimetypes.length; i++) {\n\t\t\tregisterAction(openMimetypes[i])\n\t\t\tOCA.Files.fileActions.setDefault(openMimetypes[i], FILE_ACTION_IDENTIFIER)\n\t\t}\n\t}\n\n}\n\nconst FilesWorkspacePlugin = {\n\n\tel: null,\n\n\tattach(fileList) {\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\n\n\t\tthis.el = document.createElement('div')\n\t\tfileList.registerHeader({\n\t\t\tid: 'workspace',\n\t\t\tel: this.el,\n\t\t\trender: this.render.bind(this),\n\t\t\tpriority: 10,\n\t\t})\n\t},\n\n\trender(fileList) {\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\n\n\t\timport('vue').then((module) => {\n\t\t\tconst Vue = module.default\n\t\t\tthis.el.id = 'files-workspace-wrapper'\n\t\t\tVue.prototype.t = window.t\n\t\t\tVue.prototype.n = window.n\n\t\t\tVue.prototype.OCA = window.OCA\n\t\t\tconst View = Vue.extend(RichWorkspace)\n\t\t\tconst vm = new View({\n\t\t\t\tpropsData: {\n\t\t\t\t\tpath: fileList.getCurrentDirectory(),\n\t\t\t\t},\n\t\t\t}).$mount(this.el)\n\n\t\t\tfileList.$el.on('changeDirectory', data => {\n\t\t\t\tvm.path = data.dir.toString()\n\t\t\t})\n\t\t})\n\t},\n}\n\nexport {\n\tfetchFileInfo,\n\tregisterFileActionFallback,\n\tregisterFileCreate,\n\tFilesWorkspacePlugin,\n\tFILE_ACTION_IDENTIFIER,\n}\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = false;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\nmodule.exports = {\n SEMVER_SPEC_VERSION,\n MAX_LENGTH,\n MAX_SAFE_INTEGER,\n MAX_SAFE_COMPONENT_LENGTH\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","/*!\n * Vue.js v2.6.12\n * (c) 2014-2020 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a string containing static keys from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.