cx 24.7.4 → 24.7.5

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 (760) hide show
  1. package/LICENSE-THIRD-PARTY.md +91 -91
  2. package/LICENSE.md +7 -7
  3. package/README.md +46 -46
  4. package/dist/manifest.js +802 -802
  5. package/dist/widgets.js +1 -0
  6. package/index.js +17 -17
  7. package/locale/de-de.js +74 -74
  8. package/locale/en-us.js +74 -74
  9. package/locale/es-es.js +74 -74
  10. package/locale/fr-fr.js +74 -74
  11. package/locale/nl-nl.js +74 -74
  12. package/locale/pt-pt.js +74 -74
  13. package/locale/sr-latn-ba.js +74 -74
  14. package/package.json +1 -1
  15. package/src/charts/Bar.js +89 -89
  16. package/src/charts/Bar.scss +26 -26
  17. package/src/charts/BarGraph.d.ts +15 -15
  18. package/src/charts/BarGraph.js +112 -112
  19. package/src/charts/BarGraph.scss +27 -27
  20. package/src/charts/BubbleGraph.js +92 -92
  21. package/src/charts/BubbleGraph.scss +29 -29
  22. package/src/charts/Chart.d.ts +12 -12
  23. package/src/charts/Chart.js +75 -75
  24. package/src/charts/ColorMap.d.ts +21 -21
  25. package/src/charts/ColorMap.js +96 -96
  26. package/src/charts/Column.d.ts +29 -27
  27. package/src/charts/Column.scss +26 -26
  28. package/src/charts/ColumnBarBase.d.ts +64 -64
  29. package/src/charts/ColumnBarGraphBase.d.ts +73 -73
  30. package/src/charts/ColumnBarGraphBase.js +114 -114
  31. package/src/charts/ColumnGraph.d.ts +18 -18
  32. package/src/charts/ColumnGraph.scss +27 -27
  33. package/src/charts/Grid.js +5 -5
  34. package/src/charts/Gridlines.d.ts +24 -24
  35. package/src/charts/Gridlines.js +48 -48
  36. package/src/charts/Gridlines.scss +22 -22
  37. package/src/charts/Legend.d.ts +27 -27
  38. package/src/charts/Legend.scss +41 -41
  39. package/src/charts/LegendEntry.d.ts +15 -13
  40. package/src/charts/LegendEntry.scss +30 -30
  41. package/src/charts/LineGraph.d.ts +92 -92
  42. package/src/charts/LineGraph.scss +23 -23
  43. package/src/charts/Marker.scss +41 -41
  44. package/src/charts/MarkerLine.d.ts +57 -57
  45. package/src/charts/MarkerLine.js +128 -128
  46. package/src/charts/MarkerLine.scss +17 -17
  47. package/src/charts/MouseTracker.d.ts +16 -16
  48. package/src/charts/MouseTracker.js +80 -80
  49. package/src/charts/Pie.js +8 -8
  50. package/src/charts/PieChart.d.ts +89 -89
  51. package/src/charts/PieChart.js +527 -527
  52. package/src/charts/PieChart.scss +26 -26
  53. package/src/charts/PieLabel.d.ts +26 -26
  54. package/src/charts/PieLabel.js +71 -71
  55. package/src/charts/PieLabelsContainer.d.ts +6 -6
  56. package/src/charts/PieLabelsContainer.js +55 -55
  57. package/src/charts/Range.d.ts +74 -74
  58. package/src/charts/Range.js +205 -205
  59. package/src/charts/Range.scss +18 -18
  60. package/src/charts/RangeMarker.d.ts +35 -35
  61. package/src/charts/RangeMarker.js +155 -155
  62. package/src/charts/RangeMarker.scss +15 -15
  63. package/src/charts/ScatterGraph.d.ts +64 -64
  64. package/src/charts/ScatterGraph.js +155 -155
  65. package/src/charts/ScatterGraph.scss +21 -21
  66. package/src/charts/Swimlane.d.ts +24 -24
  67. package/src/charts/Swimlane.js +140 -140
  68. package/src/charts/Swimlane.scss +14 -14
  69. package/src/charts/Swimlanes.d.ts +41 -41
  70. package/src/charts/Swimlanes.js +114 -114
  71. package/src/charts/Swimlanes.scss +14 -14
  72. package/src/charts/axis/Axis.js +254 -254
  73. package/src/charts/axis/Axis.scss +22 -22
  74. package/src/charts/axis/CategoryAxis.d.ts +24 -24
  75. package/src/charts/axis/CategoryAxis.js +212 -212
  76. package/src/charts/axis/CategoryAxis.scss +32 -32
  77. package/src/charts/axis/NumericAxis.d.ts +46 -46
  78. package/src/charts/axis/NumericAxis.js +347 -347
  79. package/src/charts/axis/NumericAxis.scss +32 -32
  80. package/src/charts/axis/Stack.d.ts +10 -10
  81. package/src/charts/axis/Stack.js +55 -55
  82. package/src/charts/axis/TimeAxis.d.ts +23 -23
  83. package/src/charts/axis/TimeAxis.js +510 -510
  84. package/src/charts/axis/TimeAxis.scss +32 -32
  85. package/src/charts/axis/index.d.ts +3 -3
  86. package/src/charts/axis/index.js +3 -3
  87. package/src/charts/axis/index.scss +5 -5
  88. package/src/charts/axis/variables.scss +2 -2
  89. package/src/charts/helpers/MinMaxFinder.js +36 -36
  90. package/src/charts/helpers/PointReducer.d.ts +15 -15
  91. package/src/charts/helpers/PointReducer.js +39 -39
  92. package/src/charts/helpers/index.d.ts +4 -4
  93. package/src/charts/helpers/index.js +4 -4
  94. package/src/charts/index.d.ts +27 -27
  95. package/src/charts/index.js +34 -34
  96. package/src/charts/index.scss +22 -22
  97. package/src/charts/palette.scss +95 -95
  98. package/src/charts/shapes.d.ts +22 -22
  99. package/src/charts/shapes.js +79 -79
  100. package/src/charts/variables.scss +21 -21
  101. package/src/core.d.ts +271 -271
  102. package/src/data/AggregateFunction.d.ts +20 -20
  103. package/src/data/AggregateFunction.js +145 -145
  104. package/src/data/ArrayElementView.d.ts +13 -13
  105. package/src/data/ArrayRef.d.ts +14 -14
  106. package/src/data/ArrayRef.js +34 -34
  107. package/src/data/AugmentedViewBase.d.ts +18 -18
  108. package/src/data/Binding.d.ts +19 -19
  109. package/src/data/Binding.js +76 -76
  110. package/src/data/Binding.spec.js +69 -69
  111. package/src/data/ExposedRecordView.d.ts +14 -14
  112. package/src/data/ExposedRecordView.js +69 -69
  113. package/src/data/ExposedValueView.d.ts +19 -19
  114. package/src/data/ExposedValueView.js +72 -72
  115. package/src/data/Expression.d.ts +17 -17
  116. package/src/data/Expression.js +220 -220
  117. package/src/data/Expression.spec.js +174 -174
  118. package/src/data/Grouper.d.ts +21 -21
  119. package/src/data/Grouper.js +144 -144
  120. package/src/data/Grouper.spec.js +57 -57
  121. package/src/data/NestedDataView.d.ts +19 -19
  122. package/src/data/NestedDataView.js +22 -22
  123. package/src/data/ReadOnlyDataView.d.ts +14 -14
  124. package/src/data/ReadOnlyDataView.js +26 -26
  125. package/src/data/Ref.d.ts +24 -24
  126. package/src/data/Ref.js +79 -79
  127. package/src/data/Ref.spec.js +79 -79
  128. package/src/data/Store.d.ts +14 -14
  129. package/src/data/Store.js +46 -46
  130. package/src/data/Store.spec.js +22 -22
  131. package/src/data/StoreProxy.d.ts +4 -4
  132. package/src/data/StoreProxy.js +16 -16
  133. package/src/data/StoreRef.js +54 -54
  134. package/src/data/StoreRef.spec.js +24 -24
  135. package/src/data/StringTemplate.d.ts +15 -15
  136. package/src/data/StringTemplate.js +92 -92
  137. package/src/data/StructuredDataAccessor.d.ts +7 -7
  138. package/src/data/StructuredSelector.d.ts +17 -17
  139. package/src/data/StructuredSelector.js +131 -131
  140. package/src/data/StructuredSelector.spec.js +113 -113
  141. package/src/data/SubscribableView.d.ts +11 -11
  142. package/src/data/SubscribableView.js +54 -54
  143. package/src/data/View.d.ts +131 -131
  144. package/src/data/View.js +182 -182
  145. package/src/data/View.spec.js +60 -60
  146. package/src/data/ZoomIntoPropertyView.d.ts +11 -11
  147. package/src/data/ZoomIntoPropertyView.js +33 -33
  148. package/src/data/ZoomIntoPropertyView.spec.js +65 -65
  149. package/src/data/comparer.d.ts +7 -7
  150. package/src/data/comparer.js +54 -54
  151. package/src/data/comparer.spec.js +60 -60
  152. package/src/data/computable.d.ts +125 -125
  153. package/src/data/computable.js +56 -56
  154. package/src/data/computable.spec.js +55 -55
  155. package/src/data/createAccessorModelProxy.d.ts +6 -6
  156. package/src/data/createAccessorModelProxy.js +43 -43
  157. package/src/data/createAccessorModelProxy.spec.tsx +44 -44
  158. package/src/data/createStructuredSelector.d.ts +2 -2
  159. package/src/data/createStructuredSelector.js +43 -43
  160. package/src/data/createStructuredSelector.spec.js +46 -46
  161. package/src/data/defaultCompare.js +14 -14
  162. package/src/data/diff/diffArrays.d.ts +15 -15
  163. package/src/data/diff/diffArrays.js +41 -41
  164. package/src/data/diff/diffs.spec.js +49 -49
  165. package/src/data/diff/index.d.ts +1 -1
  166. package/src/data/diff/index.js +1 -1
  167. package/src/data/enableFatArrowExpansion.d.ts +1 -1
  168. package/src/data/enableFatArrowExpansion.js +6 -6
  169. package/src/data/getAccessor.d.ts +8 -8
  170. package/src/data/getAccessor.js +61 -61
  171. package/src/data/getSelector.d.ts +3 -3
  172. package/src/data/getSelector.js +48 -48
  173. package/src/data/getSelector.spec.js +43 -43
  174. package/src/data/index.d.ts +30 -30
  175. package/src/data/index.js +28 -28
  176. package/src/data/isSelector.d.ts +1 -1
  177. package/src/data/isSelector.js +26 -26
  178. package/src/data/ops/append.d.ts +1 -1
  179. package/src/data/ops/append.js +7 -7
  180. package/src/data/ops/append.spec.js +28 -28
  181. package/src/data/ops/filter.d.ts +1 -1
  182. package/src/data/ops/filter.js +8 -8
  183. package/src/data/ops/filter.spec.js +29 -29
  184. package/src/data/ops/findTreeNode.d.ts +1 -1
  185. package/src/data/ops/findTreeNode.js +15 -15
  186. package/src/data/ops/findTreeNode.spec.js +24 -24
  187. package/src/data/ops/findTreePath.d.ts +6 -6
  188. package/src/data/ops/findTreePath.js +16 -16
  189. package/src/data/ops/index.d.ts +10 -10
  190. package/src/data/ops/index.js +11 -11
  191. package/src/data/ops/insertElement.d.ts +1 -1
  192. package/src/data/ops/insertElement.js +2 -2
  193. package/src/data/ops/merge.d.ts +3 -3
  194. package/src/data/ops/merge.js +9 -9
  195. package/src/data/ops/merge.spec.js +27 -27
  196. package/src/data/ops/moveElement.d.ts +1 -1
  197. package/src/data/ops/moveElement.js +13 -13
  198. package/src/data/ops/removeTreeNodes.d.ts +5 -5
  199. package/src/data/ops/removeTreeNodes.js +5 -5
  200. package/src/data/ops/removeTreeNodes.spec.js +28 -28
  201. package/src/data/ops/updateArray.d.ts +5 -5
  202. package/src/data/ops/updateArray.js +24 -24
  203. package/src/data/ops/updateArray.spec.js +38 -38
  204. package/src/data/ops/updateTree.d.ts +7 -7
  205. package/src/data/ops/updateTree.js +25 -25
  206. package/src/data/ops/updateTree.spec.js +36 -36
  207. package/src/global.scss +13 -13
  208. package/src/hooks/createLocalStorageRef.d.ts +2 -2
  209. package/src/hooks/createLocalStorageRef.js +22 -22
  210. package/src/hooks/index.d.ts +8 -8
  211. package/src/hooks/index.js +7 -7
  212. package/src/hooks/invokeCallback.d.ts +5 -5
  213. package/src/hooks/invokeCallback.js +6 -6
  214. package/src/hooks/invokeCallback.spec.js +53 -53
  215. package/src/hooks/resolveCallback.d.ts +3 -3
  216. package/src/hooks/resolveCallback.js +11 -11
  217. package/src/hooks/resolveCallback.spec.js +54 -54
  218. package/src/hooks/store.d.ts +7 -7
  219. package/src/hooks/store.js +32 -32
  220. package/src/hooks/store.spec.js +73 -73
  221. package/src/hooks/useEffect.d.ts +2 -2
  222. package/src/hooks/useEffect.js +14 -14
  223. package/src/hooks/useInterval.js +7 -7
  224. package/src/hooks/useState.d.ts +2 -2
  225. package/src/hooks/useState.js +15 -15
  226. package/src/hooks/useTrigger.d.ts +4 -4
  227. package/src/hooks/useTrigger.js +20 -20
  228. package/src/hooks/useTrigger.spec.js +102 -102
  229. package/src/index.js +7 -7
  230. package/src/index.scss +6 -6
  231. package/src/svg/BoundedObject.d.ts +22 -22
  232. package/src/svg/BoundedObject.js +59 -59
  233. package/src/svg/ClipRect.d.ts +4 -4
  234. package/src/svg/ClipRect.js +23 -23
  235. package/src/svg/Ellipse.d.ts +23 -23
  236. package/src/svg/Ellipse.js +36 -36
  237. package/src/svg/Line.d.ts +20 -20
  238. package/src/svg/Line.js +32 -32
  239. package/src/svg/NonOverlappingRect.d.ts +5 -5
  240. package/src/svg/NonOverlappingRect.js +14 -14
  241. package/src/svg/NonOverlappingRectGroup.d.ts +3 -3
  242. package/src/svg/NonOverlappingRectGroup.js +36 -36
  243. package/src/svg/Svg.d.ts +32 -32
  244. package/src/svg/Svg.js +177 -177
  245. package/src/svg/Svg.scss +26 -26
  246. package/src/svg/Text.d.ts +40 -40
  247. package/src/svg/Text.js +78 -78
  248. package/src/svg/TextualBoundedObject.d.ts +6 -6
  249. package/src/svg/TextualBoundedObject.js +28 -28
  250. package/src/svg/index.d.ts +11 -11
  251. package/src/svg/index.js +17 -17
  252. package/src/svg/index.scss +8 -8
  253. package/src/svg/util/Rect.d.ts +40 -40
  254. package/src/svg/util/Rect.js +108 -108
  255. package/src/ui/CSS.d.ts +19 -19
  256. package/src/ui/CSS.js +79 -79
  257. package/src/ui/CSSHelper.d.ts +10 -10
  258. package/src/ui/CSSHelper.js +17 -17
  259. package/src/ui/Container.d.ts +18 -18
  260. package/src/ui/Container.js +183 -183
  261. package/src/ui/ContentResolver.d.ts +12 -12
  262. package/src/ui/ContentResolver.js +78 -78
  263. package/src/ui/Controller.js +114 -114
  264. package/src/ui/Controller.spec.js +414 -414
  265. package/src/ui/Culture.d.ts +51 -51
  266. package/src/ui/Culture.js +129 -129
  267. package/src/ui/Cx.d.ts +18 -18
  268. package/src/ui/Cx.spec.js +193 -193
  269. package/src/ui/DataProxy.d.ts +12 -12
  270. package/src/ui/DataProxy.js +44 -44
  271. package/src/ui/DetachedScope.d.ts +21 -21
  272. package/src/ui/DetachedScope.js +93 -93
  273. package/src/ui/FocusManager.d.ts +29 -29
  274. package/src/ui/Format.d.ts +2 -2
  275. package/src/ui/Format.js +107 -107
  276. package/src/ui/HoverSync.d.ts +13 -13
  277. package/src/ui/HoverSync.js +147 -147
  278. package/src/ui/Instance.js +610 -610
  279. package/src/ui/IsolatedScope.d.ts +16 -16
  280. package/src/ui/IsolatedScope.js +29 -29
  281. package/src/ui/IsolatedScope.spec.js +62 -62
  282. package/src/ui/Localization.d.ts +17 -17
  283. package/src/ui/Localization.js +70 -70
  284. package/src/ui/PureContainer.d.ts +16 -16
  285. package/src/ui/PureContainer.js +7 -7
  286. package/src/ui/RenderingContext.d.ts +9 -9
  287. package/src/ui/RenderingContext.js +88 -88
  288. package/src/ui/Repeater.d.ts +60 -60
  289. package/src/ui/Repeater.js +102 -102
  290. package/src/ui/Repeater.spec.js +143 -143
  291. package/src/ui/Rescope.d.ts +10 -10
  292. package/src/ui/Rescope.js +31 -31
  293. package/src/ui/Rescope.spec.js +195 -195
  294. package/src/ui/ResizeManager.d.ts +9 -9
  295. package/src/ui/ResizeManager.js +30 -30
  296. package/src/ui/Restate.d.ts +21 -21
  297. package/src/ui/Restate.js +163 -163
  298. package/src/ui/Restate.spec.js +422 -422
  299. package/src/ui/StaticText.d.ts +8 -8
  300. package/src/ui/StaticText.js +9 -9
  301. package/src/ui/StructuredInstanceDataAccessor.d.ts +16 -16
  302. package/src/ui/StructuredInstanceDataAccessor.js +26 -26
  303. package/src/ui/Text.d.ts +10 -10
  304. package/src/ui/Text.js +25 -25
  305. package/src/ui/VDOM.js +2 -2
  306. package/src/ui/Widget.d.ts +14 -14
  307. package/src/ui/Widget.js +200 -200
  308. package/src/ui/ZIndexManager.d.ts +7 -7
  309. package/src/ui/ZIndexManager.js +11 -11
  310. package/src/ui/adapter/ArrayAdapter.d.ts +17 -17
  311. package/src/ui/adapter/ArrayAdapter.js +142 -142
  312. package/src/ui/adapter/ArrayAdapter.spec.js +55 -55
  313. package/src/ui/adapter/DataAdapter.js +15 -15
  314. package/src/ui/adapter/GroupAdapter.d.ts +23 -23
  315. package/src/ui/adapter/TreeAdapter.d.ts +24 -24
  316. package/src/ui/adapter/TreeAdapter.js +100 -100
  317. package/src/ui/adapter/TreeAdapter.spec.js +67 -67
  318. package/src/ui/adapter/index.d.ts +4 -4
  319. package/src/ui/adapter/index.js +4 -4
  320. package/src/ui/app/History.d.ts +17 -17
  321. package/src/ui/app/History.js +114 -114
  322. package/src/ui/app/Url.d.ts +21 -21
  323. package/src/ui/app/Url.js +103 -103
  324. package/src/ui/app/Url.spec.js +51 -51
  325. package/src/ui/app/index.d.ts +4 -4
  326. package/src/ui/app/index.js +5 -5
  327. package/src/ui/app/startAppLoop.d.ts +3 -3
  328. package/src/ui/app/startHotAppLoop.d.ts +6 -6
  329. package/src/ui/app/startHotAppLoop.js +25 -25
  330. package/src/ui/batchUpdates.d.ts +10 -10
  331. package/src/ui/batchUpdates.js +67 -67
  332. package/src/ui/bind.d.ts +4 -4
  333. package/src/ui/bind.js +7 -7
  334. package/src/ui/createFunctionalComponent.d.ts +1 -1
  335. package/src/ui/createFunctionalComponent.js +68 -68
  336. package/src/ui/createFunctionalComponent.spec.js +400 -400
  337. package/src/ui/expr.d.ts +24 -24
  338. package/src/ui/expr.js +17 -17
  339. package/src/ui/flattenProps.js +21 -21
  340. package/src/ui/index.js +44 -44
  341. package/src/ui/index.scss +2 -2
  342. package/src/ui/keyboardShortcuts.d.ts +4 -4
  343. package/src/ui/keyboardShortcuts.js +31 -31
  344. package/src/ui/layout/Content.d.ts +14 -14
  345. package/src/ui/layout/Content.js +16 -16
  346. package/src/ui/layout/ContentPlaceholder.d.ts +17 -17
  347. package/src/ui/layout/ContentPlaceholder.js +79 -79
  348. package/src/ui/layout/ContentPlaceholder.spec.js +368 -368
  349. package/src/ui/layout/FirstVisibleChildLayout.d.ts +4 -4
  350. package/src/ui/layout/FirstVisibleChildLayout.js +65 -65
  351. package/src/ui/layout/FirstVisibleChildLayout.spec.js +196 -196
  352. package/src/ui/layout/LabelsLeftLayout.d.ts +11 -11
  353. package/src/ui/layout/LabelsLeftLayout.js +59 -59
  354. package/src/ui/layout/LabelsLeftLayout.scss +44 -44
  355. package/src/ui/layout/LabelsTopLayout.d.ts +15 -15
  356. package/src/ui/layout/LabelsTopLayout.js +134 -134
  357. package/src/ui/layout/LabelsTopLayout.scss +63 -63
  358. package/src/ui/layout/UseParentLayout.d.ts +4 -4
  359. package/src/ui/layout/UseParentLayout.js +6 -6
  360. package/src/ui/layout/exploreChildren.d.ts +14 -14
  361. package/src/ui/layout/exploreChildren.js +40 -40
  362. package/src/ui/layout/index.d.ts +10 -10
  363. package/src/ui/layout/index.js +10 -10
  364. package/src/ui/layout/index.scss +3 -3
  365. package/src/ui/layout/variables.scss +2 -2
  366. package/src/ui/selection/KeySelection.d.ts +17 -17
  367. package/src/ui/selection/KeySelection.js +129 -129
  368. package/src/ui/selection/PropertySelection.d.ts +17 -17
  369. package/src/ui/selection/PropertySelection.js +55 -55
  370. package/src/ui/selection/Selection.d.ts +27 -27
  371. package/src/ui/selection/Selection.js +93 -93
  372. package/src/ui/selection/index.d.ts +3 -3
  373. package/src/ui/selection/index.js +3 -3
  374. package/src/ui/tpl.d.ts +2 -2
  375. package/src/ui/tpl.js +4 -4
  376. package/src/ui/variables.scss +1 -1
  377. package/src/util/Component.d.ts +41 -41
  378. package/src/util/Component.js +107 -107
  379. package/src/util/Console.d.ts +4 -4
  380. package/src/util/Console.js +11 -11
  381. package/src/util/DOM.d.ts +33 -33
  382. package/src/util/DOM.js +72 -72
  383. package/src/util/Debug.d.ts +10 -10
  384. package/src/util/Debug.js +45 -45
  385. package/src/util/Format.d.ts +18 -18
  386. package/src/util/Format.spec.js +69 -69
  387. package/src/util/GlobalCacheIdentifier.js +11 -11
  388. package/src/util/GlobalCacheldentifier.d.ts +6 -6
  389. package/src/util/KeyCode.d.ts +21 -21
  390. package/src/util/KeyCode.js +21 -21
  391. package/src/util/SubscriberList.d.ts +41 -41
  392. package/src/util/SubscriberList.js +57 -57
  393. package/src/util/Timing.d.ts +13 -13
  394. package/src/util/Timing.js +57 -57
  395. package/src/util/TraversalStack.js +42 -42
  396. package/src/util/TraversalStack.spec.js +46 -46
  397. package/src/util/addEventListenerWithOptions.d.ts +6 -6
  398. package/src/util/addEventListenerWithOptions.js +9 -9
  399. package/src/util/browserSupportsPassiveEventHandlers.d.ts +4 -4
  400. package/src/util/browserSupportsPassiveEventHandlers.js +18 -18
  401. package/src/util/calculateNaturalElementHeight.d.ts +1 -1
  402. package/src/util/calculateNaturalElementHeight.js +22 -22
  403. package/src/util/call-once.scss +6 -6
  404. package/src/util/coalesce.d.ts +1 -1
  405. package/src/util/coalesce.js +6 -6
  406. package/src/util/color/hslToRgb.d.ts +8 -8
  407. package/src/util/color/hslToRgb.js +27 -27
  408. package/src/util/color/index.d.ts +3 -3
  409. package/src/util/color/index.js +4 -4
  410. package/src/util/color/parseColor.d.ts +59 -59
  411. package/src/util/color/parseColor.js +119 -119
  412. package/src/util/color/rgbToHex.d.ts +8 -8
  413. package/src/util/color/rgbToHex.js +7 -7
  414. package/src/util/color/rgbToHsl.d.ts +8 -8
  415. package/src/util/color/rgbToHsl.js +27 -27
  416. package/src/util/date/dateDiff.d.ts +7 -7
  417. package/src/util/date/dateDiff.js +3 -3
  418. package/src/util/date/diff.d.ts +7 -7
  419. package/src/util/date/diff.js +7 -7
  420. package/src/util/date/encodeDateWithTimezoneOffset.js +18 -18
  421. package/src/util/date/index.d.ts +8 -8
  422. package/src/util/date/index.js +9 -9
  423. package/src/util/date/lowerBoundCheck.d.ts +7 -7
  424. package/src/util/date/lowerBoundCheck.js +6 -6
  425. package/src/util/date/maxDate.d.ts +5 -5
  426. package/src/util/date/maxDate.js +9 -9
  427. package/src/util/date/minDate.d.ts +5 -5
  428. package/src/util/date/minDate.js +9 -9
  429. package/src/util/date/monthStart.d.ts +5 -5
  430. package/src/util/date/monthStart.js +3 -3
  431. package/src/util/date/sameDate.d.ts +6 -6
  432. package/src/util/date/sameDate.js +5 -5
  433. package/src/util/date/upperBoundCheck.d.ts +7 -7
  434. package/src/util/date/upperBoundCheck.js +6 -6
  435. package/src/util/date/upperBoundCheck.spec.js +30 -30
  436. package/src/util/date/zeroTime.d.ts +6 -6
  437. package/src/util/date/zeroTime.js +3 -3
  438. package/src/util/debounce.d.ts +9 -9
  439. package/src/util/debounce.js +18 -18
  440. package/src/util/dummyCallback.d.ts +1 -1
  441. package/src/util/dummyCallback.js +1 -1
  442. package/src/util/escapeSpecialRegexCharacters.d.ts +6 -6
  443. package/src/util/escapeSpecialRegexCharacters.js +3 -3
  444. package/src/util/eventCallbacks.d.ts +4 -4
  445. package/src/util/eventCallbacks.js +2 -2
  446. package/src/util/expandFatArrows.js +118 -118
  447. package/src/util/findScrollableParent.js +16 -16
  448. package/src/util/getActiveElement.js +3 -3
  449. package/src/util/getParentFrameBoundingClientRect.js +21 -21
  450. package/src/util/getScrollerBoundingClientRect.js +21 -21
  451. package/src/util/getSearchQueryPredicate.js +58 -58
  452. package/src/util/getSearchQueryPredicate.spec.js +40 -40
  453. package/src/util/getTopLevelBoundingClientRect.js +13 -13
  454. package/src/util/getVendorPrefix.js +26 -26
  455. package/src/util/index.d.ts +50 -50
  456. package/src/util/index.js +52 -52
  457. package/src/util/index.scss +10 -10
  458. package/src/util/innerTextTrim.d.ts +6 -6
  459. package/src/util/innerTextTrim.js +5 -5
  460. package/src/util/isArray.d.ts +1 -1
  461. package/src/util/isArray.js +3 -3
  462. package/src/util/isDefined.js +3 -3
  463. package/src/util/isDigit.d.ts +6 -6
  464. package/src/util/isDigit.js +3 -3
  465. package/src/util/isFunction.d.ts +1 -1
  466. package/src/util/isFunction.js +3 -3
  467. package/src/util/isNonEmptyArray.d.ts +1 -1
  468. package/src/util/isNonEmptyArray.js +3 -3
  469. package/src/util/isNumber.d.ts +1 -1
  470. package/src/util/isNumber.js +3 -3
  471. package/src/util/isObject.d.ts +1 -1
  472. package/src/util/isObject.js +3 -3
  473. package/src/util/isPromise.d.ts +1 -1
  474. package/src/util/isPromise.js +6 -6
  475. package/src/util/isString.d.ts +1 -1
  476. package/src/util/isString.js +3 -3
  477. package/src/util/isTextInputElement.d.ts +1 -1
  478. package/src/util/isTextInputElement.js +2 -2
  479. package/src/util/isTouchDevice.d.ts +1 -1
  480. package/src/util/isTouchDevice.js +7 -7
  481. package/src/util/isTouchEvent.d.ts +3 -3
  482. package/src/util/isTouchEvent.js +64 -64
  483. package/src/util/isUndefined.d.ts +1 -1
  484. package/src/util/isUndefined.js +3 -3
  485. package/src/util/onIdleCallback.js +13 -13
  486. package/src/util/parseStyle.d.ts +3 -3
  487. package/src/util/parseStyle.js +27 -27
  488. package/src/util/quote.d.ts +2 -2
  489. package/src/util/quote.js +4 -4
  490. package/src/util/reverseSlice.js +9 -9
  491. package/src/util/routeAppend.js +15 -15
  492. package/src/util/routeAppend.spec.js +19 -19
  493. package/src/util/scrollElementIntoView.d.ts +7 -7
  494. package/src/util/scrollElementIntoView.js +34 -34
  495. package/src/util/scss/add-rules.scss +39 -39
  496. package/src/util/scss/calc.scss +40 -40
  497. package/src/util/scss/call-once.scss +10 -10
  498. package/src/util/scss/clockwise.scss +47 -47
  499. package/src/util/scss/colors.scss +7 -7
  500. package/src/util/scss/deep-get.scss +9 -9
  501. package/src/util/scss/deep-merge.scss +18 -18
  502. package/src/util/scss/include.scss +47 -47
  503. package/src/util/scss/index.scss +9 -9
  504. package/src/util/shallowEquals.js +43 -43
  505. package/src/util/throttle.d.ts +8 -8
  506. package/src/util/throttle.js +14 -14
  507. package/src/util/validatedDebounce.js +19 -19
  508. package/src/variables.scss +217 -217
  509. package/src/widgets/AccessorBindings.spec.tsx +66 -66
  510. package/src/widgets/Button.d.ts +58 -58
  511. package/src/widgets/Button.js +118 -118
  512. package/src/widgets/Button.scss +117 -117
  513. package/src/widgets/CxCredit.d.ts +12 -12
  514. package/src/widgets/CxCredit.js +31 -31
  515. package/src/widgets/CxCredit.scss +41 -41
  516. package/src/widgets/DocumentTitle.d.ts +11 -11
  517. package/src/widgets/DocumentTitle.js +68 -68
  518. package/src/widgets/FlexBox.d.ts +69 -69
  519. package/src/widgets/FlexBox.js +92 -92
  520. package/src/widgets/FlexBox.scss +146 -146
  521. package/src/widgets/Heading.d.ts +16 -16
  522. package/src/widgets/Heading.js +32 -32
  523. package/src/widgets/Heading.scss +38 -38
  524. package/src/widgets/HighlightedSearchText.d.ts +9 -9
  525. package/src/widgets/HighlightedSearchText.js +36 -36
  526. package/src/widgets/HighlightedSearchText.scss +18 -18
  527. package/src/widgets/HtmlElement.d.ts +26 -26
  528. package/src/widgets/HtmlElement.js +273 -273
  529. package/src/widgets/HtmlElement.spec.js +57 -57
  530. package/src/widgets/Icon.d.ts +34 -34
  531. package/src/widgets/Icon.js +50 -50
  532. package/src/widgets/Icon.scss +20 -20
  533. package/src/widgets/List.d.ts +96 -96
  534. package/src/widgets/List.js +587 -587
  535. package/src/widgets/List.scss +92 -92
  536. package/src/widgets/ProgressBar.d.ts +17 -17
  537. package/src/widgets/ProgressBar.js +46 -46
  538. package/src/widgets/ProgressBar.scss +49 -49
  539. package/src/widgets/Resizer.d.ts +27 -27
  540. package/src/widgets/Resizer.js +151 -151
  541. package/src/widgets/Resizer.scss +42 -42
  542. package/src/widgets/Sandbox.d.ts +16 -16
  543. package/src/widgets/Sandbox.js +62 -62
  544. package/src/widgets/Section.d.ts +52 -52
  545. package/src/widgets/Section.js +139 -139
  546. package/src/widgets/Section.scss +54 -54
  547. package/src/widgets/animations.scss +10 -10
  548. package/src/widgets/autoFocus.d.ts +1 -1
  549. package/src/widgets/autoFocus.js +9 -9
  550. package/src/widgets/cx.d.ts +1 -1
  551. package/src/widgets/cx.js +71 -71
  552. package/src/widgets/drag-drop/DragClone.scss +33 -33
  553. package/src/widgets/drag-drop/DragHandle.d.ts +10 -10
  554. package/src/widgets/drag-drop/DragHandle.js +37 -37
  555. package/src/widgets/drag-drop/DragHandle.scss +16 -16
  556. package/src/widgets/drag-drop/DragSource.d.ts +45 -45
  557. package/src/widgets/drag-drop/DragSource.js +160 -160
  558. package/src/widgets/drag-drop/DragSource.scss +24 -24
  559. package/src/widgets/drag-drop/DropZone.d.ts +98 -98
  560. package/src/widgets/drag-drop/DropZone.scss +74 -74
  561. package/src/widgets/drag-drop/index.d.ts +4 -4
  562. package/src/widgets/drag-drop/index.js +4 -4
  563. package/src/widgets/drag-drop/index.scss +3 -3
  564. package/src/widgets/drag-drop/ops.d.ts +56 -56
  565. package/src/widgets/drag-drop/ops.js +344 -344
  566. package/src/widgets/drag-drop/variables.scss +11 -11
  567. package/src/widgets/enableAllInternalDependencies.d.ts +1 -1
  568. package/src/widgets/enableAllInternalDependencies.js +11 -11
  569. package/src/widgets/form/Calendar.d.ts +86 -86
  570. package/src/widgets/form/Calendar.variables.scss +63 -63
  571. package/src/widgets/form/Checkbox.d.ts +43 -43
  572. package/src/widgets/form/Checkbox.js +200 -200
  573. package/src/widgets/form/Checkbox.scss +125 -125
  574. package/src/widgets/form/Checkbox.variables.scss +39 -39
  575. package/src/widgets/form/ColorField.d.ts +43 -43
  576. package/src/widgets/form/ColorField.js +397 -397
  577. package/src/widgets/form/ColorField.scss +92 -92
  578. package/src/widgets/form/ColorPicker.d.ts +23 -23
  579. package/src/widgets/form/ColorPicker.js +480 -480
  580. package/src/widgets/form/ColorPicker.scss +275 -275
  581. package/src/widgets/form/ColorPicker.variables.scss +22 -22
  582. package/src/widgets/form/DateField.d.ts +6 -6
  583. package/src/widgets/form/DateField.js +12 -12
  584. package/src/widgets/form/DateTimeField.d.ts +86 -86
  585. package/src/widgets/form/DateTimeField.js +573 -573
  586. package/src/widgets/form/DateTimeField.scss +90 -90
  587. package/src/widgets/form/DateTimePicker.js +391 -391
  588. package/src/widgets/form/DateTimePicker.scss +44 -44
  589. package/src/widgets/form/Field.d.ts +112 -112
  590. package/src/widgets/form/Field.scss +162 -162
  591. package/src/widgets/form/FieldGroup.d.ts +6 -6
  592. package/src/widgets/form/FieldGroup.js +5 -5
  593. package/src/widgets/form/FieldIcon.js +42 -42
  594. package/src/widgets/form/HelpText.d.ts +10 -10
  595. package/src/widgets/form/HelpText.js +9 -9
  596. package/src/widgets/form/HelpText.scss +23 -23
  597. package/src/widgets/form/Label.d.ts +23 -23
  598. package/src/widgets/form/Label.js +89 -89
  599. package/src/widgets/form/Label.scss +36 -36
  600. package/src/widgets/form/LabeledContainer.d.ts +9 -9
  601. package/src/widgets/form/LabeledContainer.js +59 -59
  602. package/src/widgets/form/LookupField.d.ts +173 -173
  603. package/src/widgets/form/LookupField.scss +219 -219
  604. package/src/widgets/form/MonthField.d.ts +92 -92
  605. package/src/widgets/form/MonthField.js +516 -516
  606. package/src/widgets/form/MonthField.scss +99 -99
  607. package/src/widgets/form/MonthPicker.d.ts +74 -74
  608. package/src/widgets/form/MonthPicker.js +632 -632
  609. package/src/widgets/form/MonthPicker.scss +120 -120
  610. package/src/widgets/form/NumberField.d.ts +96 -96
  611. package/src/widgets/form/NumberField.js +459 -459
  612. package/src/widgets/form/NumberField.scss +65 -65
  613. package/src/widgets/form/Radio.d.ts +37 -37
  614. package/src/widgets/form/Radio.js +188 -188
  615. package/src/widgets/form/Radio.scss +122 -122
  616. package/src/widgets/form/Radio.variables.scss +45 -45
  617. package/src/widgets/form/Select.d.ts +69 -69
  618. package/src/widgets/form/Select.js +269 -269
  619. package/src/widgets/form/Select.scss +98 -98
  620. package/src/widgets/form/Slider.d.ts +65 -65
  621. package/src/widgets/form/Slider.js +351 -351
  622. package/src/widgets/form/Slider.scss +119 -119
  623. package/src/widgets/form/Switch.d.ts +38 -38
  624. package/src/widgets/form/Switch.js +118 -118
  625. package/src/widgets/form/Switch.scss +140 -140
  626. package/src/widgets/form/TextArea.d.ts +17 -17
  627. package/src/widgets/form/TextArea.js +186 -186
  628. package/src/widgets/form/TextArea.scss +60 -60
  629. package/src/widgets/form/TextField.d.ts +78 -78
  630. package/src/widgets/form/TextField.js +289 -289
  631. package/src/widgets/form/TextField.scss +55 -55
  632. package/src/widgets/form/TimeField.d.ts +6 -6
  633. package/src/widgets/form/TimeField.js +11 -11
  634. package/src/widgets/form/TimeList.js +84 -84
  635. package/src/widgets/form/UploadButton.js +213 -213
  636. package/src/widgets/form/UploadButton.scss +47 -47
  637. package/src/widgets/form/ValidationError.d.ts +10 -10
  638. package/src/widgets/form/ValidationError.js +44 -44
  639. package/src/widgets/form/ValidationError.scss +21 -21
  640. package/src/widgets/form/ValidationGroup.d.ts +41 -41
  641. package/src/widgets/form/ValidationGroup.js +68 -68
  642. package/src/widgets/form/ValidationGroup.spec.js +148 -148
  643. package/src/widgets/form/Validator.d.ts +8 -8
  644. package/src/widgets/form/Validator.js +21 -21
  645. package/src/widgets/form/Wheel.js +261 -261
  646. package/src/widgets/form/Wheel.scss +150 -150
  647. package/src/widgets/form/index.d.ts +26 -26
  648. package/src/widgets/form/index.js +28 -28
  649. package/src/widgets/form/index.scss +24 -24
  650. package/src/widgets/form/variables.scss +352 -352
  651. package/src/widgets/grid/Grid.js +2 -1
  652. package/src/widgets/grid/Grid.scss +680 -680
  653. package/src/widgets/grid/GridCell.d.ts +38 -38
  654. package/src/widgets/grid/GridCell.js +71 -71
  655. package/src/widgets/grid/GridCellEditor.js +41 -41
  656. package/src/widgets/grid/GridRow.js +228 -228
  657. package/src/widgets/grid/GridRowLine.js +24 -24
  658. package/src/widgets/grid/Pagination.d.ts +14 -14
  659. package/src/widgets/grid/Pagination.js +94 -94
  660. package/src/widgets/grid/Pagination.scss +113 -113
  661. package/src/widgets/grid/TreeNode.d.ts +25 -25
  662. package/src/widgets/grid/TreeNode.js +102 -102
  663. package/src/widgets/grid/TreeNode.scss +89 -89
  664. package/src/widgets/grid/index.d.ts +3 -3
  665. package/src/widgets/grid/index.js +14 -14
  666. package/src/widgets/grid/index.scss +3 -3
  667. package/src/widgets/icons/arrow-down.svg +3 -3
  668. package/src/widgets/icons/arrow-right.svg +2 -2
  669. package/src/widgets/icons/base.svg +104 -104
  670. package/src/widgets/icons/calendar-old.svg +169 -169
  671. package/src/widgets/icons/calendar.js +16 -16
  672. package/src/widgets/icons/calendar.svg +187 -187
  673. package/src/widgets/icons/check.js +12 -12
  674. package/src/widgets/icons/clear.js +14 -14
  675. package/src/widgets/icons/clear.svg +74 -74
  676. package/src/widgets/icons/close.js +19 -19
  677. package/src/widgets/icons/close.svg +74 -74
  678. package/src/widgets/icons/cx.js +37 -37
  679. package/src/widgets/icons/drop-down.js +14 -14
  680. package/src/widgets/icons/dropdown-arrow.svg +61 -61
  681. package/src/widgets/icons/file.js +12 -12
  682. package/src/widgets/icons/file.svg +4 -4
  683. package/src/widgets/icons/folder-open.js +14 -14
  684. package/src/widgets/icons/folder-open.svg +5 -5
  685. package/src/widgets/icons/folder.js +12 -12
  686. package/src/widgets/icons/folder.svg +58 -58
  687. package/src/widgets/icons/forward.js +21 -21
  688. package/src/widgets/icons/forward.svg +67 -67
  689. package/src/widgets/icons/index.js +14 -14
  690. package/src/widgets/icons/loading.js +23 -23
  691. package/src/widgets/icons/loading.svg +4 -4
  692. package/src/widgets/icons/menu.js +16 -16
  693. package/src/widgets/icons/pixel-picker.js +17 -17
  694. package/src/widgets/icons/registry.js +53 -53
  695. package/src/widgets/icons/search.js +12 -12
  696. package/src/widgets/icons/search.svg +107 -107
  697. package/src/widgets/icons/sort-asc.js +13 -13
  698. package/src/widgets/icons/sort-asc.svg +3 -3
  699. package/src/widgets/icons/square.js +17 -17
  700. package/src/widgets/index.d.ts +55 -55
  701. package/src/widgets/index.js +57 -57
  702. package/src/widgets/index.scss +16 -16
  703. package/src/widgets/nav/Link.d.ts +26 -26
  704. package/src/widgets/nav/Link.js +7 -7
  705. package/src/widgets/nav/Link.scss +18 -18
  706. package/src/widgets/nav/LinkButton.d.ts +31 -31
  707. package/src/widgets/nav/Menu.d.ts +27 -27
  708. package/src/widgets/nav/Menu.js +406 -406
  709. package/src/widgets/nav/Menu.scss +74 -74
  710. package/src/widgets/nav/MenuItem.d.ts +31 -31
  711. package/src/widgets/nav/MenuItem.js +445 -445
  712. package/src/widgets/nav/MenuSpacer.d.ts +5 -5
  713. package/src/widgets/nav/MenuSpacer.js +12 -12
  714. package/src/widgets/nav/RedirectRoute.d.ts +9 -9
  715. package/src/widgets/nav/RedirectRoute.js +40 -40
  716. package/src/widgets/nav/Route.d.ts +21 -21
  717. package/src/widgets/nav/Route.js +105 -105
  718. package/src/widgets/nav/Route.spec.js +27 -27
  719. package/src/widgets/nav/Scroller.d.ts +17 -17
  720. package/src/widgets/nav/Scroller.js +214 -214
  721. package/src/widgets/nav/Scroller.scss +146 -146
  722. package/src/widgets/nav/Submenu.d.ts +6 -6
  723. package/src/widgets/nav/Submenu.js +6 -6
  724. package/src/widgets/nav/Tab.d.ts +33 -33
  725. package/src/widgets/nav/Tab.js +82 -82
  726. package/src/widgets/nav/Tab.scss +81 -81
  727. package/src/widgets/nav/cover.scss +21 -21
  728. package/src/widgets/nav/index.d.ts +10 -10
  729. package/src/widgets/nav/index.js +10 -10
  730. package/src/widgets/nav/index.scss +5 -5
  731. package/src/widgets/nav/variables.scss +25 -25
  732. package/src/widgets/overlay/ContextMenu.d.ts +10 -10
  733. package/src/widgets/overlay/ContextMenu.js +29 -29
  734. package/src/widgets/overlay/Dropdown.d.ts +32 -32
  735. package/src/widgets/overlay/Dropdown.js +612 -612
  736. package/src/widgets/overlay/Dropdown.scss +184 -184
  737. package/src/widgets/overlay/FlyweightTooltipTracker.d.ts +8 -8
  738. package/src/widgets/overlay/FlyweightTooltipTracker.js +36 -36
  739. package/src/widgets/overlay/MsgBox.d.ts +16 -16
  740. package/src/widgets/overlay/MsgBox.js +116 -116
  741. package/src/widgets/overlay/Overlay.d.ts +69 -69
  742. package/src/widgets/overlay/Overlay.js +747 -747
  743. package/src/widgets/overlay/Overlay.scss +66 -66
  744. package/src/widgets/overlay/Toast.d.ts +30 -30
  745. package/src/widgets/overlay/Toast.js +92 -92
  746. package/src/widgets/overlay/Toast.scss +162 -162
  747. package/src/widgets/overlay/Tooltip.d.ts +50 -50
  748. package/src/widgets/overlay/Tooltip.js +288 -288
  749. package/src/widgets/overlay/Tooltip.scss +175 -175
  750. package/src/widgets/overlay/alerts.d.ts +7 -7
  751. package/src/widgets/overlay/alerts.js +39 -39
  752. package/src/widgets/overlay/captureMouse.d.ts +53 -53
  753. package/src/widgets/overlay/captureMouse.js +124 -124
  754. package/src/widgets/overlay/captureMouse.scss +13 -13
  755. package/src/widgets/overlay/index.d.ts +10 -10
  756. package/src/widgets/overlay/index.js +10 -10
  757. package/src/widgets/overlay/index.scss +15 -15
  758. package/src/widgets/overlay/tooltip-ops.d.ts +8 -8
  759. package/src/widgets/overlay/tooltip-ops.js +24 -24
  760. package/src/widgets/variables.scss +144 -144
@@ -1,415 +1,415 @@
1
- import { Cx } from './Cx';
2
- import { VDOM } from './Widget';
3
- import { HtmlElement } from '../widgets/HtmlElement';
4
- import { Store } from '../data/Store';
5
- import { Controller } from './Controller';
6
-
7
- import renderer from 'react-test-renderer';
8
- import assert from 'assert';
9
-
10
- describe('Controller', () => {
11
-
12
- it('invokes lifetime methods', () => {
13
-
14
- let init = 0,
15
- prepare = 0,
16
- explore = 0,
17
- cleanup = 0;
18
-
19
- class TestController extends Controller {
20
- onInit() {
21
- init++;
22
- }
23
-
24
- onExplore() {
25
- explore++;
26
- }
27
-
28
- onPrepare() {
29
- prepare++;
30
- }
31
-
32
- onCleanup() {
33
- cleanup++;
34
- }
35
- }
36
-
37
- let widget = <cx>
38
- <div controller={TestController}/>
39
- </cx>;
40
-
41
- let store = new Store();
42
-
43
- const component = renderer.create(
44
- <Cx widget={widget} store={store} subscribe immediate/>
45
- );
46
-
47
- let tree = component.toJSON();
48
- assert.equal(init, 1);
49
- assert.equal(explore, 1);
50
- assert.equal(prepare, 1);
51
- assert.equal(cleanup, 1);
52
- });
53
-
54
- it('widgets invoke controller methods specified as strings', () => {
55
-
56
- let callback = 0;
57
-
58
- class TestController extends Controller {
59
- callback() {
60
- ++callback;
61
- }
62
- }
63
-
64
- class Cmp extends VDOM.Component {
65
- render() {
66
- return <div/>
67
- }
68
-
69
- componentDidMount() {
70
- this.props.instance.invoke("onTest");
71
- }
72
- }
73
-
74
- let store = new Store();
75
-
76
- const component = renderer.create(
77
- <Cx store={store} subscribe immediate>
78
- <Cmp controller={TestController} onTest="callback"/>
79
- </Cx>
80
- );
81
-
82
- let tree = component.toJSON();
83
- assert.equal(callback, 1);
84
- });
85
-
86
- it('widgets can access controller methods specified in ancestor controllers', () => {
87
-
88
- let callback1 = 0;
89
- let callback2 = 0;
90
-
91
- class TestController1 extends Controller {
92
- callback1() {
93
- ++callback1;
94
- }
95
- }
96
-
97
- class TestController2 extends Controller {
98
- callback2() {
99
- ++callback2;
100
- }
101
- }
102
-
103
- class Cmp extends VDOM.Component {
104
- render() {
105
- return <div/>
106
- }
107
-
108
- componentDidMount() {
109
- this.props.instance.invoke("onTest");
110
- }
111
- }
112
-
113
- let store = new Store();
114
-
115
- const component = renderer.create(
116
- <Cx store={store} subscribe immediate>
117
- <div controller={TestController1}>
118
- <Cmp controller={TestController2} onTest="callback1"/>
119
- </div>
120
- </Cx>
121
- );
122
-
123
- let tree = component.toJSON();
124
- assert.equal(callback1, 1);
125
- assert.equal(callback2, 0);
126
- });
127
-
128
- it('ancestor controllers are initialized first', () => {
129
-
130
- let order = [];
131
-
132
- class TestController1 extends Controller {
133
- onInit() {
134
- order.push("1");
135
- }
136
- }
137
-
138
- class TestController2 extends Controller {
139
- onInit() {
140
- order.push("2");
141
- }
142
- }
143
-
144
- let store = new Store();
145
-
146
- const component = renderer.create(
147
- <Cx store={store} subscribe immediate>
148
- <div controller={TestController1}>
149
- <div controller={TestController2}/>
150
- </div>
151
- </Cx>
152
- );
153
-
154
- let tree = component.toJSON();
155
- assert.deepEqual(order, ["1", "2"]);
156
- });
157
-
158
- it('controllers on invisible elements are not initialized', () => {
159
-
160
- let order = [];
161
-
162
- class TestController1 extends Controller {
163
- onInit() {
164
- order.push("1");
165
- }
166
- }
167
-
168
- class TestController2 extends Controller {
169
- onInit() {
170
- order.push("2");
171
- }
172
- }
173
-
174
- let store = new Store();
175
-
176
- const component = renderer.create(
177
- <Cx store={store} subscribe immediate>
178
- <div controller={TestController1}>
179
- <div visible={false} controller={TestController2}/>
180
- </div>
181
- </Cx>
182
- );
183
-
184
- let tree = component.toJSON();
185
- assert.deepEqual(order, ["1"]);
186
- });
187
-
188
- it('invokes triggers and computables in order of definition', () => {
189
- let log = [];
190
-
191
- class TestController extends Controller {
192
- onInit() {
193
- this.addTrigger('t1', [], () => {
194
- log.push('t1');
195
- }, true);
196
-
197
- this.addComputable('c1', [], () => {
198
- log.push('c1');
199
- return null;
200
- });
201
-
202
- this.addTrigger('t2', [], () => {
203
- log.push('t2');
204
- }, true)
205
- }
206
- }
207
-
208
- let widget = <cx>
209
- <div controller={TestController}/>
210
- </cx>;
211
-
212
- let store = new Store();
213
-
214
- const component = renderer.create(
215
- <Cx widget={widget} store={store} subscribe immediate/>
216
- );
217
-
218
- let tree = component.toJSON();
219
- assert.deepEqual(log, ["t1", "c1", "t2"]);
220
- });
221
-
222
- it('is recreated if a component is hidden and shown', () => {
223
- let initCount = 0;
224
-
225
- class TestController extends Controller {
226
- onInit() {
227
- initCount++;
228
- }
229
- }
230
-
231
- let store = new Store();
232
- store.set('visible', true);
233
-
234
- const component = renderer.create(
235
- <Cx store={store} subscribe immediate>
236
- <div visible:bind="visible" controller={TestController}/>
237
- </Cx>
238
- );
239
-
240
- let tree1 = component.toJSON();
241
- assert.equal(initCount, 1);
242
-
243
- store.set('visible', false);
244
- let tree2 = component.toJSON();
245
- assert.equal(tree2, null);
246
-
247
- store.set('visible', true);
248
- let tree3 = component.toJSON();
249
- assert.equal(initCount, 2);
250
- });
251
-
252
- it('allows creation through a factory', () => {
253
- let store = new Store({ data: { x: 0}});
254
-
255
- const controllerFactory = ({store}) => {
256
- return {
257
- increment() {
258
- store.update("x", x => x + 1);
259
- }
260
- }
261
- };
262
-
263
- let c = Controller.create(controllerFactory, {store});
264
-
265
- c.increment();
266
- assert.equal(store.get("x"), 1);
267
- });
268
-
269
- it('lifetime methods of a functional controller are properly invoked', () => {
270
- let initCount = 0,
271
- destroyCount = 0;
272
-
273
- const testController = () => ({
274
- onInit() {
275
- initCount++;
276
- },
277
-
278
- onDestroy() {
279
- destroyCount++;
280
- }
281
- });
282
-
283
- let store = new Store();
284
- store.set('visible', true);
285
-
286
- const component = renderer.create(
287
- <Cx store={store} subscribe immediate>
288
- <div visible:bind="visible" controller={testController}/>
289
- </Cx>
290
- );
291
-
292
- let tree1 = component.toJSON();
293
- assert.equal(initCount, 1);
294
-
295
- store.set('visible', false);
296
- let tree2 = component.toJSON();
297
- assert.equal(destroyCount, 1);
298
-
299
- store.set('visible', true);
300
- let tree3 = component.toJSON();
301
- assert.equal(initCount, 2);
302
- });
303
-
304
- it('widgets can easily define controller methods', () => {
305
- let store = new Store({ data: { x: 0}});
306
-
307
- const component = renderer.create(
308
- <Cx store={store} subscribe immediate>
309
- <div
310
- controller={{
311
- increment(count) {
312
- this.store.update("x", x => x + count);
313
- }
314
- }}
315
- >
316
- <div
317
- controller={{
318
- onInit() {
319
- this.invokeParentMethod("increment", 1);
320
- }
321
- }}
322
- />
323
- </div>
324
-
325
-
326
- </Cx>
327
- );
328
-
329
- let tree1 = component.toJSON();
330
- assert.equal(store.get("x"), 1);
331
- });
332
-
333
- it('functional controllers get store methods through configuration', () => {
334
- let store = new Store({ data: { x: 0}});
335
-
336
- const component = renderer.create(
337
- <Cx store={store} subscribe immediate>
338
- <div
339
- controller={({update}) => ({
340
- increment(count) {
341
- update("x", x => x + count);
342
- }
343
- })}
344
- >
345
- <div
346
- controller={{
347
- onInit() {
348
- this.invokeParentMethod("increment", 1);
349
- }
350
- }}
351
- />
352
- </div>
353
- </Cx>
354
- );
355
-
356
- let tree1 = component.toJSON();
357
- assert.equal(store.get("x"), 1);
358
- });
359
-
360
- it('addComputable accepts refs', () => {
361
- let store = new Store({data: {x: 0}});
362
-
363
- const component = renderer.create(
364
- <Cx store={store} subscribe immediate>
365
- <div
366
- controller={({ref}) => {
367
- let x = ref("x");
368
- return {
369
- onInit() {
370
- this.addComputable("y", [x], x => x + 1);
371
- }
372
- }
373
- }}
374
- />
375
- </Cx>
376
- );
377
-
378
- let tree1 = component.toJSON();
379
- assert.equal(store.get("y"), 1);
380
- });
381
-
382
- it('invokeParentMethod is invoked on parent instance', () => {
383
-
384
- let testValid = [];
385
-
386
- const TestController1 = {
387
- onInit() {
388
- this.test();
389
- },
390
- test() {
391
- testValid.push(1);
392
- this.invokeParentMethod('test', 2);
393
- }
394
- }
395
-
396
- const TestController2 = {
397
- test(val) {
398
- testValid.push(val)
399
- }
400
- }
401
-
402
- let store = new Store();
403
-
404
- const component = renderer.create(
405
- <Cx store={store} subscribe immediate>
406
- <div controller={TestController2}>
407
- <div controller={TestController1}/>
408
- </div>
409
- </Cx>
410
- );
411
-
412
- // let tree = component.toJSON();
413
- assert.deepStrictEqual(testValid, [1, 2]);
414
- });
1
+ import { Cx } from './Cx';
2
+ import { VDOM } from './Widget';
3
+ import { HtmlElement } from '../widgets/HtmlElement';
4
+ import { Store } from '../data/Store';
5
+ import { Controller } from './Controller';
6
+
7
+ import renderer from 'react-test-renderer';
8
+ import assert from 'assert';
9
+
10
+ describe('Controller', () => {
11
+
12
+ it('invokes lifetime methods', () => {
13
+
14
+ let init = 0,
15
+ prepare = 0,
16
+ explore = 0,
17
+ cleanup = 0;
18
+
19
+ class TestController extends Controller {
20
+ onInit() {
21
+ init++;
22
+ }
23
+
24
+ onExplore() {
25
+ explore++;
26
+ }
27
+
28
+ onPrepare() {
29
+ prepare++;
30
+ }
31
+
32
+ onCleanup() {
33
+ cleanup++;
34
+ }
35
+ }
36
+
37
+ let widget = <cx>
38
+ <div controller={TestController}/>
39
+ </cx>;
40
+
41
+ let store = new Store();
42
+
43
+ const component = renderer.create(
44
+ <Cx widget={widget} store={store} subscribe immediate/>
45
+ );
46
+
47
+ let tree = component.toJSON();
48
+ assert.equal(init, 1);
49
+ assert.equal(explore, 1);
50
+ assert.equal(prepare, 1);
51
+ assert.equal(cleanup, 1);
52
+ });
53
+
54
+ it('widgets invoke controller methods specified as strings', () => {
55
+
56
+ let callback = 0;
57
+
58
+ class TestController extends Controller {
59
+ callback() {
60
+ ++callback;
61
+ }
62
+ }
63
+
64
+ class Cmp extends VDOM.Component {
65
+ render() {
66
+ return <div/>
67
+ }
68
+
69
+ componentDidMount() {
70
+ this.props.instance.invoke("onTest");
71
+ }
72
+ }
73
+
74
+ let store = new Store();
75
+
76
+ const component = renderer.create(
77
+ <Cx store={store} subscribe immediate>
78
+ <Cmp controller={TestController} onTest="callback"/>
79
+ </Cx>
80
+ );
81
+
82
+ let tree = component.toJSON();
83
+ assert.equal(callback, 1);
84
+ });
85
+
86
+ it('widgets can access controller methods specified in ancestor controllers', () => {
87
+
88
+ let callback1 = 0;
89
+ let callback2 = 0;
90
+
91
+ class TestController1 extends Controller {
92
+ callback1() {
93
+ ++callback1;
94
+ }
95
+ }
96
+
97
+ class TestController2 extends Controller {
98
+ callback2() {
99
+ ++callback2;
100
+ }
101
+ }
102
+
103
+ class Cmp extends VDOM.Component {
104
+ render() {
105
+ return <div/>
106
+ }
107
+
108
+ componentDidMount() {
109
+ this.props.instance.invoke("onTest");
110
+ }
111
+ }
112
+
113
+ let store = new Store();
114
+
115
+ const component = renderer.create(
116
+ <Cx store={store} subscribe immediate>
117
+ <div controller={TestController1}>
118
+ <Cmp controller={TestController2} onTest="callback1"/>
119
+ </div>
120
+ </Cx>
121
+ );
122
+
123
+ let tree = component.toJSON();
124
+ assert.equal(callback1, 1);
125
+ assert.equal(callback2, 0);
126
+ });
127
+
128
+ it('ancestor controllers are initialized first', () => {
129
+
130
+ let order = [];
131
+
132
+ class TestController1 extends Controller {
133
+ onInit() {
134
+ order.push("1");
135
+ }
136
+ }
137
+
138
+ class TestController2 extends Controller {
139
+ onInit() {
140
+ order.push("2");
141
+ }
142
+ }
143
+
144
+ let store = new Store();
145
+
146
+ const component = renderer.create(
147
+ <Cx store={store} subscribe immediate>
148
+ <div controller={TestController1}>
149
+ <div controller={TestController2}/>
150
+ </div>
151
+ </Cx>
152
+ );
153
+
154
+ let tree = component.toJSON();
155
+ assert.deepEqual(order, ["1", "2"]);
156
+ });
157
+
158
+ it('controllers on invisible elements are not initialized', () => {
159
+
160
+ let order = [];
161
+
162
+ class TestController1 extends Controller {
163
+ onInit() {
164
+ order.push("1");
165
+ }
166
+ }
167
+
168
+ class TestController2 extends Controller {
169
+ onInit() {
170
+ order.push("2");
171
+ }
172
+ }
173
+
174
+ let store = new Store();
175
+
176
+ const component = renderer.create(
177
+ <Cx store={store} subscribe immediate>
178
+ <div controller={TestController1}>
179
+ <div visible={false} controller={TestController2}/>
180
+ </div>
181
+ </Cx>
182
+ );
183
+
184
+ let tree = component.toJSON();
185
+ assert.deepEqual(order, ["1"]);
186
+ });
187
+
188
+ it('invokes triggers and computables in order of definition', () => {
189
+ let log = [];
190
+
191
+ class TestController extends Controller {
192
+ onInit() {
193
+ this.addTrigger('t1', [], () => {
194
+ log.push('t1');
195
+ }, true);
196
+
197
+ this.addComputable('c1', [], () => {
198
+ log.push('c1');
199
+ return null;
200
+ });
201
+
202
+ this.addTrigger('t2', [], () => {
203
+ log.push('t2');
204
+ }, true)
205
+ }
206
+ }
207
+
208
+ let widget = <cx>
209
+ <div controller={TestController}/>
210
+ </cx>;
211
+
212
+ let store = new Store();
213
+
214
+ const component = renderer.create(
215
+ <Cx widget={widget} store={store} subscribe immediate/>
216
+ );
217
+
218
+ let tree = component.toJSON();
219
+ assert.deepEqual(log, ["t1", "c1", "t2"]);
220
+ });
221
+
222
+ it('is recreated if a component is hidden and shown', () => {
223
+ let initCount = 0;
224
+
225
+ class TestController extends Controller {
226
+ onInit() {
227
+ initCount++;
228
+ }
229
+ }
230
+
231
+ let store = new Store();
232
+ store.set('visible', true);
233
+
234
+ const component = renderer.create(
235
+ <Cx store={store} subscribe immediate>
236
+ <div visible:bind="visible" controller={TestController}/>
237
+ </Cx>
238
+ );
239
+
240
+ let tree1 = component.toJSON();
241
+ assert.equal(initCount, 1);
242
+
243
+ store.set('visible', false);
244
+ let tree2 = component.toJSON();
245
+ assert.equal(tree2, null);
246
+
247
+ store.set('visible', true);
248
+ let tree3 = component.toJSON();
249
+ assert.equal(initCount, 2);
250
+ });
251
+
252
+ it('allows creation through a factory', () => {
253
+ let store = new Store({ data: { x: 0}});
254
+
255
+ const controllerFactory = ({store}) => {
256
+ return {
257
+ increment() {
258
+ store.update("x", x => x + 1);
259
+ }
260
+ }
261
+ };
262
+
263
+ let c = Controller.create(controllerFactory, {store});
264
+
265
+ c.increment();
266
+ assert.equal(store.get("x"), 1);
267
+ });
268
+
269
+ it('lifetime methods of a functional controller are properly invoked', () => {
270
+ let initCount = 0,
271
+ destroyCount = 0;
272
+
273
+ const testController = () => ({
274
+ onInit() {
275
+ initCount++;
276
+ },
277
+
278
+ onDestroy() {
279
+ destroyCount++;
280
+ }
281
+ });
282
+
283
+ let store = new Store();
284
+ store.set('visible', true);
285
+
286
+ const component = renderer.create(
287
+ <Cx store={store} subscribe immediate>
288
+ <div visible:bind="visible" controller={testController}/>
289
+ </Cx>
290
+ );
291
+
292
+ let tree1 = component.toJSON();
293
+ assert.equal(initCount, 1);
294
+
295
+ store.set('visible', false);
296
+ let tree2 = component.toJSON();
297
+ assert.equal(destroyCount, 1);
298
+
299
+ store.set('visible', true);
300
+ let tree3 = component.toJSON();
301
+ assert.equal(initCount, 2);
302
+ });
303
+
304
+ it('widgets can easily define controller methods', () => {
305
+ let store = new Store({ data: { x: 0}});
306
+
307
+ const component = renderer.create(
308
+ <Cx store={store} subscribe immediate>
309
+ <div
310
+ controller={{
311
+ increment(count) {
312
+ this.store.update("x", x => x + count);
313
+ }
314
+ }}
315
+ >
316
+ <div
317
+ controller={{
318
+ onInit() {
319
+ this.invokeParentMethod("increment", 1);
320
+ }
321
+ }}
322
+ />
323
+ </div>
324
+
325
+
326
+ </Cx>
327
+ );
328
+
329
+ let tree1 = component.toJSON();
330
+ assert.equal(store.get("x"), 1);
331
+ });
332
+
333
+ it('functional controllers get store methods through configuration', () => {
334
+ let store = new Store({ data: { x: 0}});
335
+
336
+ const component = renderer.create(
337
+ <Cx store={store} subscribe immediate>
338
+ <div
339
+ controller={({update}) => ({
340
+ increment(count) {
341
+ update("x", x => x + count);
342
+ }
343
+ })}
344
+ >
345
+ <div
346
+ controller={{
347
+ onInit() {
348
+ this.invokeParentMethod("increment", 1);
349
+ }
350
+ }}
351
+ />
352
+ </div>
353
+ </Cx>
354
+ );
355
+
356
+ let tree1 = component.toJSON();
357
+ assert.equal(store.get("x"), 1);
358
+ });
359
+
360
+ it('addComputable accepts refs', () => {
361
+ let store = new Store({data: {x: 0}});
362
+
363
+ const component = renderer.create(
364
+ <Cx store={store} subscribe immediate>
365
+ <div
366
+ controller={({ref}) => {
367
+ let x = ref("x");
368
+ return {
369
+ onInit() {
370
+ this.addComputable("y", [x], x => x + 1);
371
+ }
372
+ }
373
+ }}
374
+ />
375
+ </Cx>
376
+ );
377
+
378
+ let tree1 = component.toJSON();
379
+ assert.equal(store.get("y"), 1);
380
+ });
381
+
382
+ it('invokeParentMethod is invoked on parent instance', () => {
383
+
384
+ let testValid = [];
385
+
386
+ const TestController1 = {
387
+ onInit() {
388
+ this.test();
389
+ },
390
+ test() {
391
+ testValid.push(1);
392
+ this.invokeParentMethod('test', 2);
393
+ }
394
+ }
395
+
396
+ const TestController2 = {
397
+ test(val) {
398
+ testValid.push(val)
399
+ }
400
+ }
401
+
402
+ let store = new Store();
403
+
404
+ const component = renderer.create(
405
+ <Cx store={store} subscribe immediate>
406
+ <div controller={TestController2}>
407
+ <div controller={TestController1}/>
408
+ </div>
409
+ </Cx>
410
+ );
411
+
412
+ // let tree = component.toJSON();
413
+ assert.deepStrictEqual(testValid, [1, 2]);
414
+ });
415
415
  });