@shwfed/config 2.9.7 → 2.9.9

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.
Files changed (73) hide show
  1. package/dist/mcp.mjs +1054 -855
  2. package/dist/module.json +1 -1
  3. package/dist/preview/assets/{FieldGroup.vue_vue_type_script_setup_true_lang-tkU7rYrs.js → FieldGroup.vue_vue_type_script_setup_true_lang-CdbT3cSj.js} +1 -1
  4. package/dist/preview/assets/{badge-C55P2V8D.js → badge-DL-wtgr8.js} +1 -1
  5. package/dist/preview/assets/{config-DeaHg7ps.js → config-80OJWswM.js} +1 -1
  6. package/dist/preview/assets/{config-D0j4njOQ.js → config-B8F7X1oF.js} +1 -1
  7. package/dist/preview/assets/{config-rL7m78ZC.js → config-B9BcmOZt.js} +1 -1
  8. package/dist/preview/assets/{config-Bc2N2jlD.js → config-C-Ta4ALL.js} +1 -1
  9. package/dist/preview/assets/{config-DqibnZH4.js → config-C8R7tsmC.js} +1 -1
  10. package/dist/preview/assets/{config-CnxzerC5.js → config-CoObmLL2.js} +1 -1
  11. package/dist/preview/assets/{config-Bu1S_DR5.js → config-DBQ-1J66.js} +1 -1
  12. package/dist/preview/assets/{config-CH2QpakU.js → config-DVk8b1Qf.js} +1 -1
  13. package/dist/preview/assets/{config-DzKcQKJj.js → config-DjsQoLiy.js} +1 -1
  14. package/dist/preview/assets/{config-j1oKH3Ci.js → config-RmdB0dwp.js} +1 -1
  15. package/dist/preview/assets/{config-B3-xqMew.js → config-h_hDvpHt.js} +1 -1
  16. package/dist/preview/assets/{definition.vue_vue_type_script_setup_true_lang-G748uLwi.js → definition.vue_vue_type_script_setup_true_lang-SX94Z692.js} +1 -1
  17. package/dist/preview/assets/index-BIwwDhfa.js +1 -0
  18. package/dist/preview/assets/index-C1h9lV52.css +1 -0
  19. package/dist/preview/assets/index-CsN0336H.js +717 -0
  20. package/dist/preview/assets/{index-dIh1Jn4U.js → index-Df0XE7Lz.js} +1 -1
  21. package/dist/preview/assets/{item-BCWcrKaL.js → item-B9XcOWjy.js} +1 -1
  22. package/dist/preview/assets/{runtime-CBg0VVCJ.js → runtime-BBsXfAZm.js} +1 -1
  23. package/dist/preview/assets/{runtime-D3LGPlv3.js → runtime-BHlUDfbv.js} +1 -1
  24. package/dist/preview/assets/{runtime-BTFesnrJ.js → runtime-BrwIgXY3.js} +1 -1
  25. package/dist/preview/assets/{runtime-zoq6YaMz.js → runtime-C--WPQ3o.js} +1 -1
  26. package/dist/preview/assets/{runtime-BsqCaddm.js → runtime-C0yBdMlV.js} +1 -1
  27. package/dist/preview/assets/{runtime-C-KLJ71q.js → runtime-C6uebSDU.js} +1 -1
  28. package/dist/preview/assets/{runtime-DZiqhnCm.js → runtime-DU0iHs9-.js} +1 -1
  29. package/dist/preview/assets/{runtime-bRCsEM7S.js → runtime-Dqa4phvv.js} +1 -1
  30. package/dist/preview/assets/{runtime-C5-cN3M1.js → runtime-Dr-MmEyE.js} +1 -1
  31. package/dist/preview/assets/{runtime-DO8ov3J6.js → runtime-v_nJoD5I.js} +1 -1
  32. package/dist/preview/index.html +2 -2
  33. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json/schema.d.ts +1 -1
  34. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json/schema.js +2 -2
  35. package/dist/runtime/components/actions/buttons/2026-06-08/com.shwfed.actions.button.http.request.json.batch/schema.d.ts +1 -1
  36. package/dist/runtime/components/actions/buttons/2026-06-08/com.shwfed.actions.button.http.request.json.batch/schema.js +1 -1
  37. package/dist/runtime/components/block-layout-editor/index.vue +98 -3
  38. package/dist/runtime/components/config/footer.vue +22 -20
  39. package/dist/runtime/components/config/use-editor.js +5 -9
  40. package/dist/runtime/components/config/utils/validation-error.d.ts +1 -0
  41. package/dist/runtime/components/config/utils/validation-error.js +34 -0
  42. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.d.vue.ts +4 -4
  43. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.vue.d.ts +4 -4
  44. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.d.vue.ts +6 -6
  45. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.vue.d.ts +6 -6
  46. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.d.vue.ts +2 -2
  47. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.vue.d.ts +2 -2
  48. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.d.vue.ts +4 -4
  49. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.vue.d.ts +4 -4
  50. package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/config.d.vue.ts +155 -0
  51. package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/config.vue +918 -0
  52. package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/config.vue.d.ts +155 -0
  53. package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/runtime.d.vue.ts +8 -0
  54. package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/runtime.vue +482 -0
  55. package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/runtime.vue.d.ts +8 -0
  56. package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/schema.d.ts +126 -0
  57. package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/schema.js +178 -0
  58. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.markdown/runtime.vue +1 -1
  59. package/dist/runtime/components/ui/date-picker/DatePickerInput.d.vue.ts +1 -1
  60. package/dist/runtime/components/ui/date-picker/DatePickerInput.vue.d.ts +1 -1
  61. package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.d.vue.ts +1 -1
  62. package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.vue.d.ts +1 -1
  63. package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.d.vue.ts +1 -1
  64. package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.vue.d.ts +1 -1
  65. package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.d.vue.ts +2 -2
  66. package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.vue.d.ts +2 -2
  67. package/dist/runtime/vendor/cel-js/CLAUDE.md +1 -1
  68. package/dist/runtime/vendor/cel-js/PROMPT.md +2 -2
  69. package/dist/runtime/vendor/cel-js/lib/http-builder.js +13 -3
  70. package/package.json +1 -1
  71. package/dist/preview/assets/index-C16exop7.js +0 -717
  72. package/dist/preview/assets/index-CSm6dB4o.js +0 -1
  73. package/dist/preview/assets/index-vPcvbp7e.css +0 -1
@@ -1 +1 @@
1
- import{d as H,N as et,O as it,o as nt,P as st,Q as at,e as D,y as A,z as j,r as rt,R as ot,S as z,T as lt,v as ct,U as W,V as ht}from"./index-C16exop7.js";const dt=String.raw,pt=(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0})(),ut=typeof CSS<"u"&&CSS.supports&&CSS.supports("line-height","mod(1,1)"),k=typeof matchMedia<"u"?matchMedia("(prefers-reduced-motion: reduce)"):null,C="--_number-flow-d-opacity",B="--_number-flow-d-width",S="--_number-flow-dx",L="--_number-flow-d",mt=(()=>{try{return CSS.registerProperty({name:C,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:S,syntax:"<length>",inherits:!0,initialValue:"0px"}),CSS.registerProperty({name:B,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:L,syntax:"<number>",inherits:!0,initialValue:"0"}),!0}catch{return!1}})(),U="round(nearest, calc(var(--number-flow-mask-height, 0.25em) / 2), 1px)",v=`calc(${U} * 2)`,R="var(--number-flow-mask-width, 0.5em)",y=`calc(${R} / var(--scale-x))`,$="#000 0, transparent 71%",ft=dt`:host{display:inline-block;direction:ltr;white-space:nowrap;isolation:isolate;line-height:1}.number,.number__inner{display:inline-block;transform-origin:left top}:host([data-will-change]) :is(.number,.number__inner,.section,.digit,.digit__num,.symbol){will-change:transform}.number{--scale-x:calc(1 + var(${B}) / var(--width));transform:translateX(var(${S})) scaleX(var(--scale-x));margin:0 calc(-1 * ${R});position:relative;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 ${y},#000 calc(100% - ${y}),transparent ),linear-gradient(to bottom,transparent 0,#000 ${v},#000 calc(100% - ${v}),transparent 100% ),radial-gradient(at bottom right,${$}),radial-gradient(at bottom left,${$}),radial-gradient(at top left,${$}),radial-gradient(at top right,${$});-webkit-mask-size:100% calc(100% - ${v} * 2),calc(100% - ${y} * 2) 100%,${y} ${v},${y} ${v},${y} ${v},${y} ${v};-webkit-mask-position:center,center,top left,top right,bottom right,bottom left;-webkit-mask-repeat:no-repeat}.number__inner{padding:${U} ${R};transform:scaleX(calc(1 / var(--scale-x))) translateX(calc(-1 * var(${S})))}:host > :not(.number){z-index:5}.section,.symbol{display:inline-block;position:relative;isolation:isolate}.section::after{content:'\200b';display:inline-block}.section--justify-left{transform-origin:center left}.section--justify-right{transform-origin:center right}.section > [inert],.symbol > [inert]{margin:0 !important;position:absolute !important;z-index:-1}.digit{display:inline-block;position:relative;--c:var(--current) + var(${L})}.digit__num,.number .section::after{padding:${U} 0}.digit__num{display:inline-block;--offset-raw:mod(var(--length) + var(--n) - mod(var(--c),var(--length)),var(--length));--offset:calc( var(--offset-raw) - var(--length) * round(down,var(--offset-raw) / (var(--length) / 2),1) );--y:clamp(-100%,var(--offset) * 100%,100%);transform:translateY(var(--y))}.digit__num[inert]{position:absolute;top:0;left:50%;transform:translateX(-50%) translateY(var(--y))}.digit:not(.is-spinning) .digit__num[inert]{display:none}.symbol__value{display:inline-block;mix-blend-mode:plus-lighter;white-space:pre}.section--justify-left .symbol > [inert]{left:0}.section--justify-right .symbol > [inert]{right:0}.animate-presence{opacity:calc(1 + var(${C}))}`,gt=HTMLElement,vt=(s,t)=>s==null?t:t==null?s:Math.max(s,t),P=new WeakMap,jt={onUpdate(s,t,e){if(P.set(e,void 0),!e.computedTrend)return;const i=t.integer.concat(t.fraction).filter(o=>o.type==="integer"||o.type==="fraction"),n=s.integer.concat(s.fraction).filter(o=>o.type==="integer"||o.type==="fraction"),r=i.find(o=>!n.find(c=>c.pos===o.pos&&c.value===o.value)),a=n.find(o=>!i.find(c=>o.pos===c.pos&&o.value===c.value));P.set(e,vt(r?.pos,a?.pos))},getDelta(s,t,e){const i=s-t,n=P.get(e.flow);if(!i&&n!=null&&n>=e.pos)return e.length*e.flow.computedTrend}},g=(s,t,e)=>{const i=document.createElement(s),[n,r]=Array.isArray(t)?[void 0,t]:[t,e];return n&&Object.assign(i,n),r?.forEach(a=>i.appendChild(a)),i},yt=(s,t)=>{var e;return t==="left"?s.offsetLeft:(((e=s.offsetParent instanceof HTMLElement?s.offsetParent:null)==null?void 0:e.offsetWidth)??0)-s.offsetWidth-s.offsetLeft},wt=s=>s.offsetWidth>0&&s.offsetHeight>0,_t=(s,t)=>{!customElements.get(s)&&customElements.define(s,t)};function bt(s,t,{reverse:e=!1}={}){const i=s.length;for(let n=e?i-1:0;e?n>=0:n<i;e?n--:n++)t(s[n],n)}function $t(s,t,e,i){const n=t.formatToParts(s);e&&n.unshift({type:"prefix",value:e}),i&&n.push({type:"suffix",value:i});const r=[],a=[],o=[],c=[],l={},d=p=>`${p}:${l[p]=(l[p]??-1)+1}`;let m="",_=!1,b=!1;for(const p of n){m+=p.value;const h=p.type==="minusSign"||p.type==="plusSign"?"sign":p.type;h==="integer"?(_=!0,a.push(...p.value.split("").map(T=>({type:h,value:parseInt(T)})))):h==="group"?a.push({type:h,value:p.value}):h==="decimal"?(b=!0,o.push({type:h,value:p.value,key:d(h)})):h==="fraction"?o.push(...p.value.split("").map(T=>({type:h,value:parseInt(T),key:d(h),pos:-1-l[h]}))):(_||b?c:r).push({type:h,value:p.value,key:d(h)})}const F=[];for(let p=a.length-1;p>=0;p--){const h=a[p];F.unshift(h.type==="integer"?{...h,key:d(h.type),pos:l[h.type]}:{...h,key:d(h.type)})}return{pre:r,integer:F,fraction:o,post:c,valueAsString:m,value:typeof s=="string"?parseFloat(s):s}}const Y=ut&&pt&&mt;let u=class extends gt{constructor(){super(),this.created=!1,this.batched=!1;const{animated:t,...e}=this.constructor.defaultProps;this._animated=this.computedAnimated=t,Object.assign(this,e)}get animated(){return this._animated}set animated(t){var e;this.animated!==t&&(this._animated=t,(e=this.shadowRoot)==null||e.getAnimations().forEach(i=>i.finish()))}set data(t){var e,i;if(t==null)return;const{pre:n,integer:r,fraction:a,post:o,value:c}=t;if(this.created){const l=this._data;this._data=t,this.computedTrend=typeof this.trend=="function"?this.trend(l.value,c):this.trend,this.computedAnimated=Y&&this._animated&&(!this.respectMotionPreference||!((e=k)!=null&&e.matches))&&wt(this)&&this.ownerDocument.visibilityState==="visible",(i=this.plugins)==null||i.forEach(d=>{var m;return(m=d.onUpdate)==null?void 0:m.call(d,t,l,this)}),this.batched||this.willUpdate(),this._pre.update(n),this._num.update({integer:r,fraction:a}),this._post.update(o),this.batched||this.didUpdate()}else{this._data=t,this.attachShadow({mode:"open"});try{this._internals??(this._internals=this.attachInternals()),this._internals.role="img"}catch{}const l=document.createElement("style");this.nonce&&(l.nonce=this.nonce),l.textContent=ft,this.shadowRoot.appendChild(l),this._pre=new O(this,n,{justify:"right",part:"left"}),this.shadowRoot.appendChild(this._pre.el),this._num=new xt(this,r,a),this.shadowRoot.appendChild(this._num.el),this._post=new O(this,o,{justify:"left",part:"right"}),this.shadowRoot.appendChild(this._post.el),this.created=!0}try{this._internals.ariaLabel=t.valueAsString}catch{}}willUpdate(){this._pre.willUpdate(),this._num.willUpdate(),this._post.willUpdate()}didUpdate(){if(!this.computedAnimated)return;this._abortAnimationsFinish?this._abortAnimationsFinish.abort():this.dispatchEvent(new Event("animationsstart")),this._pre.didUpdate(),this._num.didUpdate(),this._post.didUpdate();const t=new AbortController;Promise.all(this.shadowRoot.getAnimations().map(e=>e.finished)).then(()=>{t.signal.aborted||(this.dispatchEvent(new Event("animationsfinish")),this._abortAnimationsFinish=void 0)}),this._abortAnimationsFinish=t}};u.defaultProps={transformTiming:{duration:900,easing:"linear(0,.005,.019,.039,.066,.096,.129,.165,.202,.24,.278,.316,.354,.39,.426,.461,.494,.526,.557,.586,.614,.64,.665,.689,.711,.731,.751,.769,.786,.802,.817,.831,.844,.856,.867,.877,.887,.896,.904,.912,.919,.925,.931,.937,.942,.947,.951,.955,.959,.962,.965,.968,.971,.973,.976,.978,.98,.981,.983,.984,.986,.987,.988,.989,.99,.991,.992,.992,.993,.994,.994,.995,.995,.996,.996,.9963,.9967,.9969,.9972,.9975,.9977,.9979,.9981,.9982,.9984,.9985,.9987,.9988,.9989,1)"},spinTiming:void 0,opacityTiming:{duration:450,easing:"ease-out"},animated:!0,trend:(s,t)=>Math.sign(t-s),respectMotionPreference:!0,plugins:void 0,digits:void 0};class xt{constructor(t,e,i,{className:n,...r}={}){this.flow=t,this._integer=new I(t,e,{justify:"right",part:"integer"}),this._fraction=new I(t,i,{justify:"left",part:"fraction"}),this._inner=g("span",{className:"number__inner"},[this._integer.el,this._fraction.el]),this.el=g("span",{...r,part:"number",className:`number ${n??""}`},[this._inner])}willUpdate(){this._prevWidth=this.el.offsetWidth,this._prevLeft=this.el.getBoundingClientRect().left,this._integer.willUpdate(),this._fraction.willUpdate()}update({integer:t,fraction:e}){this._integer.update(t),this._fraction.update(e)}didUpdate(){const t=this.el.getBoundingClientRect();this._integer.didUpdate(),this._fraction.didUpdate();const e=this._prevLeft-t.left,i=this.el.offsetWidth,n=this._prevWidth-i;this.el.style.setProperty("--width",String(i)),this.el.animate({[S]:[`${e}px`,"0px"],[B]:[n,0]},{...this.flow.transformTiming,composite:"accumulate"})}}let G=class{constructor(t,e,{justify:i,className:n,...r},a){this.flow=t,this.children=new Map,this.onCharRemove=c=>()=>{this.children.delete(c)},this.justify=i;const o=e.map(c=>this.addChar(c).el);this.el=g("span",{...r,className:`section section--justify-${i} ${n??""}`},a?a(o):o)}addChar(t,{startDigitsAtZero:e=!1,...i}={}){const n=t.type==="integer"||t.type==="fraction"?new q(this,t.type,e?0:t.value,t.pos,{...i,onRemove:this.onCharRemove(t.key)}):new kt(this,t.type,t.value,{...i,onRemove:this.onCharRemove(t.key)});return this.children.set(t.key,n),n}unpop(t){t.el.removeAttribute("inert"),t.el.style.top="",t.el.style[this.justify]=""}pop(t){t.forEach(e=>{e.el.style.top=`${e.el.offsetTop}px`,e.el.style[this.justify]=`${yt(e.el,this.justify)}px`}),t.forEach(e=>{e.el.setAttribute("inert",""),e.present=!1})}addNewAndUpdateExisting(t){const e=new Map,i=new Map,n=this.justify==="left",r=n?"prepend":"append";if(bt(t,a=>{let o;this.children.has(a.key)?(o=this.children.get(a.key),i.set(a,o),this.unpop(o),o.present=!0):(o=this.addChar(a,{startDigitsAtZero:!0,animateIn:!0}),e.set(a,o)),this.el[r](o.el)},{reverse:n}),this.flow.computedAnimated){const a=this.el.getBoundingClientRect();e.forEach(o=>{o.willUpdate(a)})}e.forEach((a,o)=>{a.update(o.value)}),i.forEach((a,o)=>{a.update(o.value)})}willUpdate(){const t=this.el.getBoundingClientRect();this._prevOffset=t[this.justify],this.children.forEach(e=>e.willUpdate(t))}didUpdate(){const t=this.el.getBoundingClientRect();this.children.forEach(n=>n.didUpdate(t));const e=t[this.justify],i=this._prevOffset-e;i&&this.children.size&&this.el.animate({transform:[`translateX(${i}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"})}};class I extends G{update(t){const e=new Map;this.children.forEach((i,n)=>{t.find(r=>r.key===n)||e.set(n,i),this.unpop(i)}),this.addNewAndUpdateExisting(t),e.forEach(i=>{i instanceof q&&i.update(0)}),this.pop(e)}}class O extends G{update(t){const e=new Map;this.children.forEach((i,n)=>{t.find(r=>r.key===n)||e.set(n,i)}),this.pop(e),this.addNewAndUpdateExisting(t)}}class M{constructor(t,e,{onRemove:i,animateIn:n=!1}={}){this.flow=t,this.el=e,this._present=!0,this._remove=()=>{var r;this.el.remove(),(r=this._onRemove)==null||r.call(this)},this.el.classList.add("animate-presence"),this.flow.computedAnimated&&n&&this.el.animate({[C]:[-.9999,0]},{...this.flow.opacityTiming,composite:"accumulate"}),this._onRemove=i}get present(){return this._present}set present(t){if(this._present!==t){if(this._present=t,t?this.el.removeAttribute("inert"):this.el.setAttribute("inert",""),!this.flow.computedAnimated){t||this._remove();return}this.el.style.setProperty("--_number-flow-d-opacity",t?"0":"-.999"),this.el.animate({[C]:t?[-.9999,0]:[.999,0]},{...this.flow.opacityTiming,composite:"accumulate"}),t?this.flow.removeEventListener("animationsfinish",this._remove):this.flow.addEventListener("animationsfinish",this._remove,{once:!0})}}}class Z extends M{constructor(t,e,i,n){super(t.flow,i,n),this.section=t,this.value=e,this.el=i}}class q extends Z{constructor(t,e,i,n,r){var a,o;const c=(((o=(a=t.flow.digits)==null?void 0:a[n])==null?void 0:o.max)??9)+1,l=Array.from({length:c}).map((m,_)=>{const b=g("span",{className:"digit__num"},[document.createTextNode(String(_))]);return _!==i&&b.setAttribute("inert",""),b.style.setProperty("--n",String(_)),b}),d=g("span",{part:`digit ${e}-digit`,className:"digit"},l);d.style.setProperty("--current",String(i)),d.style.setProperty("--length",String(c)),super(t,i,d,r),this.pos=n,this._onAnimationsFinish=()=>{this.el.classList.remove("is-spinning")},this._numbers=l,this.length=c}willUpdate(t){const e=this.el.getBoundingClientRect();this._prevValue=this.value;const i=e[this.section.justify]-t[this.section.justify],n=e.width/2;this._prevCenter=this.section.justify==="left"?i+n:i-n}update(t){this.el.style.setProperty("--current",String(t)),this._numbers.forEach((e,i)=>i===t?e.removeAttribute("inert"):e.setAttribute("inert","")),this.value=t}didUpdate(t){const e=this.el.getBoundingClientRect(),i=e[this.section.justify]-t[this.section.justify],n=e.width/2,r=this.section.justify==="left"?i+n:i-n,a=this._prevCenter-r;a&&this.el.animate({transform:[`translateX(${a}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"});const o=this.getDelta();o&&(this.el.classList.add("is-spinning"),this.el.animate({[L]:[-o,0]},{...this.flow.spinTiming??this.flow.transformTiming,composite:"accumulate"}),this.flow.addEventListener("animationsfinish",this._onAnimationsFinish,{once:!0}))}getDelta(){var t;if(this.flow.plugins)for(const n of this.flow.plugins){const r=(t=n.getDelta)==null?void 0:t.call(n,this.value,this._prevValue,this);if(r!=null)return r}const e=this.value-this._prevValue,i=this.flow.computedTrend||Math.sign(e);return i<0&&this.value>this._prevValue?this.value-this.length-this._prevValue:i>0&&this.value<this._prevValue?this.length-this._prevValue+this.value:e}}class kt extends Z{constructor(t,e,i,n){const r=g("span",{className:"symbol__value",textContent:i});super(t,i,g("span",{part:`symbol ${e}`,className:"symbol"},[r]),n),this.type=e,this._children=new Map,this._onChildRemove=a=>()=>{this._children.delete(a)},this._children.set(i,new M(this.flow,r,{onRemove:this._onChildRemove(i)}))}willUpdate(t){if(this.type==="decimal")return;const e=this.el.getBoundingClientRect();this._prevOffset=e[this.section.justify]-t[this.section.justify]}update(t){if(this.value!==t){const e=this._children.get(this.value);e&&(e.present=!1);const i=this._children.get(t);if(i)i.present=!0;else{const n=g("span",{className:"symbol__value",textContent:t});this.el.appendChild(n),this._children.set(t,new M(this.flow,n,{animateIn:!0,onRemove:this._onChildRemove(t)}))}}this.value=t}didUpdate(t){if(this.type==="decimal")return;const e=this.el.getBoundingClientRect()[this.section.justify]-t[this.section.justify],i=this._prevOffset-e;i&&this.el.animate({transform:[`translateX(${i}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"})}}const X=String.raw;(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0})();typeof CSS<"u"&&CSS.supports&&CSS.supports("line-height","mod(1,1)");typeof matchMedia<"u"&&matchMedia("(prefers-reduced-motion: reduce)");const J="--_number-flow-d-opacity",Q="--_number-flow-d-width",N="--_number-flow-dx",K="--_number-flow-d";(()=>{try{return CSS.registerProperty({name:J,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:N,syntax:"<length>",inherits:!0,initialValue:"0px"}),CSS.registerProperty({name:Q,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:K,syntax:"<number>",inherits:!0,initialValue:"0"}),!0}catch{return!1}})();const E="round(nearest, calc(var(--number-flow-mask-height, 0.25em) / 2), 1px)",f=`calc(${E} * 2)`,V="var(--number-flow-mask-width, 0.5em)",w=`calc(${V} / var(--scale-x))`,x="#000 0, transparent 71%",Ct=X`:host{display:inline-block;direction:ltr;white-space:nowrap;isolation:isolate;line-height:1}.number,.number__inner{display:inline-block;transform-origin:left top}:host([data-will-change]) :is(.number,.number__inner,.section,.digit,.digit__num,.symbol){will-change:transform}.number{--scale-x:calc(1 + var(${Q}) / var(--width));transform:translateX(var(${N})) scaleX(var(--scale-x));margin:0 calc(-1 * ${V});position:relative;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 ${w},#000 calc(100% - ${w}),transparent ),linear-gradient(to bottom,transparent 0,#000 ${f},#000 calc(100% - ${f}),transparent 100% ),radial-gradient(at bottom right,${x}),radial-gradient(at bottom left,${x}),radial-gradient(at top left,${x}),radial-gradient(at top right,${x});-webkit-mask-size:100% calc(100% - ${f} * 2),calc(100% - ${w} * 2) 100%,${w} ${f},${w} ${f},${w} ${f},${w} ${f};-webkit-mask-position:center,center,top left,top right,bottom right,bottom left;-webkit-mask-repeat:no-repeat}.number__inner{padding:${E} ${V};transform:scaleX(calc(1 / var(--scale-x))) translateX(calc(-1 * var(${N})))}:host > :not(.number){z-index:5}.section,.symbol{display:inline-block;position:relative;isolation:isolate}.section::after{content:'\200b';display:inline-block}.section--justify-left{transform-origin:center left}.section--justify-right{transform-origin:center right}.section > [inert],.symbol > [inert]{margin:0 !important;position:absolute !important;z-index:-1}.digit{display:inline-block;position:relative;--c:var(--current) + var(${K})}.digit__num,.number .section::after{padding:${E} 0}.digit__num{display:inline-block;--offset-raw:mod(var(--length) + var(--n) - mod(var(--c),var(--length)),var(--length));--offset:calc( var(--offset-raw) - var(--length) * round(down,var(--offset-raw) / (var(--length) / 2),1) );--y:clamp(-100%,var(--offset) * 100%,100%);transform:translateY(var(--y))}.digit__num[inert]{position:absolute;top:0;left:50%;transform:translateX(-50%) translateY(var(--y))}.digit:not(.is-spinning) .digit__num[inert]{display:none}.symbol__value{display:inline-block;mix-blend-mode:plus-lighter;white-space:pre}.section--justify-left .symbol > [inert]{left:0}.section--justify-right .symbol > [inert]{right:0}.animate-presence{opacity:calc(1 + var(${J}))}`,St=X`:host{display:inline-block;direction:ltr;white-space:nowrap;line-height:1}span{display:inline-block}:host([data-will-change]) span{will-change:transform}.number,.digit{padding:${E} 0}.symbol{white-space:pre}`,Et=(s="")=>X`:where(number-flow${s}){line-height:1}number-flow${s} > span{font-kerning:none;display:inline-block;padding:${f} 0}`,Tt=s=>[St,Et(s),Ct],tt=Symbol(),Mt=H({__name:"NumberFlowGroup",setup(s){const t=new Set;let e=!1;return lt(tt,(i,n)=>{t.add(i),ct(n,async()=>{e||(e=!0,t.forEach(async r=>{var a;!r.value||!r.value.created||(r.value.willUpdate(),await W(),(a=r.value)==null||a.didUpdate())}),await W(),e=!1)}),ht(()=>{t.delete(i)})}),(i,n)=>et(i.$slots,"default")}}),Pt=["batched","trend","plugins","animated","transformTiming","spinTiming","opacityTiming","respectMotionPreference","nonce","data-will-change","digits","innerHTML","data"],Nt=H({inheritAttrs:!1,__name:"index",props:{transformTiming:{default:()=>u.defaultProps.transformTiming},spinTiming:{default:()=>u.defaultProps.spinTiming},opacityTiming:{default:()=>u.defaultProps.opacityTiming},animated:{type:Boolean,default:()=>u.defaultProps.animated},respectMotionPreference:{type:Boolean,default:()=>u.defaultProps.respectMotionPreference},trend:{type:[Number,Function],default:()=>u.defaultProps.trend},plugins:{default:()=>u.defaultProps.plugins},digits:{default:()=>u.defaultProps.digits},locales:{},format:{},value:{},prefix:{},suffix:{},nonce:{},willChange:{type:Boolean,default:!1}},emits:["animationsstart","animationsfinish"],setup(s,{expose:t,emit:e}){const i=A();t({el:i});const n=e,r=j(()=>new Intl.NumberFormat(s.locales,s.format)),a=j(()=>$t(s.value,r.value,s.prefix,s.suffix)),o=void 0,c=it(tt,void 0);return c?.(i,a),(l,d)=>(nt(),st("number-flow-vue",at({ref_key:"el",ref:i},l.$attrs,{batched:!!D(c),trend:l.trend,plugins:l.plugins,animated:l.animated,transformTiming:l.transformTiming,spinTiming:l.spinTiming,opacityTiming:l.opacityTiming,respectMotionPreference:l.respectMotionPreference,nonce:l.nonce,"data-will-change":l.willChange?"":void 0,digits:l.digits,innerHTML:D(o),"data-allow-mismatch":"",onAnimationsstart:d[0]||(d[0]=m=>n("animationsstart")),onAnimationsfinish:d[1]||(d[1]=m=>n("animationsfinish")),data:a.value}),null,16,Pt))}}),Vt=Tt("-vue");_t("number-flow-vue",u);function Bt({respectMotionPreference:s=!0}={}){const t=A(!1),e=A(!1);return rt(()=>{var i;t.value=Y,e.value=((i=k)==null?void 0:i.matches)??!1}),ot(i=>{var n;if(!z(s))return;const r=({matches:a})=>{e.value=a};(n=k)==null||n.addEventListener("change",r),i(()=>{var a;(a=k)==null||a.removeEventListener("change",r)})}),j(()=>t.value&&(!z(s)||!e.value))}export{u as NumberFlowElement,Mt as NumberFlowGroup,jt as continuous,Nt as default,Vt as styles,Bt as useCanAnimate};
1
+ import{d as H,N as et,O as it,o as nt,P as st,Q as at,e as D,y as A,z as j,r as rt,R as ot,S as z,T as lt,v as ct,U as W,V as ht}from"./index-CsN0336H.js";const dt=String.raw,pt=(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0})(),ut=typeof CSS<"u"&&CSS.supports&&CSS.supports("line-height","mod(1,1)"),k=typeof matchMedia<"u"?matchMedia("(prefers-reduced-motion: reduce)"):null,C="--_number-flow-d-opacity",B="--_number-flow-d-width",S="--_number-flow-dx",L="--_number-flow-d",mt=(()=>{try{return CSS.registerProperty({name:C,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:S,syntax:"<length>",inherits:!0,initialValue:"0px"}),CSS.registerProperty({name:B,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:L,syntax:"<number>",inherits:!0,initialValue:"0"}),!0}catch{return!1}})(),U="round(nearest, calc(var(--number-flow-mask-height, 0.25em) / 2), 1px)",v=`calc(${U} * 2)`,R="var(--number-flow-mask-width, 0.5em)",y=`calc(${R} / var(--scale-x))`,$="#000 0, transparent 71%",ft=dt`:host{display:inline-block;direction:ltr;white-space:nowrap;isolation:isolate;line-height:1}.number,.number__inner{display:inline-block;transform-origin:left top}:host([data-will-change]) :is(.number,.number__inner,.section,.digit,.digit__num,.symbol){will-change:transform}.number{--scale-x:calc(1 + var(${B}) / var(--width));transform:translateX(var(${S})) scaleX(var(--scale-x));margin:0 calc(-1 * ${R});position:relative;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 ${y},#000 calc(100% - ${y}),transparent ),linear-gradient(to bottom,transparent 0,#000 ${v},#000 calc(100% - ${v}),transparent 100% ),radial-gradient(at bottom right,${$}),radial-gradient(at bottom left,${$}),radial-gradient(at top left,${$}),radial-gradient(at top right,${$});-webkit-mask-size:100% calc(100% - ${v} * 2),calc(100% - ${y} * 2) 100%,${y} ${v},${y} ${v},${y} ${v},${y} ${v};-webkit-mask-position:center,center,top left,top right,bottom right,bottom left;-webkit-mask-repeat:no-repeat}.number__inner{padding:${U} ${R};transform:scaleX(calc(1 / var(--scale-x))) translateX(calc(-1 * var(${S})))}:host > :not(.number){z-index:5}.section,.symbol{display:inline-block;position:relative;isolation:isolate}.section::after{content:'\200b';display:inline-block}.section--justify-left{transform-origin:center left}.section--justify-right{transform-origin:center right}.section > [inert],.symbol > [inert]{margin:0 !important;position:absolute !important;z-index:-1}.digit{display:inline-block;position:relative;--c:var(--current) + var(${L})}.digit__num,.number .section::after{padding:${U} 0}.digit__num{display:inline-block;--offset-raw:mod(var(--length) + var(--n) - mod(var(--c),var(--length)),var(--length));--offset:calc( var(--offset-raw) - var(--length) * round(down,var(--offset-raw) / (var(--length) / 2),1) );--y:clamp(-100%,var(--offset) * 100%,100%);transform:translateY(var(--y))}.digit__num[inert]{position:absolute;top:0;left:50%;transform:translateX(-50%) translateY(var(--y))}.digit:not(.is-spinning) .digit__num[inert]{display:none}.symbol__value{display:inline-block;mix-blend-mode:plus-lighter;white-space:pre}.section--justify-left .symbol > [inert]{left:0}.section--justify-right .symbol > [inert]{right:0}.animate-presence{opacity:calc(1 + var(${C}))}`,gt=HTMLElement,vt=(s,t)=>s==null?t:t==null?s:Math.max(s,t),P=new WeakMap,jt={onUpdate(s,t,e){if(P.set(e,void 0),!e.computedTrend)return;const i=t.integer.concat(t.fraction).filter(o=>o.type==="integer"||o.type==="fraction"),n=s.integer.concat(s.fraction).filter(o=>o.type==="integer"||o.type==="fraction"),r=i.find(o=>!n.find(c=>c.pos===o.pos&&c.value===o.value)),a=n.find(o=>!i.find(c=>o.pos===c.pos&&o.value===c.value));P.set(e,vt(r?.pos,a?.pos))},getDelta(s,t,e){const i=s-t,n=P.get(e.flow);if(!i&&n!=null&&n>=e.pos)return e.length*e.flow.computedTrend}},g=(s,t,e)=>{const i=document.createElement(s),[n,r]=Array.isArray(t)?[void 0,t]:[t,e];return n&&Object.assign(i,n),r?.forEach(a=>i.appendChild(a)),i},yt=(s,t)=>{var e;return t==="left"?s.offsetLeft:(((e=s.offsetParent instanceof HTMLElement?s.offsetParent:null)==null?void 0:e.offsetWidth)??0)-s.offsetWidth-s.offsetLeft},wt=s=>s.offsetWidth>0&&s.offsetHeight>0,_t=(s,t)=>{!customElements.get(s)&&customElements.define(s,t)};function bt(s,t,{reverse:e=!1}={}){const i=s.length;for(let n=e?i-1:0;e?n>=0:n<i;e?n--:n++)t(s[n],n)}function $t(s,t,e,i){const n=t.formatToParts(s);e&&n.unshift({type:"prefix",value:e}),i&&n.push({type:"suffix",value:i});const r=[],a=[],o=[],c=[],l={},d=p=>`${p}:${l[p]=(l[p]??-1)+1}`;let m="",_=!1,b=!1;for(const p of n){m+=p.value;const h=p.type==="minusSign"||p.type==="plusSign"?"sign":p.type;h==="integer"?(_=!0,a.push(...p.value.split("").map(T=>({type:h,value:parseInt(T)})))):h==="group"?a.push({type:h,value:p.value}):h==="decimal"?(b=!0,o.push({type:h,value:p.value,key:d(h)})):h==="fraction"?o.push(...p.value.split("").map(T=>({type:h,value:parseInt(T),key:d(h),pos:-1-l[h]}))):(_||b?c:r).push({type:h,value:p.value,key:d(h)})}const F=[];for(let p=a.length-1;p>=0;p--){const h=a[p];F.unshift(h.type==="integer"?{...h,key:d(h.type),pos:l[h.type]}:{...h,key:d(h.type)})}return{pre:r,integer:F,fraction:o,post:c,valueAsString:m,value:typeof s=="string"?parseFloat(s):s}}const Y=ut&&pt&&mt;let u=class extends gt{constructor(){super(),this.created=!1,this.batched=!1;const{animated:t,...e}=this.constructor.defaultProps;this._animated=this.computedAnimated=t,Object.assign(this,e)}get animated(){return this._animated}set animated(t){var e;this.animated!==t&&(this._animated=t,(e=this.shadowRoot)==null||e.getAnimations().forEach(i=>i.finish()))}set data(t){var e,i;if(t==null)return;const{pre:n,integer:r,fraction:a,post:o,value:c}=t;if(this.created){const l=this._data;this._data=t,this.computedTrend=typeof this.trend=="function"?this.trend(l.value,c):this.trend,this.computedAnimated=Y&&this._animated&&(!this.respectMotionPreference||!((e=k)!=null&&e.matches))&&wt(this)&&this.ownerDocument.visibilityState==="visible",(i=this.plugins)==null||i.forEach(d=>{var m;return(m=d.onUpdate)==null?void 0:m.call(d,t,l,this)}),this.batched||this.willUpdate(),this._pre.update(n),this._num.update({integer:r,fraction:a}),this._post.update(o),this.batched||this.didUpdate()}else{this._data=t,this.attachShadow({mode:"open"});try{this._internals??(this._internals=this.attachInternals()),this._internals.role="img"}catch{}const l=document.createElement("style");this.nonce&&(l.nonce=this.nonce),l.textContent=ft,this.shadowRoot.appendChild(l),this._pre=new O(this,n,{justify:"right",part:"left"}),this.shadowRoot.appendChild(this._pre.el),this._num=new xt(this,r,a),this.shadowRoot.appendChild(this._num.el),this._post=new O(this,o,{justify:"left",part:"right"}),this.shadowRoot.appendChild(this._post.el),this.created=!0}try{this._internals.ariaLabel=t.valueAsString}catch{}}willUpdate(){this._pre.willUpdate(),this._num.willUpdate(),this._post.willUpdate()}didUpdate(){if(!this.computedAnimated)return;this._abortAnimationsFinish?this._abortAnimationsFinish.abort():this.dispatchEvent(new Event("animationsstart")),this._pre.didUpdate(),this._num.didUpdate(),this._post.didUpdate();const t=new AbortController;Promise.all(this.shadowRoot.getAnimations().map(e=>e.finished)).then(()=>{t.signal.aborted||(this.dispatchEvent(new Event("animationsfinish")),this._abortAnimationsFinish=void 0)}),this._abortAnimationsFinish=t}};u.defaultProps={transformTiming:{duration:900,easing:"linear(0,.005,.019,.039,.066,.096,.129,.165,.202,.24,.278,.316,.354,.39,.426,.461,.494,.526,.557,.586,.614,.64,.665,.689,.711,.731,.751,.769,.786,.802,.817,.831,.844,.856,.867,.877,.887,.896,.904,.912,.919,.925,.931,.937,.942,.947,.951,.955,.959,.962,.965,.968,.971,.973,.976,.978,.98,.981,.983,.984,.986,.987,.988,.989,.99,.991,.992,.992,.993,.994,.994,.995,.995,.996,.996,.9963,.9967,.9969,.9972,.9975,.9977,.9979,.9981,.9982,.9984,.9985,.9987,.9988,.9989,1)"},spinTiming:void 0,opacityTiming:{duration:450,easing:"ease-out"},animated:!0,trend:(s,t)=>Math.sign(t-s),respectMotionPreference:!0,plugins:void 0,digits:void 0};class xt{constructor(t,e,i,{className:n,...r}={}){this.flow=t,this._integer=new I(t,e,{justify:"right",part:"integer"}),this._fraction=new I(t,i,{justify:"left",part:"fraction"}),this._inner=g("span",{className:"number__inner"},[this._integer.el,this._fraction.el]),this.el=g("span",{...r,part:"number",className:`number ${n??""}`},[this._inner])}willUpdate(){this._prevWidth=this.el.offsetWidth,this._prevLeft=this.el.getBoundingClientRect().left,this._integer.willUpdate(),this._fraction.willUpdate()}update({integer:t,fraction:e}){this._integer.update(t),this._fraction.update(e)}didUpdate(){const t=this.el.getBoundingClientRect();this._integer.didUpdate(),this._fraction.didUpdate();const e=this._prevLeft-t.left,i=this.el.offsetWidth,n=this._prevWidth-i;this.el.style.setProperty("--width",String(i)),this.el.animate({[S]:[`${e}px`,"0px"],[B]:[n,0]},{...this.flow.transformTiming,composite:"accumulate"})}}let G=class{constructor(t,e,{justify:i,className:n,...r},a){this.flow=t,this.children=new Map,this.onCharRemove=c=>()=>{this.children.delete(c)},this.justify=i;const o=e.map(c=>this.addChar(c).el);this.el=g("span",{...r,className:`section section--justify-${i} ${n??""}`},a?a(o):o)}addChar(t,{startDigitsAtZero:e=!1,...i}={}){const n=t.type==="integer"||t.type==="fraction"?new q(this,t.type,e?0:t.value,t.pos,{...i,onRemove:this.onCharRemove(t.key)}):new kt(this,t.type,t.value,{...i,onRemove:this.onCharRemove(t.key)});return this.children.set(t.key,n),n}unpop(t){t.el.removeAttribute("inert"),t.el.style.top="",t.el.style[this.justify]=""}pop(t){t.forEach(e=>{e.el.style.top=`${e.el.offsetTop}px`,e.el.style[this.justify]=`${yt(e.el,this.justify)}px`}),t.forEach(e=>{e.el.setAttribute("inert",""),e.present=!1})}addNewAndUpdateExisting(t){const e=new Map,i=new Map,n=this.justify==="left",r=n?"prepend":"append";if(bt(t,a=>{let o;this.children.has(a.key)?(o=this.children.get(a.key),i.set(a,o),this.unpop(o),o.present=!0):(o=this.addChar(a,{startDigitsAtZero:!0,animateIn:!0}),e.set(a,o)),this.el[r](o.el)},{reverse:n}),this.flow.computedAnimated){const a=this.el.getBoundingClientRect();e.forEach(o=>{o.willUpdate(a)})}e.forEach((a,o)=>{a.update(o.value)}),i.forEach((a,o)=>{a.update(o.value)})}willUpdate(){const t=this.el.getBoundingClientRect();this._prevOffset=t[this.justify],this.children.forEach(e=>e.willUpdate(t))}didUpdate(){const t=this.el.getBoundingClientRect();this.children.forEach(n=>n.didUpdate(t));const e=t[this.justify],i=this._prevOffset-e;i&&this.children.size&&this.el.animate({transform:[`translateX(${i}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"})}};class I extends G{update(t){const e=new Map;this.children.forEach((i,n)=>{t.find(r=>r.key===n)||e.set(n,i),this.unpop(i)}),this.addNewAndUpdateExisting(t),e.forEach(i=>{i instanceof q&&i.update(0)}),this.pop(e)}}class O extends G{update(t){const e=new Map;this.children.forEach((i,n)=>{t.find(r=>r.key===n)||e.set(n,i)}),this.pop(e),this.addNewAndUpdateExisting(t)}}class M{constructor(t,e,{onRemove:i,animateIn:n=!1}={}){this.flow=t,this.el=e,this._present=!0,this._remove=()=>{var r;this.el.remove(),(r=this._onRemove)==null||r.call(this)},this.el.classList.add("animate-presence"),this.flow.computedAnimated&&n&&this.el.animate({[C]:[-.9999,0]},{...this.flow.opacityTiming,composite:"accumulate"}),this._onRemove=i}get present(){return this._present}set present(t){if(this._present!==t){if(this._present=t,t?this.el.removeAttribute("inert"):this.el.setAttribute("inert",""),!this.flow.computedAnimated){t||this._remove();return}this.el.style.setProperty("--_number-flow-d-opacity",t?"0":"-.999"),this.el.animate({[C]:t?[-.9999,0]:[.999,0]},{...this.flow.opacityTiming,composite:"accumulate"}),t?this.flow.removeEventListener("animationsfinish",this._remove):this.flow.addEventListener("animationsfinish",this._remove,{once:!0})}}}class Z extends M{constructor(t,e,i,n){super(t.flow,i,n),this.section=t,this.value=e,this.el=i}}class q extends Z{constructor(t,e,i,n,r){var a,o;const c=(((o=(a=t.flow.digits)==null?void 0:a[n])==null?void 0:o.max)??9)+1,l=Array.from({length:c}).map((m,_)=>{const b=g("span",{className:"digit__num"},[document.createTextNode(String(_))]);return _!==i&&b.setAttribute("inert",""),b.style.setProperty("--n",String(_)),b}),d=g("span",{part:`digit ${e}-digit`,className:"digit"},l);d.style.setProperty("--current",String(i)),d.style.setProperty("--length",String(c)),super(t,i,d,r),this.pos=n,this._onAnimationsFinish=()=>{this.el.classList.remove("is-spinning")},this._numbers=l,this.length=c}willUpdate(t){const e=this.el.getBoundingClientRect();this._prevValue=this.value;const i=e[this.section.justify]-t[this.section.justify],n=e.width/2;this._prevCenter=this.section.justify==="left"?i+n:i-n}update(t){this.el.style.setProperty("--current",String(t)),this._numbers.forEach((e,i)=>i===t?e.removeAttribute("inert"):e.setAttribute("inert","")),this.value=t}didUpdate(t){const e=this.el.getBoundingClientRect(),i=e[this.section.justify]-t[this.section.justify],n=e.width/2,r=this.section.justify==="left"?i+n:i-n,a=this._prevCenter-r;a&&this.el.animate({transform:[`translateX(${a}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"});const o=this.getDelta();o&&(this.el.classList.add("is-spinning"),this.el.animate({[L]:[-o,0]},{...this.flow.spinTiming??this.flow.transformTiming,composite:"accumulate"}),this.flow.addEventListener("animationsfinish",this._onAnimationsFinish,{once:!0}))}getDelta(){var t;if(this.flow.plugins)for(const n of this.flow.plugins){const r=(t=n.getDelta)==null?void 0:t.call(n,this.value,this._prevValue,this);if(r!=null)return r}const e=this.value-this._prevValue,i=this.flow.computedTrend||Math.sign(e);return i<0&&this.value>this._prevValue?this.value-this.length-this._prevValue:i>0&&this.value<this._prevValue?this.length-this._prevValue+this.value:e}}class kt extends Z{constructor(t,e,i,n){const r=g("span",{className:"symbol__value",textContent:i});super(t,i,g("span",{part:`symbol ${e}`,className:"symbol"},[r]),n),this.type=e,this._children=new Map,this._onChildRemove=a=>()=>{this._children.delete(a)},this._children.set(i,new M(this.flow,r,{onRemove:this._onChildRemove(i)}))}willUpdate(t){if(this.type==="decimal")return;const e=this.el.getBoundingClientRect();this._prevOffset=e[this.section.justify]-t[this.section.justify]}update(t){if(this.value!==t){const e=this._children.get(this.value);e&&(e.present=!1);const i=this._children.get(t);if(i)i.present=!0;else{const n=g("span",{className:"symbol__value",textContent:t});this.el.appendChild(n),this._children.set(t,new M(this.flow,n,{animateIn:!0,onRemove:this._onChildRemove(t)}))}}this.value=t}didUpdate(t){if(this.type==="decimal")return;const e=this.el.getBoundingClientRect()[this.section.justify]-t[this.section.justify],i=this._prevOffset-e;i&&this.el.animate({transform:[`translateX(${i}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"})}}const X=String.raw;(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0})();typeof CSS<"u"&&CSS.supports&&CSS.supports("line-height","mod(1,1)");typeof matchMedia<"u"&&matchMedia("(prefers-reduced-motion: reduce)");const J="--_number-flow-d-opacity",Q="--_number-flow-d-width",N="--_number-flow-dx",K="--_number-flow-d";(()=>{try{return CSS.registerProperty({name:J,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:N,syntax:"<length>",inherits:!0,initialValue:"0px"}),CSS.registerProperty({name:Q,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:K,syntax:"<number>",inherits:!0,initialValue:"0"}),!0}catch{return!1}})();const E="round(nearest, calc(var(--number-flow-mask-height, 0.25em) / 2), 1px)",f=`calc(${E} * 2)`,V="var(--number-flow-mask-width, 0.5em)",w=`calc(${V} / var(--scale-x))`,x="#000 0, transparent 71%",Ct=X`:host{display:inline-block;direction:ltr;white-space:nowrap;isolation:isolate;line-height:1}.number,.number__inner{display:inline-block;transform-origin:left top}:host([data-will-change]) :is(.number,.number__inner,.section,.digit,.digit__num,.symbol){will-change:transform}.number{--scale-x:calc(1 + var(${Q}) / var(--width));transform:translateX(var(${N})) scaleX(var(--scale-x));margin:0 calc(-1 * ${V});position:relative;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 ${w},#000 calc(100% - ${w}),transparent ),linear-gradient(to bottom,transparent 0,#000 ${f},#000 calc(100% - ${f}),transparent 100% ),radial-gradient(at bottom right,${x}),radial-gradient(at bottom left,${x}),radial-gradient(at top left,${x}),radial-gradient(at top right,${x});-webkit-mask-size:100% calc(100% - ${f} * 2),calc(100% - ${w} * 2) 100%,${w} ${f},${w} ${f},${w} ${f},${w} ${f};-webkit-mask-position:center,center,top left,top right,bottom right,bottom left;-webkit-mask-repeat:no-repeat}.number__inner{padding:${E} ${V};transform:scaleX(calc(1 / var(--scale-x))) translateX(calc(-1 * var(${N})))}:host > :not(.number){z-index:5}.section,.symbol{display:inline-block;position:relative;isolation:isolate}.section::after{content:'\200b';display:inline-block}.section--justify-left{transform-origin:center left}.section--justify-right{transform-origin:center right}.section > [inert],.symbol > [inert]{margin:0 !important;position:absolute !important;z-index:-1}.digit{display:inline-block;position:relative;--c:var(--current) + var(${K})}.digit__num,.number .section::after{padding:${E} 0}.digit__num{display:inline-block;--offset-raw:mod(var(--length) + var(--n) - mod(var(--c),var(--length)),var(--length));--offset:calc( var(--offset-raw) - var(--length) * round(down,var(--offset-raw) / (var(--length) / 2),1) );--y:clamp(-100%,var(--offset) * 100%,100%);transform:translateY(var(--y))}.digit__num[inert]{position:absolute;top:0;left:50%;transform:translateX(-50%) translateY(var(--y))}.digit:not(.is-spinning) .digit__num[inert]{display:none}.symbol__value{display:inline-block;mix-blend-mode:plus-lighter;white-space:pre}.section--justify-left .symbol > [inert]{left:0}.section--justify-right .symbol > [inert]{right:0}.animate-presence{opacity:calc(1 + var(${J}))}`,St=X`:host{display:inline-block;direction:ltr;white-space:nowrap;line-height:1}span{display:inline-block}:host([data-will-change]) span{will-change:transform}.number,.digit{padding:${E} 0}.symbol{white-space:pre}`,Et=(s="")=>X`:where(number-flow${s}){line-height:1}number-flow${s} > span{font-kerning:none;display:inline-block;padding:${f} 0}`,Tt=s=>[St,Et(s),Ct],tt=Symbol(),Mt=H({__name:"NumberFlowGroup",setup(s){const t=new Set;let e=!1;return lt(tt,(i,n)=>{t.add(i),ct(n,async()=>{e||(e=!0,t.forEach(async r=>{var a;!r.value||!r.value.created||(r.value.willUpdate(),await W(),(a=r.value)==null||a.didUpdate())}),await W(),e=!1)}),ht(()=>{t.delete(i)})}),(i,n)=>et(i.$slots,"default")}}),Pt=["batched","trend","plugins","animated","transformTiming","spinTiming","opacityTiming","respectMotionPreference","nonce","data-will-change","digits","innerHTML","data"],Nt=H({inheritAttrs:!1,__name:"index",props:{transformTiming:{default:()=>u.defaultProps.transformTiming},spinTiming:{default:()=>u.defaultProps.spinTiming},opacityTiming:{default:()=>u.defaultProps.opacityTiming},animated:{type:Boolean,default:()=>u.defaultProps.animated},respectMotionPreference:{type:Boolean,default:()=>u.defaultProps.respectMotionPreference},trend:{type:[Number,Function],default:()=>u.defaultProps.trend},plugins:{default:()=>u.defaultProps.plugins},digits:{default:()=>u.defaultProps.digits},locales:{},format:{},value:{},prefix:{},suffix:{},nonce:{},willChange:{type:Boolean,default:!1}},emits:["animationsstart","animationsfinish"],setup(s,{expose:t,emit:e}){const i=A();t({el:i});const n=e,r=j(()=>new Intl.NumberFormat(s.locales,s.format)),a=j(()=>$t(s.value,r.value,s.prefix,s.suffix)),o=void 0,c=it(tt,void 0);return c?.(i,a),(l,d)=>(nt(),st("number-flow-vue",at({ref_key:"el",ref:i},l.$attrs,{batched:!!D(c),trend:l.trend,plugins:l.plugins,animated:l.animated,transformTiming:l.transformTiming,spinTiming:l.spinTiming,opacityTiming:l.opacityTiming,respectMotionPreference:l.respectMotionPreference,nonce:l.nonce,"data-will-change":l.willChange?"":void 0,digits:l.digits,innerHTML:D(o),"data-allow-mismatch":"",onAnimationsstart:d[0]||(d[0]=m=>n("animationsstart")),onAnimationsfinish:d[1]||(d[1]=m=>n("animationsfinish")),data:a.value}),null,16,Pt))}}),Vt=Tt("-vue");_t("number-flow-vue",u);function Bt({respectMotionPreference:s=!0}={}){const t=A(!1),e=A(!1);return rt(()=>{var i;t.value=Y,e.value=((i=k)==null?void 0:i.matches)??!1}),ot(i=>{var n;if(!z(s))return;const r=({matches:a})=>{e.value=a};(n=k)==null||n.addEventListener("change",r),i(()=>{var a;(a=k)==null||a.removeEventListener("change",r)})}),j(()=>t.value&&(!z(s)||!e.value))}export{u as NumberFlowElement,Mt as NumberFlowGroup,jt as continuous,Nt as default,Vt as styles,Bt as useCanAnimate};
@@ -1 +1 @@
1
- import{d as q,q as M,r as O,v as y,o as k,c as E,x as z,e as A,y as x,z as r,A as J,B as L,C as s,D as T,E as V,F as D,G,H,I as K,J as g,K as P,L as h,M as U}from"./index-C16exop7.js";import W from"./index-dIh1Jn4U.js";const X=q({name:"ShwfedBlockAnimatedNumberItem",__name:"item",props:{item:{}},setup(b){const n=b,j=P(),a=x(void 0),m=x(0);function u(){return K(j)}function S(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&e.trim()!==""){const t=Number(e);return Number.isFinite(t)?t:0}return 0}const d=r(()=>a.value===void 0?g():U(a.value));function v(e){if(!e)return"";try{const t=h(s(e,{...u(),json:d.value}));return t==null?"":String(t)}catch{return""}}const w=r(()=>v(n.item.prefix)),C=r(()=>v(n.item.suffix));function F(e){if(e)try{const t=h(s(e,{...u(),json:d.value}));return t==null?void 0:typeof t=="string"||typeof t=="object"?t:String(t)}catch{return}}const I=r(()=>F(n.item.style));async function i(){const e=n.item.dataSource,t=u(),B=J(function*(){let o=g();e.request&&(o=yield*L(yield*s(e.request,t)));const N=yield*s(e.value,{...t,json:o});return{json:T(o),value:N}});try{const o=await V(D(B,G));a.value=o.json,m.value=S(o.value)}catch(o){console.warn("[shwfed-animated-number] fetch failed",o)}}const l=r(()=>(n.item.pollingInterval??0)>0),_=r(()=>Math.max(1,n.item.pollingInterval??1)*1e3),c=H(),{pause:p,resume:f}=M(()=>{i()},_,{immediate:!1});return O(()=>{i(),l.value&&c.value&&f()}),y(c,e=>{l.value&&(e?(i(),f()):p())}),y(()=>[n.item.dataSource.request??"",n.item.dataSource.value,n.item.pollingInterval??0].join("|"),()=>{i(),l.value&&c.value?f():p()}),(e,t)=>(k(),E(A(W),{value:m.value,prefix:w.value,suffix:C.value,style:z(I.value)},null,8,["value","prefix","suffix","style"]))}});export{X as default};
1
+ import{d as q,q as M,r as O,v as y,o as k,c as E,x as z,e as A,y as x,z as r,A as J,B as L,C as s,D as T,E as V,F as D,G,H,I as K,J as g,K as P,L as h,M as U}from"./index-CsN0336H.js";import W from"./index-Df0XE7Lz.js";const X=q({name:"ShwfedBlockAnimatedNumberItem",__name:"item",props:{item:{}},setup(b){const n=b,j=P(),a=x(void 0),m=x(0);function u(){return K(j)}function S(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&e.trim()!==""){const t=Number(e);return Number.isFinite(t)?t:0}return 0}const d=r(()=>a.value===void 0?g():U(a.value));function v(e){if(!e)return"";try{const t=h(s(e,{...u(),json:d.value}));return t==null?"":String(t)}catch{return""}}const w=r(()=>v(n.item.prefix)),C=r(()=>v(n.item.suffix));function F(e){if(e)try{const t=h(s(e,{...u(),json:d.value}));return t==null?void 0:typeof t=="string"||typeof t=="object"?t:String(t)}catch{return}}const I=r(()=>F(n.item.style));async function i(){const e=n.item.dataSource,t=u(),B=J(function*(){let o=g();e.request&&(o=yield*L(yield*s(e.request,t)));const N=yield*s(e.value,{...t,json:o});return{json:T(o),value:N}});try{const o=await V(D(B,G));a.value=o.json,m.value=S(o.value)}catch(o){console.warn("[shwfed-animated-number] fetch failed",o)}}const l=r(()=>(n.item.pollingInterval??0)>0),_=r(()=>Math.max(1,n.item.pollingInterval??1)*1e3),c=H(),{pause:p,resume:f}=M(()=>{i()},_,{immediate:!1});return O(()=>{i(),l.value&&c.value&&f()}),y(c,e=>{l.value&&(e?(i(),f()):p())}),y(()=>[n.item.dataSource.request??"",n.item.dataSource.value,n.item.pollingInterval??0].join("|"),()=>{i(),l.value&&c.value?f():p()}),(e,t)=>(k(),E(A(W),{value:m.value,prefix:w.value,suffix:C.value,style:z(I.value)},null,8,["value","prefix","suffix","style"]))}});export{X as default};
@@ -1 +1 @@
1
- import{d as l,b1 as g,aP as A,aS as y,aK as b,c as S,e as _,C as h,I as C,aO as j,b2 as k,K as O,o as B}from"./index-C16exop7.js";import{_ as I}from"./definition.vue_vue_type_script_setup_true_lang-G748uLwi.js";const E=l({name:"ShwfedStateWriteActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(s){const a=s,f=O(),c=(e,t)=>h(e,{...C(f),...t}),n=g(),o=n.kind==="form"&&n.parent?n.parent:n,u=j(),m=k((e,t,r)=>{if(Array.isArray(e[t])&&Array.isArray(r))return e[t]=r,!0});function i(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function p(e,t){return i(e)&&i(t)?m({...t},e):t}const d=A(()=>y(c(a.config.expression),e=>{for(const t of Object.keys(e)){const r=p(o.getAt(t),e[t]);o.setAt(t,r)}return b(u,a.config.onSuccess,c)}));return(e,t)=>(B(),S(I,{"action-id":s.buttonId,effect:_(d)},null,8,["action-id","effect"]))}});export{E as default};
1
+ import{d as l,b1 as g,aP as A,aS as y,aK as b,c as S,e as _,C as h,I as C,aO as j,b2 as k,K as O,o as B}from"./index-CsN0336H.js";import{_ as I}from"./definition.vue_vue_type_script_setup_true_lang-SX94Z692.js";const E=l({name:"ShwfedStateWriteActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(s){const a=s,f=O(),c=(e,t)=>h(e,{...C(f),...t}),n=g(),o=n.kind==="form"&&n.parent?n.parent:n,u=j(),m=k((e,t,r)=>{if(Array.isArray(e[t])&&Array.isArray(r))return e[t]=r,!0});function i(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function p(e,t){return i(e)&&i(t)?m({...t},e):t}const d=A(()=>y(c(a.config.expression),e=>{for(const t of Object.keys(e)){const r=p(o.getAt(t),e[t]);o.setAt(t,r)}return b(u,a.config.onSuccess,c)}));return(e,t)=>(B(),S(I,{"action-id":s.buttonId,effect:_(d)},null,8,["action-id","effect"]))}});export{E as default};
@@ -1 +1 @@
1
- import{d as r,aP as f,aQ as u,aK as g,aN as p,c as d,e as m,C as l,I as x,aO as h,K as E,o as _}from"./index-C16exop7.js";import{_ as C}from"./definition.vue_vue_type_script_setup_true_lang-G748uLwi.js";const B=r({name:"ShwfedHttpRequestActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(n){const e=n,i=E(),s=(t,c)=>l(t,{...x(i),...c}),o=h(),a=f(()=>u(g(o,e.config.before,s),()=>p(e.config.expression,s,{messageExpression:e.config.messageExpression,resultExpression:e.config.resultExpression,channel:o,triggers:{success:e.config.onSuccess,warning:e.config.onWarning,error:e.config.onError,info:e.config.onInfo}})));return(t,c)=>(_(),d(C,{"action-id":n.buttonId,effect:m(a)},null,8,["action-id","effect"]))}});export{B as default};
1
+ import{d as r,aP as f,aQ as u,aK as g,aN as p,c as d,e as m,C as l,I as x,aO as h,K as E,o as _}from"./index-CsN0336H.js";import{_ as C}from"./definition.vue_vue_type_script_setup_true_lang-SX94Z692.js";const B=r({name:"ShwfedHttpRequestActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(n){const e=n,i=E(),s=(t,c)=>l(t,{...x(i),...c}),o=h(),a=f(()=>u(g(o,e.config.before,s),()=>p(e.config.expression,s,{messageExpression:e.config.messageExpression,resultExpression:e.config.resultExpression,channel:o,triggers:{success:e.config.onSuccess,warning:e.config.onWarning,error:e.config.onError,info:e.config.onInfo}})));return(t,c)=>(_(),d(C,{"action-id":n.buttonId,effect:m(a)},null,8,["action-id","effect"]))}});export{B as default};
@@ -1 +1 @@
1
- import{d as r,aP as f,aK as d,c as u,e as m,aO as p,o as l,C as g,I as h,K as _}from"./index-C16exop7.js";import{_ as C}from"./definition.vue_vue_type_script_setup_true_lang-G748uLwi.js";const E=r({name:"ShwfedEventDispatchActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(e){const c=e,s=_(),a=(n,t)=>g(n,{...h(s),...t}),o=p(),i=f(()=>d(o,c.config.triggers,a));return(n,t)=>(l(),u(C,{"action-id":e.buttonId,effect:m(i)},null,8,["action-id","effect"]))}});export{E as default};
1
+ import{d as r,aP as f,aK as d,c as u,e as m,aO as p,o as l,C as g,I as h,K as _}from"./index-CsN0336H.js";import{_ as C}from"./definition.vue_vue_type_script_setup_true_lang-SX94Z692.js";const E=r({name:"ShwfedEventDispatchActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(e){const c=e,s=_(),a=(n,t)=>g(n,{...h(s),...t}),o=p(),i=f(()=>d(o,c.config.triggers,a));return(n,t)=>(l(),u(C,{"action-id":e.buttonId,effect:m(i)},null,8,["action-id","effect"]))}});export{E as default};
@@ -1 +1 @@
1
- import{_ as o}from"./definition.vue_vue_type_script_setup_true_lang-G748uLwi.js";import{d as n,c,e as a,o as f,aR as i}from"./index-C16exop7.js";const _=n({name:"ShwfedPrototypeActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(e){const t=i;return(r,s)=>(f(),c(o,{"action-id":e.buttonId,effect:a(t)},null,8,["action-id","effect"]))}});export{_ as default};
1
+ import{_ as o}from"./definition.vue_vue_type_script_setup_true_lang-SX94Z692.js";import{d as n,c,e as a,o as f,aR as i}from"./index-CsN0336H.js";const _=n({name:"ShwfedPrototypeActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(e){const t=i;return(r,s)=>(f(),c(o,{"action-id":e.buttonId,effect:a(t)},null,8,["action-id","effect"]))}});export{_ as default};
@@ -1 +1 @@
1
- import{d as f,W as u,aP as p,aQ as d,aK as l,b3 as m,$ as g,c as x,e as h,C as E,I as _,aO as B,o as C,K as b}from"./index-C16exop7.js";import{_ as k}from"./definition.vue_vue_type_script_setup_true_lang-G748uLwi.js";const O=f({name:"ShwfedHttpRequestBatchActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(n){const e=n,{locale:a}=u(),c=b(),s=(t,o)=>E(t,{..._(c),...o}),i=B(),r=p(()=>d(l(i,e.config.before,s),()=>m(e.config.expression,s,{messageExpression:e.config.messageExpression,resultExpression:e.config.resultExpression,continueOnError:e.config.continueOnError,markdown:g(e.config.markdown,a.value)??""})));return(t,o)=>(C(),x(k,{"action-id":n.buttonId,effect:h(r)},null,8,["action-id","effect"]))}});export{O as default};
1
+ import{d as f,W as u,aP as p,aQ as d,aK as l,b3 as m,$ as g,c as x,e as h,C as E,I as _,aO as B,o as C,K as b}from"./index-CsN0336H.js";import{_ as k}from"./definition.vue_vue_type_script_setup_true_lang-SX94Z692.js";const O=f({name:"ShwfedHttpRequestBatchActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(n){const e=n,{locale:a}=u(),c=b(),s=(t,o)=>E(t,{..._(c),...o}),i=B(),r=p(()=>d(l(i,e.config.before,s),()=>m(e.config.expression,s,{messageExpression:e.config.messageExpression,resultExpression:e.config.resultExpression,continueOnError:e.config.continueOnError,markdown:g(e.config.markdown,a.value)??""})));return(t,o)=>(C(),x(k,{"action-id":n.buttonId,effect:h(r)},null,8,["action-id","effect"]))}});export{O as default};
@@ -1 +1 @@
1
- import{d as u,W as i,c as l,e as p,z as m,o as d,k as f,$ as _,aL as k,C as w,I as x,K as g}from"./index-C16exop7.js";const h=u({name:"ShwfedMarkdownItemRuntime",__name:"runtime",props:{config:{}},setup(s){const o=s,{locale:t}=i(),a=g(),c=(e,n)=>w(e,{...x(a),...n}),r=m(()=>{const e=_(o.config.content,t.value)??"";return k(e,c)});return(e,n)=>(d(),l(p(f),{"data-slot":"buttons-markdown",source:r.value,class:"prose prose-sm prose-zinc px-1"},null,8,["source"]))}});export{h as default};
1
+ import{d as u,W as i,c as l,e as p,z as m,o as d,k as f,$ as _,aL as k,C as w,I as x,K as g}from"./index-CsN0336H.js";const h=u({name:"ShwfedMarkdownItemRuntime",__name:"runtime",props:{config:{}},setup(s){const o=s,{locale:t}=i(),a=g(),c=(e,n)=>w(e,{...x(a),...n}),r=m(()=>{const e=_(o.config.content,t.value)??"";return k(e,c)});return(e,n)=>(d(),l(p(f),{"data-slot":"buttons-markdown",source:r.value,class:"prose prose-sm prose-zinc px-1"},null,8,["source"]))}});export{h as default};
@@ -1 +1 @@
1
- import{d as _,aP as E,A as S,aW as r,aK as m,a$ as b,b0 as j,c as v,e as x,C as B,I as C,aO as L,K as k,o as R}from"./index-C16exop7.js";import{_ as I}from"./definition.vue_vue_type_script_setup_true_lang-G748uLwi.js";const A=_({name:"ShwfedHttpDownloadActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(d){const c=d,g=k(),t=(e,n)=>B(e,{...C(g),...n}),l=L(),p=new Set(["success","error","warning","info"]);function f(e){const n=URL.createObjectURL(e),o=document.createElement("a");o.href=n,o.download=e.name,document.body.appendChild(o),o.click(),o.remove(),URL.revokeObjectURL(n)}const y=E(()=>S(function*(){const{template:e,messageExpression:n,resultExpression:o}=c.config,u=yield*t(e.request);if(!e.download){const s=yield*u.file();return yield*r(()=>f(s)),yield*m(l,c.config.onSuccess,t)}const a={json:yield*u.json()},i=o===void 0?"success":yield*b(t(o,a),s=>p.has(s)?s:"success");if(n!==void 0){const s=yield*t(n,a);yield*r(()=>j[i](s))}if(i==="success"||i==="info"){const h=yield*(yield*t(e.download,a)).file();yield*r(()=>f(h))}const w={success:c.config.onSuccess,warning:c.config.onWarning,error:c.config.onError,info:c.config.onInfo};return yield*m(l,w[i],t)}));return(e,n)=>(R(),v(I,{"action-id":d.buttonId,effect:x(y)},null,8,["action-id","effect"]))}});export{A as default};
1
+ import{d as _,aP as E,A as S,aW as r,aK as m,a$ as b,b0 as j,c as v,e as x,C as B,I as C,aO as L,K as k,o as R}from"./index-CsN0336H.js";import{_ as I}from"./definition.vue_vue_type_script_setup_true_lang-SX94Z692.js";const A=_({name:"ShwfedHttpDownloadActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(d){const c=d,g=k(),t=(e,n)=>B(e,{...C(g),...n}),l=L(),p=new Set(["success","error","warning","info"]);function f(e){const n=URL.createObjectURL(e),o=document.createElement("a");o.href=n,o.download=e.name,document.body.appendChild(o),o.click(),o.remove(),URL.revokeObjectURL(n)}const y=E(()=>S(function*(){const{template:e,messageExpression:n,resultExpression:o}=c.config,u=yield*t(e.request);if(!e.download){const s=yield*u.file();return yield*r(()=>f(s)),yield*m(l,c.config.onSuccess,t)}const a={json:yield*u.json()},i=o===void 0?"success":yield*b(t(o,a),s=>p.has(s)?s:"success");if(n!==void 0){const s=yield*t(n,a);yield*r(()=>j[i](s))}if(i==="success"||i==="info"){const h=yield*(yield*t(e.download,a)).file();yield*r(()=>f(h))}const w={success:c.config.onSuccess,warning:c.config.onWarning,error:c.config.onError,info:c.config.onInfo};return yield*m(l,w[i],t)}));return(e,n)=>(R(),v(I,{"action-id":d.buttonId,effect:x(y)},null,8,["action-id","effect"]))}});export{A as default};
@@ -1 +1 @@
1
- import{d as s,W as x,aU as T,A as p,$ as c,aV as M,L as b,c as L,w as d,e as u,y as N,O as k,aO as S,aW as w,o as A,m as I,x as V,b as r,aX as $,aY as F,aB as H,K,aZ as f,T as m,a_ as O}from"./index-C16exop7.js";import{_ as W}from"./definition.vue_vue_type_script_setup_true_lang-G748uLwi.js";const z=s({name:"ShwfedModalLayoutActionRuntime",__name:"runtime",props:{buttonId:{},config:{},buttonTitle:{}},setup(n){const a=n,{locale:l}=x(),v=e=>{},h=K(),i=k(f,void 0),g=S(),o=N(null),C=T(a.buttonId,{close:()=>w(()=>{o.value?.()})},g),_=s({name:"ModalBoundaryBridge",setup(e,{slots:t}){return F(h),m(O,C),i&&m(f,i),()=>t.default?.()}}),y=(e,t)=>H()?.(e,t),E=p(function*(){const e=c(a.config.modalTitle,l.value)??c(a.buttonTitle,l.value)??"",{modal:t,close:B}=yield*M({title:e,width:a.config.modalWidth});o.value=()=>b(B()),yield*t,o.value=null});return(e,t)=>(A(),L(W,{"action-id":n.buttonId,effect:u(E)},{default:d(()=>[I("div",{style:V(n.config.modalMinHeight?`min-height: ${n.config.modalMinHeight}`:void 0)},[r(u(_),null,{default:d(()=>[r($,{"slot-value":n.config.slot,configure:v,"find-entry":y},null,8,["slot-value"])]),_:1})],4)]),_:1},8,["action-id","effect"]))}});export{z as default};
1
+ import{d as s,W as x,aU as T,A as p,$ as c,aV as M,L as b,c as L,w as d,e as u,y as N,O as k,aO as S,aW as w,o as A,m as I,x as V,b as r,aX as $,aY as F,aB as H,K,aZ as f,T as m,a_ as O}from"./index-CsN0336H.js";import{_ as W}from"./definition.vue_vue_type_script_setup_true_lang-SX94Z692.js";const z=s({name:"ShwfedModalLayoutActionRuntime",__name:"runtime",props:{buttonId:{},config:{},buttonTitle:{}},setup(n){const a=n,{locale:l}=x(),v=e=>{},h=K(),i=k(f,void 0),g=S(),o=N(null),C=T(a.buttonId,{close:()=>w(()=>{o.value?.()})},g),_=s({name:"ModalBoundaryBridge",setup(e,{slots:t}){return F(h),m(O,C),i&&m(f,i),()=>t.default?.()}}),y=(e,t)=>H()?.(e,t),E=p(function*(){const e=c(a.config.modalTitle,l.value)??c(a.buttonTitle,l.value)??"",{modal:t,close:B}=yield*M({title:e,width:a.config.modalWidth});o.value=()=>b(B()),yield*t,o.value=null});return(e,t)=>(A(),L(W,{"action-id":n.buttonId,effect:u(E)},{default:d(()=>[I("div",{style:V(n.config.modalMinHeight?`min-height: ${n.config.modalMinHeight}`:void 0)},[r(u(_),null,{default:d(()=>[r($,{"slot-value":n.config.slot,configure:v,"find-entry":y},null,8,["slot-value"])]),_:1})],4)]),_:1},8,["action-id","effect"]))}});export{z as default};
@@ -1 +1 @@
1
- import{d as f,aP as u,aS as l,aT as d,c as m,e as w,C as p,I as _,K as g,o as h}from"./index-C16exop7.js";import{_ as v}from"./definition.vue_vue_type_script_setup_true_lang-G748uLwi.js";function x(){return{resolve:e=>({href:new URL(e,window.location.href).href})}}function b(e,t){return window.location.assign(e),Promise.resolve()}const R=f({name:"ShwfedNavigationActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(e){const t=e,i=x(),a=g(),r=(n,o)=>p(n,{..._(a),...o});function c(n){try{return new URL(n,window.location.href).origin!==window.location.origin}catch{return!1}}const s=u(()=>l(r(t.config.url),n=>d(async()=>{const o=c(n);if(t.config.mode==="_blank"){window.open(o?n:i.resolve(n).href,"_blank");return}await b(n)})));return(n,o)=>(h(),m(v,{"action-id":e.buttonId,effect:w(s)},null,8,["action-id","effect"]))}});export{R as default};
1
+ import{d as f,aP as u,aS as l,aT as d,c as m,e as w,C as p,I as _,K as g,o as h}from"./index-CsN0336H.js";import{_ as v}from"./definition.vue_vue_type_script_setup_true_lang-SX94Z692.js";function x(){return{resolve:e=>({href:new URL(e,window.location.href).href})}}function b(e,t){return window.location.assign(e),Promise.resolve()}const R=f({name:"ShwfedNavigationActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(e){const t=e,i=x(),a=g(),r=(n,o)=>p(n,{..._(a),...o});function c(n){try{return new URL(n,window.location.href).origin!==window.location.origin}catch{return!1}}const s=u(()=>l(r(t.config.url),n=>d(async()=>{const o=c(n);if(t.config.mode==="_blank"){window.open(o?n:i.resolve(n).href,"_blank");return}await b(n)})));return(n,o)=>(h(),m(v,{"action-id":e.buttonId,effect:w(s)},null,8,["action-id","effect"]))}});export{R as default};
@@ -1 +1 @@
1
- import{d as f,W as g,A as l,aK as u,$ as d,aL as p,aM as m,aN as x,c as E,e as _,C as h,I as C,aO as w,K as I,o as k}from"./index-C16exop7.js";import{_ as b}from"./definition.vue_vue_type_script_setup_true_lang-G748uLwi.js";const L=f({name:"ShwfedHttpRequestConfirmActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(c){const e=c,{locale:i}=g(),a=I(),s=(n,o)=>h(n,{...C(a),...o}),t=w(),r=l(function*(){yield*u(t,e.config.before,s);const n=d(e.config.markdown,i.value)??"",o=p(n,s);(yield*m({content:o,icon:e.config.icon,color:e.config.color}))||(yield*x(e.config.expression,s,{messageExpression:e.config.messageExpression,resultExpression:e.config.resultExpression,channel:t,triggers:{success:e.config.onSuccess,warning:e.config.onWarning,error:e.config.onError,info:e.config.onInfo}}))});return(n,o)=>(k(),E(b,{"action-id":c.buttonId,effect:_(r)},null,8,["action-id","effect"]))}});export{L as default};
1
+ import{d as f,W as g,A as l,aK as u,$ as d,aL as p,aM as m,aN as x,c as E,e as _,C as h,I as C,aO as w,K as I,o as k}from"./index-CsN0336H.js";import{_ as b}from"./definition.vue_vue_type_script_setup_true_lang-SX94Z692.js";const L=f({name:"ShwfedHttpRequestConfirmActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(c){const e=c,{locale:i}=g(),a=I(),s=(n,o)=>h(n,{...C(a),...o}),t=w(),r=l(function*(){yield*u(t,e.config.before,s);const n=d(e.config.markdown,i.value)??"",o=p(n,s);(yield*m({content:o,icon:e.config.icon,color:e.config.color}))||(yield*x(e.config.expression,s,{messageExpression:e.config.messageExpression,resultExpression:e.config.resultExpression,channel:t,triggers:{success:e.config.onSuccess,warning:e.config.onWarning,error:e.config.onError,info:e.config.onInfo}}))});return(n,o)=>(k(),E(b,{"action-id":c.buttonId,effect:_(r)},null,8,["action-id","effect"]))}});export{L as default};
@@ -10,8 +10,8 @@
10
10
  `--primary`, the primary button variant renders as transparent. */
11
11
  body { --primary: #009689; }
12
12
  </style>
13
- <script type="module" crossorigin src="./assets/index-C16exop7.js"></script>
14
- <link rel="stylesheet" crossorigin href="./assets/index-vPcvbp7e.css">
13
+ <script type="module" crossorigin src="./assets/index-CsN0336H.js"></script>
14
+ <link rel="stylesheet" crossorigin href="./assets/index-C1h9lV52.css">
15
15
  </head>
16
16
  <body>
17
17
  <div id="app"></div>
@@ -4,7 +4,7 @@ import type { MigrateFn, MigrateSource } from '../../../utils/resolve.js';
4
4
  export declare const type: "com.shwfed.actions.button.http.request.json";
5
5
  export declare const compatibilityDate: "2026-04-18";
6
6
  export declare const metadata: {
7
- readonly name: "网络请求(JSON)";
7
+ readonly name: "请求";
8
8
  readonly icon: "fluent:cloud-arrow-up-20-regular";
9
9
  };
10
10
  export declare function schema(configure: (env: Environment) => void): Schema.Struct<{
@@ -7,7 +7,7 @@ import * as alertOperation from "../../../../operations/2026-06-09/com.shwfed.op
7
7
  export const type = "com.shwfed.actions.button.http.request.json";
8
8
  export const compatibilityDate = "2026-04-18";
9
9
  export const metadata = {
10
- name: "\u7F51\u7EDC\u8BF7\u6C42\uFF08JSON\uFF09",
10
+ name: "\u8BF7\u6C42",
11
11
  icon: "fluent:cloud-arrow-up-20-regular"
12
12
  };
13
13
  export function schema(configure) {
@@ -81,7 +81,7 @@ export const migrateFrom = [
81
81
  export const migrate = (prev) => Effect.try({
82
82
  try: () => {
83
83
  if (!prev || typeof prev !== "object") {
84
- throw new Error("\u7F51\u7EDC\u8BF7\u6C42\uFF08JSON\uFF09\u8FC1\u79FB\u5931\u8D25\uFF1A\u539F\u503C\u4E0D\u662F\u5BF9\u8C61");
84
+ throw new Error("\u8BF7\u6C42\u8FC1\u79FB\u5931\u8D25\uFF1A\u539F\u503C\u4E0D\u662F\u5BF9\u8C61");
85
85
  }
86
86
  const { type: _t, compatibilityDate: _c, markdown, icon, color, before, ...rest } = prev;
87
87
  const params = {
@@ -3,7 +3,7 @@ import type { Environment } from '../../../../../vendor/cel-js/lib/index.js';
3
3
  export declare const type: "com.shwfed.actions.button.http.request.json.batch";
4
4
  export declare const compatibilityDate: "2026-06-08";
5
5
  export declare const metadata: {
6
- readonly name: "批量网络请求(JSON)";
6
+ readonly name: "批量请求";
7
7
  readonly icon: "fluent:cloud-arrow-up-20-regular";
8
8
  };
9
9
  export declare function schema(configure: (env: Environment) => void): Schema.Struct<{
@@ -6,7 +6,7 @@ import { md } from "../../../../../share/markdown.js";
6
6
  export const type = "com.shwfed.actions.button.http.request.json.batch";
7
7
  export const compatibilityDate = "2026-06-08";
8
8
  export const metadata = {
9
- name: "\u6279\u91CF\u7F51\u7EDC\u8BF7\u6C42\uFF08JSON\uFF09",
9
+ name: "\u6279\u91CF\u8BF7\u6C42",
10
10
  icon: "fluent:cloud-arrow-up-20-regular"
11
11
  };
12
12
  const isHttpRequestList = (t) => t === "dyn" || t === "list" || t === "list<dyn>" || t === "list<HttpRequest>";
@@ -2,6 +2,16 @@
2
2
  import { Icon } from "@iconify/vue";
3
3
  import { useEventListener } from "@vueuse/core";
4
4
  import { computed, nextTick, onMounted, ref, watch } from "vue";
5
+ import {
6
+ AlertDialog,
7
+ AlertDialogAction,
8
+ AlertDialogCancel,
9
+ AlertDialogContent,
10
+ AlertDialogDescription,
11
+ AlertDialogFooter,
12
+ AlertDialogHeader,
13
+ AlertDialogTitle
14
+ } from "../ui/alert-dialog";
5
15
  import { Button } from "../ui/button";
6
16
  import { CommandGroup, CommandItem } from "../ui/command";
7
17
  import {
@@ -257,6 +267,7 @@ function onPlaneContextMenu(e) {
257
267
  pendingPasteCell.value = { x, y };
258
268
  }
259
269
  function onPlaneMouseDown(e) {
270
+ focusCanvas();
260
271
  if (e.button !== 0) return;
261
272
  if (isSpaceHeld.value) return;
262
273
  marquee.value = {
@@ -382,6 +393,26 @@ function hideItem(itemId) {
382
393
  function emitDeleteMany(itemIds) {
383
394
  emit("delete-items", [...itemIds]);
384
395
  }
396
+ const deleteDialogOpen = ref(false);
397
+ const pendingDeleteIds = ref([]);
398
+ function requestDelete(itemIds) {
399
+ const ids = itemIds.filter((id) => !!getItem(id));
400
+ if (ids.length === 0) return;
401
+ pendingDeleteIds.value = ids;
402
+ deleteDialogOpen.value = true;
403
+ }
404
+ const pendingDeleteLabels = computed(() => {
405
+ const ids = pendingDeleteIds.value;
406
+ const labels = ids.slice(0, 3).map((id) => resolveItemLabel(id));
407
+ return ids.length > 3 ? `${labels.join("\u3001")} \u7B49 ${ids.length} \u4E2A` : labels.join("\u3001");
408
+ });
409
+ function confirmDelete() {
410
+ deleteDialogOpen.value = false;
411
+ const ids = pendingDeleteIds.value;
412
+ if (ids.length === 0) return;
413
+ if (ids.length === 1) emit("delete-item", ids[0]);
414
+ else emitDeleteMany(ids);
415
+ }
385
416
  function hideItems(itemIds) {
386
417
  const i = activeIndex.value;
387
418
  const ls = layouts.value[i];
@@ -443,6 +474,7 @@ function beginDrag(kind, itemId, e) {
443
474
  if (!entry) return;
444
475
  e.preventDefault();
445
476
  e.stopPropagation();
477
+ focusCanvas();
446
478
  let itemIds;
447
479
  if (kind === "move" && isSelected(itemId) && selectedItemIds.value.length > 1) {
448
480
  itemIds = [...selectedItemIds.value];
@@ -840,13 +872,45 @@ useEventListener("mouseup", () => {
840
872
  if (!paneResize) return;
841
873
  paneResize = null;
842
874
  });
875
+ function focusCanvas() {
876
+ canvasRef.value?.focus({ preventScroll: true });
877
+ }
878
+ function onCanvasKeydown(e) {
879
+ if (isTextInput(e.target)) return;
880
+ const mod = e.metaKey || e.ctrlKey;
881
+ if (e.key === "Backspace" || e.key === "Delete") {
882
+ const ids = [...selectedItemIds.value];
883
+ if (ids.length === 0) return;
884
+ e.preventDefault();
885
+ if (mod) {
886
+ if (props.canDelete) requestDelete(ids);
887
+ } else {
888
+ hideItems(ids);
889
+ }
890
+ return;
891
+ }
892
+ if (!mod || e.shiftKey || e.altKey) return;
893
+ const key = e.key.toLowerCase();
894
+ if (key === "c") {
895
+ if (selectedItemIds.value.length === 0) return;
896
+ const sel = window.getSelection();
897
+ if (sel && !sel.isCollapsed) return;
898
+ e.preventDefault();
899
+ emit("copy-items", [...selectedItemIds.value]);
900
+ } else if (key === "v") {
901
+ e.preventDefault();
902
+ emit("paste", null);
903
+ }
904
+ }
843
905
  </script>
844
906
 
845
907
  <template>
846
908
  <div
847
909
  ref="canvasRef"
848
- class="overflow-hidden border border-zinc-200 bg-zinc-50 select-none"
910
+ tabindex="-1"
911
+ class="overflow-hidden border border-zinc-200 bg-zinc-50 select-none outline-none"
849
912
  :class="isFullscreen ? 'fixed inset-0 z-40 h-screen w-screen' : 'relative h-full rounded'"
913
+ @keydown="onCanvasKeydown"
850
914
  >
851
915
  <ContextMenu>
852
916
  <ContextMenuTrigger as-child>
@@ -1127,7 +1191,7 @@ useEventListener("mouseup", () => {
1127
1191
  <ContextMenuItem
1128
1192
  v-if="props.canDelete"
1129
1193
  class="text-red-500 focus:text-red-600 hover:text-red-600 focus:bg-red-50 hover:bg-red-50 [&_svg:not([class*='text-'])]:text-red-400"
1130
- @select="emitDeleteMany(selectedItemIds)"
1194
+ @select="requestDelete(selectedItemIds)"
1131
1195
  >
1132
1196
  <Icon icon="fluent:delete-20-regular" />
1133
1197
  <span>彻底删除 ({{ selectedItemIds.length }})</span>
@@ -1279,7 +1343,7 @@ useEventListener("mouseup", () => {
1279
1343
  <ContextMenuItem
1280
1344
  v-if="props.canDelete"
1281
1345
  class="text-red-500 focus:text-red-600 hover:text-red-600 focus:bg-red-50 hover:bg-red-50 [&_svg:not([class*='text-'])]:text-red-400"
1282
- @select="emit('delete-item', entry.itemId)"
1346
+ @select="requestDelete([entry.itemId])"
1283
1347
  >
1284
1348
  <Icon icon="fluent:delete-20-regular" />
1285
1349
  <span>彻底删除</span>
@@ -1430,6 +1494,37 @@ useEventListener("mouseup", () => {
1430
1494
  />
1431
1495
  </div>
1432
1496
  </div>
1497
+
1498
+ <AlertDialog
1499
+ :open="deleteDialogOpen"
1500
+ @update:open="(open) => {
1501
+ deleteDialogOpen = open;
1502
+ }"
1503
+ >
1504
+ <AlertDialogContent class="sm:px-12 sm:py-8 flex flex-col gap-12">
1505
+ <AlertDialogHeader class="sr-only">
1506
+ <AlertDialogTitle>彻底删除{{ itemNoun }}</AlertDialogTitle>
1507
+ <AlertDialogDescription>Confirmation dialog</AlertDialogDescription>
1508
+ </AlertDialogHeader>
1509
+ <Icon
1510
+ icon="fluent:warning-20-filled"
1511
+ class="text-6xl mx-auto text-yellow-500"
1512
+ />
1513
+ <p class="text-sm text-zinc-900">
1514
+ 确认彻底删除 <strong>{{ pendingDeleteLabels }}</strong> {{ itemNoun }}吗?
1515
+ </p>
1516
+ <AlertDialogFooter>
1517
+ <AlertDialogCancel>
1518
+ <Icon icon="fluent:dismiss-20-regular" />
1519
+ 取消
1520
+ </AlertDialogCancel>
1521
+ <AlertDialogAction @click="confirmDelete">
1522
+ <Icon icon="fluent:checkmark-20-regular" />
1523
+ 确认
1524
+ </AlertDialogAction>
1525
+ </AlertDialogFooter>
1526
+ </AlertDialogContent>
1527
+ </AlertDialog>
1433
1528
  </div>
1434
1529
  </template>
1435
1530
 
@@ -38,25 +38,27 @@ function onConfirm() {
38
38
  <Icon icon="fluent:arrow-left-20-regular" />
39
39
  返回
40
40
  </Button>
41
- <template v-else>
42
- <Button
43
- type="button"
44
- variant="default"
45
- size="sm"
46
- @click="onDismiss"
47
- >
48
- <Icon icon="fluent:dismiss-20-regular" />
49
- 取消
50
- </Button>
51
- <Button
52
- type="button"
53
- variant="primary"
54
- size="sm"
55
- @click="onConfirm"
56
- >
57
- <Icon icon="fluent:checkmark-20-regular" />
58
- 确认
59
- </Button>
60
- </template>
41
+ <Button
42
+ v-else
43
+ type="button"
44
+ variant="default"
45
+ size="sm"
46
+ @click="onDismiss"
47
+ >
48
+ <Icon icon="fluent:dismiss-20-regular" />
49
+ 取消
50
+ </Button>
51
+ <!-- Edits land in the shared draft live, so confirming from a drilled
52
+ frame needs no flushing — validate the whole draft, close on success,
53
+ stay in place on failure (the error renders in this same footer). -->
54
+ <Button
55
+ type="button"
56
+ variant="primary"
57
+ size="sm"
58
+ @click="onConfirm"
59
+ >
60
+ <Icon icon="fluent:checkmark-20-regular" />
61
+ 确认
62
+ </Button>
61
63
  </div>
62
64
  </template>
@@ -3,6 +3,7 @@ import { computed, ref, shallowRef, watch } from "vue";
3
3
  import { findFreePlacement, normalizeLayoutSet, placeGroupAt } from "../../share/layout.js";
4
4
  import { PageConfig } from "./schema.js";
5
5
  import { BLOCKS, findBlock } from "./utils/resolve.js";
6
+ import { formatValidationError } from "./utils/validation-error.js";
6
7
  function deepClone(value) {
7
8
  return JSON.parse(JSON.stringify(value));
8
9
  }
@@ -13,14 +14,6 @@ function makeId() {
13
14
  return (c === "x" ? r : r & 3 | 8).toString(16);
14
15
  });
15
16
  }
16
- function formatError(err) {
17
- if (err instanceof Error) return err.message;
18
- try {
19
- return JSON.stringify(err);
20
- } catch {
21
- return String(err);
22
- }
23
- }
24
17
  export function useSlotEditor(slot, options = {}) {
25
18
  const configure = options.configure ?? (() => {
26
19
  });
@@ -357,7 +350,10 @@ export function useConfigEditor(model, options = {}) {
357
350
  parentSuffixes.value = [];
358
351
  options.onClose?.();
359
352
  } catch (err) {
360
- validationError.value = formatError(err);
353
+ validationError.value = formatValidationError(err, (i) => {
354
+ const b = topSlotEditor.blocks.value[i];
355
+ return b ? topSlotEditor.getBlockLabel(b) : void 0;
356
+ });
361
357
  }
362
358
  }
363
359
  function reset() {
@@ -0,0 +1 @@
1
+ export declare function formatValidationError(err: unknown, blockLabelAt: (index: number) => string | undefined): string;
@@ -0,0 +1,34 @@
1
+ import { ParseResult } from "effect";
2
+ function isDiscriminatorMiss(issue) {
3
+ const last = issue.path[issue.path.length - 1];
4
+ return (last === "type" || last === "compatibilityDate") && issue.message.startsWith('Expected "');
5
+ }
6
+ function blockIndexOf(path) {
7
+ if (path[0] === "slot" && path[1] === "blocks" && typeof path[2] === "number") return path[2];
8
+ return null;
9
+ }
10
+ function fallback(err) {
11
+ if (err instanceof Error) return err.message;
12
+ try {
13
+ return JSON.stringify(err);
14
+ } catch {
15
+ return String(err);
16
+ }
17
+ }
18
+ export function formatValidationError(err, blockLabelAt) {
19
+ if (!ParseResult.isParseError(err)) return fallback(err);
20
+ try {
21
+ const issues = ParseResult.ArrayFormatter.formatErrorSync(err);
22
+ const real = issues.filter((i) => !isDiscriminatorMiss(i));
23
+ const picked = real.length > 0 ? real : issues;
24
+ const first = picked[0];
25
+ if (!first) return fallback(err);
26
+ const index = blockIndexOf(first.path);
27
+ const label = index === null ? void 0 : blockLabelAt(index);
28
+ const prefix = label ? `\u300C${label}\u300D\uFF1A` : "";
29
+ const suffix = picked.length > 1 ? `\uFF08\u8FD8\u6709 ${picked.length - 1} \u4E2A\u95EE\u9898\uFF09` : "";
30
+ return `${prefix}${first.message}${suffix}`;
31
+ } catch {
32
+ return fallback(err);
33
+ }
34
+ }
@@ -33,8 +33,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
33
33
  readonly expression: string;
34
34
  } | undefined;
35
35
  readonly numberOfMonths?: number | undefined;
36
- readonly rangeSeparatorIcon?: string | undefined;
37
36
  readonly format?: string | undefined;
37
+ readonly valueFormat?: string | undefined;
38
+ readonly rangeSeparatorIcon?: string | undefined;
38
39
  readonly startPlaceholder?: readonly [{
39
40
  readonly locale: "zh";
40
41
  readonly message: string;
@@ -49,7 +50,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
49
50
  readonly locale: "en" | "ja" | "ko";
50
51
  readonly message: string;
51
52
  }[]] | undefined;
52
- readonly valueFormat?: string | undefined;
53
53
  readonly validations?: readonly {
54
54
  readonly message: readonly [{
55
55
  readonly locale: "zh";
@@ -105,8 +105,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
105
105
  readonly expression: string;
106
106
  } | undefined;
107
107
  readonly numberOfMonths?: number | undefined;
108
- readonly rangeSeparatorIcon?: string | undefined;
109
108
  readonly format?: string | undefined;
109
+ readonly valueFormat?: string | undefined;
110
+ readonly rangeSeparatorIcon?: string | undefined;
110
111
  readonly startPlaceholder?: readonly [{
111
112
  readonly locale: "zh";
112
113
  readonly message: string;
@@ -121,7 +122,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
121
122
  readonly locale: "en" | "ja" | "ko";
122
123
  readonly message: string;
123
124
  }[]] | undefined;
124
- readonly valueFormat?: string | undefined;
125
125
  readonly validations?: readonly {
126
126
  readonly message: readonly [{
127
127
  readonly locale: "zh";
@@ -33,8 +33,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
33
33
  readonly expression: string;
34
34
  } | undefined;
35
35
  readonly numberOfMonths?: number | undefined;
36
- readonly rangeSeparatorIcon?: string | undefined;
37
36
  readonly format?: string | undefined;
37
+ readonly valueFormat?: string | undefined;
38
+ readonly rangeSeparatorIcon?: string | undefined;
38
39
  readonly startPlaceholder?: readonly [{
39
40
  readonly locale: "zh";
40
41
  readonly message: string;
@@ -49,7 +50,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
49
50
  readonly locale: "en" | "ja" | "ko";
50
51
  readonly message: string;
51
52
  }[]] | undefined;
52
- readonly valueFormat?: string | undefined;
53
53
  readonly validations?: readonly {
54
54
  readonly message: readonly [{
55
55
  readonly locale: "zh";
@@ -105,8 +105,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
105
105
  readonly expression: string;
106
106
  } | undefined;
107
107
  readonly numberOfMonths?: number | undefined;
108
- readonly rangeSeparatorIcon?: string | undefined;
109
108
  readonly format?: string | undefined;
109
+ readonly valueFormat?: string | undefined;
110
+ readonly rangeSeparatorIcon?: string | undefined;
110
111
  readonly startPlaceholder?: readonly [{
111
112
  readonly locale: "zh";
112
113
  readonly message: string;
@@ -121,7 +122,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
121
122
  readonly locale: "en" | "ja" | "ko";
122
123
  readonly message: string;
123
124
  }[]] | undefined;
124
- readonly valueFormat?: string | undefined;
125
125
  readonly validations?: readonly {
126
126
  readonly message: readonly [{
127
127
  readonly locale: "zh";