@reformer/builder 3.0.0-beta.7 → 3.0.0-beta.8

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 (120) hide show
  1. package/bin/reformer-builder.mjs +1 -1
  2. package/dist/assets/css/index-CHjtwIsF.css +1 -0
  3. package/dist/assets/i18n/en-uNov8AYL.js +1 -0
  4. package/dist/assets/i18n/ru-BNkTKaU6.js +1 -0
  5. package/dist/assets/js/index-C4LjLCAZ.js +57 -0
  6. package/dist/assets/monaco/html-DT-eqvPn.js +1 -0
  7. package/dist/assets/monaco/javascript-CIJHG94Q.js +1 -0
  8. package/dist/assets/monaco/{jsonMode-C3DAkvde.js → jsonMode-rEmNPnut.js} +3 -3
  9. package/dist/assets/monaco/{monaco-runtime-DNdOZY7f.js → monaco-runtime-Dqtu7Dpv.js} +137 -137
  10. package/dist/assets/monaco/typescript-Bp6doald.js +1 -0
  11. package/dist/assets/monaco/xml-D8D5UF1F.js +1 -0
  12. package/dist/assets/monaco/yaml-DsiyZy1w.js +1 -0
  13. package/dist/assets/plugins/{ai-jKAVkXuU.js → ai-CFoGZBd-.js} +36 -36
  14. package/dist/assets/plugins/{ai-byok-DgeZQTZb.js → ai-byok-a7JlkizL.js} +1 -1
  15. package/dist/assets/plugins/ai-knowledge-docs-BcbN7Ar1.js +1 -0
  16. package/dist/assets/plugins/ai-knowledge-index-CncxmxEf.js +1 -0
  17. package/dist/assets/plugins/codegen-DPh2ynzq.js +520 -0
  18. package/dist/assets/plugins/{editor-markdown-MarkdownPreview-DyHZvj8H.js → editor-markdown-MarkdownPreview-CjVpNIV5.js} +3 -3
  19. package/dist/assets/plugins/editor-markdown-McTrLzET.js +2 -0
  20. package/dist/assets/plugins/editor-monaco-7BM478IS.js +14 -0
  21. package/dist/assets/plugins/editor-schema-DOoRcy16.js +4 -0
  22. package/dist/assets/plugins/files-WhQya3nC.js +2 -0
  23. package/dist/assets/plugins/plain-4ISpXJVh.js +78 -0
  24. package/dist/assets/plugins/plugin-manager-Ek0Ph0Jj.js +1 -0
  25. package/dist/assets/plugins/preview-BSh_puVw.js +1 -0
  26. package/dist/assets/plugins/preview-runtime-B8NzDg53.js +3 -0
  27. package/dist/assets/plugins/templates-BE9B0S3J.js +2 -0
  28. package/dist/assets/vendor/{ajv-CCplthOF.js → ajv-N5zGp_lm.js} +1 -1
  29. package/dist/assets/vendor/calendar-base-BW48REpD-BYc4qqRC.js +1 -0
  30. package/dist/assets/vendor/carousel-BDyy29mt.js +1 -0
  31. package/dist/assets/vendor/chart-Cbp9J5YJ.js +52 -0
  32. package/dist/assets/vendor/collapsible-base-DZxAKbAF-DtQ4867U.js +1 -0
  33. package/dist/assets/vendor/drawer-BdLrIIeu.js +3 -0
  34. package/dist/assets/vendor/highlight.js/{common-g0-hl6Ud.js → common-B96EybDa.js} +1 -1
  35. package/dist/assets/vendor/index-BTAoX623.js +6 -0
  36. package/dist/assets/vendor/index-D8ACoUqy.js +51 -0
  37. package/dist/assets/vendor/input-otp-BoPlZ6dt.js +20 -0
  38. package/dist/assets/vendor/lucide-react/arrow-left-BlVPt6Ag.js +1 -0
  39. package/dist/assets/vendor/lucide-react/arrow-right-I5ntlq0-.js +1 -0
  40. package/dist/assets/vendor/lucide-react/calendar-L-57WZlQ.js +1 -0
  41. package/dist/assets/vendor/lucide-react/eye-DVTIIHcH.js +1 -0
  42. package/dist/assets/vendor/lucide-react/file-code-corner-DUfMS_yi.js +1 -0
  43. package/dist/assets/vendor/lucide-react/folder-tree-COyCkaDl.js +1 -0
  44. package/dist/assets/vendor/lucide-react/minus-zJRYKuAo.js +1 -0
  45. package/dist/assets/vendor/lucide-react/plus-B0WG2JcM.js +1 -0
  46. package/dist/assets/vendor/lucide-react/rotate-ccw-BSYk0mux.js +1 -0
  47. package/dist/assets/vendor/lucide-react/wrench-mybFdWHD.js +1 -0
  48. package/dist/assets/vendor/message-base-B5jT1FuY-BvDKjuSs.js +1 -0
  49. package/dist/assets/vendor/message-scroller-B2tlOtxT.js +1 -0
  50. package/dist/assets/vendor/reformer-builder-stack-reformer/node-token-VfZdCqcs.js +1 -0
  51. package/dist/assets/vendor/reformer-builder-stack-reformer/paths-DeGLVPUt.js +1 -0
  52. package/dist/assets/{js/rules-CM1OzesO.js → vendor/reformer-builder-stack-reformer/rules-CQSVDlmo.js} +1 -1
  53. package/dist/assets/vendor/reformer-builder-stack-reformer/selectors-CjNSFsK9.js +1 -0
  54. package/dist/assets/vendor/reformer-builder-toolkit/marker-DiOaKX-e.js +4 -0
  55. package/dist/assets/vendor/reformer-cdk/define-steps-CyGUrx9p-vcI1WbRz.js +1 -0
  56. package/dist/assets/vendor/reformer-cdk/file-upload-D8FOieMN.js +1 -0
  57. package/dist/assets/vendor/reformer-cdk/form-array-DlFEb40E.js +1 -0
  58. package/dist/assets/vendor/reformer-cdk/form-wizard-DDLs_-Ya.js +1 -0
  59. package/dist/assets/vendor/reformer-cdk/index-CeCSv2Go.js +1 -0
  60. package/dist/assets/vendor/reformer-cdk/{list-BrqYwhrQ.js → list-DkqJWU70.js} +1 -1
  61. package/dist/assets/vendor/reformer-form-registry/{index-s1IAa6Lm.js → index-DflpiFcm.js} +1 -1
  62. package/dist/assets/vendor/reformer-form-registry/loader-BK2c_fCA-BtIEWzon.js +2 -0
  63. package/dist/assets/vendor/reformer-form-registry/react-BiEQRau3.js +1 -0
  64. package/dist/assets/vendor/reformer-renderer-json/{validate-C5Gll2Yt.js → validate-DXzHWMfT.js} +1 -1
  65. package/dist/assets/vendor/reformer-ui-kit/alert-base-WOl_V-qI-2ZIfaT1o.js +1 -0
  66. package/dist/assets/vendor/reformer-ui-kit/calendar-Bm2DDJDU.js +1 -0
  67. package/dist/assets/vendor/reformer-ui-kit/calendar-base.props-CqesU7CZ-tpDaVQbq.js +1 -0
  68. package/dist/assets/vendor/reformer-ui-kit/combobox-Dm4bFCVg.js +1 -0
  69. package/dist/assets/vendor/reformer-ui-kit/combobox-tree.props-BEQhnapq-DQmsBcYk.js +1 -0
  70. package/dist/assets/vendor/reformer-ui-kit/component-catalog-BEv0Zf-R.js +1 -0
  71. package/dist/assets/vendor/reformer-ui-kit/date-picker-CkVXt6Uh.js +1 -0
  72. package/dist/assets/vendor/reformer-ui-kit/date-picker-base.props-WBloFrDq-QhVYMCMG.js +1 -0
  73. package/dist/assets/vendor/reformer-ui-kit/input-otp-base.props-D1xRJiuO-DBKxHsz1.js +1 -0
  74. package/dist/assets/vendor/reformer-ui-kit/meta-YyKXxsBK.js +1 -0
  75. package/dist/assets/vendor/reformer-ui-kit/sidebar-CMzt3bAb.js +1 -0
  76. package/dist/assets/vendor/reformer-ui-kit/skeleton-base-C-lIzi0D-BjmjAmE9.js +1 -0
  77. package/dist/assets/vendor/reformer-ui-kit/toggle-group-multi.props-7kNpujN6-jLENMOcN.js +1 -0
  78. package/dist/assets/vendor/reformer-ui-kit/tree-node-schema-xHyN0QCr-CLbM_Aw_.js +1 -0
  79. package/dist/assets/vendor/render-DutGx1TC.js +46 -0
  80. package/dist/assets/vendor/sheet-base-Bdh947IC-CH2UsjIt.js +1 -0
  81. package/dist/assets/vendor/typescript/{typescript-Dp5hP5cS.js → typescript-BejA4q8A.js} +1 -1
  82. package/dist/index.html +2 -2
  83. package/package.json +6 -2
  84. package/runtime-config.schema.json +23 -1
  85. package/dist/assets/css/index-DgRudQqc.css +0 -1
  86. package/dist/assets/i18n/en-DHElWsPO.js +0 -1
  87. package/dist/assets/i18n/ru-DXsuKRv9.js +0 -1
  88. package/dist/assets/js/index-BSeq6-8S.js +0 -67
  89. package/dist/assets/js/index-CQvmAVe0.js +0 -115
  90. package/dist/assets/js/selectors-BiPlGN2c.js +0 -1
  91. package/dist/assets/monaco/html-R9lQ-L9C.js +0 -1
  92. package/dist/assets/monaco/javascript-COUjr2au.js +0 -1
  93. package/dist/assets/monaco/typescript-CVSiBX9O.js +0 -1
  94. package/dist/assets/monaco/xml-ee1lph4p.js +0 -1
  95. package/dist/assets/monaco/yaml-DXPc9WLc.js +0 -1
  96. package/dist/assets/plugins/ai-knowledge-docs-DCjqodcj.js +0 -1
  97. package/dist/assets/plugins/ai-knowledge-index-bUfNPqlZ.js +0 -1
  98. package/dist/assets/plugins/codegen-B0riFOHC.js +0 -416
  99. package/dist/assets/plugins/editor-markdown-oiBrRpM4.js +0 -2
  100. package/dist/assets/plugins/editor-schema-CVPAk-MV.js +0 -4
  101. package/dist/assets/plugins/plugin-manager-BmjjSqYy.js +0 -1
  102. package/dist/assets/plugins/templates-DNeIl0cD.js +0 -2
  103. package/dist/assets/vendor/collapsible-base-DZxAKbAF-h07cIL_F.js +0 -1
  104. package/dist/assets/vendor/index-jGqhTST4.js +0 -6
  105. package/dist/assets/vendor/lucide-react/eye-COs0olKf.js +0 -1
  106. package/dist/assets/vendor/lucide-react/file-code-corner-BMVX-Qf1.js +0 -1
  107. package/dist/assets/vendor/lucide-react/rotate-ccw-D0mVnqJN.js +0 -1
  108. package/dist/assets/vendor/lucide-react/wrench-BX6KiYsu.js +0 -1
  109. package/dist/assets/vendor/message-base-B5jT1FuY-GU8TkaN4.js +0 -1
  110. package/dist/assets/vendor/reformer-cdk/async-boundary-DPu-1Ifi.js +0 -1
  111. package/dist/assets/vendor/reformer-cdk/define-steps-CyGUrx9p-B_03D9I7.js +0 -1
  112. package/dist/assets/vendor/reformer-cdk/file-upload-C_DEa-OT.js +0 -1
  113. package/dist/assets/vendor/reformer-cdk/form-array-DRkRfAUh.js +0 -1
  114. package/dist/assets/vendor/reformer-cdk/form-wizard-DFqFjH7E.js +0 -1
  115. package/dist/assets/vendor/reformer-cdk/index-BXFomK5m.js +0 -1
  116. package/dist/assets/vendor/reformer-form-registry/loader-BK2c_fCA-D59m3JOQ.js +0 -2
  117. package/dist/assets/vendor/reformer-form-registry/react-B8lbN6s4.js +0 -1
  118. package/dist/assets/vendor/reformer-ui-kit/alert-base-WOl_V-qI-CYoSap05.js +0 -1
  119. package/dist/assets/vendor/reformer-ui-kit/component-catalog-BKjWf5Yx.js +0 -1
  120. /package/dist/assets/{js → vendor/reformer-builder-toolkit}/naming-9aaM0Wbc.js +0 -0
@@ -0,0 +1 @@
1
+ import{j as r}from"../calendar-base-BW48REpD-BYc4qqRC.js";import{v as x}from"../calendar-base-BW48REpD-BYc4qqRC.js";import{ao as s,ap as o,aq as n,ar as t,Z as l}from"../../js/index-C4LjLCAZ.js";import{e as C}from"./calendar-base.props-CqesU7CZ-tpDaVQbq.js";function a(e){return l.jsx(r,{mode:"single",...e})}a.displayName="CalendarSingle";const p=s(n(a,t),o);export{r as Calendar,p as CalendarBaseField,x as CalendarDayButton,p as CalendarField,C as calendarBasePropsSchema};
@@ -0,0 +1 @@
1
+ const e={type:"object",additionalProperties:!1,"x-registryName":"Calendar",properties:{mode:{type:"string",enum:["single"],default:"single",description:"Режим выбора. Field-версия — только single (одна дата, value: Date | null).","x-doc":{group:"Behavior",type:"'single'",kind:"enum"}},captionLayout:{type:"string",enum:["label","dropdown","dropdown-months","dropdown-years"],default:"label",description:"Шапка месяца: статичная подпись или дропдауны выбора месяца/года.","x-doc":{group:"Behavior",type:"'label' | 'dropdown' | 'dropdown-months' | 'dropdown-years'",kind:"enum"}},showOutsideDays:{type:"boolean",default:!0,description:"Показывать дни соседних месяцев в первой и последней неделе.","x-doc":{group:"Behavior",type:"boolean"}},className:{type:"string",description:"Доп. CSS-класс корневого элемента.","x-doc":{group:"Control",type:"string",kind:"readonly"}}},"x-runtimeProps":{value:{group:"Control",type:"Date | null",description:"Выбранная дата. null — ничего не выбрано."},onChange:{group:"Control",type:"(value: Date | null) => void",description:"Выбор даты. Повторный клик по выбранной дате сбрасывает значение в null."}}},o=Object.freeze(Object.defineProperty({__proto__:null,calendarBasePropsSchema:e},Symbol.toStringTag,{value:"Module"}));export{e,o};
@@ -0,0 +1 @@
1
+ import{Y as s,ao as J,as as W,at as Y,Z as e,au as Z,av as Q,aw as _,af as k,ax as ee,ay as ae,az as se,aA as ie,aB as de,aC as ne,aD as ce,aE as U,aF as G,aG as ue,aH as le,aI as re,aJ as te,aK as me,aL as we,aM as xe,aN as be,aO as Ie,aP as ke}from"../../js/index-C4LjLCAZ.js";import{t as Ve,r as Fe,i as Xe,n as Le}from"./combobox-tree.props-BEQhnapq-DQmsBcYk.js";import{P as he}from"../lucide-react/plus-B0WG2JcM.js";import"./tree-node-schema-xHyN0QCr-CLbM_Aw_.js";const pe=s.forwardRef(function({className:c,value:a,onChange:l,onBlur:m,options:t=[],placeholder:x,searchPlaceholder:v,emptyText:M,clearable:H=!1,tooltip:V,creatable:F=!1,disabled:S,id:R,"data-testid":N,"aria-invalid":P,"aria-labelledby":w,"aria-describedby":b,"aria-errormessage":q,"aria-required":h},X){const[T,I]=s.useState(!1),[A,j]=s.useState(""),y=s.useRef(null);s.useImperativeHandle(X,()=>({...W(y),open:()=>I(!0),close:()=>I(!1),clear:()=>l?.(null)}),[l]);const g=s.useMemo(()=>t.find(o=>o.value===a)?.label??(a||void 0),[t,a]),u=A.trim(),i=F&&u.length>0&&!t.some(o=>o.label.toLowerCase()===u.toLowerCase()),B=o=>{I(o),o||(j(""),m?.())},C=o=>{l?.(H&&o===a?null:o),j(""),I(!1)},p=()=>{u&&(l?.(u),j(""),I(!1))},d=o=>{o.stopPropagation(),l?.(null)},D=H&&!!a&&!S,$=Y(V,{id:R,describedBy:b,testId:N}),z=(D?1:0)+($.node?1:0);return e.jsxs("div",{className:"relative w-full",children:[e.jsxs(Z,{open:T,onOpenChange:B,children:[e.jsx(Q,{asChild:!0,children:e.jsxs(_,{ref:y,type:"button",variant:"outline",role:"combobox","aria-expanded":T,disabled:S,id:R,"data-testid":N,"aria-invalid":P,"aria-labelledby":w,"aria-describedby":$.describedBy,"aria-errormessage":q,"aria-required":h,className:k("w-full justify-between font-normal",c),children:[e.jsx("span",{className:k("truncate",g==null&&"text-muted-foreground"),children:g??x??"Select an option..."}),e.jsx(ee,{className:k("size-4 shrink-0 opacity-50",ae[z])})]})}),e.jsx(se,{align:"start",className:"w-(--radix-popover-trigger-width) p-0",children:e.jsxs(ie,{children:[e.jsx(de,{placeholder:v??"Search...",value:A,onValueChange:j}),e.jsxs(ne,{children:[!i&&e.jsx(ce,{children:M??"No options found."}),e.jsx(U,{children:t.map(o=>e.jsxs(G,{value:o.label,onSelect:()=>C(o.value),children:[e.jsx(ue,{className:k("mr-2 size-4",a===o.value?"opacity-100":"opacity-0")}),o.label]},o.value))}),i&&e.jsx(U,{children:e.jsxs(G,{value:u,onSelect:p,children:[e.jsx(he,{className:"mr-2 size-4"}),"Создать «",u,"»"]})})]})]})})]}),z>0&&e.jsxs("div",{"data-slot":"select-trailing",className:le,children:[D&&e.jsx("button",{type:"button",className:re,onClick:d,"aria-label":"Clear selection",tabIndex:-1,children:e.jsx(te,{className:"size-4"})}),$.node]})]})});pe.displayName="Combobox";const fe={valueProp:"value",changeProp:"onChange",fromEmit:c=>c??null,toValue:c=>c??null},$e=J(pe,fe,{exposesHandle:!0}),Se=3,ve=s.forwardRef(function({className:c,value:a,onChange:l,onBlur:m,options:t=[],placeholder:x,searchPlaceholder:v,emptyText:M,clearable:H=!1,tooltip:V,creatable:F=!1,maxItems:S,summaryThreshold:R=Se,disabled:N,id:P,"data-testid":w,"aria-invalid":b,"aria-labelledby":q,"aria-describedby":h,"aria-errormessage":X,"aria-required":T},I){const[A,j]=s.useState(!1),[y,g]=s.useState(""),u=s.useRef(null),i=s.useMemo(()=>a??[],[a]);s.useImperativeHandle(I,()=>({...W(u),open:()=>j(!0),close:()=>j(!1),clear:()=>l?.([])}),[l]);const B=s.useCallback(r=>t.find(E=>E.value===r)?.label??r,[t]),C=S!==void 0&&i.length>=S,p=y.trim(),d=F&&p.length>0&&!t.some(r=>r.label.toLowerCase()===p.toLowerCase())&&!i.includes(p),D=r=>{j(r),r||(g(""),m?.())},$=r=>{l?.(i.includes(r)?i.filter(E=>E!==r):[...i,r])},z=()=>{!p||C||(l?.([...i,p]),g(""))},o=r=>{r.stopPropagation(),l?.([])},L=H&&i.length>0&&!N,f=Y(V,{id:P,describedBy:h,testId:w}),O=(L?1:0)+(f.node?1:0),K=i.length>R;return e.jsxs("div",{className:"relative w-full",children:[e.jsxs(Z,{open:A,onOpenChange:D,children:[e.jsx(Q,{asChild:!0,children:e.jsxs(_,{ref:u,type:"button",variant:"outline",role:"combobox","aria-expanded":A,disabled:N,id:P,"data-testid":w,"aria-invalid":b,"aria-labelledby":q,"aria-describedby":f.describedBy,"aria-errormessage":X,"aria-required":T,className:k("h-auto min-h-9 w-full justify-between font-normal",c),children:[i.length===0?e.jsx("span",{className:"truncate text-muted-foreground",children:x??"Select options..."}):K?e.jsxs("span",{className:"truncate","data-slot":"combobox-multi-summary",children:["Выбрано: ",i.length]}):e.jsx("span",{className:"flex flex-wrap gap-1","data-slot":"combobox-multi-chips",children:i.map(r=>e.jsx(me,{variant:"secondary","data-slot":"combobox-multi-chip",children:B(r)},r))}),e.jsx(ee,{className:k("size-4 shrink-0 opacity-50",ae[O])})]})}),e.jsx(se,{align:"start",className:"w-(--radix-popover-trigger-width) p-0",children:e.jsxs(ie,{children:[e.jsx(de,{placeholder:v??"Search...",value:y,onValueChange:g}),e.jsxs(ne,{children:[!d&&e.jsx(ce,{children:M??"No options found."}),e.jsx(U,{children:t.map(r=>{const E=i.includes(r.value);return e.jsxs(G,{value:r.label,disabled:C&&!E,onSelect:()=>$(r.value),"data-testid":w?`${w}-${r.value}`:void 0,children:[e.jsx(we,{checked:E,className:"pointer-events-none mr-2 [&_svg]:text-primary-foreground!",tabIndex:-1,"aria-hidden":"true"}),r.label]},r.value)})}),d&&e.jsx(U,{children:e.jsxs(G,{value:p,onSelect:z,disabled:C,children:[e.jsx(he,{className:"mr-2 size-4"}),"Создать: ",p]})})]})]})})]}),O>0&&e.jsxs("div",{"data-slot":"select-trailing",className:le,children:[L&&e.jsx("button",{type:"button",className:re,onClick:o,"aria-label":"Clear selection",tabIndex:-1,children:e.jsx(te,{className:"size-4"})}),f.node]})]})});ve.displayName="ComboboxMulti";const He=J(ve,xe,{exposesHandle:!0}),Be=12;function oe(c,a){for(const l of c??[]){if(l.id===a)return l;const m=oe(l.children,a);if(m!==void 0)return m}}function je(c,a){if(a==null)return[];const l=[],m=(t,x)=>{for(const v of t??[]){if(v.id===a)return l.push(...x),!0;if(m(v.children,[...x,v.id]))return!0}return!1};return m(c,[]),l}function ye({value:c,onChange:a,placeholder:l,onArrowDown:m,"data-testid":t}){return e.jsxs("div",{"data-slot":"combobox-tree-search",className:"flex h-9 items-center gap-2 border-b px-3",children:[e.jsx(ke,{className:"size-4 shrink-0 opacity-50"}),e.jsx("input",{type:"text",autoComplete:"off",spellCheck:!1,"data-testid":t,className:"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",placeholder:l??"Поиск...",value:c,onChange:x=>{a(x.target.value)},onKeyDown:x=>{x.key==="ArrowDown"&&(x.preventDefault(),m())}})]})}const ge=s.forwardRef(function({className:c,value:a,onChange:l,onBlur:m,nodes:t,loadChildren:x,defaultExpandedIds:v,selectable:M="leaf",placeholder:H,searchPlaceholder:V,emptyText:F,clearable:S=!1,tooltip:R,maxRows:N=Be,disabled:P,id:w,"data-testid":b,"aria-invalid":q,"aria-labelledby":h,"aria-describedby":X,"aria-errormessage":T,"aria-required":I},A){const[j,y]=s.useState(!1),[g,u]=s.useState(""),i=s.useRef(null),B=s.useRef(null);s.useImperativeHandle(A,()=>({...W(i),open:()=>y(!0),close:()=>y(!1),clear:()=>l?.(null),refresh:async f=>{await B.current?.refresh(f)}}),[l]);const C=s.useMemo(()=>{if(!(a==null||a===""))return oe(t,a)?.label??a},[t,a]),p=s.useMemo(()=>[...new Set([...v??[],...je(t,a)])],[v,t,a]),d=f=>{y(f),f||(u(""),m?.())},D=f=>{l?.(S&&f.id===a?null:f.id),u(""),y(!1)},$=f=>{f.stopPropagation(),l?.(null)},z=S&&a!=null&&a!==""&&!P,o=Y(R,{id:w,describedBy:X,testId:b}),L=(z?1:0)+(o.node?1:0);return e.jsxs("div",{className:"relative w-full",children:[e.jsxs(Z,{open:j,onOpenChange:d,children:[e.jsx(Q,{asChild:!0,children:e.jsxs(_,{ref:i,type:"button",variant:"outline",role:"combobox","aria-expanded":j,disabled:P,id:w,"data-testid":b,title:C,"aria-invalid":q,"aria-labelledby":h,"aria-describedby":o.describedBy,"aria-errormessage":T,"aria-required":I,className:k("w-full justify-between font-normal",c),children:[e.jsx("span",{"data-slot":"combobox-tree-value",className:k("truncate",C===void 0&&"text-muted-foreground"),children:C??H??"Выберите файл..."}),e.jsx(ee,{className:k("size-4 shrink-0 opacity-50",ae[L])})]})}),e.jsxs(se,{align:"start",className:"w-(--radix-popover-trigger-width) p-0",children:[e.jsx(ye,{value:g,onChange:u,placeholder:V,onArrowDown:()=>B.current?.focus(),"data-testid":b===void 0?void 0:`${b}-search`}),e.jsx(be,{ref:B,nodes:t,loadChildren:x,defaultExpandedIds:p,defaultSelectedId:a??null,selectable:M,search:g,maxRows:N,emptyText:F??"Ничего не найдено","data-testid":b===void 0?void 0:`${b}-tree`,"aria-labelledby":h,onActivate:D})]})]}),L>0&&e.jsxs("div",{"data-slot":"select-trailing",className:le,children:[z&&e.jsx("button",{type:"button",className:re,onClick:$,"aria-label":"Clear selection","data-testid":b===void 0?void 0:`${b}-clear`,tabIndex:-1,children:e.jsx(te,{className:"size-4"})}),o.node]})]})});ge.displayName="ComboboxTree";const Re=J(ge,fe,{exposesHandle:!0}),ze=3,Me=12,Ce=s.forwardRef(function({className:c,value:a,onChange:l,onBlur:m,nodes:t,loadChildren:x,defaultExpandedIds:v,selectable:M="leaf",placeholder:H,searchPlaceholder:V,emptyText:F,clearable:S=!1,tooltip:R,maxItems:N,summaryThreshold:P=ze,maxRows:w=Me,disabled:b,id:q,"data-testid":h,"aria-invalid":X,"aria-labelledby":T,"aria-describedby":I,"aria-errormessage":A,"aria-required":j},y){const[g,u]=s.useState(!1),[i,B]=s.useState(""),C=s.useRef(null),p=s.useRef(null),d=s.useMemo(()=>a??[],[a]);s.useImperativeHandle(y,()=>({...W(C),open:()=>u(!0),close:()=>u(!1),clear:()=>l?.([]),refresh:async n=>{await p.current?.refresh(n)}}),[l]);const D=s.useCallback(n=>oe(t,n)?.label??n,[t]),$=s.useMemo(()=>[...new Set([...v??[],...d.flatMap(n=>je(t,n))])],[v,t,d]),z=N!==void 0&&d.length>=N,o=s.useCallback(n=>z&&!d.includes(n.id)&&(M==="all"||!Ie(n)),[z,d,M]),L=n=>{u(n),n||(B(""),m?.())},f=n=>{n.stopPropagation(),l?.([])},O=S&&d.length>0&&!b,K=Y(R,{id:q,describedBy:I,testId:h}),r=(O?1:0)+(K.node?1:0),E=d.length>P;return e.jsxs("div",{className:"relative w-full",children:[e.jsxs(Z,{open:g,onOpenChange:L,children:[e.jsx(Q,{asChild:!0,children:e.jsxs(_,{ref:C,type:"button",variant:"outline",role:"combobox","aria-expanded":g,disabled:b,id:q,"data-testid":h,"aria-invalid":X,"aria-labelledby":T,"aria-describedby":K.describedBy,"aria-errormessage":A,"aria-required":j,className:k("h-auto min-h-9 w-full justify-between font-normal",c),children:[d.length===0?e.jsx("span",{className:"truncate text-muted-foreground",children:H??"Выберите файлы..."}):E?e.jsxs("span",{className:"truncate","data-slot":"combobox-tree-multi-summary",children:["Выбрано: ",d.length]}):e.jsx("span",{className:"flex flex-wrap gap-1","data-slot":"combobox-tree-multi-chips",children:d.map(n=>e.jsx(me,{variant:"secondary","data-slot":"combobox-tree-multi-chip",children:D(n)},n))}),e.jsx(ee,{className:k("size-4 shrink-0 opacity-50",ae[r])})]})}),e.jsxs(se,{align:"start",className:"w-(--radix-popover-trigger-width) p-0",children:[e.jsx(ye,{value:i,onChange:B,placeholder:V,onArrowDown:()=>p.current?.focus(),"data-testid":h===void 0?void 0:`${h}-search`}),e.jsx(be,{ref:p,nodes:t,loadChildren:x,defaultExpandedIds:$,selectionMode:"multiple",checkOn:"click",checkedIds:d,onCheckedChange:l,selectable:M,isNodeDisabled:N===void 0?void 0:o,search:i,maxRows:w,emptyText:F??"Ничего не найдено","data-testid":h===void 0?void 0:`${h}-tree`,"aria-labelledby":T,renderActions:(n,Ne)=>Ne.checked?e.jsx(ue,{"aria-hidden":"true","data-slot":"combobox-tree-multi-check",className:"size-3.5"}):null})]})]}),r>0&&e.jsxs("div",{"data-slot":"select-trailing",className:le,children:[O&&e.jsx("button",{type:"button",className:re,onClick:f,"aria-label":"Clear selection","data-testid":h===void 0?void 0:`${h}-clear`,tabIndex:-1,children:e.jsx(te,{className:"size-4"})}),K.node]})]})});Ce.displayName="ComboboxTreeMulti";const qe=J(Ce,xe,{exposesHandle:!0});export{pe as Combobox,$e as ComboboxBaseField,$e as ComboboxField,ve as ComboboxMulti,He as ComboboxMultiField,ge as ComboboxTree,Re as ComboboxTreeField,Ce as ComboboxTreeMulti,qe as ComboboxTreeMultiField,Ve as comboboxBasePropsSchema,Fe as comboboxMultiPropsSchema,Xe as comboboxTreeMultiPropsSchema,Le as comboboxTreePropsSchema};
@@ -0,0 +1 @@
1
+ import{i as e,e as o}from"./tree-node-schema-xHyN0QCr-CLbM_Aw_.js";const t={type:"object",additionalProperties:!1,"x-registryName":"Combobox","x-variantGroup":"Combobox","x-variant":"Один",properties:{className:{type:"string",description:"Доп. CSS-класс триггера.","x-doc":{group:"Control",type:"string",kind:"readonly"}},options:{type:"array",items:{type:"object",required:["value","label"],additionalProperties:!1,properties:{value:{type:"string"},label:{type:"string"}}},description:"Список опций { value, label }. Поиск идёт по label.","x-doc":{group:"Options",type:"Array<{ value; label }>",kind:"readonly"}},placeholder:{type:"string",default:"Select an option...",description:"Подсказка в триггере, пока ничего не выбрано.","x-doc":{group:"Textfield",type:"string"}},searchPlaceholder:{type:"string",default:"Search...",description:"Подсказка в поле поиска.","x-doc":{group:"Textfield",type:"string"}},emptyText:{type:"string",default:"No options found.",description:"Текст пустого состояния (ничего не найдено).","x-doc":{group:"Textfield",type:"string"}},clearable:{type:"boolean",default:!1,description:"Показывать крестик очистки (сброс в null); повторный выбор опции тоже сбрасывает.","x-doc":{group:"Behavior",type:"boolean"}},creatable:{type:"boolean",default:!1,description:"Разрешить ввести своё значение: при отсутствии совпадения — пункт «Создать «…»» (эмитит введённое как value).","x-doc":{group:"Behavior",type:"boolean"}}},"x-runtimeProps":{value:{group:"Control",type:"string | null",description:"Выбранное значение (option.value). null — ничего не выбрано."},onChange:{group:"Control",type:"(value: string | null) => void",description:"Выбор; при очистке приходит null."}}},p=Object.freeze(Object.defineProperty({__proto__:null,comboboxBasePropsSchema:t},Symbol.toStringTag,{value:"Module"})),r={type:"object",additionalProperties:!1,"x-registryName":"ComboboxMulti","x-variantGroup":"Combobox","x-variant":"Несколько",properties:{className:{type:"string",description:"Доп. CSS-класс триггера.","x-doc":{group:"Control",type:"string",kind:"readonly"}},options:{type:"array",items:{type:"object",required:["value","label"],additionalProperties:!1,properties:{value:{type:"string"},label:{type:"string"}}},description:"Список опций { value, label }. Поиск идёт по label.","x-doc":{group:"Options",type:"Array<{ value; label }>",kind:"readonly"}},placeholder:{type:"string",default:"Select options...",description:"Подсказка в триггере, пока ничего не выбрано.","x-doc":{group:"Textfield",type:"string"}},searchPlaceholder:{type:"string",default:"Search...",description:"Подсказка в поле поиска.","x-doc":{group:"Textfield",type:"string"}},emptyText:{type:"string",default:"No options found.",description:"Текст пустого состояния (ничего не найдено).","x-doc":{group:"Textfield",type:"string"}},clearable:{type:"boolean",default:!1,description:"Показывать крестик сброса всего выбора справа от триггера.","x-doc":{group:"Behavior",type:"boolean"}},creatable:{type:"boolean",default:!1,description:"Разрешить ввести своё значение: при отсутствии совпадения — пункт «Создать», добавляющий введённое в выбор. Лейблом для него служит само значение.","x-doc":{group:"Behavior",type:"boolean"}},maxItems:{type:"number",minimum:1,description:"Потолок числа выбранных: по достижении невыбранные пункты выключаются. Подсказка интерфейса, а не правило формы — ограничение задавайте валидатором maxLength(n).","x-doc":{group:"Behavior",type:"number"}},summaryThreshold:{type:"number",minimum:1,default:3,description:"Сколько чипов показать в триггере, прежде чем схлопнуть их в сводку «Выбрано: N».","x-doc":{group:"Behavior",type:"number"}}},"x-runtimeProps":{value:{group:"Control",type:"string[] | null",description:"Выбранные значения (option.value). Пустой выбор приходит как null, а не []: массив в начальном значении модели создал бы ArrayNode, и поля не было бы вовсе."},onChange:{group:"Control",type:"(value: string[] | null) => void",description:"Изменение выбора; снятие последнего значения → null."}}},a=Object.freeze(Object.defineProperty({__proto__:null,comboboxMultiPropsSchema:r},Symbol.toStringTag,{value:"Module"})),i={type:"object",additionalProperties:!1,"x-registryName":"ComboboxTreeMulti","x-variantGroup":"Combobox","x-variant":"Дерево, несколько",properties:{className:{type:"string",description:"Доп. CSS-класс триггера.","x-doc":{group:"Control",type:"string",kind:"readonly"}},nodes:{type:"array",items:o,description:"Узлы верхнего уровня. Поиск идёт по label; значением поля становятся id выбранных узлов.","x-doc":{group:"Options",type:e,kind:"readonly"}},defaultExpandedIds:{type:"array",items:{type:"string"},description:"Ветки, раскрытые при открытии списка. Пути до выбранных узлов раскрываются и без него.","x-doc":{group:"State",type:"string[]",kind:"readonly"}},selectable:{type:"string",enum:["all","leaf"],default:"leaf",description:"Что можно выбрать. leaf — выбор файлов: щелчок по каталогу его раскрывает. all разрешает выбрать и каталог.","x-doc":{group:"Behavior",type:"'all' | 'leaf'",kind:"enum"}},placeholder:{type:"string",default:"Выберите файлы...",description:"Подсказка в триггере, пока ничего не выбрано.","x-doc":{group:"Textfield",type:"string"}},searchPlaceholder:{type:"string",default:"Поиск...",description:"Подсказка в поле поиска над деревом.","x-doc":{group:"Textfield",type:"string"}},emptyText:{type:"string",default:"Ничего не найдено",description:"Текст пустого состояния (по запросу ничего не совпало).","x-doc":{group:"Textfield",type:"string"}},clearable:{type:"boolean",default:!1,description:"Показывать крестик сброса всего выбора справа от триггера.","x-doc":{group:"Behavior",type:"boolean"}},maxItems:{type:"number",minimum:1,description:"Потолок числа выбранных: по достижении невыбранные строки гаснут. Подсказка интерфейса, а не правило формы — ограничение задавайте валидатором maxLength(n).","x-doc":{group:"Behavior",type:"number",kind:"number"}},summaryThreshold:{type:"number",minimum:1,default:3,description:"Сколько чипов показать в триггере, прежде чем схлопнуть их в сводку «Выбрано: N».","x-doc":{group:"Behavior",type:"number",kind:"number"}},maxRows:{type:"number",minimum:1,default:12,description:"Сколько строк дерева показать в поповере до появления прокрутки.","x-doc":{group:"Behavior",type:"number",kind:"number"}}},"x-runtimeProps":{value:{group:"Control",type:"string[] | null",description:"Адреса выбранных узлов (node.id). Пустой выбор приходит как null, а не []: массив в начальном значении модели создал бы ArrayNode, и поля не было бы вовсе."},onChange:{group:"Control",type:"(value: string[] | null) => void",description:"Изменение выбора; снятие последнего значения → null."},loadChildren:{group:"Options",type:"(node: TreeNode | null) => Promise<readonly TreeNode[]>",description:"Ленивое чтение уровня при первом раскрытии ветки; null — верхний уровень. В JSON-форме недостижим: требует функцию — передаётся через реестр компонентов."}}},d=Object.freeze(Object.defineProperty({__proto__:null,comboboxTreeMultiPropsSchema:i},Symbol.toStringTag,{value:"Module"})),n={type:"object",additionalProperties:!1,"x-registryName":"ComboboxTree","x-variantGroup":"Combobox","x-variant":"Дерево",properties:{className:{type:"string",description:"Доп. CSS-класс триггера.","x-doc":{group:"Control",type:"string",kind:"readonly"}},nodes:{type:"array",items:o,description:"Узлы верхнего уровня. Поиск идёт по label; значением поля становится id выбранного узла.","x-doc":{group:"Options",type:e,kind:"readonly"}},defaultExpandedIds:{type:"array",items:{type:"string"},description:"Ветки, раскрытые при открытии списка. Путь до выбранного узла раскрывается и без него.","x-doc":{group:"State",type:"string[]",kind:"readonly"}},selectable:{type:"string",enum:["all","leaf"],default:"leaf",description:"Что можно выбрать. leaf — выбор файла: щелчок по каталогу его раскрывает. all разрешает выбрать и каталог.","x-doc":{group:"Behavior",type:"'all' | 'leaf'",kind:"enum"}},placeholder:{type:"string",default:"Выберите файл...",description:"Подсказка в триггере, пока ничего не выбрано.","x-doc":{group:"Textfield",type:"string"}},searchPlaceholder:{type:"string",default:"Поиск...",description:"Подсказка в поле поиска над деревом.","x-doc":{group:"Textfield",type:"string"}},emptyText:{type:"string",default:"Ничего не найдено",description:"Текст пустого состояния (по запросу ничего не совпало).","x-doc":{group:"Textfield",type:"string"}},clearable:{type:"boolean",default:!1,description:"Показывать крестик очистки (сброс в null); повторный выбор той же строки тоже сбрасывает.","x-doc":{group:"Behavior",type:"boolean"}},maxRows:{type:"number",minimum:1,default:12,description:"Сколько строк дерева показать в поповере до появления прокрутки.","x-doc":{group:"Behavior",type:"number",kind:"number"}}},"x-runtimeProps":{value:{group:"Control",type:"string | null",description:"Адрес выбранного узла (node.id). null — ничего не выбрано."},onChange:{group:"Control",type:"(value: string | null) => void",description:"Выбор; при очистке приходит null."},loadChildren:{group:"Options",type:"(node: TreeNode | null) => Promise<readonly TreeNode[]>",description:"Ленивое чтение уровня при первом раскрытии ветки; null — верхний уровень. В JSON-форме недостижим: требует функцию — передаётся через реестр компонентов."}}},s=Object.freeze(Object.defineProperty({__proto__:null,comboboxTreePropsSchema:n},Symbol.toStringTag,{value:"Module"}));export{a,d,i,n,p,r,s,t};