@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,483 @@
1
+ import { Rectangle } from '@kurot/core';
2
+ import { Group } from './Group.js';
3
+ import { ItemRenderer } from './ItemRenderer.js';
4
+ import { CollectionEvent, CollectionEventKind } from '../events/CollectionEvent.js';
5
+ import { VerticalLayout } from '../layouts/VerticalLayout.js';
6
+ import { JustifyAlign } from '../layouts/JustifyAlign.js';
7
+ /**
8
+ * DataGroup converts data items into visual elements (item renderers).
9
+ *
10
+ * Provide an {@link ICollection} via `dataProvider` and either set
11
+ * `itemRenderer` to a class or supply `itemRendererFunction` for
12
+ * per-item renderer resolution.
13
+ *
14
+ * Supports virtual layout — only creates renderers for visible items.
15
+ *
16
+ * @defaultProperty dataProvider
17
+ */
18
+ export class DataGroup extends Group {
19
+ // ── Instance fields ───────────────────────────────────────────────────────
20
+ _dataProvider;
21
+ _dataProviderChanged = false;
22
+ _itemRenderer;
23
+ _itemRendererChanged = false;
24
+ _itemRendererFunction;
25
+ _itemRendererSkinName;
26
+ _itemRendererSkinNameChanged = false;
27
+ _useVirtualLayout = false;
28
+ _useVirtualLayoutChanged = false;
29
+ _rendererToClass = new Map();
30
+ _freeRenderers = new Map();
31
+ _renderersBeingUpdated = false;
32
+ _indexToRenderer = [];
33
+ _createNewRendererFlag = false;
34
+ _typicalLayoutRect;
35
+ _typicalItem;
36
+ _typicalItemChanged = false;
37
+ _cleanFreeRenderer = false;
38
+ // ── Getters / Setters ─────────────────────────────────────────────────────
39
+ get dataProvider() {
40
+ return this._dataProvider;
41
+ }
42
+ set dataProvider(value) {
43
+ if (this._dataProvider === value)
44
+ return;
45
+ this._removeDataProviderListener();
46
+ this._dataProvider = value;
47
+ this._dataProviderChanged = true;
48
+ this._cleanFreeRenderer = true;
49
+ this.invalidateProperties();
50
+ this.invalidateSize();
51
+ this.invalidateDisplayList();
52
+ }
53
+ get itemRenderer() {
54
+ return this._itemRenderer;
55
+ }
56
+ set itemRenderer(value) {
57
+ if (this._itemRenderer === value)
58
+ return;
59
+ this._itemRenderer = value;
60
+ this._itemRendererChanged = true;
61
+ this._typicalItemChanged = true;
62
+ this._cleanFreeRenderer = true;
63
+ this._removeDataProviderListener();
64
+ this.invalidateProperties();
65
+ }
66
+ get itemRendererFunction() {
67
+ return this._itemRendererFunction;
68
+ }
69
+ set itemRendererFunction(value) {
70
+ if (this._itemRendererFunction === value)
71
+ return;
72
+ this._itemRendererFunction = value;
73
+ this._itemRendererChanged = true;
74
+ this._typicalItemChanged = true;
75
+ this._removeDataProviderListener();
76
+ this.invalidateProperties();
77
+ }
78
+ get itemRendererSkinName() {
79
+ return this._itemRendererSkinName;
80
+ }
81
+ set itemRendererSkinName(value) {
82
+ if (this._itemRendererSkinName === value)
83
+ return;
84
+ this._itemRendererSkinName = value;
85
+ this._itemRendererSkinNameChanged = true;
86
+ this.invalidateProperties();
87
+ }
88
+ get useVirtualLayout() {
89
+ const layout = this.layout;
90
+ if (layout)
91
+ return layout.useVirtualLayout;
92
+ return this._useVirtualLayout;
93
+ }
94
+ set useVirtualLayout(value) {
95
+ if (this._useVirtualLayout === value)
96
+ return;
97
+ this._useVirtualLayout = value;
98
+ const layout = this.layout;
99
+ if (layout)
100
+ layout.useVirtualLayout = value;
101
+ }
102
+ // ── Public methods ────────────────────────────────────────────────────────
103
+ /**
104
+ * Update a renderer's itemIndex and data. Called by the layout system.
105
+ */
106
+ updateRenderer(renderer, itemIndex, data) {
107
+ this._renderersBeingUpdated = true;
108
+ renderer.itemIndex = itemIndex;
109
+ if (renderer.parent === this) {
110
+ this.setChildIndex(renderer, itemIndex);
111
+ }
112
+ renderer.data = data;
113
+ this._renderersBeingUpdated = false;
114
+ return renderer;
115
+ }
116
+ // ── Override methods ──────────────────────────────────────────────────────
117
+ get numElements() {
118
+ if (!this._dataProvider)
119
+ return 0;
120
+ return this._dataProvider.length;
121
+ }
122
+ getElementAt(index) {
123
+ return this._indexToRenderer[index] ?? undefined;
124
+ }
125
+ getVirtualElementAt(index) {
126
+ index = index | 0;
127
+ if (!this._dataProvider || index < 0 || index >= this._dataProvider.length)
128
+ return undefined;
129
+ let renderer = this._indexToRenderer[index];
130
+ if (!renderer) {
131
+ const item = this._dataProvider.getItemAt(index);
132
+ renderer = this._createVirtualRenderer(item);
133
+ this._indexToRenderer[index] = renderer;
134
+ this.updateRenderer(renderer, index, item);
135
+ if (this._createNewRendererFlag) {
136
+ renderer.validateNow();
137
+ this._createNewRendererFlag = false;
138
+ this.rendererAdded(renderer, index, item);
139
+ }
140
+ }
141
+ return renderer;
142
+ }
143
+ setVirtualElementIndicesInView(startIndex, endIndex) {
144
+ const layout = this.layout;
145
+ if (!layout?.useVirtualLayout)
146
+ return;
147
+ const map = this._indexToRenderer;
148
+ for (let i = 0; i < map.length; i++) {
149
+ if (map[i] && (i < startIndex || i > endIndex)) {
150
+ this._freeRendererByIndex(i);
151
+ }
152
+ }
153
+ }
154
+ createChildren() {
155
+ if (!this.layout) {
156
+ const vl = new VerticalLayout();
157
+ vl.gap = 0;
158
+ vl.horizontalAlign = JustifyAlign.CONTENT_JUSTIFY;
159
+ if (this._useVirtualLayout) {
160
+ vl.useVirtualLayout = true;
161
+ }
162
+ this.layout = vl;
163
+ }
164
+ super.createChildren();
165
+ }
166
+ commitProperties() {
167
+ if (this._itemRendererChanged || this._dataProviderChanged || this._useVirtualLayoutChanged) {
168
+ this._removeAllRenderers();
169
+ const layout = this.layout;
170
+ if (layout)
171
+ layout.clearVirtualLayoutCache();
172
+ this._setTypicalLayoutRect(undefined);
173
+ this._useVirtualLayoutChanged = false;
174
+ this._itemRendererChanged = false;
175
+ if (this._dataProvider) {
176
+ this._dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE, this._onCollectionChange);
177
+ }
178
+ const useVirtual = layout ? layout.useVirtualLayout : this._useVirtualLayout;
179
+ if (useVirtual) {
180
+ this.invalidateSize();
181
+ this.invalidateDisplayList();
182
+ }
183
+ else {
184
+ this._createRenderers();
185
+ }
186
+ if (this._dataProviderChanged) {
187
+ this._dataProviderChanged = false;
188
+ this.scrollH = 0;
189
+ this.scrollV = 0;
190
+ }
191
+ }
192
+ super.commitProperties();
193
+ if (this._typicalItemChanged) {
194
+ this._typicalItemChanged = false;
195
+ if (this._dataProvider && this._dataProvider.length > 0) {
196
+ this._typicalItem = this._dataProvider.getItemAt(0);
197
+ this._measureRendererSize();
198
+ }
199
+ }
200
+ if (this._itemRendererSkinNameChanged) {
201
+ this._itemRendererSkinNameChanged = false;
202
+ this._applyItemRendererSkinName();
203
+ }
204
+ }
205
+ measure() {
206
+ if (this.layout?.useVirtualLayout)
207
+ this._ensureTypicalLayoutElement();
208
+ super.measure();
209
+ }
210
+ updateDisplayList(unscaledWidth, unscaledHeight) {
211
+ const useVirtual = this.layout?.useVirtualLayout;
212
+ if (useVirtual)
213
+ this._ensureTypicalLayoutElement();
214
+ super.updateDisplayList(unscaledWidth, unscaledHeight);
215
+ if (useVirtual && this._typicalLayoutRect) {
216
+ const r0 = this._indexToRenderer[0];
217
+ if (r0) {
218
+ const b = new Rectangle();
219
+ r0.getPreferredBounds(b);
220
+ if (b.width !== this._typicalLayoutRect.width || b.height !== this._typicalLayoutRect.height) {
221
+ this._typicalLayoutRect = undefined;
222
+ }
223
+ }
224
+ }
225
+ }
226
+ // ── Protected methods (subclass hooks) ────────────────────────────────────
227
+ itemAdded(item, index) {
228
+ this.layout?.elementAdded(index);
229
+ if (this.layout?.useVirtualLayout) {
230
+ this._indexToRenderer.splice(index, 0, undefined);
231
+ return;
232
+ }
233
+ const renderer = this._createVirtualRenderer(item);
234
+ this._indexToRenderer.splice(index, 0, renderer);
235
+ if (renderer) {
236
+ this.updateRenderer(renderer, index, item);
237
+ if (this._createNewRendererFlag) {
238
+ this._createNewRendererFlag = false;
239
+ this.rendererAdded(renderer, index, item);
240
+ }
241
+ }
242
+ }
243
+ itemRemoved(item, index) {
244
+ this.layout?.elementRemoved(index);
245
+ const oldRenderer = this._indexToRenderer[index];
246
+ if (this._indexToRenderer.length > index) {
247
+ this._indexToRenderer.splice(index, 1);
248
+ }
249
+ if (oldRenderer) {
250
+ if (this.layout?.useVirtualLayout) {
251
+ this._doFreeRenderer(oldRenderer);
252
+ }
253
+ else {
254
+ this.rendererRemoved(oldRenderer, index, item);
255
+ this.removeChild(oldRenderer);
256
+ }
257
+ }
258
+ }
259
+ onCollectionChange(event) {
260
+ switch (event.kind) {
261
+ case CollectionEventKind.ADD:
262
+ this._itemAddedHandler(event.items, event.location);
263
+ break;
264
+ case CollectionEventKind.REMOVE:
265
+ this._itemRemovedHandler(event.items, event.location);
266
+ break;
267
+ case CollectionEventKind.UPDATE:
268
+ case CollectionEventKind.REPLACE:
269
+ this._itemUpdatedHandler(event.items[0], event.location);
270
+ break;
271
+ case CollectionEventKind.RESET:
272
+ case CollectionEventKind.REFRESH: {
273
+ if (this.layout?.useVirtualLayout) {
274
+ for (let i = this._indexToRenderer.length - 1; i >= 0; i--) {
275
+ if (this._indexToRenderer[i])
276
+ this._freeRendererByIndex(i);
277
+ }
278
+ }
279
+ this._dataProviderChanged = true;
280
+ this.invalidateProperties();
281
+ break;
282
+ }
283
+ default:
284
+ break;
285
+ }
286
+ this.invalidateSize();
287
+ this.invalidateDisplayList();
288
+ }
289
+ rendererAdded(_renderer, _index, _item) { }
290
+ rendererRemoved(_renderer, _index, _item) { }
291
+ /**
292
+ * Get the renderer at the given index, if one exists.
293
+ * Used by subclasses (e.g. ListBase) to update renderer state.
294
+ */
295
+ getRendererAt(index) {
296
+ return this._indexToRenderer[index];
297
+ }
298
+ // ── Private methods ───────────────────────────────────────────────────────
299
+ _removeDataProviderListener() {
300
+ if (this._dataProvider) {
301
+ this._dataProvider.removeEventListener(CollectionEvent.COLLECTION_CHANGE, this._onCollectionChange);
302
+ }
303
+ }
304
+ _onCollectionChange = (e) => {
305
+ this.onCollectionChange(e);
306
+ };
307
+ _itemAddedHandler(items, index) {
308
+ for (let i = 0; i < items.length; i++) {
309
+ this.itemAdded(items[i], index + i);
310
+ }
311
+ this._resetRenderersIndices();
312
+ }
313
+ _itemRemovedHandler(items, location) {
314
+ for (let i = items.length - 1; i >= 0; i--) {
315
+ this.itemRemoved(items[i], location + i);
316
+ }
317
+ this._resetRenderersIndices();
318
+ }
319
+ _itemUpdatedHandler(item, location) {
320
+ if (this._renderersBeingUpdated)
321
+ return;
322
+ const renderer = this._indexToRenderer[location];
323
+ if (renderer) {
324
+ this.updateRenderer(renderer, location, item);
325
+ }
326
+ }
327
+ _createVirtualRenderer(item) {
328
+ const rendererClass = this._itemToRendererClass(item);
329
+ const pool = this._freeRenderers.get(rendererClass);
330
+ if (pool && pool.length > 0) {
331
+ const renderer = pool.pop();
332
+ renderer.visible = true;
333
+ this.invalidateDisplayList();
334
+ return renderer;
335
+ }
336
+ this._createNewRendererFlag = true;
337
+ return this._createOneRenderer(rendererClass);
338
+ }
339
+ _createOneRenderer(rendererClass) {
340
+ const renderer = new rendererClass();
341
+ this._rendererToClass.set(renderer, rendererClass);
342
+ if (this._itemRendererSkinName) {
343
+ this._setItemRendererSkinName(renderer, this._itemRendererSkinName);
344
+ }
345
+ this.addChild(renderer);
346
+ return renderer;
347
+ }
348
+ _doFreeRenderer(renderer) {
349
+ const cls = this._rendererToClass.get(renderer);
350
+ if (!cls)
351
+ return;
352
+ let pool = this._freeRenderers.get(cls);
353
+ if (!pool) {
354
+ pool = [];
355
+ this._freeRenderers.set(cls, pool);
356
+ }
357
+ pool.push(renderer);
358
+ renderer.visible = false;
359
+ }
360
+ _freeRendererByIndex(index) {
361
+ const renderer = this._indexToRenderer[index];
362
+ if (renderer) {
363
+ delete this._indexToRenderer[index];
364
+ this._doFreeRenderer(renderer);
365
+ }
366
+ }
367
+ _itemToRendererClass(item) {
368
+ let cls;
369
+ if (this._itemRendererFunction) {
370
+ cls = this._itemRendererFunction(item);
371
+ }
372
+ if (!cls)
373
+ cls = this._itemRenderer;
374
+ if (!cls)
375
+ cls = ItemRenderer;
376
+ return cls;
377
+ }
378
+ _createRenderers() {
379
+ if (!this._dataProvider)
380
+ return;
381
+ const len = this._dataProvider.length;
382
+ for (let i = 0; i < len; i++) {
383
+ const item = this._dataProvider.getItemAt(i);
384
+ const cls = this._itemToRendererClass(item);
385
+ const renderer = this._createOneRenderer(cls);
386
+ this._indexToRenderer[i] = renderer;
387
+ this.updateRenderer(renderer, i, item);
388
+ this.rendererAdded(renderer, i, item);
389
+ }
390
+ }
391
+ _removeAllRenderers() {
392
+ for (let i = 0; i < this._indexToRenderer.length; i++) {
393
+ const renderer = this._indexToRenderer[i];
394
+ if (renderer) {
395
+ this.rendererRemoved(renderer, renderer.itemIndex, renderer.data);
396
+ this.removeChild(renderer);
397
+ }
398
+ }
399
+ this._indexToRenderer = [];
400
+ if (this._cleanFreeRenderer) {
401
+ for (const pool of this._freeRenderers.values()) {
402
+ for (const renderer of pool) {
403
+ this.rendererRemoved(renderer, renderer.itemIndex, renderer.data);
404
+ this.removeChild(renderer);
405
+ }
406
+ }
407
+ this._freeRenderers.clear();
408
+ this._rendererToClass.clear();
409
+ this._cleanFreeRenderer = false;
410
+ }
411
+ }
412
+ _resetRenderersIndices() {
413
+ const map = this._indexToRenderer;
414
+ if (map.length === 0)
415
+ return;
416
+ for (let i = 0; i < map.length; i++) {
417
+ if (map[i])
418
+ map[i].itemIndex = i;
419
+ }
420
+ }
421
+ _ensureTypicalLayoutElement() {
422
+ if (this._typicalLayoutRect)
423
+ return;
424
+ if (this._dataProvider && this._dataProvider.length > 0) {
425
+ this._typicalItem = this._dataProvider.getItemAt(0);
426
+ this._measureRendererSize();
427
+ }
428
+ }
429
+ _measureRendererSize() {
430
+ if (this._typicalItem === undefined) {
431
+ this._setTypicalLayoutRect(undefined);
432
+ return;
433
+ }
434
+ const renderer = this._createVirtualRenderer(this._typicalItem);
435
+ this.updateRenderer(renderer, 0, this._typicalItem);
436
+ renderer.validateNow();
437
+ const b = new Rectangle();
438
+ renderer.getPreferredBounds(b);
439
+ const rect = new Rectangle(0, 0, b.width, b.height);
440
+ if (this.layout?.useVirtualLayout) {
441
+ if (this._createNewRendererFlag) {
442
+ this.rendererAdded(renderer, 0, this._typicalItem);
443
+ }
444
+ this._doFreeRenderer(renderer);
445
+ }
446
+ else {
447
+ this.removeChild(renderer);
448
+ }
449
+ this._setTypicalLayoutRect(rect);
450
+ this._createNewRendererFlag = false;
451
+ }
452
+ _setTypicalLayoutRect(rect) {
453
+ this._typicalLayoutRect = rect;
454
+ if (this.layout) {
455
+ if (rect) {
456
+ this.layout.setTypicalSize(rect.width, rect.height);
457
+ }
458
+ else {
459
+ this.layout.setTypicalSize(0, 0);
460
+ }
461
+ }
462
+ }
463
+ _setItemRendererSkinName(renderer, skinName) {
464
+ if (!renderer.skinNameExplicitlySet) {
465
+ renderer.skinName = skinName;
466
+ renderer.skinNameExplicitlySet = false;
467
+ }
468
+ }
469
+ _applyItemRendererSkinName() {
470
+ const skinName = this._itemRendererSkinName;
471
+ for (const renderer of this._indexToRenderer) {
472
+ if (renderer) {
473
+ this._setItemRendererSkinName(renderer, skinName);
474
+ }
475
+ }
476
+ for (const pool of this._freeRenderers.values()) {
477
+ for (const renderer of pool) {
478
+ this._setItemRendererSkinName(renderer, skinName);
479
+ }
480
+ }
481
+ }
482
+ }
483
+ //# sourceMappingURL=DataGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataGroup.js","sourceRoot":"","sources":["../../../src/kurot/components/DataGroup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { TextFieldInputType } from '@kurot/core';
2
+ import type { IDisplayText } from '../core/IDisplayText.js';
3
+ import { Label } from './Label.js';
4
+ /**
5
+ * Editable text component with EUI layout participation and prompt support.
6
+ *
7
+ * The native-input TextField lives inside this Component, just like Label's
8
+ * display TextField. Consequently BasicLayout constraints are resolved on the
9
+ * wrapper first and updateDisplayList passes the final bounds to StageText.
10
+ *
11
+ * Egret-compatible: eui.EditableText
12
+ */
13
+ export declare class EditableText extends Label implements IDisplayText {
14
+ private _prompt;
15
+ private _promptColor;
16
+ private _userTextColor;
17
+ private _isShowingPrompt;
18
+ private _isFocused;
19
+ private _asPassword;
20
+ constructor();
21
+ get prompt(): string;
22
+ set prompt(value: string);
23
+ get promptColor(): number;
24
+ set promptColor(value: number);
25
+ get text(): string;
26
+ set text(value: string);
27
+ get textColor(): number;
28
+ set textColor(value: number);
29
+ get displayAsPassword(): boolean;
30
+ set displayAsPassword(value: boolean);
31
+ get inputType(): TextFieldInputType;
32
+ set inputType(value: TextFieldInputType);
33
+ get restrict(): string | undefined;
34
+ set restrict(value: string | undefined);
35
+ get selectionBeginIndex(): number;
36
+ get selectionEndIndex(): number;
37
+ get caretIndex(): number;
38
+ setFocus(): void;
39
+ setSelection(beginIndex: number, endIndex: number): void;
40
+ private _showPrompt;
41
+ private _onFocusIn;
42
+ private _onFocusOut;
43
+ }
44
+ //# sourceMappingURL=EditableText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditableText.d.ts","sourceRoot":"","sources":["../../../src/kurot/components/EditableText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,kBAAkB,EAAiB,MAAM,aAAa,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;;;;;;GAQG;AACH,qBAAa,YAAa,SAAQ,KAAM,YAAW,YAAY;IAC9D,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,YAAY,CAAY;IAChC,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;;IAS5B,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAI9B;IAED,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,WAAW,CAAC,KAAK,EAAE,MAAM,EAGnC;IAED,IAAoB,IAAI,IAAI,MAAM,CAEjC;IAED,IAAoB,IAAI,CAAC,KAAK,EAAE,MAAM,EAUrC;IAED,IAAoB,SAAS,IAAI,MAAM,CAEtC;IAED,IAAoB,SAAS,CAAC,KAAK,EAAE,MAAM,EAG1C;IAED,IAAoB,iBAAiB,IAAI,OAAO,CAE/C;IAED,IAAoB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAGnD;IAED,IAAW,SAAS,IAAI,kBAAkB,CAEzC;IAED,IAAW,SAAS,CAAC,KAAK,EAAE,kBAAkB,EAE7C;IAED,IAAW,QAAQ,IAAI,MAAM,GAAG,SAAS,CAExC;IAED,IAAW,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAE5C;IAED,IAAW,mBAAmB,IAAI,MAAM,CAEvC;IAED,IAAW,iBAAiB,IAAI,MAAM,CAErC;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAEM,QAAQ,IAAI,IAAI;IAIhB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI/D,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,UAAU,CAQhB;IAEF,OAAO,CAAC,WAAW,CAGjB;CACF"}
@@ -0,0 +1,126 @@
1
+ import { Event, TextFieldType } from '@kurot/core';
2
+ import { PropertyEvent } from '../events/PropertyEvent.js';
3
+ import { Label } from './Label.js';
4
+ /**
5
+ * Editable text component with EUI layout participation and prompt support.
6
+ *
7
+ * The native-input TextField lives inside this Component, just like Label's
8
+ * display TextField. Consequently BasicLayout constraints are resolved on the
9
+ * wrapper first and updateDisplayList passes the final bounds to StageText.
10
+ *
11
+ * Egret-compatible: eui.EditableText
12
+ */
13
+ export class EditableText extends Label {
14
+ _prompt = '';
15
+ _promptColor = 0x999999;
16
+ _userTextColor = 0xffffff;
17
+ _isShowingPrompt = false;
18
+ _isFocused = false;
19
+ _asPassword = false;
20
+ constructor() {
21
+ super();
22
+ this._textField.type = TextFieldType.INPUT;
23
+ this.addEventListener(Event.FOCUS_IN, this._onFocusIn);
24
+ this.addEventListener(Event.FOCUS_OUT, this._onFocusOut);
25
+ }
26
+ get prompt() {
27
+ return this._prompt;
28
+ }
29
+ set prompt(value) {
30
+ if (this._prompt === value)
31
+ return;
32
+ this._prompt = value;
33
+ if (!this._isFocused && (!this.text || this.text === this._prompt))
34
+ this._showPrompt();
35
+ }
36
+ get promptColor() {
37
+ return this._promptColor;
38
+ }
39
+ set promptColor(value) {
40
+ this._promptColor = value;
41
+ if (this._isShowingPrompt)
42
+ this._textField.textColor = value;
43
+ }
44
+ get text() {
45
+ return this._isShowingPrompt ? '' : this._textField.text;
46
+ }
47
+ set text(value) {
48
+ if (this._isShowingPrompt && value === this._prompt)
49
+ return;
50
+ this._isShowingPrompt = false;
51
+ this._textField.textColor = this._userTextColor;
52
+ this._textField.displayAsPassword = this._asPassword;
53
+ this._textField.text = value ?? '';
54
+ PropertyEvent.dispatchPropertyEvent(this, 'text');
55
+ this.invalidateSize();
56
+ this.invalidateDisplayList();
57
+ if (!this._isFocused && !value)
58
+ this._showPrompt();
59
+ }
60
+ get textColor() {
61
+ return this._textField.textColor;
62
+ }
63
+ set textColor(value) {
64
+ if (!this._isShowingPrompt)
65
+ this._userTextColor = value;
66
+ this._textField.textColor = value;
67
+ }
68
+ get displayAsPassword() {
69
+ return this._textField.displayAsPassword;
70
+ }
71
+ set displayAsPassword(value) {
72
+ this._asPassword = value;
73
+ if (!this._isShowingPrompt)
74
+ this._textField.displayAsPassword = value;
75
+ }
76
+ get inputType() {
77
+ return this._textField.inputType;
78
+ }
79
+ set inputType(value) {
80
+ this._textField.inputType = value;
81
+ }
82
+ get restrict() {
83
+ return this._textField.restrict;
84
+ }
85
+ set restrict(value) {
86
+ this._textField.restrict = value;
87
+ }
88
+ get selectionBeginIndex() {
89
+ return this._textField.selectionBeginIndex;
90
+ }
91
+ get selectionEndIndex() {
92
+ return this._textField.selectionEndIndex;
93
+ }
94
+ get caretIndex() {
95
+ return this._textField.caretIndex;
96
+ }
97
+ setFocus() {
98
+ this._textField.setFocus();
99
+ }
100
+ setSelection(beginIndex, endIndex) {
101
+ this._textField.setSelection(beginIndex, endIndex);
102
+ }
103
+ _showPrompt() {
104
+ if (!this._prompt)
105
+ return;
106
+ this._isShowingPrompt = true;
107
+ this._textField.textColor = this._promptColor;
108
+ this._textField.displayAsPassword = false;
109
+ this._textField.text = this._prompt;
110
+ }
111
+ _onFocusIn = () => {
112
+ this._isFocused = true;
113
+ if (this._isShowingPrompt) {
114
+ this._isShowingPrompt = false;
115
+ this._textField.textColor = this._userTextColor;
116
+ this._textField.displayAsPassword = this._asPassword;
117
+ this._textField.text = '';
118
+ }
119
+ };
120
+ _onFocusOut = () => {
121
+ this._isFocused = false;
122
+ if (!this._textField.text)
123
+ this._showPrompt();
124
+ };
125
+ }
126
+ //# sourceMappingURL=EditableText.js.map