├── .gitattributes ├── .gitignore ├── README.md ├── lib └── vue-2.1.3.jar ├── src ├── Hello.kt └── Vue.kt └── web ├── index.html └── js └── app ├── KotlinJS.js ├── KotlinJS.meta.js ├── KotlinJS └── root-package.kjsm └── lib ├── kotlin.js ├── kotlin.meta.js └── webjars └── vue └── 2.1.3 ├── vue.common.js ├── vue.js ├── vue.min.js ├── vue.runtime.common.js ├── vue.runtime.js └── vue.runtime.min.js /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=Kotlin 2 | *.css linguist-language=Kotlin 3 | *.html linguist-language=Kotlin 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | /.idea 3 | *.iml 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # KotlinJS-Vue 2 | Tried to use Kotlin to generate javascript code to work with vuejs 3 | 4 | * [Kotlin](http://kotlinlang.org/) 5 | * [Kotlin for Vue.js](http://www.jianshu.com/p/d35e1f00d4ad) 简单介绍 6 | 7 | 8 | --- 9 | 10 | Kotlin + Vue.js 的实验Demo,虽然写的不太好,但是可以运行 11 | -------------------------------------------------------------------------------- /lib/vue-2.1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zyao89/KotlinJS-Vue/0a201630831e050f40dcc7536f20f71d7407c401/lib/vue-2.1.3.jar -------------------------------------------------------------------------------- /src/Hello.kt: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Zyao89 on 2017/6/2. 3 | */ 4 | 5 | import kotlin.browser.window 6 | import kotlin.js.json 7 | 8 | external fun alert(message: Any?) 9 | 10 | @JsName("window") 11 | val w: dynamic = window 12 | 13 | fun main(args: Array) { 14 | Vue.config.delimiters = arrayOf("{!", "!}") 15 | console.log(Vue.config) 16 | vue = Vue(json( 17 | Pair("el", "#app"), 18 | Pair("data", 19 | json( 20 | Pair("message", "ABCDEF123456789") 21 | ) 22 | ), 23 | Pair("methods", 24 | json( 25 | Pair("reverseMessage", { 26 | change() 27 | }) 28 | 29 | )) 30 | )) 31 | console.log(vue) 32 | } 33 | 34 | var vue:Vue? = null 35 | 36 | fun haha(): Unit { 37 | alert("hahah54564aha....") 38 | } 39 | 40 | fun change() { 41 | vue?.let { 42 | console.log(it.`$data`?.message) 43 | it.`$data`?.message = it.`$data`.message.split("").reverse().join("") 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/Vue.kt: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Zyao89 on 2017/6/2. 3 | */ 4 | import org.w3c.dom.HTMLElement 5 | 6 | @JsName("Vue") 7 | external class Vue (options: Any?){ 8 | var paramAttributes: Array 9 | var template: String 10 | var replace: Boolean 11 | var created: VueCallback 12 | var beforeCompile: VueCallback 13 | var compiled: VueCallback 14 | var ready: VueCallback 15 | var attached: VueCallback 16 | var detached: VueCallback 17 | var beforeDestroy: VueCallback 18 | var destroyed: VueCallback 19 | var inherit: Boolean 20 | var mixins: Array 21 | var name: String 22 | var `$el`: HTMLElement 23 | var `$parent`: Vue 24 | var `$root`: Vue 25 | fun `$watch`(expression: String, callback: VueCallback, deep: Boolean?, immediate: Boolean?):Unit 26 | fun `$get`(expressopn: String): dynamic 27 | fun `$set`(keypath: String, value: Any): Unit 28 | fun `$add`(keypath: String, value: Any): Unit 29 | fun `$delete`(keypath: String):Unit 30 | fun `$eval`(expression: String): dynamic 31 | fun `$interpolate`(templateString: String): String 32 | fun `$log`(keypath: String?): Unit 33 | fun `$dispatch`(evant: String, args: Any?): Vue 34 | fun `$broadcast`(evant: String, args: Any?): Vue 35 | fun `$emit`(event: String, args: Any?): Vue 36 | fun `$on`(event: String, callback: Any): Vue 37 | fun `$once`(event: String, callback: Any): Vue 38 | fun `$off`(event: String?, callback: Any?): Vue 39 | fun `$appendTo`(element: Any, callback: Any?): Vue 40 | fun `$prependTo`(element: Any, callback: Any?): Vue 41 | fun `$before`(element: Any, callback: Any?): Vue 42 | fun `$after`(element: Any, callback: Any?): Vue 43 | fun `$remove`(callback: Any?): Vue 44 | fun `$mount`(element: Any?): Vue 45 | fun `$destroy`(remove: Boolean?): Unit 46 | fun `$compile`(element: HTMLElement): VueCallback 47 | fun `$addChild`(options: Any, constructor: Any?): Vue 48 | fun _init(options: Any): Unit 49 | fun _cleanup(): Unit 50 | companion object { 51 | var config: VueConfig 52 | fun extend(options: Any): Vue 53 | fun directive(id: String, definition: Any?): Unit 54 | fun filter(id: String, definition: FilterCallback?): Unit 55 | fun component(id: String, definition: Vue): Unit 56 | fun transition(id: String, definition: Any?): Unit 57 | fun partial(id: String, definition: String?): Unit 58 | fun nextTick(callback: Any): Unit 59 | fun require(module: String): Unit 60 | fun use(plugin: Any, args: Any?): Vue 61 | } 62 | var `$data`: dynamic 63 | } 64 | @JsName("config") 65 | external class VueConfig { 66 | var prefix: String 67 | var debug: Boolean 68 | var silent: Boolean 69 | var proto: Boolean 70 | var interpolate: Boolean 71 | var async: Boolean 72 | var delimiters: Array 73 | } 74 | interface ValueCallback { 75 | fun apply(newValue: Any, oldValue: Any): Unit 76 | } 77 | 78 | interface VueCallback { 79 | fun apply(): Unit 80 | } 81 | 82 | interface FilterCallback { 83 | fun apply(value: Any, begin: Any?, end: Any?): Any 84 | } -------------------------------------------------------------------------------- /web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Test 6 | 7 | 8 |

9 |
10 | {{ message }} 11 | 12 |
13 | 我直接调用Kotlin方法 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /web/js/app/KotlinJS.js: -------------------------------------------------------------------------------- 1 | if (typeof kotlin === 'undefined') { 2 | throw new Error("Error loading module 'KotlinJS'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'KotlinJS'."); 3 | } 4 | var KotlinJS = function (_, Kotlin) { 5 | 'use strict'; 6 | var Pair = Kotlin.kotlin.Pair; 7 | var json = Kotlin.kotlin.js.json_pyyo18$; 8 | var w; 9 | function main$lambda() { 10 | change(); 11 | } 12 | function main(args) { 13 | Vue.config.delimiters = ['{!', '!}']; 14 | console.log(Vue.config); 15 | vue = new Vue(json([new Pair('el', '#app'), new Pair('data', json([new Pair('message', 'ABCDEF123456789')])), new Pair('methods', json([new Pair('reverseMessage', main$lambda)]))])); 16 | console.log(vue); 17 | } 18 | var vue; 19 | function haha() { 20 | alert('hahah54564aha....'); 21 | } 22 | function change() { 23 | if (vue != null) { 24 | var it = vue; 25 | var tmp$, tmp$_0, tmp$_1; 26 | tmp$_0 = (tmp$ = it.$data) != null ? tmp$.message : null; 27 | console.log(tmp$_0); 28 | (tmp$_1 = it.$data) != null ? (tmp$_1.message = it.$data.message.split('').reverse().join('')) : null; 29 | } 30 | } 31 | function ValueCallback() { 32 | } 33 | ValueCallback.$metadata$ = { 34 | kind: Kotlin.Kind.INTERFACE, 35 | simpleName: 'ValueCallback', 36 | interfaces: [] 37 | }; 38 | function VueCallback() { 39 | } 40 | VueCallback.$metadata$ = { 41 | kind: Kotlin.Kind.INTERFACE, 42 | simpleName: 'VueCallback', 43 | interfaces: [] 44 | }; 45 | function FilterCallback() { 46 | } 47 | FilterCallback.$metadata$ = { 48 | kind: Kotlin.Kind.INTERFACE, 49 | simpleName: 'FilterCallback', 50 | interfaces: [] 51 | }; 52 | Object.defineProperty(_, 'window', { 53 | get: function () { 54 | return w; 55 | } 56 | }); 57 | _.main_kand9s$ = main; 58 | Object.defineProperty(_, 'vue', { 59 | get: function () { 60 | return vue; 61 | }, 62 | set: function (value) { 63 | vue = value; 64 | } 65 | }); 66 | _.haha = haha; 67 | _.change = change; 68 | _.ValueCallback = ValueCallback; 69 | _.VueCallback = VueCallback; 70 | _.FilterCallback = FilterCallback; 71 | w = window; 72 | vue = null; 73 | Kotlin.defineModule('KotlinJS', _); 74 | main([]); 75 | return _; 76 | }(typeof KotlinJS === 'undefined' ? {} : KotlinJS, kotlin); 77 | -------------------------------------------------------------------------------- /web/js/app/KotlinJS.meta.js: -------------------------------------------------------------------------------- 1 | // Kotlin.kotlin_module_metadata(65537, "KotlinJS", "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"); 2 | -------------------------------------------------------------------------------- /web/js/app/KotlinJS/root-package.kjsm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zyao89/KotlinJS-Vue/0a201630831e050f40dcc7536f20f71d7407c401/web/js/app/KotlinJS/root-package.kjsm -------------------------------------------------------------------------------- /web/js/app/lib/webjars/vue/2.1.3/vue.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Vue.js v2.1.3 3 | * (c) 2014-2016 Evan You 4 | * Released under the MIT License. 5 | */ 6 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Vue=t()}(this,function(){"use strict";function e(e){return null==e?"":"object"==typeof e?JSON.stringify(e,null,2):String(e)}function t(e){var t=parseFloat(e,10);return t||0===t?t:e}function n(e,t){for(var n=Object.create(null),r=e.split(","),i=0;i-1)return e.splice(n,1)}}function i(e,t){return Ur.call(e,t)}function o(e){return"string"==typeof e||"number"==typeof e}function a(e){var t=Object.create(null);return function(n){var r=t[n];return r||(t[n]=e(n))}}function s(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n}function c(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function l(e,t){for(var n in t)e[n]=t[n];return e}function u(e){return null!==e&&"object"==typeof e}function f(e){return qr.call(e)===Wr}function d(e){for(var t={},n=0;n=0&&wi[n].id>e.id;)n--;wi.splice(Math.max(n,Ai)+1,0,e)}else wi.push(e);Ci||(Ci=!0,si(H))}}function z(e){Ti.clear(),J(e,Ti)}function J(e,t){var n,r,i=Array.isArray(e);if((i||u(e))&&Object.isExtensible(e)){if(e.__ob__){var o=e.__ob__.dep.id;if(t.has(o))return;t.add(o)}if(i)for(n=e.length;n--;)J(e[n],t);else for(r=Object.keys(e),n=r.length;n--;)J(e[r[n]],t)}}function K(e){e._watchers=[],q(e),W(e),Z(e),Y(e),Q(e)}function q(e){var t=e.$options.props;if(t){var n=e.$options.propsData||{},r=e.$options._propKeys=Object.keys(t),i=!e.$parent;gi.shouldConvert=i;for(var o=function(i){var o=r[i];A(e,o,R(o,t,n,e))},a=0;a1?c(n):n;for(var r=c(arguments,1),i=0,o=n.length;i-1:e.test(t)}function Ve(e){var t={};t.get=function(){return li},Object.defineProperty(e,"config",t),e.util=$i,e.set=O,e.delete=S,e.nextTick=si,e.options=Object.create(null),li._assetTypes.forEach(function(t){e.options[t+"s"]=Object.create(null)}),e.options._base=e,l(e.options.components,Fi),Ie(e),Fe(e),Be(e),Ue(e)}function ze(e){for(var t=e.data,n=e,r=e;r.child;)r=r.child._vnode,r.data&&(t=Je(r.data,t));for(;n=n.parent;)n.data&&(t=Je(t,n.data));return Ke(t)}function Je(e,t){return{staticClass:qe(e.staticClass,t.staticClass),class:e.class?[e.class,t.class]:t.class}}function Ke(e){var t=e.class,n=e.staticClass;return n||t?qe(n,We(t)):""}function qe(e,t){return e?t?e+" "+t:e:t||""}function We(e){var t="";if(!e)return t;if("string"==typeof e)return e;if(Array.isArray(e)){for(var n,r=0,i=e.length;r-1?no[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:no[e]=/HTMLUnknownElement/.test(t.toString())}function Ye(e){if("string"==typeof e){if(e=document.querySelector(e),!e)return document.createElement("div")}return e}function Qe(e,t){var n=document.createElement(e);return"select"!==e?n:(t.data&&t.data.attrs&&"multiple"in t.data.attrs&&n.setAttribute("multiple","multiple"),n)}function Xe(e,t){return document.createElementNS(Wi[e],t)}function et(e){return document.createTextNode(e)}function tt(e){return document.createComment(e)}function nt(e,t,n){e.insertBefore(t,n)}function rt(e,t){e.removeChild(t)}function it(e,t){e.appendChild(t)}function ot(e){return e.parentNode}function at(e){return e.nextSibling}function st(e){return e.tagName}function ct(e,t){e.textContent=t}function lt(e){return e.childNodes}function ut(e,t,n){e.setAttribute(t,n)}function ft(e,t){var n=e.data.ref;if(n){var i=e.context,o=e.child||e.elm,a=i.$refs;t?Array.isArray(a[n])?r(a[n],o):a[n]===o&&(a[n]=void 0):e.data.refInFor?Array.isArray(a[n])&&a[n].indexOf(o)<0?a[n].push(o):a[n]=[o]:a[n]=o}}function dt(e){return null==e}function pt(e){return null!=e}function vt(e,t){return e.key===t.key&&e.tag===t.tag&&e.isComment===t.isComment&&!e.data==!t.data}function ht(e,t,n){var r,i,o={};for(r=t;r<=n;++r)i=e[r].key,pt(i)&&(o[i]=r);return o}function mt(e){function t(e){return new Ei(x.tagName(e).toLowerCase(),{},[],void 0,e)}function n(e,t){function n(){0===--n.listeners&&r(e)}return n.listeners=t,n}function r(e){var t=x.parentNode(e);t&&x.removeChild(t,e)}function i(e,t,n){var r,i=e.data;if(e.isRootInsert=!n,pt(i)&&(pt(r=i.hook)&&pt(r=r.init)&&r(e),pt(r=e.child)))return l(e,t),e.elm;var o=e.children,s=e.tag;return pt(s)?(e.elm=e.ns?x.createElementNS(e.ns,s):x.createElement(s,e),u(e),a(e,o,t),pt(i)&&c(e,t)):e.isComment?e.elm=x.createComment(e.text):e.elm=x.createTextNode(e.text),e.elm}function a(e,t,n){if(Array.isArray(t))for(var r=0;rv?(l=dt(n[y+1])?null:n[y+1].elm,f(e,l,n,d,y,r)):d>y&&p(e,t,u,v)}function m(e,t,n,r){if(e!==t){if(t.isStatic&&e.isStatic&&t.key===e.key&&(t.isCloned||t.isOnce))return t.elm=e.elm,void(t.child=e.child);var i,o=t.data,a=pt(o);a&&pt(i=o.hook)&&pt(i=i.prepatch)&&i(e,t);var c=t.elm=e.elm,l=e.children,u=t.children;if(a&&s(t)){for(i=0;i<$.update.length;++i)$.update[i](e,t);pt(i=o.hook)&&pt(i=i.update)&&i(e,t)}dt(t.text)?pt(l)&&pt(u)?l!==u&&h(c,l,u,n,r):pt(u)?(pt(e.text)&&x.setTextContent(c,""),f(c,null,u,0,u.length-1,n)):pt(l)?p(c,l,0,l.length-1):pt(e.text)&&x.setTextContent(c,""):e.text!==t.text&&x.setTextContent(c,t.text),a&&pt(i=o.hook)&&pt(i=i.postpatch)&&i(e,t)}}function g(e,t,n){if(n&&e.parent)e.parent.data.pendingInsert=t;else for(var r=0;r-1?t.split(/\s+/).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=" "+e.getAttribute("class")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function Et(e,t){if(t&&t.trim())if(e.classList)t.indexOf(" ")>-1?t.split(/\s+/).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t);else{for(var n=" "+e.getAttribute("class")+" ",r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");e.setAttribute("class",n.trim())}}function Nt(e){So(function(){So(e)})}function Lt(e,t){(e._transitionClasses||(e._transitionClasses=[])).push(t),jt(e,t)}function Dt(e,t){e._transitionClasses&&r(e._transitionClasses,t),Et(e,t)}function Mt(e,t,n){var r=Pt(e,t),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===wo?ko:Oo,c=0,l=function(){e.removeEventListener(s,u),n()},u=function(t){t.target===e&&++c>=a&&l()};setTimeout(function(){c0&&(n=wo,u=a,f=o.length):t===xo?l>0&&(n=xo,u=l,f=c.length):(u=Math.max(a,l),n=u>0?a>l?wo:xo:null,f=n?n===wo?o.length:c.length:0);var d=n===wo&&To.test(r[Co+"Property"]);return{type:n,timeout:u,propCount:f,hasTransform:d}}function Rt(e,t){for(;e.length1,S=t._enterCb=Ht(function(){A&&Dt(t,$),S.cancelled?(A&&Dt(t,b),k&&k(t)):C&&C(t),t._enterCb=null});e.data.show||ie(e.data.hook||(e.data.hook={}),"insert",function(){var n=t.parentNode,r=n&&n._pending&&n._pending[e.key];r&&r.tag===e.tag&&r.elm._leaveCb&&r.elm._leaveCb(),x&&x(t,S)},"transition-insert"),w&&w(t),A&&(Lt(t,b),Lt(t,$),Nt(function(){Dt(t,b),S.cancelled||O||Mt(t,i,S)})),e.data.show&&x&&x(t,S),A||O||S()}}}function Bt(e,t){function n(){m.cancelled||(e.data.show||((r.parentNode._pending||(r.parentNode._pending={}))[e.key]=e),l&&l(r),v&&(Lt(r,s),Lt(r,c),Nt(function(){Dt(r,s),m.cancelled||h||Mt(r,a,m)})),u&&u(r,m),v||h||m())}var r=e.elm;r._enterCb&&(r._enterCb.cancelled=!0,r._enterCb());var i=Ut(e.data.transition);if(!i)return t();if(!r._leaveCb&&1===r.nodeType){var o=i.css,a=i.type,s=i.leaveClass,c=i.leaveActiveClass,l=i.beforeLeave,u=i.leave,f=i.afterLeave,d=i.leaveCancelled,p=i.delayLeave,v=o!==!1&&!ti,h=u&&(u._length||u.length)>1,m=r._leaveCb=Ht(function(){r.parentNode&&r.parentNode._pending&&(r.parentNode._pending[e.key]=null),v&&Dt(r,c),m.cancelled?(v&&Dt(r,s),d&&d(r)):(t(),f&&f(r)),r._leaveCb=null});p?p(n):n()}}function Ut(e){if(e){if("object"==typeof e){var t={};return e.css!==!1&&l(t,jo(e.name||"v")), 7 | l(t,e),t}return"string"==typeof e?jo(e):void 0}}function Ht(e){var t=!1;return function(){t||(t=!0,e())}}function Vt(e,t,n){var r=t.value,i=e.multiple;if(!i||Array.isArray(r)){for(var o,a,s=0,c=e.options.length;s-1,a.selected!==o&&(a.selected=o);else if(h(Jt(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));i||(e.selectedIndex=-1)}}function zt(e,t){for(var n=0,r=t.length;n',n.innerHTML.indexOf(t)>0}function on(e){return Vo=Vo||document.createElement("div"),Vo.innerHTML=e,Vo.textContent}function an(e,t){return t&&(e=e.replace(Da,"\n")),e.replace(Na,"<").replace(La,">").replace(Ma,"&").replace(Pa,'"')}function sn(e,t){function n(t){f+=t,e=e.substring(t)}function r(){var t=e.match(Yo);if(t){var r={tagName:t[1],attrs:[],start:f};n(t[0].length);for(var i,o;!(i=e.match(Qo))&&(o=e.match(Wo));)n(o[0].length),r.attrs.push(o);if(i)return r.unarySlash=i[1],n(i[0].length),r.end=f,r}}function i(e){var n=e.tagName,r=e.unarySlash;l&&("p"===s&&Qi(n)&&o("",s),Yi(n)&&s===n&&o("",n));for(var i=u(n)||"html"===n&&"head"===s||!!r,a=e.attrs.length,f=new Array(a),d=0;d=0&&c[o].tag.toLowerCase()!==a;o--);}else o=0;if(o>=0){for(var l=c.length-1;l>=o;l--)t.end&&t.end(c[l].tag,r,i);c.length=o,s=o&&c[o-1].tag}else"br"===n.toLowerCase()?t.start&&t.start(n,[],!0,r,i):"p"===n.toLowerCase()&&(t.start&&t.start(n,[],!1,r,i),t.end&&t.end(n,r,i))}for(var a,s,c=[],l=t.expectHTML,u=t.isUnaryTag||Zr,f=0;e;){if(a=e,s&&ja(s,t.sfc,c)){var d=s.toLowerCase(),p=Ea[d]||(Ea[d]=new RegExp("([\\s\\S]*?)(]*>)","i")),v=0,h=e.replace(p,function(e,n,r){return v=r.length,"script"!==d&&"style"!==d&&"noscript"!==d&&(n=n.replace(//g,"$1").replace(//g,"$1")),t.chars&&t.chars(n),""});f+=e.length-h.length,e=h,o("",d,f-v,f)}else{var m=e.indexOf("<");if(0===m){if(ta.test(e)){var g=e.indexOf("-->");if(g>=0){n(g+3);continue}}if(na.test(e)){var y=e.indexOf("]>");if(y>=0){n(y+2);continue}}var _=e.match(ea);if(_){n(_[0].length);continue}var b=e.match(Xo);if(b){var $=f;n(b[0].length),o(b[0],b[1],$,f);continue}var w=r();if(w){i(w);continue}}var x=void 0,C=void 0,k=void 0;if(m>0){for(C=e.slice(m);!(Xo.test(C)||Yo.test(C)||ta.test(C)||na.test(C)||(k=C.indexOf("<",1),k<0));)m+=k,C=e.slice(m);x=e.substring(0,m),n(m)}m<0&&(x=e,e=""),t.chars&&x&&t.chars(x)}if(e===a&&t.chars){t.chars(e);break}}o()}function cn(e){function t(){(a||(a=[])).push(e.slice(v,i).trim()),v=i+1}var n,r,i,o,a,s=!1,c=!1,l=!1,u=!1,f=0,d=0,p=0,v=0;for(i=0;ia&&o.push(JSON.stringify(e.slice(a,i)));var s=cn(r[1].trim());o.push("_s("+s+")"),a=i+r[0].length}return a=ia}function wn(e){return 34===e||39===e}function xn(e){var t=1;for(ca=sa;!$n();)if(e=bn(),wn(e))Cn(e);else if(91===e&&t++,93===e&&t--,0===t){la=sa;break}}function Cn(e){for(var t=e;!$n()&&(e=bn(),e!==t););}function kn(e,t){ua=t.warn||fn,fa=t.getTagNamespace||Zr,da=t.mustUseProp||Zr,pa=t.isPreTag||Zr,va=dn(t.modules,"preTransformNode"),ha=dn(t.modules,"transformNode"),ma=dn(t.modules,"postTransformNode"),ga=t.delimiters;var n,r,i=[],o=t.preserveWhitespace!==!1,a=!1,s=!1;return sn(e,{expectHTML:t.expectHTML,isUnaryTag:t.isUnaryTag,shouldDecodeNewlines:t.shouldDecodeNewlines,start:function(e,o,c){function l(e){}var u=r&&r.ns||fa(e);ei&&"svg"===u&&(o=Vn(o));var f={type:1,tag:e,attrsList:o,attrsMap:Bn(o),parent:r,children:[]};u&&(f.ns=u),Hn(f)&&!oi()&&(f.forbidden=!0);for(var d=0;d-1:_q("+t+","+o+")"),mn(e,"change","var $$a="+t+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$c){$$i<0&&("+t+"=$$a.concat($$v))}else{$$i>-1&&("+t+"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{"+t+"=$$c}",null,!0)}function Sr(e,t,n){var r=n&&n.number,i=gn(e,"value")||"null";i=r?"_n("+i+")":i,pn(e,"checked","_q("+t+","+i+")"),mn(e,"change",Er(t,i),null,!0)}function Tr(e,t,n){var r=e.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,c=o||ei&&"range"===r?"change":"input",l=!o&&"range"!==r,u="input"===e.tag||"textarea"===e.tag,f=u?"$event.target.value"+(s?".trim()":""):s?"(typeof $event === 'string' ? $event.trim() : $event)":"$event";f=a||"number"===r?"_n("+f+")":f;var d=Er(t,f);u&&l&&(d="if($event.target.composing)return;"+d),pn(e,"value",u?"_s("+t+")":"("+t+")"),mn(e,c,d,null,!0)}function jr(e,t,n){var r=n&&n.number,i='Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(r?"_n(val)":"val")+"})"+(null==e.attrsMap.multiple?"[0]":""),o=Er(t,i);mn(e,"change",o,null,!0)}function Er(e,t){var n=_n(e);return null===n.idx?e+"="+t:"var $$exp = "+n.exp+", $$idx = "+n.idx+";if (!Array.isArray($$exp)){"+e+"="+t+"}else{$$exp.splice($$idx, 1, "+t+")}"}function Nr(e,t){t.value&&pn(e,"textContent","_s("+t.value+")")}function Lr(e,t){t.value&&pn(e,"innerHTML","_s("+t.value+")")}function Dr(e,t){return t=t?l(l({},ls),t):ls,$r(e,t)}function Mr(e,t,n){var r=(t&&t.warn||ui,t&&t.delimiters?String(t.delimiters)+e:e);if(cs[r])return cs[r];var i={},o=Dr(e,t);i.render=Pr(o.render);var a=o.staticRenderFns.length;i.staticRenderFns=new Array(a);for(var s=0;s0,ni=Xr&&Xr.indexOf("edge/")>0,ri=Xr&&Xr.indexOf("android")>0,ii=Xr&&/iphone|ipad|ipod|ios/.test(Xr),oi=function(){return void 0===Ir&&(Ir=!Qr&&"undefined"!=typeof global&&"server"===global.process.env.VUE_ENV),Ir},ai=Qr&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,si=function(){function e(){r=!1;var e=n.slice(0);n.length=0;for(var t=0;t=0,r=n?/;(?![^(]*\))/g:";",i=n?/:(.+)/:":";return e.split(r).forEach(function(e){if(e){var n=e.split(i);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}),mo=/^--/,go=function(e,t,n){mo.test(t)?e.style.setProperty(t,n):e.style[_o(t)]=n},yo=["Webkit","Moz","ms"],_o=a(function(e){if(Bi=Bi||document.createElement("div"),e=Vr(e),"filter"!==e&&e in Bi.style)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=0;n\/=]+)/,Ko=/(?:=)/,qo=[/"([^"]*)"+/.source,/'([^']*)'+/.source,/([^\s"'=<>`]+)/.source],Wo=new RegExp("^\\s*"+Jo.source+"(?:\\s*("+Ko.source+")\\s*(?:"+qo.join("|")+"))?"),Zo="[a-zA-Z_][\\w\\-\\.]*",Go="((?:"+Zo+"\\:)?"+Zo+")",Yo=new RegExp("^<"+Go),Qo=/^\s*(\/?)>/,Xo=new RegExp("^<\\/"+Go+"[^>]*>"),ea=/^]+>/i,ta=/^