cx 24.6.2 → 24.6.3

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