@shwfed/config 2.10.2 → 2.10.4

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 (158) hide show
  1. package/dist/mcp.mjs +143 -89
  2. package/dist/module.json +1 -1
  3. package/dist/preview/assets/{FieldGroup.vue_vue_type_script_setup_true_lang-DX5M_WNF.js → FieldGroup.vue_vue_type_script_setup_true_lang-DIjsktfi.js} +1 -1
  4. package/dist/preview/assets/badge-Cr6_n00S.js +1 -0
  5. package/dist/preview/assets/config-1VGYa1Zb.js +1 -0
  6. package/dist/preview/assets/config-B2rtOFE1.js +1 -0
  7. package/dist/preview/assets/config-BemROLz0.js +1 -0
  8. package/dist/preview/assets/{config-DeDCNzY_.js → config-BjUIO7Ps.js} +1 -1
  9. package/dist/preview/assets/config-Bu-ffrDi.js +1 -0
  10. package/dist/preview/assets/config-CNY70agP.js +1 -0
  11. package/dist/preview/assets/{config-CSmHhOh2.js → config-CSauYxAG.js} +1 -1
  12. package/dist/preview/assets/{config-CTF5-TTQ.js → config-CrA5lAMB.js} +1 -1
  13. package/dist/preview/assets/{config-BiOW8fS2.js → config-CwbWyadd.js} +1 -1
  14. package/dist/preview/assets/{config-DBtEKoan.js → config-DF4u2WzQ.js} +1 -1
  15. package/dist/preview/assets/config-DTDFg08z.js +1 -0
  16. package/dist/preview/assets/config-DpcMlGoM.js +1 -0
  17. package/dist/preview/assets/config-Dx9AeOjb.js +1 -0
  18. package/dist/preview/assets/config-hXHOfKvD.js +1 -0
  19. package/dist/preview/assets/{definition.vue_vue_type_script_setup_true_lang-Cu0CEKYT.js → definition.vue_vue_type_script_setup_true_lang-v2AaUd8i.js} +1 -1
  20. package/dist/preview/assets/index-BDbNnENM.js +1 -0
  21. package/dist/preview/assets/index-ButPJaOR.css +1 -0
  22. package/dist/preview/assets/index-BzWZj-hV.js +1 -0
  23. package/dist/preview/assets/{index-DX9_iE4h.js → index-E3_P6Fhz.js} +207 -189
  24. package/dist/preview/assets/item-B_QcL62I.js +1 -0
  25. package/dist/preview/assets/runtime-BRg0jxiK.js +1 -0
  26. package/dist/preview/assets/runtime-BbiAwZZ9.js +1 -0
  27. package/dist/preview/assets/runtime-CKoLdM68.js +1 -0
  28. package/dist/preview/assets/{runtime-CFb1tHwr.js → runtime-CZ6uHCIE.js} +1 -1
  29. package/dist/preview/assets/runtime-Cd79TXff.js +1 -0
  30. package/dist/preview/assets/{runtime-BN-jMAt7.js → runtime-Cfup01hl.js} +1 -1
  31. package/dist/preview/assets/runtime-Cu_C4Joj.js +1 -0
  32. package/dist/preview/assets/{runtime-yfWYeUh4.js → runtime-D-MaRCSg.js} +1 -1
  33. package/dist/preview/assets/runtime-DUMSbsqb.js +1 -0
  34. package/dist/preview/assets/runtime-hClBh8tp.js +1 -0
  35. package/dist/preview/assets/{schema-meta-6ZPO8dHv.js → schema-meta-BACRMkVo.js} +1 -1
  36. package/dist/preview/index.html +2 -2
  37. package/dist/runtime/components/actions/buttons/2026-05-15/com.shwfed.actions.button.event.dispatch/schema.d.ts +16 -10
  38. package/dist/runtime/components/actions/buttons/2026-05-15/com.shwfed.actions.button.event.dispatch/schema.js +68 -43
  39. package/dist/runtime/components/actions/buttons/2026-05-21/com.shwfed.actions.button.http.download/schema.d.ts +1 -0
  40. package/dist/runtime/components/actions/buttons/2026-05-21/com.shwfed.actions.button.http.download/schema.js +5 -1
  41. package/dist/runtime/components/block-layout-editor/index.vue +8 -0
  42. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/config.d.vue.ts +2 -2
  43. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/config.vue.d.ts +2 -2
  44. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/runtime.d.vue.ts +4 -4
  45. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/runtime.vue.d.ts +4 -4
  46. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/schema.d.ts +1 -1
  47. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.d.vue.ts +2 -2
  48. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.vue.d.ts +2 -2
  49. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.d.vue.ts +2 -2
  50. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.vue.d.ts +2 -2
  51. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/schema.d.ts +2 -2
  52. package/dist/runtime/components/config/index.vue +5 -1
  53. package/dist/runtime/components/config/schema.d.ts +10 -0
  54. package/dist/runtime/components/config/schema.js +23 -0
  55. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/config.d.vue.ts +134 -0
  56. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/config.vue +78 -2
  57. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/config.vue.d.ts +134 -0
  58. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/runtime.vue +24 -0
  59. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/schema.d.ts +132 -0
  60. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/schema.js +14 -1
  61. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/config.d.vue.ts +16 -16
  62. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/config.vue.d.ts +16 -16
  63. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.d.vue.ts +4 -4
  64. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.vue.d.ts +4 -4
  65. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.d.vue.ts +6 -6
  66. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.vue.d.ts +6 -6
  67. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.d.vue.ts +2 -2
  68. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.vue.d.ts +2 -2
  69. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/config.d.vue.ts +140 -6
  70. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/config.vue +77 -2
  71. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/config.vue.d.ts +140 -6
  72. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/runtime.vue +24 -0
  73. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/schema.d.ts +132 -0
  74. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/schema.js +14 -1
  75. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/config.d.vue.ts +6 -6
  76. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/config.vue.d.ts +6 -6
  77. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/config.d.vue.ts +22 -22
  78. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/config.vue.d.ts +22 -22
  79. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/config.d.vue.ts +16 -16
  80. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/config.vue.d.ts +16 -16
  81. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.d.vue.ts +8 -8
  82. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.vue.d.ts +8 -8
  83. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.d.vue.ts +4 -4
  84. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.vue.d.ts +4 -4
  85. package/dist/runtime/components/form/fields/2026-05-25/com.shwfed.form.field.combobox.multi/config.d.vue.ts +16 -16
  86. package/dist/runtime/components/form/fields/2026-05-25/com.shwfed.form.field.combobox.multi/config.vue.d.ts +16 -16
  87. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/config.d.vue.ts +8 -8
  88. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/config.vue.d.ts +8 -8
  89. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/config.d.vue.ts +8 -8
  90. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/config.vue.d.ts +8 -8
  91. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.d.vue.ts +8 -8
  92. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.vue.d.ts +8 -8
  93. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.d.vue.ts +8 -8
  94. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.vue.d.ts +8 -8
  95. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.d.vue.ts +8 -8
  96. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.vue.d.ts +8 -8
  97. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.d.vue.ts +8 -8
  98. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.vue.d.ts +8 -8
  99. package/dist/runtime/components/form/schema.d.ts +2 -2
  100. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.http.download/config.d.vue.ts +31 -0
  101. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.http.download/config.vue +103 -0
  102. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.http.download/config.vue.d.ts +31 -0
  103. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.http.download/runtime.d.ts +2 -0
  104. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.http.download/runtime.js +63 -0
  105. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.http.download/schema.d.ts +21 -0
  106. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.http.download/schema.js +63 -0
  107. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.navigation/config.d.vue.ts +17 -0
  108. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.navigation/config.vue +85 -0
  109. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.navigation/config.vue.d.ts +17 -0
  110. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.navigation/runtime.d.ts +2 -0
  111. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.navigation/runtime.js +36 -0
  112. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.navigation/schema.d.ts +14 -0
  113. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.navigation/schema.js +38 -0
  114. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/config.d.vue.ts +4 -4
  115. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/config.vue.d.ts +4 -4
  116. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/config.d.vue.ts +4 -4
  117. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/config.vue.d.ts +4 -4
  118. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +10 -10
  119. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +10 -10
  120. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +10 -10
  121. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +10 -10
  122. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +10 -10
  123. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +10 -10
  124. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +10 -10
  125. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +10 -10
  126. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +10 -10
  127. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +10 -10
  128. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +10 -10
  129. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +10 -10
  130. package/dist/runtime/components/table/schema.d.ts +3 -3
  131. package/dist/runtime/components/ui/date-picker/DatePickerInput.d.vue.ts +1 -1
  132. package/dist/runtime/components/ui/date-picker/DatePickerInput.vue.d.ts +1 -1
  133. package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.d.vue.ts +1 -1
  134. package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.vue.d.ts +1 -1
  135. package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.d.vue.ts +1 -1
  136. package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.vue.d.ts +1 -1
  137. package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.d.vue.ts +2 -2
  138. package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.vue.d.ts +2 -2
  139. package/package.json +1 -1
  140. package/dist/preview/assets/badge-DFZBH8N6.js +0 -1
  141. package/dist/preview/assets/config-BH2BmDoD.js +0 -1
  142. package/dist/preview/assets/config-Bg7a8Rid.js +0 -1
  143. package/dist/preview/assets/config-Bnp547Nm.js +0 -1
  144. package/dist/preview/assets/config-CqeWJt_H.js +0 -1
  145. package/dist/preview/assets/config-Dj3w2JkF.js +0 -1
  146. package/dist/preview/assets/config-XGJ9V32V.js +0 -1
  147. package/dist/preview/assets/config-uIHUHvNR.js +0 -1
  148. package/dist/preview/assets/index-CGChrBji.js +0 -1
  149. package/dist/preview/assets/index-CQA6q2ay.js +0 -1
  150. package/dist/preview/assets/index-pkoEF5dC.css +0 -1
  151. package/dist/preview/assets/item-C4VJfiq8.js +0 -1
  152. package/dist/preview/assets/runtime-6Zrje7Y1.js +0 -1
  153. package/dist/preview/assets/runtime-BQMnWueG.js +0 -1
  154. package/dist/preview/assets/runtime-CBz5XstF.js +0 -1
  155. package/dist/preview/assets/runtime-DQL6lCFp.js +0 -1
  156. package/dist/preview/assets/runtime-DcdmMgqL.js +0 -1
  157. package/dist/preview/assets/runtime-okYOTQd6.js +0 -1
  158. package/dist/preview/assets/runtime-qPyuMgsh.js +0 -1
@@ -0,0 +1 @@
1
+ import{d as B,G as M,H as k,I as y,o as q,c as T,J as V,b as E,K as x,L as i,M as J,N as L,O as s,P,Q as U,R as W,S as z,T as A,U as G,V as g,W as H,X as b,Y as K}from"./index-E3_P6Fhz.js";import Q from"./index-BzWZj-hV.js";const Y=B({name:"ShwfedBlockAnimatedNumberItem",__name:"item",props:{item:{}},setup(h){const n=h,j=H(),a=x(void 0),m=x(0);function u(){return G(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=i(()=>a.value===void 0?g():K(a.value));function v(e){if(!e)return"";try{const t=b(s(e,{...u(),json:d.value}));return t==null?"":String(t)}catch{return""}}const w=i(()=>v(n.item.prefix)),I=i(()=>v(n.item.suffix));function N(e){if(e)try{const t=b(s(e,{...u(),json:d.value}));return t==null?void 0:typeof t=="string"||typeof t=="object"?t:String(t)}catch{return}}const _=i(()=>N(n.item.style));async function r(){const e=n.item.dataSource,t=u(),F=J(function*(){let o=g();e.request&&(o=yield*L(yield*s(e.request,t)));const O=yield*s(e.value,{...t,json:o});return{json:P(o),value:O}});try{const o=await U(W(F,z));a.value=o.json,m.value=S(o.value)}catch(o){console.warn("[shwfed-animated-number] fetch failed",o)}}const l=i(()=>(n.item.pollingInterval??0)>0),C=i(()=>Math.max(1,n.item.pollingInterval??1)*1e3),c=A(),{pause:p,resume:f}=M(()=>{r()},C,{immediate:!1});return k(()=>{r(),l.value&&c.value&&f()}),y(c,e=>{l.value&&(e?(r(),f()):p())}),y(()=>[n.item.dataSource.request??"",n.item.dataSource.value,n.item.pollingInterval??0].join("|"),()=>{r(),l.value&&c.value?f():p()}),(e,t)=>(q(),T(E(Q),{value:m.value,prefix:w.value,suffix:I.value,style:V(_.value)},null,8,["value","prefix","suffix","style"]))}});export{Y as default};
@@ -0,0 +1 @@
1
+ import{d as u,a6 as i,c as l,b as p,L as m,o as d,h as f,a9 as _,aP as k,O as w,U as x,W as g}from"./index-E3_P6Fhz.js";const B=u({name:"ShwfedMarkdownItemRuntime",__name:"runtime",props:{config:{}},setup(s){const o=s,{locale:a}=i(),t=g(),c=(e,n)=>w(e,{...x(t),...n}),r=m(()=>{const e=_(o.config.content,a.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{B as default};
@@ -0,0 +1 @@
1
+ import{d as f,a6 as g,M as l,aO as u,a9 as d,aP as p,aQ as m,aR as x,c as E,b as _,O as h,U as w,aS as C,W as b,o as k}from"./index-E3_P6Fhz.js";import{_ as I}from"./definition.vue_vue_type_script_setup_true_lang-v2AaUd8i.js";const B=f({name:"ShwfedHttpRequestConfirmActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(c){const n=c,{locale:i}=g(),a=b(),s=(e,o)=>h(e,{...w(a),...o}),t=C(),r=l(function*(){yield*u(t,n.config.before,s);const e=d(n.config.markdown,i.value)??"",o=p(e,s);(yield*m({content:o,icon:n.config.icon,color:n.config.color}))||(yield*x(n.config.expression,s,{messageExpression:n.config.messageExpression,resultExpression:n.config.resultExpression,channel:t,triggers:{success:n.config.onSuccess,warning:n.config.onWarning,error:n.config.onError,info:n.config.onInfo}}))});return(e,o)=>(k(),E(I,{"action-id":c.buttonId,effect:_(r)},null,8,["action-id","effect"]))}});export{B as default};
@@ -0,0 +1 @@
1
+ import{d as f,aT as u,aW as d,aX as l,aY as m,c as p,b as w,aZ as _,O as g,U as h,W as b,o as x}from"./index-E3_P6Fhz.js";import{_ as k}from"./definition.vue_vue_type_script_setup_true_lang-v2AaUd8i.js";const C=f({name:"ShwfedNavigationActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(t){const o=t,a=_(),i=b(),c=(n,e)=>g(n,{...h(i),...e});function s(n){try{return new URL(n,window.location.href).origin!==window.location.origin}catch{return!1}}const r=u(()=>d(c(o.config.url),n=>l(async()=>{const e=s(n);if(o.config.mode==="_blank"){window.open(e?n:a.resolve(n).href,"_blank");return}await m(n)})));return(n,e)=>(x(),p(k,{"action-id":t.buttonId,effect:w(r)},null,8,["action-id","effect"]))}});export{C as default};
@@ -1 +1 @@
1
- import{_ as o}from"./definition.vue_vue_type_script_setup_true_lang-Cu0CEKYT.js";import{d as n,c,b as a,o as f,aT as i}from"./index-DX9_iE4h.js";const _=n({name:"ShwfedPrototypeActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(t){const e=i;return(r,s)=>(f(),c(o,{"action-id":t.buttonId,effect:a(e)},null,8,["action-id","effect"]))}});export{_ as default};
1
+ import{_ as o}from"./definition.vue_vue_type_script_setup_true_lang-v2AaUd8i.js";import{d as n,c,b as a,o as f,aV as i}from"./index-E3_P6Fhz.js";const _=n({name:"ShwfedPrototypeActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(t){const e=i;return(r,s)=>(f(),c(o,{"action-id":t.buttonId,effect:a(e)},null,8,["action-id","effect"]))}});export{_ as default};
@@ -0,0 +1 @@
1
+ import{d as r,aT as f,aO as d,c as u,b as m,aS as p,o as l,O as g,U as h,W as _}from"./index-E3_P6Fhz.js";import{_ as C}from"./definition.vue_vue_type_script_setup_true_lang-v2AaUd8i.js";const B=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{B as default};
@@ -1 +1 @@
1
- import{d as b,aR as E,C as _,aY as r,aM as m,b1 as S,b2 as j,c as v,b as x,E as B,K as C,aQ as L,M as R,o as k}from"./index-DX9_iE4h.js";import{_ as T}from"./definition.vue_vue_type_script_setup_true_lang-Cu0CEKYT.js";const q=b({name:"ShwfedHttpDownloadActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(d){const c=d,g=R(),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(()=>_(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*S(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)=>(k(),v(T,{"action-id":d.buttonId,effect:x(y)},null,8,["action-id","effect"]))}});export{q as default};
1
+ import{d as h,aT as S,M as _,b0 as r,aO as m,b5 as E,b6 as j,c as v,b as x,O as B,U as L,aS as k,W as C,o as O}from"./index-E3_P6Fhz.js";import{_ as R}from"./definition.vue_vue_type_script_setup_true_lang-v2AaUd8i.js";const q=h({name:"ShwfedHttpDownloadActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(d){const c=d,g=C(),t=(e,n)=>B(e,{...L(g),...n}),l=k(),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=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*E(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 b=yield*(yield*t(e.download,a)).file();yield*r(()=>f(b))}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)=>(O(),v(R,{"action-id":d.buttonId,effect:x(y)},null,8,["action-id","effect"]))}});export{q as default};
@@ -0,0 +1 @@
1
+ import{d as s,a6 as B,a_ as M,M as p,a9 as c,a$ as x,X as T,c as N,w as d,b as u,K as S,$ as k,aS as L,b0 as $,o as w,j as F,J as I,a as r,b1 as j,b2 as A,aF as H,W as K,b3 as f,a3 as m,b4 as V}from"./index-E3_P6Fhz.js";import{_ as z}from"./definition.vue_vue_type_script_setup_true_lang-v2AaUd8i.js";const Y=s({name:"ShwfedModalLayoutActionRuntime",__name:"runtime",props:{buttonId:{},config:{},buttonTitle:{}},setup(n){const a=n,{locale:l}=B(),v=e=>{},h=K(),i=k(f,void 0),g=L(),o=S(null),C=M(a.buttonId,{close:()=>$(()=>{o.value?.()})},g),_=s({name:"ModalBoundaryBridge",setup(e,{slots:t}){return A(h),m(V,C),i&&m(f,i),()=>t.default?.()}}),b=(e,t)=>H()?.(e,t),E=p(function*(){const e=c(a.config.modalTitle,l.value)??c(a.buttonTitle,l.value)??"",{modal:t,close:y}=yield*x({title:e,width:a.config.modalWidth});o.value=()=>T(y()),yield*t,o.value=null});return(e,t)=>(w(),N(z,{"action-id":n.buttonId,effect:u(E)},{default:d(()=>[F("div",{style:I(n.config.modalMinHeight?`min-height: ${n.config.modalMinHeight}`:void 0)},[r(u(_),null,{default:d(()=>[r(j,{"slot-value":n.config.slot,configure:v,"find-entry":b},null,8,["slot-value"])]),_:1})],4)]),_:1},8,["action-id","effect"]))}});export{Y as default};
@@ -1 +1 @@
1
- import{d as r,aR as f,aS as u,aM as g,aP as p,c as d,b as m,E as l,K as x,aQ as E,M as h,o as _}from"./index-DX9_iE4h.js";import{_ as b}from"./definition.vue_vue_type_script_setup_true_lang-Cu0CEKYT.js";const B=r({name:"ShwfedHttpRequestActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(n){const e=n,i=h(),s=(t,c)=>l(t,{...x(i),...c}),o=E(),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(b,{"action-id":n.buttonId,effect:m(a)},null,8,["action-id","effect"]))}});export{B as default};
1
+ import{d as r,aT as f,aU as u,aO as g,aR as p,c as d,b as m,O as l,U as x,aS as h,W as E,o as _}from"./index-E3_P6Fhz.js";import{_ as b}from"./definition.vue_vue_type_script_setup_true_lang-v2AaUd8i.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(b,{"action-id":n.buttonId,effect:m(a)},null,8,["action-id","effect"]))}});export{B as default};
@@ -0,0 +1 @@
1
+ import{d as l,b7 as g,aT as A,aW as y,aO as b,c as S,b as _,O as h,U as O,aS as j,b8 as k,W as C,o as B}from"./index-E3_P6Fhz.js";import{_ as W}from"./definition.vue_vue_type_script_setup_true_lang-v2AaUd8i.js";const F=l({name:"ShwfedStateWriteActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(s){const a=s,f=C(),c=(e,t)=>h(e,{...O(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(W,{"action-id":s.buttonId,effect:_(d)},null,8,["action-id","effect"]))}});export{F as default};
@@ -0,0 +1 @@
1
+ import{d as f,a6 as u,aT as p,aU as d,aO as l,b9 as m,a9 as g,c as x,b as h,O as E,U as _,aS as b,o as B,W as k}from"./index-E3_P6Fhz.js";import{_ as C}from"./definition.vue_vue_type_script_setup_true_lang-v2AaUd8i.js";const w=f({name:"ShwfedHttpRequestBatchActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(n){const e=n,{locale:a}=u(),c=k(),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)=>(B(),x(C,{"action-id":n.buttonId,effect:h(r)},null,8,["action-id","effect"]))}});export{w as default};
@@ -1 +1 @@
1
- import{p as o,q as l,r as p}from"./index-DX9_iE4h.js";function i(n){switch(n._tag){case"TypeLiteral":return n;case"Transformation":return i(n.to);case"Refinement":return i(n.from);case"Suspend":return i(n.f());default:return null}}function d(n,t){const e=i(n.ast);return e?e.propertySignatures.find(r=>r.name===t)??null:null}function y(n){const t=n.type;if(t._tag==="Union"&&n.isOptional){const e=t.types.find(r=>r._tag!=="UndefinedKeyword");if(e)return e}return t}function c(n,t,e){const r=d(n,t);if(!r)return;const u=e(r);if(o(u))return u.value;const f=y(r),s=e(f);if(o(s))return s.value;if(f!==r.type){const a=e(r.type);if(o(a))return a.value}}function m(n,t){return c(n,t,l)}function v(n,t){return c(n,t,p)}export{v as a,m as g};
1
+ import{C as o,D as l,E as d}from"./index-E3_P6Fhz.js";function i(n){switch(n._tag){case"TypeLiteral":return n;case"Transformation":return i(n.to);case"Refinement":return i(n.from);case"Suspend":return i(n.f());default:return null}}function p(n,t){const e=i(n.ast);return e?e.propertySignatures.find(r=>r.name===t)??null:null}function y(n){const t=n.type;if(t._tag==="Union"&&n.isOptional){const e=t.types.find(r=>r._tag!=="UndefinedKeyword");if(e)return e}return t}function c(n,t,e){const r=p(n,t);if(!r)return;const u=e(r);if(o(u))return u.value;const f=y(r),s=e(f);if(o(s))return s.value;if(f!==r.type){const a=e(r.type);if(o(a))return a.value}}function m(n,t){return c(n,t,l)}function v(n,t){return c(n,t,d)}export{v as a,m as g};
@@ -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-DX9_iE4h.js"></script>
14
- <link rel="stylesheet" crossorigin href="./assets/index-pkoEF5dC.css">
13
+ <script type="module" crossorigin src="./assets/index-E3_P6Fhz.js"></script>
14
+ <link rel="stylesheet" crossorigin href="./assets/index-ButPJaOR.css">
15
15
  </head>
16
16
  <body>
17
17
  <div id="app"></div>
@@ -20,16 +20,22 @@ export declare function schema(_configure: (env: Environment) => void): Schema.S
20
20
  }>;
21
21
  export type Value = Schema.Schema.Type<ReturnType<typeof schema>>;
22
22
  /**
23
- * Adopts values stored under the standalone 「请求」 button
24
- * (`com.shwfed.actions.button.http.request.json@2026-04-18`). That button baked
25
- * the whole request lifecycle into itself fire a request, classify the
26
- * result, toast a message, then run one of four result-keyed trigger lists.
27
- * The page now exposes the request as an ambient 「发送请求」 *operation* that is
28
- * itself one step of a trigger chain, so the same behaviour is expressed as an
29
- * ordinary 「触发事件」 button whose trigger list is `before` + the request row +
30
- * the success arm, flattened in order. Migration declarations live exclusively
31
- * on this (replacement) entry; the request folder is kept so not-yet-migrated
32
- * configs keep loading, but it is never touched here.
23
+ * Adopts values from the standalone buttons whose whole behaviour the page now
24
+ * exposes as an ambient *operation* — each is rewritten into an ordinary
25
+ * 「触发事件」 button whose trigger list references that page op. Two sources, one
26
+ * per the established deprecate-standalone-button precedent:
27
+ *
28
+ * - 「请求」 (`com.shwfed.actions.button.http.request.json@2026-04-18`) baked
29
+ * the whole request lifecycle into itself fire, classify, toast, then run
30
+ * one of four result-keyed trigger lists. It maps to `before` + the request
31
+ * op row + the success arm, flattened in order (see `migrateRequest`).
32
+ * - 「导航」 (`com.shwfed.actions.button.navigation@2026-04-21`) opened a link.
33
+ * It maps to a single navigation op row carrying `{ url, mode }` (see
34
+ * `migrateNavigation`).
35
+ *
36
+ * Migration declarations live exclusively on this (replacement) entry; the
37
+ * source folders are kept so not-yet-migrated configs keep loading, but they
38
+ * are never touched here.
33
39
  */
34
40
  export declare const migrateFrom: ReadonlyArray<MigrateSource>;
35
41
  export declare const migrate: MigrateFn;
@@ -2,6 +2,7 @@ import { Effect, Schema } from "effect";
2
2
  import { Triggers } from "../../../../../share/event-bus.js";
3
3
  import { PAGE_TARGET_ID } from "../../../../../share/page-target.js";
4
4
  import * as httpRequestOp from "../../../../operations/2026-06-11/com.shwfed.operation.http.request.json/schema.js";
5
+ import * as navigationOp from "../../../../operations/2026-06-15/com.shwfed.operation.navigation/schema.js";
5
6
  export const type = "com.shwfed.actions.button.event.dispatch";
6
7
  export const compatibilityDate = "2026-05-15";
7
8
  export const metadata = {
@@ -21,56 +22,80 @@ export function schema(_configure) {
21
22
  });
22
23
  }
23
24
  export const migrateFrom = [
24
- { type: "com.shwfed.actions.button.http.request.json", compatibilityDate: "2026-04-18" }
25
+ { type: "com.shwfed.actions.button.http.request.json", compatibilityDate: "2026-04-18" },
26
+ { type: "com.shwfed.actions.button.navigation", compatibilityDate: "2026-04-21" }
25
27
  ];
28
+ function pageOpRow(operation, opCompatibilityDate, params) {
29
+ return {
30
+ id: crypto.randomUUID(),
31
+ target: PAGE_TARGET_ID,
32
+ operation,
33
+ compatibilityDate: opCompatibilityDate,
34
+ params
35
+ };
36
+ }
37
+ function migrateRequest(prev) {
38
+ const {
39
+ type: _t,
40
+ compatibilityDate: _c,
41
+ expression,
42
+ before,
43
+ messageExpression,
44
+ resultExpression,
45
+ onSuccess,
46
+ onWarning,
47
+ onError,
48
+ onInfo,
49
+ ...rest
50
+ } = prev;
51
+ const nonEmpty = (arm) => Array.isArray(arm) && arm.length > 0;
52
+ if (nonEmpty(onWarning) || nonEmpty(onError) || nonEmpty(onInfo)) {
53
+ throw new Error("\u8BE5\u300C\u8BF7\u6C42\u300D\u6309\u94AE\u914D\u7F6E\u4E86\u300C\u8B66\u544A\u300D\u300C\u9519\u8BEF\u300D\u6216\u300C\u4FE1\u606F\u300D\u5206\u652F\uFF0C\u65E0\u6CD5\u81EA\u52A8\u8FC1\u79FB\u4E3A\u89E6\u53D1\u94FE\uFF0C\u8BF7\u624B\u52A8\u6539\u5199");
54
+ }
55
+ const onCompleted = typeof messageExpression === "string" && messageExpression.length > 0 ? `(${messageExpression})` : "''";
56
+ const titleExpression = `json == null ? '\u8BF7\u6C42\u5931\u8D25' : ${onCompleted}`;
57
+ const params = {
58
+ expression: typeof expression === "string" ? expression : "",
59
+ titleExpression
60
+ };
61
+ if (typeof resultExpression === "string" && resultExpression.length > 0) {
62
+ params.resultExpression = resultExpression;
63
+ }
64
+ const requestRow = pageOpRow(httpRequestOp.type, httpRequestOp.compatibilityDate, params);
65
+ const beforeRows = Array.isArray(before) ? before : [];
66
+ const successRows = Array.isArray(onSuccess) ? onSuccess : [];
67
+ return {
68
+ ...rest,
69
+ type,
70
+ compatibilityDate,
71
+ triggers: [...beforeRows, requestRow, ...successRows]
72
+ };
73
+ }
74
+ function migrateNavigation(prev) {
75
+ const { type: _t, compatibilityDate: _c, url, mode, ...rest } = prev;
76
+ const params = { url, mode };
77
+ const row = pageOpRow(navigationOp.type, navigationOp.compatibilityDate, params);
78
+ return {
79
+ ...rest,
80
+ type,
81
+ compatibilityDate,
82
+ triggers: [row]
83
+ };
84
+ }
26
85
  export const migrate = (prev) => Effect.try({
27
86
  try: () => {
28
87
  if (!prev || typeof prev !== "object") {
29
88
  throw new Error("\u89E6\u53D1\u4E8B\u4EF6\u8FC1\u79FB\u5931\u8D25\uFF1A\u539F\u503C\u4E0D\u662F\u5BF9\u8C61");
30
89
  }
31
- const {
32
- type: _t,
33
- compatibilityDate: _c,
34
- expression,
35
- before,
36
- messageExpression,
37
- resultExpression,
38
- onSuccess,
39
- onWarning,
40
- onError,
41
- onInfo,
42
- ...rest
43
- } = prev;
44
- const nonEmpty = (arm) => Array.isArray(arm) && arm.length > 0;
45
- if (nonEmpty(onWarning) || nonEmpty(onError) || nonEmpty(onInfo)) {
46
- throw new Error("\u8BE5\u300C\u8BF7\u6C42\u300D\u6309\u94AE\u914D\u7F6E\u4E86\u300C\u8B66\u544A\u300D\u300C\u9519\u8BEF\u300D\u6216\u300C\u4FE1\u606F\u300D\u5206\u652F\uFF0C\u65E0\u6CD5\u81EA\u52A8\u8FC1\u79FB\u4E3A\u89E6\u53D1\u94FE\uFF0C\u8BF7\u624B\u52A8\u6539\u5199");
47
- }
48
- const onCompleted = typeof messageExpression === "string" && messageExpression.length > 0 ? `(${messageExpression})` : "''";
49
- const titleExpression = `json == null ? '\u8BF7\u6C42\u5931\u8D25' : ${onCompleted}`;
50
- const params = {
51
- expression: typeof expression === "string" ? expression : "",
52
- titleExpression
53
- };
54
- if (typeof resultExpression === "string" && resultExpression.length > 0) {
55
- params.resultExpression = resultExpression;
90
+ const record = prev;
91
+ switch (record.type) {
92
+ case "com.shwfed.actions.button.http.request.json":
93
+ return migrateRequest(record);
94
+ case "com.shwfed.actions.button.navigation":
95
+ return migrateNavigation(record);
96
+ default:
97
+ throw new Error(`\u89E6\u53D1\u4E8B\u4EF6\u8FC1\u79FB\u5931\u8D25\uFF1A\u65E0\u6CD5\u8BC6\u522B\u7684\u6765\u6E90\u7C7B\u578B ${String(record.type)}`);
56
98
  }
57
- const requestRow = {
58
- // The row id is the address later steps reference outputs under; mint a
59
- // stable one so it survives reorders (see the Trigger schema).
60
- id: crypto.randomUUID(),
61
- target: PAGE_TARGET_ID,
62
- operation: httpRequestOp.type,
63
- compatibilityDate: httpRequestOp.compatibilityDate,
64
- params
65
- };
66
- const beforeRows = Array.isArray(before) ? before : [];
67
- const successRows = Array.isArray(onSuccess) ? onSuccess : [];
68
- return {
69
- ...rest,
70
- type,
71
- compatibilityDate,
72
- triggers: [...beforeRows, requestRow, ...successRows]
73
- };
74
99
  },
75
100
  catch: (e) => e instanceof Error ? e : new Error(String(e))
76
101
  });
@@ -5,6 +5,7 @@ export declare const compatibilityDate: "2026-05-21";
5
5
  export declare const metadata: {
6
6
  readonly name: "下载文件";
7
7
  readonly icon: "fluent:arrow-download-20-regular";
8
+ readonly deprecated: "本按钮已废弃:改用「触发事件」按钮,其触发列表串联页面的「下载文件」操作;原两步式(先取凭据再下载)现为一个「发送请求」行后接一个引用 `steps[\"<步骤标识>\"]` 的「下载文件」行。";
8
9
  };
9
10
  export declare const JSON_VAR: {
10
11
  readonly type: "dyn";
@@ -6,7 +6,11 @@ export const type = "com.shwfed.actions.button.http.download";
6
6
  export const compatibilityDate = "2026-05-21";
7
7
  export const metadata = {
8
8
  name: "\u4E0B\u8F7D\u6587\u4EF6",
9
- icon: "fluent:arrow-download-20-regular"
9
+ icon: "fluent:arrow-download-20-regular",
10
+ // No structured migrate target — designers rebuild downloads by hand. Use a
11
+ // 触发事件 按钮,其触发列表串联页面的「下载文件」操作即可替代本按钮;原来的两步式
12
+ // (先取凭据再下载)现为一个「发送请求」行后接一个引用 `steps["<步骤标识>"]` 的「下载文件」行。
13
+ deprecated: '\u672C\u6309\u94AE\u5DF2\u5E9F\u5F03\uFF1A\u6539\u7528\u300C\u89E6\u53D1\u4E8B\u4EF6\u300D\u6309\u94AE\uFF0C\u5176\u89E6\u53D1\u5217\u8868\u4E32\u8054\u9875\u9762\u7684\u300C\u4E0B\u8F7D\u6587\u4EF6\u300D\u64CD\u4F5C\uFF1B\u539F\u4E24\u6B65\u5F0F\uFF08\u5148\u53D6\u51ED\u636E\u518D\u4E0B\u8F7D\uFF09\u73B0\u4E3A\u4E00\u4E2A\u300C\u53D1\u9001\u8BF7\u6C42\u300D\u884C\u540E\u63A5\u4E00\u4E2A\u5F15\u7528 `steps["<\u6B65\u9AA4\u6807\u8BC6>"]` \u7684\u300C\u4E0B\u8F7D\u6587\u4EF6\u300D\u884C\u3002'
10
14
  };
11
15
  export const JSON_VAR = {
12
16
  type: "dyn",
@@ -197,6 +197,12 @@ const { planeRef, coordinate, bgStyle, isDragging: isPanning } = useInfinitePlan
197
197
  gap: CANVAS_STEP_PX,
198
198
  enabled: isSpaceHeld
199
199
  });
200
+ function onCanvasWheel(e) {
201
+ if (e.target?.closest(".inline-config-pane")) return;
202
+ e.preventDefault();
203
+ const [dx, dy] = e.shiftKey && e.deltaX === 0 ? [e.deltaY, 0] : [e.deltaX, e.deltaY];
204
+ coordinate.value = { x: coordinate.value.x - dx, y: coordinate.value.y - dy };
205
+ }
200
206
  onMounted(() => recenterSoon());
201
207
  function recenter() {
202
208
  const el = planeRef.value;
@@ -919,6 +925,7 @@ function onCanvasKeydown(e) {
919
925
  class="overflow-hidden border border-zinc-200 bg-zinc-50 select-none outline-none"
920
926
  :class="isFullscreen ? 'fixed inset-0 z-40 h-screen w-screen' : 'relative h-full rounded'"
921
927
  @keydown="onCanvasKeydown"
928
+ @wheel="onCanvasWheel"
922
929
  >
923
930
  <ContextMenu>
924
931
  <ContextMenuTrigger as-child>
@@ -1447,6 +1454,7 @@ function onCanvasKeydown(e) {
1447
1454
  v-for="entry in props.pickerEntries"
1448
1455
  :key="`new:${entry.type}@${entry.compatibilityDate}`"
1449
1456
  :value="`new:${entry.type}@${entry.compatibilityDate}`"
1457
+ :keywords="entry.type"
1450
1458
  @select="emitAddNew(entry)"
1451
1459
  >
1452
1460
  <Icon
@@ -19,7 +19,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
19
19
  readonly displayName?: string | undefined;
20
20
  readonly kind: "shwfed.component.form";
21
21
  readonly fields: readonly any[];
22
- readonly readonly?: string | undefined;
23
22
  readonly layouts: readonly {
24
23
  readonly name: string;
25
24
  readonly layout: {
@@ -37,6 +36,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
37
36
  };
38
37
  readonly media?: string | undefined;
39
38
  }[];
39
+ readonly readonly?: string | undefined;
40
40
  };
41
41
  readonly type: "com.shwfed.block.form";
42
42
  readonly id: string;
@@ -54,7 +54,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
54
54
  readonly displayName?: string | undefined;
55
55
  readonly kind: "shwfed.component.form";
56
56
  readonly fields: readonly any[];
57
- readonly readonly?: string | undefined;
58
57
  readonly layouts: readonly {
59
58
  readonly name: string;
60
59
  readonly layout: {
@@ -72,6 +71,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
72
71
  };
73
72
  readonly media?: string | undefined;
74
73
  }[];
74
+ readonly readonly?: string | undefined;
75
75
  };
76
76
  readonly type: "com.shwfed.block.form";
77
77
  readonly id: string;
@@ -19,7 +19,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
19
19
  readonly displayName?: string | undefined;
20
20
  readonly kind: "shwfed.component.form";
21
21
  readonly fields: readonly any[];
22
- readonly readonly?: string | undefined;
23
22
  readonly layouts: readonly {
24
23
  readonly name: string;
25
24
  readonly layout: {
@@ -37,6 +36,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
37
36
  };
38
37
  readonly media?: string | undefined;
39
38
  }[];
39
+ readonly readonly?: string | undefined;
40
40
  };
41
41
  readonly type: "com.shwfed.block.form";
42
42
  readonly id: string;
@@ -54,7 +54,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
54
54
  readonly displayName?: string | undefined;
55
55
  readonly kind: "shwfed.component.form";
56
56
  readonly fields: readonly any[];
57
- readonly readonly?: string | undefined;
58
57
  readonly layouts: readonly {
59
58
  readonly name: string;
60
59
  readonly layout: {
@@ -72,6 +71,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
72
71
  };
73
72
  readonly media?: string | undefined;
74
73
  }[];
74
+ readonly readonly?: string | undefined;
75
75
  };
76
76
  readonly type: "com.shwfed.block.form";
77
77
  readonly id: string;
@@ -10,7 +10,6 @@ type __VLS_ModelProps = {
10
10
  };
11
11
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
12
12
  declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
- "update:modelValue": (value: FormState) => any;
14
13
  "update:block": (value: {
15
14
  readonly form: {
16
15
  readonly style?: string | undefined;
@@ -22,7 +21,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
22
21
  readonly displayName?: string | undefined;
23
22
  readonly kind: "shwfed.component.form";
24
23
  readonly fields: readonly any[];
25
- readonly readonly?: string | undefined;
26
24
  readonly layouts: readonly {
27
25
  readonly name: string;
28
26
  readonly layout: {
@@ -40,13 +38,14 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
40
38
  };
41
39
  readonly media?: string | undefined;
42
40
  }[];
41
+ readonly readonly?: string | undefined;
43
42
  };
44
43
  readonly type: "com.shwfed.block.form";
45
44
  readonly id: string;
46
45
  readonly compatibilityDate: "2026-05-06";
47
46
  }) => any;
47
+ "update:modelValue": (value: FormState) => any;
48
48
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
49
- "onUpdate:modelValue"?: ((value: FormState) => any) | undefined;
50
49
  "onUpdate:block"?: ((value: {
51
50
  readonly form: {
52
51
  readonly style?: string | undefined;
@@ -58,7 +57,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
58
57
  readonly displayName?: string | undefined;
59
58
  readonly kind: "shwfed.component.form";
60
59
  readonly fields: readonly any[];
61
- readonly readonly?: string | undefined;
62
60
  readonly layouts: readonly {
63
61
  readonly name: string;
64
62
  readonly layout: {
@@ -76,11 +74,13 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
76
74
  };
77
75
  readonly media?: string | undefined;
78
76
  }[];
77
+ readonly readonly?: string | undefined;
79
78
  };
80
79
  readonly type: "com.shwfed.block.form";
81
80
  readonly id: string;
82
81
  readonly compatibilityDate: "2026-05-06";
83
82
  }) => any) | undefined;
83
+ "onUpdate:modelValue"?: ((value: FormState) => any) | undefined;
84
84
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
85
85
  declare const _default: typeof __VLS_export;
86
86
  export default _default;
@@ -10,7 +10,6 @@ type __VLS_ModelProps = {
10
10
  };
11
11
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
12
12
  declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
- "update:modelValue": (value: FormState) => any;
14
13
  "update:block": (value: {
15
14
  readonly form: {
16
15
  readonly style?: string | undefined;
@@ -22,7 +21,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
22
21
  readonly displayName?: string | undefined;
23
22
  readonly kind: "shwfed.component.form";
24
23
  readonly fields: readonly any[];
25
- readonly readonly?: string | undefined;
26
24
  readonly layouts: readonly {
27
25
  readonly name: string;
28
26
  readonly layout: {
@@ -40,13 +38,14 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
40
38
  };
41
39
  readonly media?: string | undefined;
42
40
  }[];
41
+ readonly readonly?: string | undefined;
43
42
  };
44
43
  readonly type: "com.shwfed.block.form";
45
44
  readonly id: string;
46
45
  readonly compatibilityDate: "2026-05-06";
47
46
  }) => any;
47
+ "update:modelValue": (value: FormState) => any;
48
48
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
49
- "onUpdate:modelValue"?: ((value: FormState) => any) | undefined;
50
49
  "onUpdate:block"?: ((value: {
51
50
  readonly form: {
52
51
  readonly style?: string | undefined;
@@ -58,7 +57,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
58
57
  readonly displayName?: string | undefined;
59
58
  readonly kind: "shwfed.component.form";
60
59
  readonly fields: readonly any[];
61
- readonly readonly?: string | undefined;
62
60
  readonly layouts: readonly {
63
61
  readonly name: string;
64
62
  readonly layout: {
@@ -76,11 +74,13 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
76
74
  };
77
75
  readonly media?: string | undefined;
78
76
  }[];
77
+ readonly readonly?: string | undefined;
79
78
  };
80
79
  readonly type: "com.shwfed.block.form";
81
80
  readonly id: string;
82
81
  readonly compatibilityDate: "2026-05-06";
83
82
  }) => any) | undefined;
83
+ "onUpdate:modelValue"?: ((value: FormState) => any) | undefined;
84
84
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
85
85
  declare const _default: typeof __VLS_export;
86
86
  export default _default;
@@ -31,7 +31,6 @@ export declare function schema(configure: (env: Environment) => void, _blockRef:
31
31
  readonly displayName?: string | undefined;
32
32
  readonly kind: "shwfed.component.form";
33
33
  readonly fields: readonly any[];
34
- readonly readonly?: string | undefined;
35
34
  readonly layouts: readonly {
36
35
  readonly name: string;
37
36
  readonly layout: {
@@ -49,6 +48,7 @@ export declare function schema(configure: (env: Environment) => void, _blockRef:
49
48
  };
50
49
  readonly media?: string | undefined;
51
50
  }[];
51
+ readonly readonly?: string | undefined;
52
52
  }, Schema.Struct<{
53
53
  fields: Schema.Array$<Schema.Schema<any, any, never>>;
54
54
  layouts: Schema.refine<readonly {
@@ -44,7 +44,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
44
44
  readonly displayName?: string | undefined;
45
45
  readonly kind: "shwfed.component.form";
46
46
  readonly fields: readonly any[];
47
- readonly readonly?: string | undefined;
48
47
  readonly layouts: readonly {
49
48
  readonly name: string;
50
49
  readonly layout: {
@@ -62,6 +61,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
62
61
  };
63
62
  readonly media?: string | undefined;
64
63
  }[];
64
+ readonly readonly?: string | undefined;
65
65
  } | undefined;
66
66
  readonly dataSource?: {
67
67
  readonly data: string;
@@ -292,7 +292,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
292
292
  readonly displayName?: string | undefined;
293
293
  readonly kind: "shwfed.component.form";
294
294
  readonly fields: readonly any[];
295
- readonly readonly?: string | undefined;
296
295
  readonly layouts: readonly {
297
296
  readonly name: string;
298
297
  readonly layout: {
@@ -310,6 +309,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
310
309
  };
311
310
  readonly media?: string | undefined;
312
311
  }[];
312
+ readonly readonly?: string | undefined;
313
313
  } | undefined;
314
314
  readonly dataSource?: {
315
315
  readonly data: string;
@@ -44,7 +44,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
44
44
  readonly displayName?: string | undefined;
45
45
  readonly kind: "shwfed.component.form";
46
46
  readonly fields: readonly any[];
47
- readonly readonly?: string | undefined;
48
47
  readonly layouts: readonly {
49
48
  readonly name: string;
50
49
  readonly layout: {
@@ -62,6 +61,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
62
61
  };
63
62
  readonly media?: string | undefined;
64
63
  }[];
64
+ readonly readonly?: string | undefined;
65
65
  } | undefined;
66
66
  readonly dataSource?: {
67
67
  readonly data: string;
@@ -292,7 +292,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
292
292
  readonly displayName?: string | undefined;
293
293
  readonly kind: "shwfed.component.form";
294
294
  readonly fields: readonly any[];
295
- readonly readonly?: string | undefined;
296
295
  readonly layouts: readonly {
297
296
  readonly name: string;
298
297
  readonly layout: {
@@ -310,6 +309,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
310
309
  };
311
310
  readonly media?: string | undefined;
312
311
  }[];
312
+ readonly readonly?: string | undefined;
313
313
  } | undefined;
314
314
  readonly dataSource?: {
315
315
  readonly data: string;
@@ -39,7 +39,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
39
39
  readonly displayName?: string | undefined;
40
40
  readonly kind: "shwfed.component.form";
41
41
  readonly fields: readonly any[];
42
- readonly readonly?: string | undefined;
43
42
  readonly layouts: readonly {
44
43
  readonly name: string;
45
44
  readonly layout: {
@@ -57,6 +56,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
57
56
  };
58
57
  readonly media?: string | undefined;
59
58
  }[];
59
+ readonly readonly?: string | undefined;
60
60
  } | undefined;
61
61
  readonly dataSource?: {
62
62
  readonly data: string;
@@ -287,7 +287,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
287
287
  readonly displayName?: string | undefined;
288
288
  readonly kind: "shwfed.component.form";
289
289
  readonly fields: readonly any[];
290
- readonly readonly?: string | undefined;
291
290
  readonly layouts: readonly {
292
291
  readonly name: string;
293
292
  readonly layout: {
@@ -305,6 +304,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
305
304
  };
306
305
  readonly media?: string | undefined;
307
306
  }[];
307
+ readonly readonly?: string | undefined;
308
308
  } | undefined;
309
309
  readonly dataSource?: {
310
310
  readonly data: string;
@@ -39,7 +39,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
39
39
  readonly displayName?: string | undefined;
40
40
  readonly kind: "shwfed.component.form";
41
41
  readonly fields: readonly any[];
42
- readonly readonly?: string | undefined;
43
42
  readonly layouts: readonly {
44
43
  readonly name: string;
45
44
  readonly layout: {
@@ -57,6 +56,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
57
56
  };
58
57
  readonly media?: string | undefined;
59
58
  }[];
59
+ readonly readonly?: string | undefined;
60
60
  } | undefined;
61
61
  readonly dataSource?: {
62
62
  readonly data: string;
@@ -287,7 +287,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
287
287
  readonly displayName?: string | undefined;
288
288
  readonly kind: "shwfed.component.form";
289
289
  readonly fields: readonly any[];
290
- readonly readonly?: string | undefined;
291
290
  readonly layouts: readonly {
292
291
  readonly name: string;
293
292
  readonly layout: {
@@ -305,6 +304,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
305
304
  };
306
305
  readonly media?: string | undefined;
307
306
  }[];
307
+ readonly readonly?: string | undefined;
308
308
  } | undefined;
309
309
  readonly dataSource?: {
310
310
  readonly data: string;