@kurot/ui 1.1.7

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 (326) hide show
  1. package/README.md +258 -0
  2. package/dist/index.d.ts +8 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +8 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/kurot/binding/Binding.d.ts +38 -0
  7. package/dist/kurot/binding/Binding.d.ts.map +1 -0
  8. package/dist/kurot/binding/Binding.js +88 -0
  9. package/dist/kurot/binding/Binding.js.map +1 -0
  10. package/dist/kurot/binding/Watcher.d.ts +57 -0
  11. package/dist/kurot/binding/Watcher.d.ts.map +1 -0
  12. package/dist/kurot/binding/Watcher.js +119 -0
  13. package/dist/kurot/binding/Watcher.js.map +1 -0
  14. package/dist/kurot/binding/index.d.ts +3 -0
  15. package/dist/kurot/binding/index.d.ts.map +1 -0
  16. package/dist/kurot/binding/index.js +3 -0
  17. package/dist/kurot/binding/index.js.map +1 -0
  18. package/dist/kurot/collections/ArrayCollection.d.ts +56 -0
  19. package/dist/kurot/collections/ArrayCollection.d.ts.map +1 -0
  20. package/dist/kurot/collections/ArrayCollection.js +143 -0
  21. package/dist/kurot/collections/ArrayCollection.js.map +1 -0
  22. package/dist/kurot/collections/ICollection.d.ts +24 -0
  23. package/dist/kurot/collections/ICollection.d.ts.map +1 -0
  24. package/dist/kurot/collections/ICollection.js +2 -0
  25. package/dist/kurot/collections/ICollection.js.map +1 -0
  26. package/dist/kurot/collections/index.d.ts +3 -0
  27. package/dist/kurot/collections/index.d.ts.map +1 -0
  28. package/dist/kurot/collections/index.js +2 -0
  29. package/dist/kurot/collections/index.js.map +1 -0
  30. package/dist/kurot/components/Animation.d.ts +34 -0
  31. package/dist/kurot/components/Animation.d.ts.map +1 -0
  32. package/dist/kurot/components/Animation.js +100 -0
  33. package/dist/kurot/components/Animation.js.map +1 -0
  34. package/dist/kurot/components/Button.d.ts +61 -0
  35. package/dist/kurot/components/Button.d.ts.map +1 -0
  36. package/dist/kurot/components/Button.js +176 -0
  37. package/dist/kurot/components/Button.js.map +1 -0
  38. package/dist/kurot/components/CheckBox.d.ts +11 -0
  39. package/dist/kurot/components/CheckBox.d.ts.map +1 -0
  40. package/dist/kurot/components/CheckBox.js +13 -0
  41. package/dist/kurot/components/CheckBox.js.map +1 -0
  42. package/dist/kurot/components/ComboBox.d.ts +93 -0
  43. package/dist/kurot/components/ComboBox.d.ts.map +1 -0
  44. package/dist/kurot/components/ComboBox.js +307 -0
  45. package/dist/kurot/components/ComboBox.js.map +1 -0
  46. package/dist/kurot/components/Component.d.ts +203 -0
  47. package/dist/kurot/components/Component.d.ts.map +1 -0
  48. package/dist/kurot/components/Component.js +522 -0
  49. package/dist/kurot/components/Component.js.map +1 -0
  50. package/dist/kurot/components/DataGroup.d.ts +90 -0
  51. package/dist/kurot/components/DataGroup.d.ts.map +1 -0
  52. package/dist/kurot/components/DataGroup.js +483 -0
  53. package/dist/kurot/components/DataGroup.js.map +1 -0
  54. package/dist/kurot/components/EditableText.d.ts +44 -0
  55. package/dist/kurot/components/EditableText.d.ts.map +1 -0
  56. package/dist/kurot/components/EditableText.js +126 -0
  57. package/dist/kurot/components/EditableText.js.map +1 -0
  58. package/dist/kurot/components/Group.d.ts +133 -0
  59. package/dist/kurot/components/Group.d.ts.map +1 -0
  60. package/dist/kurot/components/Group.js +454 -0
  61. package/dist/kurot/components/Group.js.map +1 -0
  62. package/dist/kurot/components/HScrollBar.d.ts +13 -0
  63. package/dist/kurot/components/HScrollBar.d.ts.map +1 -0
  64. package/dist/kurot/components/HScrollBar.js +55 -0
  65. package/dist/kurot/components/HScrollBar.js.map +1 -0
  66. package/dist/kurot/components/HSlider.d.ts +17 -0
  67. package/dist/kurot/components/HSlider.d.ts.map +1 -0
  68. package/dist/kurot/components/HSlider.js +48 -0
  69. package/dist/kurot/components/HSlider.js.map +1 -0
  70. package/dist/kurot/components/Image.d.ts +35 -0
  71. package/dist/kurot/components/Image.d.ts.map +1 -0
  72. package/dist/kurot/components/Image.js +141 -0
  73. package/dist/kurot/components/Image.js.map +1 -0
  74. package/dist/kurot/components/ItemRenderer.d.ts +42 -0
  75. package/dist/kurot/components/ItemRenderer.d.ts.map +1 -0
  76. package/dist/kurot/components/ItemRenderer.js +117 -0
  77. package/dist/kurot/components/ItemRenderer.js.map +1 -0
  78. package/dist/kurot/components/Label.d.ts +49 -0
  79. package/dist/kurot/components/Label.d.ts.map +1 -0
  80. package/dist/kurot/components/Label.js +193 -0
  81. package/dist/kurot/components/Label.js.map +1 -0
  82. package/dist/kurot/components/List.d.ts +16 -0
  83. package/dist/kurot/components/List.d.ts.map +1 -0
  84. package/dist/kurot/components/List.js +34 -0
  85. package/dist/kurot/components/List.js.map +1 -0
  86. package/dist/kurot/components/ListBase.d.ts +61 -0
  87. package/dist/kurot/components/ListBase.d.ts.map +1 -0
  88. package/dist/kurot/components/ListBase.js +202 -0
  89. package/dist/kurot/components/ListBase.js.map +1 -0
  90. package/dist/kurot/components/Panel.d.ts +53 -0
  91. package/dist/kurot/components/Panel.d.ts.map +1 -0
  92. package/dist/kurot/components/Panel.js +145 -0
  93. package/dist/kurot/components/Panel.js.map +1 -0
  94. package/dist/kurot/components/ProgressBar.d.ts +48 -0
  95. package/dist/kurot/components/ProgressBar.d.ts.map +1 -0
  96. package/dist/kurot/components/ProgressBar.js +180 -0
  97. package/dist/kurot/components/ProgressBar.js.map +1 -0
  98. package/dist/kurot/components/RadioButton.d.ts +86 -0
  99. package/dist/kurot/components/RadioButton.d.ts.map +1 -0
  100. package/dist/kurot/components/RadioButton.js +246 -0
  101. package/dist/kurot/components/RadioButton.js.map +1 -0
  102. package/dist/kurot/components/Range.d.ts +41 -0
  103. package/dist/kurot/components/Range.d.ts.map +1 -0
  104. package/dist/kurot/components/Range.js +144 -0
  105. package/dist/kurot/components/Range.js.map +1 -0
  106. package/dist/kurot/components/Rect.d.ts +33 -0
  107. package/dist/kurot/components/Rect.d.ts.map +1 -0
  108. package/dist/kurot/components/Rect.js +125 -0
  109. package/dist/kurot/components/Rect.js.map +1 -0
  110. package/dist/kurot/components/ScrollBarBase.d.ts +27 -0
  111. package/dist/kurot/components/ScrollBarBase.d.ts.map +1 -0
  112. package/dist/kurot/components/ScrollBarBase.js +50 -0
  113. package/dist/kurot/components/ScrollBarBase.js.map +1 -0
  114. package/dist/kurot/components/Scroller.d.ts +82 -0
  115. package/dist/kurot/components/Scroller.d.ts.map +1 -0
  116. package/dist/kurot/components/Scroller.js +416 -0
  117. package/dist/kurot/components/Scroller.js.map +1 -0
  118. package/dist/kurot/components/Skin.d.ts +64 -0
  119. package/dist/kurot/components/Skin.d.ts.map +1 -0
  120. package/dist/kurot/components/Skin.js +136 -0
  121. package/dist/kurot/components/Skin.js.map +1 -0
  122. package/dist/kurot/components/SliderBase.d.ts +60 -0
  123. package/dist/kurot/components/SliderBase.d.ts.map +1 -0
  124. package/dist/kurot/components/SliderBase.js +197 -0
  125. package/dist/kurot/components/SliderBase.js.map +1 -0
  126. package/dist/kurot/components/TabBar.d.ts +29 -0
  127. package/dist/kurot/components/TabBar.d.ts.map +1 -0
  128. package/dist/kurot/components/TabBar.js +92 -0
  129. package/dist/kurot/components/TabBar.js.map +1 -0
  130. package/dist/kurot/components/TextInput.d.ts +49 -0
  131. package/dist/kurot/components/TextInput.d.ts.map +1 -0
  132. package/dist/kurot/components/TextInput.js +157 -0
  133. package/dist/kurot/components/TextInput.js.map +1 -0
  134. package/dist/kurot/components/ToggleButton.d.ts +11 -0
  135. package/dist/kurot/components/ToggleButton.d.ts.map +1 -0
  136. package/dist/kurot/components/ToggleButton.js +14 -0
  137. package/dist/kurot/components/ToggleButton.js.map +1 -0
  138. package/dist/kurot/components/ToggleSwitch.d.ts +10 -0
  139. package/dist/kurot/components/ToggleSwitch.d.ts.map +1 -0
  140. package/dist/kurot/components/ToggleSwitch.js +10 -0
  141. package/dist/kurot/components/ToggleSwitch.js.map +1 -0
  142. package/dist/kurot/components/TouchScroll.d.ts +38 -0
  143. package/dist/kurot/components/TouchScroll.d.ts.map +1 -0
  144. package/dist/kurot/components/TouchScroll.js +133 -0
  145. package/dist/kurot/components/TouchScroll.js.map +1 -0
  146. package/dist/kurot/components/UILayer.d.ts +14 -0
  147. package/dist/kurot/components/UILayer.d.ts.map +1 -0
  148. package/dist/kurot/components/UILayer.js +38 -0
  149. package/dist/kurot/components/UILayer.js.map +1 -0
  150. package/dist/kurot/components/VScrollBar.d.ts +13 -0
  151. package/dist/kurot/components/VScrollBar.d.ts.map +1 -0
  152. package/dist/kurot/components/VScrollBar.js +55 -0
  153. package/dist/kurot/components/VScrollBar.js.map +1 -0
  154. package/dist/kurot/components/VSlider.d.ts +17 -0
  155. package/dist/kurot/components/VSlider.d.ts.map +1 -0
  156. package/dist/kurot/components/VSlider.js +49 -0
  157. package/dist/kurot/components/VSlider.js.map +1 -0
  158. package/dist/kurot/components/ViewStack.d.ts +42 -0
  159. package/dist/kurot/components/ViewStack.d.ts.map +1 -0
  160. package/dist/kurot/components/ViewStack.js +160 -0
  161. package/dist/kurot/components/ViewStack.js.map +1 -0
  162. package/dist/kurot/components/index.d.ts +34 -0
  163. package/dist/kurot/components/index.d.ts.map +1 -0
  164. package/dist/kurot/components/index.js +34 -0
  165. package/dist/kurot/components/index.js.map +1 -0
  166. package/dist/kurot/core/AssetAdapterRegistry.d.ts +4 -0
  167. package/dist/kurot/core/AssetAdapterRegistry.d.ts.map +1 -0
  168. package/dist/kurot/core/AssetAdapterRegistry.js +9 -0
  169. package/dist/kurot/core/AssetAdapterRegistry.js.map +1 -0
  170. package/dist/kurot/core/DefaultAssetAdapter.d.ts +10 -0
  171. package/dist/kurot/core/DefaultAssetAdapter.d.ts.map +1 -0
  172. package/dist/kurot/core/DefaultAssetAdapter.js +22 -0
  173. package/dist/kurot/core/DefaultAssetAdapter.js.map +1 -0
  174. package/dist/kurot/core/DefaultThemeAdapter.d.ts +8 -0
  175. package/dist/kurot/core/DefaultThemeAdapter.d.ts.map +1 -0
  176. package/dist/kurot/core/DefaultThemeAdapter.js +27 -0
  177. package/dist/kurot/core/DefaultThemeAdapter.js.map +1 -0
  178. package/dist/kurot/core/Direction.d.ts +10 -0
  179. package/dist/kurot/core/Direction.d.ts.map +1 -0
  180. package/dist/kurot/core/Direction.js +10 -0
  181. package/dist/kurot/core/Direction.js.map +1 -0
  182. package/dist/kurot/core/IAssetAdapter.d.ts +15 -0
  183. package/dist/kurot/core/IAssetAdapter.d.ts.map +1 -0
  184. package/dist/kurot/core/IAssetAdapter.js +2 -0
  185. package/dist/kurot/core/IAssetAdapter.js.map +1 -0
  186. package/dist/kurot/core/IDisplayText.d.ts +12 -0
  187. package/dist/kurot/core/IDisplayText.d.ts.map +1 -0
  188. package/dist/kurot/core/IDisplayText.js +2 -0
  189. package/dist/kurot/core/IDisplayText.js.map +1 -0
  190. package/dist/kurot/core/IItemRenderer.d.ts +19 -0
  191. package/dist/kurot/core/IItemRenderer.d.ts.map +1 -0
  192. package/dist/kurot/core/IItemRenderer.js +2 -0
  193. package/dist/kurot/core/IItemRenderer.js.map +1 -0
  194. package/dist/kurot/core/IThemeAdapter.d.ts +14 -0
  195. package/dist/kurot/core/IThemeAdapter.d.ts.map +1 -0
  196. package/dist/kurot/core/IThemeAdapter.js +2 -0
  197. package/dist/kurot/core/IThemeAdapter.js.map +1 -0
  198. package/dist/kurot/core/IUIComponent.d.ts +63 -0
  199. package/dist/kurot/core/IUIComponent.d.ts.map +1 -0
  200. package/dist/kurot/core/IUIComponent.js +2 -0
  201. package/dist/kurot/core/IUIComponent.js.map +1 -0
  202. package/dist/kurot/core/IViewport.d.ts +12 -0
  203. package/dist/kurot/core/IViewport.d.ts.map +1 -0
  204. package/dist/kurot/core/IViewport.js +2 -0
  205. package/dist/kurot/core/IViewport.js.map +1 -0
  206. package/dist/kurot/core/ScrollPolicy.d.ts +9 -0
  207. package/dist/kurot/core/ScrollPolicy.d.ts.map +1 -0
  208. package/dist/kurot/core/ScrollPolicy.js +9 -0
  209. package/dist/kurot/core/ScrollPolicy.js.map +1 -0
  210. package/dist/kurot/core/Theme.d.ts +53 -0
  211. package/dist/kurot/core/Theme.d.ts.map +1 -0
  212. package/dist/kurot/core/Theme.js +169 -0
  213. package/dist/kurot/core/Theme.js.map +1 -0
  214. package/dist/kurot/core/UIComponent.d.ts +2 -0
  215. package/dist/kurot/core/UIComponent.d.ts.map +1 -0
  216. package/dist/kurot/core/UIComponent.js +4 -0
  217. package/dist/kurot/core/UIComponent.js.map +1 -0
  218. package/dist/kurot/core/UIState.d.ts +84 -0
  219. package/dist/kurot/core/UIState.d.ts.map +1 -0
  220. package/dist/kurot/core/UIState.js +512 -0
  221. package/dist/kurot/core/UIState.js.map +1 -0
  222. package/dist/kurot/core/Validator.d.ts +46 -0
  223. package/dist/kurot/core/Validator.d.ts.map +1 -0
  224. package/dist/kurot/core/Validator.js +368 -0
  225. package/dist/kurot/core/Validator.js.map +1 -0
  226. package/dist/kurot/core/index.d.ts +17 -0
  227. package/dist/kurot/core/index.d.ts.map +1 -0
  228. package/dist/kurot/core/index.js +10 -0
  229. package/dist/kurot/core/index.js.map +1 -0
  230. package/dist/kurot/events/CollectionEvent.d.ts +22 -0
  231. package/dist/kurot/events/CollectionEvent.d.ts.map +1 -0
  232. package/dist/kurot/events/CollectionEvent.js +37 -0
  233. package/dist/kurot/events/CollectionEvent.js.map +1 -0
  234. package/dist/kurot/events/ItemTapEvent.d.ts +11 -0
  235. package/dist/kurot/events/ItemTapEvent.d.ts.map +1 -0
  236. package/dist/kurot/events/ItemTapEvent.js +24 -0
  237. package/dist/kurot/events/ItemTapEvent.js.map +1 -0
  238. package/dist/kurot/events/PropertyEvent.d.ts +8 -0
  239. package/dist/kurot/events/PropertyEvent.d.ts.map +1 -0
  240. package/dist/kurot/events/PropertyEvent.js +20 -0
  241. package/dist/kurot/events/PropertyEvent.js.map +1 -0
  242. package/dist/kurot/events/ScrollerThrowEvent.d.ts +17 -0
  243. package/dist/kurot/events/ScrollerThrowEvent.d.ts.map +1 -0
  244. package/dist/kurot/events/ScrollerThrowEvent.js +22 -0
  245. package/dist/kurot/events/ScrollerThrowEvent.js.map +1 -0
  246. package/dist/kurot/events/UIEvent.d.ts +29 -0
  247. package/dist/kurot/events/UIEvent.d.ts.map +1 -0
  248. package/dist/kurot/events/UIEvent.js +39 -0
  249. package/dist/kurot/events/UIEvent.js.map +1 -0
  250. package/dist/kurot/events/index.d.ts +6 -0
  251. package/dist/kurot/events/index.d.ts.map +1 -0
  252. package/dist/kurot/events/index.js +6 -0
  253. package/dist/kurot/events/index.js.map +1 -0
  254. package/dist/kurot/layouts/BasicLayout.d.ts +13 -0
  255. package/dist/kurot/layouts/BasicLayout.d.ts.map +1 -0
  256. package/dist/kurot/layouts/BasicLayout.js +146 -0
  257. package/dist/kurot/layouts/BasicLayout.js.map +1 -0
  258. package/dist/kurot/layouts/ColumnAlign.d.ts +9 -0
  259. package/dist/kurot/layouts/ColumnAlign.d.ts.map +1 -0
  260. package/dist/kurot/layouts/ColumnAlign.js +9 -0
  261. package/dist/kurot/layouts/ColumnAlign.js.map +1 -0
  262. package/dist/kurot/layouts/HorizontalLayout.d.ts +23 -0
  263. package/dist/kurot/layouts/HorizontalLayout.d.ts.map +1 -0
  264. package/dist/kurot/layouts/HorizontalLayout.js +405 -0
  265. package/dist/kurot/layouts/HorizontalLayout.js.map +1 -0
  266. package/dist/kurot/layouts/ILayoutTarget.d.ts +25 -0
  267. package/dist/kurot/layouts/ILayoutTarget.d.ts.map +1 -0
  268. package/dist/kurot/layouts/ILayoutTarget.js +2 -0
  269. package/dist/kurot/layouts/ILayoutTarget.js.map +1 -0
  270. package/dist/kurot/layouts/JustifyAlign.d.ts +8 -0
  271. package/dist/kurot/layouts/JustifyAlign.d.ts.map +1 -0
  272. package/dist/kurot/layouts/JustifyAlign.js +8 -0
  273. package/dist/kurot/layouts/JustifyAlign.js.map +1 -0
  274. package/dist/kurot/layouts/LayoutBase.d.ts +23 -0
  275. package/dist/kurot/layouts/LayoutBase.d.ts.map +1 -0
  276. package/dist/kurot/layouts/LayoutBase.js +45 -0
  277. package/dist/kurot/layouts/LayoutBase.js.map +1 -0
  278. package/dist/kurot/layouts/LinearLayoutBase.d.ts +70 -0
  279. package/dist/kurot/layouts/LinearLayoutBase.d.ts.map +1 -0
  280. package/dist/kurot/layouts/LinearLayoutBase.js +246 -0
  281. package/dist/kurot/layouts/LinearLayoutBase.js.map +1 -0
  282. package/dist/kurot/layouts/RowAlign.d.ts +9 -0
  283. package/dist/kurot/layouts/RowAlign.d.ts.map +1 -0
  284. package/dist/kurot/layouts/RowAlign.js +9 -0
  285. package/dist/kurot/layouts/RowAlign.js.map +1 -0
  286. package/dist/kurot/layouts/TileLayout.d.ts +79 -0
  287. package/dist/kurot/layouts/TileLayout.d.ts.map +1 -0
  288. package/dist/kurot/layouts/TileLayout.js +577 -0
  289. package/dist/kurot/layouts/TileLayout.js.map +1 -0
  290. package/dist/kurot/layouts/TileOrientation.d.ts +8 -0
  291. package/dist/kurot/layouts/TileOrientation.d.ts.map +1 -0
  292. package/dist/kurot/layouts/TileOrientation.js +8 -0
  293. package/dist/kurot/layouts/TileOrientation.js.map +1 -0
  294. package/dist/kurot/layouts/VerticalLayout.d.ts +23 -0
  295. package/dist/kurot/layouts/VerticalLayout.d.ts.map +1 -0
  296. package/dist/kurot/layouts/VerticalLayout.js +406 -0
  297. package/dist/kurot/layouts/VerticalLayout.js.map +1 -0
  298. package/dist/kurot/layouts/index.d.ts +12 -0
  299. package/dist/kurot/layouts/index.d.ts.map +1 -0
  300. package/dist/kurot/layouts/index.js +11 -0
  301. package/dist/kurot/layouts/index.js.map +1 -0
  302. package/dist/kurot/states/AddItems.d.ts +17 -0
  303. package/dist/kurot/states/AddItems.d.ts.map +1 -0
  304. package/dist/kurot/states/AddItems.js +42 -0
  305. package/dist/kurot/states/AddItems.js.map +1 -0
  306. package/dist/kurot/states/IOverride.d.ts +12 -0
  307. package/dist/kurot/states/IOverride.d.ts.map +1 -0
  308. package/dist/kurot/states/IOverride.js +2 -0
  309. package/dist/kurot/states/IOverride.js.map +1 -0
  310. package/dist/kurot/states/SetProperty.d.ts +19 -0
  311. package/dist/kurot/states/SetProperty.d.ts.map +1 -0
  312. package/dist/kurot/states/SetProperty.js +50 -0
  313. package/dist/kurot/states/SetProperty.js.map +1 -0
  314. package/dist/kurot/states/SetStateProperty.d.ts +17 -0
  315. package/dist/kurot/states/SetStateProperty.d.ts.map +1 -0
  316. package/dist/kurot/states/SetStateProperty.js +35 -0
  317. package/dist/kurot/states/SetStateProperty.js.map +1 -0
  318. package/dist/kurot/states/State.d.ts +14 -0
  319. package/dist/kurot/states/State.d.ts.map +1 -0
  320. package/dist/kurot/states/State.js +18 -0
  321. package/dist/kurot/states/State.js.map +1 -0
  322. package/dist/kurot/states/index.d.ts +6 -0
  323. package/dist/kurot/states/index.d.ts.map +1 -0
  324. package/dist/kurot/states/index.js +5 -0
  325. package/dist/kurot/states/index.js.map +1 -0
  326. package/package.json +55 -0
@@ -0,0 +1,136 @@
1
+ import { EventDispatcher, Event } from '@kurot/core';
2
+ import { PropertyEvent } from '../events/PropertyEvent.js';
3
+ /**
4
+ * Base class for all UI skins.
5
+ *
6
+ * Skins are typically generated by the EXML compiler (`@kurot/cli`).
7
+ * A skin holds the visual $children of a Component and exposes named
8
+ * "skin parts" (e.g. `labelDisplay`, `iconDisplay`) that the host
9
+ * component binds to via `partAdded()` / `partRemoved()`.
10
+ *
11
+ * The skin also owns the view-state list (`states`) and applies state
12
+ * changes to its $children when `currentState` changes.
13
+ */
14
+ export class Skin extends EventDispatcher {
15
+ // ── Instance fields ───────────────────────────────────────────────────
16
+ skinParts = [];
17
+ width = NaN;
18
+ height = NaN;
19
+ minWidth = 0;
20
+ maxWidth = 100000;
21
+ minHeight = 0;
22
+ maxHeight = 100000;
23
+ states = [];
24
+ /**
25
+ * Watchers created by EXML bindings (e.g. `{data}`). The runtime appends
26
+ * every {@link Watcher} instance created by the skin factory so they can
27
+ * be unwound together via {@link unwatchAll} when the skin is replaced.
28
+ */
29
+ $watchers = [];
30
+ _elementsContent = [];
31
+ _hostComponent;
32
+ _currentState = '';
33
+ _stateInitialized = false;
34
+ // ── Getters / Setters ─────────────────────────────────────────────────
35
+ get elementsContent() {
36
+ return this._elementsContent;
37
+ }
38
+ set elementsContent(value) {
39
+ this._elementsContent = value ?? [];
40
+ }
41
+ get hostComponent() {
42
+ return this._hostComponent;
43
+ }
44
+ set hostComponent(value) {
45
+ if (this._hostComponent === value)
46
+ return;
47
+ const oldHost = this._hostComponent;
48
+ if (oldHost) {
49
+ oldHost.removeEventListener(Event.ADDED_TO_STAGE, this._onHostAddedToStage);
50
+ if (this._stateInitialized) {
51
+ this._removeState(this._currentState, oldHost);
52
+ this._stateInitialized = false;
53
+ }
54
+ }
55
+ this._hostComponent = value;
56
+ if (value) {
57
+ if (value.stage) {
58
+ this._initializeStates();
59
+ }
60
+ else {
61
+ value.once(Event.ADDED_TO_STAGE, this._onHostAddedToStage);
62
+ }
63
+ }
64
+ PropertyEvent.dispatchPropertyEvent(this, 'hostComponent');
65
+ }
66
+ get currentState() {
67
+ return this._currentState;
68
+ }
69
+ set currentState(value) {
70
+ if (this._currentState === value)
71
+ return;
72
+ const old = this._currentState;
73
+ this._currentState = value;
74
+ if (this._stateInitialized && this._hostComponent) {
75
+ this._applyState(old, value);
76
+ }
77
+ }
78
+ // ── Public methods ────────────────────────────────────────────────────
79
+ /**
80
+ * Get a skin part by name. Used by Component to bind parts.
81
+ */
82
+ getPart(name) {
83
+ return this[name];
84
+ }
85
+ /**
86
+ * Unwatch every binding created from this skin.
87
+ * Called by the host component when the skin is detached or replaced
88
+ * so stale watchers don't leak or fire on the wrong host.
89
+ */
90
+ unwatchAll() {
91
+ if (this.$watchers && this.$watchers.length > 0) {
92
+ for (const watcher of this.$watchers) {
93
+ watcher.unwatch();
94
+ }
95
+ this.$watchers.length = 0;
96
+ }
97
+ }
98
+ hasState(stateName) {
99
+ return this.states.some(s => s.name === stateName);
100
+ }
101
+ // ── Private methods ───────────────────────────────────────────────────
102
+ _onHostAddedToStage = () => {
103
+ this._initializeStates();
104
+ };
105
+ _initializeStates() {
106
+ if (this._stateInitialized)
107
+ return;
108
+ this._stateInitialized = true;
109
+ this._applyState('', this._currentState);
110
+ }
111
+ _applyState(fromState, toState) {
112
+ if (!this.states || this.states.length === 0)
113
+ return;
114
+ const oldState = this.states.find(s => s.name === fromState);
115
+ if (oldState) {
116
+ for (const override of oldState.overrides) {
117
+ override.remove(this._hostComponent, this);
118
+ }
119
+ }
120
+ const newState = this.states.find(s => s.name === toState);
121
+ if (newState) {
122
+ for (const override of newState.overrides) {
123
+ override.apply(this._hostComponent, this);
124
+ }
125
+ }
126
+ }
127
+ _removeState(stateName, host) {
128
+ const state = this.states.find(s => s.name === stateName);
129
+ if (!state)
130
+ return;
131
+ for (const override of state.overrides) {
132
+ override.remove(host, this);
133
+ }
134
+ }
135
+ }
136
+ //# sourceMappingURL=Skin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skin.js","sourceRoot":"","sources":["../../../src/kurot/components/Skin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { DisplayObject } from '@kurot/core';
2
+ import { Range } from './Range.js';
3
+ /**
4
+ * SliderBase — abstract base for slider components.
5
+ *
6
+ * Extends {@link Range} with thumb-drag interaction.
7
+ * Subclasses ({@link HSlider}, {@link VSlider}) set the direction.
8
+ *
9
+ * Expected skin parts:
10
+ * - `thumb` — the draggable handle
11
+ * - `track` — (optional) the track area, clicking it jumps the thumb
12
+ *
13
+ * @defaultProperty value
14
+ */
15
+ export declare class SliderBase extends Range {
16
+ private _direction;
17
+ private _thumb?;
18
+ private _track?;
19
+ private _pendingValue;
20
+ private _liveDragging;
21
+ private _isDragging;
22
+ private _touchStage?;
23
+ private _touchOffsetX;
24
+ private _touchOffsetY;
25
+ /** Scratch point reused across frame to avoid per-event allocations (egret `$TempPoint`). */
26
+ private readonly _scratchPoint;
27
+ constructor();
28
+ get direction(): string;
29
+ set direction(value: string);
30
+ get thumb(): DisplayObject | undefined;
31
+ set thumb(value: DisplayObject | undefined);
32
+ get track(): DisplayObject | undefined;
33
+ set track(value: DisplayObject | undefined);
34
+ /** Whether `value` updates live during drag (default true). If false, value commits on release. */
35
+ get liveDragging(): boolean;
36
+ set liveDragging(value: boolean);
37
+ /** The not-yet-committed value during interaction (egret parity). */
38
+ get pendingValue(): number;
39
+ set pendingValue(value: number);
40
+ protected pointToValue(x: number, y: number): number;
41
+ $onRemoveFromStage(): void;
42
+ private _addThumbListeners;
43
+ private _removeThumbListeners;
44
+ private _addTrackListeners;
45
+ private _removeTrackListeners;
46
+ private _onThumbDown;
47
+ private _onThumbMove;
48
+ private _onThumbUp;
49
+ private _onThumbCancel;
50
+ private _removeStageListeners;
51
+ private _cancelDrag;
52
+ private _onTrackDown;
53
+ /**
54
+ * Convert a stage-space touch coordinate to a slider value, taking into
55
+ * account the thumb's grab offset so the handle follows the finger from
56
+ * the exact point where it was grabbed (egret parity).
57
+ */
58
+ private _positionToValue;
59
+ }
60
+ //# sourceMappingURL=SliderBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SliderBase.d.ts","sourceRoot":"","sources":["../../../src/kurot/components/SliderBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,aAAa,EAAqB,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAInC;;;;;;;;;;;GAWG;AACH,qBAAa,UAAW,SAAQ,KAAK;IAGpC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,MAAM,CAAC,CAAgB;IAC/B,OAAO,CAAC,MAAM,CAAC,CAAgB;IAC/B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAQ;IAC5B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAK;IAE1B,6FAA6F;IAC7F,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;;IAW7C,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAMjC;IAED,IAAW,KAAK,IAAI,aAAa,GAAG,SAAS,CAE5C;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,EAMhD;IAED,IAAW,KAAK,IAAI,aAAa,GAAG,SAAS,CAE5C;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,EAKhD;IAED,mGAAmG;IACnG,IAAW,YAAY,IAAI,OAAO,CAEjC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,OAAO,EAErC;IAED,qEAAqE;IACrE,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAGpC;IAED,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAIpC,kBAAkB,IAAI,IAAI;IAO1C,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,YAAY,CAsBlB;IAEF,OAAO,CAAC,YAAY,CAalB;IAEF,OAAO,CAAC,UAAU,CAQhB;IAEF,OAAO,CAAC,cAAc,CAEpB;IAEF,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,YAAY,CAQlB;IAEF;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CAQxB"}
@@ -0,0 +1,197 @@
1
+ import { TouchEvent, Point, Event } from '@kurot/core';
2
+ import { Range } from './Range.js';
3
+ import { Direction } from '../core/Direction.js';
4
+ import { UIEvent } from '../events/UIEvent.js';
5
+ /**
6
+ * SliderBase — abstract base for slider components.
7
+ *
8
+ * Extends {@link Range} with thumb-drag interaction.
9
+ * Subclasses ({@link HSlider}, {@link VSlider}) set the direction.
10
+ *
11
+ * Expected skin parts:
12
+ * - `thumb` — the draggable handle
13
+ * - `track` — (optional) the track area, clicking it jumps the thumb
14
+ *
15
+ * @defaultProperty value
16
+ */
17
+ export class SliderBase extends Range {
18
+ // ── Instance fields ───────────────────────────────────────────────────
19
+ _direction = Direction.LTR;
20
+ _thumb;
21
+ _track;
22
+ _pendingValue = 0;
23
+ _liveDragging = true;
24
+ _isDragging = false;
25
+ _touchStage;
26
+ _touchOffsetX = 0;
27
+ _touchOffsetY = 0;
28
+ /** Scratch point reused across frame to avoid per-event allocations (egret `$TempPoint`). */
29
+ _scratchPoint = new Point();
30
+ // ── Constructor ───────────────────────────────────────────────────────
31
+ constructor() {
32
+ super();
33
+ this.maximum = 10;
34
+ }
35
+ // ── Getters / Setters ─────────────────────────────────────────────────
36
+ get direction() {
37
+ return this._direction;
38
+ }
39
+ set direction(value) {
40
+ if (this._direction === value)
41
+ return;
42
+ this._direction = value;
43
+ this.invalidateProperties();
44
+ this.invalidateSize();
45
+ this.invalidateDisplayList();
46
+ }
47
+ get thumb() {
48
+ return this._thumb;
49
+ }
50
+ set thumb(value) {
51
+ if (this._thumb === value)
52
+ return;
53
+ if (this._isDragging)
54
+ this._cancelDrag();
55
+ this._removeThumbListeners();
56
+ this._thumb = value;
57
+ this._addThumbListeners();
58
+ }
59
+ get track() {
60
+ return this._track;
61
+ }
62
+ set track(value) {
63
+ if (this._track === value)
64
+ return;
65
+ this._removeTrackListeners();
66
+ this._track = value;
67
+ this._addTrackListeners();
68
+ }
69
+ /** Whether `value` updates live during drag (default true). If false, value commits on release. */
70
+ get liveDragging() {
71
+ return this._liveDragging;
72
+ }
73
+ set liveDragging(value) {
74
+ this._liveDragging = value;
75
+ }
76
+ /** The not-yet-committed value during interaction (egret parity). */
77
+ get pendingValue() {
78
+ return this._pendingValue;
79
+ }
80
+ set pendingValue(value) {
81
+ this._pendingValue = value;
82
+ this.invalidateDisplayList();
83
+ }
84
+ pointToValue(x, y) {
85
+ return this.minimum;
86
+ }
87
+ $onRemoveFromStage() {
88
+ this._cancelDrag();
89
+ super.$onRemoveFromStage();
90
+ }
91
+ // ── Private methods ───────────────────────────────────────────────────
92
+ _addThumbListeners() {
93
+ if (!this._thumb)
94
+ return;
95
+ this._thumb.addEventListener(TouchEvent.TOUCH_BEGIN, this._onThumbDown);
96
+ }
97
+ _removeThumbListeners() {
98
+ if (!this._thumb)
99
+ return;
100
+ this._thumb.removeEventListener(TouchEvent.TOUCH_BEGIN, this._onThumbDown);
101
+ }
102
+ _addTrackListeners() {
103
+ if (!this._track)
104
+ return;
105
+ this._track.addEventListener(TouchEvent.TOUCH_BEGIN, this._onTrackDown);
106
+ }
107
+ _removeTrackListeners() {
108
+ if (!this._track)
109
+ return;
110
+ this._track.removeEventListener(TouchEvent.TOUCH_BEGIN, this._onTrackDown);
111
+ }
112
+ _onThumbDown = (e) => {
113
+ e.stopPropagation();
114
+ this._isDragging = true;
115
+ this._pendingValue = this.value;
116
+ // Capture the offset of the touch point within the thumb so that
117
+ // dragging tracks from the grab point rather than jumping to the
118
+ // finger centre (egret `SliderBase.onThumbTouchBegin` L399-404).
119
+ if (this._thumb) {
120
+ const offset = this._thumb.globalToLocal(e.stageX, e.stageY, this._scratchPoint);
121
+ this._touchOffsetX = offset.x;
122
+ this._touchOffsetY = offset.y;
123
+ }
124
+ const stage = this.stage;
125
+ if (stage) {
126
+ this._touchStage = stage;
127
+ stage.addEventListener(TouchEvent.TOUCH_MOVE, this._onThumbMove);
128
+ stage.addEventListener(TouchEvent.TOUCH_END, this._onThumbUp);
129
+ stage.addEventListener(TouchEvent.TOUCH_CANCEL, this._onThumbCancel);
130
+ }
131
+ UIEvent.dispatchUIEvent(this, UIEvent.CHANGE_START);
132
+ };
133
+ _onThumbMove = (e) => {
134
+ if (!this._isDragging || !this._track)
135
+ return;
136
+ const newValue = this._positionToValue(e.stageX, e.stageY);
137
+ if (newValue !== this._pendingValue) {
138
+ if (this._liveDragging) {
139
+ this._pendingValue = newValue;
140
+ this.value = newValue;
141
+ this.dispatchEventWith(Event.CHANGE);
142
+ }
143
+ else {
144
+ this._pendingValue = newValue;
145
+ this.invalidateDisplayList();
146
+ }
147
+ }
148
+ };
149
+ _onThumbUp = (_e) => {
150
+ this._isDragging = false;
151
+ this._removeStageListeners();
152
+ UIEvent.dispatchUIEvent(this, UIEvent.CHANGE_END);
153
+ if (!this._liveDragging && this.value !== this._pendingValue) {
154
+ this.value = this._pendingValue;
155
+ this.dispatchEventWith(Event.CHANGE);
156
+ }
157
+ };
158
+ _onThumbCancel = () => {
159
+ this._cancelDrag();
160
+ };
161
+ _removeStageListeners() {
162
+ const stage = this._touchStage;
163
+ if (!stage)
164
+ return;
165
+ stage.removeEventListener(TouchEvent.TOUCH_MOVE, this._onThumbMove);
166
+ stage.removeEventListener(TouchEvent.TOUCH_END, this._onThumbUp);
167
+ stage.removeEventListener(TouchEvent.TOUCH_CANCEL, this._onThumbCancel);
168
+ this._touchStage = undefined;
169
+ }
170
+ _cancelDrag() {
171
+ this._removeStageListeners();
172
+ this._isDragging = false;
173
+ this._pendingValue = this.value;
174
+ this.invalidateDisplayList();
175
+ }
176
+ _onTrackDown = (e) => {
177
+ e.stopPropagation();
178
+ this._pendingValue = this.value;
179
+ const newValue = this._positionToValue(e.stageX, e.stageY);
180
+ if (this.value !== newValue) {
181
+ this.value = newValue;
182
+ this.dispatchEventWith(Event.CHANGE);
183
+ }
184
+ };
185
+ /**
186
+ * Convert a stage-space touch coordinate to a slider value, taking into
187
+ * account the thumb's grab offset so the handle follows the finger from
188
+ * the exact point where it was grabbed (egret parity).
189
+ */
190
+ _positionToValue(stageX, stageY) {
191
+ if (!this._track)
192
+ return this.minimum;
193
+ const pt = this._track.globalToLocal(stageX, stageY, this._scratchPoint);
194
+ return this.nearestValidValue(this.pointToValue(pt.x - this._touchOffsetX, pt.y - this._touchOffsetY), this.snapInterval);
195
+ }
196
+ }
197
+ //# sourceMappingURL=SliderBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SliderBase.js","sourceRoot":"","sources":["../../../src/kurot/components/SliderBase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { ListBase } from './ListBase.js';
2
+ import { ItemRenderer } from './ItemRenderer.js';
3
+ import type { ICollection } from '../collections/ICollection.js';
4
+ /**
5
+ * TabBar — a horizontal strip of selectable tabs.
6
+ *
7
+ * Extends ListBase so it inherits selection logic. Uses a HorizontalLayout
8
+ * by default and dispatches {@link ItemTapEvent.ITEM_TAP} on tap.
9
+ *
10
+ * @defaultProperty dataProvider
11
+ */
12
+ export declare class TabBar extends ListBase {
13
+ private readonly _rendererHandlers;
14
+ private _viewStack?;
15
+ private _indexBeingUpdated;
16
+ constructor();
17
+ /**
18
+ * Override dataProvider to detect ViewStack and set up bidirectional binding:
19
+ * TabBar CHANGE → ViewStack.selectedIndex, ViewStack PropertyChange → TabBar.selectedIndex.
20
+ */
21
+ get dataProvider(): ICollection | undefined;
22
+ set dataProvider(value: ICollection | undefined);
23
+ private _onTabBarChange;
24
+ private _onViewStackPropChange;
25
+ createChildren(): void;
26
+ protected rendererAdded(renderer: ItemRenderer, _index: number, _item: unknown): void;
27
+ protected rendererRemoved(renderer: ItemRenderer, _index: number, _item: unknown): void;
28
+ }
29
+ //# sourceMappingURL=TabBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabBar.d.ts","sourceRoot":"","sources":["../../../src/kurot/components/TabBar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAIjE;;;;;;;GAOG;AACH,qBAAa,MAAO,SAAQ,QAAQ;IAGnC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA+C;IACjF,OAAO,CAAC,UAAU,CAAC,CAAY;IAC/B,OAAO,CAAC,kBAAkB,CAAS;;IAYnC;;;OAGG;IACH,IAAoB,YAAY,IAAI,WAAW,GAAG,SAAS,CAE1D;IAED,IAAoB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,EAc9D;IAED,OAAO,CAAC,eAAe,CAKrB;IAEF,OAAO,CAAC,sBAAsB,CAM5B;IAEc,cAAc,IAAI,IAAI;cAUnB,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;cAU3E,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;CAOhG"}
@@ -0,0 +1,92 @@
1
+ import { TouchEvent, Event } from '@kurot/core';
2
+ import { ListBase } from './ListBase.js';
3
+ import { ItemTapEvent } from '../events/ItemTapEvent.js';
4
+ import { HorizontalLayout } from '../layouts/HorizontalLayout.js';
5
+ import { JustifyAlign } from '../layouts/JustifyAlign.js';
6
+ import { ViewStack } from './ViewStack.js';
7
+ import { PropertyEvent } from '../events/PropertyEvent.js';
8
+ /**
9
+ * TabBar — a horizontal strip of selectable tabs.
10
+ *
11
+ * Extends ListBase so it inherits selection logic. Uses a HorizontalLayout
12
+ * by default and dispatches {@link ItemTapEvent.ITEM_TAP} on tap.
13
+ *
14
+ * @defaultProperty dataProvider
15
+ */
16
+ export class TabBar extends ListBase {
17
+ // ── Instance fields ───────────────────────────────────────────────────
18
+ _rendererHandlers = new Map();
19
+ _viewStack;
20
+ _indexBeingUpdated = false;
21
+ // ── Constructor ───────────────────────────────────────────────────────
22
+ constructor() {
23
+ super();
24
+ this.requireSelection = true;
25
+ this.useVirtualLayout = false;
26
+ }
27
+ // ── Override methods ──────────────────────────────────────────────────
28
+ /**
29
+ * Override dataProvider to detect ViewStack and set up bidirectional binding:
30
+ * TabBar CHANGE → ViewStack.selectedIndex, ViewStack PropertyChange → TabBar.selectedIndex.
31
+ */
32
+ get dataProvider() {
33
+ return super.dataProvider;
34
+ }
35
+ set dataProvider(value) {
36
+ // Clean up previous ViewStack binding
37
+ if (this._viewStack) {
38
+ this._viewStack.removeEventListener(PropertyEvent.PROPERTY_CHANGE, this._onViewStackPropChange);
39
+ this.removeEventListener(Event.CHANGE, this._onTabBarChange);
40
+ this._viewStack = undefined;
41
+ }
42
+ super.dataProvider = value;
43
+ // Set up new ViewStack binding
44
+ if (value instanceof ViewStack) {
45
+ this._viewStack = value;
46
+ value.addEventListener(PropertyEvent.PROPERTY_CHANGE, this._onViewStackPropChange);
47
+ this.addEventListener(Event.CHANGE, this._onTabBarChange);
48
+ }
49
+ }
50
+ _onTabBarChange = () => {
51
+ if (!this._viewStack)
52
+ return;
53
+ this._indexBeingUpdated = true;
54
+ this._viewStack.selectedIndex = this.selectedIndex;
55
+ this._indexBeingUpdated = false;
56
+ };
57
+ _onViewStackPropChange = (e) => {
58
+ if (!this._viewStack || this._indexBeingUpdated)
59
+ return;
60
+ const pe = e;
61
+ if (pe.property === 'selectedIndex') {
62
+ this.setSelectedIndex(this._viewStack.selectedIndex, false);
63
+ }
64
+ };
65
+ createChildren() {
66
+ if (!this.layout) {
67
+ const hl = new HorizontalLayout();
68
+ hl.gap = 0;
69
+ hl.horizontalAlign = JustifyAlign.CONTENT_JUSTIFY;
70
+ this.layout = hl;
71
+ }
72
+ super.createChildren();
73
+ }
74
+ rendererAdded(renderer, _index, _item) {
75
+ const handler = (_e) => {
76
+ const idx = renderer.itemIndex;
77
+ if (idx >= 0)
78
+ this.setSelectedIndex(idx, true);
79
+ ItemTapEvent.dispatchItemTapEvent(this, renderer.data, idx, renderer);
80
+ };
81
+ this._rendererHandlers.set(renderer, handler);
82
+ renderer.addEventListener(TouchEvent.TOUCH_TAP, handler);
83
+ }
84
+ rendererRemoved(renderer, _index, _item) {
85
+ const handler = this._rendererHandlers.get(renderer);
86
+ if (handler) {
87
+ this._rendererHandlers.delete(renderer);
88
+ renderer.removeEventListener(TouchEvent.TOUCH_TAP, handler);
89
+ }
90
+ }
91
+ }
92
+ //# sourceMappingURL=TabBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabBar.js","sourceRoot":"","sources":["../../../src/kurot/components/TabBar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { Component } from './Component.js';
2
+ import { EditableText } from './EditableText.js';
3
+ import { Label } from './Label.js';
4
+ import type { IDisplayText } from '../core/IDisplayText.js';
5
+ /**
6
+ * Text input component with prompt (placeholder) and password support.
7
+ *
8
+ * Skin parts:
9
+ * - `textDisplay` — EditableText for actual input
10
+ * - `promptDisplay` — Label shown when text is empty and unfocused
11
+ *
12
+ * States: `normal`, `disabled`, `normalWithPrompt`, `disabledWithPrompt`
13
+ *
14
+ * Egret-compatible: eui.TextInput
15
+ */
16
+ export declare class TextInput extends Component implements IDisplayText {
17
+ textDisplay?: EditableText;
18
+ promptDisplay?: Label;
19
+ private _prompt;
20
+ private _text;
21
+ private _textColor?;
22
+ private _displayAsPassword;
23
+ private _maxChars;
24
+ private _restrict;
25
+ private _inputType;
26
+ private _isFocused;
27
+ constructor();
28
+ get prompt(): string;
29
+ set prompt(value: string);
30
+ get text(): string;
31
+ set text(value: string);
32
+ get textColor(): number;
33
+ set textColor(value: number);
34
+ get displayAsPassword(): boolean;
35
+ set displayAsPassword(value: boolean);
36
+ get maxChars(): number;
37
+ set maxChars(value: number);
38
+ get restrict(): string;
39
+ set restrict(value: string);
40
+ get inputType(): string;
41
+ set inputType(value: string);
42
+ protected getCurrentState(): string;
43
+ protected partAdded(partName: string, instance: unknown): void;
44
+ protected partRemoved(partName: string, instance: unknown): void;
45
+ private _onFocusIn;
46
+ private _onFocusOut;
47
+ private _onTouchBegin;
48
+ }
49
+ //# sourceMappingURL=TextInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextInput.d.ts","sourceRoot":"","sources":["../../../src/kurot/components/TextInput.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;;;;;;;;;GAUG;AACH,qBAAa,SAAU,SAAQ,SAAU,YAAW,YAAY;IAGxD,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,aAAa,CAAC,EAAE,KAAK,CAAC;IAE7B,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,UAAU,CAAS;;IAW3B,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAI9B;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,IAAI,CAAC,KAAK,EAAE,MAAM,EAI5B;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAGjC;IAED,IAAW,iBAAiB,IAAI,OAAO,CAEtC;IAED,IAAW,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAG1C;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED,IAAW,QAAQ,CAAC,KAAK,EAAE,MAAM,EAGhC;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED,IAAW,QAAQ,CAAC,KAAK,EAAE,MAAM,EAGhC;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAIjC;cAIkB,eAAe,IAAI,MAAM;cAQzB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;cAmBpD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAmBzE,OAAO,CAAC,UAAU,CAGhB;IAEF,OAAO,CAAC,WAAW,CAGjB;IAEF,OAAO,CAAC,aAAa,CAEnB;CACF"}