@jimka/typescript-ui 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/dist/lib/{AbstractBooleanInput-DSwKBAic.js → AbstractBooleanInput-CbW7ZrDT.js} +2 -2
  2. package/dist/lib/{AbstractBooleanInput-DSwKBAic.js.map → AbstractBooleanInput-CbW7ZrDT.js.map} +1 -1
  3. package/dist/lib/{AbstractInput-BmWGJTs1.js → AbstractInput-B10DfLOf.js} +2 -2
  4. package/dist/lib/{AbstractInput-BmWGJTs1.js.map → AbstractInput-B10DfLOf.js.map} +1 -1
  5. package/dist/lib/Anchor-BsblS5it.js +2 -0
  6. package/dist/lib/Anchor-BsblS5it.js.map +1 -0
  7. package/dist/lib/AnchorConstraints-Bfkt8019.js +2 -0
  8. package/dist/lib/AnchorConstraints-Bfkt8019.js.map +1 -0
  9. package/dist/lib/{AnimatedDropdown-DKas40B-.js → AnimatedDropdown-kL47HPGP.js} +2 -2
  10. package/dist/lib/{AnimatedDropdown-DKas40B-.js.map → AnimatedDropdown-kL47HPGP.js.map} +1 -1
  11. package/dist/lib/{Border-Bz29z-_7.js → Border-CNS6aEXB.js} +2 -2
  12. package/dist/lib/Border-CNS6aEXB.js.map +1 -0
  13. package/dist/lib/Button-T16zSZip.js +2 -0
  14. package/dist/lib/Button-T16zSZip.js.map +1 -0
  15. package/dist/lib/{Card-BdfbvOD_.js → Card-CD3jxshU.js} +2 -2
  16. package/dist/lib/{Card-BdfbvOD_.js.map → Card-CD3jxshU.js.map} +1 -1
  17. package/dist/lib/CodeEditor-BGlB232h.js +2 -0
  18. package/dist/lib/CodeEditor-BGlB232h.js.map +1 -0
  19. package/dist/lib/ComboBox-C9FYMuLv.js +2 -0
  20. package/dist/lib/ComboBox-C9FYMuLv.js.map +1 -0
  21. package/dist/lib/Component-w65rPK75.js +2 -0
  22. package/dist/lib/Component-w65rPK75.js.map +1 -0
  23. package/dist/lib/Container-C7RPLQEc.js +2 -0
  24. package/dist/lib/{Container-CAQpj4yb.js.map → Container-C7RPLQEc.js.map} +1 -1
  25. package/dist/lib/DOM-Ba8YRVel.js +2 -0
  26. package/dist/lib/{DOM-67StIm5G.js.map → DOM-Ba8YRVel.js.map} +1 -1
  27. package/dist/lib/DragManager-UvPHSoRm.js +2 -0
  28. package/dist/lib/{DragManager-CHWCe3-8.js.map → DragManager-UvPHSoRm.js.map} +1 -1
  29. package/dist/lib/{FieldDecorator-CgAGcqCk.js → FieldDecorator-HG65hEtk.js} +2 -2
  30. package/dist/lib/{FieldDecorator-CgAGcqCk.js.map → FieldDecorator-HG65hEtk.js.map} +1 -1
  31. package/dist/lib/{Fit-DIYt2aQB.js → Fit-Cg3dPyZg.js} +2 -2
  32. package/dist/lib/{Fit-DIYt2aQB.js.map → Fit-Cg3dPyZg.js.map} +1 -1
  33. package/dist/lib/FloatingPanel-D5buuVrQ.js +2 -0
  34. package/dist/lib/FloatingPanel-D5buuVrQ.js.map +1 -0
  35. package/dist/lib/{Glyph-CeAIWyPB.js → Glyph-DeJF_zsR.js} +2 -2
  36. package/dist/lib/{Glyph-CeAIWyPB.js.map → Glyph-DeJF_zsR.js.map} +1 -1
  37. package/dist/lib/{Grid-ViA0joow.js → Grid-BYBohJIA.js} +2 -2
  38. package/dist/lib/{Grid-ViA0joow.js.map → Grid-BYBohJIA.js.map} +1 -1
  39. package/dist/lib/{GridConstraints-B1rxCw9B.js → GridConstraints-Bts284FI.js} +2 -2
  40. package/dist/lib/{GridConstraints-B1rxCw9B.js.map → GridConstraints-Bts284FI.js.map} +1 -1
  41. package/dist/lib/{Header-mKaqgfat.js → Header-BIFJK9nR.js} +2 -2
  42. package/dist/lib/{Header-mKaqgfat.js.map → Header-BIFJK9nR.js.map} +1 -1
  43. package/dist/lib/{IconText-BqwXA82-.js → IconText-Dsb1xS-E.js} +2 -2
  44. package/dist/lib/{IconText-BqwXA82-.js.map → IconText-Dsb1xS-E.js.map} +1 -1
  45. package/dist/lib/LanguageRegistry-CcVnbKuh.js +2 -0
  46. package/dist/lib/LanguageRegistry-CcVnbKuh.js.map +1 -0
  47. package/dist/lib/LayoutConstraints-LIHYYd2F.js +2 -0
  48. package/dist/lib/LayoutConstraints-LIHYYd2F.js.map +1 -0
  49. package/dist/lib/LayoutSerialization-ySzY1h2l.js +2 -0
  50. package/dist/lib/{LayoutSerialization-D82UtnDD.js.map → LayoutSerialization-ySzY1h2l.js.map} +1 -1
  51. package/dist/lib/LayoutSizes-DKDK1Cle.js +2 -0
  52. package/dist/lib/LayoutSizes-DKDK1Cle.js.map +1 -0
  53. package/dist/lib/List-BPd-IXZR.js +2 -0
  54. package/dist/lib/{List-CUntS8ux.js.map → List-BPd-IXZR.js.map} +1 -1
  55. package/dist/lib/MemoryStore-BgP7-Uzn.js +2 -0
  56. package/dist/lib/{MemoryStore-DT6iWWco.js.map → MemoryStore-BgP7-Uzn.js.map} +1 -1
  57. package/dist/lib/Menu-C0roOCY7.js +2 -0
  58. package/dist/lib/Menu-C0roOCY7.js.map +1 -0
  59. package/dist/lib/MenuButton-BR4KOFld.js +2 -0
  60. package/dist/lib/MenuButton-BR4KOFld.js.map +1 -0
  61. package/dist/lib/Panel-CpNQTLNF.js +2 -0
  62. package/dist/lib/{Panel-D2X33qR6.js.map → Panel-CpNQTLNF.js.map} +1 -1
  63. package/dist/lib/{Position-Ck_KD4cR.js → Position-PBVBW1JS.js} +2 -2
  64. package/dist/lib/{Position-Ck_KD4cR.js.map → Position-PBVBW1JS.js.map} +1 -1
  65. package/dist/lib/{ProgressSpinner-DCyq02pd.js → ProgressSpinner-lAsK26C-.js} +2 -2
  66. package/dist/lib/{ProgressSpinner-DCyq02pd.js.map → ProgressSpinner-lAsK26C-.js.map} +1 -1
  67. package/dist/lib/RadioButton-CCcIaL54.js +2 -0
  68. package/dist/lib/RadioButton-CCcIaL54.js.map +1 -0
  69. package/dist/lib/{RovingTabIndex-DFJyoveq.js → RovingTabIndex-C2Vzq0IX.js} +2 -2
  70. package/dist/lib/{RovingTabIndex-DFJyoveq.js.map → RovingTabIndex-C2Vzq0IX.js.map} +1 -1
  71. package/dist/lib/Scrollbar-C3ZZyZ1e.js +2 -0
  72. package/dist/lib/Scrollbar-C3ZZyZ1e.js.map +1 -0
  73. package/dist/lib/Slider-DZ9drUxn.js +2 -0
  74. package/dist/lib/Slider-DZ9drUxn.js.map +1 -0
  75. package/dist/lib/Spacer-SDhOMp2g.js +2 -0
  76. package/dist/lib/{Spacer-D159iJy9.js.map → Spacer-SDhOMp2g.js.map} +1 -1
  77. package/dist/lib/TabButton-DNo4ZgV8.js +2 -0
  78. package/dist/lib/TabButton-DNo4ZgV8.js.map +1 -0
  79. package/dist/lib/Text-CdHf3B-1.js +2 -0
  80. package/dist/lib/Text-CdHf3B-1.js.map +1 -0
  81. package/dist/lib/{Tooltip-DzK6LxUt.js → Tooltip-B_UF5bXD.js} +2 -2
  82. package/dist/lib/{Tooltip-DzK6LxUt.js.map → Tooltip-B_UF5bXD.js.map} +1 -1
  83. package/dist/lib/Tree-C7qLbIYH.js +2 -0
  84. package/dist/lib/Tree-C7qLbIYH.js.map +1 -0
  85. package/dist/lib/VBox-32fxpkDl.js +2 -0
  86. package/dist/lib/VBox-32fxpkDl.js.map +1 -0
  87. package/dist/lib/{Validator-Du8PqS5i.js → Validator-Cjs1EU5Q.js} +2 -2
  88. package/dist/lib/{Validator-Du8PqS5i.js.map → Validator-Cjs1EU5Q.js.map} +1 -1
  89. package/dist/lib/{VirtualScroller-zQr-vKrO.js → VirtualScroller-cvFNMS7U.js} +2 -2
  90. package/dist/lib/{VirtualScroller-zQr-vKrO.js.map → VirtualScroller-cvFNMS7U.js.map} +1 -1
  91. package/dist/lib/component/button.es.js +1 -1
  92. package/dist/lib/component/button.es.js.map +1 -1
  93. package/dist/lib/component/chart.es.js +1 -1
  94. package/dist/lib/component/chart.es.js.map +1 -1
  95. package/dist/lib/component/container.es.js +1 -1
  96. package/dist/lib/component/container.es.js.map +1 -1
  97. package/dist/lib/component/diagram.es.js +1 -1
  98. package/dist/lib/component/diagram.es.js.map +1 -1
  99. package/dist/lib/component/display.es.js +1 -1
  100. package/dist/lib/component/display.es.js.map +1 -1
  101. package/dist/lib/component/editor.es.js +3 -3
  102. package/dist/lib/component/editor.es.js.map +1 -1
  103. package/dist/lib/component/input.es.js +1 -1
  104. package/dist/lib/component/input.es.js.map +1 -1
  105. package/dist/lib/component/list.es.js +1 -1
  106. package/dist/lib/component/list.es.js.map +1 -1
  107. package/dist/lib/component/menubar.es.js +1 -1
  108. package/dist/lib/component/menubar.es.js.map +1 -1
  109. package/dist/lib/component/table.es.js +2 -2
  110. package/dist/lib/component/table.es.js.map +1 -1
  111. package/dist/lib/component/tree.es.js +1 -1
  112. package/dist/lib/component/tree.es.js.map +1 -1
  113. package/dist/lib/core.es.js +1 -1
  114. package/dist/lib/core.es.js.map +1 -1
  115. package/dist/lib/data.es.js +1 -1
  116. package/dist/lib/glyphs/solid/index.es.js +1 -1
  117. package/dist/lib/languages-Dl8qdL8a.js +2 -0
  118. package/dist/lib/languages-Dl8qdL8a.js.map +1 -0
  119. package/dist/lib/layout.es.js +1 -1
  120. package/dist/lib/layout.es.js.map +1 -1
  121. package/dist/lib/overlay.es.js +1 -1
  122. package/dist/lib/overlay.es.js.map +1 -1
  123. package/dist/lib/primitive.es.js +1 -1
  124. package/dist/lib/router.es.js +1 -1
  125. package/dist/lib/router.es.js.map +1 -1
  126. package/dist/lib/selectionsEqual-BrTxPMmK.js +2 -0
  127. package/dist/lib/{selectionsEqual-4r5R7pTK.js.map → selectionsEqual-BrTxPMmK.js.map} +1 -1
  128. package/dist/lib/types/component/button/MenuButton.d.ts +1 -0
  129. package/dist/lib/types/component/button/SplitButton.d.ts +1 -0
  130. package/dist/lib/types/component/button/TabButton.d.ts +2 -1
  131. package/dist/lib/types/component/button/ToggleButton.d.ts +1 -1
  132. package/dist/lib/types/component/chart/ChartLegend.d.ts +1 -2
  133. package/dist/lib/types/component/container/CollapseButton.d.ts +0 -1
  134. package/dist/lib/types/component/container/FloatingPanel.d.ts +23 -0
  135. package/dist/lib/types/component/container/ScrollStrip.d.ts +1 -1
  136. package/dist/lib/types/component/container/Scrollbar.d.ts +1 -3
  137. package/dist/lib/types/component/container/TabBar.d.ts +1 -1
  138. package/dist/lib/types/component/container/TabPanel.d.ts +3 -0
  139. package/dist/lib/types/component/container/index.d.ts +2 -0
  140. package/dist/lib/types/component/diagram/DiagramGroupNode.d.ts +1 -1
  141. package/dist/lib/types/component/display/Markdown.d.ts +42 -1
  142. package/dist/lib/types/component/display/MarkdownMinimap.d.ts +38 -0
  143. package/dist/lib/types/component/display/MarkdownViewer.d.ts +60 -0
  144. package/dist/lib/types/component/display/index.d.ts +6 -0
  145. package/dist/lib/types/component/editor/CodeEditor.d.ts +13 -0
  146. package/dist/lib/types/component/editor/index.d.ts +1 -1
  147. package/dist/lib/types/component/input/Checkbox.d.ts +1 -1
  148. package/dist/lib/types/component/input/Link.d.ts +0 -1
  149. package/dist/lib/types/component/input/RadioButton.d.ts +1 -1
  150. package/dist/lib/types/component/input/Slider.d.ts +1 -1
  151. package/dist/lib/types/component/input/Text.d.ts +0 -2
  152. package/dist/lib/types/component/input/Toggle.d.ts +1 -1
  153. package/dist/lib/types/component/menubar/MenuBar.d.ts +2 -1
  154. package/dist/lib/types/component/menubar/MenuBarButton.d.ts +0 -1
  155. package/dist/lib/types/component/menubar/ToolBar.d.ts +2 -0
  156. package/dist/lib/types/component/table/Body.d.ts +1 -0
  157. package/dist/lib/types/component/table/Table.d.ts +1 -0
  158. package/dist/lib/types/component/table/cell/SortPriorityBadge.d.ts +1 -1
  159. package/dist/lib/types/component/table/cell/editor/CellEditorPool.d.ts +1 -0
  160. package/dist/lib/types/component/table/cell/editor/Date.d.ts +1 -0
  161. package/dist/lib/types/component/table/cell/editor/DateTime.d.ts +1 -0
  162. package/dist/lib/types/component/table/cell/editor/Time.d.ts +1 -0
  163. package/dist/lib/types/component/tree/Tree.d.ts +9 -1
  164. package/dist/lib/types/component/tree/index.d.ts +1 -1
  165. package/dist/lib/types/component/tree/renderer/Label.d.ts +1 -1
  166. package/dist/lib/types/core/BorderWidths.d.ts +12 -0
  167. package/dist/lib/types/core/Component.d.ts +6 -0
  168. package/dist/lib/types/core/Event.d.ts +2 -0
  169. package/dist/lib/types/core/Theme.d.ts +4 -2
  170. package/dist/lib/types/layout/LayoutConstraints.d.ts +1 -0
  171. package/dist/lib/types/layout/LayoutManager.d.ts +8 -0
  172. package/dist/lib/types/layout/LayoutSerialization.d.ts +3 -0
  173. package/dist/lib/types/overlay/Dock.d.ts +1 -0
  174. package/dist/lib/validation.es.js +1 -1
  175. package/llms.txt +3 -0
  176. package/package.json +15 -15
  177. package/dist/lib/AnchorConstraints-CVrMP9rz.js +0 -2
  178. package/dist/lib/AnchorConstraints-CVrMP9rz.js.map +0 -1
  179. package/dist/lib/Border-Bz29z-_7.js.map +0 -1
  180. package/dist/lib/Button-bjpWruNc.js +0 -2
  181. package/dist/lib/Button-bjpWruNc.js.map +0 -1
  182. package/dist/lib/ComboBox-CBw2VLLN.js +0 -2
  183. package/dist/lib/ComboBox-CBw2VLLN.js.map +0 -1
  184. package/dist/lib/Component-DHqrPwAw.js +0 -2
  185. package/dist/lib/Component-DHqrPwAw.js.map +0 -1
  186. package/dist/lib/Container-CAQpj4yb.js +0 -2
  187. package/dist/lib/DOM-67StIm5G.js +0 -2
  188. package/dist/lib/DragManager-CHWCe3-8.js +0 -2
  189. package/dist/lib/LayoutConstraints-DkctJZXB.js +0 -2
  190. package/dist/lib/LayoutConstraints-DkctJZXB.js.map +0 -1
  191. package/dist/lib/LayoutSerialization-D82UtnDD.js +0 -2
  192. package/dist/lib/LayoutSizes-DG9aW9k6.js +0 -2
  193. package/dist/lib/LayoutSizes-DG9aW9k6.js.map +0 -1
  194. package/dist/lib/List-CUntS8ux.js +0 -2
  195. package/dist/lib/MemoryStore-DT6iWWco.js +0 -2
  196. package/dist/lib/Menu-B_-SQj72.js +0 -2
  197. package/dist/lib/Menu-B_-SQj72.js.map +0 -1
  198. package/dist/lib/MenuButton-C79l8Ysf.js +0 -2
  199. package/dist/lib/MenuButton-C79l8Ysf.js.map +0 -1
  200. package/dist/lib/Panel-D2X33qR6.js +0 -2
  201. package/dist/lib/RadioButton-BJIAQkII.js +0 -2
  202. package/dist/lib/RadioButton-BJIAQkII.js.map +0 -1
  203. package/dist/lib/Scrollbar-CSFK-Y57.js +0 -2
  204. package/dist/lib/Scrollbar-CSFK-Y57.js.map +0 -1
  205. package/dist/lib/Slider-C-kQQYCj.js +0 -2
  206. package/dist/lib/Slider-C-kQQYCj.js.map +0 -1
  207. package/dist/lib/Spacer-D159iJy9.js +0 -2
  208. package/dist/lib/TabButton-CHkXBgCj.js +0 -2
  209. package/dist/lib/TabButton-CHkXBgCj.js.map +0 -1
  210. package/dist/lib/Text-D5pg7taZ.js +0 -2
  211. package/dist/lib/Text-D5pg7taZ.js.map +0 -1
  212. package/dist/lib/VBox-BNegDPs_.js +0 -2
  213. package/dist/lib/VBox-BNegDPs_.js.map +0 -1
  214. package/dist/lib/selectionsEqual-4r5R7pTK.js +0 -2
@@ -1,2 +1,2 @@
1
- import{t as e}from"../DOM-67StIm5G.js";import{a as t,l as n,n as r,s as i}from"../Position-Ck_KD4cR.js";import{S as a,b as o,h as s,t as c,v as l}from"../Component-DHqrPwAw.js";import{t as u}from"../ListenerBag-WPdKuuds.js";import{a as d}from"../Scrollbar-CSFK-Y57.js";import{t as f}from"../Glyph-CeAIWyPB.js";import{t as ee}from"../AnimatedDropdown-DKas40B-.js";import{t as p}from"../Fit-DIYt2aQB.js";import{t as m}from"../Text-D5pg7taZ.js";import{t as h}from"../AbstractInput-BmWGJTs1.js";import{t as g}from"../AbstractBooleanInput-DSwKBAic.js";import{n as _,r as v}from"../VBox-BNegDPs_.js";import{t as te}from"../RadioButton-BJIAQkII.js";import{t as y}from"../Button-bjpWruNc.js";import{n as b,t as x}from"../Slider-C-kQQYCj.js";import{a as S,c as ne,d as C,f as w,g as T,h as E,i as D,l as O,m as k,n as A,o as j,p as M,r as N,s as P,t as F,u as I}from"../ComboBox-CBw2VLLN.js";import{calendar as L}from"../glyphs/solid/calendar.es.js";import{t as R}from"../List-CUntS8ux.js";import{chevron_down as z}from"../glyphs/solid/chevron_down.es.js";import{chevron_up as B}from"../glyphs/solid/chevron_up.es.js";f.register(L);var DateField=class extends C{constructor(e){super(e),this._button.setGlyph(`calendar`),this._options.value!==void 0&&this.setValue(this._options.value)}applyOptions(e){return super.applyOptions(e),e.value!==void 0&&(this._options.value=e.value),e.minDate!==void 0&&(this._options.minDate=e.minDate),e.maxDate!==void 0&&(this._options.maxDate=e.maxDate),this}formatValue(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}parseRaw(e){let t=new Date(e+`T00:00:00`);return isNaN(t.getTime())?null:t}createDropdown(){return new j(e=>this.onDropdownSelected(e),{minDate:this._options.minDate??null,maxDate:this._options.maxDate??null})}onDropdownSelected(e){this.setValue(e),this.closeDropdown(),this._input.focus(),a.fireEvent(this._input,`input`)}getPreferredWidth(){return 160}},V=s(DateField);f.register(L);var DateTimeField=class extends C{constructor(e){super(e),this._button.setGlyph(`calendar`),this._options.showSeconds!==void 0&&(this._showSeconds=this._options.showSeconds),this._options.value!==void 0&&this.setValue(this._options.value)}applyOptions(e){return super.applyOptions(e),e.showSeconds!==void 0&&(this._options.showSeconds=e.showSeconds),e.value!==void 0&&(this._options.value=e.value),e.minDate!==void 0&&(this._options.minDate=e.minDate),e.maxDate!==void 0&&(this._options.maxDate=e.maxDate),this}formatValue(e){let t=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,`0`),r=String(e.getDate()).padStart(2,`0`),i=String(e.getHours()).padStart(2,`0`),a=String(e.getMinutes()).padStart(2,`0`);return this._showSeconds?`${t}-${n}-${r} ${i}:${a}:${String(e.getSeconds()).padStart(2,`0`)}`:`${t}-${n}-${r} ${i}:${a}`}parseRaw(e){let[t,n]=e.trim().split(/\s+/);if(!t||!n)return null;let r=new Date(`${t}T${n}`);return isNaN(r.getTime())?null:r}createDropdown(){return new N(e=>this.onDropdownSelected(e),{showSeconds:this._showSeconds,minDate:this._options.minDate??null,maxDate:this._options.maxDate??null})}onDropdownSelected(e){this.setValue(e),a.fireEvent(this._input,`input`)}getPreferredWidth(){return 200}},H=s(DateTimeField),U={padding:new r(3,3,3,3),cursor:`text`,backgroundColor:`var(--ts-ui-input-bg, rgb(255, 255, 255))`,foregroundColor:`var(--ts-ui-text-color, black)`},PasswordField=class extends E{constructor(e,t){super(e,{...U,...t??{}}),this.updateHeight(),this.subscribeTheme(()=>this.updateHeight()),this.setType(`password`),this._options.name===void 0&&this.setName(`password`),this._options.autoComplete===void 0&&this.setAutoComplete(e?.newPassword?`new-password`:`current-password`)}updateHeight(){let e=n.singleLineBoxHeight(this.getInsets(),this.getPadding(),this.getBorderSize());this.setPreferredSize({width:200,height:e}),this.setMaxSize({width:2**53-1,height:e}),this.setMinSize({width:0,height:e})}},re=s(PasswordField),W={cursor:`text`,padding:new r(3,3,3,3),backgroundColor:`var(--ts-ui-input-bg, rgb(255, 255, 255))`,foregroundColor:`var(--ts-ui-text-color, black)`},UsernameField=class extends E{constructor(e,t){super(e,{...W,...t??{}}),this.updateHeight(),this.subscribeTheme(()=>this.updateHeight()),this.setType(`text`),this._options.name===void 0&&this.setName(`username`),this._options.autoComplete===void 0&&this.setAutoComplete(e?.email?`email`:`username`)}updateHeight(){let e=n.singleLineBoxHeight(this.getInsets(),this.getPadding(),this.getBorderSize());this.setPreferredSize({width:200,height:e}),this.setMaxSize({width:2**53-1,height:e}),this.setMinSize({width:0,height:e})}},G=s(UsernameField),K={tag:`textarea`,cursor:`text`,overflow:`auto`,padding:new r(3,3,3,3),preferredSize:{width:200,height:200},minSize:{width:100,height:100},backgroundColor:`var(--ts-ui-input-bg, rgb(255, 255, 255))`,foregroundColor:`var(--ts-ui-text-color, black)`},TextArea=class extends E{constructor(e=``,t,n){super(e?{text:e,...t}:t,{...K,...n??{}}),this.setElementCSSRules({resize:`none`})}applyOptions(e){return super.applyOptions(e),e.rows!==void 0&&this.setRows(e.rows),e.cols!==void 0&&this.setCols(e.cols),e.wrap!==void 0&&this.setWrap(e.wrap),this}getRows(){return this._options.rows??null}setRows(e){return this._options.rows=e,this.setElementAttribute(`rows`,String(e)),this}clearRows(){return this._options.rows===void 0?this:(this._options.rows=void 0,this.removeElementAttribute(`rows`),this)}getCols(){return this._options.cols??null}setCols(e){return this._options.cols=e,this.setElementAttribute(`cols`,String(e)),this}clearCols(){return this._options.cols===void 0?this:(this._options.cols=void 0,this.removeElementAttribute(`cols`),this)}getWrap(){return this._options.wrap??null}setWrap(e){return this._options.wrap=e,this.setElementAttribute(`wrap`,e),this}clearWrap(){return this._options.wrap===void 0?this:(this._options.wrap=void 0,this.removeElementAttribute(`wrap`),this)}getBaseline(){return this.wrapInnerBaseline(n.measureTextBaseline())}init(t){super.init(t);let n=t||this.getElement();return this._options.rows!==void 0&&e.sink.apply(n,{setAttr:{rows:String(this._options.rows)}}),this._options.cols!==void 0&&e.sink.apply(n,{setAttr:{cols:String(this._options.cols)}}),this._options.wrap!==void 0&&e.sink.apply(n,{setAttr:{wrap:this._options.wrap}}),this}},q=s(TextArea),Toggle=class extends g{_track;_thumb;constructor(e){super({...e??{}}),this.setLayoutManager(new v),this._track=new c,this._track.setBackgroundColor(`var(--ts-ui-toggle-track-bg-off, rgb(200, 200, 200))`),this._track.setBorderRadius(`999px`),this._track.setPreferredSize({width:36,height:20}),this._track.setMinSize({width:36,height:20}),this._track.setMaxSize({width:36,height:20}),this._track.setCursor(`pointer`),this._thumb=new c,this._thumb.setBackgroundColor(`var(--ts-ui-toggle-thumb-bg, rgb(255, 255, 255))`),this._thumb.setBorderRadius(`999px`),this._thumb.setPreferredSize({width:16,height:16}),this._thumb.setMaxSize({width:16,height:16}),this._thumb.setSize({width:16,height:16}),this._thumb.setShadow(`0 1px 2px rgba(0, 0, 0, 0.25)`),this._thumb.setX(2),this._thumb.setY(2),this._thumb.setPointerEvents(`none`),l.isReducedMotion()||(this._thumb.setTransition(`transform 120ms ease-out`),this._track.setTransition(`background-color 120ms ease-out`)),this._track.addComponent(this._thumb),super.addComponent(this._track),this.getAria().setRole(`switch`),this.getAria().setTabIndex(0),this.getAria().setChecked(!1),this.setOutline(`none`),a.addListener(this._track,`click`,()=>this.activateFromPointer()),this.installKeyboard(),this._options.value!==void 0&&this.applyValue(this._options.value),this._options.label!==void 0&&this.applyLabel(this._options.label),this._options.enabled!==void 0&&this.applyEnabled(this._options.enabled),this._options.readOnly!==void 0&&this.applyReadOnly(this._options.readOnly)}applyOptions(e){return super.applyOptions(e),e.value!==void 0&&(this._options.value=e.value),e.label!==void 0&&(this._options.label=e.label),e.enabled!==void 0&&(this._options.enabled=e.enabled),e.readOnly!==void 0&&(this._options.readOnly=e.readOnly),this}activate(){this.setValue(!this.getValue())}getInteractiveSurface(){return this._track}activationKeys(){return[` `,`Enter`]}getValue(){return this._options.value??!1}setValue(e){let t=!!e;return t===this.getValue()?this:(this._options.value=t,this.applyValue(t),this.notifyChange(t),this)}clearValue(){return this.setValue(!1)}getBaseline(){let e=this._label;if(e===null)return null;let t=e.getBaseline();return t===null?null:this.wrapInnerBaseline(t+this.labelCenterOffset())}labelCenterOffset(){if(this._label===null)return 0;let e=this._track.getPreferredSize()?.height??0,t=this._label.getPreferredSize()?.height??e;return Math.max(0,Math.round((e-t)/2))}doLayout(){super.doLayout();let e=this._label,t=this.labelCenterOffset();return e!==null&&t>0&&e.setY(e.getY()+t),this}applyValue(e){this.getAria().setChecked(e),this._thumb.setTransform(e?`translateX(16px)`:`translateX(0px)`),this._track.setBackgroundColor(e?`var(--ts-ui-toggle-track-bg-on, rgb(30, 100, 200))`:`var(--ts-ui-toggle-track-bg-off, rgb(200, 200, 200))`)}},J=s(Toggle),Y=22,X={durationMs:100,backgroundColor:`var(--ts-ui-autocomplete-bg, rgb(255, 255, 255))`,border:`var(--ts-ui-input-border)`,borderRadius:`var(--ts-ui-border-radius, 4px)`,shadow:`var(--ts-ui-autocomplete-shadow, 2px 4px 8px rgba(0,0,0,0.15))`};new o({scope:`selector`,name:`.AutoCompleteDropdown .List:focus::after`,styles:{content:`none`}});var AutoCompleteDropdown=class extends ee{_list;_onSelect;_onHide;constructor(e,t,n,r){super(n,{...X,...r??{}}),this._onSelect=e,this._onHide=t,this.setContain(`layout`),this.setLayoutManager(new p),this._list=new R,this._list.setBorder(`none`),this._list.setBorderRadius(`0`),this._list.setFocusOnRowClick(!1),this._list.setSelectFollowsFocus(!1),this.addComponent(this._list),this._list.on(`action`,()=>{let e=this._list.getValue();e&&this._onSelect(e)})}show(t,n){this.getElement(!0),this.pauseLayout(),this._list.setItemsArray(n.map(e=>({key:e,label:e}))),this.resumeLayout();let r=this.getPerimeterSize(),i=r.top+r.bottom,a=e.source.getElementRect(t);return this.setWidth(a.width),this.setHeight(n.length*Y+i),this.placeAnchored(a),this.setAnchorElement(t),this.showAnimated(),this.doLayout(),this}hide(){return this.hideAnimated(),this}handleKey(e){return this._list.handleKey(e)}getFocusedRowId(){return this._list.getFocusedRowId()}getList(){return this._list}onHideComplete(){this._onHide()}},ie=s(AutoCompleteDropdown);w(`.AutoCompleteField`);var AutoCompleteField=class extends h{_textField;_dropdown;_debounceTimer=null;_selectBag=new u;constructor(e){super(),this.setBorder(`var(--ts-ui-input-border)`),this.setBorderRadius(`var(--ts-ui-border-radius, 4px)`),this._textField=new I,this._textField.setBorder(`none`),this._textField.setBorderRadius(`0`),this._textField.setOutline(`none`),this.addComponent(this._textField),this.syncSizeFromTextField(),this.subscribeTheme(()=>this.syncSizeFromTextField()),this._dropdown=new ie(e=>this.onSuggestionSelected(e),()=>this.onDropdownHidden()),this._textField.getAria().setRole(`combobox`),this._textField.getAria().setAutoComplete(`list`),this._textField.getAria().setExpanded(!1),this._textField.getAria().setControls(this._dropdown.getId()),this._textField.getAria().setActiveDescendant(``),a.addListener(this._textField,`input`,()=>this.onInput()),a.addListener(this._textField,`keydown`,e=>this.onKeyDown(e)),a.addListener(this._textField,`blur`,()=>this.onBlur()),this._textField.on(`change`,e=>this.notifyChange(e)),e&&this.applyOptions(e),this._options.enabled!==void 0&&this.applyEnabled(this._options.enabled),this._options.readOnly!==void 0&&this.applyReadOnly(this._options.readOnly)}applyOptions(e){return super.applyOptions(e),e.suggestions!==void 0&&this.setSuggestions(e.suggestions),e.minChars!==void 0&&this.setMinChars(e.minChars),e.debounceMs!==void 0&&this.setDebounceMs(e.debounceMs),e.maxSuggestions!==void 0&&this.setMaxSuggestions(e.maxSuggestions),e.matchMode!==void 0&&this.setMatchMode(e.matchMode),e.placeholder!==void 0&&this.setPlaceholder(e.placeholder),e.store!==void 0&&e.displayField!==void 0?this.setStore(e.store,e.displayField):(e.store!==void 0&&(this._options.store=e.store),e.displayField!==void 0&&(this._options.displayField=e.displayField)),this}syncSizeFromTextField(){let e=this.getPerimeterSize(),t=e.left+e.right,n=e.top+e.bottom,r=this._textField.getPreferredSize(),a=this._textField.getMaxSize(),o=this._textField.getMinSize();r&&this.setPreferredSize({width:r.width,height:r.height+n}),a&&this.setMaxSize({width:i(a.width+t),height:i(a.height+n)}),o&&this.setMinSize({width:o.width,height:o.height+n})}getBaseline(){return this.wrapInnerBaseline(this._textField.getBaseline())}doLayout(){super.doLayout();let e=this.getContentBounds();return e?(this._textField.setX(e.x),this._textField.setY(e.y),this._textField.setWidth(e.width),this._textField.setHeight(e.height),this):this}setValue(e){return this._textField.setValue(e),this}getValue(){return this._textField.getValue()}applyEnabled(e){this._textField.setEnabled(e)}applyReadOnly(e){this._textField.setReadOnly(e)}setSuggestions(e){return this._options.suggestions=e,this}setStore(e,t){return this._options.store=e,this._options.displayField=t,this}setMinChars(e){return this._options.minChars=e,this}setDebounceMs(e){return this._options.debounceMs=e,this}setMaxSuggestions(e){return this._options.maxSuggestions=e,this}setMatchMode(e){return this._options.matchMode=e,this}setPlaceholder(e){return this._options.placeholder=e,this._textField.setPlaceholder(e),this}on(e,t){return e===`select`?(this._selectBag.add(`select`,t),this):super.on(e,t)}off(e,t){return e===`select`?(this._selectBag.remove(`select`,t),this):super.off(e,t)}addSelectListener(e){this.on(`select`,e)}onInput(){this._debounceTimer!==null&&clearTimeout(this._debounceTimer);let e=this._options.minChars??1,t=this.getValue();if(t.length<e){this._dropdown.hide();return}this._debounceTimer=setTimeout(()=>this.querySuggestions(t),this._options.debounceMs??200)}onKeyDown(e){if(this._dropdown.isOpen()&&(e.key===`ArrowDown`||e.key===`ArrowUp`||e.key===`Enter`)&&this._dropdown.handleKey(e)){e.preventDefault(),this.updateActiveDescendant();return}switch(e.key){case`ArrowDown`:e.preventDefault(),this.querySuggestions(this.getValue());break;case`Escape`:this._dropdown.hide(),this._textField.focus();break;case`Tab`:this._dropdown.hide();break;default:break}}onBlur(){setTimeout(()=>{let t=e.source.getActiveElement(),n=this._dropdown.getElement();n&&e.source.contains(n,t)||this._dropdown.hide()},150)}matches(e,t){let n=this._options.matchMode??`contains`,r=n===`containsCaseSensitive`||n===`startsWithCaseSensitive`,i=n===`startsWith`||n===`startsWithCaseSensitive`,a=r?e:e.toLowerCase(),o=r?t:t.toLowerCase();return i?a.startsWith(o):a.includes(o)}querySuggestions(e){let t=this._options.maxSuggestions??10,n=this._options.matchMode??`contains`,r=this._options.suggestions,i=this._options.store,a=this._options.displayField;if(r!==void 0){let n=r.filter(t=>this.matches(t,e)).slice(0,t);e===this.getValue()&&this.showSuggestions(n);return}if(i!==void 0&&a!==void 0){let r=n===`containsCaseSensitive`||n===`startsWithCaseSensitive`,o=n===`startsWith`||n===`startsWithCaseSensitive`?`startsWith`:`contains`;i.clearFilter(),i.filterBy({type:o,field:a,value:e,caseSensitive:r});let s=i.getRecords().map(e=>String(e.get(a))).slice(0,t);e===this.getValue()&&this.showSuggestions(s)}}showSuggestions(e){if(e.length===0){this._dropdown.hide();return}this._dropdown.show(this._textField.getElement(!0),e),this._textField.getAria().setExpanded(!0)}onDropdownHidden(){this._textField.getAria().setExpanded(!1),this._textField.getAria().setActiveDescendant(``)}updateActiveDescendant(){this._textField.getAria().setActiveDescendant(this._dropdown.getFocusedRowId()??``)}onSuggestionSelected(e){this.setValue(e),this._selectBag.fire(`select`,e),this._dropdown.hide(),this._textField.focus()}},ae=s(AutoCompleteField);f.register(B,z);var oe={border:`none`,borderRadius:`0`,insets:new r(0,0,0,0)},SpinButton=class extends y{_listeners=new u;_repeat;constructor(e,t,n){super(void 0,t,{...oe,glyph:e===`▲`?`chevron-up`:`chevron-down`,...n??{}}),this.updateSize(),this.subscribeTheme(()=>this.updateSize()),t?.shadow===void 0&&this.clearShadow(),t?.pressedShadow===void 0&&this.clearPressedShadow(),this.pinGlyphSize(8),this.getGlyph()?.setTranslate(0,-1),this._repeat=new d({initialDelay:400,decay:.75,floor:40,onTick:()=>this.emit(`tick`)}),a.addListener(this,`mousedown`,()=>this.onMouseDown()),a.addViewportListener(this,`mouseup`,()=>this.onMouseUp()),a.addViewportListener(this,`mouseleave`,()=>this.onMouseUp()),this.applyListeners(t?.listeners)}updateSize(){let e=n.lineHeightPx()+6+2,t=Math.floor((e-2)/2);this.setPreferredSize({width:18,height:t}),this.setMinSize({width:18,height:t}),this.setMaxSize({width:18,height:t})}on(e,t){return e===`action`?a.addListener(this,`click`,t):this._listeners.add(e,t),this}off(e,t){return e===`action`?a.removeListener(this,`click`,t):this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}onMouseDown(){this._repeat.start()}onMouseUp(){this._repeat.isRunning()&&this._repeat.stop()}},Z=s(SpinButton);w(`.NumberSpinner`),new o({scope:`selector`,name:`.NumberSpinner .TextField:focus`,styles:{boxShadow:`none`}});var se={insets:new r(0,0,0,0),border:`1px solid var(--ts-ui-button-border, rgb(200, 200, 200))`,borderRadius:`var(--ts-ui-border-radius, 4px)`,backgroundColor:`var(--ts-ui-input-bg, rgb(255, 255, 255))`},NumberSpinner=class extends h{_input;_upBtn;_downBtn;_btnBox;constructor(e,t){super(e,{...se,...t??{}}),this._input=new I,this._input.setTextAlign(`right`),this._input.setBorder(`none`),this._input.setBorderRadius(`0`),this._input.setOutline(`none`),this._input.setText(this.formatValue(0)),this._upBtn=new Z(`▲`),this._downBtn=new Z(`▼`),this._upBtn.setBorder({borderTop:`1px solid transparent`}),this._upBtn.setBorderRadius(`0`),this._downBtn.setBorder({borderTop:`1px solid var(--ts-ui-spinner-divider, rgb(180, 180, 180))`}),this._downBtn.setBorderRadius(`0`),this._btnBox=new c;let n=new _;n.setComponentSpacing(0),this._btnBox.setLayoutManager(n),this._btnBox.setInsets(new r(0,0,0,0)),this._btnBox.addComponent(this._upBtn),this._btnBox.addComponent(this._downBtn);let i=new v;i.setComponentSpacing(0),i.setStretching(!0),this.setLayoutManager(i),this.addComponent(this._input,{weight:1}),this.addComponent(this._btnBox),this._upBtn.on(`tick`,()=>this.applyValue(this.getValue()+this.getStep())),this._downBtn.on(`tick`,()=>this.applyValue(this.getValue()-this.getStep())),a.addListener(this._input,`blur`,()=>this.onBlur()),a.addListener(this._input,`keydown`,e=>this.onKeyDown(e)),this.updateHeight(),this.subscribeTheme(()=>this.updateHeight()),this.getAria().setRole(`spinbutton`),this.getAria().setValueNow(0),this._options.min!==void 0&&this.setMin(this._options.min),this._options.max!==void 0&&this.setMax(this._options.max),this._options.step!==void 0&&this.setStep(this._options.step),this._options.precision!==void 0&&this.setPrecision(this._options.precision),this._options.value!==void 0&&this.setValue(this._options.value),this._options.enabled!==void 0&&this.setEnabled(this._options.enabled),this._options.readOnly!==void 0&&this.setReadOnly(this._options.readOnly)}applyOptions(e){return super.applyOptions(e),e.min!==void 0&&(this._options.min=e.min),e.max!==void 0&&(this._options.max=e.max),e.step!==void 0&&(this._options.step=e.step),e.precision!==void 0&&(this._options.precision=e.precision),e.value!==void 0&&(this._options.value=e.value),e.enabled!==void 0&&(this._options.enabled=e.enabled),this}getBaseline(){return this.wrapInnerBaseline(this._input.getBaseline())}updateHeight(){let e=n.singleLineBoxHeight(this.getInsets(),this._input.getPadding(),this.getBorderSize());this.setPreferredSize({width:120,height:e}),this.setMaxSize({width:t,height:e}),this.setMinSize({width:0,height:e})}getValue(){return this._options.value??0}setValue(e){return this._setValueSilent(e),this}getMin(){return this._options.min??-1/0}setMin(e){return this._options.min=e,this.getAria().setValueMin(isFinite(e)?e:null),this}getMax(){return this._options.max??1/0}setMax(e){return this._options.max=e,this.getAria().setValueMax(isFinite(e)?e:null),this}getStep(){return this._options.step??1}setStep(e){return this._options.step=e,this}getPrecision(){return this._options.precision??null}setPrecision(e){return this._options.precision=e,this._input.setText(this.formatValue(this.getValue())),this}applyEnabled(e){e?(this._input.setDisabledAttribute(!1),this._upBtn.setPointerEvents(`auto`),this._downBtn.setPointerEvents(`auto`),this.clearOpacity()):(this._input.setDisabledAttribute(!0),this._upBtn.setPointerEvents(`none`),this._downBtn.setPointerEvents(`none`),this.setOpacity(.5))}applyReadOnly(e){this._input.setReadOnly(e)}applyValue(e){if(!this.isEnabled())return;let t=this.normalize(e);if(t===this.getValue()){this._input.setText(this.formatValue(t));return}this._options.value=t,this._input.setText(this.formatValue(t)),this.getAria().setValueNow(t),this.notifyChange(t)}_setValueSilent(e){let t=this.normalize(e);this._options.value=t,this._input.setText(this.formatValue(t)),this.getAria().setValueNow(t)}normalize(e){let t=Math.min(this.getMax(),Math.max(this.getMin(),e));return t=Math.round(t/this.getStep())*this.getStep(),t=parseFloat(t.toFixed(this.derivePrecision())),t}onBlur(){let e=parseFloat(this._input.getText().valueOf());if(isNaN(e)){this._input.setText(this.formatValue(this.getValue()));return}this.applyValue(e)}onKeyDown(e){if(e.key===`ArrowUp`){e.preventDefault(),this.applyValue(this.getValue()+this.getStep());return}if(e.key===`ArrowDown`){e.preventDefault(),this.applyValue(this.getValue()-this.getStep());return}e.key===`Enter`&&this.onBlur()}formatValue(e){return e.toFixed(this.derivePrecision())}derivePrecision(){let e=this._options.precision??null;if(e!==null)return e;let t=String(this.getStep()),n=t.indexOf(`.`);return n>=0?t.length-n-1:0}},Q=s(NumberSpinner),ce=3,$=`no file selected`,HiddenFileInput=class extends c{_type=null;_multiple=!1;_accept=null;constructor(){super({tag:`input`}),this.setDisplayed(!1),this.setType(`file`)}getType(){return this._type}setType(e){this._type=e,this.setElementAttribute(`type`,e)}setMultipleAttribute(e){this._multiple=e,e?this.setElementAttribute(`multiple`,``):this.removeElementAttribute(`multiple`)}setAcceptAttribute(e){this._accept=e,this.setElementAttribute(`accept`,e)}setDisabled(e){this.setDisabledAttribute(e)}openPicker(){let t=this.getElement();t&&e.sink.click(t)}getFiles(){let t=this.getElement();return t?e.source.getFiles(t):null}clearFiles(){let t=this.getElement();t&&e.sink.setValue(t,``)}init(t){super.init(t);let n=t??this.getElement();return n?(this._type!==null&&e.sink.apply(n,{setAttr:{type:this._type}}),this._multiple&&e.sink.apply(n,{setAttr:{multiple:``}}),this._accept!==null&&e.sink.apply(n,{setAttr:{accept:this._accept}}),this):this}},FileField=class extends h{_button;_label;_input;_droppedFiles=[];constructor(e){super({...e??{}}),this.setLayoutManager(new v),this._button=new y(this.defaultButtonText()),this._button.on(`action`,()=>this.openPicker()),this._label=new m($,{truncate:!0}),this._label.setForegroundColor(`var(--ts-ui-form-text, inherit)`),this._input=new HiddenFileInput,a.addListener(this._input,`change`,()=>this.onNativeChange()),super.addComponent(this._button),super.addComponent(this._label,{weight:1}),super.addComponent(this._input),this._options.multiple!==void 0&&this.setMultiple(this._options.multiple),this._options.accept!==void 0&&this.setAccept(this._options.accept),this._options.buttonText!==void 0&&this._button.setText(this._options.buttonText),this._options.enabled!==void 0&&this.applyEnabled(this._options.enabled),this._options.readOnly!==void 0&&this.applyReadOnly(this._options.readOnly)}applyOptions(e){return super.applyOptions(e),e.multiple!==void 0&&(this._options.multiple=e.multiple),e.accept!==void 0&&(this._options.accept=e.accept),e.buttonText!==void 0&&(this._options.buttonText=e.buttonText),this}defaultButtonText(){return this.isMultiple()?`Choose files…`:`Choose file…`}openPicker(){!this.isEnabled()||this.isReadOnly()||this._input.openPicker()}onNativeChange(){this._droppedFiles=[];let e=this.getValue();this.updateLabel(e),this.notifyChange(e)}acceptDroppedFiles(e){this._droppedFiles=Array.from(e);let t=this.getValue();this.updateLabel(t),this.notifyChange(t)}getValue(){if(this._droppedFiles.length>0)return this._droppedFiles;let e=this._input.getFiles();return e?Array.from(e):[]}setValue(e){return e&&e.length>0?(console.warn(`FileField '`+this.getId()+`' setValue ignored a non-empty File[]: the browser security model forbids programmatically populating a file input. Only setValue([]) (clearing) is supported.`),this):this.clearValue()}clearValue(){this._droppedFiles=[],this._input.clearFiles();let e=this.getValue();return this.updateLabel(e),this.notifyChange(e),this}isMultiple(){return this._options.multiple??!1}setMultiple(e){return this._options.multiple=!!e,this._input.setMultipleAttribute(this._options.multiple),this._options.buttonText===void 0&&this._button.setText(this.defaultButtonText()),this}getAccept(){return this._options.accept??null}setAccept(e){return this._options.accept=e,this._input.setAcceptAttribute(e),this}updateLabel(e){e.length===0?this._label.setText($):e.length===1?this._label.setText(e[0].name):e.length>ce?this._label.setText(e.length+` files`):this._label.setText(e.map(e=>e.name).join(`, `))}applyEnabled(e){this._button.setEnabled(e),this._input.setDisabled(!e)}applyReadOnly(e){this._button.setEnabled(!e&&this.isEnabled()),this.getAria().setReadOnly(e)}},le=s(FileField),ue=`var(--ts-ui-filedropzone-border, 2px dashed rgba(80, 140, 240, 0.40))`,de=`var(--ts-ui-filedropzone-bg, rgba(80, 140, 240, 0.06))`,fe=`var(--ts-ui-filedropzone-active-border, 2px dashed rgba(80, 140, 240, 0.80))`,pe=`var(--ts-ui-filedropzone-active-bg, rgba(80, 140, 240, 0.18))`,me=`Drop files here or click to browse`,FileDropZone=class extends h{_prompt;_field;_dragDepth=0;constructor(e){super({...e??{}}),this.setLayoutManager(new _),this._prompt=new m(this._options.promptText??me),this._prompt.setForegroundColor(`var(--ts-ui-form-text, inherit)`),this._field=new FileField(this.fieldOptions()),this._field.on(`change`,e=>this.notifyChange(e)),super.addComponent(this._prompt),super.addComponent(this._field),this.setActive(!1),this.setBorderRadius(`var(--ts-ui-border-radius, 4px)`),a.addSubtreeListener(this,`dragenter`,e=>this.onDragEnter(e)),a.addSubtreeListener(this,`dragover`,e=>this.onDragOver(e)),a.addSubtreeListener(this,`dragleave`,e=>this.onDragLeave(e)),a.addSubtreeListener(this,`drop`,e=>this.onDrop(e)),this._options.enabled!==void 0&&this.applyEnabled(this._options.enabled),this._options.readOnly!==void 0&&this.applyReadOnly(this._options.readOnly)}applyOptions(e){return super.applyOptions(e),e.promptText!==void 0&&(this._options.promptText=e.promptText),this}fieldOptions(){return{multiple:this._options.multiple,accept:this._options.accept,buttonText:this._options.buttonText}}setActive(e){this.setBorder(e?fe:ue),this.setBackgroundColor(e?pe:de)}onDragEnter(e){e.preventDefault(),this._dragDepth++,this._dragDepth===1&&this.setActive(!0)}onDragOver(e){e.preventDefault()}onDragLeave(e){e.preventDefault(),this._dragDepth=Math.max(0,this._dragDepth-1),this._dragDepth===0&&this.setActive(!1)}onDrop(e){if(e.preventDefault(),this._dragDepth=0,this.setActive(!1),!this.isEnabled()||this.isReadOnly())return;let t=e.dataTransfer?.files;!t||t.length===0||this._field.acceptDroppedFiles(t)}getValue(){return this._field.getValue()}setValue(e){return this._field.setValue(e),this}clearValue(){return this._field.clearValue(),this}applyEnabled(e){this._field.setEnabled(e)}applyReadOnly(e){this._field.setReadOnly(e)}},he=s(FileDropZone);export{g as AbstractBooleanInput,h as AbstractInput,C as AbstractPickerField,ae as AutoCompleteField,A as Checkbox,F as ComboBox,V as DateField,j as DatePickerDropdown,H as DateTimeField,N as DateTimePickerDropdown,he as FileDropZone,le as FileField,b as Label,T as Link,Q as NumberSpinner,re as PasswordField,M as PickerButton,P as PickerCell,ne as PickerCellList,O as PickerColumn,k as PickerInput,te as RadioButton,x as Slider,Z as SpinButton,m as Text,q as TextArea,I as TextField,E as TextInput,D as TimeField,S as TimePickerDropdown,J as Toggle,G as UsernameField};
1
+ import{t as e}from"../DOM-Ba8YRVel.js";import{a as t,l as n,n as r,s as i}from"../Position-PBVBW1JS.js";import{S as a,b as o,h as s,t as c,v as l}from"../Component-w65rPK75.js";import{t as u}from"../ListenerBag-WPdKuuds.js";import{a as d}from"../Scrollbar-C3ZZyZ1e.js";import{t as f}from"../Glyph-DeJF_zsR.js";import{t as ee}from"../AnimatedDropdown-kL47HPGP.js";import{t as p}from"../Fit-Cg3dPyZg.js";import{t as m}from"../Text-CdHf3B-1.js";import{t as h}from"../AbstractInput-B10DfLOf.js";import{t as g}from"../AbstractBooleanInput-CbW7ZrDT.js";import{n as _,r as v}from"../VBox-32fxpkDl.js";import{t as te}from"../RadioButton-CCcIaL54.js";import{t as y}from"../Button-T16zSZip.js";import{n as b,t as x}from"../Slider-DZ9drUxn.js";import{a as S,c as ne,d as C,f as w,g as T,h as E,i as D,l as O,m as k,n as A,o as j,p as M,r as N,s as P,t as F,u as I}from"../ComboBox-C9FYMuLv.js";import{calendar as L}from"../glyphs/solid/calendar.es.js";import{t as R}from"../List-BPd-IXZR.js";import{chevron_down as z}from"../glyphs/solid/chevron_down.es.js";import{chevron_up as B}from"../glyphs/solid/chevron_up.es.js";f.register(L);var DateField=class extends C{constructor(e){super(e),this._button.setGlyph(`calendar`),this._options.value!==void 0&&this.setValue(this._options.value)}applyOptions(e){return super.applyOptions(e),e.value!==void 0&&(this._options.value=e.value),e.minDate!==void 0&&(this._options.minDate=e.minDate),e.maxDate!==void 0&&(this._options.maxDate=e.maxDate),this}formatValue(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}parseRaw(e){let t=new Date(e+`T00:00:00`);return isNaN(t.getTime())?null:t}createDropdown(){return new j(e=>this.onDropdownSelected(e),{minDate:this._options.minDate??null,maxDate:this._options.maxDate??null})}onDropdownSelected(e){this.setValue(e),this.closeDropdown(),this._input.focus(),a.fireEvent(this._input,`input`)}getPreferredWidth(){return 160}},V=s(DateField);f.register(L);var DateTimeField=class extends C{constructor(e){super(e),this._button.setGlyph(`calendar`),this._options.showSeconds!==void 0&&(this._showSeconds=this._options.showSeconds),this._options.value!==void 0&&this.setValue(this._options.value)}applyOptions(e){return super.applyOptions(e),e.showSeconds!==void 0&&(this._options.showSeconds=e.showSeconds),e.value!==void 0&&(this._options.value=e.value),e.minDate!==void 0&&(this._options.minDate=e.minDate),e.maxDate!==void 0&&(this._options.maxDate=e.maxDate),this}formatValue(e){let t=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,`0`),r=String(e.getDate()).padStart(2,`0`),i=String(e.getHours()).padStart(2,`0`),a=String(e.getMinutes()).padStart(2,`0`);return this._showSeconds?`${t}-${n}-${r} ${i}:${a}:${String(e.getSeconds()).padStart(2,`0`)}`:`${t}-${n}-${r} ${i}:${a}`}parseRaw(e){let[t,n]=e.trim().split(/\s+/);if(!t||!n)return null;let r=new Date(`${t}T${n}`);return isNaN(r.getTime())?null:r}createDropdown(){return new N(e=>this.onDropdownSelected(e),{showSeconds:this._showSeconds,minDate:this._options.minDate??null,maxDate:this._options.maxDate??null})}onDropdownSelected(e){this.setValue(e),a.fireEvent(this._input,`input`)}getPreferredWidth(){return 200}},H=s(DateTimeField),U={padding:new r(3,3,3,3),cursor:`text`,backgroundColor:`var(--ts-ui-input-bg, rgb(255, 255, 255))`,foregroundColor:`var(--ts-ui-text-color, black)`},PasswordField=class extends E{constructor(e,t){super(e,{...U,...t??{}}),this.updateHeight(),this.subscribeTheme(()=>this.updateHeight()),this.setType(`password`),this._options.name===void 0&&this.setName(`password`),this._options.autoComplete===void 0&&this.setAutoComplete(e?.newPassword?`new-password`:`current-password`)}updateHeight(){let e=n.singleLineBoxHeight(this.getInsets(),this.getPadding(),this.getBorderSize()),t=this.getPreferredSizeConstraint()?.width??200;this.setPreferredSize({width:t,height:e});let r=this.getMaxSizeConstraint()?.width??2**53-1;this.setMaxSize({width:r,height:e});let i=this.getMinSizeConstraint()?.width??0;this.setMinSize({width:i,height:e})}},re=s(PasswordField),W={cursor:`text`,padding:new r(3,3,3,3),backgroundColor:`var(--ts-ui-input-bg, rgb(255, 255, 255))`,foregroundColor:`var(--ts-ui-text-color, black)`},UsernameField=class extends E{constructor(e,t){super(e,{...W,...t??{}}),this.updateHeight(),this.subscribeTheme(()=>this.updateHeight()),this.setType(`text`),this._options.name===void 0&&this.setName(`username`),this._options.autoComplete===void 0&&this.setAutoComplete(e?.email?`email`:`username`)}updateHeight(){let e=n.singleLineBoxHeight(this.getInsets(),this.getPadding(),this.getBorderSize()),t=this.getPreferredSizeConstraint()?.width??200;this.setPreferredSize({width:t,height:e});let r=this.getMaxSizeConstraint()?.width??2**53-1;this.setMaxSize({width:r,height:e});let i=this.getMinSizeConstraint()?.width??0;this.setMinSize({width:i,height:e})}},G=s(UsernameField),K={tag:`textarea`,cursor:`text`,overflow:`auto`,padding:new r(3,3,3,3),preferredSize:{width:200,height:200},minSize:{width:100,height:100},backgroundColor:`var(--ts-ui-input-bg, rgb(255, 255, 255))`,foregroundColor:`var(--ts-ui-text-color, black)`},TextArea=class extends E{constructor(e=``,t,n){super(e?{text:e,...t}:t,{...K,...n??{}}),this.setElementCSSRules({resize:`none`})}applyOptions(e){return super.applyOptions(e),e.rows!==void 0&&this.setRows(e.rows),e.cols!==void 0&&this.setCols(e.cols),e.wrap!==void 0&&this.setWrap(e.wrap),this}getRows(){return this._options.rows??null}setRows(e){return this._options.rows=e,this.setElementAttribute(`rows`,String(e)),this}clearRows(){return this._options.rows===void 0?this:(this._options.rows=void 0,this.removeElementAttribute(`rows`),this)}getCols(){return this._options.cols??null}setCols(e){return this._options.cols=e,this.setElementAttribute(`cols`,String(e)),this}clearCols(){return this._options.cols===void 0?this:(this._options.cols=void 0,this.removeElementAttribute(`cols`),this)}getWrap(){return this._options.wrap??null}setWrap(e){return this._options.wrap=e,this.setElementAttribute(`wrap`,e),this}clearWrap(){return this._options.wrap===void 0?this:(this._options.wrap=void 0,this.removeElementAttribute(`wrap`),this)}getBaseline(){return this.wrapInnerBaseline(n.measureTextBaseline())}init(t){super.init(t);let n=t||this.getElement();return this._options.rows!==void 0&&e.sink.apply(n,{setAttr:{rows:String(this._options.rows)}}),this._options.cols!==void 0&&e.sink.apply(n,{setAttr:{cols:String(this._options.cols)}}),this._options.wrap!==void 0&&e.sink.apply(n,{setAttr:{wrap:this._options.wrap}}),this}},q=s(TextArea),J={outline:`none`},Toggle=class extends g{_track;_thumb;constructor(e,t){super({...e??{}},{...J,...t??{}}),this.setLayoutManager(new v),this._track=new c,this._track.setBackgroundColor(`var(--ts-ui-toggle-track-bg-off, rgb(200, 200, 200))`),this._track.setBorderRadius(`999px`),this._track.setPreferredSize({width:36,height:20}),this._track.setMinSize({width:36,height:20}),this._track.setMaxSize({width:36,height:20}),this._track.setCursor(`pointer`),this._thumb=new c,this._thumb.setBackgroundColor(`var(--ts-ui-toggle-thumb-bg, rgb(255, 255, 255))`),this._thumb.setBorderRadius(`999px`),this._thumb.setPreferredSize({width:16,height:16}),this._thumb.setMaxSize({width:16,height:16}),this._thumb.setSize({width:16,height:16}),this._thumb.setShadow(`0 1px 2px rgba(0, 0, 0, 0.25)`),this._thumb.setX(2),this._thumb.setY(2),this._thumb.setPointerEvents(`none`),l.isReducedMotion()||(this._thumb.setTransition(`transform 120ms ease-out`),this._track.setTransition(`background-color 120ms ease-out`)),this._track.addComponent(this._thumb),super.addComponent(this._track),this.getAria().setRole(`switch`),this.getAria().setTabIndex(0),this.getAria().setChecked(!1),a.addListener(this._track,`click`,()=>this.activateFromPointer()),this.installKeyboard(),this._options.value!==void 0&&this.applyValue(this._options.value),this._options.label!==void 0&&this.applyLabel(this._options.label),this._options.enabled!==void 0&&this.applyEnabled(this._options.enabled),this._options.readOnly!==void 0&&this.applyReadOnly(this._options.readOnly)}applyOptions(e){return super.applyOptions(e),e.value!==void 0&&(this._options.value=e.value),e.label!==void 0&&(this._options.label=e.label),e.enabled!==void 0&&(this._options.enabled=e.enabled),e.readOnly!==void 0&&(this._options.readOnly=e.readOnly),this}activate(){this.setValue(!this.getValue())}getInteractiveSurface(){return this._track}activationKeys(){return[` `,`Enter`]}getValue(){return this._options.value??!1}setValue(e){let t=!!e;return t===this.getValue()?this:(this._options.value=t,this.applyValue(t),this.notifyChange(t),this)}clearValue(){return this.setValue(!1)}getBaseline(){let e=this._label;if(e===null)return null;let t=e.getBaseline();return t===null?null:this.wrapInnerBaseline(t+this.labelCenterOffset())}labelCenterOffset(){if(this._label===null)return 0;let e=this._track.getPreferredSize()?.height??0,t=this._label.getPreferredSize()?.height??e;return Math.max(0,Math.round((e-t)/2))}doLayout(){super.doLayout();let e=this._label,t=this.labelCenterOffset();return e!==null&&t>0&&e.setY(e.getY()+t),this}applyValue(e){this.getAria().setChecked(e),this._thumb.setTransform(e?`translateX(16px)`:`translateX(0px)`),this._track.setBackgroundColor(e?`var(--ts-ui-toggle-track-bg-on, rgb(30, 100, 200))`:`var(--ts-ui-toggle-track-bg-off, rgb(200, 200, 200))`)}},Y=s(Toggle),X=22,ie={durationMs:100,backgroundColor:`var(--ts-ui-autocomplete-bg, rgb(255, 255, 255))`,border:`var(--ts-ui-input-border)`,borderRadius:`var(--ts-ui-border-radius, 4px)`,shadow:`var(--ts-ui-autocomplete-shadow, 2px 4px 8px rgba(0,0,0,0.15))`};new o({scope:`selector`,name:`.AutoCompleteDropdown .List:focus::after`,styles:{content:`none`}});var AutoCompleteDropdown=class extends ee{_list;_onSelect;_onHide;constructor(e,t,n,r){super(n,{...ie,...r??{}}),this._onSelect=e,this._onHide=t,this.setContain(`layout`),this.setLayoutManager(new p),this._list=new R,this._list.setBorder(`none`),this._list.setBorderRadius(`0`),this._list.setFocusOnRowClick(!1),this._list.setSelectFollowsFocus(!1),this.addComponent(this._list),this._list.on(`action`,()=>{let e=this._list.getValue();e&&this._onSelect(e)})}show(t,n){this.getElement(!0),this.pauseLayout(),this._list.setItemsArray(n.map(e=>({key:e,label:e}))),this.resumeLayout();let r=this.getPerimeterSize(),i=r.top+r.bottom,a=e.source.getElementRect(t);return this.setWidth(a.width),this.setHeight(n.length*X+i),this.placeAnchored(a),this.setAnchorElement(t),this.showAnimated(),this.doLayout(),this}hide(){return this.hideAnimated(),this}handleKey(e){return this._list.handleKey(e)}getFocusedRowId(){return this._list.getFocusedRowId()}getList(){return this._list}onHideComplete(){this._onHide()}},ae=s(AutoCompleteDropdown);w(`.AutoCompleteField`);var AutoCompleteField=class extends h{_textField;_dropdown;_debounceTimer=null;_selectBag=new u;constructor(e){super(),this.setBorder(`var(--ts-ui-input-border)`),this.setBorderRadius(`var(--ts-ui-border-radius, 4px)`),this._textField=new I,this._textField.setBorder(`none`),this._textField.setBorderRadius(`0`),this._textField.setOutline(`none`),this.addComponent(this._textField),this.syncSizeFromTextField(),this.subscribeTheme(()=>this.syncSizeFromTextField()),this._dropdown=new ae(e=>this.onSuggestionSelected(e),()=>this.onDropdownHidden()),this._textField.getAria().setRole(`combobox`),this._textField.getAria().setAutoComplete(`list`),this._textField.getAria().setExpanded(!1),this._textField.getAria().setControls(this._dropdown.getId()),this._textField.getAria().setActiveDescendant(``),a.addListener(this._textField,`input`,()=>this.onInput()),a.addListener(this._textField,`keydown`,e=>this.onKeyDown(e)),a.addListener(this._textField,`blur`,()=>this.onBlur()),this._textField.on(`change`,e=>this.notifyChange(e)),e&&this.applyOptions(e),this._options.enabled!==void 0&&this.applyEnabled(this._options.enabled),this._options.readOnly!==void 0&&this.applyReadOnly(this._options.readOnly)}applyOptions(e){return super.applyOptions(e),e.suggestions!==void 0&&this.setSuggestions(e.suggestions),e.minChars!==void 0&&this.setMinChars(e.minChars),e.debounceMs!==void 0&&this.setDebounceMs(e.debounceMs),e.maxSuggestions!==void 0&&this.setMaxSuggestions(e.maxSuggestions),e.matchMode!==void 0&&this.setMatchMode(e.matchMode),e.placeholder!==void 0&&this.setPlaceholder(e.placeholder),e.store!==void 0&&e.displayField!==void 0?this.setStore(e.store,e.displayField):(e.store!==void 0&&(this._options.store=e.store),e.displayField!==void 0&&(this._options.displayField=e.displayField)),this}syncSizeFromTextField(){let e=this.getPerimeterSize(),t=e.left+e.right,n=e.top+e.bottom,r=this._textField.getPreferredSize(),a=this._textField.getMaxSize(),o=this._textField.getMinSize();r&&this.setPreferredSize({width:r.width,height:r.height+n}),a&&this.setMaxSize({width:i(a.width+t),height:i(a.height+n)}),o&&this.setMinSize({width:o.width,height:o.height+n})}getBaseline(){return this.wrapInnerBaseline(this._textField.getBaseline())}doLayout(){super.doLayout();let e=this.getContentBounds();return e?(this._textField.setX(e.x),this._textField.setY(e.y),this._textField.setWidth(e.width),this._textField.setHeight(e.height),this):this}setValue(e){return this._textField.setValue(e),this}getValue(){return this._textField.getValue()}applyEnabled(e){this._textField.setEnabled(e)}applyReadOnly(e){this._textField.setReadOnly(e)}setSuggestions(e){return this._options.suggestions=e,this}setStore(e,t){return this._options.store=e,this._options.displayField=t,this}setMinChars(e){return this._options.minChars=e,this}setDebounceMs(e){return this._options.debounceMs=e,this}setMaxSuggestions(e){return this._options.maxSuggestions=e,this}setMatchMode(e){return this._options.matchMode=e,this}setPlaceholder(e){return this._options.placeholder=e,this._textField.setPlaceholder(e),this}on(e,t){return e===`select`?(this._selectBag.add(`select`,t),this):super.on(e,t)}off(e,t){return e===`select`?(this._selectBag.remove(`select`,t),this):super.off(e,t)}addSelectListener(e){this.on(`select`,e)}onInput(){this._debounceTimer!==null&&clearTimeout(this._debounceTimer);let e=this._options.minChars??1,t=this.getValue();if(t.length<e){this._dropdown.hide();return}this._debounceTimer=setTimeout(()=>this.querySuggestions(t),this._options.debounceMs??200)}onKeyDown(e){if(this._dropdown.isOpen()&&(e.key===`ArrowDown`||e.key===`ArrowUp`||e.key===`Enter`)&&this._dropdown.handleKey(e)){e.preventDefault(),this.updateActiveDescendant();return}switch(e.key){case`ArrowDown`:e.preventDefault(),this.querySuggestions(this.getValue());break;case`Escape`:this._dropdown.hide(),this._textField.focus();break;case`Tab`:this._dropdown.hide()}}onBlur(){setTimeout(()=>{let t=e.source.getActiveElement(),n=this._dropdown.getElement();n&&e.source.contains(n,t)||this._dropdown.hide()},150)}matches(e,t){let n=this._options.matchMode??`contains`,r=n===`containsCaseSensitive`||n===`startsWithCaseSensitive`,i=n===`startsWith`||n===`startsWithCaseSensitive`,a=r?e:e.toLowerCase(),o=r?t:t.toLowerCase();return i?a.startsWith(o):a.includes(o)}querySuggestions(e){let t=this._options.maxSuggestions??10,n=this._options.matchMode??`contains`,r=this._options.suggestions,i=this._options.store,a=this._options.displayField;if(r!==void 0){let n=r.filter(t=>this.matches(t,e)).slice(0,t);e===this.getValue()&&this.showSuggestions(n);return}if(i!==void 0&&a!==void 0){let r=n===`containsCaseSensitive`||n===`startsWithCaseSensitive`,o=n===`startsWith`||n===`startsWithCaseSensitive`?`startsWith`:`contains`;i.clearFilter(),i.filterBy({type:o,field:a,value:e,caseSensitive:r});let s=i.getRecords().map(e=>String(e.get(a))).slice(0,t);e===this.getValue()&&this.showSuggestions(s)}}showSuggestions(e){if(e.length===0){this._dropdown.hide();return}this._dropdown.show(this._textField.getElement(!0),e),this._textField.getAria().setExpanded(!0)}onDropdownHidden(){this._textField.getAria().setExpanded(!1),this._textField.getAria().setActiveDescendant(``)}updateActiveDescendant(){this._textField.getAria().setActiveDescendant(this._dropdown.getFocusedRowId()??``)}onSuggestionSelected(e){this.setValue(e),this._selectBag.fire(`select`,e),this._dropdown.hide(),this._textField.focus()}},oe=s(AutoCompleteField);f.register(B,z);var se={border:`none`,borderRadius:`0`,insets:new r(0,0,0,0)},SpinButton=class extends y{_listeners=new u;_repeat;constructor(e,t,n){super(void 0,t,{...se,glyph:e===`▲`?`chevron-up`:`chevron-down`,...n??{}}),this.updateSize(),this.subscribeTheme(()=>this.updateSize()),t?.shadow===void 0&&this.clearShadow(),t?.pressedShadow===void 0&&this.clearPressedShadow(),this.pinGlyphSize(8),this.getGlyph()?.setTranslate(0,-1),this._repeat=new d({initialDelay:400,decay:.75,floor:40,onTick:()=>this.emit(`tick`)}),a.addListener(this,`mousedown`,()=>this.onMouseDown()),a.addViewportListener(this,`mouseup`,()=>this.onMouseUp()),a.addViewportListener(this,`mouseleave`,()=>this.onMouseUp()),this.applyListeners(t?.listeners)}updateSize(){let e=n.lineHeightPx()+6+2,t=Math.floor((e-2)/2);this.setPreferredSize({width:18,height:t}),this.setMinSize({width:18,height:t}),this.setMaxSize({width:18,height:t})}on(e,t){return e===`action`?a.addListener(this,`click`,t):this._listeners.add(e,t),this}off(e,t){return e===`action`?a.removeListener(this,`click`,t):this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}onMouseDown(){this._repeat.start()}onMouseUp(){this._repeat.isRunning()&&this._repeat.stop()}},Z=s(SpinButton);w(`.NumberSpinner`),new o({scope:`selector`,name:`.NumberSpinner .TextField:focus`,styles:{boxShadow:`none`}});var Q={insets:new r(0,0,0,0),border:`1px solid var(--ts-ui-button-border, rgb(200, 200, 200))`,borderRadius:`var(--ts-ui-border-radius, 4px)`,backgroundColor:`var(--ts-ui-input-bg, rgb(255, 255, 255))`},NumberSpinner=class extends h{_input;_upBtn;_downBtn;_btnBox;constructor(e,t){super(e,{...Q,...t??{}}),this._input=new I,this._input.setTextAlign(`right`),this._input.setBorder(`none`),this._input.setBorderRadius(`0`),this._input.setOutline(`none`),this._input.setText(this.formatValue(0)),this._upBtn=new Z(`▲`),this._downBtn=new Z(`▼`),this._upBtn.setBorder({borderTop:`1px solid transparent`}),this._upBtn.setBorderRadius(`0`),this._downBtn.setBorder({borderTop:`1px solid var(--ts-ui-spinner-divider, rgb(180, 180, 180))`}),this._downBtn.setBorderRadius(`0`),this._btnBox=new c;let n=new _;n.setComponentSpacing(0),this._btnBox.setLayoutManager(n),this._btnBox.setInsets(new r(0,0,0,0)),this._btnBox.addComponent(this._upBtn),this._btnBox.addComponent(this._downBtn);let i=new v;i.setComponentSpacing(0),i.setStretching(!0),this.setLayoutManager(i),this.addComponent(this._input,{weight:1}),this.addComponent(this._btnBox),this._upBtn.on(`tick`,()=>this.applyValue(this.getValue()+this.getStep())),this._downBtn.on(`tick`,()=>this.applyValue(this.getValue()-this.getStep())),a.addListener(this._input,`blur`,()=>this.onBlur()),a.addListener(this._input,`keydown`,e=>this.onKeyDown(e)),this.updateHeight(),this.subscribeTheme(()=>this.updateHeight()),this.getAria().setRole(`spinbutton`),this.getAria().setValueNow(0),this._options.min!==void 0&&this.setMin(this._options.min),this._options.max!==void 0&&this.setMax(this._options.max),this._options.step!==void 0&&this.setStep(this._options.step),this._options.precision!==void 0&&this.setPrecision(this._options.precision),this._options.value!==void 0&&this.setValue(this._options.value),this._options.enabled!==void 0&&this.setEnabled(this._options.enabled),this._options.readOnly!==void 0&&this.setReadOnly(this._options.readOnly)}applyOptions(e){return super.applyOptions(e),e.min!==void 0&&(this._options.min=e.min),e.max!==void 0&&(this._options.max=e.max),e.step!==void 0&&(this._options.step=e.step),e.precision!==void 0&&(this._options.precision=e.precision),e.value!==void 0&&(this._options.value=e.value),e.enabled!==void 0&&(this._options.enabled=e.enabled),this}getBaseline(){return this.wrapInnerBaseline(this._input.getBaseline())}updateHeight(){let e=n.singleLineBoxHeight(this.getInsets(),this._input.getPadding(),this.getBorderSize()),r=this.getPreferredSizeConstraint()?.width??120;this.setPreferredSize({width:r,height:e});let i=this.getMaxSizeConstraint()?.width??t;this.setMaxSize({width:i,height:e});let a=this.getMinSizeConstraint()?.width??0;this.setMinSize({width:a,height:e})}getValue(){return this._options.value??0}setValue(e){return this._setValueSilent(e),this}getMin(){return this._options.min??-1/0}setMin(e){return this._options.min=e,this.getAria().setValueMin(isFinite(e)?e:null),this}getMax(){return this._options.max??1/0}setMax(e){return this._options.max=e,this.getAria().setValueMax(isFinite(e)?e:null),this}getStep(){return this._options.step??1}setStep(e){return this._options.step=e,this}getPrecision(){return this._options.precision??null}setPrecision(e){return this._options.precision=e,this._input.setText(this.formatValue(this.getValue())),this}applyEnabled(e){e?(this._input.setDisabledAttribute(!1),this._upBtn.setPointerEvents(`auto`),this._downBtn.setPointerEvents(`auto`),this.clearOpacity()):(this._input.setDisabledAttribute(!0),this._upBtn.setPointerEvents(`none`),this._downBtn.setPointerEvents(`none`),this.setOpacity(.5))}applyReadOnly(e){this._input.setReadOnly(e)}applyValue(e){if(!this.isEnabled())return;let t=this.normalize(e);if(t===this.getValue()){this._input.setText(this.formatValue(t));return}this._options.value=t,this._input.setText(this.formatValue(t)),this.getAria().setValueNow(t),this.notifyChange(t)}_setValueSilent(e){let t=this.normalize(e);this._options.value=t,this._input.setText(this.formatValue(t)),this.getAria().setValueNow(t)}normalize(e){let t=Math.min(this.getMax(),Math.max(this.getMin(),e));return t=Math.round(t/this.getStep())*this.getStep(),t=parseFloat(t.toFixed(this.derivePrecision())),t}onBlur(){let e=parseFloat(this._input.getText().valueOf());if(isNaN(e)){this._input.setText(this.formatValue(this.getValue()));return}this.applyValue(e)}onKeyDown(e){if(e.key===`ArrowUp`){e.preventDefault(),this.applyValue(this.getValue()+this.getStep());return}if(e.key===`ArrowDown`){e.preventDefault(),this.applyValue(this.getValue()-this.getStep());return}e.key===`Enter`&&this.onBlur()}formatValue(e){return e.toFixed(this.derivePrecision())}derivePrecision(){let e=this._options.precision??null;if(e!==null)return e;let t=String(this.getStep()),n=t.indexOf(`.`);return n>=0?t.length-n-1:0}},ce=s(NumberSpinner),le=3,$=`no file selected`,HiddenFileInput=class extends c{_type=null;_multiple=!1;_accept=null;constructor(){super({tag:`input`}),this.setDisplayed(!1),this.setType(`file`)}getType(){return this._type}setType(e){this._type=e,this.setElementAttribute(`type`,e)}setMultipleAttribute(e){this._multiple=e,e?this.setElementAttribute(`multiple`,``):this.removeElementAttribute(`multiple`)}setAcceptAttribute(e){this._accept=e,this.setElementAttribute(`accept`,e)}setDisabled(e){this.setDisabledAttribute(e)}openPicker(){let t=this.getElement();t&&e.sink.click(t)}getFiles(){let t=this.getElement();return t?e.source.getFiles(t):null}clearFiles(){let t=this.getElement();t&&e.sink.setValue(t,``)}init(t){super.init(t);let n=t??this.getElement();return n?(this._type!==null&&e.sink.apply(n,{setAttr:{type:this._type}}),this._multiple&&e.sink.apply(n,{setAttr:{multiple:``}}),this._accept!==null&&e.sink.apply(n,{setAttr:{accept:this._accept}}),this):this}},FileField=class extends h{_button;_label;_input;_droppedFiles=[];constructor(e){super({...e??{}}),this.setLayoutManager(new v),this._button=new y(this.defaultButtonText()),this._button.on(`action`,()=>this.openPicker()),this._label=new m($,{truncate:!0}),this._label.setForegroundColor(`var(--ts-ui-form-text, inherit)`),this._input=new HiddenFileInput,a.addListener(this._input,`change`,()=>this.onNativeChange()),super.addComponent(this._button),super.addComponent(this._label,{weight:1}),super.addComponent(this._input),this._options.multiple!==void 0&&this.setMultiple(this._options.multiple),this._options.accept!==void 0&&this.setAccept(this._options.accept),this._options.buttonText!==void 0&&this._button.setText(this._options.buttonText),this._options.enabled!==void 0&&this.applyEnabled(this._options.enabled),this._options.readOnly!==void 0&&this.applyReadOnly(this._options.readOnly)}applyOptions(e){return super.applyOptions(e),e.multiple!==void 0&&(this._options.multiple=e.multiple),e.accept!==void 0&&(this._options.accept=e.accept),e.buttonText!==void 0&&(this._options.buttonText=e.buttonText),this}defaultButtonText(){return this.isMultiple()?`Choose files…`:`Choose file…`}openPicker(){!this.isEnabled()||this.isReadOnly()||this._input.openPicker()}onNativeChange(){this._droppedFiles=[];let e=this.getValue();this.updateLabel(e),this.notifyChange(e)}acceptDroppedFiles(e){this._droppedFiles=Array.from(e);let t=this.getValue();this.updateLabel(t),this.notifyChange(t)}getValue(){if(this._droppedFiles.length>0)return this._droppedFiles;let e=this._input.getFiles();return e?Array.from(e):[]}setValue(e){return e&&e.length>0?(console.warn(`FileField '`+this.getId()+`' setValue ignored a non-empty File[]: the browser security model forbids programmatically populating a file input. Only setValue([]) (clearing) is supported.`),this):this.clearValue()}clearValue(){this._droppedFiles=[],this._input.clearFiles();let e=this.getValue();return this.updateLabel(e),this.notifyChange(e),this}isMultiple(){return this._options.multiple??!1}setMultiple(e){return this._options.multiple=!!e,this._input.setMultipleAttribute(this._options.multiple),this._options.buttonText===void 0&&this._button.setText(this.defaultButtonText()),this}getAccept(){return this._options.accept??null}setAccept(e){return this._options.accept=e,this._input.setAcceptAttribute(e),this}updateLabel(e){e.length===0?this._label.setText($):e.length===1?this._label.setText(e[0].name):e.length>le?this._label.setText(e.length+` files`):this._label.setText(e.map(e=>e.name).join(`, `))}applyEnabled(e){this._button.setEnabled(e),this._input.setDisabled(!e)}applyReadOnly(e){this._button.setEnabled(!e&&this.isEnabled()),this.getAria().setReadOnly(e)}},ue=s(FileField),de=`var(--ts-ui-filedropzone-border, 2px dashed rgba(80, 140, 240, 0.40))`,fe=`var(--ts-ui-filedropzone-bg, rgba(80, 140, 240, 0.06))`,pe=`var(--ts-ui-filedropzone-active-border, 2px dashed rgba(80, 140, 240, 0.80))`,me=`var(--ts-ui-filedropzone-active-bg, rgba(80, 140, 240, 0.18))`,he=`Drop files here or click to browse`,FileDropZone=class extends h{_prompt;_field;_dragDepth=0;constructor(e){super({...e??{}}),this.setLayoutManager(new _),this._prompt=new m(this._options.promptText??he),this._prompt.setForegroundColor(`var(--ts-ui-form-text, inherit)`),this._field=new FileField(this.fieldOptions()),this._field.on(`change`,e=>this.notifyChange(e)),super.addComponent(this._prompt),super.addComponent(this._field),this.setActive(!1),this.setBorderRadius(`var(--ts-ui-border-radius, 4px)`),a.addSubtreeListener(this,`dragenter`,e=>this.onDragEnter(e)),a.addSubtreeListener(this,`dragover`,e=>this.onDragOver(e)),a.addSubtreeListener(this,`dragleave`,e=>this.onDragLeave(e)),a.addSubtreeListener(this,`drop`,e=>this.onDrop(e)),this._options.enabled!==void 0&&this.applyEnabled(this._options.enabled),this._options.readOnly!==void 0&&this.applyReadOnly(this._options.readOnly)}applyOptions(e){return super.applyOptions(e),e.promptText!==void 0&&(this._options.promptText=e.promptText),this}fieldOptions(){return{multiple:this._options.multiple,accept:this._options.accept,buttonText:this._options.buttonText}}setActive(e){this.setBorder(e?pe:de),this.setBackgroundColor(e?me:fe)}onDragEnter(e){e.preventDefault(),this._dragDepth++,this._dragDepth===1&&this.setActive(!0)}onDragOver(e){e.preventDefault()}onDragLeave(e){e.preventDefault(),this._dragDepth=Math.max(0,this._dragDepth-1),this._dragDepth===0&&this.setActive(!1)}onDrop(e){if(e.preventDefault(),this._dragDepth=0,this.setActive(!1),!this.isEnabled()||this.isReadOnly())return;let t=e.dataTransfer?.files;!t||t.length===0||this._field.acceptDroppedFiles(t)}getValue(){return this._field.getValue()}setValue(e){return this._field.setValue(e),this}clearValue(){return this._field.clearValue(),this}applyEnabled(e){this._field.setEnabled(e)}applyReadOnly(e){this._field.setReadOnly(e)}},ge=s(FileDropZone);export{g as AbstractBooleanInput,h as AbstractInput,C as AbstractPickerField,oe as AutoCompleteField,A as Checkbox,F as ComboBox,V as DateField,j as DatePickerDropdown,H as DateTimeField,N as DateTimePickerDropdown,ge as FileDropZone,ue as FileField,b as Label,T as Link,ce as NumberSpinner,re as PasswordField,M as PickerButton,P as PickerCell,ne as PickerCellList,O as PickerColumn,k as PickerInput,te as RadioButton,x as Slider,Z as SpinButton,m as Text,q as TextArea,I as TextField,E as TextInput,D as TimeField,S as TimePickerDropdown,Y as Toggle,G as UsernameField};
2
2
  //# sourceMappingURL=input.es.js.map