cx 26.1.1 → 26.1.2
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.
- package/.mocharc.json +5 -5
- package/LICENSE-THIRD-PARTY.md +91 -91
- package/LICENSE.md +7 -7
- package/README.md +46 -46
- package/build/data/ArrayElementView.d.ts +4 -3
- package/build/ui/adapter/ArrayAdapter.js +0 -2
- package/build/ui/adapter/DataAdapter.d.ts +3 -3
- package/build.js +133 -133
- package/dist/manifest.js +826 -826
- package/dist/ui.js +0 -2
- package/package.json +100 -99
- package/src/charts/Bar.scss +28 -28
- package/src/charts/Bar.ts +114 -114
- package/src/charts/BarGraph.scss +28 -28
- package/src/charts/BarGraph.tsx +145 -145
- package/src/charts/BubbleGraph.scss +31 -31
- package/src/charts/BubbleGraph.tsx +165 -165
- package/src/charts/Chart.ts +108 -108
- package/src/charts/ColorMap.ts +150 -150
- package/src/charts/Column.scss +28 -28
- package/src/charts/Column.ts +124 -124
- package/src/charts/ColumnBarBase.tsx +284 -284
- package/src/charts/ColumnBarGraphBase.tsx +229 -229
- package/src/charts/ColumnGraph.scss +29 -29
- package/src/charts/ColumnGraph.tsx +153 -153
- package/src/charts/Grid.ts +5 -5
- package/src/charts/Gridlines.scss +24 -24
- package/src/charts/Gridlines.tsx +88 -88
- package/src/charts/Legend.scss +50 -50
- package/src/charts/Legend.tsx +270 -270
- package/src/charts/LegendEntry.scss +29 -29
- package/src/charts/LegendEntry.tsx +197 -197
- package/src/charts/LineGraph.scss +24 -24
- package/src/charts/LineGraph.tsx +455 -455
- package/src/charts/Marker.scss +43 -43
- package/src/charts/Marker.tsx +483 -483
- package/src/charts/MarkerLine.scss +19 -19
- package/src/charts/MarkerLine.tsx +214 -214
- package/src/charts/MouseTracker.tsx +112 -112
- package/src/charts/Pie.ts +8 -8
- package/src/charts/PieChart.scss +28 -28
- package/src/charts/PieChart.tsx +717 -717
- package/src/charts/PieLabel.tsx +106 -106
- package/src/charts/PieLabelsContainer.ts +68 -68
- package/src/charts/Range.scss +19 -19
- package/src/charts/Range.tsx +318 -318
- package/src/charts/RangeMarker.scss +17 -17
- package/src/charts/RangeMarker.tsx +233 -233
- package/src/charts/ScatterGraph.scss +23 -23
- package/src/charts/ScatterGraph.tsx +245 -245
- package/src/charts/Swimlane.scss +16 -16
- package/src/charts/Swimlane.tsx +195 -195
- package/src/charts/Swimlanes.scss +16 -16
- package/src/charts/Swimlanes.tsx +179 -179
- package/src/charts/axis/Axis.scss +22 -22
- package/src/charts/axis/Axis.tsx +444 -444
- package/src/charts/axis/CategoryAxis.scss +34 -34
- package/src/charts/axis/CategoryAxis.tsx +313 -313
- package/src/charts/axis/NumericAxis.scss +34 -34
- package/src/charts/axis/NumericAxis.tsx +437 -437
- package/src/charts/axis/Stack.ts +61 -61
- package/src/charts/axis/TimeAxis.scss +33 -33
- package/src/charts/axis/TimeAxis.tsx +718 -718
- package/src/charts/axis/index.scss +5 -5
- package/src/charts/axis/index.ts +3 -3
- package/src/charts/axis/variables.scss +2 -2
- package/src/charts/helpers/MinMaxFinder.ts +66 -66
- package/src/charts/helpers/PointReducer.ts +135 -135
- package/src/charts/helpers/SnapPointFinder.ts +136 -136
- package/src/charts/helpers/ValueAtFinder.ts +72 -72
- package/src/charts/helpers/index.ts +4 -4
- package/src/charts/index.scss +22 -22
- package/src/charts/index.ts +34 -34
- package/src/charts/palette.scss +97 -97
- package/src/charts/shapes.tsx +86 -86
- package/src/charts/variables.scss +22 -22
- package/src/core.d.ts +182 -182
- package/src/data/AggregateFunction.ts +171 -171
- package/src/data/ArrayElementView.spec.ts +88 -88
- package/src/data/ArrayElementView.ts +91 -90
- package/src/data/ArrayRef.ts +34 -34
- package/src/data/AugmentedViewBase.ts +88 -88
- package/src/data/Binding.spec.ts +69 -69
- package/src/data/Binding.ts +104 -104
- package/src/data/ExposedRecordView.ts +95 -95
- package/src/data/ExposedValueView.ts +89 -89
- package/src/data/Expression.spec.ts +229 -229
- package/src/data/Expression.ts +233 -233
- package/src/data/Grouper.spec.ts +57 -57
- package/src/data/Grouper.ts +158 -158
- package/src/data/NestedDataView.ts +43 -43
- package/src/data/ReadOnlyDataView.ts +39 -39
- package/src/data/Ref.spec.ts +79 -79
- package/src/data/Ref.ts +104 -104
- package/src/data/Selector.ts +10 -10
- package/src/data/Store.spec.ts +22 -22
- package/src/data/Store.ts +52 -52
- package/src/data/StoreProxy.ts +19 -19
- package/src/data/StoreRef.spec.ts +24 -24
- package/src/data/StoreRef.ts +66 -66
- package/src/data/StringTemplate.spec.ts +132 -132
- package/src/data/StringTemplate.ts +93 -93
- package/src/data/StructuredSelector.spec.ts +113 -113
- package/src/data/StructuredSelector.ts +146 -146
- package/src/data/SubscribableView.ts +63 -63
- package/src/data/View.spec.ts +60 -60
- package/src/data/View.ts +289 -289
- package/src/data/ZoomIntoPropertyView.spec.ts +64 -64
- package/src/data/ZoomIntoPropertyView.ts +45 -45
- package/src/data/comparer.spec.ts +60 -60
- package/src/data/comparer.ts +78 -78
- package/src/data/computable.spec.ts +87 -87
- package/src/data/computable.ts +69 -69
- package/src/data/createAccessorModelProxy.spec.tsx +145 -145
- package/src/data/createAccessorModelProxy.ts +66 -66
- package/src/data/createStructuredSelector.spec.ts +45 -45
- package/src/data/createStructuredSelector.ts +62 -62
- package/src/data/defaultCompare.ts +14 -14
- package/src/data/diff/diffArrays.ts +49 -49
- package/src/data/diff/diffs.spec.ts +49 -49
- package/src/data/diff/index.ts +1 -1
- package/src/data/enableFatArrowExpansion.ts +6 -6
- package/src/data/getAccessor.spec.ts +11 -11
- package/src/data/getAccessor.ts +74 -74
- package/src/data/getSelector.spec.ts +43 -43
- package/src/data/getSelector.ts +66 -66
- package/src/data/index.ts +30 -30
- package/src/data/isSelector.ts +26 -26
- package/src/data/ops/append.spec.ts +28 -28
- package/src/data/ops/append.ts +5 -5
- package/src/data/ops/filter.spec.ts +35 -35
- package/src/data/ops/filter.ts +9 -9
- package/src/data/ops/findTreeNode.spec.ts +23 -23
- package/src/data/ops/findTreeNode.ts +14 -14
- package/src/data/ops/findTreePath.ts +23 -23
- package/src/data/ops/index.ts +11 -11
- package/src/data/ops/insertElement.ts +3 -3
- package/src/data/ops/merge.spec.ts +27 -27
- package/src/data/ops/merge.ts +13 -13
- package/src/data/ops/moveElement.ts +21 -21
- package/src/data/ops/removeTreeNodes.spec.ts +37 -37
- package/src/data/ops/removeTreeNodes.ts +15 -15
- package/src/data/ops/updateArray.spec.ts +69 -69
- package/src/data/ops/updateArray.ts +31 -31
- package/src/data/ops/updateTree.spec.ts +54 -54
- package/src/data/ops/updateTree.ts +23 -23
- package/src/data/test-types.ts +7 -7
- package/src/global.scss +13 -13
- package/src/hooks/createLocalStorageRef.ts +21 -21
- package/src/hooks/index.ts +8 -8
- package/src/hooks/invokeCallback.spec.tsx +59 -59
- package/src/hooks/invokeCallback.ts +8 -8
- package/src/hooks/resolveCallback.spec.tsx +71 -71
- package/src/hooks/resolveCallback.ts +16 -16
- package/src/hooks/store.spec.tsx +67 -67
- package/src/hooks/store.ts +46 -46
- package/src/hooks/useEffect.ts +14 -14
- package/src/hooks/useInterval.ts +8 -8
- package/src/hooks/useState.ts +20 -20
- package/src/hooks/useTrigger.spec.tsx +105 -105
- package/src/hooks/useTrigger.ts +26 -26
- package/src/index.ts +7 -7
- package/src/jsx-dev-runtime.ts +4 -4
- package/src/jsx-runtime.spec.tsx +431 -431
- package/src/jsx-runtime.ts +79 -79
- package/src/locale/de-de.ts +76 -76
- package/src/locale/en-us.ts +75 -75
- package/src/locale/es-es.ts +76 -76
- package/src/locale/fr-fr.ts +76 -76
- package/src/locale/nl-nl.ts +76 -76
- package/src/locale/pt-pt.ts +76 -76
- package/src/locale/sr-latn-ba.ts +76 -76
- package/src/svg/BoundedObject.ts +101 -101
- package/src/svg/ClipRect.tsx +29 -29
- package/src/svg/Ellipse.tsx +68 -68
- package/src/svg/Line.tsx +58 -58
- package/src/svg/NonOverlappingRect.ts +26 -26
- package/src/svg/NonOverlappingRectGroup.ts +49 -49
- package/src/svg/Rectangle.tsx +90 -90
- package/src/svg/Svg.scss +27 -27
- package/src/svg/Svg.tsx +241 -241
- package/src/svg/Text.tsx +134 -134
- package/src/svg/TextualBoundedObject.ts +35 -35
- package/src/svg/index.scss +8 -8
- package/src/svg/index.ts +17 -17
- package/src/svg/util/Rect.ts +105 -105
- package/src/ui/CSS.ts +87 -87
- package/src/ui/CSSHelper.ts +17 -17
- package/src/ui/Container.tsx +216 -216
- package/src/ui/ContentResolver.spec.tsx +585 -585
- package/src/ui/ContentResolver.ts +132 -132
- package/src/ui/Controller.spec.tsx +574 -574
- package/src/ui/Controller.ts +202 -202
- package/src/ui/Culture.ts +159 -159
- package/src/ui/Cx.spec.tsx +210 -210
- package/src/ui/Cx.tsx +386 -386
- package/src/ui/DataProxy.spec.tsx +337 -337
- package/src/ui/DataProxy.ts +55 -55
- package/src/ui/DetachedScope.tsx +159 -159
- package/src/ui/FocusManager.ts +171 -171
- package/src/ui/Format.ts +108 -108
- package/src/ui/HoverSync.tsx +189 -189
- package/src/ui/Instance.ts +866 -866
- package/src/ui/IsolatedScope.spec.tsx +62 -62
- package/src/ui/IsolatedScope.ts +50 -50
- package/src/ui/Localization.ts +70 -70
- package/src/ui/Prop.ts +140 -140
- package/src/ui/PureContainer.spec.tsx +232 -232
- package/src/ui/PureContainer.tsx +19 -19
- package/src/ui/RenderingContext.ts +99 -99
- package/src/ui/Repeater.spec.tsx +143 -143
- package/src/ui/Repeater.ts +194 -194
- package/src/ui/Rescope.spec.tsx +199 -199
- package/src/ui/Rescope.ts +49 -49
- package/src/ui/ResizeManager.ts +30 -30
- package/src/ui/Restate.spec.tsx +422 -422
- package/src/ui/Restate.tsx +217 -217
- package/src/ui/StaticText.ts +11 -11
- package/src/ui/StructuredInstanceDataAccessor.ts +32 -32
- package/src/ui/Text.ts +49 -49
- package/src/ui/VDOM.ts +1 -1
- package/src/ui/Widget.spec.tsx +53 -53
- package/src/ui/Widget.tsx +301 -301
- package/src/ui/ZIndexManager.ts +11 -11
- package/src/ui/adapter/ArrayAdapter.spec.ts +55 -55
- package/src/ui/adapter/ArrayAdapter.ts +229 -229
- package/src/ui/adapter/DataAdapter.ts +52 -52
- package/src/ui/adapter/GroupAdapter.ts +235 -235
- package/src/ui/adapter/TreeAdapter.spec.ts +76 -76
- package/src/ui/adapter/TreeAdapter.ts +185 -185
- package/src/ui/adapter/index.ts +4 -4
- package/src/ui/app/History.ts +133 -133
- package/src/ui/app/Url.spec.ts +50 -50
- package/src/ui/app/Url.ts +102 -102
- package/src/ui/app/index.ts +5 -5
- package/src/ui/app/startAppLoop.tsx +71 -71
- package/src/ui/app/startHotAppLoop.ts +41 -41
- package/src/ui/batchUpdates.ts +77 -77
- package/src/ui/bind.ts +10 -10
- package/src/ui/createFunctionalComponent.spec.tsx +454 -454
- package/src/ui/createFunctionalComponent.ts +86 -86
- package/src/ui/expr.ts +47 -47
- package/src/ui/exprHelpers.spec.ts +379 -379
- package/src/ui/exprHelpers.ts +78 -78
- package/src/ui/flattenProps.ts +21 -21
- package/src/ui/index.scss +2 -2
- package/src/ui/index.ts +47 -47
- package/src/ui/keyboardShortcuts.ts +40 -40
- package/src/ui/layout/Content.ts +30 -30
- package/src/ui/layout/ContentPlaceholder.spec.tsx +599 -599
- package/src/ui/layout/ContentPlaceholder.ts +133 -133
- package/src/ui/layout/FirstVisibleChildLayout.spec.tsx +207 -207
- package/src/ui/layout/FirstVisibleChildLayout.ts +60 -60
- package/src/ui/layout/LabelsLeftLayout.scss +46 -46
- package/src/ui/layout/LabelsLeftLayout.tsx +76 -76
- package/src/ui/layout/LabelsTopLayout.scss +64 -64
- package/src/ui/layout/LabelsTopLayout.tsx +156 -156
- package/src/ui/layout/UseParentLayout.ts +8 -8
- package/src/ui/layout/exploreChildren.ts +38 -38
- package/src/ui/layout/index.scss +3 -3
- package/src/ui/layout/index.ts +10 -10
- package/src/ui/layout/variables.scss +2 -2
- package/src/ui/selection/KeySelection.ts +153 -153
- package/src/ui/selection/PropertySelection.ts +87 -87
- package/src/ui/selection/Selection.ts +128 -128
- package/src/ui/selection/index.ts +3 -3
- package/src/ui/tpl.ts +4 -4
- package/src/ui/variables.scss +1 -1
- package/src/util/Component.spec.ts +411 -411
- package/src/util/Console.ts +13 -13
- package/src/util/DOM.ts +88 -88
- package/src/util/Debug.ts +71 -71
- package/src/util/Format.spec.ts +69 -69
- package/src/util/Format.ts +267 -267
- package/src/util/GlobalCacheIdentifier.ts +11 -11
- package/src/util/KeyCode.ts +21 -21
- package/src/util/SubscriberList.ts +86 -86
- package/src/util/Timing.ts +58 -58
- package/src/util/TraversalStack.spec.ts +53 -53
- package/src/util/TraversalStack.ts +47 -47
- package/src/util/addEventListenerWithOptions.ts +41 -41
- package/src/util/browserSupportsPassiveEventHandlers.ts +20 -20
- package/src/util/calculateNaturalElementHeight.ts +22 -22
- package/src/util/call-once.scss +6 -6
- package/src/util/capitalize.ts +4 -4
- package/src/util/coalesce.ts +6 -6
- package/src/util/color/hslToRgb.ts +34 -34
- package/src/util/color/index.ts +4 -4
- package/src/util/color/parseColor.ts +173 -173
- package/src/util/color/rgbToHex.ts +14 -14
- package/src/util/color/rgbToHsl.ts +35 -35
- package/src/util/date/dateDiff.ts +9 -9
- package/src/util/date/diff.ts +13 -13
- package/src/util/date/encodeDate.ts +8 -8
- package/src/util/date/encodeDateWithTimezoneOffset.ts +18 -18
- package/src/util/date/index.ts +11 -11
- package/src/util/date/lowerBoundCheck.ts +13 -13
- package/src/util/date/maxDate.ts +14 -14
- package/src/util/date/minDate.ts +14 -14
- package/src/util/date/monthStart.ts +8 -8
- package/src/util/date/parseDateInvariant.ts +20 -20
- package/src/util/date/sameDate.ts +11 -11
- package/src/util/date/upperBoundCheck.spec.ts +30 -30
- package/src/util/date/upperBoundCheck.ts +13 -13
- package/src/util/date/zeroTime.ts +9 -9
- package/src/util/debounce.ts +26 -26
- package/src/util/dummyCallback.ts +1 -1
- package/src/util/escapeSpecialRegexCharacters.ts +8 -8
- package/src/util/eventCallbacks.ts +12 -12
- package/src/util/expandFatArrows.ts +118 -118
- package/src/util/findScrollableParent.ts +15 -15
- package/src/util/getActiveElement.ts +4 -4
- package/src/util/getParentFrameBoundingClientRect.ts +13 -13
- package/src/util/getScrollerBoundingClientRect.ts +12 -12
- package/src/util/getSearchQueryPredicate.spec.ts +40 -40
- package/src/util/getSearchQueryPredicate.ts +58 -58
- package/src/util/getTopLevelBoundingClientRect.ts +7 -7
- package/src/util/getVendorPrefix.ts +33 -33
- package/src/util/hasKey.ts +18 -18
- package/src/util/index.scss +10 -10
- package/src/util/index.ts +55 -55
- package/src/util/innerTextTrim.ts +10 -10
- package/src/util/isArray.ts +3 -3
- package/src/util/isDataRecord.ts +5 -5
- package/src/util/isDefined.ts +3 -3
- package/src/util/isDigit.ts +8 -8
- package/src/util/isFunction.ts +3 -3
- package/src/util/isNonEmptyArray.ts +3 -3
- package/src/util/isNumber.ts +3 -3
- package/src/util/isObject.ts +3 -3
- package/src/util/isPromise.ts +6 -6
- package/src/util/isString.ts +3 -3
- package/src/util/isTextInputElement.ts +2 -2
- package/src/util/isTouchDevice.ts +7 -7
- package/src/util/isTouchEvent.ts +64 -64
- package/src/util/isUndefined.ts +3 -3
- package/src/util/isValidIdentifierName.spec.ts +33 -33
- package/src/util/isValidIdentifierName.ts +5 -5
- package/src/util/onIdleCallback.ts +10 -10
- package/src/util/parseStyle.ts +29 -29
- package/src/util/quote.ts +6 -6
- package/src/util/reverseSlice.ts +9 -9
- package/src/util/routeAppend.spec.ts +19 -19
- package/src/util/routeAppend.ts +15 -15
- package/src/util/scrollElementIntoView.ts +40 -40
- package/src/util/scss/add-rules.scss +40 -40
- package/src/util/scss/calc.scss +44 -44
- package/src/util/scss/call-once.scss +12 -12
- package/src/util/scss/clockwise.scss +49 -49
- package/src/util/scss/colors.scss +9 -9
- package/src/util/scss/deep-get.scss +11 -11
- package/src/util/scss/deep-merge.scss +21 -21
- package/src/util/scss/divide.scss +3 -3
- package/src/util/scss/include.scss +48 -48
- package/src/util/scss/index.scss +9 -9
- package/src/util/shallowEquals.ts +43 -43
- package/src/util/test/createTestRenderer.tsx +19 -19
- package/src/util/throttle.ts +21 -21
- package/src/util/validatedDebounce.ts +23 -23
- package/src/variables.scss +217 -217
- package/src/widgets/AccessorBindings.spec.tsx +90 -90
- package/src/widgets/Button.scss +119 -119
- package/src/widgets/Button.tsx +189 -189
- package/src/widgets/Button.variables.scss +117 -117
- package/src/widgets/CxCredit.scss +39 -39
- package/src/widgets/CxCredit.tsx +46 -46
- package/src/widgets/DocumentTitle.ts +95 -95
- package/src/widgets/FlexBox.scss +148 -148
- package/src/widgets/FlexBox.tsx +168 -168
- package/src/widgets/Heading.scss +40 -40
- package/src/widgets/Heading.ts +42 -42
- package/src/widgets/HighlightedSearchText.scss +20 -20
- package/src/widgets/HighlightedSearchText.tsx +54 -54
- package/src/widgets/HtmlElement.spec.helpers.tsx +108 -108
- package/src/widgets/HtmlElement.spec.tsx +89 -89
- package/src/widgets/HtmlElement.tsx +407 -407
- package/src/widgets/Icon.scss +22 -22
- package/src/widgets/Icon.ts +64 -64
- package/src/widgets/List.scss +93 -93
- package/src/widgets/List.tsx +793 -793
- package/src/widgets/ProgressBar.scss +50 -50
- package/src/widgets/ProgressBar.tsx +66 -66
- package/src/widgets/ReactElementWrapper.spec.tsx +452 -452
- package/src/widgets/ReactElementWrapper.tsx +108 -108
- package/src/widgets/Resizer.scss +43 -43
- package/src/widgets/Resizer.tsx +200 -200
- package/src/widgets/Sandbox.ts +103 -103
- package/src/widgets/Section.scss +55 -55
- package/src/widgets/Section.tsx +187 -187
- package/src/widgets/animations.scss +10 -10
- package/src/widgets/autoFocus.ts +9 -9
- package/src/widgets/cx.ts +63 -63
- package/src/widgets/drag-drop/DragClone.scss +35 -35
- package/src/widgets/drag-drop/DragHandle.scss +18 -18
- package/src/widgets/drag-drop/DragHandle.tsx +47 -47
- package/src/widgets/drag-drop/DragSource.scss +26 -26
- package/src/widgets/drag-drop/DragSource.tsx +237 -237
- package/src/widgets/drag-drop/DropZone.scss +76 -76
- package/src/widgets/drag-drop/DropZone.tsx +353 -353
- package/src/widgets/drag-drop/index.scss +3 -3
- package/src/widgets/drag-drop/index.ts +4 -4
- package/src/widgets/drag-drop/ops.tsx +422 -422
- package/src/widgets/drag-drop/variables.scss +14 -14
- package/src/widgets/enableAllInternalDependencies.ts +11 -11
- package/src/widgets/form/Calendar.scss +199 -199
- package/src/widgets/form/Calendar.tsx +760 -760
- package/src/widgets/form/Calendar.variables.scss +63 -63
- package/src/widgets/form/Checkbox.scss +129 -129
- package/src/widgets/form/Checkbox.tsx +287 -287
- package/src/widgets/form/Checkbox.variables.scss +39 -39
- package/src/widgets/form/ColorField.scss +98 -98
- package/src/widgets/form/ColorField.tsx +497 -497
- package/src/widgets/form/ColorPicker.scss +285 -285
- package/src/widgets/form/ColorPicker.tsx +544 -544
- package/src/widgets/form/ColorPicker.variables.scss +22 -22
- package/src/widgets/form/DateField.ts +21 -21
- package/src/widgets/form/DateTimeField.scss +92 -92
- package/src/widgets/form/DateTimeField.tsx +726 -726
- package/src/widgets/form/DateTimePicker.scss +46 -46
- package/src/widgets/form/DateTimePicker.tsx +429 -429
- package/src/widgets/form/Field.scss +164 -164
- package/src/widgets/form/Field.tsx +608 -608
- package/src/widgets/form/FieldGroup.ts +10 -10
- package/src/widgets/form/FieldIcon.ts +61 -61
- package/src/widgets/form/HelpText.scss +24 -24
- package/src/widgets/form/HelpText.ts +15 -15
- package/src/widgets/form/Label.scss +37 -37
- package/src/widgets/form/Label.tsx +117 -117
- package/src/widgets/form/LabeledContainer.ts +77 -77
- package/src/widgets/form/LookupField.scss +221 -221
- package/src/widgets/form/LookupField.spec.tsx +93 -93
- package/src/widgets/form/LookupField.tsx +1421 -1421
- package/src/widgets/form/MonthField.scss +100 -100
- package/src/widgets/form/MonthField.tsx +670 -670
- package/src/widgets/form/MonthPicker.scss +125 -125
- package/src/widgets/form/MonthPicker.tsx +822 -822
- package/src/widgets/form/NumberField.scss +63 -63
- package/src/widgets/form/NumberField.tsx +543 -543
- package/src/widgets/form/Radio.scss +123 -123
- package/src/widgets/form/Radio.tsx +249 -249
- package/src/widgets/form/Radio.variables.scss +45 -45
- package/src/widgets/form/Select.scss +101 -101
- package/src/widgets/form/Select.tsx +327 -327
- package/src/widgets/form/Slider.scss +121 -121
- package/src/widgets/form/Slider.tsx +473 -473
- package/src/widgets/form/Switch.scss +142 -142
- package/src/widgets/form/Switch.tsx +176 -176
- package/src/widgets/form/TextArea.scss +45 -45
- package/src/widgets/form/TextArea.tsx +229 -229
- package/src/widgets/form/TextField.scss +57 -57
- package/src/widgets/form/TextField.tsx +407 -407
- package/src/widgets/form/TimeField.ts +10 -10
- package/src/widgets/form/TimeList.tsx +105 -105
- package/src/widgets/form/UploadButton.scss +49 -49
- package/src/widgets/form/UploadButton.tsx +307 -307
- package/src/widgets/form/ValidationError.scss +22 -22
- package/src/widgets/form/ValidationError.tsx +72 -72
- package/src/widgets/form/ValidationGroup.spec.tsx +147 -147
- package/src/widgets/form/ValidationGroup.ts +141 -141
- package/src/widgets/form/Validator.ts +60 -60
- package/src/widgets/form/Wheel.scss +152 -152
- package/src/widgets/form/Wheel.tsx +314 -314
- package/src/widgets/form/index.scss +24 -24
- package/src/widgets/form/index.ts +28 -28
- package/src/widgets/form/variables.scss +355 -355
- package/src/widgets/grid/Grid.scss +640 -640
- package/src/widgets/grid/Grid.tsx +4243 -4243
- package/src/widgets/grid/GridCell.ts +143 -143
- package/src/widgets/grid/GridCellEditor.tsx +58 -58
- package/src/widgets/grid/GridRow.ts +302 -302
- package/src/widgets/grid/GridRowLine.ts +49 -49
- package/src/widgets/grid/Pagination.scss +115 -115
- package/src/widgets/grid/Pagination.tsx +126 -126
- package/src/widgets/grid/TreeNode.scss +90 -90
- package/src/widgets/grid/TreeNode.tsx +154 -154
- package/src/widgets/grid/createGridCellEditor.tsx +18 -18
- package/src/widgets/grid/index.scss +3 -3
- package/src/widgets/grid/index.ts +16 -16
- package/src/widgets/grid/variables.scss +137 -137
- package/src/widgets/icons/arrow-down.svg +3 -3
- package/src/widgets/icons/arrow-right.svg +2 -2
- package/src/widgets/icons/base.svg +104 -104
- package/src/widgets/icons/calendar-old.svg +169 -169
- package/src/widgets/icons/calendar.svg +187 -187
- package/src/widgets/icons/calendar.tsx +22 -22
- package/src/widgets/icons/check.tsx +14 -14
- package/src/widgets/icons/clear.svg +74 -74
- package/src/widgets/icons/clear.tsx +16 -16
- package/src/widgets/icons/close.svg +74 -74
- package/src/widgets/icons/close.tsx +20 -20
- package/src/widgets/icons/cx.tsx +39 -39
- package/src/widgets/icons/drop-down.tsx +16 -16
- package/src/widgets/icons/dropdown-arrow.svg +61 -61
- package/src/widgets/icons/file.svg +4 -4
- package/src/widgets/icons/file.tsx +14 -14
- package/src/widgets/icons/folder-open.svg +5 -5
- package/src/widgets/icons/folder-open.tsx +16 -16
- package/src/widgets/icons/folder.svg +58 -58
- package/src/widgets/icons/folder.tsx +14 -14
- package/src/widgets/icons/forward.svg +67 -67
- package/src/widgets/icons/forward.tsx +23 -23
- package/src/widgets/icons/index.ts +14 -14
- package/src/widgets/icons/loading.svg +4 -4
- package/src/widgets/icons/loading.tsx +25 -25
- package/src/widgets/icons/menu.tsx +18 -18
- package/src/widgets/icons/pixel-picker.tsx +18 -18
- package/src/widgets/icons/registry.ts +56 -56
- package/src/widgets/icons/search.svg +107 -107
- package/src/widgets/icons/search.tsx +14 -14
- package/src/widgets/icons/sort-asc.svg +3 -3
- package/src/widgets/icons/sort-asc.tsx +15 -15
- package/src/widgets/icons/square.tsx +19 -19
- package/src/widgets/index.d.ts +55 -55
- package/src/widgets/index.scss +16 -16
- package/src/widgets/index.ts +58 -58
- package/src/widgets/nav/Link.scss +20 -20
- package/src/widgets/nav/Link.ts +11 -11
- package/src/widgets/nav/LinkButton.ts +176 -176
- package/src/widgets/nav/Menu.scss +76 -76
- package/src/widgets/nav/Menu.tsx +489 -489
- package/src/widgets/nav/Menu.variables.scss +25 -25
- package/src/widgets/nav/MenuItem.scss +130 -130
- package/src/widgets/nav/MenuItem.tsx +525 -525
- package/src/widgets/nav/MenuSpacer.ts +18 -18
- package/src/widgets/nav/RedirectRoute.ts +49 -49
- package/src/widgets/nav/Route.spec.tsx +24 -24
- package/src/widgets/nav/Route.ts +142 -142
- package/src/widgets/nav/Scroller.scss +148 -148
- package/src/widgets/nav/Scroller.tsx +252 -252
- package/src/widgets/nav/Submenu.ts +6 -6
- package/src/widgets/nav/Tab.scss +82 -82
- package/src/widgets/nav/Tab.ts +120 -120
- package/src/widgets/nav/Tab.variables.scss +84 -84
- package/src/widgets/nav/cover.scss +22 -22
- package/src/widgets/nav/index.scss +5 -5
- package/src/widgets/nav/index.ts +10 -10
- package/src/widgets/nav/variables.scss +27 -27
- package/src/widgets/overlay/ContextMenu.ts +42 -42
- package/src/widgets/overlay/Dropdown.scss +186 -186
- package/src/widgets/overlay/Dropdown.tsx +762 -762
- package/src/widgets/overlay/FlyweightTooltipTracker.ts +57 -57
- package/src/widgets/overlay/MsgBox.tsx +141 -141
- package/src/widgets/overlay/Overlay.scss +68 -68
- package/src/widgets/overlay/Overlay.tsx +947 -947
- package/src/widgets/overlay/Toast.scss +163 -163
- package/src/widgets/overlay/Toast.ts +111 -111
- package/src/widgets/overlay/Tooltip.scss +177 -177
- package/src/widgets/overlay/Tooltip.tsx +393 -393
- package/src/widgets/overlay/Window.scss +129 -129
- package/src/widgets/overlay/Window.tsx +299 -299
- package/src/widgets/overlay/Window.variables.scss +62 -62
- package/src/widgets/overlay/alerts.ts +46 -46
- package/src/widgets/overlay/captureMouse.scss +13 -13
- package/src/widgets/overlay/captureMouse.ts +195 -195
- package/src/widgets/overlay/createHotPromiseWindowFactory.ts +71 -71
- package/src/widgets/overlay/index.scss +15 -15
- package/src/widgets/overlay/index.ts +11 -11
- package/src/widgets/overlay/tooltip-ops.ts +173 -173
- package/src/widgets/overlay/variables.scss +85 -85
- package/src/widgets/variables.scss +146 -146
- package/tsconfig.compile.json +4 -4
- package/tsconfig.json +34 -34
- package/tsconfig.mocha.json +14 -14
|
@@ -1,379 +1,379 @@
|
|
|
1
|
-
import {
|
|
2
|
-
truthy,
|
|
3
|
-
falsy,
|
|
4
|
-
isTrue,
|
|
5
|
-
isFalse,
|
|
6
|
-
hasValue,
|
|
7
|
-
isEmpty,
|
|
8
|
-
isNonEmpty,
|
|
9
|
-
lessThan,
|
|
10
|
-
lessThanOrEqual,
|
|
11
|
-
greaterThan,
|
|
12
|
-
greaterThanOrEqual,
|
|
13
|
-
equal,
|
|
14
|
-
notEqual,
|
|
15
|
-
strictEqual,
|
|
16
|
-
strictNotEqual,
|
|
17
|
-
} from "./exprHelpers";
|
|
18
|
-
import assert from "assert";
|
|
19
|
-
import { createAccessorModelProxy } from "../data/createAccessorModelProxy";
|
|
20
|
-
|
|
21
|
-
interface Model {
|
|
22
|
-
value: number;
|
|
23
|
-
name: string;
|
|
24
|
-
flag: boolean;
|
|
25
|
-
nullable: string | null | undefined;
|
|
26
|
-
items: string[];
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
describe("exprHelpers", function () {
|
|
30
|
-
const m = createAccessorModelProxy<Model>();
|
|
31
|
-
|
|
32
|
-
describe("truthy", function () {
|
|
33
|
-
it("returns true for truthy values", function () {
|
|
34
|
-
const selector = truthy(m.value);
|
|
35
|
-
assert.strictEqual(selector({ value: 1 }), true);
|
|
36
|
-
assert.strictEqual(selector({ value: 100 }), true);
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
it("returns false for falsy values", function () {
|
|
40
|
-
const selector = truthy(m.value);
|
|
41
|
-
assert.strictEqual(selector({ value: 0 }), false);
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
it("returns true for non-empty strings", function () {
|
|
45
|
-
const selector = truthy(m.name);
|
|
46
|
-
assert.strictEqual(selector({ name: "hello" }), true);
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
it("returns false for empty strings", function () {
|
|
50
|
-
const selector = truthy(m.name);
|
|
51
|
-
assert.strictEqual(selector({ name: "" }), false);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it("returns false for null", function () {
|
|
55
|
-
const selector = truthy(m.nullable);
|
|
56
|
-
assert.strictEqual(selector({ nullable: null }), false);
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
describe("falsy", function () {
|
|
61
|
-
it("returns false for truthy values", function () {
|
|
62
|
-
const selector = falsy(m.flag);
|
|
63
|
-
assert.strictEqual(selector({ flag: true }), false);
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it("returns true for falsy values", function () {
|
|
67
|
-
const selector = falsy(m.flag);
|
|
68
|
-
assert.strictEqual(selector({ flag: false }), true);
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
it("returns true for null", function () {
|
|
72
|
-
const selector = falsy(m.nullable);
|
|
73
|
-
assert.strictEqual(selector({ nullable: null }), true);
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
it("returns true for zero", function () {
|
|
77
|
-
const selector = falsy(m.value);
|
|
78
|
-
assert.strictEqual(selector({ value: 0 }), true);
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
it("returns true for empty string", function () {
|
|
82
|
-
const selector = falsy(m.name);
|
|
83
|
-
assert.strictEqual(selector({ name: "" }), true);
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
describe("isTrue", function () {
|
|
88
|
-
it("returns true only for strictly true", function () {
|
|
89
|
-
const selector = isTrue(m.flag);
|
|
90
|
-
assert.strictEqual(selector({ flag: true }), true);
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
it("returns false for truthy values that are not true", function () {
|
|
94
|
-
const selector = isTrue(m.value);
|
|
95
|
-
assert.strictEqual(selector({ value: 1 }), false);
|
|
96
|
-
assert.strictEqual(selector({ value: "true" }), false);
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
it("returns false for false", function () {
|
|
100
|
-
const selector = isTrue(m.flag);
|
|
101
|
-
assert.strictEqual(selector({ flag: false }), false);
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
describe("isFalse", function () {
|
|
106
|
-
it("returns true only for strictly false", function () {
|
|
107
|
-
const selector = isFalse(m.flag);
|
|
108
|
-
assert.strictEqual(selector({ flag: false }), true);
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
it("returns false for falsy values that are not false", function () {
|
|
112
|
-
const selector = isFalse(m.value);
|
|
113
|
-
assert.strictEqual(selector({ value: 0 }), false);
|
|
114
|
-
assert.strictEqual(selector({ value: null }), false);
|
|
115
|
-
assert.strictEqual(selector({ value: "" }), false);
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
it("returns false for true", function () {
|
|
119
|
-
const selector = isFalse(m.flag);
|
|
120
|
-
assert.strictEqual(selector({ flag: true }), false);
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
describe("hasValue", function () {
|
|
125
|
-
it("returns true for defined values", function () {
|
|
126
|
-
const selector = hasValue(m.value);
|
|
127
|
-
assert.strictEqual(selector({ value: 0 }), true);
|
|
128
|
-
assert.strictEqual(selector({ value: 1 }), true);
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
it("returns true for empty string", function () {
|
|
132
|
-
const selector = hasValue(m.name);
|
|
133
|
-
assert.strictEqual(selector({ name: "" }), true);
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
it("returns true for false", function () {
|
|
137
|
-
const selector = hasValue(m.flag);
|
|
138
|
-
assert.strictEqual(selector({ flag: false }), true);
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
it("returns false for null", function () {
|
|
142
|
-
const selector = hasValue(m.nullable);
|
|
143
|
-
assert.strictEqual(selector({ nullable: null }), false);
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
it("returns false for undefined", function () {
|
|
147
|
-
const selector = hasValue(m.nullable);
|
|
148
|
-
assert.strictEqual(selector({ nullable: undefined }), false);
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
describe("isEmpty", function () {
|
|
153
|
-
it("returns true for empty string", function () {
|
|
154
|
-
const selector = isEmpty(m.name);
|
|
155
|
-
assert.strictEqual(selector({ name: "" }), true);
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
it("returns false for non-empty string", function () {
|
|
159
|
-
const selector = isEmpty(m.name);
|
|
160
|
-
assert.strictEqual(selector({ name: "hello" }), false);
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
it("returns true for empty array", function () {
|
|
164
|
-
const selector = isEmpty(m.items);
|
|
165
|
-
assert.strictEqual(selector({ items: [] }), true);
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
it("returns false for non-empty array", function () {
|
|
169
|
-
const selector = isEmpty(m.items);
|
|
170
|
-
assert.strictEqual(selector({ items: ["a", "b"] }), false);
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
it("returns true for null", function () {
|
|
174
|
-
const selector = isEmpty(m.nullable);
|
|
175
|
-
assert.strictEqual(selector({ nullable: null }), true);
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
it("returns true for undefined", function () {
|
|
179
|
-
const selector = isEmpty(m.nullable);
|
|
180
|
-
assert.strictEqual(selector({ nullable: undefined }), true);
|
|
181
|
-
});
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
describe("isNonEmpty", function () {
|
|
185
|
-
it("returns false for empty string", function () {
|
|
186
|
-
const selector = isNonEmpty(m.name);
|
|
187
|
-
assert.strictEqual(selector({ name: "" }), false);
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
it("returns true for non-empty string", function () {
|
|
191
|
-
const selector = isNonEmpty(m.name);
|
|
192
|
-
assert.strictEqual(selector({ name: "hello" }), true);
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
it("returns false for empty array", function () {
|
|
196
|
-
const selector = isNonEmpty(m.items);
|
|
197
|
-
assert.strictEqual(selector({ items: [] }), false);
|
|
198
|
-
});
|
|
199
|
-
|
|
200
|
-
it("returns true for non-empty array", function () {
|
|
201
|
-
const selector = isNonEmpty(m.items);
|
|
202
|
-
assert.strictEqual(selector({ items: ["a", "b"] }), true);
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
it("returns false for null", function () {
|
|
206
|
-
const selector = isNonEmpty(m.nullable);
|
|
207
|
-
assert.strictEqual(selector({ nullable: null }), false);
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
it("returns false for undefined", function () {
|
|
211
|
-
const selector = isNonEmpty(m.nullable);
|
|
212
|
-
assert.strictEqual(selector({ nullable: undefined }), false);
|
|
213
|
-
});
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
describe("lessThan", function () {
|
|
217
|
-
it("returns true when value is less than target", function () {
|
|
218
|
-
const selector = lessThan(m.value, 10);
|
|
219
|
-
assert.strictEqual(selector({ value: 5 }), true);
|
|
220
|
-
assert.strictEqual(selector({ value: 9 }), true);
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
it("returns false when value is equal to target", function () {
|
|
224
|
-
const selector = lessThan(m.value, 10);
|
|
225
|
-
assert.strictEqual(selector({ value: 10 }), false);
|
|
226
|
-
});
|
|
227
|
-
|
|
228
|
-
it("returns false when value is greater than target", function () {
|
|
229
|
-
const selector = lessThan(m.value, 10);
|
|
230
|
-
assert.strictEqual(selector({ value: 11 }), false);
|
|
231
|
-
assert.strictEqual(selector({ value: 100 }), false);
|
|
232
|
-
});
|
|
233
|
-
});
|
|
234
|
-
|
|
235
|
-
describe("lessThanOrEqual", function () {
|
|
236
|
-
it("returns true when value is less than target", function () {
|
|
237
|
-
const selector = lessThanOrEqual(m.value, 10);
|
|
238
|
-
assert.strictEqual(selector({ value: 5 }), true);
|
|
239
|
-
assert.strictEqual(selector({ value: 9 }), true);
|
|
240
|
-
});
|
|
241
|
-
|
|
242
|
-
it("returns true when value is equal to target", function () {
|
|
243
|
-
const selector = lessThanOrEqual(m.value, 10);
|
|
244
|
-
assert.strictEqual(selector({ value: 10 }), true);
|
|
245
|
-
});
|
|
246
|
-
|
|
247
|
-
it("returns false when value is greater than target", function () {
|
|
248
|
-
const selector = lessThanOrEqual(m.value, 10);
|
|
249
|
-
assert.strictEqual(selector({ value: 11 }), false);
|
|
250
|
-
assert.strictEqual(selector({ value: 100 }), false);
|
|
251
|
-
});
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
describe("greaterThan", function () {
|
|
255
|
-
it("returns true when value is greater than target", function () {
|
|
256
|
-
const selector = greaterThan(m.value, 10);
|
|
257
|
-
assert.strictEqual(selector({ value: 11 }), true);
|
|
258
|
-
assert.strictEqual(selector({ value: 100 }), true);
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
it("returns false when value is equal to target", function () {
|
|
262
|
-
const selector = greaterThan(m.value, 10);
|
|
263
|
-
assert.strictEqual(selector({ value: 10 }), false);
|
|
264
|
-
});
|
|
265
|
-
|
|
266
|
-
it("returns false when value is less than target", function () {
|
|
267
|
-
const selector = greaterThan(m.value, 10);
|
|
268
|
-
assert.strictEqual(selector({ value: 5 }), false);
|
|
269
|
-
assert.strictEqual(selector({ value: 9 }), false);
|
|
270
|
-
});
|
|
271
|
-
});
|
|
272
|
-
|
|
273
|
-
describe("greaterThanOrEqual", function () {
|
|
274
|
-
it("returns true when value is greater than target", function () {
|
|
275
|
-
const selector = greaterThanOrEqual(m.value, 10);
|
|
276
|
-
assert.strictEqual(selector({ value: 11 }), true);
|
|
277
|
-
assert.strictEqual(selector({ value: 100 }), true);
|
|
278
|
-
});
|
|
279
|
-
|
|
280
|
-
it("returns true when value is equal to target", function () {
|
|
281
|
-
const selector = greaterThanOrEqual(m.value, 10);
|
|
282
|
-
assert.strictEqual(selector({ value: 10 }), true);
|
|
283
|
-
});
|
|
284
|
-
|
|
285
|
-
it("returns false when value is less than target", function () {
|
|
286
|
-
const selector = greaterThanOrEqual(m.value, 10);
|
|
287
|
-
assert.strictEqual(selector({ value: 5 }), false);
|
|
288
|
-
assert.strictEqual(selector({ value: 9 }), false);
|
|
289
|
-
});
|
|
290
|
-
});
|
|
291
|
-
|
|
292
|
-
describe("equal (loose equality)", function () {
|
|
293
|
-
it("returns true when value equals target", function () {
|
|
294
|
-
const selector = equal(m.value, 10);
|
|
295
|
-
assert.strictEqual(selector({ value: 10 }), true);
|
|
296
|
-
});
|
|
297
|
-
|
|
298
|
-
it("returns false when value does not equal target", function () {
|
|
299
|
-
const selector = equal(m.value, 10);
|
|
300
|
-
assert.strictEqual(selector({ value: 5 }), false);
|
|
301
|
-
assert.strictEqual(selector({ value: 11 }), false);
|
|
302
|
-
});
|
|
303
|
-
|
|
304
|
-
it("works with string values", function () {
|
|
305
|
-
const selector = equal(m.name, "hello");
|
|
306
|
-
assert.strictEqual(selector({ name: "hello" }), true);
|
|
307
|
-
assert.strictEqual(selector({ name: "world" }), false);
|
|
308
|
-
});
|
|
309
|
-
|
|
310
|
-
it("uses loose equality (null == undefined)", function () {
|
|
311
|
-
const selector = equal(m.nullable, null);
|
|
312
|
-
assert.strictEqual(selector({ nullable: null }), true);
|
|
313
|
-
assert.strictEqual(selector({ nullable: undefined }), true);
|
|
314
|
-
});
|
|
315
|
-
});
|
|
316
|
-
|
|
317
|
-
describe("notEqual (loose inequality)", function () {
|
|
318
|
-
it("returns false when value equals target", function () {
|
|
319
|
-
const selector = notEqual(m.value, 10);
|
|
320
|
-
assert.strictEqual(selector({ value: 10 }), false);
|
|
321
|
-
});
|
|
322
|
-
|
|
323
|
-
it("returns true when value does not equal target", function () {
|
|
324
|
-
const selector = notEqual(m.value, 10);
|
|
325
|
-
assert.strictEqual(selector({ value: 5 }), true);
|
|
326
|
-
assert.strictEqual(selector({ value: 11 }), true);
|
|
327
|
-
});
|
|
328
|
-
|
|
329
|
-
it("works with string values", function () {
|
|
330
|
-
const selector = notEqual(m.name, "hello");
|
|
331
|
-
assert.strictEqual(selector({ name: "hello" }), false);
|
|
332
|
-
assert.strictEqual(selector({ name: "world" }), true);
|
|
333
|
-
});
|
|
334
|
-
|
|
335
|
-
it("uses loose inequality (null == undefined)", function () {
|
|
336
|
-
const selector = notEqual(m.nullable, null);
|
|
337
|
-
assert.strictEqual(selector({ nullable: null }), false);
|
|
338
|
-
assert.strictEqual(selector({ nullable: undefined }), false);
|
|
339
|
-
});
|
|
340
|
-
});
|
|
341
|
-
|
|
342
|
-
describe("strictEqual", function () {
|
|
343
|
-
it("returns true when value strictly equals target", function () {
|
|
344
|
-
const selector = strictEqual(m.value, 10);
|
|
345
|
-
assert.strictEqual(selector({ value: 10 }), true);
|
|
346
|
-
});
|
|
347
|
-
|
|
348
|
-
it("returns false when value does not strictly equal target", function () {
|
|
349
|
-
const selector = strictEqual(m.value, 10);
|
|
350
|
-
assert.strictEqual(selector({ value: 5 }), false);
|
|
351
|
-
assert.strictEqual(selector({ value: 11 }), false);
|
|
352
|
-
});
|
|
353
|
-
|
|
354
|
-
it("uses strict equality (null !== undefined)", function () {
|
|
355
|
-
const selector = strictEqual(m.nullable, null);
|
|
356
|
-
assert.strictEqual(selector({ nullable: null }), true);
|
|
357
|
-
assert.strictEqual(selector({ nullable: undefined }), false);
|
|
358
|
-
});
|
|
359
|
-
});
|
|
360
|
-
|
|
361
|
-
describe("strictNotEqual", function () {
|
|
362
|
-
it("returns false when value strictly equals target", function () {
|
|
363
|
-
const selector = strictNotEqual(m.value, 10);
|
|
364
|
-
assert.strictEqual(selector({ value: 10 }), false);
|
|
365
|
-
});
|
|
366
|
-
|
|
367
|
-
it("returns true when value does not strictly equal target", function () {
|
|
368
|
-
const selector = strictNotEqual(m.value, 10);
|
|
369
|
-
assert.strictEqual(selector({ value: 5 }), true);
|
|
370
|
-
assert.strictEqual(selector({ value: 11 }), true);
|
|
371
|
-
});
|
|
372
|
-
|
|
373
|
-
it("uses strict inequality (null !== undefined)", function () {
|
|
374
|
-
const selector = strictNotEqual(m.nullable, null);
|
|
375
|
-
assert.strictEqual(selector({ nullable: null }), false);
|
|
376
|
-
assert.strictEqual(selector({ nullable: undefined }), true);
|
|
377
|
-
});
|
|
378
|
-
});
|
|
379
|
-
});
|
|
1
|
+
import {
|
|
2
|
+
truthy,
|
|
3
|
+
falsy,
|
|
4
|
+
isTrue,
|
|
5
|
+
isFalse,
|
|
6
|
+
hasValue,
|
|
7
|
+
isEmpty,
|
|
8
|
+
isNonEmpty,
|
|
9
|
+
lessThan,
|
|
10
|
+
lessThanOrEqual,
|
|
11
|
+
greaterThan,
|
|
12
|
+
greaterThanOrEqual,
|
|
13
|
+
equal,
|
|
14
|
+
notEqual,
|
|
15
|
+
strictEqual,
|
|
16
|
+
strictNotEqual,
|
|
17
|
+
} from "./exprHelpers";
|
|
18
|
+
import assert from "assert";
|
|
19
|
+
import { createAccessorModelProxy } from "../data/createAccessorModelProxy";
|
|
20
|
+
|
|
21
|
+
interface Model {
|
|
22
|
+
value: number;
|
|
23
|
+
name: string;
|
|
24
|
+
flag: boolean;
|
|
25
|
+
nullable: string | null | undefined;
|
|
26
|
+
items: string[];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
describe("exprHelpers", function () {
|
|
30
|
+
const m = createAccessorModelProxy<Model>();
|
|
31
|
+
|
|
32
|
+
describe("truthy", function () {
|
|
33
|
+
it("returns true for truthy values", function () {
|
|
34
|
+
const selector = truthy(m.value);
|
|
35
|
+
assert.strictEqual(selector({ value: 1 }), true);
|
|
36
|
+
assert.strictEqual(selector({ value: 100 }), true);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it("returns false for falsy values", function () {
|
|
40
|
+
const selector = truthy(m.value);
|
|
41
|
+
assert.strictEqual(selector({ value: 0 }), false);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it("returns true for non-empty strings", function () {
|
|
45
|
+
const selector = truthy(m.name);
|
|
46
|
+
assert.strictEqual(selector({ name: "hello" }), true);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it("returns false for empty strings", function () {
|
|
50
|
+
const selector = truthy(m.name);
|
|
51
|
+
assert.strictEqual(selector({ name: "" }), false);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it("returns false for null", function () {
|
|
55
|
+
const selector = truthy(m.nullable);
|
|
56
|
+
assert.strictEqual(selector({ nullable: null }), false);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
describe("falsy", function () {
|
|
61
|
+
it("returns false for truthy values", function () {
|
|
62
|
+
const selector = falsy(m.flag);
|
|
63
|
+
assert.strictEqual(selector({ flag: true }), false);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it("returns true for falsy values", function () {
|
|
67
|
+
const selector = falsy(m.flag);
|
|
68
|
+
assert.strictEqual(selector({ flag: false }), true);
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it("returns true for null", function () {
|
|
72
|
+
const selector = falsy(m.nullable);
|
|
73
|
+
assert.strictEqual(selector({ nullable: null }), true);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it("returns true for zero", function () {
|
|
77
|
+
const selector = falsy(m.value);
|
|
78
|
+
assert.strictEqual(selector({ value: 0 }), true);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it("returns true for empty string", function () {
|
|
82
|
+
const selector = falsy(m.name);
|
|
83
|
+
assert.strictEqual(selector({ name: "" }), true);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
describe("isTrue", function () {
|
|
88
|
+
it("returns true only for strictly true", function () {
|
|
89
|
+
const selector = isTrue(m.flag);
|
|
90
|
+
assert.strictEqual(selector({ flag: true }), true);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it("returns false for truthy values that are not true", function () {
|
|
94
|
+
const selector = isTrue(m.value);
|
|
95
|
+
assert.strictEqual(selector({ value: 1 }), false);
|
|
96
|
+
assert.strictEqual(selector({ value: "true" }), false);
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it("returns false for false", function () {
|
|
100
|
+
const selector = isTrue(m.flag);
|
|
101
|
+
assert.strictEqual(selector({ flag: false }), false);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
describe("isFalse", function () {
|
|
106
|
+
it("returns true only for strictly false", function () {
|
|
107
|
+
const selector = isFalse(m.flag);
|
|
108
|
+
assert.strictEqual(selector({ flag: false }), true);
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
it("returns false for falsy values that are not false", function () {
|
|
112
|
+
const selector = isFalse(m.value);
|
|
113
|
+
assert.strictEqual(selector({ value: 0 }), false);
|
|
114
|
+
assert.strictEqual(selector({ value: null }), false);
|
|
115
|
+
assert.strictEqual(selector({ value: "" }), false);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
it("returns false for true", function () {
|
|
119
|
+
const selector = isFalse(m.flag);
|
|
120
|
+
assert.strictEqual(selector({ flag: true }), false);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
describe("hasValue", function () {
|
|
125
|
+
it("returns true for defined values", function () {
|
|
126
|
+
const selector = hasValue(m.value);
|
|
127
|
+
assert.strictEqual(selector({ value: 0 }), true);
|
|
128
|
+
assert.strictEqual(selector({ value: 1 }), true);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
it("returns true for empty string", function () {
|
|
132
|
+
const selector = hasValue(m.name);
|
|
133
|
+
assert.strictEqual(selector({ name: "" }), true);
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
it("returns true for false", function () {
|
|
137
|
+
const selector = hasValue(m.flag);
|
|
138
|
+
assert.strictEqual(selector({ flag: false }), true);
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
it("returns false for null", function () {
|
|
142
|
+
const selector = hasValue(m.nullable);
|
|
143
|
+
assert.strictEqual(selector({ nullable: null }), false);
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
it("returns false for undefined", function () {
|
|
147
|
+
const selector = hasValue(m.nullable);
|
|
148
|
+
assert.strictEqual(selector({ nullable: undefined }), false);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
describe("isEmpty", function () {
|
|
153
|
+
it("returns true for empty string", function () {
|
|
154
|
+
const selector = isEmpty(m.name);
|
|
155
|
+
assert.strictEqual(selector({ name: "" }), true);
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
it("returns false for non-empty string", function () {
|
|
159
|
+
const selector = isEmpty(m.name);
|
|
160
|
+
assert.strictEqual(selector({ name: "hello" }), false);
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
it("returns true for empty array", function () {
|
|
164
|
+
const selector = isEmpty(m.items);
|
|
165
|
+
assert.strictEqual(selector({ items: [] }), true);
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
it("returns false for non-empty array", function () {
|
|
169
|
+
const selector = isEmpty(m.items);
|
|
170
|
+
assert.strictEqual(selector({ items: ["a", "b"] }), false);
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
it("returns true for null", function () {
|
|
174
|
+
const selector = isEmpty(m.nullable);
|
|
175
|
+
assert.strictEqual(selector({ nullable: null }), true);
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
it("returns true for undefined", function () {
|
|
179
|
+
const selector = isEmpty(m.nullable);
|
|
180
|
+
assert.strictEqual(selector({ nullable: undefined }), true);
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
describe("isNonEmpty", function () {
|
|
185
|
+
it("returns false for empty string", function () {
|
|
186
|
+
const selector = isNonEmpty(m.name);
|
|
187
|
+
assert.strictEqual(selector({ name: "" }), false);
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
it("returns true for non-empty string", function () {
|
|
191
|
+
const selector = isNonEmpty(m.name);
|
|
192
|
+
assert.strictEqual(selector({ name: "hello" }), true);
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
it("returns false for empty array", function () {
|
|
196
|
+
const selector = isNonEmpty(m.items);
|
|
197
|
+
assert.strictEqual(selector({ items: [] }), false);
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
it("returns true for non-empty array", function () {
|
|
201
|
+
const selector = isNonEmpty(m.items);
|
|
202
|
+
assert.strictEqual(selector({ items: ["a", "b"] }), true);
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
it("returns false for null", function () {
|
|
206
|
+
const selector = isNonEmpty(m.nullable);
|
|
207
|
+
assert.strictEqual(selector({ nullable: null }), false);
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
it("returns false for undefined", function () {
|
|
211
|
+
const selector = isNonEmpty(m.nullable);
|
|
212
|
+
assert.strictEqual(selector({ nullable: undefined }), false);
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
describe("lessThan", function () {
|
|
217
|
+
it("returns true when value is less than target", function () {
|
|
218
|
+
const selector = lessThan(m.value, 10);
|
|
219
|
+
assert.strictEqual(selector({ value: 5 }), true);
|
|
220
|
+
assert.strictEqual(selector({ value: 9 }), true);
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
it("returns false when value is equal to target", function () {
|
|
224
|
+
const selector = lessThan(m.value, 10);
|
|
225
|
+
assert.strictEqual(selector({ value: 10 }), false);
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
it("returns false when value is greater than target", function () {
|
|
229
|
+
const selector = lessThan(m.value, 10);
|
|
230
|
+
assert.strictEqual(selector({ value: 11 }), false);
|
|
231
|
+
assert.strictEqual(selector({ value: 100 }), false);
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
describe("lessThanOrEqual", function () {
|
|
236
|
+
it("returns true when value is less than target", function () {
|
|
237
|
+
const selector = lessThanOrEqual(m.value, 10);
|
|
238
|
+
assert.strictEqual(selector({ value: 5 }), true);
|
|
239
|
+
assert.strictEqual(selector({ value: 9 }), true);
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
it("returns true when value is equal to target", function () {
|
|
243
|
+
const selector = lessThanOrEqual(m.value, 10);
|
|
244
|
+
assert.strictEqual(selector({ value: 10 }), true);
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
it("returns false when value is greater than target", function () {
|
|
248
|
+
const selector = lessThanOrEqual(m.value, 10);
|
|
249
|
+
assert.strictEqual(selector({ value: 11 }), false);
|
|
250
|
+
assert.strictEqual(selector({ value: 100 }), false);
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
describe("greaterThan", function () {
|
|
255
|
+
it("returns true when value is greater than target", function () {
|
|
256
|
+
const selector = greaterThan(m.value, 10);
|
|
257
|
+
assert.strictEqual(selector({ value: 11 }), true);
|
|
258
|
+
assert.strictEqual(selector({ value: 100 }), true);
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
it("returns false when value is equal to target", function () {
|
|
262
|
+
const selector = greaterThan(m.value, 10);
|
|
263
|
+
assert.strictEqual(selector({ value: 10 }), false);
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
it("returns false when value is less than target", function () {
|
|
267
|
+
const selector = greaterThan(m.value, 10);
|
|
268
|
+
assert.strictEqual(selector({ value: 5 }), false);
|
|
269
|
+
assert.strictEqual(selector({ value: 9 }), false);
|
|
270
|
+
});
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
describe("greaterThanOrEqual", function () {
|
|
274
|
+
it("returns true when value is greater than target", function () {
|
|
275
|
+
const selector = greaterThanOrEqual(m.value, 10);
|
|
276
|
+
assert.strictEqual(selector({ value: 11 }), true);
|
|
277
|
+
assert.strictEqual(selector({ value: 100 }), true);
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
it("returns true when value is equal to target", function () {
|
|
281
|
+
const selector = greaterThanOrEqual(m.value, 10);
|
|
282
|
+
assert.strictEqual(selector({ value: 10 }), true);
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
it("returns false when value is less than target", function () {
|
|
286
|
+
const selector = greaterThanOrEqual(m.value, 10);
|
|
287
|
+
assert.strictEqual(selector({ value: 5 }), false);
|
|
288
|
+
assert.strictEqual(selector({ value: 9 }), false);
|
|
289
|
+
});
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
describe("equal (loose equality)", function () {
|
|
293
|
+
it("returns true when value equals target", function () {
|
|
294
|
+
const selector = equal(m.value, 10);
|
|
295
|
+
assert.strictEqual(selector({ value: 10 }), true);
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
it("returns false when value does not equal target", function () {
|
|
299
|
+
const selector = equal(m.value, 10);
|
|
300
|
+
assert.strictEqual(selector({ value: 5 }), false);
|
|
301
|
+
assert.strictEqual(selector({ value: 11 }), false);
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
it("works with string values", function () {
|
|
305
|
+
const selector = equal(m.name, "hello");
|
|
306
|
+
assert.strictEqual(selector({ name: "hello" }), true);
|
|
307
|
+
assert.strictEqual(selector({ name: "world" }), false);
|
|
308
|
+
});
|
|
309
|
+
|
|
310
|
+
it("uses loose equality (null == undefined)", function () {
|
|
311
|
+
const selector = equal(m.nullable, null);
|
|
312
|
+
assert.strictEqual(selector({ nullable: null }), true);
|
|
313
|
+
assert.strictEqual(selector({ nullable: undefined }), true);
|
|
314
|
+
});
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
describe("notEqual (loose inequality)", function () {
|
|
318
|
+
it("returns false when value equals target", function () {
|
|
319
|
+
const selector = notEqual(m.value, 10);
|
|
320
|
+
assert.strictEqual(selector({ value: 10 }), false);
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
it("returns true when value does not equal target", function () {
|
|
324
|
+
const selector = notEqual(m.value, 10);
|
|
325
|
+
assert.strictEqual(selector({ value: 5 }), true);
|
|
326
|
+
assert.strictEqual(selector({ value: 11 }), true);
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
it("works with string values", function () {
|
|
330
|
+
const selector = notEqual(m.name, "hello");
|
|
331
|
+
assert.strictEqual(selector({ name: "hello" }), false);
|
|
332
|
+
assert.strictEqual(selector({ name: "world" }), true);
|
|
333
|
+
});
|
|
334
|
+
|
|
335
|
+
it("uses loose inequality (null == undefined)", function () {
|
|
336
|
+
const selector = notEqual(m.nullable, null);
|
|
337
|
+
assert.strictEqual(selector({ nullable: null }), false);
|
|
338
|
+
assert.strictEqual(selector({ nullable: undefined }), false);
|
|
339
|
+
});
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
describe("strictEqual", function () {
|
|
343
|
+
it("returns true when value strictly equals target", function () {
|
|
344
|
+
const selector = strictEqual(m.value, 10);
|
|
345
|
+
assert.strictEqual(selector({ value: 10 }), true);
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
it("returns false when value does not strictly equal target", function () {
|
|
349
|
+
const selector = strictEqual(m.value, 10);
|
|
350
|
+
assert.strictEqual(selector({ value: 5 }), false);
|
|
351
|
+
assert.strictEqual(selector({ value: 11 }), false);
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
it("uses strict equality (null !== undefined)", function () {
|
|
355
|
+
const selector = strictEqual(m.nullable, null);
|
|
356
|
+
assert.strictEqual(selector({ nullable: null }), true);
|
|
357
|
+
assert.strictEqual(selector({ nullable: undefined }), false);
|
|
358
|
+
});
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
describe("strictNotEqual", function () {
|
|
362
|
+
it("returns false when value strictly equals target", function () {
|
|
363
|
+
const selector = strictNotEqual(m.value, 10);
|
|
364
|
+
assert.strictEqual(selector({ value: 10 }), false);
|
|
365
|
+
});
|
|
366
|
+
|
|
367
|
+
it("returns true when value does not strictly equal target", function () {
|
|
368
|
+
const selector = strictNotEqual(m.value, 10);
|
|
369
|
+
assert.strictEqual(selector({ value: 5 }), true);
|
|
370
|
+
assert.strictEqual(selector({ value: 11 }), true);
|
|
371
|
+
});
|
|
372
|
+
|
|
373
|
+
it("uses strict inequality (null !== undefined)", function () {
|
|
374
|
+
const selector = strictNotEqual(m.nullable, null);
|
|
375
|
+
assert.strictEqual(selector({ nullable: null }), false);
|
|
376
|
+
assert.strictEqual(selector({ nullable: undefined }), true);
|
|
377
|
+
});
|
|
378
|
+
});
|
|
379
|
+
});
|