@kvass/widgets 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.husky/pre-commit +4 -0
- package/.prettierrc +6 -0
- package/.releaserc +3 -0
- package/README.md +1 -0
- package/dist/contact.js +24 -0
- package/index.html +18 -0
- package/package.json +27 -0
- package/src/contact/README.md +68 -0
- package/src/contact/api.js +71 -0
- package/src/contact/components/Checkbox.ce.vue +65 -0
- package/src/contact/components/Field.ce.vue +116 -0
- package/src/contact/components/Fieldset.ce.vue +53 -0
- package/src/contact/components/Form.ce.vue +319 -0
- package/src/contact/main.js +9 -0
- package/vite.config.js +24 -0
package/.prettierrc
ADDED
package/.releaserc
ADDED
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# widgets
|
package/dist/contact.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var Zr=Object.defineProperty,Qr=Object.defineProperties;var Gr=Object.getOwnPropertyDescriptors;var us=Object.getOwnPropertySymbols;var eo=Object.prototype.hasOwnProperty,to=Object.prototype.propertyIsEnumerable;var ds=(e,t,n)=>t in e?Zr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,on=(e,t)=>{for(var n in t||(t={}))eo.call(t,n)&&ds(e,n,t[n]);if(us)for(var n of us(t))to.call(t,n)&&ds(e,n,t[n]);return e},ln=(e,t)=>Qr(e,Gr(t));function Sn(e,t){const n=Object.create(null),s=e.split(",");for(let r=0;r<s.length;r++)n[s[r]]=!0;return t?r=>!!n[r.toLowerCase()]:r=>!!n[r]}const no="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",so=Sn(no);function Hs(e){return!!e||e===""}function $n(e){if(M(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],r=Y(s)?lo(s):$n(s);if(r)for(const o in r)t[o]=r[o]}return t}else{if(Y(e))return e;if(X(e))return e}}const ro=/;(?![^(]*\))/g,oo=/:(.+)/;function lo(e){const t={};return e.split(ro).forEach(n=>{if(n){const s=n.split(oo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Ot(e){let t="";if(Y(e))t=e;else if(M(e))for(let n=0;n<e.length;n++){const s=Ot(e[n]);s&&(t+=s+" ")}else if(X(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const _t=e=>Y(e)?e:e==null?"":M(e)||X(e)&&(e.toString===qs||!I(e.toString))?JSON.stringify(e,Ks,2):String(e),Ks=(e,t)=>t&&t.__v_isRef?Ks(e,t.value):rt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r])=>(n[`${s} =>`]=r,n),{})}:Ds(t)?{[`Set(${t.size})`]:[...t.values()]}:X(t)&&!M(t)&&!Ws(t)?String(t):t,B={},st=[],ve=()=>{},io=()=>!1,co=/^on[^a-z]/,Vt=e=>co.test(e),jn=e=>e.startsWith("onUpdate:"),G=Object.assign,Rn=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},ao=Object.prototype.hasOwnProperty,N=(e,t)=>ao.call(e,t),M=Array.isArray,rt=e=>qt(e)==="[object Map]",Ds=e=>qt(e)==="[object Set]",I=e=>typeof e=="function",Y=e=>typeof e=="string",Ln=e=>typeof e=="symbol",X=e=>e!==null&&typeof e=="object",Vs=e=>X(e)&&I(e.then)&&I(e.catch),qs=Object.prototype.toString,qt=e=>qs.call(e),fo=e=>qt(e).slice(8,-1),Ws=e=>qt(e)==="[object Object]",Un=e=>Y(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,St=Sn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Wt=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},uo=/-(\w)/g,ge=Wt(e=>e.replace(uo,(t,n)=>n?n.toUpperCase():"")),ho=/\B([A-Z])/g,Ae=Wt(e=>e.replace(ho,"-$1").toLowerCase()),zt=Wt(e=>e.charAt(0).toUpperCase()+e.slice(1)),cn=Wt(e=>e?`on${zt(e)}`:""),Ct=(e,t)=>!Object.is(e,t),an=(e,t)=>{for(let n=0;n<e.length;n++)e[n](t)},Rt=(e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},mn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let hs;const po=()=>hs||(hs=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});let Oe;class go{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&Oe&&(this.parent=Oe,this.index=(Oe.scopes||(Oe.scopes=[])).push(this)-1)}run(t){if(this.active)try{return Oe=this,t()}finally{Oe=this.parent}}on(){Oe=this}off(){Oe=this.parent}stop(t){if(this.active){let n,s;for(n=0,s=this.effects.length;n<s;n++)this.effects[n].stop();for(n=0,s=this.cleanups.length;n<s;n++)this.cleanups[n]();if(this.scopes)for(n=0,s=this.scopes.length;n<s;n++)this.scopes[n].stop(!0);if(this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.active=!1}}}function mo(e,t=Oe){t&&t.active&&t.effects.push(e)}const Bn=e=>{const t=new Set(e);return t.w=0,t.n=0,t},zs=e=>(e.w&Be)>0,Js=e=>(e.n&Be)>0,_o=({deps:e})=>{if(e.length)for(let t=0;t<e.length;t++)e[t].w|=Be},bo=e=>{const{deps:t}=e;if(t.length){let n=0;for(let s=0;s<t.length;s++){const r=t[s];zs(r)&&!Js(r)?r.delete(e):t[n++]=r,r.w&=~Be,r.n&=~Be}t.length=n}},_n=new WeakMap;let ht=0,Be=1;const bn=30;let we;const ze=Symbol(""),vn=Symbol("");class Hn{constructor(t,n=null,s){this.fn=t,this.scheduler=n,this.active=!0,this.deps=[],this.parent=void 0,mo(this,s)}run(){if(!this.active)return this.fn();let t=we,n=Re;for(;t;){if(t===this)return;t=t.parent}try{return this.parent=we,we=this,Re=!0,Be=1<<++ht,ht<=bn?_o(this):ps(this),this.fn()}finally{ht<=bn&&bo(this),Be=1<<--ht,we=this.parent,Re=n,this.parent=void 0}}stop(){this.active&&(ps(this),this.onStop&&this.onStop(),this.active=!1)}}function ps(e){const{deps:t}=e;if(t.length){for(let n=0;n<t.length;n++)t[n].delete(e);t.length=0}}let Re=!0;const Ys=[];function at(){Ys.push(Re),Re=!1}function ft(){const e=Ys.pop();Re=e===void 0?!0:e}function fe(e,t,n){if(Re&&we){let s=_n.get(e);s||_n.set(e,s=new Map);let r=s.get(n);r||s.set(n,r=Bn()),Xs(r)}}function Xs(e,t){let n=!1;ht<=bn?Js(e)||(e.n|=Be,n=!zs(e)):n=!e.has(we),n&&(e.add(we),we.deps.push(e))}function Me(e,t,n,s,r,o){const l=_n.get(e);if(!l)return;let c=[];if(t==="clear")c=[...l.values()];else if(n==="length"&&M(e))l.forEach((f,u)=>{(u==="length"||u>=s)&&c.push(f)});else switch(n!==void 0&&c.push(l.get(n)),t){case"add":M(e)?Un(n)&&c.push(l.get("length")):(c.push(l.get(ze)),rt(e)&&c.push(l.get(vn)));break;case"delete":M(e)||(c.push(l.get(ze)),rt(e)&&c.push(l.get(vn)));break;case"set":rt(e)&&c.push(l.get(ze));break}if(c.length===1)c[0]&&yn(c[0]);else{const f=[];for(const u of c)u&&f.push(...u);yn(Bn(f))}}function yn(e,t){for(const n of M(e)?e:[...e])(n!==we||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}const vo=Sn("__proto__,__v_isRef,__isVue"),Zs=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(Ln)),yo=Kn(),xo=Kn(!1,!0),Co=Kn(!0),gs=ko();function ko(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=j(this);for(let o=0,l=this.length;o<l;o++)fe(s,"get",o+"");const r=s[t](...n);return r===-1||r===!1?s[t](...n.map(j)):r}}),["push","pop","shift","unshift","splice"].forEach(t=>{e[t]=function(...n){at();const s=j(this)[t].apply(this,n);return ft(),s}}),e}function Kn(e=!1,t=!1){return function(s,r,o){if(r==="__v_isReactive")return!e;if(r==="__v_isReadonly")return e;if(r==="__v_isShallow")return t;if(r==="__v_raw"&&o===(e?t?Uo:nr:t?tr:er).get(s))return s;const l=M(s);if(!e&&l&&N(gs,r))return Reflect.get(gs,r,o);const c=Reflect.get(s,r,o);return(Ln(r)?Zs.has(r):vo(r))||(e||fe(s,"get",r),t)?c:Q(c)?!l||!Un(r)?c.value:c:X(c)?e?sr(c):Yt(c):c}}const wo=Qs(),Eo=Qs(!0);function Qs(e=!1){return function(n,s,r,o){let l=n[s];if(kt(l)&&Q(l)&&!Q(r))return!1;if(!e&&!kt(r)&&(rr(r)||(r=j(r),l=j(l)),!M(n)&&Q(l)&&!Q(r)))return l.value=r,!0;const c=M(n)&&Un(s)?Number(s)<n.length:N(n,s),f=Reflect.set(n,s,r,o);return n===j(o)&&(c?Ct(r,l)&&Me(n,"set",s,r):Me(n,"add",s,r)),f}}function To(e,t){const n=N(e,t);e[t];const s=Reflect.deleteProperty(e,t);return s&&n&&Me(e,"delete",t,void 0),s}function Oo(e,t){const n=Reflect.has(e,t);return(!Ln(t)||!Zs.has(t))&&fe(e,"has",t),n}function Po(e){return fe(e,"iterate",M(e)?"length":ze),Reflect.ownKeys(e)}const Gs={get:yo,set:wo,deleteProperty:To,has:Oo,ownKeys:Po},Ao={get:Co,set(e,t){return!0},deleteProperty(e,t){return!0}},Mo=G({},Gs,{get:xo,set:Eo}),Dn=e=>e,Jt=e=>Reflect.getPrototypeOf(e);function At(e,t,n=!1,s=!1){e=e.__v_raw;const r=j(e),o=j(t);t!==o&&!n&&fe(r,"get",t),!n&&fe(r,"get",o);const{has:l}=Jt(r),c=s?Dn:n?Wn:wt;if(l.call(r,t))return c(e.get(t));if(l.call(r,o))return c(e.get(o));e!==r&&e.get(t)}function Mt(e,t=!1){const n=this.__v_raw,s=j(n),r=j(e);return e!==r&&!t&&fe(s,"has",e),!t&&fe(s,"has",r),e===r?n.has(e):n.has(e)||n.has(r)}function It(e,t=!1){return e=e.__v_raw,!t&&fe(j(e),"iterate",ze),Reflect.get(e,"size",e)}function ms(e){e=j(e);const t=j(this);return Jt(t).has.call(t,e)||(t.add(e),Me(t,"add",e,e)),this}function _s(e,t){t=j(t);const n=j(this),{has:s,get:r}=Jt(n);let o=s.call(n,e);o||(e=j(e),o=s.call(n,e));const l=r.call(n,e);return n.set(e,t),o?Ct(t,l)&&Me(n,"set",e,t):Me(n,"add",e,t),this}function bs(e){const t=j(this),{has:n,get:s}=Jt(t);let r=n.call(t,e);r||(e=j(e),r=n.call(t,e)),s&&s.call(t,e);const o=t.delete(e);return r&&Me(t,"delete",e,void 0),o}function vs(){const e=j(this),t=e.size!==0,n=e.clear();return t&&Me(e,"clear",void 0,void 0),n}function Ft(e,t){return function(s,r){const o=this,l=o.__v_raw,c=j(l),f=t?Dn:e?Wn:wt;return!e&&fe(c,"iterate",ze),l.forEach((u,g)=>s.call(r,f(u),f(g),o))}}function Nt(e,t,n){return function(...s){const r=this.__v_raw,o=j(r),l=rt(o),c=e==="entries"||e===Symbol.iterator&&l,f=e==="keys"&&l,u=r[e](...s),g=n?Dn:t?Wn:wt;return!t&&fe(o,"iterate",f?vn:ze),{next(){const{value:x,done:v}=u.next();return v?{value:x,done:v}:{value:c?[g(x[0]),g(x[1])]:g(x),done:v}},[Symbol.iterator](){return this}}}}function Ne(e){return function(...t){return e==="delete"?!1:this}}function Io(){const e={get(o){return At(this,o)},get size(){return It(this)},has:Mt,add:ms,set:_s,delete:bs,clear:vs,forEach:Ft(!1,!1)},t={get(o){return At(this,o,!1,!0)},get size(){return It(this)},has:Mt,add:ms,set:_s,delete:bs,clear:vs,forEach:Ft(!1,!0)},n={get(o){return At(this,o,!0)},get size(){return It(this,!0)},has(o){return Mt.call(this,o,!0)},add:Ne("add"),set:Ne("set"),delete:Ne("delete"),clear:Ne("clear"),forEach:Ft(!0,!1)},s={get(o){return At(this,o,!0,!0)},get size(){return It(this,!0)},has(o){return Mt.call(this,o,!0)},add:Ne("add"),set:Ne("set"),delete:Ne("delete"),clear:Ne("clear"),forEach:Ft(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=Nt(o,!1,!1),n[o]=Nt(o,!0,!1),t[o]=Nt(o,!1,!0),s[o]=Nt(o,!0,!0)}),[e,n,t,s]}const[Fo,No,So,$o]=Io();function Vn(e,t){const n=t?e?$o:So:e?No:Fo;return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(N(n,r)&&r in s?n:s,r,o)}const jo={get:Vn(!1,!1)},Ro={get:Vn(!1,!0)},Lo={get:Vn(!0,!1)},er=new WeakMap,tr=new WeakMap,nr=new WeakMap,Uo=new WeakMap;function Bo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ho(e){return e.__v_skip||!Object.isExtensible(e)?0:Bo(fo(e))}function Yt(e){return kt(e)?e:qn(e,!1,Gs,jo,er)}function Ko(e){return qn(e,!1,Mo,Ro,tr)}function sr(e){return qn(e,!0,Ao,Lo,nr)}function qn(e,t,n,s,r){if(!X(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=r.get(e);if(o)return o;const l=Ho(e);if(l===0)return e;const c=new Proxy(e,l===2?s:n);return r.set(e,c),c}function ot(e){return kt(e)?ot(e.__v_raw):!!(e&&e.__v_isReactive)}function kt(e){return!!(e&&e.__v_isReadonly)}function rr(e){return!!(e&&e.__v_isShallow)}function or(e){return ot(e)||kt(e)}function j(e){const t=e&&e.__v_raw;return t?j(t):e}function lr(e){return Rt(e,"__v_skip",!0),e}const wt=e=>X(e)?Yt(e):e,Wn=e=>X(e)?sr(e):e;function ir(e){Re&&we&&(e=j(e),Xs(e.dep||(e.dep=Bn())))}function cr(e,t){e=j(e),e.dep&&yn(e.dep)}function Q(e){return!!(e&&e.__v_isRef===!0)}function pt(e){return Do(e,!1)}function Do(e,t){return Q(e)?e:new Vo(e,t)}class Vo{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:j(t),this._value=n?t:wt(t)}get value(){return ir(this),this._value}set value(t){t=this.__v_isShallow?t:j(t),Ct(t,this._rawValue)&&(this._rawValue=t,this._value=this.__v_isShallow?t:wt(t),cr(this))}}function de(e){return Q(e)?e.value:e}const qo={get:(e,t,n)=>de(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return Q(r)&&!Q(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function ar(e){return ot(e)?e:new Proxy(e,qo)}class Wo{constructor(t,n,s,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new Hn(t,()=>{this._dirty||(this._dirty=!0,cr(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=j(this);return ir(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function zo(e,t,n=!1){let s,r;const o=I(e);return o?(s=e,r=ve):(s=e.get,r=e.set),new Wo(s,r,o||!r,n)}Promise.resolve();function Le(e,t,n,s){let r;try{r=s?e(...s):e()}catch(o){Xt(o,t,n)}return r}function pe(e,t,n,s){if(I(e)){const o=Le(e,t,n,s);return o&&Vs(o)&&o.catch(l=>{Xt(l,t,n)}),o}const r=[];for(let o=0;o<e.length;o++)r.push(pe(e[o],t,n,s));return r}function Xt(e,t,n,s=!0){const r=t?t.vnode:null;if(t){let o=t.parent;const l=t.proxy,c=n;for(;o;){const u=o.ec;if(u){for(let g=0;g<u.length;g++)if(u[g](e,l,c)===!1)return}o=o.parent}const f=t.appContext.config.errorHandler;if(f){Le(f,null,10,[e,l,c]);return}}Jo(e,n,r,s)}function Jo(e,t,n,s=!0){console.error(e)}let Lt=!1,xn=!1;const ae=[];let Pe=0;const bt=[];let gt=null,et=0;const vt=[];let Se=null,tt=0;const fr=Promise.resolve();let zn=null,Cn=null;function ur(e){const t=zn||fr;return e?t.then(this?e.bind(this):e):t}function Yo(e){let t=Pe+1,n=ae.length;for(;t<n;){const s=t+n>>>1;Et(ae[s])<e?t=s+1:n=s}return t}function dr(e){(!ae.length||!ae.includes(e,Lt&&e.allowRecurse?Pe+1:Pe))&&e!==Cn&&(e.id==null?ae.push(e):ae.splice(Yo(e.id),0,e),hr())}function hr(){!Lt&&!xn&&(xn=!0,zn=fr.then(mr))}function Xo(e){const t=ae.indexOf(e);t>Pe&&ae.splice(t,1)}function pr(e,t,n,s){M(e)?n.push(...e):(!t||!t.includes(e,e.allowRecurse?s+1:s))&&n.push(e),hr()}function Zo(e){pr(e,gt,bt,et)}function Qo(e){pr(e,Se,vt,tt)}function Jn(e,t=null){if(bt.length){for(Cn=t,gt=[...new Set(bt)],bt.length=0,et=0;et<gt.length;et++)gt[et]();gt=null,et=0,Cn=null,Jn(e,t)}}function gr(e){if(vt.length){const t=[...new Set(vt)];if(vt.length=0,Se){Se.push(...t);return}for(Se=t,Se.sort((n,s)=>Et(n)-Et(s)),tt=0;tt<Se.length;tt++)Se[tt]();Se=null,tt=0}}const Et=e=>e.id==null?1/0:e.id;function mr(e){xn=!1,Lt=!0,Jn(e),ae.sort((n,s)=>Et(n)-Et(s));const t=ve;try{for(Pe=0;Pe<ae.length;Pe++){const n=ae[Pe];n&&n.active!==!1&&Le(n,null,14)}}finally{Pe=0,ae.length=0,gr(),Lt=!1,zn=null,(ae.length||bt.length||vt.length)&&mr(e)}}function Go(e,t,...n){const s=e.vnode.props||B;let r=n;const o=t.startsWith("update:"),l=o&&t.slice(7);if(l&&l in s){const g=`${l==="modelValue"?"model":l}Modifiers`,{number:x,trim:v}=s[g]||B;v?r=n.map(P=>P.trim()):x&&(r=n.map(mn))}let c,f=s[c=cn(t)]||s[c=cn(ge(t))];!f&&o&&(f=s[c=cn(Ae(t))]),f&&pe(f,e,6,r);const u=s[c+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,pe(u,e,6,r)}}function _r(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let l={},c=!1;if(!I(e)){const f=u=>{const g=_r(u,t,!0);g&&(c=!0,G(l,g))};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}return!o&&!c?(s.set(e,null),null):(M(o)?o.forEach(f=>l[f]=null):G(l,o),s.set(e,l),l)}function Yn(e,t){return!e||!Vt(t)?!1:(t=t.slice(2).replace(/Once$/,""),N(e,t[0].toLowerCase()+t.slice(1))||N(e,Ae(t))||N(e,t))}let he=null,br=null;function Ut(e){const t=he;return he=e,br=e&&e.type.__scopeId||null,t}function Xn(e,t=he,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Ms(-1);const o=Ut(t),l=e(...r);return Ut(o),s._d&&Ms(1),l};return s._n=!0,s._c=!0,s._d=!0,s}function fn(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:o,propsOptions:[l],slots:c,attrs:f,emit:u,render:g,renderCache:x,data:v,setupState:P,ctx:S,inheritAttrs:$}=e;let T,O;const R=Ut(e);try{if(n.shapeFlag&4){const W=r||s;T=ke(g.call(W,W,x,o,P,v,S)),O=f}else{const W=t;T=ke(W.length>1?W(o,{attrs:f,slots:c,emit:u}):W(o,null)),O=t.props?f:el(f)}}catch(W){yt.length=0,Xt(W,e,1),T=ee(ye)}let q=T;if(O&&$!==!1){const W=Object.keys(O),{shapeFlag:oe}=q;W.length&&oe&7&&(l&&W.some(jn)&&(O=tl(O,l)),q=it(q,O))}return n.dirs&&(q.dirs=q.dirs?q.dirs.concat(n.dirs):n.dirs),n.transition&&(q.transition=n.transition),T=q,Ut(R),T}const el=e=>{let t;for(const n in e)(n==="class"||n==="style"||Vt(n))&&((t||(t={}))[n]=e[n]);return t},tl=(e,t)=>{const n={};for(const s in e)(!jn(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function nl(e,t,n){const{props:s,children:r,component:o}=e,{props:l,children:c,patchFlag:f}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&f>=0){if(f&1024)return!0;if(f&16)return s?ys(s,l,u):!!l;if(f&8){const g=t.dynamicProps;for(let x=0;x<g.length;x++){const v=g[x];if(l[v]!==s[v]&&!Yn(u,v))return!0}}}else return(r||c)&&(!c||!c.$stable)?!0:s===l?!1:s?l?ys(s,l,u):!0:!!l;return!1}function ys(e,t,n){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let r=0;r<s.length;r++){const o=s[r];if(t[o]!==e[o]&&!Yn(n,o))return!0}return!1}function sl({vnode:e,parent:t},n){for(;t&&t.subTree===e;)(e=t.vnode).el=n,t=t.parent}const rl=e=>e.__isSuspense;function ol(e,t){t&&t.pendingBranch?M(e)?t.effects.push(...e):t.effects.push(e):Qo(e)}function ll(e,t){if(J){let n=J.provides;const s=J.parent&&J.parent.provides;s===n&&(n=J.provides=Object.create(s)),n[e]=t}}function un(e,t,n=!1){const s=J||he;if(s){const r=s.parent==null?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides;if(r&&e in r)return r[e];if(arguments.length>1)return n&&I(t)?t.call(s.proxy):t}}const xs={};function dn(e,t,n){return vr(e,t,n)}function vr(e,t,{immediate:n,deep:s,flush:r,onTrack:o,onTrigger:l}=B){const c=J;let f,u=!1,g=!1;if(Q(e)?(f=()=>e.value,u=rr(e)):ot(e)?(f=()=>e,s=!0):M(e)?(g=!0,u=e.some(ot),f=()=>e.map(O=>{if(Q(O))return O.value;if(ot(O))return nt(O);if(I(O))return Le(O,c,2)})):I(e)?t?f=()=>Le(e,c,2):f=()=>{if(!(c&&c.isUnmounted))return x&&x(),pe(e,c,3,[v])}:f=ve,t&&s){const O=f;f=()=>nt(O())}let x,v=O=>{x=T.onStop=()=>{Le(O,c,4)}};if(Tt)return v=ve,t?n&&pe(t,c,3,[f(),g?[]:void 0,v]):f(),ve;let P=g?[]:xs;const S=()=>{if(!!T.active)if(t){const O=T.run();(s||u||(g?O.some((R,q)=>Ct(R,P[q])):Ct(O,P)))&&(x&&x(),pe(t,c,3,[O,P===xs?void 0:P,v]),P=O)}else T.run()};S.allowRecurse=!!t;let $;r==="sync"?$=S:r==="post"?$=()=>se(S,c&&c.suspense):$=()=>{!c||c.isMounted?Zo(S):S()};const T=new Hn(f,$);return t?n?S():P=T.run():r==="post"?se(T.run.bind(T),c&&c.suspense):T.run(),()=>{T.stop(),c&&c.scope&&Rn(c.scope.effects,T)}}function il(e,t,n){const s=this.proxy,r=Y(e)?e.includes(".")?yr(s,e):()=>s[e]:e.bind(s,s);let o;I(t)?o=t:(o=t.handler,n=t);const l=J;ct(this);const c=vr(r,o.bind(s),n);return l?ct(l):Ye(),c}function yr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r<n.length&&s;r++)s=s[n[r]];return s}}function nt(e,t){if(!X(e)||e.__v_skip||(t=t||new Set,t.has(e)))return e;if(t.add(e),Q(e))nt(e.value,t);else if(M(e))for(let n=0;n<e.length;n++)nt(e[n],t);else if(Ds(e)||rt(e))e.forEach(n=>{nt(n,t)});else if(Ws(e))for(const n in e)nt(e[n],t);return e}function cl(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Zn(()=>{e.isMounted=!0}),wr(()=>{e.isUnmounting=!0}),e}const ue=[Function,Array],al={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ue,onEnter:ue,onAfterEnter:ue,onEnterCancelled:ue,onBeforeLeave:ue,onLeave:ue,onAfterLeave:ue,onLeaveCancelled:ue,onBeforeAppear:ue,onAppear:ue,onAfterAppear:ue,onAppearCancelled:ue},setup(e,{slots:t}){const n=Kr(),s=cl();let r;return()=>{const o=t.default&&Cr(t.default(),!0);if(!o||!o.length)return;const l=j(e),{mode:c}=l,f=o[0];if(s.isLeaving)return hn(f);const u=Cs(f);if(!u)return hn(f);const g=kn(u,l,s,n);wn(u,g);const x=n.subTree,v=x&&Cs(x);let P=!1;const{getTransitionKey:S}=u.type;if(S){const $=S();r===void 0?r=$:$!==r&&(r=$,P=!0)}if(v&&v.type!==ye&&(!qe(u,v)||P)){const $=kn(v,l,s,n);if(wn(v,$),c==="out-in")return s.isLeaving=!0,$.afterLeave=()=>{s.isLeaving=!1,n.update()},hn(f);c==="in-out"&&u.type!==ye&&($.delayLeave=(T,O,R)=>{const q=xr(s,v);q[String(v.key)]=v,T._leaveCb=()=>{O(),T._leaveCb=void 0,delete g.delayedLeave},g.delayedLeave=R})}return f}}},fl=al;function xr(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function kn(e,t,n,s){const{appear:r,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:u,onEnterCancelled:g,onBeforeLeave:x,onLeave:v,onAfterLeave:P,onLeaveCancelled:S,onBeforeAppear:$,onAppear:T,onAfterAppear:O,onAppearCancelled:R}=t,q=String(e.key),W=xr(n,e),oe=(L,Z)=>{L&&pe(L,s,9,Z)},He={mode:o,persisted:l,beforeEnter(L){let Z=c;if(!n.isMounted)if(r)Z=$||c;else return;L._leaveCb&&L._leaveCb(!0);const z=W[q];z&&qe(e,z)&&z.el._leaveCb&&z.el._leaveCb(),oe(Z,[L])},enter(L){let Z=f,z=u,me=g;if(!n.isMounted)if(r)Z=T||f,z=O||u,me=R||g;else return;let le=!1;const _e=L._enterCb=Xe=>{le||(le=!0,Xe?oe(me,[L]):oe(z,[L]),He.delayedLeave&&He.delayedLeave(),L._enterCb=void 0)};Z?(Z(L,_e),Z.length<=1&&_e()):_e()},leave(L,Z){const z=String(e.key);if(L._enterCb&&L._enterCb(!0),n.isUnmounting)return Z();oe(x,[L]);let me=!1;const le=L._leaveCb=_e=>{me||(me=!0,Z(),_e?oe(S,[L]):oe(P,[L]),L._leaveCb=void 0,W[z]===e&&delete W[z])};W[z]=e,v?(v(L,le),v.length<=1&&le()):le()},clone(L){return kn(L,t,n,s)}};return He}function hn(e){if(Zt(e))return e=it(e),e.children=null,e}function Cs(e){return Zt(e)?e.children?e.children[0]:void 0:e}function wn(e,t){e.shapeFlag&6&&e.component?wn(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Cr(e,t=!1){let n=[],s=0;for(let r=0;r<e.length;r++){const o=e[r];o.type===ce?(o.patchFlag&128&&s++,n=n.concat(Cr(o.children,t))):(t||o.type!==ye)&&n.push(o)}if(s>1)for(let r=0;r<n.length;r++)n[r].patchFlag=-2;return n}function ul(e){return I(e)?{setup:e,name:e.name}:e}const En=e=>!!e.type.__asyncLoader,Zt=e=>e.type.__isKeepAlive;function dl(e,t){kr(e,"a",t)}function hl(e,t){kr(e,"da",t)}function kr(e,t,n=J){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Qt(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Zt(r.parent.vnode)&&pl(s,t,n,r),r=r.parent}}function pl(e,t,n,s){const r=Qt(t,e,s,!0);Er(()=>{Rn(s[t],r)},n)}function Qt(e,t,n=J,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...l)=>{if(n.isUnmounted)return;at(),ct(n);const c=pe(t,n,e,l);return Ye(),ft(),c});return s?r.unshift(o):r.push(o),o}}const Ie=e=>(t,n=J)=>(!Tt||e==="sp")&&Qt(e,t,n),gl=Ie("bm"),Zn=Ie("m"),ml=Ie("bu"),_l=Ie("u"),wr=Ie("bum"),Er=Ie("um"),bl=Ie("sp"),vl=Ie("rtg"),yl=Ie("rtc");function xl(e,t=J){Qt("ec",e,t)}let Tn=!0;function Cl(e){const t=Or(e),n=e.proxy,s=e.ctx;Tn=!1,t.beforeCreate&&ks(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:l,watch:c,provide:f,inject:u,created:g,beforeMount:x,mounted:v,beforeUpdate:P,updated:S,activated:$,deactivated:T,beforeDestroy:O,beforeUnmount:R,destroyed:q,unmounted:W,render:oe,renderTracked:He,renderTriggered:L,errorCaptured:Z,serverPrefetch:z,expose:me,inheritAttrs:le,components:_e,directives:Xe,filters:os}=t;if(u&&kl(u,s,null,e.appContext.config.unwrapInjectedRef),l)for(const V in l){const H=l[V];I(H)&&(s[V]=H.bind(n))}if(r){const V=r.call(n,n);X(V)&&(e.data=Yt(V))}if(Tn=!0,o)for(const V in o){const H=o[V],Ee=I(H)?H.bind(n,n):I(H.get)?H.get.bind(n,n):ve,nn=!I(H)&&I(H.set)?H.set.bind(n):ve,ut=ss({get:Ee,set:nn});Object.defineProperty(s,V,{enumerable:!0,configurable:!0,get:()=>ut.value,set:Ze=>ut.value=Ze})}if(c)for(const V in c)Tr(c[V],s,n,V);if(f){const V=I(f)?f.call(n):f;Reflect.ownKeys(V).forEach(H=>{ll(H,V[H])})}g&&ks(g,e,"c");function ne(V,H){M(H)?H.forEach(Ee=>V(Ee.bind(n))):H&&V(H.bind(n))}if(ne(gl,x),ne(Zn,v),ne(ml,P),ne(_l,S),ne(dl,$),ne(hl,T),ne(xl,Z),ne(yl,He),ne(vl,L),ne(wr,R),ne(Er,W),ne(bl,z),M(me))if(me.length){const V=e.exposed||(e.exposed={});me.forEach(H=>{Object.defineProperty(V,H,{get:()=>n[H],set:Ee=>n[H]=Ee})})}else e.exposed||(e.exposed={});oe&&e.render===ve&&(e.render=oe),le!=null&&(e.inheritAttrs=le),_e&&(e.components=_e),Xe&&(e.directives=Xe)}function kl(e,t,n=ve,s=!1){M(e)&&(e=On(e));for(const r in e){const o=e[r];let l;X(o)?"default"in o?l=un(o.from||r,o.default,!0):l=un(o.from||r):l=un(o),Q(l)&&s?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>l.value,set:c=>l.value=c}):t[r]=l}}function ks(e,t,n){pe(M(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Tr(e,t,n,s){const r=s.includes(".")?yr(n,s):()=>n[s];if(Y(e)){const o=t[e];I(o)&&dn(r,o)}else if(I(e))dn(r,e.bind(n));else if(X(e))if(M(e))e.forEach(o=>Tr(o,t,n,s));else{const o=I(e.handler)?e.handler.bind(n):t[e.handler];I(o)&&dn(r,o,e)}}function Or(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:l}}=e.appContext,c=o.get(t);let f;return c?f=c:!r.length&&!n&&!s?f=t:(f={},r.length&&r.forEach(u=>Bt(f,u,l,!0)),Bt(f,t,l)),o.set(t,f),f}function Bt(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&Bt(e,o,n,!0),r&&r.forEach(l=>Bt(e,l,n,!0));for(const l in t)if(!(s&&l==="expose")){const c=wl[l]||n&&n[l];e[l]=c?c(e[l],t[l]):t[l]}return e}const wl={data:ws,props:Ve,emits:Ve,methods:Ve,computed:Ve,beforeCreate:te,created:te,beforeMount:te,mounted:te,beforeUpdate:te,updated:te,beforeDestroy:te,beforeUnmount:te,destroyed:te,unmounted:te,activated:te,deactivated:te,errorCaptured:te,serverPrefetch:te,components:Ve,directives:Ve,watch:Tl,provide:ws,inject:El};function ws(e,t){return t?e?function(){return G(I(e)?e.call(this,this):e,I(t)?t.call(this,this):t)}:t:e}function El(e,t){return Ve(On(e),On(t))}function On(e){if(M(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function te(e,t){return e?[...new Set([].concat(e,t))]:t}function Ve(e,t){return e?G(G(Object.create(null),e),t):t}function Tl(e,t){if(!e)return t;if(!t)return e;const n=G(Object.create(null),e);for(const s in t)n[s]=te(e[s],t[s]);return n}function Ol(e,t,n,s=!1){const r={},o={};Rt(o,Gt,1),e.propsDefaults=Object.create(null),Pr(e,t,r,o);for(const l in e.propsOptions[0])l in r||(r[l]=void 0);n?e.props=s?r:Ko(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function Pl(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:l}}=e,c=j(r),[f]=e.propsOptions;let u=!1;if((s||l>0)&&!(l&16)){if(l&8){const g=e.vnode.dynamicProps;for(let x=0;x<g.length;x++){let v=g[x];const P=t[v];if(f)if(N(o,v))P!==o[v]&&(o[v]=P,u=!0);else{const S=ge(v);r[S]=Pn(f,c,S,P,e,!1)}else P!==o[v]&&(o[v]=P,u=!0)}}}else{Pr(e,t,r,o)&&(u=!0);let g;for(const x in c)(!t||!N(t,x)&&((g=Ae(x))===x||!N(t,g)))&&(f?n&&(n[x]!==void 0||n[g]!==void 0)&&(r[x]=Pn(f,c,x,void 0,e,!0)):delete r[x]);if(o!==c)for(const x in o)(!t||!N(t,x)&&!0)&&(delete o[x],u=!0)}u&&Me(e,"set","$attrs")}function Pr(e,t,n,s){const[r,o]=e.propsOptions;let l=!1,c;if(t)for(let f in t){if(St(f))continue;const u=t[f];let g;r&&N(r,g=ge(f))?!o||!o.includes(g)?n[g]=u:(c||(c={}))[g]=u:Yn(e.emitsOptions,f)||(!(f in s)||u!==s[f])&&(s[f]=u,l=!0)}if(o){const f=j(n),u=c||B;for(let g=0;g<o.length;g++){const x=o[g];n[x]=Pn(r,f,x,u[x],e,!N(u,x))}}return l}function Pn(e,t,n,s,r,o){const l=e[n];if(l!=null){const c=N(l,"default");if(c&&s===void 0){const f=l.default;if(l.type!==Function&&I(f)){const{propsDefaults:u}=r;n in u?s=u[n]:(ct(r),s=u[n]=f.call(null,t),Ye())}else s=f}l[0]&&(o&&!c?s=!1:l[1]&&(s===""||s===Ae(n))&&(s=!0))}return s}function Ar(e,t,n=!1){const s=t.propsCache,r=s.get(e);if(r)return r;const o=e.props,l={},c=[];let f=!1;if(!I(e)){const g=x=>{f=!0;const[v,P]=Ar(x,t,!0);G(l,v),P&&c.push(...P)};!n&&t.mixins.length&&t.mixins.forEach(g),e.extends&&g(e.extends),e.mixins&&e.mixins.forEach(g)}if(!o&&!f)return s.set(e,st),st;if(M(o))for(let g=0;g<o.length;g++){const x=ge(o[g]);Es(x)&&(l[x]=B)}else if(o)for(const g in o){const x=ge(g);if(Es(x)){const v=o[g],P=l[x]=M(v)||I(v)?{type:v}:v;if(P){const S=Ps(Boolean,P.type),$=Ps(String,P.type);P[0]=S>-1,P[1]=$<0||S<$,(S>-1||N(P,"default"))&&c.push(x)}}}const u=[l,c];return s.set(e,u),u}function Es(e){return e[0]!=="$"}function Ts(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function Os(e,t){return Ts(e)===Ts(t)}function Ps(e,t){return M(t)?t.findIndex(n=>Os(n,e)):I(t)&&Os(t,e)?0:-1}const Mr=e=>e[0]==="_"||e==="$stable",Qn=e=>M(e)?e.map(ke):[ke(e)],Al=(e,t,n)=>{const s=Xn((...r)=>Qn(t(...r)),n);return s._c=!1,s},Ir=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Mr(r))continue;const o=e[r];if(I(o))t[r]=Al(r,o,s);else if(o!=null){const l=Qn(o);t[r]=()=>l}}},Fr=(e,t)=>{const n=Qn(t);e.slots.default=()=>n},Ml=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=j(t),Rt(t,"_",n)):Ir(t,e.slots={})}else e.slots={},t&&Fr(e,t);Rt(e.slots,Gt,1)},Il=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,l=B;if(s.shapeFlag&32){const c=t._;c?n&&c===1?o=!1:(G(r,t),!n&&c===1&&delete r._):(o=!t.$stable,Ir(t,r)),l=t}else t&&(Fr(e,t),l={default:1});if(o)for(const c in r)!Mr(c)&&!(c in l)&&delete r[c]};function Ke(e,t,n,s){const r=e.dirs,o=t&&t.dirs;for(let l=0;l<r.length;l++){const c=r[l];o&&(c.oldValue=o[l].value);let f=c.dir[s];f&&(at(),pe(f,n,8,[e.el,c,e,t]),ft())}}function Nr(){return{app:null,config:{isNativeTag:io,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Fl=0;function Nl(e,t){return function(s,r=null){r!=null&&!X(r)&&(r=null);const o=Nr(),l=new Set;let c=!1;const f=o.app={_uid:Fl++,_component:s,_props:r,_container:null,_context:o,_instance:null,version:ni,get config(){return o.config},set config(u){},use(u,...g){return l.has(u)||(u&&I(u.install)?(l.add(u),u.install(f,...g)):I(u)&&(l.add(u),u(f,...g))),f},mixin(u){return o.mixins.includes(u)||o.mixins.push(u),f},component(u,g){return g?(o.components[u]=g,f):o.components[u]},directive(u,g){return g?(o.directives[u]=g,f):o.directives[u]},mount(u,g,x){if(!c){const v=ee(s,r);return v.appContext=o,g&&t?t(v,u):e(v,u,x),c=!0,f._container=u,u.__vue_app__=f,ns(v.component)||v.component.proxy}},unmount(){c&&(e(null,f._container),delete f._container.__vue_app__)},provide(u,g){return o.provides[u]=g,f}};return f}}function An(e,t,n,s,r=!1){if(M(e)){e.forEach((v,P)=>An(v,t&&(M(t)?t[P]:t),n,s,r));return}if(En(s)&&!r)return;const o=s.shapeFlag&4?ns(s.component)||s.component.proxy:s.el,l=r?null:o,{i:c,r:f}=e,u=t&&t.r,g=c.refs===B?c.refs={}:c.refs,x=c.setupState;if(u!=null&&u!==f&&(Y(u)?(g[u]=null,N(x,u)&&(x[u]=null)):Q(u)&&(u.value=null)),I(f))Le(f,c,12,[l,g]);else{const v=Y(f),P=Q(f);if(v||P){const S=()=>{if(e.f){const $=v?g[f]:f.value;r?M($)&&Rn($,o):M($)?$.includes(o)||$.push(o):v?g[f]=[o]:(f.value=[o],e.k&&(g[e.k]=f.value))}else v?(g[f]=l,N(x,f)&&(x[f]=l)):Q(f)&&(f.value=l,e.k&&(g[e.k]=l))};l?(S.id=-1,se(S,n)):S()}}}const se=ol;function Sl(e){return $l(e)}function $l(e,t){const n=po();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:l,createText:c,createComment:f,setText:u,setElementText:g,parentNode:x,nextSibling:v,setScopeId:P=ve,cloneNode:S,insertStaticContent:$}=e,T=(i,a,d,p=null,h=null,b=null,C=!1,_=null,y=!!a.dynamicChildren)=>{if(i===a)return;i&&!qe(i,a)&&(p=Pt(i),Fe(i,h,b,!0),i=null),a.patchFlag===-2&&(y=!1,a.dynamicChildren=null);const{type:m,ref:w,shapeFlag:k}=a;switch(m){case Gn:O(i,a,d,p);break;case ye:R(i,a,d,p);break;case pn:i==null&&q(a,d,p,C);break;case ce:Xe(i,a,d,p,h,b,C,_,y);break;default:k&1?He(i,a,d,p,h,b,C,_,y):k&6?os(i,a,d,p,h,b,C,_,y):(k&64||k&128)&&m.process(i,a,d,p,h,b,C,_,y,Qe)}w!=null&&h&&An(w,i&&i.ref,b,a||i,!a)},O=(i,a,d,p)=>{if(i==null)s(a.el=c(a.children),d,p);else{const h=a.el=i.el;a.children!==i.children&&u(h,a.children)}},R=(i,a,d,p)=>{i==null?s(a.el=f(a.children||""),d,p):a.el=i.el},q=(i,a,d,p)=>{[i.el,i.anchor]=$(i.children,a,d,p,i.el,i.anchor)},W=({el:i,anchor:a},d,p)=>{let h;for(;i&&i!==a;)h=v(i),s(i,d,p),i=h;s(a,d,p)},oe=({el:i,anchor:a})=>{let d;for(;i&&i!==a;)d=v(i),r(i),i=d;r(a)},He=(i,a,d,p,h,b,C,_,y)=>{C=C||a.type==="svg",i==null?L(a,d,p,h,b,C,_,y):me(i,a,h,b,C,_,y)},L=(i,a,d,p,h,b,C,_)=>{let y,m;const{type:w,props:k,shapeFlag:E,transition:A,patchFlag:F,dirs:D}=i;if(i.el&&S!==void 0&&F===-1)y=i.el=S(i.el);else{if(y=i.el=l(i.type,b,k&&k.is,k),E&8?g(y,i.children):E&16&&z(i.children,y,null,p,h,b&&w!=="foreignObject",C,_),D&&Ke(i,null,p,"created"),k){for(const K in k)K!=="value"&&!St(K)&&o(y,K,null,k[K],b,i.children,p,h,Te);"value"in k&&o(y,"value",null,k.value),(m=k.onVnodeBeforeMount)&&Ce(m,p,i)}Z(y,i,i.scopeId,C,p)}D&&Ke(i,null,p,"beforeMount");const U=(!h||h&&!h.pendingBranch)&&A&&!A.persisted;U&&A.beforeEnter(y),s(y,a,d),((m=k&&k.onVnodeMounted)||U||D)&&se(()=>{m&&Ce(m,p,i),U&&A.enter(y),D&&Ke(i,null,p,"mounted")},h)},Z=(i,a,d,p,h)=>{if(d&&P(i,d),p)for(let b=0;b<p.length;b++)P(i,p[b]);if(h){let b=h.subTree;if(a===b){const C=h.vnode;Z(i,C,C.scopeId,C.slotScopeIds,h.parent)}}},z=(i,a,d,p,h,b,C,_,y=0)=>{for(let m=y;m<i.length;m++){const w=i[m]=_?$e(i[m]):ke(i[m]);T(null,w,a,d,p,h,b,C,_)}},me=(i,a,d,p,h,b,C)=>{const _=a.el=i.el;let{patchFlag:y,dynamicChildren:m,dirs:w}=a;y|=i.patchFlag&16;const k=i.props||B,E=a.props||B;let A;d&&De(d,!1),(A=E.onVnodeBeforeUpdate)&&Ce(A,d,a,i),w&&Ke(a,i,d,"beforeUpdate"),d&&De(d,!0);const F=h&&a.type!=="foreignObject";if(m?le(i.dynamicChildren,m,_,d,p,F,b):C||Ee(i,a,_,null,d,p,F,b,!1),y>0){if(y&16)_e(_,a,k,E,d,p,h);else if(y&2&&k.class!==E.class&&o(_,"class",null,E.class,h),y&4&&o(_,"style",k.style,E.style,h),y&8){const D=a.dynamicProps;for(let U=0;U<D.length;U++){const K=D[U],be=k[K],Ge=E[K];(Ge!==be||K==="value")&&o(_,K,be,Ge,h,i.children,d,p,Te)}}y&1&&i.children!==a.children&&g(_,a.children)}else!C&&m==null&&_e(_,a,k,E,d,p,h);((A=E.onVnodeUpdated)||w)&&se(()=>{A&&Ce(A,d,a,i),w&&Ke(a,i,d,"updated")},p)},le=(i,a,d,p,h,b,C)=>{for(let _=0;_<a.length;_++){const y=i[_],m=a[_],w=y.el&&(y.type===ce||!qe(y,m)||y.shapeFlag&70)?x(y.el):d;T(y,m,w,null,p,h,b,C,!0)}},_e=(i,a,d,p,h,b,C)=>{if(d!==p){for(const _ in p){if(St(_))continue;const y=p[_],m=d[_];y!==m&&_!=="value"&&o(i,_,m,y,C,a.children,h,b,Te)}if(d!==B)for(const _ in d)!St(_)&&!(_ in p)&&o(i,_,d[_],null,C,a.children,h,b,Te);"value"in p&&o(i,"value",d.value,p.value)}},Xe=(i,a,d,p,h,b,C,_,y)=>{const m=a.el=i?i.el:c(""),w=a.anchor=i?i.anchor:c("");let{patchFlag:k,dynamicChildren:E,slotScopeIds:A}=a;A&&(_=_?_.concat(A):A),i==null?(s(m,d,p),s(w,d,p),z(a.children,d,w,h,b,C,_,y)):k>0&&k&64&&E&&i.dynamicChildren?(le(i.dynamicChildren,E,d,h,b,C,_),(a.key!=null||h&&a===h.subTree)&&Sr(i,a,!0)):Ee(i,a,d,w,h,b,C,_,y)},os=(i,a,d,p,h,b,C,_,y)=>{a.slotScopeIds=_,i==null?a.shapeFlag&512?h.ctx.activate(a,d,p,C,y):tn(a,d,p,h,b,C,y):ne(i,a,y)},tn=(i,a,d,p,h,b,C)=>{const _=i.component=Jl(i,p,h);if(Zt(i)&&(_.ctx.renderer=Qe),Yl(_),_.asyncDep){if(h&&h.registerDep(_,V),!i.el){const y=_.subTree=ee(ye);R(null,y,a,d)}return}V(_,i,a,d,h,b,C)},ne=(i,a,d)=>{const p=a.component=i.component;if(nl(i,a,d))if(p.asyncDep&&!p.asyncResolved){H(p,a,d);return}else p.next=a,Xo(p.update),p.update();else a.component=i.component,a.el=i.el,p.vnode=a},V=(i,a,d,p,h,b,C)=>{const _=()=>{if(i.isMounted){let{next:w,bu:k,u:E,parent:A,vnode:F}=i,D=w,U;De(i,!1),w?(w.el=F.el,H(i,w,C)):w=F,k&&an(k),(U=w.props&&w.props.onVnodeBeforeUpdate)&&Ce(U,A,w,F),De(i,!0);const K=fn(i),be=i.subTree;i.subTree=K,T(be,K,x(be.el),Pt(be),i,h,b),w.el=K.el,D===null&&sl(i,K.el),E&&se(E,h),(U=w.props&&w.props.onVnodeUpdated)&&se(()=>Ce(U,A,w,F),h)}else{let w;const{el:k,props:E}=a,{bm:A,m:F,parent:D}=i,U=En(a);if(De(i,!1),A&&an(A),!U&&(w=E&&E.onVnodeBeforeMount)&&Ce(w,D,a),De(i,!0),k&&rn){const K=()=>{i.subTree=fn(i),rn(k,i.subTree,i,h,null)};U?a.type.__asyncLoader().then(()=>!i.isUnmounted&&K()):K()}else{const K=i.subTree=fn(i);T(null,K,d,p,i,h,b),a.el=K.el}if(F&&se(F,h),!U&&(w=E&&E.onVnodeMounted)){const K=a;se(()=>Ce(w,D,K),h)}a.shapeFlag&256&&i.a&&se(i.a,h),i.isMounted=!0,a=d=p=null}},y=i.effect=new Hn(_,()=>dr(i.update),i.scope),m=i.update=y.run.bind(y);m.id=i.uid,De(i,!0),m()},H=(i,a,d)=>{a.component=i;const p=i.vnode.props;i.vnode=a,i.next=null,Pl(i,a.props,p,d),Il(i,a.children,d),at(),Jn(void 0,i.update),ft()},Ee=(i,a,d,p,h,b,C,_,y=!1)=>{const m=i&&i.children,w=i?i.shapeFlag:0,k=a.children,{patchFlag:E,shapeFlag:A}=a;if(E>0){if(E&128){ut(m,k,d,p,h,b,C,_,y);return}else if(E&256){nn(m,k,d,p,h,b,C,_,y);return}}A&8?(w&16&&Te(m,h,b),k!==m&&g(d,k)):w&16?A&16?ut(m,k,d,p,h,b,C,_,y):Te(m,h,b,!0):(w&8&&g(d,""),A&16&&z(k,d,p,h,b,C,_,y))},nn=(i,a,d,p,h,b,C,_,y)=>{i=i||st,a=a||st;const m=i.length,w=a.length,k=Math.min(m,w);let E;for(E=0;E<k;E++){const A=a[E]=y?$e(a[E]):ke(a[E]);T(i[E],A,d,null,h,b,C,_,y)}m>w?Te(i,h,b,!0,!1,k):z(a,d,p,h,b,C,_,y,k)},ut=(i,a,d,p,h,b,C,_,y)=>{let m=0;const w=a.length;let k=i.length-1,E=w-1;for(;m<=k&&m<=E;){const A=i[m],F=a[m]=y?$e(a[m]):ke(a[m]);if(qe(A,F))T(A,F,d,null,h,b,C,_,y);else break;m++}for(;m<=k&&m<=E;){const A=i[k],F=a[E]=y?$e(a[E]):ke(a[E]);if(qe(A,F))T(A,F,d,null,h,b,C,_,y);else break;k--,E--}if(m>k){if(m<=E){const A=E+1,F=A<w?a[A].el:p;for(;m<=E;)T(null,a[m]=y?$e(a[m]):ke(a[m]),d,F,h,b,C,_,y),m++}}else if(m>E)for(;m<=k;)Fe(i[m],h,b,!0),m++;else{const A=m,F=m,D=new Map;for(m=F;m<=E;m++){const ie=a[m]=y?$e(a[m]):ke(a[m]);ie.key!=null&&D.set(ie.key,m)}let U,K=0;const be=E-F+1;let Ge=!1,cs=0;const dt=new Array(be);for(m=0;m<be;m++)dt[m]=0;for(m=A;m<=k;m++){const ie=i[m];if(K>=be){Fe(ie,h,b,!0);continue}let xe;if(ie.key!=null)xe=D.get(ie.key);else for(U=F;U<=E;U++)if(dt[U-F]===0&&qe(ie,a[U])){xe=U;break}xe===void 0?Fe(ie,h,b,!0):(dt[xe-F]=m+1,xe>=cs?cs=xe:Ge=!0,T(ie,a[xe],d,null,h,b,C,_,y),K++)}const as=Ge?jl(dt):st;for(U=as.length-1,m=be-1;m>=0;m--){const ie=F+m,xe=a[ie],fs=ie+1<w?a[ie+1].el:p;dt[m]===0?T(null,xe,d,fs,h,b,C,_,y):Ge&&(U<0||m!==as[U]?Ze(xe,d,fs,2):U--)}}},Ze=(i,a,d,p,h=null)=>{const{el:b,type:C,transition:_,children:y,shapeFlag:m}=i;if(m&6){Ze(i.component.subTree,a,d,p);return}if(m&128){i.suspense.move(a,d,p);return}if(m&64){C.move(i,a,d,Qe);return}if(C===ce){s(b,a,d);for(let k=0;k<y.length;k++)Ze(y[k],a,d,p);s(i.anchor,a,d);return}if(C===pn){W(i,a,d);return}if(p!==2&&m&1&&_)if(p===0)_.beforeEnter(b),s(b,a,d),se(()=>_.enter(b),h);else{const{leave:k,delayLeave:E,afterLeave:A}=_,F=()=>s(b,a,d),D=()=>{k(b,()=>{F(),A&&A()})};E?E(b,F,D):D()}else s(b,a,d)},Fe=(i,a,d,p=!1,h=!1)=>{const{type:b,props:C,ref:_,children:y,dynamicChildren:m,shapeFlag:w,patchFlag:k,dirs:E}=i;if(_!=null&&An(_,null,d,i,!0),w&256){a.ctx.deactivate(i);return}const A=w&1&&E,F=!En(i);let D;if(F&&(D=C&&C.onVnodeBeforeUnmount)&&Ce(D,a,i),w&6)Xr(i.component,d,p);else{if(w&128){i.suspense.unmount(d,p);return}A&&Ke(i,null,a,"beforeUnmount"),w&64?i.type.remove(i,a,d,h,Qe,p):m&&(b!==ce||k>0&&k&64)?Te(m,a,d,!1,!0):(b===ce&&k&384||!h&&w&16)&&Te(y,a,d),p&&ls(i)}(F&&(D=C&&C.onVnodeUnmounted)||A)&&se(()=>{D&&Ce(D,a,i),A&&Ke(i,null,a,"unmounted")},d)},ls=i=>{const{type:a,el:d,anchor:p,transition:h}=i;if(a===ce){Yr(d,p);return}if(a===pn){oe(i);return}const b=()=>{r(d),h&&!h.persisted&&h.afterLeave&&h.afterLeave()};if(i.shapeFlag&1&&h&&!h.persisted){const{leave:C,delayLeave:_}=h,y=()=>C(d,b);_?_(i.el,b,y):y()}else b()},Yr=(i,a)=>{let d;for(;i!==a;)d=v(i),r(i),i=d;r(a)},Xr=(i,a,d)=>{const{bum:p,scope:h,update:b,subTree:C,um:_}=i;p&&an(p),h.stop(),b&&(b.active=!1,Fe(C,i,a,d)),_&&se(_,a),se(()=>{i.isUnmounted=!0},a),a&&a.pendingBranch&&!a.isUnmounted&&i.asyncDep&&!i.asyncResolved&&i.suspenseId===a.pendingId&&(a.deps--,a.deps===0&&a.resolve())},Te=(i,a,d,p=!1,h=!1,b=0)=>{for(let C=b;C<i.length;C++)Fe(i[C],a,d,p,h)},Pt=i=>i.shapeFlag&6?Pt(i.component.subTree):i.shapeFlag&128?i.suspense.next():v(i.anchor||i.el),is=(i,a,d)=>{i==null?a._vnode&&Fe(a._vnode,null,null,!0):T(a._vnode||null,i,a,null,null,null,d),gr(),a._vnode=i},Qe={p:T,um:Fe,m:Ze,r:ls,mt:tn,mc:z,pc:Ee,pbc:le,n:Pt,o:e};let sn,rn;return t&&([sn,rn]=t(Qe)),{render:is,hydrate:sn,createApp:Nl(is,sn)}}function De({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Sr(e,t,n=!1){const s=e.children,r=t.children;if(M(s)&&M(r))for(let o=0;o<s.length;o++){const l=s[o];let c=r[o];c.shapeFlag&1&&!c.dynamicChildren&&((c.patchFlag<=0||c.patchFlag===32)&&(c=r[o]=$e(r[o]),c.el=l.el),n||Sr(l,c))}}function jl(e){const t=e.slice(),n=[0];let s,r,o,l,c;const f=e.length;for(s=0;s<f;s++){const u=e[s];if(u!==0){if(r=n[n.length-1],e[r]<u){t[s]=r,n.push(s);continue}for(o=0,l=n.length-1;o<l;)c=o+l>>1,e[n[c]]<u?o=c+1:l=c;u<e[n[o]]&&(o>0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,l=n[o-1];o-- >0;)n[o]=l,l=t[l];return n}const Rl=e=>e.__isTeleport,$r="components",jr=Symbol();function Ll(e){return Y(e)?Ul($r,e,!1)||e:e||jr}function Ul(e,t,n=!0,s=!1){const r=he||J;if(r){const o=r.type;if(e===$r){const c=Ql(o);if(c&&(c===t||c===ge(t)||c===zt(ge(t))))return o}const l=As(r[e]||o[e],t)||As(r.appContext[e],t);return!l&&s?o:l}}function As(e,t){return e&&(e[t]||e[ge(t)]||e[zt(ge(t))])}const ce=Symbol(void 0),Gn=Symbol(void 0),ye=Symbol(void 0),pn=Symbol(void 0),yt=[];let Je=null;function re(e=!1){yt.push(Je=e?null:[])}function Bl(){yt.pop(),Je=yt[yt.length-1]||null}let Ht=1;function Ms(e){Ht+=e}function Rr(e){return e.dynamicChildren=Ht>0?Je||st:null,Bl(),Ht>0&&Je&&Je.push(e),e}function Ue(e,t,n,s,r,o){return Rr(je(e,t,n,s,r,o,!0))}function lt(e,t,n,s,r){return Rr(ee(e,t,n,s,r,!0))}function Lr(e){return e?e.__v_isVNode===!0:!1}function qe(e,t){return e.type===t.type&&e.key===t.key}const Gt="__vInternal",Ur=({key:e})=>e!=null?e:null,$t=({ref:e,ref_key:t,ref_for:n})=>e!=null?Y(e)||Q(e)||I(e)?{i:he,r:e,k:t,f:!!n}:e:null;function je(e,t=null,n=null,s=0,r=null,o=e===ce?0:1,l=!1,c=!1){const f={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Ur(t),ref:t&&$t(t),scopeId:br,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null};return c?(es(f,n),o&128&&e.normalize(f)):n&&(f.shapeFlag|=Y(n)?8:16),Ht>0&&!l&&Je&&(f.patchFlag>0||o&6)&&f.patchFlag!==32&&Je.push(f),f}const ee=Hl;function Hl(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===jr)&&(e=ye),Lr(e)){const c=it(e,t,!0);return n&&es(c,n),c}if(Gl(e)&&(e=e.__vccOpts),t){t=Kl(t);let{class:c,style:f}=t;c&&!Y(c)&&(t.class=Ot(c)),X(f)&&(or(f)&&!M(f)&&(f=G({},f)),t.style=$n(f))}const l=Y(e)?1:rl(e)?128:Rl(e)?64:X(e)?4:I(e)?2:0;return je(e,t,n,s,r,l,o,!0)}function Kl(e){return e?or(e)||Gt in e?G({},e):e:null}function it(e,t,n=!1){const{props:s,ref:r,patchFlag:o,children:l}=e,c=t?ts(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&Ur(c),ref:t&&t.ref?n&&r?M(r)?r.concat($t(t)):[r,$t(t)]:$t(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ce?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&it(e.ssContent),ssFallback:e.ssFallback&&it(e.ssFallback),el:e.el,anchor:e.anchor}}function Dl(e=" ",t=0){return ee(Gn,null,e,t)}function xt(e="",t=!1){return t?(re(),lt(ye,null,e)):ee(ye,null,e)}function ke(e){return e==null||typeof e=="boolean"?ee(ye):M(e)?ee(ce,null,e.slice()):typeof e=="object"?$e(e):ee(Gn,null,String(e))}function $e(e){return e.el===null||e.memo?e:it(e)}function es(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(M(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),es(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(Gt in t)?t._ctx=he:r===3&&he&&(he.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else I(t)?(t={default:t,_ctx:he},n=32):(t=String(t),s&64?(n=16,t=[Dl(t)]):n=8);e.children=t,e.shapeFlag|=n}function ts(...e){const t={};for(let n=0;n<e.length;n++){const s=e[n];for(const r in s)if(r==="class")t.class!==s.class&&(t.class=Ot([t.class,s.class]));else if(r==="style")t.style=$n([t.style,s.style]);else if(Vt(r)){const o=t[r],l=s[r];l&&o!==l&&!(M(o)&&o.includes(l))&&(t[r]=o?[].concat(o,l):l)}else r!==""&&(t[r]=s[r])}return t}function Ce(e,t,n,s=null){pe(e,t,7,[n,s])}function Vl(e,t,n,s){let r;const o=n&&n[s];if(M(e)||Y(e)){r=new Array(e.length);for(let l=0,c=e.length;l<c;l++)r[l]=t(e[l],l,void 0,o&&o[l])}else if(typeof e=="number"){r=new Array(e);for(let l=0;l<e;l++)r[l]=t(l+1,l,void 0,o&&o[l])}else if(X(e))if(e[Symbol.iterator])r=Array.from(e,(l,c)=>t(l,c,void 0,o&&o[c]));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,f=l.length;c<f;c++){const u=l[c];r[c]=t(e[u],u,c,o&&o[c])}}else r=[];return n&&(n[s]=r),r}function Br(e,t,n={},s,r){if(he.isCE)return ee("slot",t==="default"?null:{name:t},s&&s());let o=e[t];o&&o._c&&(o._d=!1),re();const l=o&&Hr(o(n)),c=lt(ce,{key:n.key||`_${t}`},l||(s?s():[]),l&&e._===1?64:-2);return!r&&c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),o&&o._c&&(o._d=!0),c}function Hr(e){return e.some(t=>Lr(t)?!(t.type===ye||t.type===ce&&!Hr(t.children)):!0)?e:null}const Mn=e=>e?Dr(e)?ns(e)||e.proxy:Mn(e.parent):null,Kt=G(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Mn(e.parent),$root:e=>Mn(e.root),$emit:e=>e.emit,$options:e=>Or(e),$forceUpdate:e=>()=>dr(e.update),$nextTick:e=>ur.bind(e.proxy),$watch:e=>il.bind(e)}),ql={get({_:e},t){const{ctx:n,setupState:s,data:r,props:o,accessCache:l,type:c,appContext:f}=e;let u;if(t[0]!=="$"){const P=l[t];if(P!==void 0)switch(P){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(s!==B&&N(s,t))return l[t]=1,s[t];if(r!==B&&N(r,t))return l[t]=2,r[t];if((u=e.propsOptions[0])&&N(u,t))return l[t]=3,o[t];if(n!==B&&N(n,t))return l[t]=4,n[t];Tn&&(l[t]=0)}}const g=Kt[t];let x,v;if(g)return t==="$attrs"&&fe(e,"get",t),g(e);if((x=c.__cssModules)&&(x=x[t]))return x;if(n!==B&&N(n,t))return l[t]=4,n[t];if(v=f.config.globalProperties,N(v,t))return v[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;if(r!==B&&N(r,t))r[t]=n;else if(s!==B&&N(s,t))s[t]=n;else if(N(e.props,t))return!1;return t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:o}},l){let c;return!!n[l]||e!==B&&N(e,l)||t!==B&&N(t,l)||(c=o[0])&&N(c,l)||N(s,l)||N(Kt,l)||N(r.config.globalProperties,l)}},Wl=Nr();let zl=0;function Jl(e,t,n){const s=e.type,r=(t?t.appContext:e.appContext)||Wl,o={uid:zl++,vnode:e,type:s,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,scope:new go(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Ar(s,r),emitsOptions:_r(s,r),emit:null,emitted:null,propsDefaults:B,inheritAttrs:s.inheritAttrs,ctx:B,data:B,props:B,attrs:B,slots:B,refs:B,setupState:B,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return o.ctx={_:o},o.root=t?t.root:o,o.emit=Go.bind(null,o),e.ce&&e.ce(o),o}let J=null;const Kr=()=>J||he,ct=e=>{J=e,e.scope.on()},Ye=()=>{J&&J.scope.off(),J=null};function Dr(e){return e.vnode.shapeFlag&4}let Tt=!1;function Yl(e,t=!1){Tt=t;const{props:n,children:s}=e.vnode,r=Dr(e);Ol(e,n,r,t),Ml(e,s);const o=r?Xl(e,t):void 0;return Tt=!1,o}function Xl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=lr(new Proxy(e.ctx,ql));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?qr(e):null;ct(e),at();const o=Le(s,e,0,[e.props,r]);if(ft(),Ye(),Vs(o)){if(o.then(Ye,Ye),t)return o.then(l=>{Is(e,l,t)}).catch(l=>{Xt(l,e,0)});e.asyncDep=o}else Is(e,o,t)}else Vr(e,t)}function Is(e,t,n){I(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:X(t)&&(e.setupState=ar(t)),Vr(e,n)}let Fs;function Vr(e,t,n){const s=e.type;if(!e.render){if(!t&&Fs&&!s.render){const r=s.template;if(r){const{isCustomElement:o,compilerOptions:l}=e.appContext.config,{delimiters:c,compilerOptions:f}=s,u=G(G({isCustomElement:o,delimiters:c},l),f);s.render=Fs(r,u)}}e.render=s.render||ve}ct(e),at(),Cl(e),ft(),Ye()}function Zl(e){return new Proxy(e.attrs,{get(t,n){return fe(e,"get","$attrs"),t[n]}})}function qr(e){const t=s=>{e.exposed=s||{}};let n;return{get attrs(){return n||(n=Zl(e))},slots:e.slots,emit:e.emit,expose:t}}function ns(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(ar(lr(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Kt)return Kt[n](e)}}))}function Ql(e){return I(e)&&e.displayName||e.name}function Gl(e){return I(e)&&"__vccOpts"in e}const ss=(e,t)=>zo(e,t,Tt);function ei(){return ti().attrs}function ti(){const e=Kr();return e.setupContext||(e.setupContext=qr(e))}const ni="3.2.30",si="http://www.w3.org/2000/svg",We=typeof document!="undefined"?document:null,Ns=We&&We.createElement("template"),ri={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t?We.createElementNS(si,e):We.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>We.createTextNode(e),createComment:e=>We.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>We.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,n,s,r,o){const l=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{Ns.innerHTML=s?`<svg>${e}</svg>`:e;const c=Ns.content;if(s){const f=c.firstChild;for(;f.firstChild;)c.appendChild(f.firstChild);c.removeChild(f)}t.insertBefore(c,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function oi(e,t,n){const s=e._vtc;s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function li(e,t,n){const s=e.style,r=Y(n);if(n&&!r){for(const o in n)In(s,o,n[o]);if(t&&!Y(t))for(const o in t)n[o]==null&&In(s,o,"")}else{const o=s.display;r?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(s.display=o)}}const Ss=/\s*!important$/;function In(e,t,n){if(M(n))n.forEach(s=>In(e,t,s));else if(t.startsWith("--"))e.setProperty(t,n);else{const s=ii(e,t);Ss.test(n)?e.setProperty(Ae(s),n.replace(Ss,""),"important"):e[s]=n}}const $s=["Webkit","Moz","ms"],gn={};function ii(e,t){const n=gn[t];if(n)return n;let s=ge(t);if(s!=="filter"&&s in e)return gn[t]=s;s=zt(s);for(let r=0;r<$s.length;r++){const o=$s[r]+s;if(o in e)return gn[t]=o}return t}const js="http://www.w3.org/1999/xlink";function ci(e,t,n,s,r){if(s&&t.startsWith("xlink:"))n==null?e.removeAttributeNS(js,t.slice(6,t.length)):e.setAttributeNS(js,t,n);else{const o=so(t);n==null||o&&!Hs(n)?e.removeAttribute(t):e.setAttribute(t,o?"":n)}}function ai(e,t,n,s,r,o,l){if(t==="innerHTML"||t==="textContent"){s&&l(s,r,o),e[t]=n==null?"":n;return}if(t==="value"&&e.tagName!=="PROGRESS"&&!e.tagName.includes("-")){e._value=n;const c=n==null?"":n;(e.value!==c||e.tagName==="OPTION")&&(e.value=c),n==null&&e.removeAttribute(t);return}if(n===""||n==null){const c=typeof e[t];if(c==="boolean"){e[t]=Hs(n);return}else if(n==null&&c==="string"){e[t]="",e.removeAttribute(t);return}else if(c==="number"){try{e[t]=0}catch{}e.removeAttribute(t);return}}try{e[t]=n}catch{}}let Dt=Date.now,Wr=!1;if(typeof window!="undefined"){Dt()>document.createEvent("Event").timeStamp&&(Dt=()=>performance.now());const e=navigator.userAgent.match(/firefox\/(\d+)/i);Wr=!!(e&&Number(e[1])<=53)}let Fn=0;const fi=Promise.resolve(),ui=()=>{Fn=0},di=()=>Fn||(fi.then(ui),Fn=Dt());function hi(e,t,n,s){e.addEventListener(t,n,s)}function pi(e,t,n,s){e.removeEventListener(t,n,s)}function gi(e,t,n,s,r=null){const o=e._vei||(e._vei={}),l=o[t];if(s&&l)l.value=s;else{const[c,f]=mi(t);if(s){const u=o[t]=_i(s,r);hi(e,c,u,f)}else l&&(pi(e,c,l,f),o[t]=void 0)}}const Rs=/(?:Once|Passive|Capture)$/;function mi(e){let t;if(Rs.test(e)){t={};let n;for(;n=e.match(Rs);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[Ae(e.slice(2)),t]}function _i(e,t){const n=s=>{const r=s.timeStamp||Dt();(Wr||r>=n.attached-1)&&pe(bi(s,n.value),t,5,[s])};return n.value=e,n.attached=di(),n}function bi(e,t){if(M(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Ls=/^on[a-z]/,vi=(e,t,n,s,r=!1,o,l,c,f)=>{t==="class"?oi(e,s,r):t==="style"?li(e,n,s):Vt(t)?jn(t)||gi(e,t,n,s,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):yi(e,t,s,r))?ai(e,t,s,o,l,c,f):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),ci(e,t,s,r))};function yi(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&Ls.test(t)&&I(n)):t==="spellcheck"||t==="draggable"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Ls.test(t)&&Y(n)?!1:t in e}function xi(e,t){const n=ul(e);class s extends rs{constructor(o){super(n,o,t)}}return s.def=n,s}const Ci=typeof HTMLElement!="undefined"?HTMLElement:class{};class rs extends Ci{constructor(t,n={},s){super();this._def=t,this._props=n,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this.shadowRoot&&s?s(this._createVNode(),this.shadowRoot):this.attachShadow({mode:"open"})}connectedCallback(){this._connected=!0,this._instance||this._resolveDef()}disconnectedCallback(){this._connected=!1,ur(()=>{this._connected||(Bs(null,this.shadowRoot),this._instance=null)})}_resolveDef(){if(this._resolved)return;this._resolved=!0;for(let s=0;s<this.attributes.length;s++)this._setAttr(this.attributes[s].name);new MutationObserver(s=>{for(const r of s)this._setAttr(r.attributeName)}).observe(this,{attributes:!0});const t=s=>{const{props:r,styles:o}=s,l=!M(r),c=r?l?Object.keys(r):r:[];let f;if(l)for(const u in this._props){const g=r[u];(g===Number||g&&g.type===Number)&&(this._props[u]=mn(this._props[u]),(f||(f=Object.create(null)))[u]=!0)}this._numberProps=f;for(const u of Object.keys(this))u[0]!=="_"&&this._setProp(u,this[u],!0,!1);for(const u of c.map(ge))Object.defineProperty(this,u,{get(){return this._getProp(u)},set(g){this._setProp(u,g)}});this._applyStyles(o),this._update()},n=this._def.__asyncLoader;n?n().then(t):t(this._def)}_setAttr(t){let n=this.getAttribute(t);this._numberProps&&this._numberProps[t]&&(n=mn(n)),this._setProp(ge(t),n,!1)}_getProp(t){return this._props[t]}_setProp(t,n,s=!0,r=!0){n!==this._props[t]&&(this._props[t]=n,r&&this._instance&&this._update(),s&&(n===!0?this.setAttribute(Ae(t),""):typeof n=="string"||typeof n=="number"?this.setAttribute(Ae(t),n+""):n||this.removeAttribute(Ae(t))))}_update(){Bs(this._createVNode(),this.shadowRoot)}_createVNode(){const t=ee(this._def,G({},this._props));return this._instance||(t.ce=n=>{this._instance=n,n.isCE=!0,n.emit=(r,...o)=>{this.dispatchEvent(new CustomEvent(r,{detail:o}))};let s=this;for(;s=s&&(s.parentNode||s.host);)if(s instanceof rs){n.parent=s._instance;break}}),t}_applyStyles(t){t&&t.forEach(n=>{const s=document.createElement("style");s.textContent=n,this.shadowRoot.appendChild(s)})}}const ki={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};fl.props;const wi=["ctrl","shift","alt","meta"],Ei={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>wi.some(n=>e[`${n}Key`]&&!t.includes(n))},Ti=(e,t)=>(n,...s)=>{for(let r=0;r<t.length;r++){const o=Ei[t[r]];if(o&&o(n,t))return}return e(n,...s)},Oi=G({patchProp:vi},ri);let Us;function Pi(){return Us||(Us=Sl(Oi))}const Bs=(...e)=>{Pi().render(...e)};var Ai=`.kvass-contact-checkbox{display:flex;align-items:baseline;gap:.5rem}.kvass-contact-checkbox__element{margin:0}.kvass-contact-checkbox--required span:after{content:"*";color:var(--kvass-contact-error, var(--kvass-contact-default-error));margin-left:.3rem}
|
|
2
|
+
`,en=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n};const Mi=["value"],Ii=["innerHTML"],Fi={inheritAttrs:!1},Ni=Object.assign(Fi,{props:{modelValue:[Boolean,Array],state:String,label:String},emits:["update:modelValue"],setup(e,{emit:t}){const n=e;function s(r){return typeof n.modelValue=="boolean"?t("update:modelValue",r.target.checked):t("update:modelValue",r.target.checked?[...n.modelValue,n.state]:n.modelValue.filter(o=>o!==n.state))}return(r,o)=>(re(),Ue("label",{class:Ot(["kvass-contact-checkbox",[{"kvass-contact-checkbox--required":"required"in r.$attrs},r.$attrs.class]])},[je("input",ts({class:"kvass-contact-checkbox__element",type:"checkbox"},r.$attrs,{value:e.modelValue,onInput:s}),null,16,Mi),je("span",{class:"kvass-contact-checkbox__label",innerHTML:e.label},null,8,Ii)],2))}});var jt=en(Ni,[["styles",[Ai]]]),Si=`.kvass-contact-field{display:flex;flex-direction:column;gap:.3rem}.kvass-contact-field__element{padding:calc(var(--kvass-contact-spacing, var(--kvass-contact-default-spacing)) / 2);border-radius:var(--kvass-contact-border-radius, var(--kvass-contact-default-border-radius));border:1px solid var(--kvass-contact-border-color, var(--kvass-contact-default-border-color));resize:vertical;font:inherit}.kvass-contact-field__element:focus-visible{outline:2px solid var(--kvass-contact-color, var(--kvass-contact-default-color));outline-offset:2px}.kvass-contact-field--required .kvass-contact-field__label:after{content:"*";color:var(--kvass-contact-error, var(--kvass-contact-default-error));margin-left:.3rem}.kvass-contact-field--required.kvass-contact-field--focused .kvass-contact-field__element:invalid{border-color:var(--kvass-contact-error, var(--kvass-contact-default-error))}.kvass-contact-field--full-width{grid-column-end:span var(--kvass-contact-grid-columns, var(--kvass-contact-default-grid-columns))}
|
|
3
|
+
`;const $i=["for"],ji={key:0,class:"kvass-contact-field__label"},Ri={inheritAttrs:!1},Li=Object.assign(Ri,{props:{modelValue:[String,Array],label:String,type:String},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,s=ss(()=>{switch(n.type){case"textarea":return"textarea";case"select":return"select";default:return"input"}}),r=pt(!1);function o(l){t("update:modelValue",l.target.value),r.value=!0}return(l,c)=>(re(),Ue("label",{class:Ot(["kvass-contact-field",[{"kvass-contact-field--required":"required"in l.$attrs,"kvass-contact-field--focused":r.value},l.$attrs.class]]),for:l.$attrs.id},[e.label?(re(),Ue("span",ji,_t(e.label),1)):xt("",!0),(re(),lt(Ll(de(s)),ts({class:"kvass-contact-field__element"},l.$attrs,{onInput:o,value:e.modelValue}),{default:Xn(()=>[Br(l.$slots,"default")]),_:3},16,["value"]))],10,$i))}});var mt=en(Li,[["styles",[Si]]]),Ui=`.kvass-contact-fieldset{position:relative;display:flex;flex-direction:column;gap:calc(var(--kvass-contact-spacing, var(--kvass-contact-default-spacing)) / 4);margin:calc(var(--kvass-contact-spacing, var(--kvass-contact-default-spacing)) / 1.5) 0 0 0;padding:calc(var(--kvass-contact-spacing, var(--kvass-contact-default-spacing)) / 2);border-radius:var(--kvass-contact-border-radius, var(--kvass-contact-default-border-radius));border:1px solid var(--kvass-contact-border-color, var(--kvass-contact-default-border-color));font:inherit}.kvass-contact-fieldset:focus-visible{outline:2px solid var(--kvass-contact-color, var(--kvass-contact-default-color));outline-offset:2px}.kvass-contact-fieldset__label{margin:0;padding:0;position:absolute;top:-1.4rem;left:0}
|
|
4
|
+
`;const Bi={class:"kvass-contact-fieldset"},Hi={key:0,class:"kvass-contact-fieldset__label"},Ki={props:{label:String},setup(e){return(t,n)=>(re(),Ue("fieldset",Bi,[e.label?(re(),Ue("legend",Hi,_t(e.label),1)):xt("",!0),Br(t.$slots,"default")]))}};var zr=en(Ki,[["styles",[Ui]]]);function Jr(e,t,n){return n&&n instanceof Array&&n.length?Promise.all(n.map(s=>{let r={onModel:"Project",ref:s};return Jr(e,ln(on({},t),{project:s,references:[r,...t.references]}))})):n&&!n.length?Di(e,t.contact,t.comment):fetch(`${e}/api/graphql`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:`
|
|
5
|
+
mutation ($data: LeadCreate!) {
|
|
6
|
+
LeadCreate(data: $data) {
|
|
7
|
+
id
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
`,variables:{data:t}})}).then(s=>s.json())}function Di(e,t,n){return fetch(`${e}/api/graphql`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:`
|
|
11
|
+
mutation ($data: ContactInput!, $comment: String) {
|
|
12
|
+
ContactCreate(data: $data, comment: $comment) {
|
|
13
|
+
id
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
`,variables:{data:t,comment:n}})}).then(s=>s.json())}function Vi(e){return fetch(`${e}/api/graphql`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:`
|
|
17
|
+
query {
|
|
18
|
+
Projects {
|
|
19
|
+
id
|
|
20
|
+
name
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
`})}).then(t=>t.json())}var qi=`.kvass-contact{--kvass-contact-default-background: #ffffff;--kvass-contact-default-spacing: 2rem;--kvass-contact-default-border-radius: 4px;--kvass-contact-default-border-color: #eaeaea;--kvass-contact-default-color: #222222;--kvass-contact-default-color-inverted: #ffffff;--kvass-contact-default-max-width: 720px;--kvass-contact-default-primary: #1d56d8;--kvass-contact-default-error: #d81d1d;--kvass-contact-default-grid-columns: 1;--kvass-contact-default-disabled: #eaeaea;background-color:var(--kvass-contact-background, var(--kvass-contact-default-background));padding:var(--kvass-contact-spacing, var(--kvass-contact-default-spacing));border-radius:var(--kvass-contact-border-radius, var(--kvass-contact-default-border-radius));color:var(--kvass-contact-color, var(--kvass-contact-default-color));max-width:var(--kvass-contact-max-width, var(--kvass-contact-default-max-width));font:inherit;accent-color:var(--kvass-contact-primary, var(--kvass-contact-default-primary));display:flex;flex-direction:column;gap:var(--kvass-contact-spacing, var(--kvass-contact-default-spacing))}@media (max-width: 600px){.kvass-contact{--kvass-contact-grid-columns: 1;padding:calc(var(--kvass-contact-spacing, var(--kvass-contact-default-spacing)) / 2)}}.kvass-contact *:focus-visible{outline:2px solid var(--kvass-contact-color, var(--kvass-contact-default-color));outline-offset:2px}.kvass-contact__header{display:flex;flex-direction:column;gap:.5rem}.kvass-contact__fields{display:grid;grid-template-columns:repeat(var(--kvass-contact-grid-columns, var(--kvass-contact-default-grid-columns)),1fr);gap:calc(var(--kvass-contact-spacing, var(--kvass-contact-default-spacing)) / 2)}.kvass-contact__title{font-size:2rem;margin:0}.kvass-contact__subtitle{opacity:.7;margin:0}.kvass-contact__submit{padding:calc(var(--kvass-contact-spacing, var(--kvass-contact-default-spacing)) / 2);border-radius:var(--kvass-contact-border-radius, var(--kvass-contact-default-border-radius));background-color:var(--kvass-contact-primary, var(--kvass-contact-default-primary));color:var(--kvass-contact-color-inverted, var(--kvass-contact-default-color-inverted));border:none;font:inherit;width:100%}.kvass-contact__submit:disabled{background-color:var(--kvass-contact-disabled, var(--kvass-contact-default-disabled));color:var(--kvass-contact-color, var(--kvass-contact-default-color));cursor:not-allowed}
|
|
24
|
+
`;const Wi=["onSubmit"],zi={class:"kvass-contact__header"},Ji={class:"kvass-contact__title"},Yi={key:0,class:"kvass-contact__subtitle"},Xi={class:"kvass-contact__fields"},Zi=["disabled"],Qi={props:{lang:{type:String,default:()=>document.documentElement.getAttribute("lang")||"nb"},privacyUrl:{type:String},upsell:{type:Boolean,default:!1},accountUrl:{type:String,required:!0},projects:String,references:String,tags:String},setup(e){const t=e,n={nb:{title:"Meld interesse",submit:"Meld interesse",name:"Navn",email:"E-post",phone:"Telefonnummer",message:"Melding",projects:"Hvilke prosjekter er du interessert i?",upsell:"Jeg \xF8nsker informasjon om lignende prosjekter",privacy:"Jeg \xF8nsker \xE5 bli kontaktet i samtykke med [personvernerkl\xE6ringen]",success:"Takk for interessen!"},en:{title:"Contact agent",submit:"Submit",name:"Name",email:"Email",phone:"Phone",message:"Message",projects:"Which projects are you interested in?",upsell:"I want to know about other similar projects",privacy:"I agree to the [privacy policy]",success:"Thank you for your interest"}},s=ei(),r=ss(()=>t.privacyUrl?t.privacyUrl:`${t.accountUrl}/api/legal/privacy/tenant`),o={contact:{name:null,email:null,phone:null,upsell:!1,tags:t.tags.split(",")},comment:null},l=Yt(structuredClone(o)),c=pt(!1),f=pt([]),u=pt([]),g=pt([]),x=T=>T.charAt(0).toUpperCase()+T.substring(1);function v(T){let O=s["label"+x(T)]||n[t.lang][T];return T==="privacy"?O.replace(/\[(.+)\]/,`<a href="${r.value}">$1</a>`):O}function P(){Object.assign(l,structuredClone(o)),u.value=[]}function S(){Jr(t.accountUrl,ln(on({},l),{references:g.value}),u.value).then(()=>{c.value=!0,P()})}function $(){const T=t.references.split(",").map(O=>{const[R,q]=O.split(":");return{onModel:R,ref:q}});g.value=T}return Zn(()=>{t.projects?t.projects.split(",").forEach(T=>u.value.push(T)):Vi(t.accountUrl).then(T=>f.value=T.data.Projects),$()}),(T,O)=>(re(),Ue("form",{class:"kvass-contact",onSubmit:Ti(S,["prevent"])},[je("div",zi,[je("h2",Ji,_t(v("title")),1),v("subtitle")?(re(),Ue("p",Yi,_t(v("subtitle")),1)):xt("",!0)]),je("div",Xi,[ee(mt,{label:v("name"),type:"text",required:"",modelValue:de(l).contact.name,"onUpdate:modelValue":O[0]||(O[0]=R=>de(l).contact.name=R)},null,8,["label","modelValue"]),ee(mt,{label:v("email"),type:"email",pattern:"\\b[\\w\\.-]+@[\\w\\.-]+\\.\\w{2,4}",required:"",modelValue:de(l).contact.email,"onUpdate:modelValue":O[1]||(O[1]=R=>de(l).contact.email=R)},null,8,["label","modelValue"]),ee(mt,{label:v("phone"),type:"tel",modelValue:de(l).contact.phone,"onUpdate:modelValue":O[2]||(O[2]=R=>de(l).contact.phone=R)},null,8,["label","modelValue"]),e.projects?xt("",!0):(re(),lt(zr,{key:0,label:v("projects")},{default:Xn(()=>[(re(!0),Ue(ce,null,Vl(f.value,R=>(re(),lt(jt,{key:R.id,state:R.id,label:R.name,modelValue:u.value,"onUpdate:modelValue":O[3]||(O[3]=q=>u.value=q)},null,8,["state","label","modelValue"]))),128))]),_:1},8,["label"])),ee(mt,{label:v("message"),type:"textarea",rows:"5",class:"kvass-contact-field--full-width",modelValue:de(l).comment,"onUpdate:modelValue":O[4]||(O[4]=R=>de(l).comment=R)},null,8,["label","modelValue"]),e.upsell?(re(),lt(jt,{key:1,label:v("upsell"),class:"kvass-contact-field--full-width",modelValue:de(l).contact.upsell,"onUpdate:modelValue":O[5]||(O[5]=R=>de(l).contact.upsell=R)},null,8,["label","modelValue"])):xt("",!0),ee(jt,{label:v("privacy"),class:"kvass-contact-field--full-width",required:""},null,8,["label"])]),je("button",{class:"kvass-contact__submit",type:"submit",disabled:c.value},_t(c.value?v("success"):v("submit")),9,Zi)],40,Wi))}};var Nn=en(Qi,[["styles",[qi]]]);Nn.styles=[...Nn.styles,...mt.styles,...zr.styles,...jt.styles];customElements.define("kvass-contact",xi(Nn));
|
package/index.html
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="nb">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8" />
|
|
6
|
+
<link rel="icon" type="image/svg+xml" href="favicon.svg" />
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
8
|
+
<title>Kvass Lead Form</title>
|
|
9
|
+
</head>
|
|
10
|
+
|
|
11
|
+
<body>
|
|
12
|
+
<kvass-contact account-url="https://elder.kvass.test" label-subtitle="Ønsker du å motta vårt nyhetsbrev?"
|
|
13
|
+
tags="Bedriftsside" upsell references="Residential:6274d3d42850c40034c4a0b7" />
|
|
14
|
+
|
|
15
|
+
<script type="module" src="/src/contact/main.js"></script>
|
|
16
|
+
</body>
|
|
17
|
+
|
|
18
|
+
</html>
|
package/package.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@kvass/widgets",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"scripts": {
|
|
5
|
+
"dev": "vite",
|
|
6
|
+
"build": "vite build",
|
|
7
|
+
"preview": "vite preview",
|
|
8
|
+
"prepare": "husky install",
|
|
9
|
+
"semantic-release": "dotenv semantic-release"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"vue": "^3.2.25"
|
|
13
|
+
},
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"@vitejs/plugin-vue": "^2.0.0",
|
|
16
|
+
"dotenv-cli": "^5.1.0",
|
|
17
|
+
"husky": "^8.0.1",
|
|
18
|
+
"sass": "^1.51.0",
|
|
19
|
+
"semantic-release": "^19.0.2",
|
|
20
|
+
"semantic-release-cli": "^5.4.4",
|
|
21
|
+
"vite": "^2.8.0"
|
|
22
|
+
},
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "https://github.com/Kvass-App/widgets.git"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# kvass-contact
|
|
2
|
+
|
|
3
|
+
A simple, embeddable Web Component for sending leads to Kvass.
|
|
4
|
+
|
|
5
|
+
## Develop
|
|
6
|
+
|
|
7
|
+
To run in development mode, first install the neccessary packages.
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
npm install
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Then, run in development mode.
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
npm run dev
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Open `localhost:3000` in the browser of your choice, and you will see the form widget.
|
|
20
|
+
|
|
21
|
+
## Build
|
|
22
|
+
|
|
23
|
+
To build the widget for production, run `build` instead of `dev`.
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
npm run build
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
To use the widget, use the `<kvass-contact />` element as shown here.
|
|
30
|
+
|
|
31
|
+
```html
|
|
32
|
+
<kvass-contact account-url="https://example.kvass.no" />
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Props
|
|
36
|
+
|
|
37
|
+
The component has several props for easy configuration.
|
|
38
|
+
|
|
39
|
+
| Name | Type | Description | Default |
|
|
40
|
+
| --------------------- | ------- | -------------------------------------------------------------------------------- | --------------------------------------- |
|
|
41
|
+
| label-title | String | Title of the lead form | `"Meld interesse"` |
|
|
42
|
+
| label-subtitle | String | Optional subtitle shown under form title | |
|
|
43
|
+
| label-submit | String | Label for the submit button | `"Meld interesse"` |
|
|
44
|
+
| privacyUrl | String | Optional URL to privacy statement | `{accountUrl}/api/legal/privacy/tenant` |
|
|
45
|
+
| accountUrl `required` | String | Account URL where data will be sent. | |
|
|
46
|
+
| projects | String | Comma-separated list of project ids. If not defined, a selection field will show | |
|
|
47
|
+
| references `required` | String | Comma-separated list of references in {type}:{id} format | |
|
|
48
|
+
| upsell | Boolean | If `true`, shows a checkbox for upsell | `false` |
|
|
49
|
+
| tags | String | Comma-separated list of tags | |
|
|
50
|
+
|
|
51
|
+
## Styling
|
|
52
|
+
|
|
53
|
+
The widget's styles are based on CSS custom properties, and can be overwritten.
|
|
54
|
+
These are the available CSS variables.
|
|
55
|
+
|
|
56
|
+
| Name | Description | Default |
|
|
57
|
+
| ------------------------------ | ----------------------------------------------------------- | --------- |
|
|
58
|
+
| --kvass-contact-background | The form's background color | `#ffffff` |
|
|
59
|
+
| --kvass-contact-spacing | Base spacing amount. Other amounts are calculated from this | `2rem` |
|
|
60
|
+
| --kvass-contact-max-width | Max width of the form | `720px` |
|
|
61
|
+
| --kvass-contact-border-radius | Base border-radius | `4px` |
|
|
62
|
+
| --kvass-contact-border-color | Color of the borders of the form fields | `#eaeaea` |
|
|
63
|
+
| --kvass-contact-color | Base text color | `#222222` |
|
|
64
|
+
| --kvass-contact-color-inverted | Inverted text color. Used for the submit button | `#ffffff` |
|
|
65
|
+
| --kvass-contact-primary | Primary color. Used for the submit button | `#1d56d8` |
|
|
66
|
+
| --kvass-contact-error | Error color. Used for error states | `#d81d1d` |
|
|
67
|
+
| --kvass-contact-grid-columns | Amount of columns in form | `1` |
|
|
68
|
+
| --kvass-contact-disabled | Background color on disabled button | `#eaeaea` |
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
function createLead(url, data, projects) {
|
|
2
|
+
if (projects && projects instanceof Array && projects.length) return Promise.all(projects.map(p => {
|
|
3
|
+
let projectRef = { onModel: 'Project', ref: p }
|
|
4
|
+
return createLead(url, { ...data, project: p, references: [projectRef, ...data.references] })
|
|
5
|
+
}))
|
|
6
|
+
|
|
7
|
+
if (projects && !projects.length) {
|
|
8
|
+
return createContact(url, data.contact, data.comment)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
return fetch(`${url}/api/graphql`, {
|
|
12
|
+
method: 'POST',
|
|
13
|
+
headers: {
|
|
14
|
+
'Content-Type': 'application/json'
|
|
15
|
+
},
|
|
16
|
+
body: JSON.stringify({
|
|
17
|
+
query: `
|
|
18
|
+
mutation ($data: LeadCreate!) {
|
|
19
|
+
LeadCreate(data: $data) {
|
|
20
|
+
id
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
`,
|
|
24
|
+
variables: { data }
|
|
25
|
+
})
|
|
26
|
+
}).then(res => res.json())
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function createContact(url, data, comment) {
|
|
30
|
+
return fetch(`${url}/api/graphql`, {
|
|
31
|
+
method: 'POST',
|
|
32
|
+
headers: {
|
|
33
|
+
'Content-Type': 'application/json'
|
|
34
|
+
},
|
|
35
|
+
body: JSON.stringify({
|
|
36
|
+
query: `
|
|
37
|
+
mutation ($data: ContactInput!, $comment: String) {
|
|
38
|
+
ContactCreate(data: $data, comment: $comment) {
|
|
39
|
+
id
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
`,
|
|
43
|
+
variables: { data, comment }
|
|
44
|
+
})
|
|
45
|
+
}).then(res => res.json())
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function getProjects(url) {
|
|
49
|
+
return fetch(`${url}/api/graphql`, {
|
|
50
|
+
method: 'POST',
|
|
51
|
+
headers: {
|
|
52
|
+
'Content-Type': 'application/json'
|
|
53
|
+
},
|
|
54
|
+
body: JSON.stringify({
|
|
55
|
+
query: `
|
|
56
|
+
query {
|
|
57
|
+
Projects {
|
|
58
|
+
id
|
|
59
|
+
name
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
`
|
|
63
|
+
})
|
|
64
|
+
}).then(res => res.json())
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export {
|
|
68
|
+
createLead,
|
|
69
|
+
createContact,
|
|
70
|
+
getProjects
|
|
71
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
export default {
|
|
3
|
+
// disable attrs on root element
|
|
4
|
+
inheritAttrs: false,
|
|
5
|
+
}
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<script setup>
|
|
9
|
+
const emit = defineEmits(['update:modelValue'])
|
|
10
|
+
const props = defineProps({
|
|
11
|
+
modelValue: [Boolean, Array],
|
|
12
|
+
state: String,
|
|
13
|
+
label: String,
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
function onInput(ev) {
|
|
17
|
+
if (typeof props.modelValue === 'boolean')
|
|
18
|
+
return emit('update:modelValue', ev.target.checked)
|
|
19
|
+
return emit(
|
|
20
|
+
'update:modelValue',
|
|
21
|
+
ev.target.checked
|
|
22
|
+
? [...props.modelValue, props.state]
|
|
23
|
+
: props.modelValue.filter((v) => v !== props.state),
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<template>
|
|
29
|
+
<label
|
|
30
|
+
class="kvass-contact-checkbox"
|
|
31
|
+
:class="[
|
|
32
|
+
{ 'kvass-contact-checkbox--required': 'required' in $attrs },
|
|
33
|
+
$attrs.class,
|
|
34
|
+
]"
|
|
35
|
+
>
|
|
36
|
+
<input
|
|
37
|
+
class="kvass-contact-checkbox__element"
|
|
38
|
+
type="checkbox"
|
|
39
|
+
v-bind="$attrs"
|
|
40
|
+
:value="modelValue"
|
|
41
|
+
@input="onInput"
|
|
42
|
+
/>
|
|
43
|
+
<span class="kvass-contact-checkbox__label" v-html="label"></span>
|
|
44
|
+
</label>
|
|
45
|
+
</template>
|
|
46
|
+
|
|
47
|
+
<style lang="scss">
|
|
48
|
+
.kvass-contact-checkbox {
|
|
49
|
+
display: flex;
|
|
50
|
+
align-items: baseline;
|
|
51
|
+
gap: 0.5rem;
|
|
52
|
+
|
|
53
|
+
&__element {
|
|
54
|
+
margin: 0;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
&--required {
|
|
58
|
+
span:after {
|
|
59
|
+
content: '*';
|
|
60
|
+
color: var(--kvass-contact-error, var(--kvass-contact-default-error));
|
|
61
|
+
margin-left: 0.3rem;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
</style>
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
export default {
|
|
3
|
+
// disable attrs on root element
|
|
4
|
+
inheritAttrs: false,
|
|
5
|
+
}
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<script setup>
|
|
9
|
+
import { computed, ref } from 'vue'
|
|
10
|
+
|
|
11
|
+
const emit = defineEmits(['update:modelValue'])
|
|
12
|
+
const props = defineProps({
|
|
13
|
+
modelValue: [String, Array],
|
|
14
|
+
label: String,
|
|
15
|
+
type: String,
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
const component = computed(() => {
|
|
19
|
+
switch (props.type) {
|
|
20
|
+
case 'textarea':
|
|
21
|
+
return 'textarea'
|
|
22
|
+
case 'select':
|
|
23
|
+
return 'select'
|
|
24
|
+
default:
|
|
25
|
+
return 'input'
|
|
26
|
+
}
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
const focused = ref(false)
|
|
30
|
+
|
|
31
|
+
function handleInput(event) {
|
|
32
|
+
emit('update:modelValue', event.target.value)
|
|
33
|
+
focused.value = true
|
|
34
|
+
}
|
|
35
|
+
</script>
|
|
36
|
+
|
|
37
|
+
<template>
|
|
38
|
+
<label
|
|
39
|
+
class="kvass-contact-field"
|
|
40
|
+
:class="[
|
|
41
|
+
{
|
|
42
|
+
'kvass-contact-field--required': 'required' in $attrs,
|
|
43
|
+
'kvass-contact-field--focused': focused,
|
|
44
|
+
},
|
|
45
|
+
$attrs.class,
|
|
46
|
+
]"
|
|
47
|
+
:for="$attrs.id"
|
|
48
|
+
>
|
|
49
|
+
<span class="kvass-contact-field__label" v-if="label">{{ label }}</span>
|
|
50
|
+
<component
|
|
51
|
+
:is="component"
|
|
52
|
+
class="kvass-contact-field__element"
|
|
53
|
+
v-bind="$attrs"
|
|
54
|
+
@input="handleInput"
|
|
55
|
+
:value="modelValue"
|
|
56
|
+
>
|
|
57
|
+
<slot />
|
|
58
|
+
</component>
|
|
59
|
+
</label>
|
|
60
|
+
</template>
|
|
61
|
+
|
|
62
|
+
<style lang="scss">
|
|
63
|
+
.kvass-contact-field {
|
|
64
|
+
display: flex;
|
|
65
|
+
flex-direction: column;
|
|
66
|
+
gap: 0.3rem;
|
|
67
|
+
|
|
68
|
+
&__element {
|
|
69
|
+
padding: calc(
|
|
70
|
+
var(--kvass-contact-spacing, var(--kvass-contact-default-spacing)) / 2
|
|
71
|
+
);
|
|
72
|
+
border-radius: var(
|
|
73
|
+
--kvass-contact-border-radius,
|
|
74
|
+
var(--kvass-contact-default-border-radius)
|
|
75
|
+
);
|
|
76
|
+
border: 1px solid
|
|
77
|
+
var(
|
|
78
|
+
--kvass-contact-border-color,
|
|
79
|
+
var(--kvass-contact-default-border-color)
|
|
80
|
+
);
|
|
81
|
+
resize: vertical;
|
|
82
|
+
font: inherit;
|
|
83
|
+
|
|
84
|
+
&:focus-visible {
|
|
85
|
+
outline: 2px solid
|
|
86
|
+
var(--kvass-contact-color, var(--kvass-contact-default-color));
|
|
87
|
+
outline-offset: 2px;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
&--required {
|
|
92
|
+
.kvass-contact-field__label:after {
|
|
93
|
+
content: '*';
|
|
94
|
+
color: var(--kvass-contact-error, var(--kvass-contact-default-error));
|
|
95
|
+
margin-left: 0.3rem;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
&.kvass-contact-field--focused {
|
|
99
|
+
.kvass-contact-field__element:invalid {
|
|
100
|
+
border-color: var(
|
|
101
|
+
--kvass-contact-error,
|
|
102
|
+
var(--kvass-contact-default-error)
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
&--full-width {
|
|
109
|
+
grid-column-end: span
|
|
110
|
+
var(
|
|
111
|
+
--kvass-contact-grid-columns,
|
|
112
|
+
var(--kvass-contact-default-grid-columns)
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
</style>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
defineProps({
|
|
3
|
+
label: String,
|
|
4
|
+
})
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<template>
|
|
8
|
+
<fieldset class="kvass-contact-fieldset">
|
|
9
|
+
<legend class="kvass-contact-fieldset__label" v-if="label">
|
|
10
|
+
{{ label }}
|
|
11
|
+
</legend>
|
|
12
|
+
<slot />
|
|
13
|
+
</fieldset>
|
|
14
|
+
</template>
|
|
15
|
+
|
|
16
|
+
<style lang="scss">
|
|
17
|
+
.kvass-contact-fieldset {
|
|
18
|
+
position: relative;
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-direction: column;
|
|
21
|
+
gap: calc(
|
|
22
|
+
var(--kvass-contact-spacing, var(--kvass-contact-default-spacing)) / 4
|
|
23
|
+
);
|
|
24
|
+
margin: calc(
|
|
25
|
+
var(--kvass-contact-spacing, var(--kvass-contact-default-spacing)) / 1.5
|
|
26
|
+
)
|
|
27
|
+
0 0 0;
|
|
28
|
+
padding: calc(
|
|
29
|
+
var(--kvass-contact-spacing, var(--kvass-contact-default-spacing)) / 2
|
|
30
|
+
);
|
|
31
|
+
border-radius: var(
|
|
32
|
+
--kvass-contact-border-radius,
|
|
33
|
+
var(--kvass-contact-default-border-radius)
|
|
34
|
+
);
|
|
35
|
+
border: 1px solid
|
|
36
|
+
var(--kvass-contact-border-color, var(--kvass-contact-default-border-color));
|
|
37
|
+
font: inherit;
|
|
38
|
+
|
|
39
|
+
&:focus-visible {
|
|
40
|
+
outline: 2px solid
|
|
41
|
+
var(--kvass-contact-color, var(--kvass-contact-default-color));
|
|
42
|
+
outline-offset: 2px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&__label {
|
|
46
|
+
margin: 0;
|
|
47
|
+
padding: 0;
|
|
48
|
+
position: absolute;
|
|
49
|
+
top: -1.4rem;
|
|
50
|
+
left: 0;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
</style>
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import {
|
|
3
|
+
onMounted,
|
|
4
|
+
reactive,
|
|
5
|
+
ref,
|
|
6
|
+
watch,
|
|
7
|
+
computed,
|
|
8
|
+
useAttrs,
|
|
9
|
+
isReactive,
|
|
10
|
+
} from 'vue'
|
|
11
|
+
import { createLead, getProjects, createContact } from '../api'
|
|
12
|
+
import Field from './Field.ce.vue'
|
|
13
|
+
import Fieldset from './Fieldset.ce.vue'
|
|
14
|
+
import Checkbox from './Checkbox.ce.vue'
|
|
15
|
+
|
|
16
|
+
const Labels = {
|
|
17
|
+
nb: {
|
|
18
|
+
title: 'Meld interesse',
|
|
19
|
+
submit: 'Meld interesse',
|
|
20
|
+
name: 'Navn',
|
|
21
|
+
email: 'E-post',
|
|
22
|
+
phone: 'Telefonnummer',
|
|
23
|
+
message: 'Melding',
|
|
24
|
+
projects: 'Hvilke prosjekter er du interessert i?',
|
|
25
|
+
upsell: 'Jeg ønsker informasjon om lignende prosjekter',
|
|
26
|
+
privacy:
|
|
27
|
+
'Jeg ønsker å bli kontaktet i samtykke med [personvernerklæringen]',
|
|
28
|
+
success: 'Takk for interessen!',
|
|
29
|
+
},
|
|
30
|
+
en: {
|
|
31
|
+
title: 'Contact agent',
|
|
32
|
+
submit: 'Submit',
|
|
33
|
+
name: 'Name',
|
|
34
|
+
email: 'Email',
|
|
35
|
+
phone: 'Phone',
|
|
36
|
+
message: 'Message',
|
|
37
|
+
projects: 'Which projects are you interested in?',
|
|
38
|
+
upsell: 'I want to know about other similar projects',
|
|
39
|
+
privacy: 'I agree to the [privacy policy]',
|
|
40
|
+
success: 'Thank you for your interest',
|
|
41
|
+
},
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const attrs = useAttrs()
|
|
45
|
+
|
|
46
|
+
const props = defineProps({
|
|
47
|
+
lang: {
|
|
48
|
+
type: String,
|
|
49
|
+
default: () => {
|
|
50
|
+
return document.documentElement.getAttribute('lang') || 'nb'
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
privacyUrl: {
|
|
54
|
+
type: String,
|
|
55
|
+
},
|
|
56
|
+
upsell: {
|
|
57
|
+
type: Boolean,
|
|
58
|
+
default: false,
|
|
59
|
+
},
|
|
60
|
+
accountUrl: {
|
|
61
|
+
type: String,
|
|
62
|
+
required: true,
|
|
63
|
+
},
|
|
64
|
+
projects: String,
|
|
65
|
+
references: String,
|
|
66
|
+
tags: String,
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
const privacyUrlComp = computed(() =>
|
|
70
|
+
props.privacyUrl
|
|
71
|
+
? props.privacyUrl
|
|
72
|
+
: `${props.accountUrl}/api/legal/privacy/tenant`,
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
const initialForm = {
|
|
76
|
+
contact: {
|
|
77
|
+
name: null,
|
|
78
|
+
email: null,
|
|
79
|
+
phone: null,
|
|
80
|
+
upsell: false,
|
|
81
|
+
tags: props.tags.split(','),
|
|
82
|
+
},
|
|
83
|
+
comment: null,
|
|
84
|
+
}
|
|
85
|
+
const form = reactive(structuredClone(initialForm))
|
|
86
|
+
|
|
87
|
+
const submitted = ref(false)
|
|
88
|
+
const fetchedProjects = ref([])
|
|
89
|
+
const selectedProjects = ref([])
|
|
90
|
+
const references = ref([])
|
|
91
|
+
|
|
92
|
+
const Capitalize = (v) => v.charAt(0).toUpperCase() + v.substring(1)
|
|
93
|
+
|
|
94
|
+
function getLabel(key) {
|
|
95
|
+
let label = attrs['label' + Capitalize(key)] || Labels[props.lang][key]
|
|
96
|
+
if (key === 'privacy')
|
|
97
|
+
return label.replace(/\[(.+)\]/, `<a href="${privacyUrlComp.value}">$1</a>`)
|
|
98
|
+
return label
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function resetForm() {
|
|
102
|
+
Object.assign(form, structuredClone(initialForm))
|
|
103
|
+
selectedProjects.value = []
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function submit() {
|
|
107
|
+
createLead(
|
|
108
|
+
props.accountUrl,
|
|
109
|
+
{
|
|
110
|
+
...form,
|
|
111
|
+
references: references.value,
|
|
112
|
+
},
|
|
113
|
+
selectedProjects.value,
|
|
114
|
+
).then(() => {
|
|
115
|
+
submitted.value = true
|
|
116
|
+
resetForm()
|
|
117
|
+
})
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function setReferences() {
|
|
121
|
+
const refs = props.references.split(',').map((r) => {
|
|
122
|
+
const [onModel, ref] = r.split(':')
|
|
123
|
+
return {
|
|
124
|
+
onModel,
|
|
125
|
+
ref,
|
|
126
|
+
}
|
|
127
|
+
})
|
|
128
|
+
references.value = refs
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
onMounted(() => {
|
|
132
|
+
if (!props.projects) {
|
|
133
|
+
getProjects(props.accountUrl).then(
|
|
134
|
+
(data) => (fetchedProjects.value = data.data.Projects),
|
|
135
|
+
)
|
|
136
|
+
} else {
|
|
137
|
+
props.projects.split(',').forEach((p) => selectedProjects.value.push(p))
|
|
138
|
+
}
|
|
139
|
+
setReferences()
|
|
140
|
+
})
|
|
141
|
+
</script>
|
|
142
|
+
|
|
143
|
+
<template>
|
|
144
|
+
<form class="kvass-contact" @submit.prevent="submit">
|
|
145
|
+
<div class="kvass-contact__header">
|
|
146
|
+
<h2 class="kvass-contact__title">{{ getLabel('title') }}</h2>
|
|
147
|
+
<p class="kvass-contact__subtitle" v-if="getLabel('subtitle')">
|
|
148
|
+
{{ getLabel('subtitle') }}
|
|
149
|
+
</p>
|
|
150
|
+
</div>
|
|
151
|
+
|
|
152
|
+
<div class="kvass-contact__fields">
|
|
153
|
+
<Field
|
|
154
|
+
:label="getLabel('name')"
|
|
155
|
+
type="text"
|
|
156
|
+
required
|
|
157
|
+
v-model="form.contact.name"
|
|
158
|
+
/>
|
|
159
|
+
<Field
|
|
160
|
+
:label="getLabel('email')"
|
|
161
|
+
type="email"
|
|
162
|
+
pattern="\b[\w\.-]+@[\w\.-]+\.\w{2,4}"
|
|
163
|
+
required
|
|
164
|
+
v-model="form.contact.email"
|
|
165
|
+
/>
|
|
166
|
+
<Field
|
|
167
|
+
:label="getLabel('phone')"
|
|
168
|
+
type="tel"
|
|
169
|
+
v-model="form.contact.phone"
|
|
170
|
+
/>
|
|
171
|
+
<Fieldset :label="getLabel('projects')" v-if="!projects">
|
|
172
|
+
<Checkbox
|
|
173
|
+
v-for="project in fetchedProjects"
|
|
174
|
+
:key="project.id"
|
|
175
|
+
:state="project.id"
|
|
176
|
+
:label="project.name"
|
|
177
|
+
v-model="selectedProjects"
|
|
178
|
+
/>
|
|
179
|
+
</Fieldset>
|
|
180
|
+
<Field
|
|
181
|
+
:label="getLabel('message')"
|
|
182
|
+
type="textarea"
|
|
183
|
+
rows="5"
|
|
184
|
+
class="kvass-contact-field--full-width"
|
|
185
|
+
v-model="form.comment"
|
|
186
|
+
/>
|
|
187
|
+
<Checkbox
|
|
188
|
+
v-if="upsell"
|
|
189
|
+
:label="getLabel('upsell')"
|
|
190
|
+
class="kvass-contact-field--full-width"
|
|
191
|
+
v-model="form.contact.upsell"
|
|
192
|
+
/>
|
|
193
|
+
<Checkbox
|
|
194
|
+
:label="getLabel('privacy')"
|
|
195
|
+
class="kvass-contact-field--full-width"
|
|
196
|
+
required
|
|
197
|
+
/>
|
|
198
|
+
</div>
|
|
199
|
+
<button class="kvass-contact__submit" type="submit" :disabled="submitted">
|
|
200
|
+
{{ submitted ? getLabel('success') : getLabel('submit') }}
|
|
201
|
+
</button>
|
|
202
|
+
</form>
|
|
203
|
+
</template>
|
|
204
|
+
|
|
205
|
+
<style lang="scss">
|
|
206
|
+
.kvass-contact {
|
|
207
|
+
// default variables
|
|
208
|
+
--kvass-contact-default-background: #ffffff;
|
|
209
|
+
--kvass-contact-default-spacing: 2rem;
|
|
210
|
+
--kvass-contact-default-border-radius: 4px;
|
|
211
|
+
--kvass-contact-default-border-color: #eaeaea;
|
|
212
|
+
--kvass-contact-default-color: #222222;
|
|
213
|
+
--kvass-contact-default-color-inverted: #ffffff;
|
|
214
|
+
--kvass-contact-default-max-width: 720px;
|
|
215
|
+
--kvass-contact-default-primary: #1d56d8;
|
|
216
|
+
--kvass-contact-default-error: #d81d1d;
|
|
217
|
+
--kvass-contact-default-grid-columns: 1;
|
|
218
|
+
--kvass-contact-default-disabled: #eaeaea;
|
|
219
|
+
|
|
220
|
+
background-color: var(
|
|
221
|
+
--kvass-contact-background,
|
|
222
|
+
var(--kvass-contact-default-background)
|
|
223
|
+
);
|
|
224
|
+
padding: var(--kvass-contact-spacing, var(--kvass-contact-default-spacing));
|
|
225
|
+
border-radius: var(
|
|
226
|
+
--kvass-contact-border-radius,
|
|
227
|
+
var(--kvass-contact-default-border-radius)
|
|
228
|
+
);
|
|
229
|
+
color: var(--kvass-contact-color, var(--kvass-contact-default-color));
|
|
230
|
+
max-width: var(
|
|
231
|
+
--kvass-contact-max-width,
|
|
232
|
+
var(--kvass-contact-default-max-width)
|
|
233
|
+
);
|
|
234
|
+
font: inherit;
|
|
235
|
+
accent-color: var(
|
|
236
|
+
--kvass-contact-primary,
|
|
237
|
+
var(--kvass-contact-default-primary)
|
|
238
|
+
);
|
|
239
|
+
|
|
240
|
+
display: flex;
|
|
241
|
+
flex-direction: column;
|
|
242
|
+
gap: var(--kvass-contact-spacing, var(--kvass-contact-default-spacing));
|
|
243
|
+
|
|
244
|
+
@media (max-width: 600px) {
|
|
245
|
+
--kvass-contact-grid-columns: 1;
|
|
246
|
+
padding: calc(
|
|
247
|
+
var(--kvass-contact-spacing, var(--kvass-contact-default-spacing)) / 2
|
|
248
|
+
);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
* {
|
|
252
|
+
&:focus-visible {
|
|
253
|
+
outline: 2px solid
|
|
254
|
+
var(--kvass-contact-color, var(--kvass-contact-default-color));
|
|
255
|
+
outline-offset: 2px;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
&__header {
|
|
260
|
+
display: flex;
|
|
261
|
+
flex-direction: column;
|
|
262
|
+
gap: 0.5rem;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
&__fields {
|
|
266
|
+
display: grid;
|
|
267
|
+
grid-template-columns: repeat(
|
|
268
|
+
var(
|
|
269
|
+
--kvass-contact-grid-columns,
|
|
270
|
+
var(--kvass-contact-default-grid-columns)
|
|
271
|
+
),
|
|
272
|
+
1fr
|
|
273
|
+
);
|
|
274
|
+
gap: calc(
|
|
275
|
+
var(--kvass-contact-spacing, var(--kvass-contact-default-spacing)) / 2
|
|
276
|
+
);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
&__title {
|
|
280
|
+
font-size: 2rem;
|
|
281
|
+
margin: 0;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
&__subtitle {
|
|
285
|
+
opacity: 0.7;
|
|
286
|
+
margin: 0;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
&__submit {
|
|
290
|
+
padding: calc(
|
|
291
|
+
var(--kvass-contact-spacing, var(--kvass-contact-default-spacing)) / 2
|
|
292
|
+
);
|
|
293
|
+
border-radius: var(
|
|
294
|
+
--kvass-contact-border-radius,
|
|
295
|
+
var(--kvass-contact-default-border-radius)
|
|
296
|
+
);
|
|
297
|
+
background-color: var(
|
|
298
|
+
--kvass-contact-primary,
|
|
299
|
+
var(--kvass-contact-default-primary)
|
|
300
|
+
);
|
|
301
|
+
color: var(
|
|
302
|
+
--kvass-contact-color-inverted,
|
|
303
|
+
var(--kvass-contact-default-color-inverted)
|
|
304
|
+
);
|
|
305
|
+
border: none;
|
|
306
|
+
font: inherit;
|
|
307
|
+
width: 100%;
|
|
308
|
+
|
|
309
|
+
&:disabled {
|
|
310
|
+
background-color: var(
|
|
311
|
+
--kvass-contact-disabled,
|
|
312
|
+
var(--kvass-contact-default-disabled)
|
|
313
|
+
);
|
|
314
|
+
color: var(--kvass-contact-color, var(--kvass-contact-default-color));
|
|
315
|
+
cursor: not-allowed;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
</style>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { defineCustomElement } from 'vue';
|
|
2
|
+
import Checkbox from './components/Checkbox.ce.vue';
|
|
3
|
+
import Field from './components/Field.ce.vue';
|
|
4
|
+
import Fieldset from './components/Fieldset.ce.vue';
|
|
5
|
+
import Form from './components/Form.ce.vue';
|
|
6
|
+
|
|
7
|
+
Form.styles = [...Form.styles, ...Field.styles, ...Fieldset.styles, ...Checkbox.styles]
|
|
8
|
+
|
|
9
|
+
customElements.define('kvass-contact', defineCustomElement(Form));
|
package/vite.config.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { fileURLToPath } from 'url'
|
|
2
|
+
import { defineConfig } from 'vite'
|
|
3
|
+
import vue from '@vitejs/plugin-vue'
|
|
4
|
+
|
|
5
|
+
// https://vitejs.dev/config/
|
|
6
|
+
export default defineConfig({
|
|
7
|
+
plugins: [vue({ customElement: true })],
|
|
8
|
+
build: {
|
|
9
|
+
rollupOptions: {
|
|
10
|
+
output: {
|
|
11
|
+
manualChunks: false,
|
|
12
|
+
entryFileNames: `[name].js`,
|
|
13
|
+
chunkFileNames: `[name].js`,
|
|
14
|
+
assetFileNames: `[name].[ext]`
|
|
15
|
+
},
|
|
16
|
+
input: {
|
|
17
|
+
contact: fileURLToPath(new URL('./src/contact/main.js', import.meta.url))
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
server: {
|
|
22
|
+
port: 3001
|
|
23
|
+
}
|
|
24
|
+
})
|