cx 24.7.5 → 24.8.0

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