@itwin/components-react 4.13.1 → 4.13.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.
- package/CHANGELOG.md +13 -1
- package/lib/cjs/components-react/UiComponents.js +1 -1
- package/lib/cjs/components-react/UiComponents.js.map +1 -1
- package/lib/cjs/components-react/common/DateUtils.js.map +1 -1
- package/lib/cjs/components-react/common/HighlightedText.js.map +1 -1
- package/lib/cjs/components-react/common/ImageRenderer.js +1 -1
- package/lib/cjs/components-react/common/ImageRenderer.js.map +1 -1
- package/lib/cjs/components-react/common/Links.js.map +1 -1
- package/lib/cjs/components-react/common/UseAsyncValue.js.map +1 -1
- package/lib/cjs/components-react/common/UseContextWithMandatoryProvider.js.map +1 -1
- package/lib/cjs/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
- package/lib/cjs/components-react/common/UseElementsScrollStorage.js.map +1 -1
- package/lib/cjs/components-react/common/countMatchesInString.js.map +1 -1
- package/lib/cjs/components-react/common/selection/SelectionHandler.js.map +1 -1
- package/lib/cjs/components-react/common/selection/SelectionModes.js +2 -2
- package/lib/cjs/components-react/common/selection/SelectionModes.js.map +1 -1
- package/lib/cjs/components-react/converters/BooleanTypeConverter.js +1 -1
- package/lib/cjs/components-react/converters/BooleanTypeConverter.js.map +1 -1
- package/lib/cjs/components-react/converters/CompositeTypeConverter.js.map +1 -1
- package/lib/cjs/components-react/converters/DateTimeTypeConverter.js.map +1 -1
- package/lib/cjs/components-react/converters/EnumTypeConverter.js.map +1 -1
- package/lib/cjs/components-react/converters/NumericTypeConverter.js.map +1 -1
- package/lib/cjs/components-react/converters/PointTypeConverter.js.map +1 -1
- package/lib/cjs/components-react/converters/TypeConverterManager.js +1 -1
- package/lib/cjs/components-react/converters/TypeConverterManager.js.map +1 -1
- package/lib/cjs/components-react/datepicker/DateField.js.map +1 -1
- package/lib/cjs/components-react/datepicker/DatePicker.js.map +1 -1
- package/lib/cjs/components-react/datepicker/DatePickerPopupButton.js.map +1 -1
- package/lib/cjs/components-react/datepicker/IntlFormatter.js.map +1 -1
- package/lib/cjs/components-react/datepicker/TimeField.js.map +1 -1
- package/lib/cjs/components-react/editors/BooleanEditor.js.map +1 -1
- package/lib/cjs/components-react/editors/CustomNumberEditor.js.map +1 -1
- package/lib/cjs/components-react/editors/DateTimeEditor.js.map +1 -1
- package/lib/cjs/components-react/editors/EditorContainer.js.map +1 -1
- package/lib/cjs/components-react/editors/EnumButtonGroupEditor.js.map +1 -1
- package/lib/cjs/components-react/editors/EnumEditor.js.map +1 -1
- package/lib/cjs/components-react/editors/IconEditor.js.map +1 -1
- package/lib/cjs/components-react/editors/ImageCheckBoxEditor.js.map +1 -1
- package/lib/cjs/components-react/editors/NumericInputEditor.js.map +1 -1
- package/lib/cjs/components-react/editors/PopupButton.js.map +1 -1
- package/lib/cjs/components-react/editors/PropertyEditorManager.js +1 -1
- package/lib/cjs/components-react/editors/PropertyEditorManager.js.map +1 -1
- package/lib/cjs/components-react/editors/SliderEditor.js.map +1 -1
- package/lib/cjs/components-react/editors/TextEditor.js.map +1 -1
- package/lib/cjs/components-react/editors/TextareaEditor.js.map +1 -1
- package/lib/cjs/components-react/editors/ToggleEditor.js.map +1 -1
- package/lib/cjs/components-react/favorite/FavoritePropertiesRenderer.js.map +1 -1
- package/lib/cjs/components-react/favorite/FavoritePropertyList.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRangeValue.js +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRangeValue.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderState.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/Operators.js +2 -2
- package/lib/cjs/components-react/filter-builder/Operators.js.map +1 -1
- package/lib/cjs/components-react/filtering/FilteringInput.js +1 -1
- package/lib/cjs/components-react/filtering/FilteringInput.js.map +1 -1
- package/lib/cjs/components-react/filtering/ResultSelector.js.map +1 -1
- package/lib/cjs/components-react/iconpicker/IconPickerButton.js +1 -1
- package/lib/cjs/components-react/iconpicker/IconPickerButton.js.map +1 -1
- package/lib/cjs/components-react/inputs/ParsedInput.js.map +1 -1
- package/lib/cjs/components-react/properties/LinkHandler.js.map +1 -1
- package/lib/cjs/components-react/properties/ValueRendererManager.js +1 -1
- package/lib/cjs/components-react/properties/ValueRendererManager.js.map +1 -1
- package/lib/cjs/components-react/properties/renderers/CommonPropertyRenderer.js.map +1 -1
- package/lib/cjs/components-react/properties/renderers/PropertyGridColumns.js.map +1 -1
- package/lib/cjs/components-react/properties/renderers/PropertyRenderer.js.map +1 -1
- package/lib/cjs/components-react/properties/renderers/value/ArrayPropertyValueRenderer.js.map +1 -1
- package/lib/cjs/components-react/properties/renderers/value/StructPropertyValueRenderer.js.map +1 -1
- package/lib/cjs/components-react/properties/renderers/value/UrlPropertyValueRenderer.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/PropertyCategoryRendererManager.js +1 -1
- package/lib/cjs/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/SimplePropertyDataProvider.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js +1 -1
- package/lib/cjs/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/component/FlatItemNestedBorderWrapper.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js +1 -1
- package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js +1 -1
- package/lib/cjs/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/dataproviders/filterers/LabelPropertyDataFilterer.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/dataproviders/filterers/PropertyCategoryLabelFilterer.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/dataproviders/filterers/PropertyDataFiltererBase.js +1 -1
- package/lib/cjs/components-react/propertygrid/dataproviders/filterers/PropertyDataFiltererBase.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridModel.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelSource.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedArrayProperty.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedStructProperty.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
- package/lib/cjs/components-react/toolbar/InternalToolbarComponent.js +3 -3
- package/lib/cjs/components-react/toolbar/InternalToolbarComponent.js.map +1 -1
- package/lib/cjs/components-react/toolbar/Items.js.map +1 -1
- package/lib/cjs/components-react/toolbar/Overflow.js.map +1 -1
- package/lib/cjs/components-react/toolbar/OverflowPanel.js.map +1 -1
- package/lib/cjs/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
- package/lib/cjs/components-react/toolbar/PopupItemsPanel.js.map +1 -1
- package/lib/cjs/components-react/toolbar/useConditionalSynchedItems.js.map +1 -1
- package/lib/cjs/components-react/toolbar/utilities/Direction.js +4 -4
- package/lib/cjs/components-react/toolbar/utilities/Direction.js.map +1 -1
- package/lib/cjs/components-react/tree/HighlightingEngine.js +1 -1
- package/lib/cjs/components-react/tree/HighlightingEngine.js.map +1 -1
- package/lib/cjs/components-react/tree/SimpleTreeDataProvider.js.map +1 -1
- package/lib/cjs/components-react/tree/TreeComponentTestId.js +1 -1
- package/lib/cjs/components-react/tree/TreeComponentTestId.js.map +1 -1
- package/lib/cjs/components-react/tree/controlled/TreeEventDispatcher.js.map +1 -1
- package/lib/cjs/components-react/tree/controlled/TreeEventHandler.js.map +1 -1
- package/lib/cjs/components-react/tree/controlled/TreeModel.js.map +1 -1
- package/lib/cjs/components-react/tree/controlled/TreeModelSource.js.map +1 -1
- package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
- package/lib/cjs/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
- package/lib/cjs/components-react/tree/controlled/component/NodeContent.js.map +1 -1
- package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
- package/lib/cjs/components-react/tree/controlled/internal/SparseTree.js.map +1 -1
- package/lib/cjs/components-react/tree/controlled/internal/TreeModelMutator.js.map +1 -1
- package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
- package/lib/cjs/components-react/useTranslation.js.map +1 -1
- package/lib/esm/components-react/UiComponents.js +1 -2
- package/lib/esm/components-react/UiComponents.js.map +1 -1
- package/lib/esm/components-react/common/DateUtils.js.map +1 -1
- package/lib/esm/components-react/common/HighlightedText.js.map +1 -1
- package/lib/esm/components-react/common/ImageRenderer.js +1 -2
- package/lib/esm/components-react/common/ImageRenderer.js.map +1 -1
- package/lib/esm/components-react/common/Links.js.map +1 -1
- package/lib/esm/components-react/common/UseAsyncValue.js.map +1 -1
- package/lib/esm/components-react/common/UseContextWithMandatoryProvider.js.map +1 -1
- package/lib/esm/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
- package/lib/esm/components-react/common/UseElementsScrollStorage.js.map +1 -1
- package/lib/esm/components-react/common/countMatchesInString.js.map +1 -1
- package/lib/esm/components-react/common/selection/SelectionHandler.js.map +1 -1
- package/lib/esm/components-react/converters/BooleanTypeConverter.js +1 -2
- package/lib/esm/components-react/converters/BooleanTypeConverter.js.map +1 -1
- package/lib/esm/components-react/converters/CompositeTypeConverter.js.map +1 -1
- package/lib/esm/components-react/converters/DateTimeTypeConverter.js.map +1 -1
- package/lib/esm/components-react/converters/EnumTypeConverter.js.map +1 -1
- package/lib/esm/components-react/converters/NumericTypeConverter.js.map +1 -1
- package/lib/esm/components-react/converters/PointTypeConverter.js.map +1 -1
- package/lib/esm/components-react/converters/TypeConverterManager.js +1 -2
- package/lib/esm/components-react/converters/TypeConverterManager.js.map +1 -1
- package/lib/esm/components-react/datepicker/DateField.js.map +1 -1
- package/lib/esm/components-react/datepicker/DatePicker.js.map +1 -1
- package/lib/esm/components-react/datepicker/DatePickerPopupButton.js.map +1 -1
- package/lib/esm/components-react/datepicker/IntlFormatter.js.map +1 -1
- package/lib/esm/components-react/datepicker/TimeField.js.map +1 -1
- package/lib/esm/components-react/editors/BooleanEditor.js.map +1 -1
- package/lib/esm/components-react/editors/CustomNumberEditor.js.map +1 -1
- package/lib/esm/components-react/editors/DateTimeEditor.js.map +1 -1
- package/lib/esm/components-react/editors/EditorContainer.js.map +1 -1
- package/lib/esm/components-react/editors/EnumButtonGroupEditor.js.map +1 -1
- package/lib/esm/components-react/editors/EnumEditor.js.map +1 -1
- package/lib/esm/components-react/editors/IconEditor.js.map +1 -1
- package/lib/esm/components-react/editors/ImageCheckBoxEditor.js.map +1 -1
- package/lib/esm/components-react/editors/NumericInputEditor.js.map +1 -1
- package/lib/esm/components-react/editors/PopupButton.js.map +1 -1
- package/lib/esm/components-react/editors/PropertyEditorManager.js +1 -2
- package/lib/esm/components-react/editors/PropertyEditorManager.js.map +1 -1
- package/lib/esm/components-react/editors/SliderEditor.js.map +1 -1
- package/lib/esm/components-react/editors/TextEditor.js.map +1 -1
- package/lib/esm/components-react/editors/TextareaEditor.js.map +1 -1
- package/lib/esm/components-react/editors/ToggleEditor.js.map +1 -1
- package/lib/esm/components-react/favorite/FavoritePropertiesRenderer.js.map +1 -1
- package/lib/esm/components-react/favorite/FavoritePropertyList.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRangeValue.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderState.js.map +1 -1
- package/lib/esm/components-react/filter-builder/Operators.js.map +1 -1
- package/lib/esm/components-react/filtering/FilteringInput.js.map +1 -1
- package/lib/esm/components-react/filtering/ResultSelector.js.map +1 -1
- package/lib/esm/components-react/iconpicker/IconPickerButton.js +1 -2
- package/lib/esm/components-react/iconpicker/IconPickerButton.js.map +1 -1
- package/lib/esm/components-react/inputs/ParsedInput.js.map +1 -1
- package/lib/esm/components-react/properties/LinkHandler.js.map +1 -1
- package/lib/esm/components-react/properties/ValueRendererManager.js.map +1 -1
- package/lib/esm/components-react/properties/renderers/CommonPropertyRenderer.js.map +1 -1
- package/lib/esm/components-react/properties/renderers/PropertyGridColumns.js.map +1 -1
- package/lib/esm/components-react/properties/renderers/PropertyRenderer.js.map +1 -1
- package/lib/esm/components-react/properties/renderers/value/ArrayPropertyValueRenderer.js.map +1 -1
- package/lib/esm/components-react/properties/renderers/value/StructPropertyValueRenderer.js.map +1 -1
- package/lib/esm/components-react/properties/renderers/value/UrlPropertyValueRenderer.js.map +1 -1
- package/lib/esm/components-react/propertygrid/PropertyCategoryRendererManager.js +1 -2
- package/lib/esm/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
- package/lib/esm/components-react/propertygrid/SimplePropertyDataProvider.js.map +1 -1
- package/lib/esm/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js +1 -2
- package/lib/esm/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
- package/lib/esm/components-react/propertygrid/component/FlatItemNestedBorderWrapper.js.map +1 -1
- package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js +1 -2
- package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
- package/lib/esm/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js.map +1 -1
- package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
- package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js.map +1 -1
- package/lib/esm/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
- package/lib/esm/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
- package/lib/esm/components-react/propertygrid/dataproviders/filterers/LabelPropertyDataFilterer.js.map +1 -1
- package/lib/esm/components-react/propertygrid/dataproviders/filterers/PropertyCategoryLabelFilterer.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/PropertyGridModel.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/PropertyGridModelSource.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedArrayProperty.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedStructProperty.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
- package/lib/esm/components-react/toolbar/InternalToolbarComponent.js +1 -2
- package/lib/esm/components-react/toolbar/InternalToolbarComponent.js.map +1 -1
- package/lib/esm/components-react/toolbar/Items.js.map +1 -1
- package/lib/esm/components-react/toolbar/Overflow.js.map +1 -1
- package/lib/esm/components-react/toolbar/OverflowPanel.js.map +1 -1
- package/lib/esm/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
- package/lib/esm/components-react/toolbar/PopupItemsPanel.js.map +1 -1
- package/lib/esm/components-react/toolbar/useConditionalSynchedItems.js.map +1 -1
- package/lib/esm/components-react/toolbar/utilities/Direction.js +2 -4
- package/lib/esm/components-react/toolbar/utilities/Direction.js.map +1 -1
- package/lib/esm/components-react/tree/HighlightingEngine.js +1 -2
- package/lib/esm/components-react/tree/HighlightingEngine.js.map +1 -1
- package/lib/esm/components-react/tree/SimpleTreeDataProvider.js.map +1 -1
- package/lib/esm/components-react/tree/controlled/TreeEventDispatcher.js.map +1 -1
- package/lib/esm/components-react/tree/controlled/TreeEventHandler.js.map +1 -1
- package/lib/esm/components-react/tree/controlled/TreeModel.js.map +1 -1
- package/lib/esm/components-react/tree/controlled/TreeModelSource.js.map +1 -1
- package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
- package/lib/esm/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
- package/lib/esm/components-react/tree/controlled/component/NodeContent.js.map +1 -1
- package/lib/esm/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
- package/lib/esm/components-react/tree/controlled/internal/SparseTree.js.map +1 -1
- package/lib/esm/components-react/tree/controlled/internal/TreeModelMutator.js.map +1 -1
- package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
- package/lib/esm/components-react/useTranslation.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UseAsyncValue.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseAsyncValue.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAI,KAAyB;IACxD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC9C,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"UseAsyncValue.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseAsyncValue.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAI,KAAyB;IACxD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC9C,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;gBACzC,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC;aAClD,CAAC,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAC1C,CAAC;QAED,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO;IACT,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Common\n */\n\nimport * as React from \"react\";\nimport { from } from \"rxjs\";\nimport { isPromiseLike } from \"@itwin/core-react\";\n\n/**\n * Custom hook for working with possibly async values.\n * @public\n */\nexport function useAsyncValue<T>(value: T | PromiseLike<T>): T | undefined {\n const [result, setResult] = React.useState(() => {\n if (isPromiseLike(value)) {\n return undefined;\n }\n return value;\n });\n\n React.useEffect(() => {\n if (isPromiseLike(value)) {\n const subscription = from(value).subscribe({\n next: (resolvedValue) => setResult(resolvedValue),\n });\n return () => subscription.unsubscribe();\n }\n\n setResult(value);\n return;\n }, [value]);\n\n return result;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UseContextWithMandatoryProvider.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseContextWithMandatoryProvider.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,gBAAgB;AAChB,MAAM,UAAU,kCAAkC,CAChD,WAAmB;IAMnB,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAI,SAAqB,CAAC,CAAC;IAC9D,SAAS,6BAA6B,CACpC,kBAA0C;QAE1C,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxC,wBAAwB;QACxB,IAAI,KAAK,KAAK,SAAS,EAAE;
|
|
1
|
+
{"version":3,"file":"UseContextWithMandatoryProvider.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseContextWithMandatoryProvider.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,gBAAgB;AAChB,MAAM,UAAU,kCAAkC,CAChD,WAAmB;IAMnB,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAI,SAAqB,CAAC,CAAC;IAC9D,SAAS,6BAA6B,CACpC,kBAA0C;QAE1C,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxC,wBAAwB;QACxB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,mDAAmD;YACnD,MAAM,IAAI,OAAO,CACf,YAAY,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAC/C,IAAI,kBAAkB,CACpB,kBAAkB,CACnB,iCAAiC,WAAW,aAAa,CAC3D,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;AAC7E,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { UiError } from \"@itwin/appui-abstract\";\nimport { getObjectClassName } from \"@itwin/core-react\";\nimport { UiComponents } from \"../UiComponents\";\nimport React from \"react\";\n\n/** @internal */\nexport function createContextWithMandatoryProvider<T>(\n contextName: string\n): [\n React.ProviderExoticComponent<React.ProviderProps<T>>,\n React.ExoticComponent<React.ConsumerProps<T>>,\n <P>(component: React.ComponentType<P>) => T\n] {\n const context = React.createContext<T>(undefined as any as T);\n function useContextWithoutDefaultValue<P>(\n ConsumingComponent: React.ComponentType<P>\n ) {\n const value = React.useContext(context);\n /* istanbul ignore if */\n if (value === undefined) {\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(\n UiComponents.loggerCategory(ConsumingComponent),\n `'${getObjectClassName(\n ConsumingComponent\n )}' expects to be wrapped by a '${contextName}' provider.`\n );\n }\n return value;\n }\n return [context.Provider, context.Consumer, useContextWithoutDefaultValue];\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UseDebouncedAsyncValue.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseDebouncedAsyncValue.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,iBAAuD;IAEvD,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,qBAAqB,EAAW,CAAC,CAAC;IAEzE,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAGhD;QACD,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,iBAAiB,EAAE;
|
|
1
|
+
{"version":3,"file":"UseDebouncedAsyncValue.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseDebouncedAsyncValue.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,iBAAuD;IAEvD,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,qBAAqB,EAAW,CAAC,CAAC;IAEzE,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAGhD;QACD,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,GAAG,IAAI;YACP,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC,CAAC;QACJ,yFAAyF;QACzF,MAAM,YAAY,GAAG,KAAK,CAAC,iBAAiB,CAAC;aAC1C,IAAI,CACH,KAAK,CAAC;YACJ,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,mBAAmB,EAAE,IAAI;SAC1B,CAAC,EACF,oBAAoB,CAAC,SAAS,CAAC,CAChC;aACA,SAAS,CAAC;YACT,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;gBACb,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACrE,CAAC;YACD,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;gBACb,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAClB,GAAG,IAAI;oBACP,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE;oBACtC,UAAU,EAAE,KAAK;iBAClB,CAAC,CAAC,CAAC;YACN,CAAC;SACF,CAAC,CAAC;QAEL,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC;IAEnC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACvC,CAAC;AAOD,SAAS,aAAa,CACpB,GAA2B;IAE3B,OAAO,GAAG,KAAK,SAAS,IAAK,GAAmB,CAAC,QAAQ,CAAC;AAC5D,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Common\n */\n\nimport { useEffect, useState } from \"react\";\nimport { defer, share } from \"rxjs\";\nimport {\n scheduleSubscription,\n SubscriptionScheduler,\n} from \"./SubscriptionScheduler\";\n\n/**\n * Custom hook for working with promise values.\n * Promises are debounced using trailing and leading edge.\n * The first promise will always be executed.\n * Any promises following the first while it is executing will be scheduled (and unscheduled), leaving only the last promise to be resolved.\n * Once the first promise finishes resolving, the last passed promise starts resolving.\n * @throws if/when `valueToBeResolved` promise is rejected. The error is thrown in the React's render loop, so it can be caught using an error boundary.\n * @beta\n */\nexport function useDebouncedAsyncValue<TReturn>(\n valueToBeResolved: undefined | (() => Promise<TReturn>)\n) {\n const [scheduler] = useState(() => new SubscriptionScheduler<TReturn>());\n\n const [{ result, inProgress }, setState] = useState<{\n result: TReturn | ErrorResult | undefined;\n inProgress: boolean;\n }>({\n result: undefined,\n inProgress: false,\n });\n\n useEffect(() => {\n if (!valueToBeResolved) {\n setState((prev) => ({ ...prev, result: undefined, inProgress: false }));\n return;\n }\n\n setState((prev) => ({\n ...prev,\n inProgress: true,\n }));\n // schedule and subscribe to the observable emitting value from valueToBeResolved promise\n const subscription = defer(valueToBeResolved)\n .pipe(\n share({\n resetOnError: false,\n resetOnComplete: false,\n resetOnRefCountZero: true,\n }),\n scheduleSubscription(scheduler)\n )\n .subscribe({\n next: (data) => {\n setState((prev) => ({ ...prev, result: data, inProgress: false }));\n },\n error: (err) => {\n setState((prev) => ({\n ...prev,\n result: { error: err, hasError: true },\n inProgress: false,\n }));\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [valueToBeResolved, scheduler]);\n\n if (isErrorResult(result)) {\n throw result.error ?? new Error(\"Exception in `useDebouncedAsyncValue`\");\n }\n\n return { value: result, inProgress };\n}\n\ninterface ErrorResult {\n error: Error | undefined;\n hasError: boolean;\n}\n\nfunction isErrorResult<TResult>(\n obj?: TResult | ErrorResult\n): obj is ErrorResult {\n return obj !== undefined && (obj as ErrorResult).hasError;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UseElementsScrollStorage.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseElementsScrollStorage.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAGhG,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,iBAAyB;IAMzB,MAAM,GAAG,GAAG,MAAM,CAAI,IAAI,CAAC,CAAC;IAC5B,MAAM,SAAS,GAAG,MAAM,CAAW,EAAE,CAAC,CAAC;IAEvC,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,qBAAqB;QACrB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"UseElementsScrollStorage.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseElementsScrollStorage.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAGhG,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,iBAAyB;IAMzB,MAAM,GAAG,GAAG,MAAM,CAAI,IAAI,CAAC,CAAC;IAC5B,MAAM,SAAS,GAAG,MAAM,CAAW,EAAE,CAAC,CAAC;IAEvC,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,qBAAqB;QACrB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEF,+DAA+D;IAC/D,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;QACD,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;IAC9B,CAAC,CAAC;IAEF,2FAA2F;IAC3F,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACjD,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport type { Ref } from \"react\";\nimport { useRef } from \"react\";\n\n/**\n * Returns callbacks for persisting and restoring elements `scrollTop` property value.\n * This can be used to restore elements scroll position if it needs to be hidden and\n * later shown again without unmounting React component.\n * @internal\n */\nexport function useElementsScrollStorage<T extends Element>(\n elementsClassName: string\n): {\n ref: Ref<T>;\n persist: () => void;\n restore: () => void;\n} {\n const ref = useRef<T>(null);\n const scrollTop = useRef<number[]>([]);\n\n const getElements = () => {\n // istanbul ignore if\n if (!ref.current) {\n return [];\n }\n return ref.current.getElementsByClassName(elementsClassName);\n };\n\n /** Persists current `scrollTop` property value of elements. */\n const persist = () => {\n const elements = getElements();\n const offsets: number[] = [];\n for (const element of elements) {\n offsets.push(element.scrollTop);\n }\n scrollTop.current = offsets;\n };\n\n /** Restores `scrollTop` property values back. If `persist` was not called does nothing. */\n const restore = () => {\n const elements = getElements();\n if (elements.length !== scrollTop.current.length) {\n scrollTop.current = [];\n return;\n }\n\n for (let i = 0; i < scrollTop.current.length; i++) {\n elements[i].scrollTop = scrollTop.current[i];\n }\n scrollTop.current = [];\n };\n\n return { ref, persist, restore };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"countMatchesInString.js","sourceRoot":"","sources":["../../../../src/components-react/common/countMatchesInString.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,gEAAgE;AAEhE;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,MAAc;IAC9D,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IAE5C,IAAI,CAAC,GAAG,CAAC,EACP,GAAG,GAAG,CAAC,CAAC;IACV,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IAE3B,OAAO,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"countMatchesInString.js","sourceRoot":"","sources":["../../../../src/components-react/common/countMatchesInString.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,gEAAgE;AAEhE;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,MAAc;IAC9D,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IAE5C,IAAI,CAAC,GAAG,CAAC,EACP,GAAG,GAAG,CAAC,CAAC;IACV,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IAE3B,OAAO,IAAI,EAAE,CAAC;QACZ,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,EAAE,CAAC,CAAC;YACJ,GAAG,IAAI,IAAI,CAAC;QACd,CAAC;;YAAM,MAAM;IACf,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/* @author Vitim.us https://gist.github.com/victornpb/7736865 */\n\n/** @packageDocumentation\n * @module Common\n */\n\n/** Counts how many times string 'lookup' is repeated in string 'str'.\n * @internal\n */\nexport function countMatchesInString(str: string, lookup: string) {\n if (!str.length || !lookup.length) return 0;\n\n let n = 0,\n pos = 0;\n const step = lookup.length;\n\n while (true) {\n pos = str.indexOf(lookup, pos);\n if (pos >= 0) {\n ++n;\n pos += step;\n } else break;\n }\n return n;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectionHandler.js","sourceRoot":"","sources":["../../../../../src/components-react/common/selection/SelectionHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Common\n */\n\nimport { Rectangle } from \"@itwin/core-react\";\nimport {\n hasSelectionModeFlag,\n SelectionMode,\n SelectionModeFlags,\n} from \"./SelectionModes\";\n\n/** Prototype for a Selection Changed handler\n * @public\n */\nexport declare type OnSelectionChanged = (\n shiftDown?: boolean,\n ctrlDown?: boolean\n) => void;\n\n/**\n * Contains single item specific methods required by selection handler.\n * @internal\n */\nexport interface SingleSelectionHandler<TItem> {\n /**\n * Callback for before an item is selected.\n */\n preselect: () => void;\n\n /**\n * Selects the item.\n */\n select: () => void;\n\n /**\n * Deselects the item.\n */\n deselect: () => void;\n\n /**\n * Returns true if item is selected.\n */\n isSelected: () => boolean;\n\n /**\n * Returns the item.\n */\n item: () => TItem;\n}\n\n/**\n * Contains multi-selection methods required by selection handler.\n * @internal\n */\nexport interface MultiSelectionHandler<TItem> {\n /**\n * Shift selects between two items.\n * Returns items that were selected.\n */\n selectBetween: (item1: TItem, item2: TItem) => TItem[];\n\n /**\n * Updates selection.\n * @param selections Items to be added to selection.\n * @param deselections Items to be removed from selection.\n */\n updateSelection: (selections: TItem[], deselections: TItem[]) => void;\n\n /**\n * Deselects all items.\n */\n deselectAll: () => void;\n\n /**\n * Returns true if items are equal.\n */\n areEqual: (item1: TItem, item2: TItem) => boolean;\n}\n\n/**\n * Called after items were selected.\n * @param items Items that were selected.\n * @param replace Should replace current selection.\n * @public\n */\nexport declare type OnItemsSelectedCallback<TItem> = (\n items: TItem[],\n replace: boolean\n) => void | boolean;\n\n/**\n * Called after items were deselected.\n * @param items Items that were deselected.\n * @public\n */\nexport declare type OnItemsDeselectedCallback<Item> = (\n items: Item[]\n) => void | boolean;\n\nclass BatchSelectionOperation<Item> {\n public readonly selections = new Array<Item>();\n public readonly deselections = new Array<Item>();\n public readonly shouldReplace: boolean;\n\n private _componentSelectionHandler: MultiSelectionHandler<Item>;\n\n public constructor(\n componentSelectionHandler: MultiSelectionHandler<Item>,\n shouldReplace: boolean\n ) {\n this.shouldReplace = shouldReplace;\n this._componentSelectionHandler = componentSelectionHandler;\n }\n\n public select(node: Item | Item[]) {\n this.addNodes(\n node,\n this.selections,\n this.shouldReplace ? undefined : this.deselections\n );\n }\n\n public deselect(node: Item | Item[]) {\n this.addNodes(\n node,\n this.deselections,\n this.shouldReplace ? undefined : this.selections\n );\n }\n\n private addNodes(node: Item | Item[], addTo: Item[], removeFrom?: Item[]) {\n if (Array.isArray(node)) {\n for (const n of node) {\n if (removeFrom) {\n const index = removeFrom.findIndex((x) =>\n this._componentSelectionHandler.areEqual(x, n)\n );\n if (index > -1) {\n removeFrom.splice(index, 1);\n continue;\n }\n }\n addTo.push(n);\n }\n } else {\n this.addNodes([node], addTo, removeFrom);\n }\n }\n}\n\n/** @internal */\nexport class DragAction<Item> {\n private _itemSelectionHandlers: Array<Array<SingleSelectionHandler<Item>>>;\n private _componentSelectionHandler: MultiSelectionHandler<Item>;\n private _previousRow: number;\n private _previousColumn: number;\n private _firstItemRow: number;\n private _firstItemColumn: number;\n private _firstItemSelected: boolean;\n\n public constructor(\n componentSelectionHandler: MultiSelectionHandler<Item>,\n itemSelectionHandlers: Array<Array<SingleSelectionHandler<Item>>>,\n firstItem: Item\n ) {\n this._itemSelectionHandlers = itemSelectionHandlers;\n this._componentSelectionHandler = componentSelectionHandler;\n const itemPos = this.findItem(this._itemSelectionHandlers, firstItem);\n this._previousRow = itemPos.y;\n this._previousColumn = itemPos.x;\n this._firstItemRow = itemPos.y;\n this._firstItemColumn = itemPos.x;\n this._firstItemSelected = false;\n }\n\n public updateDragAction(latestItem: Item): {\n selections: Item[];\n deselections: Item[];\n } {\n const currentPos = this.findItem(this._itemSelectionHandlers, latestItem);\n if (\n (currentPos.y === this._previousRow &&\n currentPos.x === this._previousColumn) ||\n currentPos.x < 0 ||\n currentPos.y < 0\n )\n return { selections: [], deselections: [] };\n\n const currentRange = Rectangle.createXYXY(\n this._firstItemColumn,\n this._firstItemRow,\n currentPos.x,\n currentPos.y\n );\n const previousRange = Rectangle.createXYXY(\n this._firstItemColumn,\n this._firstItemRow,\n this._previousColumn,\n this._previousRow\n );\n const wholeRange = Rectangle.createXYXY(\n currentRange.right > previousRange.right\n ? currentRange.right\n : previousRange.right,\n currentRange.bottom > previousRange.bottom\n ? currentRange.bottom\n : previousRange.bottom,\n currentRange.left < previousRange.left\n ? currentRange.left\n : previousRange.left,\n currentRange.top < previousRange.top\n ? currentRange.top\n : previousRange.top\n );\n const selections = [];\n const deselections = [];\n\n // have to select first item separately since it is will always be in both previous and current ranges.\n if (!this._firstItemSelected) {\n const handler =\n this._itemSelectionHandlers[this._firstItemRow][this._firstItemColumn];\n if (handler.isSelected()) deselections.push(handler.item());\n else selections.push(handler.item());\n this._firstItemSelected = true;\n }\n\n for (let r = wholeRange.top; r <= wholeRange.bottom; r++) {\n for (let c = wholeRange.left; c <= wholeRange.right; c++) {\n const insidePrevious = previousRange.containsXY(c, r);\n const insideCurrent = currentRange.containsXY(c, r);\n // If item is in only one of the ranges that means it's selection needs to be toggled.\n if (\n (insidePrevious || insideCurrent) &&\n insideCurrent !== insidePrevious\n ) {\n const itemHandler = this._itemSelectionHandlers[r][c];\n if (itemHandler.isSelected()) deselections.push(itemHandler.item());\n else selections.push(itemHandler.item());\n }\n }\n }\n\n this._previousRow = currentPos.y;\n this._previousColumn = currentPos.x;\n return { selections, deselections };\n }\n\n private findItem(\n itemSelectionHandlers: Array<Array<SingleSelectionHandler<Item>>>,\n item: Item\n ): { x: number; y: number } {\n if (\n this._previousRow !== undefined &&\n this._previousRow !== -1 &&\n this._previousColumn !== undefined &&\n this._previousColumn !== -1 &&\n this._componentSelectionHandler.areEqual(\n itemSelectionHandlers[this._previousRow][this._previousColumn].item(),\n item\n )\n ) {\n return { y: this._previousRow, x: this._previousColumn };\n }\n for (let row = 0; row < itemSelectionHandlers.length; row++) {\n for (\n let column = 0;\n column < itemSelectionHandlers[row].length;\n column++\n ) {\n if (\n this._componentSelectionHandler.areEqual(\n itemSelectionHandlers[row][column].item(),\n item\n )\n )\n return { x: column, y: row };\n }\n }\n return { x: -1, y: -1 };\n }\n}\n\n/** @internal */\nexport class SelectionHandler<Item> {\n /** Selection mode. */\n public selectionMode: SelectionMode;\n public onItemsSelectedCallback?: OnItemsSelectedCallback<Item>;\n public onItemsDeselectedCallback?: OnItemsDeselectedCallback<Item>;\n\n private _currentOperation?: BatchSelectionOperation<Item>;\n private _lastItem?: Item; // keeps track of last item interacted with for shift selection\n private _processedItem?: Item; // last item interacted with\n private _dragAction?: DragAction<Item>;\n private _componentSelectionHandler?: MultiSelectionHandler<Item>; // needed for drag selection\n\n constructor(\n selectionMode: SelectionMode,\n onItemsSelectedCallback?: OnItemsSelectedCallback<Item>,\n onItemsDeselectedCallback?: OnItemsDeselectedCallback<Item>\n ) {\n this.selectionMode = selectionMode;\n this.onItemsSelectedCallback = onItemsSelectedCallback;\n this.onItemsDeselectedCallback = onItemsDeselectedCallback;\n }\n\n /** Get the onSelectionChange processed item */\n public get processedItem(): Item | undefined {\n return this._processedItem;\n }\n\n /** Creates a function that should be called when selection changes. */\n public createSelectionFunction(\n componentHandler: MultiSelectionHandler<Item>,\n itemHandler: SingleSelectionHandler<Item>\n ): OnSelectionChanged {\n const onSelectionChange: OnSelectionChanged = (shiftDown, ctrlDown) => {\n this._processedItem = itemHandler.item();\n\n if (this.selectionMode === SelectionMode.None) {\n return;\n }\n\n let operationCreated = false;\n let shiftSelected = false;\n if (!this._currentOperation) {\n // will replace selection if it is limited to one or keys are enabled but ctrl is not down\n const shouldReplace =\n (hasSelectionModeFlag(\n this.selectionMode,\n SelectionModeFlags.KeysEnabled\n ) &&\n !ctrlDown) ||\n hasSelectionModeFlag(\n this.selectionMode,\n SelectionModeFlags.SelectionLimitOne\n );\n this._currentOperation = new BatchSelectionOperation<Item>(\n componentHandler,\n shouldReplace\n );\n operationCreated = true;\n }\n\n if (\n hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.KeysEnabled)\n ) {\n if (!ctrlDown) componentHandler.deselectAll();\n if (shiftDown && this._lastItem !== undefined) {\n const selected = componentHandler.selectBetween(\n this._lastItem,\n itemHandler.item()\n );\n this._currentOperation.select(selected);\n shiftSelected = true;\n }\n }\n\n if (!shiftSelected) {\n itemHandler.preselect();\n\n if (\n hasSelectionModeFlag(\n this.selectionMode,\n SelectionModeFlags.SelectionLimitOne\n ) &&\n !(\n hasSelectionModeFlag(\n this.selectionMode,\n SelectionModeFlags.ToggleEnabled\n ) && itemHandler.isSelected()\n )\n ) {\n componentHandler.deselectAll();\n }\n\n if (itemHandler.isSelected()) {\n itemHandler.deselect();\n this._currentOperation.deselect(itemHandler.item());\n } else {\n itemHandler.select();\n this._currentOperation.select(itemHandler.item());\n }\n this._lastItem = itemHandler.item();\n }\n\n if (operationCreated) this.completeOperation();\n };\n return onSelectionChange.bind(this);\n }\n\n private completeOperation(): void {\n if (!this._currentOperation) return;\n\n if (0 !== this._currentOperation.selections.length) {\n if (this.onItemsSelectedCallback) {\n this.onItemsSelectedCallback(\n this._currentOperation.selections,\n this._currentOperation.shouldReplace\n );\n if (this._currentOperation.shouldReplace) {\n this._currentOperation = undefined;\n return;\n }\n }\n }\n if (0 !== this._currentOperation.deselections.length) {\n if (this.onItemsDeselectedCallback)\n this.onItemsDeselectedCallback(this._currentOperation.deselections);\n }\n this._currentOperation = undefined;\n }\n\n /**\n * Creates drag action.\n * @param componentSelectionHandler Component selection handler.\n * @param items Ordered item selection handlers separated into arrays by rows.\n * @param firstItem Item on which drag action was started.\n */\n public createDragAction(\n componentSelectionHandler: MultiSelectionHandler<Item>,\n items: Array<Array<SingleSelectionHandler<Item>>>,\n firstItem: Item\n ): void {\n if (\n !hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.DragEnabled)\n )\n return;\n\n this._dragAction = new DragAction(\n componentSelectionHandler,\n items,\n firstItem\n );\n this._componentSelectionHandler = componentSelectionHandler;\n }\n\n /**\n * Updates existing drag action.\n * @param latestItem Latest item in drag action.\n */\n public updateDragAction(latestItem: Item): void {\n if (\n !hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.DragEnabled)\n )\n return;\n\n if (!this._dragAction || !this._componentSelectionHandler) return;\n\n this._lastItem = latestItem;\n const selectionChanges = this._dragAction.updateDragAction(latestItem);\n\n if (\n selectionChanges.deselections.length !== 0 ||\n selectionChanges.selections.length !== 0\n ) {\n if (!this._currentOperation)\n this._currentOperation = new BatchSelectionOperation(\n this._componentSelectionHandler,\n false\n );\n this._currentOperation.select(selectionChanges.selections);\n this._currentOperation.deselect(selectionChanges.deselections);\n this._componentSelectionHandler.updateSelection(\n selectionChanges.selections,\n selectionChanges.deselections\n );\n }\n }\n\n /**\n * Completes drag action.\n */\n public completeDragAction() {\n this._dragAction = undefined;\n this._componentSelectionHandler = undefined;\n this.completeOperation();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SelectionHandler.js","sourceRoot":"","sources":["../../../../../src/components-react/common/selection/SelectionHandler.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AA0F1B,MAAM,uBAAuB;IAO3B,YACE,yBAAsD,EACtD,aAAsB;QARR,eAAU,GAAG,IAAI,KAAK,EAAQ,CAAC;QAC/B,iBAAY,GAAG,IAAI,KAAK,EAAQ,CAAC;QAS/C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,0BAA0B,GAAG,yBAAyB,CAAC;IAC9D,CAAC;IAEM,MAAM,CAAC,IAAmB;QAC/B,IAAI,CAAC,QAAQ,CACX,IAAI,EACJ,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CACnD,CAAC;IACJ,CAAC;IAEM,QAAQ,CAAC,IAAmB;QACjC,IAAI,CAAC,QAAQ,CACX,IAAI,EACJ,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CACjD,CAAC;IACJ,CAAC;IAEO,QAAQ,CAAC,IAAmB,EAAE,KAAa,EAAE,UAAmB;QACtE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CACvC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAC/C,CAAC;oBACF,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;wBACf,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;wBAC5B,SAAS;oBACX,CAAC;gBACH,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,UAAU;IASrB,YACE,yBAAsD,EACtD,qBAAiE,EACjE,SAAe;QAEf,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;QACpD,IAAI,CAAC,0BAA0B,GAAG,yBAAyB,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;QACtE,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAClC,CAAC;IAEM,gBAAgB,CAAC,UAAgB;QAItC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;QAC1E,IACE,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY;YACjC,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC;YACxC,UAAU,CAAC,CAAC,GAAG,CAAC;YAChB,UAAU,CAAC,CAAC,GAAG,CAAC;YAEhB,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAE9C,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,CACvC,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,aAAa,EAClB,UAAU,CAAC,CAAC,EACZ,UAAU,CAAC,CAAC,CACb,CAAC;QACF,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CACxC,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CACrC,YAAY,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;YACtC,CAAC,CAAC,YAAY,CAAC,KAAK;YACpB,CAAC,CAAC,aAAa,CAAC,KAAK,EACvB,YAAY,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;YACxC,CAAC,CAAC,YAAY,CAAC,MAAM;YACrB,CAAC,CAAC,aAAa,CAAC,MAAM,EACxB,YAAY,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;YACpC,CAAC,CAAC,YAAY,CAAC,IAAI;YACnB,CAAC,CAAC,aAAa,CAAC,IAAI,EACtB,YAAY,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG;YAClC,CAAC,CAAC,YAAY,CAAC,GAAG;YAClB,CAAC,CAAC,aAAa,CAAC,GAAG,CACtB,CAAC;QACF,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,MAAM,YAAY,GAAG,EAAE,CAAC;QAExB,uGAAuG;QACvG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,MAAM,OAAO,GACX,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACzE,IAAI,OAAO,CAAC,UAAU,EAAE;gBAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;;gBACvD,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACjC,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzD,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzD,MAAM,cAAc,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtD,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpD,sFAAsF;gBACtF,IACE,CAAC,cAAc,IAAI,aAAa,CAAC;oBACjC,aAAa,KAAK,cAAc,EAChC,CAAC;oBACD,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtD,IAAI,WAAW,CAAC,UAAU,EAAE;wBAAE,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;;wBAC/D,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC;QACpC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;IACtC,CAAC;IAEO,QAAQ,CACd,qBAAiE,EACjE,IAAU;QAEV,IACE,IAAI,CAAC,YAAY,KAAK,SAAS;YAC/B,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC;YACxB,IAAI,CAAC,eAAe,KAAK,SAAS;YAClC,IAAI,CAAC,eAAe,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CACtC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EACrE,IAAI,CACL,EACD,CAAC;YACD,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3D,CAAC;QACD,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;YAC5D,KACE,IAAI,MAAM,GAAG,CAAC,EACd,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,MAAM,EAC1C,MAAM,EAAE,EACR,CAAC;gBACD,IACE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CACtC,qBAAqB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EACzC,IAAI,CACL;oBAED,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;YACjC,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC1B,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,gBAAgB;IAY3B,YACE,aAA4B,EAC5B,uBAAuD,EACvD,yBAA2D;QAE3D,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QACvD,IAAI,CAAC,yBAAyB,GAAG,yBAAyB,CAAC;IAC7D,CAAC;IAED,+CAA+C;IAC/C,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,uEAAuE;IAChE,uBAAuB,CAC5B,gBAA6C,EAC7C,WAAyC;QAEzC,MAAM,iBAAiB,GAAuB,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;YACpE,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;YAEzC,IAAI,IAAI,CAAC,aAAa,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;gBAC9C,OAAO;YACT,CAAC;YAED,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAC7B,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,0FAA0F;gBAC1F,MAAM,aAAa,GACjB,CAAC,oBAAoB,CACnB,IAAI,CAAC,aAAa,EAClB,kBAAkB,CAAC,WAAW,CAC/B;oBACC,CAAC,QAAQ,CAAC;oBACZ,oBAAoB,CAClB,IAAI,CAAC,aAAa,EAClB,kBAAkB,CAAC,iBAAiB,CACrC,CAAC;gBACJ,IAAI,CAAC,iBAAiB,GAAG,IAAI,uBAAuB,CAClD,gBAAgB,EAChB,aAAa,CACd,CAAC;gBACF,gBAAgB,GAAG,IAAI,CAAC;YAC1B,CAAC;YAED,IACE,oBAAoB,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,WAAW,CAAC,EACxE,CAAC;gBACD,IAAI,CAAC,QAAQ;oBAAE,gBAAgB,CAAC,WAAW,EAAE,CAAC;gBAC9C,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC9C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,CAC7C,IAAI,CAAC,SAAS,EACd,WAAW,CAAC,IAAI,EAAE,CACnB,CAAC;oBACF,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACxC,aAAa,GAAG,IAAI,CAAC;gBACvB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,WAAW,CAAC,SAAS,EAAE,CAAC;gBAExB,IACE,oBAAoB,CAClB,IAAI,CAAC,aAAa,EAClB,kBAAkB,CAAC,iBAAiB,CACrC;oBACD,CAAC,CACC,oBAAoB,CAClB,IAAI,CAAC,aAAa,EAClB,kBAAkB,CAAC,aAAa,CACjC,IAAI,WAAW,CAAC,UAAU,EAAE,CAC9B,EACD,CAAC;oBACD,gBAAgB,CAAC,WAAW,EAAE,CAAC;gBACjC,CAAC;gBAED,IAAI,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC;oBAC7B,WAAW,CAAC,QAAQ,EAAE,CAAC;oBACvB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACN,WAAW,CAAC,MAAM,EAAE,CAAC;oBACrB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;gBACpD,CAAC;gBACD,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;YACtC,CAAC;YAED,IAAI,gBAAgB;gBAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACjD,CAAC,CAAC;QACF,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAEpC,IAAI,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBACjC,IAAI,CAAC,uBAAuB,CAC1B,IAAI,CAAC,iBAAiB,CAAC,UAAU,EACjC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CACrC,CAAC;gBACF,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;oBACzC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;oBACnC,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,yBAAyB;gBAChC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACI,gBAAgB,CACrB,yBAAsD,EACtD,KAAiD,EACjD,SAAe;QAEf,IACE,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,WAAW,CAAC;YAEzE,OAAO;QAET,IAAI,CAAC,WAAW,GAAG,IAAI,UAAU,CAC/B,yBAAyB,EACzB,KAAK,EACL,SAAS,CACV,CAAC;QACF,IAAI,CAAC,0BAA0B,GAAG,yBAAyB,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACI,gBAAgB,CAAC,UAAgB;QACtC,IACE,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,WAAW,CAAC;YAEzE,OAAO;QAET,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,0BAA0B;YAAE,OAAO;QAElE,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;QAC5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEvE,IACE,gBAAgB,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;YAC1C,gBAAgB,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EACxC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,iBAAiB;gBACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,uBAAuB,CAClD,IAAI,CAAC,0BAA0B,EAC/B,KAAK,CACN,CAAC;YACJ,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAC/D,IAAI,CAAC,0BAA0B,CAAC,eAAe,CAC7C,gBAAgB,CAAC,UAAU,EAC3B,gBAAgB,CAAC,YAAY,CAC9B,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACI,kBAAkB;QACvB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,0BAA0B,GAAG,SAAS,CAAC;QAC5C,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Common\n */\n\nimport { Rectangle } from \"@itwin/core-react\";\nimport {\n hasSelectionModeFlag,\n SelectionMode,\n SelectionModeFlags,\n} from \"./SelectionModes\";\n\n/** Prototype for a Selection Changed handler\n * @public\n */\nexport declare type OnSelectionChanged = (\n shiftDown?: boolean,\n ctrlDown?: boolean\n) => void;\n\n/**\n * Contains single item specific methods required by selection handler.\n * @internal\n */\nexport interface SingleSelectionHandler<TItem> {\n /**\n * Callback for before an item is selected.\n */\n preselect: () => void;\n\n /**\n * Selects the item.\n */\n select: () => void;\n\n /**\n * Deselects the item.\n */\n deselect: () => void;\n\n /**\n * Returns true if item is selected.\n */\n isSelected: () => boolean;\n\n /**\n * Returns the item.\n */\n item: () => TItem;\n}\n\n/**\n * Contains multi-selection methods required by selection handler.\n * @internal\n */\nexport interface MultiSelectionHandler<TItem> {\n /**\n * Shift selects between two items.\n * Returns items that were selected.\n */\n selectBetween: (item1: TItem, item2: TItem) => TItem[];\n\n /**\n * Updates selection.\n * @param selections Items to be added to selection.\n * @param deselections Items to be removed from selection.\n */\n updateSelection: (selections: TItem[], deselections: TItem[]) => void;\n\n /**\n * Deselects all items.\n */\n deselectAll: () => void;\n\n /**\n * Returns true if items are equal.\n */\n areEqual: (item1: TItem, item2: TItem) => boolean;\n}\n\n/**\n * Called after items were selected.\n * @param items Items that were selected.\n * @param replace Should replace current selection.\n * @public\n */\nexport declare type OnItemsSelectedCallback<TItem> = (\n items: TItem[],\n replace: boolean\n) => void | boolean;\n\n/**\n * Called after items were deselected.\n * @param items Items that were deselected.\n * @public\n */\nexport declare type OnItemsDeselectedCallback<Item> = (\n items: Item[]\n) => void | boolean;\n\nclass BatchSelectionOperation<Item> {\n public readonly selections = new Array<Item>();\n public readonly deselections = new Array<Item>();\n public readonly shouldReplace: boolean;\n\n private _componentSelectionHandler: MultiSelectionHandler<Item>;\n\n public constructor(\n componentSelectionHandler: MultiSelectionHandler<Item>,\n shouldReplace: boolean\n ) {\n this.shouldReplace = shouldReplace;\n this._componentSelectionHandler = componentSelectionHandler;\n }\n\n public select(node: Item | Item[]) {\n this.addNodes(\n node,\n this.selections,\n this.shouldReplace ? undefined : this.deselections\n );\n }\n\n public deselect(node: Item | Item[]) {\n this.addNodes(\n node,\n this.deselections,\n this.shouldReplace ? undefined : this.selections\n );\n }\n\n private addNodes(node: Item | Item[], addTo: Item[], removeFrom?: Item[]) {\n if (Array.isArray(node)) {\n for (const n of node) {\n if (removeFrom) {\n const index = removeFrom.findIndex((x) =>\n this._componentSelectionHandler.areEqual(x, n)\n );\n if (index > -1) {\n removeFrom.splice(index, 1);\n continue;\n }\n }\n addTo.push(n);\n }\n } else {\n this.addNodes([node], addTo, removeFrom);\n }\n }\n}\n\n/** @internal */\nexport class DragAction<Item> {\n private _itemSelectionHandlers: Array<Array<SingleSelectionHandler<Item>>>;\n private _componentSelectionHandler: MultiSelectionHandler<Item>;\n private _previousRow: number;\n private _previousColumn: number;\n private _firstItemRow: number;\n private _firstItemColumn: number;\n private _firstItemSelected: boolean;\n\n public constructor(\n componentSelectionHandler: MultiSelectionHandler<Item>,\n itemSelectionHandlers: Array<Array<SingleSelectionHandler<Item>>>,\n firstItem: Item\n ) {\n this._itemSelectionHandlers = itemSelectionHandlers;\n this._componentSelectionHandler = componentSelectionHandler;\n const itemPos = this.findItem(this._itemSelectionHandlers, firstItem);\n this._previousRow = itemPos.y;\n this._previousColumn = itemPos.x;\n this._firstItemRow = itemPos.y;\n this._firstItemColumn = itemPos.x;\n this._firstItemSelected = false;\n }\n\n public updateDragAction(latestItem: Item): {\n selections: Item[];\n deselections: Item[];\n } {\n const currentPos = this.findItem(this._itemSelectionHandlers, latestItem);\n if (\n (currentPos.y === this._previousRow &&\n currentPos.x === this._previousColumn) ||\n currentPos.x < 0 ||\n currentPos.y < 0\n )\n return { selections: [], deselections: [] };\n\n const currentRange = Rectangle.createXYXY(\n this._firstItemColumn,\n this._firstItemRow,\n currentPos.x,\n currentPos.y\n );\n const previousRange = Rectangle.createXYXY(\n this._firstItemColumn,\n this._firstItemRow,\n this._previousColumn,\n this._previousRow\n );\n const wholeRange = Rectangle.createXYXY(\n currentRange.right > previousRange.right\n ? currentRange.right\n : previousRange.right,\n currentRange.bottom > previousRange.bottom\n ? currentRange.bottom\n : previousRange.bottom,\n currentRange.left < previousRange.left\n ? currentRange.left\n : previousRange.left,\n currentRange.top < previousRange.top\n ? currentRange.top\n : previousRange.top\n );\n const selections = [];\n const deselections = [];\n\n // have to select first item separately since it is will always be in both previous and current ranges.\n if (!this._firstItemSelected) {\n const handler =\n this._itemSelectionHandlers[this._firstItemRow][this._firstItemColumn];\n if (handler.isSelected()) deselections.push(handler.item());\n else selections.push(handler.item());\n this._firstItemSelected = true;\n }\n\n for (let r = wholeRange.top; r <= wholeRange.bottom; r++) {\n for (let c = wholeRange.left; c <= wholeRange.right; c++) {\n const insidePrevious = previousRange.containsXY(c, r);\n const insideCurrent = currentRange.containsXY(c, r);\n // If item is in only one of the ranges that means it's selection needs to be toggled.\n if (\n (insidePrevious || insideCurrent) &&\n insideCurrent !== insidePrevious\n ) {\n const itemHandler = this._itemSelectionHandlers[r][c];\n if (itemHandler.isSelected()) deselections.push(itemHandler.item());\n else selections.push(itemHandler.item());\n }\n }\n }\n\n this._previousRow = currentPos.y;\n this._previousColumn = currentPos.x;\n return { selections, deselections };\n }\n\n private findItem(\n itemSelectionHandlers: Array<Array<SingleSelectionHandler<Item>>>,\n item: Item\n ): { x: number; y: number } {\n if (\n this._previousRow !== undefined &&\n this._previousRow !== -1 &&\n this._previousColumn !== undefined &&\n this._previousColumn !== -1 &&\n this._componentSelectionHandler.areEqual(\n itemSelectionHandlers[this._previousRow][this._previousColumn].item(),\n item\n )\n ) {\n return { y: this._previousRow, x: this._previousColumn };\n }\n for (let row = 0; row < itemSelectionHandlers.length; row++) {\n for (\n let column = 0;\n column < itemSelectionHandlers[row].length;\n column++\n ) {\n if (\n this._componentSelectionHandler.areEqual(\n itemSelectionHandlers[row][column].item(),\n item\n )\n )\n return { x: column, y: row };\n }\n }\n return { x: -1, y: -1 };\n }\n}\n\n/** @internal */\nexport class SelectionHandler<Item> {\n /** Selection mode. */\n public selectionMode: SelectionMode;\n public onItemsSelectedCallback?: OnItemsSelectedCallback<Item>;\n public onItemsDeselectedCallback?: OnItemsDeselectedCallback<Item>;\n\n private _currentOperation?: BatchSelectionOperation<Item>;\n private _lastItem?: Item; // keeps track of last item interacted with for shift selection\n private _processedItem?: Item; // last item interacted with\n private _dragAction?: DragAction<Item>;\n private _componentSelectionHandler?: MultiSelectionHandler<Item>; // needed for drag selection\n\n constructor(\n selectionMode: SelectionMode,\n onItemsSelectedCallback?: OnItemsSelectedCallback<Item>,\n onItemsDeselectedCallback?: OnItemsDeselectedCallback<Item>\n ) {\n this.selectionMode = selectionMode;\n this.onItemsSelectedCallback = onItemsSelectedCallback;\n this.onItemsDeselectedCallback = onItemsDeselectedCallback;\n }\n\n /** Get the onSelectionChange processed item */\n public get processedItem(): Item | undefined {\n return this._processedItem;\n }\n\n /** Creates a function that should be called when selection changes. */\n public createSelectionFunction(\n componentHandler: MultiSelectionHandler<Item>,\n itemHandler: SingleSelectionHandler<Item>\n ): OnSelectionChanged {\n const onSelectionChange: OnSelectionChanged = (shiftDown, ctrlDown) => {\n this._processedItem = itemHandler.item();\n\n if (this.selectionMode === SelectionMode.None) {\n return;\n }\n\n let operationCreated = false;\n let shiftSelected = false;\n if (!this._currentOperation) {\n // will replace selection if it is limited to one or keys are enabled but ctrl is not down\n const shouldReplace =\n (hasSelectionModeFlag(\n this.selectionMode,\n SelectionModeFlags.KeysEnabled\n ) &&\n !ctrlDown) ||\n hasSelectionModeFlag(\n this.selectionMode,\n SelectionModeFlags.SelectionLimitOne\n );\n this._currentOperation = new BatchSelectionOperation<Item>(\n componentHandler,\n shouldReplace\n );\n operationCreated = true;\n }\n\n if (\n hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.KeysEnabled)\n ) {\n if (!ctrlDown) componentHandler.deselectAll();\n if (shiftDown && this._lastItem !== undefined) {\n const selected = componentHandler.selectBetween(\n this._lastItem,\n itemHandler.item()\n );\n this._currentOperation.select(selected);\n shiftSelected = true;\n }\n }\n\n if (!shiftSelected) {\n itemHandler.preselect();\n\n if (\n hasSelectionModeFlag(\n this.selectionMode,\n SelectionModeFlags.SelectionLimitOne\n ) &&\n !(\n hasSelectionModeFlag(\n this.selectionMode,\n SelectionModeFlags.ToggleEnabled\n ) && itemHandler.isSelected()\n )\n ) {\n componentHandler.deselectAll();\n }\n\n if (itemHandler.isSelected()) {\n itemHandler.deselect();\n this._currentOperation.deselect(itemHandler.item());\n } else {\n itemHandler.select();\n this._currentOperation.select(itemHandler.item());\n }\n this._lastItem = itemHandler.item();\n }\n\n if (operationCreated) this.completeOperation();\n };\n return onSelectionChange.bind(this);\n }\n\n private completeOperation(): void {\n if (!this._currentOperation) return;\n\n if (0 !== this._currentOperation.selections.length) {\n if (this.onItemsSelectedCallback) {\n this.onItemsSelectedCallback(\n this._currentOperation.selections,\n this._currentOperation.shouldReplace\n );\n if (this._currentOperation.shouldReplace) {\n this._currentOperation = undefined;\n return;\n }\n }\n }\n if (0 !== this._currentOperation.deselections.length) {\n if (this.onItemsDeselectedCallback)\n this.onItemsDeselectedCallback(this._currentOperation.deselections);\n }\n this._currentOperation = undefined;\n }\n\n /**\n * Creates drag action.\n * @param componentSelectionHandler Component selection handler.\n * @param items Ordered item selection handlers separated into arrays by rows.\n * @param firstItem Item on which drag action was started.\n */\n public createDragAction(\n componentSelectionHandler: MultiSelectionHandler<Item>,\n items: Array<Array<SingleSelectionHandler<Item>>>,\n firstItem: Item\n ): void {\n if (\n !hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.DragEnabled)\n )\n return;\n\n this._dragAction = new DragAction(\n componentSelectionHandler,\n items,\n firstItem\n );\n this._componentSelectionHandler = componentSelectionHandler;\n }\n\n /**\n * Updates existing drag action.\n * @param latestItem Latest item in drag action.\n */\n public updateDragAction(latestItem: Item): void {\n if (\n !hasSelectionModeFlag(this.selectionMode, SelectionModeFlags.DragEnabled)\n )\n return;\n\n if (!this._dragAction || !this._componentSelectionHandler) return;\n\n this._lastItem = latestItem;\n const selectionChanges = this._dragAction.updateDragAction(latestItem);\n\n if (\n selectionChanges.deselections.length !== 0 ||\n selectionChanges.selections.length !== 0\n ) {\n if (!this._currentOperation)\n this._currentOperation = new BatchSelectionOperation(\n this._componentSelectionHandler,\n false\n );\n this._currentOperation.select(selectionChanges.selections);\n this._currentOperation.deselect(selectionChanges.deselections);\n this._componentSelectionHandler.updateSelection(\n selectionChanges.selections,\n selectionChanges.deselections\n );\n }\n }\n\n /**\n * Completes drag action.\n */\n public completeDragAction() {\n this._dragAction = undefined;\n this._componentSelectionHandler = undefined;\n this.completeOperation();\n }\n}\n"]}
|
|
@@ -12,7 +12,7 @@ import { TypeConverterManager } from "./TypeConverterManager";
|
|
|
12
12
|
/** Boolean Type Converter.
|
|
13
13
|
* @public
|
|
14
14
|
*/
|
|
15
|
-
class BooleanTypeConverter extends TypeConverter {
|
|
15
|
+
export class BooleanTypeConverter extends TypeConverter {
|
|
16
16
|
/** @internal */
|
|
17
17
|
static getLocalizedTrueFalse() {
|
|
18
18
|
if (!BooleanTypeConverter.sl10nTrue)
|
|
@@ -54,7 +54,6 @@ class BooleanTypeConverter extends TypeConverter {
|
|
|
54
54
|
BooleanTypeConverter.sl10nTrue = "";
|
|
55
55
|
/** @internal */
|
|
56
56
|
BooleanTypeConverter.sl10nFalse = "";
|
|
57
|
-
export { BooleanTypeConverter };
|
|
58
57
|
TypeConverterManager.registerConverter(StandardTypeNames.Boolean, BooleanTypeConverter);
|
|
59
58
|
TypeConverterManager.registerConverter(StandardTypeNames.Bool, BooleanTypeConverter);
|
|
60
59
|
//# sourceMappingURL=BooleanTypeConverter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BooleanTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/BooleanTypeConverter.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"BooleanTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/BooleanTypeConverter.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,aAAa;IAMrD,gBAAgB;IACT,MAAM,CAAC,qBAAqB;QACjC,IAAI,CAAC,oBAAoB,CAAC,SAAS;YACjC,oBAAoB,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC1E,IAAI,CAAC,oBAAoB,CAAC,UAAU;YAClC,oBAAoB,CAAC,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC9E,CAAC;IAEe,eAAe,CAAC,KAA0B;QACxD,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QAEnC,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;QAE7C,IACE,KAAK,KAAK,oBAAoB,CAAC,SAAS;YACxC,KAAK,KAAK,oBAAoB,CAAC,UAAU;YAEzC,OAAO,KAAK,CAAC;QAEf,OAAO,KAAK;YACV,CAAC,CAAC,oBAAoB,CAAC,SAAS;YAChC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC;IACtC,CAAC;IAEe,iBAAiB,CAAC,KAAa;QAC7C,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;QAE7C,MAAM,YAAY,GAChB,CAAC;YACD,KAAK;iBACF,iBAAiB,EAAE;iBACnB,aAAa,CAAC,oBAAoB,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACvE,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,WAAW,CAChB,CAAqB,EACrB,CAAqB,EACrB,WAAqB;QAErB,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACxB,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,IAAoB,aAAa;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;;AApDD,gBAAgB;AACF,8BAAS,GAAW,EAAE,CAAC;AACrC,gBAAgB;AACF,+BAAU,GAAW,EAAE,CAAC;AAoDxC,oBAAoB,CAAC,iBAAiB,CACpC,iBAAiB,CAAC,OAAO,EACzB,oBAAoB,CACrB,CAAC;AACF,oBAAoB,CAAC,iBAAiB,CACpC,iBAAiB,CAAC,IAAI,EACtB,oBAAoB,CACrB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module TypeConverters\n */\n\nimport type { Primitives } from \"@itwin/appui-abstract\";\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { UiComponents } from \"../UiComponents\";\nimport { TypeConverter } from \"./TypeConverter\";\nimport { TypeConverterManager } from \"./TypeConverterManager\";\n\n/** Boolean Type Converter.\n * @public\n */\nexport class BooleanTypeConverter extends TypeConverter {\n /** @internal */\n public static sl10nTrue: string = \"\";\n /** @internal */\n public static sl10nFalse: string = \"\";\n\n /** @internal */\n public static getLocalizedTrueFalse() {\n if (!BooleanTypeConverter.sl10nTrue)\n BooleanTypeConverter.sl10nTrue = UiComponents.translate(\"general.true\");\n if (!BooleanTypeConverter.sl10nFalse)\n BooleanTypeConverter.sl10nFalse = UiComponents.translate(\"general.false\");\n }\n\n public override convertToString(value?: Primitives.Boolean) {\n if (value === undefined) return \"\";\n\n BooleanTypeConverter.getLocalizedTrueFalse();\n\n if (\n value === BooleanTypeConverter.sl10nTrue ||\n value === BooleanTypeConverter.sl10nFalse\n )\n return value;\n\n return value\n ? BooleanTypeConverter.sl10nTrue\n : BooleanTypeConverter.sl10nFalse;\n }\n\n public override convertFromString(value: string) {\n BooleanTypeConverter.getLocalizedTrueFalse();\n\n const booleanValue =\n 0 ===\n value\n .toLocaleLowerCase()\n .localeCompare(BooleanTypeConverter.sl10nTrue.toLocaleLowerCase());\n return booleanValue;\n }\n\n public sortCompare(\n a: Primitives.Boolean,\n b: Primitives.Boolean,\n _ignoreCase?: boolean\n ): number {\n if (!!a === !!b) return 0;\n if (!!a && !b) return 1;\n return -1;\n }\n\n public override get isBooleanType(): boolean {\n return true;\n }\n}\n\nTypeConverterManager.registerConverter(\n StandardTypeNames.Boolean,\n BooleanTypeConverter\n);\nTypeConverterManager.registerConverter(\n StandardTypeNames.Bool,\n BooleanTypeConverter\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompositeTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/CompositeTypeConverter.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;GAGG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAAa;IACvC,eAAe,CAC7B,KAA4B;QAE5B,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACnC,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAEM,WAAW,CAChB,MAA4B,EAC5B,MAA4B,EAC5B,UAAgC;QAEhC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,mBAAmB,GAAG,cAAc,CACxC,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,EAChB,UAAU,CACX,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"CompositeTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/CompositeTypeConverter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module TypeConverters\n */\n\nimport type { Primitives } from \"@itwin/appui-abstract\";\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { TypeConverter } from \"./TypeConverter\";\nimport { TypeConverterManager } from \"./TypeConverterManager\";\n\n/**\n * Composite type converter\n * @public\n */\nexport class CompositeTypeConverter extends TypeConverter {\n public override convertToString(\n value?: Primitives.Composite\n ): string | Promise<string> {\n if (value === undefined) return \"\";\n return createDisplayValue(value);\n }\n\n public sortCompare(\n valueA: Primitives.Composite,\n valueB: Primitives.Composite,\n ignoreCase?: boolean | undefined\n ): number {\n const length = Math.min(valueA.parts.length, valueB.parts.length);\n const separatorComparison = compareStrings(\n valueA.separator,\n valueB.separator,\n ignoreCase\n );\n for (let i = 0; i < length; i++) {\n const lhs = valueA.parts[i];\n const rhs = valueB.parts[i];\n const compareResult =\n lhs.typeName !== rhs.typeName\n ? compareStrings(lhs.displayValue, rhs.displayValue, ignoreCase)\n : TypeConverterManager.getConverter(lhs.typeName).sortCompare(\n lhs.rawValue,\n rhs.rawValue,\n ignoreCase\n );\n if (compareResult !== 0) return compareResult;\n\n if (i === 0 && separatorComparison !== 0) return separatorComparison;\n }\n\n if (valueA.parts.length !== valueB.parts.length)\n return valueA.parts.length - valueB.parts.length;\n\n return 0;\n }\n}\n\nTypeConverterManager.registerConverter(\n StandardTypeNames.Composite,\n CompositeTypeConverter\n);\n\nconst compareStrings = (lhs: string, rhs: string, ignoreCase?: boolean) => {\n if (ignoreCase)\n return lhs.toLocaleLowerCase().localeCompare(rhs.toLocaleLowerCase());\n else return lhs.localeCompare(rhs);\n};\n\nconst createDisplayValue = async (\n compositeValue: Primitives.Composite\n): Promise<string> => {\n const parts: string[] = [];\n for (const part of compositeValue.parts) {\n let valueString: string;\n if (part.typeName === \"composite\") {\n valueString = await createDisplayValue(\n part.rawValue as Primitives.Composite\n );\n } else {\n valueString = await TypeConverterManager.getConverter(\n part.typeName\n ).convertToString(part.rawValue);\n }\n\n parts.push(valueString);\n }\n\n return parts.join(compositeValue.separator);\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/DateTimeTypeConverter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module TypeConverters\n */\n\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { Primitives } from \"@itwin/appui-abstract\";\nimport {\n AlternateDateFormats,\n StandardTypeNames,\n TimeDisplay,\n} from \"@itwin/appui-abstract\";\nimport { TimeFormat } from \"@itwin/core-react\";\nimport { formatInputDate } from \"../datepicker/DateField\";\nimport { adjustDateToTimezone } from \"../common/DateUtils\";\nimport { UiComponents } from \"../UiComponents\";\nimport type { LessGreaterOperatorProcessor } from \"./TypeConverter\";\nimport { TypeConverter } from \"./TypeConverter\";\nimport { TypeConverterManager } from \"./TypeConverterManager\";\nimport type { ConvertedPrimitives } from \"./valuetypes/ConvertedTypes\";\n\n// cSpell:ignore datepicker valuetypes\n\n/**\n * DateTime Type Converter.\n * @public\n */\nexport abstract class DateTimeTypeConverterBase\n extends TypeConverter\n implements LessGreaterOperatorProcessor\n{\n public override convertToString(value?: Primitives.Value) {\n if (value === undefined) return \"\";\n\n if (typeof value === \"string\") value = new Date(value);\n\n // istanbul ignore else\n if (value instanceof Date) {\n switch (this.getTimeFormat()) {\n case TimeFormat.Short:\n return value.toLocaleDateString();\n case TimeFormat.Long:\n return value.toLocaleString();\n }\n return value.toISOString();\n }\n\n // istanbul ignore next\n return value.toString(); // eslint-disable-line @typescript-eslint/no-base-to-string\n }\n\n public static isValidTimeDisplay(type: TimeDisplay): boolean {\n return Object.keys(TimeDisplay).some(\n (key) => (TimeDisplay as any)[key] === type\n );\n }\n\n public static isAlternateDateFormats(type: AlternateDateFormats): boolean {\n return Object.keys(AlternateDateFormats).some(\n (key) => (AlternateDateFormats as any)[key] === type\n );\n }\n\n // supported options:\n // timeDisplay?: TimeDisplay\n // alternateDateFormat?: AlternateDateFormats\n public override convertToStringWithOptions(\n value?: Primitives.Value,\n options?: { [key: string]: any }\n ): string | Promise<string> {\n if (value === undefined) return \"\";\n\n if (options) {\n let timeDisplay: TimeDisplay | undefined =\n this.getTimeFormat() === TimeFormat.Long\n ? TimeDisplay.H12MC\n : undefined;\n let alternateDateFormat = AlternateDateFormats.None;\n\n // istanbul ignore else\n if (\n \"alternateDateFormat\" in options &&\n DateTimeTypeConverterBase.isAlternateDateFormats(\n options.alternateDateFormat\n )\n ) {\n alternateDateFormat = options.alternateDateFormat;\n }\n\n if (this.getTimeFormat() === TimeFormat.Long) {\n // istanbul ignore else\n if (\"timeDisplay\" in options) {\n // istanbul ignore if\n if (alternateDateFormat) {\n Logger.logInfo(\n UiComponents.loggerCategory(this),\n `Invalid specification of timeDisplay with alternateDateFormat specification`\n );\n } else {\n // istanbul ignore else\n if (\n DateTimeTypeConverterBase.isValidTimeDisplay(options.timeDisplay)\n )\n timeDisplay = options.timeDisplay;\n }\n }\n }\n\n // istanbul ignore else\n if (typeof value === \"string\") {\n value = new Date(value); // this value will be based on local time zone\n // istanbul ignore else\n if (value instanceof Date && alternateDateFormat) {\n // alternateDateFormat displays UTC time, so assume string is specifying UTC Date and Time\n value = adjustDateToTimezone(value, value.getTimezoneOffset() * -1);\n }\n }\n\n // istanbul ignore else\n if (value instanceof Date) {\n // Ensure if alternateDateFormat is specified make sure it matches proper Long/Short format.\n if (this.getTimeFormat() === TimeFormat.Long) {\n if (alternateDateFormat === AlternateDateFormats.IsoShort)\n alternateDateFormat = AlternateDateFormats.IsoDateTime;\n if (alternateDateFormat === AlternateDateFormats.UtcShort)\n alternateDateFormat = AlternateDateFormats.UtcDateTime;\n if (alternateDateFormat === AlternateDateFormats.UtcShortWithDay)\n alternateDateFormat = AlternateDateFormats.UtcDateTimeWithDay;\n } else {\n // short time format\n if (alternateDateFormat === AlternateDateFormats.IsoDateTime)\n alternateDateFormat = AlternateDateFormats.IsoShort;\n if (alternateDateFormat === AlternateDateFormats.UtcDateTime)\n alternateDateFormat = AlternateDateFormats.UtcShort;\n if (alternateDateFormat === AlternateDateFormats.UtcDateTimeWithDay)\n alternateDateFormat = AlternateDateFormats.UtcShortWithDay;\n }\n\n const formattedDateTime = formatInputDate(\n value,\n timeDisplay,\n undefined,\n alternateDateFormat\n );\n // istanbul ignore else\n if (formattedDateTime) return formattedDateTime;\n }\n }\n\n return this.convertToString(value);\n }\n\n /** Default implementation just calls convertFromString with no options */\n public override convertFromStringWithOptions(\n value: string,\n options?: { [key: string]: any }\n ):\n | ConvertedPrimitives.Value\n | undefined\n | Promise<ConvertedPrimitives.Value | undefined> {\n if (!value) return undefined;\n\n if (options) {\n let alternateDateFormat = AlternateDateFormats.None;\n\n // istanbul ignore else\n if (\n \"alternateDateFormat\" in options &&\n DateTimeTypeConverterBase.isAlternateDateFormats(\n options.alternateDateFormat\n )\n ) {\n alternateDateFormat = options.alternateDateFormat;\n }\n\n // istanbul ignore else\n let date = new Date(value); // this value will be based on local time zone\n // istanbul ignore else\n if (date instanceof Date && alternateDateFormat) {\n // alternateDateFormat displays UTC time, so assume string is specifying UTC Date and Time\n date = adjustDateToTimezone(date, date.getTimezoneOffset() * -1);\n }\n }\n\n return this.convertFromString(value);\n }\n\n private isDateValid(date: Date) {\n return date instanceof Date && !isNaN(+date);\n }\n\n public override convertFromString(value: string) {\n if (!value) return undefined;\n\n const dateValue = new Date(value);\n\n if (!this.isDateValid(dateValue)) return undefined;\n\n return dateValue;\n }\n\n protected abstract getTimeFormat(): TimeFormat;\n\n public override get isLessGreaterType(): boolean {\n return true;\n }\n\n public sortCompare(\n valueA: Date,\n valueB: Date,\n _ignoreCase?: boolean\n ): number {\n return valueA.valueOf() - valueB.valueOf();\n }\n\n public override isEqualTo(valueA: Date, valueB: Date): boolean {\n return valueA.valueOf() === valueB.valueOf();\n }\n\n public override isNotEqualTo(valueA: Date, valueB: Date): boolean {\n return valueA.valueOf() !== valueB.valueOf();\n }\n\n public isLessThan(a: Date, b: Date): boolean {\n return a.valueOf() < b.valueOf();\n }\n\n public isLessThanOrEqualTo(a: Date, b: Date): boolean {\n return a.valueOf() <= b.valueOf();\n }\n\n public isGreaterThan(a: Date, b: Date): boolean {\n return a.valueOf() > b.valueOf();\n }\n\n public isGreaterThanOrEqualTo(a: Date, b: Date): boolean {\n return a.valueOf() >= b.valueOf();\n }\n}\n\n/**\n * Short Date Type Converter.\n * @public\n */\nexport class ShortDateTypeConverter extends DateTimeTypeConverterBase {\n protected getTimeFormat(): TimeFormat {\n return TimeFormat.Short;\n }\n}\nTypeConverterManager.registerConverter(\n StandardTypeNames.ShortDate,\n ShortDateTypeConverter\n);\n\n/**\n * Date Time Type Converter.\n * @public\n */\nexport class DateTimeTypeConverter extends DateTimeTypeConverterBase {\n protected getTimeFormat(): TimeFormat {\n return TimeFormat.Long;\n }\n}\nTypeConverterManager.registerConverter(\n StandardTypeNames.DateTime,\n DateTimeTypeConverter\n);\n"]}
|
|
1
|
+
{"version":3,"file":"DateTimeTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/DateTimeTypeConverter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module TypeConverters\n */\n\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { Primitives } from \"@itwin/appui-abstract\";\nimport {\n AlternateDateFormats,\n StandardTypeNames,\n TimeDisplay,\n} from \"@itwin/appui-abstract\";\nimport { TimeFormat } from \"@itwin/core-react\";\nimport { formatInputDate } from \"../datepicker/DateField\";\nimport { adjustDateToTimezone } from \"../common/DateUtils\";\nimport { UiComponents } from \"../UiComponents\";\nimport type { LessGreaterOperatorProcessor } from \"./TypeConverter\";\nimport { TypeConverter } from \"./TypeConverter\";\nimport { TypeConverterManager } from \"./TypeConverterManager\";\nimport type { ConvertedPrimitives } from \"./valuetypes/ConvertedTypes\";\n\n// cSpell:ignore datepicker valuetypes\n\n/**\n * DateTime Type Converter.\n * @public\n */\nexport abstract class DateTimeTypeConverterBase\n extends TypeConverter\n implements LessGreaterOperatorProcessor\n{\n public override convertToString(value?: Primitives.Value) {\n if (value === undefined) return \"\";\n\n if (typeof value === \"string\") value = new Date(value);\n\n // istanbul ignore else\n if (value instanceof Date) {\n switch (this.getTimeFormat()) {\n case TimeFormat.Short:\n return value.toLocaleDateString();\n case TimeFormat.Long:\n return value.toLocaleString();\n }\n return value.toISOString();\n }\n\n // istanbul ignore next\n return value.toString(); // eslint-disable-line @typescript-eslint/no-base-to-string\n }\n\n public static isValidTimeDisplay(type: TimeDisplay): boolean {\n return Object.keys(TimeDisplay).some(\n (key) => (TimeDisplay as any)[key] === type\n );\n }\n\n public static isAlternateDateFormats(type: AlternateDateFormats): boolean {\n return Object.keys(AlternateDateFormats).some(\n (key) => (AlternateDateFormats as any)[key] === type\n );\n }\n\n // supported options:\n // timeDisplay?: TimeDisplay\n // alternateDateFormat?: AlternateDateFormats\n public override convertToStringWithOptions(\n value?: Primitives.Value,\n options?: { [key: string]: any }\n ): string | Promise<string> {\n if (value === undefined) return \"\";\n\n if (options) {\n let timeDisplay: TimeDisplay | undefined =\n this.getTimeFormat() === TimeFormat.Long\n ? TimeDisplay.H12MC\n : undefined;\n let alternateDateFormat = AlternateDateFormats.None;\n\n // istanbul ignore else\n if (\n \"alternateDateFormat\" in options &&\n DateTimeTypeConverterBase.isAlternateDateFormats(\n options.alternateDateFormat\n )\n ) {\n alternateDateFormat = options.alternateDateFormat;\n }\n\n if (this.getTimeFormat() === TimeFormat.Long) {\n // istanbul ignore else\n if (\"timeDisplay\" in options) {\n // istanbul ignore if\n if (alternateDateFormat) {\n Logger.logInfo(\n UiComponents.loggerCategory(this),\n `Invalid specification of timeDisplay with alternateDateFormat specification`\n );\n } else {\n // istanbul ignore else\n if (\n DateTimeTypeConverterBase.isValidTimeDisplay(options.timeDisplay)\n )\n timeDisplay = options.timeDisplay;\n }\n }\n }\n\n // istanbul ignore else\n if (typeof value === \"string\") {\n value = new Date(value); // this value will be based on local time zone\n // istanbul ignore else\n if (value instanceof Date && alternateDateFormat) {\n // alternateDateFormat displays UTC time, so assume string is specifying UTC Date and Time\n value = adjustDateToTimezone(value, value.getTimezoneOffset() * -1);\n }\n }\n\n // istanbul ignore else\n if (value instanceof Date) {\n // Ensure if alternateDateFormat is specified make sure it matches proper Long/Short format.\n if (this.getTimeFormat() === TimeFormat.Long) {\n if (alternateDateFormat === AlternateDateFormats.IsoShort)\n alternateDateFormat = AlternateDateFormats.IsoDateTime;\n if (alternateDateFormat === AlternateDateFormats.UtcShort)\n alternateDateFormat = AlternateDateFormats.UtcDateTime;\n if (alternateDateFormat === AlternateDateFormats.UtcShortWithDay)\n alternateDateFormat = AlternateDateFormats.UtcDateTimeWithDay;\n } else {\n // short time format\n if (alternateDateFormat === AlternateDateFormats.IsoDateTime)\n alternateDateFormat = AlternateDateFormats.IsoShort;\n if (alternateDateFormat === AlternateDateFormats.UtcDateTime)\n alternateDateFormat = AlternateDateFormats.UtcShort;\n if (alternateDateFormat === AlternateDateFormats.UtcDateTimeWithDay)\n alternateDateFormat = AlternateDateFormats.UtcShortWithDay;\n }\n\n const formattedDateTime = formatInputDate(\n value,\n timeDisplay,\n undefined,\n alternateDateFormat\n );\n // istanbul ignore else\n if (formattedDateTime) return formattedDateTime;\n }\n }\n\n return this.convertToString(value);\n }\n\n /** Default implementation just calls convertFromString with no options */\n public override convertFromStringWithOptions(\n value: string,\n options?: { [key: string]: any }\n ):\n | ConvertedPrimitives.Value\n | undefined\n | Promise<ConvertedPrimitives.Value | undefined> {\n if (!value) return undefined;\n\n if (options) {\n let alternateDateFormat = AlternateDateFormats.None;\n\n // istanbul ignore else\n if (\n \"alternateDateFormat\" in options &&\n DateTimeTypeConverterBase.isAlternateDateFormats(\n options.alternateDateFormat\n )\n ) {\n alternateDateFormat = options.alternateDateFormat;\n }\n\n // istanbul ignore else\n let date = new Date(value); // this value will be based on local time zone\n // istanbul ignore else\n if (date instanceof Date && alternateDateFormat) {\n // alternateDateFormat displays UTC time, so assume string is specifying UTC Date and Time\n date = adjustDateToTimezone(date, date.getTimezoneOffset() * -1);\n }\n }\n\n return this.convertFromString(value);\n }\n\n private isDateValid(date: Date) {\n return date instanceof Date && !isNaN(+date);\n }\n\n public override convertFromString(value: string) {\n if (!value) return undefined;\n\n const dateValue = new Date(value);\n\n if (!this.isDateValid(dateValue)) return undefined;\n\n return dateValue;\n }\n\n protected abstract getTimeFormat(): TimeFormat;\n\n public override get isLessGreaterType(): boolean {\n return true;\n }\n\n public sortCompare(\n valueA: Date,\n valueB: Date,\n _ignoreCase?: boolean\n ): number {\n return valueA.valueOf() - valueB.valueOf();\n }\n\n public override isEqualTo(valueA: Date, valueB: Date): boolean {\n return valueA.valueOf() === valueB.valueOf();\n }\n\n public override isNotEqualTo(valueA: Date, valueB: Date): boolean {\n return valueA.valueOf() !== valueB.valueOf();\n }\n\n public isLessThan(a: Date, b: Date): boolean {\n return a.valueOf() < b.valueOf();\n }\n\n public isLessThanOrEqualTo(a: Date, b: Date): boolean {\n return a.valueOf() <= b.valueOf();\n }\n\n public isGreaterThan(a: Date, b: Date): boolean {\n return a.valueOf() > b.valueOf();\n }\n\n public isGreaterThanOrEqualTo(a: Date, b: Date): boolean {\n return a.valueOf() >= b.valueOf();\n }\n}\n\n/**\n * Short Date Type Converter.\n * @public\n */\nexport class ShortDateTypeConverter extends DateTimeTypeConverterBase {\n protected getTimeFormat(): TimeFormat {\n return TimeFormat.Short;\n }\n}\nTypeConverterManager.registerConverter(\n StandardTypeNames.ShortDate,\n ShortDateTypeConverter\n);\n\n/**\n * Date Time Type Converter.\n * @public\n */\nexport class DateTimeTypeConverter extends DateTimeTypeConverterBase {\n protected getTimeFormat(): TimeFormat {\n return TimeFormat.Long;\n }\n}\nTypeConverterManager.registerConverter(\n StandardTypeNames.DateTime,\n DateTimeTypeConverter\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnumTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/EnumTypeConverter.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAQH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,aAAa;IAClC,uBAAuB,CACrC,mBAAwC,EACxC,KAAuB;QAEvB,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QAEnC,IAAI,mBAAmB,CAAC,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"EnumTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/EnumTypeConverter.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAQH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,aAAa;IAClC,uBAAuB,CACrC,mBAAwC,EACxC,KAAuB;QAEvB,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QAEnC,IAAI,mBAAmB,CAAC,IAAI,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAClC,OAA+B,EAC/B,KAAsB;QAEtB,IAAI,OAAO,GAAwB,EAAE,CAAC;QAEtC,IAAI,OAAO,CAAC,OAAO,YAAY,OAAO,EAAE,CAAC;YACvC,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC5B,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,KAAK,GAAG;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAE1C,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEO,WAAW,CACjB,OAA4B,EAC5B,KAAsB;QAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACxC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK;gBAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAEM,WAAW,CAChB,CAAkB,EAClB,CAAkB,EAClB,UAAoB;QAEpB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,OAAO,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,WAAW,CAC5D,CAAC,EACD,CAAC,EACD,UAAU,CACX,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjB,CAAC;CACF;AAED,oBAAoB,CAAC,iBAAiB,CACpC,iBAAiB,CAAC,IAAI,EACtB,iBAAiB,CAClB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module TypeConverters\n */\n\nimport type {\n EnumerationChoice,\n EnumerationChoicesInfo,\n Primitives,\n PropertyDescription,\n} from \"@itwin/appui-abstract\";\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { TypeConverter } from \"./TypeConverter\";\nimport { TypeConverterManager } from \"./TypeConverterManager\";\n\n/**\n * Enum Type Converter.\n * @public\n */\nexport class EnumTypeConverter extends TypeConverter {\n public override convertPropertyToString(\n propertyDescription: PropertyDescription,\n value?: Primitives.Enum\n ): string | Promise<string> {\n if (value === undefined) return \"\";\n\n if (propertyDescription.enum) {\n return this.getMatchingStringValue(propertyDescription.enum, value);\n }\n\n return super.convertToString(value);\n }\n\n private async getMatchingStringValue(\n enumVal: EnumerationChoicesInfo,\n value: Primitives.Enum\n ) {\n let choices: EnumerationChoice[] = [];\n\n if (enumVal.choices instanceof Promise) {\n choices = await enumVal.choices;\n } else {\n choices = enumVal.choices;\n }\n\n const pos = this.getPosition(choices, value);\n if (-1 !== pos) return choices[pos].label;\n\n return this.convertToString(value);\n }\n\n private getPosition(\n choices: EnumerationChoice[],\n value: Primitives.Enum\n ): number {\n for (let i = 0; i < choices.length; ++i) {\n if (choices[i].value === value) return i;\n }\n return -1;\n }\n\n public sortCompare(\n a: Primitives.Enum,\n b: Primitives.Enum,\n ignoreCase?: boolean\n ): number {\n if (isNaN(+a) || isNaN(+b)) {\n return TypeConverterManager.getConverter(\"string\").sortCompare(\n a,\n b,\n ignoreCase\n );\n }\n\n return +a - +b;\n }\n}\n\nTypeConverterManager.registerConverter(\n StandardTypeNames.Enum,\n EnumTypeConverter\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumericTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/NumericTypeConverter.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;GAGG;AACH,MAAM,OAAgB,wBACpB,SAAQ,aAAa;IAGrB,IAAoB,iBAAiB;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,UAAU,CAAC,CAAqB,EAAE,CAAqB;QAC5D,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAEM,mBAAmB,CACxB,CAAqB,EACrB,CAAqB;QAErB,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAEM,aAAa,CAAC,CAAqB,EAAE,CAAqB;QAC/D,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAEM,sBAAsB,CAC3B,CAAqB,EACrB,CAAqB;QAErB,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAEM,WAAW,CAChB,CAAqB,EACrB,CAAqB,EACrB,WAAqB;QAErB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,wBAAwB;IACtD,MAAM,CAAC,WAAW,CAAC,KAAa;QACtC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IAC7D,CAAC;IAEe,eAAe,CAAC,KAAwB;QACtD,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QAEnC,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"NumericTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/NumericTypeConverter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module TypeConverters\n */\n\nimport type { Primitives } from \"@itwin/appui-abstract\";\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\nimport type { LessGreaterOperatorProcessor } from \"./TypeConverter\";\nimport { TypeConverter } from \"./TypeConverter\";\nimport { TypeConverterManager } from \"./TypeConverterManager\";\n\n/**\n * Base Numeric Type Converter.\n * @public\n */\nexport abstract class NumericTypeConverterBase\n extends TypeConverter\n implements LessGreaterOperatorProcessor\n{\n public override get isLessGreaterType(): boolean {\n return true;\n }\n\n public isLessThan(a: Primitives.Numeric, b: Primitives.Numeric): boolean {\n return a < b;\n }\n\n public isLessThanOrEqualTo(\n a: Primitives.Numeric,\n b: Primitives.Numeric\n ): boolean {\n return a <= b;\n }\n\n public isGreaterThan(a: Primitives.Numeric, b: Primitives.Numeric): boolean {\n return a > b;\n }\n\n public isGreaterThanOrEqualTo(\n a: Primitives.Numeric,\n b: Primitives.Numeric\n ): boolean {\n return a >= b;\n }\n\n public sortCompare(\n a: Primitives.Numeric,\n b: Primitives.Numeric,\n _ignoreCase?: boolean\n ): number {\n return +a - +b;\n }\n}\n\n/**\n * Float Type Converter.\n * @public\n */\nexport class FloatTypeConverter extends NumericTypeConverterBase {\n private static parseString(value: string): number | undefined {\n const parsedValue = parseFloat(value);\n return Number.isNaN(parsedValue) ? undefined : parsedValue;\n }\n\n public override convertToString(value?: Primitives.Float) {\n if (value === undefined) return \"\";\n\n let numericValue = 0;\n if (typeof value === \"string\") {\n if (value === \"-\" || value === \"\" || value === \"-0.0\" || value === \"-0\") {\n // handle these semi-valid values as 0\n numericValue = 0;\n } else {\n numericValue = FloatTypeConverter.parseString(value) ?? 0;\n }\n } else {\n numericValue = value;\n }\n // this is close to calling `toFixed(2)`, but cuts of any trailing zeros\n let stringValue = (Math.round(100 * numericValue) / 100).toString();\n // because this is a _float_ converter, we want to emphasize the number is a float - make\n // sure there's a decimal part\n if (stringValue.indexOf(\".\") === -1) stringValue += \".0\";\n return stringValue;\n }\n\n public override convertFromString(value: string): number | undefined {\n return FloatTypeConverter.parseString(value);\n }\n}\nTypeConverterManager.registerConverter(\n StandardTypeNames.Float,\n FloatTypeConverter\n);\nTypeConverterManager.registerConverter(\n StandardTypeNames.Double,\n FloatTypeConverter\n);\nTypeConverterManager.registerConverter(\n StandardTypeNames.Number,\n FloatTypeConverter\n);\n\n/**\n * Int Type Converter.\n * @public\n */\nexport class IntTypeConverter extends NumericTypeConverterBase {\n private static parseString(value: string): number | undefined {\n const parsedValue = parseInt(value, 10);\n return Number.isNaN(parsedValue) ? undefined : parsedValue;\n }\n\n public override convertToString(value?: Primitives.Int) {\n if (value === undefined) return \"\";\n\n let numericValue = 0;\n if (typeof value === \"string\") {\n if (value === \"-\" || value === \"\" || value === \"-0\") {\n // handle these semi-valid values as 0\n numericValue = 0;\n } else {\n numericValue = IntTypeConverter.parseString(value) ?? 0;\n }\n } else {\n numericValue = value;\n }\n return Math.round(numericValue).toString();\n }\n\n public override convertFromString(value: string): number | undefined {\n return IntTypeConverter.parseString(value);\n }\n}\n\nTypeConverterManager.registerConverter(StandardTypeNames.Int, IntTypeConverter);\nTypeConverterManager.registerConverter(\n StandardTypeNames.Integer,\n IntTypeConverter\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/PointTypeConverter.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,2BAA2B;AAE3B;;;GAGG;AACH,MAAM,OAAgB,sBAAuB,SAAQ,aAAa;IAGhE,YACE,yBAAiC,iBAAiB,CAAC,MAAM;QAEzD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;IACvD,CAAC;IAEO,WAAW,CAAC,KAAsB;QACxC,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACzD,OAAO,oBAAoB,CAAC,YAAY,CACtC,IAAI,CAAC,sBAAsB,CAC5B,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAEe,eAAe,CAC7B,KAAwB;QAExB,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,IAAI,UAAU,GAAG,IAAI,KAAK,EAA4B,CAAC;QACvD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"PointTypeConverter.js","sourceRoot":"","sources":["../../../../src/components-react/converters/PointTypeConverter.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,2BAA2B;AAE3B;;;GAGG;AACH,MAAM,OAAgB,sBAAuB,SAAQ,aAAa;IAGhE,YACE,yBAAiC,iBAAiB,CAAC,MAAM;QAEzD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;IACvD,CAAC;IAEO,WAAW,CAAC,KAAsB;QACxC,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACzD,OAAO,oBAAoB,CAAC,YAAY,CACtC,IAAI,CAAC,sBAAsB,CAC5B,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAEe,eAAe,CAC7B,KAAwB;QAExB,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,IAAI,UAAU,GAAG,IAAI,KAAK,EAA4B,CAAC;QACvD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAClC,mEAAmE;YACnE,UAAU,GAAI,KAAgC,CAAC,GAAG,CAChD,CAAC,CAAC,EAA4B,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CACrD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,mEAAmE;YACnE,UAAU,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,IAAI,SAAS,KAAM,KAAa,CAAC,CAAC;gBAChC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAE,KAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,kBAAkB,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1D,IAAI,kBAAkB,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,GAAG,CAChB,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CACzE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEe,iBAAiB,CAAC,KAAa;QAC7C,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IASM,WAAW,CAChB,CAAmB,EACnB,CAAmB,EACnB,WAAqB;QAErB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAExC,IAAI,OAAO,KAAK,OAAO;YAAE,OAAO,CAAC,CAAC;QAClC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC,CAAC;QACrC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC;QAEpC,OAAO,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,sBAAsB;IAC9D,YAAmB,sBAA+B;QAChD,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAChC,CAAC;IAES,eAAe,CAAC,KAAuB;QAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAEhD,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAEjD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAES,cAAc,CACtB,MAAwB;QAExB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC/D,OAAO,SAAS,CAAC;YACnB,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,oBAAoB,CAAC,iBAAiB,CACpC,iBAAiB,CAAC,OAAO,EACzB,oBAAoB,CACrB,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,sBAAsB;IAC9D,YAAmB,sBAA+B;QAChD,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAChC,CAAC;IAES,eAAe,CAAC,KAAuB;QAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAEhD,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAEjD,OAAO,IAAI,CAAC,IAAI,CACd,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAC9B,CAAC;IACJ,CAAC;IAES,cAAc,CACtB,MAAwB;QAExB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,IACE,MAAM,CAAC,MAAM,KAAK,CAAC;gBACnB,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACjB,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACjB,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAEjB,OAAO,SAAS,CAAC;YACnB,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,CAAC;QACD,MAAM,CAAC,GAAI,MAAc,CAAC,CAAC,CAAC;QAC5B,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,CAAC;CACF;AAED,oBAAoB,CAAC,iBAAiB,CACpC,iBAAiB,CAAC,OAAO,EACzB,oBAAoB,CACrB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module TypeConverters\n */\n\nimport type { Primitives } from \"@itwin/appui-abstract\";\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { isPromiseLike } from \"@itwin/core-react\";\nimport { TypeConverter } from \"./TypeConverter\";\nimport { TypeConverterManager } from \"./TypeConverterManager\";\nimport type { ConvertedPrimitives } from \"./valuetypes/ConvertedTypes\";\n\n// cSpell:ignore valuetypes\n\n/**\n * Point type converter.\n * @public\n */\nexport abstract class BasePointTypeConverter extends TypeConverter {\n public componentConverterName: string;\n\n public constructor(\n componentConverterName: string = StandardTypeNames.Double\n ) {\n super();\n this.componentConverterName = componentConverterName;\n }\n\n private formatValue(value: number | string): string | Promise<string> {\n if (typeof value === \"string\") value = parseFloat(value);\n return TypeConverterManager.getConverter(\n this.componentConverterName\n ).convertToString(value);\n }\n\n public override convertToString(\n value?: Primitives.Point\n ): string | Promise<string> {\n if (!value) return \"\";\n\n let components = new Array<string | Promise<string>>();\n if (Array.isArray(value)) {\n if (value.length === 0) return \"\";\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n components = (value as Array<string | number>).map(\n (c): string | Promise<string> => this.formatValue(c)\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n components = [this.formatValue(value.x), this.formatValue(value.y)];\n if (undefined !== (value as any).z)\n components.push(this.formatValue((value as any).z));\n }\n const hasAsyncComponents = components.some(isPromiseLike);\n if (hasAsyncComponents) {\n return Promise.all(\n components.map(async (c) => (isPromiseLike(c) ? c : Promise.resolve(c)))\n ).then((c) => c.join(\", \"));\n }\n return components.join(\", \");\n }\n\n public override convertFromString(value: string) {\n return this.constructPoint(value.split(\",\"));\n }\n protected abstract constructPoint(\n _values: Primitives.Point\n ): ConvertedPrimitives.Point | undefined;\n\n protected abstract getVectorLength(\n point: Primitives.Point\n ): number | undefined;\n\n public sortCompare(\n a: Primitives.Point,\n b: Primitives.Point,\n _ignoreCase?: boolean\n ): number {\n const aLength = this.getVectorLength(a);\n const bLength = this.getVectorLength(b);\n\n if (aLength === bLength) return 0;\n if (aLength === undefined) return -1;\n if (bLength === undefined) return 1;\n\n return aLength - bLength;\n }\n}\n\n/**\n * Point2d type converter.\n * @public\n */\nexport class Point2dTypeConverter extends BasePointTypeConverter {\n public constructor(componentConverterName?: string) {\n super(componentConverterName);\n }\n\n protected getVectorLength(point: Primitives.Point): number | undefined {\n const derivedPoint = this.constructPoint(point);\n\n if (derivedPoint === undefined) return undefined;\n\n return Math.sqrt(Math.pow(derivedPoint.x, 2) + Math.pow(derivedPoint.y, 2));\n }\n\n protected constructPoint(\n values: Primitives.Point\n ): ConvertedPrimitives.Point2d | undefined {\n if (Array.isArray(values)) {\n if (values.length !== 2 || isNaN(+values[0]) || isNaN(+values[1]))\n return undefined;\n return { x: +values[0], y: +values[1] };\n }\n return values;\n }\n}\n\nTypeConverterManager.registerConverter(\n StandardTypeNames.Point2d,\n Point2dTypeConverter\n);\n\n/**\n * Point3d type converter.\n * @public\n */\nexport class Point3dTypeConverter extends BasePointTypeConverter {\n public constructor(componentConverterName?: string) {\n super(componentConverterName);\n }\n\n protected getVectorLength(point: Primitives.Point): number | undefined {\n const derivedPoint = this.constructPoint(point);\n\n if (derivedPoint === undefined) return undefined;\n\n return Math.sqrt(\n Math.pow(derivedPoint.x, 2) +\n Math.pow(derivedPoint.y, 2) +\n Math.pow(derivedPoint.z, 2)\n );\n }\n\n protected constructPoint(\n values: Primitives.Point\n ): ConvertedPrimitives.Point3d | undefined {\n if (Array.isArray(values)) {\n if (\n values.length !== 3 ||\n isNaN(+values[0]) ||\n isNaN(+values[1]) ||\n isNaN(+values[2])\n )\n return undefined;\n return { x: +values[0], y: +values[1], z: +values[2] };\n }\n const z = (values as any).z;\n return { ...values, z: z ? z : 0 };\n }\n}\n\nTypeConverterManager.registerConverter(\n StandardTypeNames.Point3d,\n Point3dTypeConverter\n);\n"]}
|
|
@@ -11,7 +11,7 @@ import { StringTypeConverter } from "./StringTypeConverter";
|
|
|
11
11
|
* Manages Type Converters. Type Converters are registered with and obtained from the manager.
|
|
12
12
|
* @public
|
|
13
13
|
*/
|
|
14
|
-
class TypeConverterManager {
|
|
14
|
+
export class TypeConverterManager {
|
|
15
15
|
static getFullConverterName(typename, converterName) {
|
|
16
16
|
let fullConverterName = typename;
|
|
17
17
|
if (converterName)
|
|
@@ -45,7 +45,6 @@ class TypeConverterManager {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
TypeConverterManager._converters = {};
|
|
48
|
-
export { TypeConverterManager };
|
|
49
48
|
// Register these here as this is also the default type register, we always want it to be registered
|
|
50
49
|
// and if moved to the StringTypeConverter it causes a dependency loop issue.
|
|
51
50
|
TypeConverterManager.registerConverter(StandardTypeNames.Text, StringTypeConverter);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeConverterManager.js","sourceRoot":"","sources":["../../../../src/components-react/converters/TypeConverterManager.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"TypeConverterManager.js","sourceRoot":"","sources":["../../../../src/components-react/converters/TypeConverterManager.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAIvB,MAAM,CAAC,oBAAoB,CACjC,QAAgB,EAChB,aAAsB;QAEtB,IAAI,iBAAiB,GAAG,QAAQ,CAAC;QACjC,IAAI,aAAa;YAAE,iBAAiB,IAAI,IAAI,aAAa,EAAE,CAAC;QAC5D,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAC7B,QAAgB,EAChB,SAAkC,EAClC,aAAsB;QAEtB,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,oBAAoB,CACjE,QAAQ,EACR,aAAa,CACd,CAAC;QAEF,IAAI,oBAAoB,CAAC,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACvE,MAAM,eAAe,GACnB,oBAAoB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;YACvE,MAAM,KAAK,CACT,uDAAuD,QAAQ,4BAA4B,eAAe,GAAG,CAC9G,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;QACjC,oBAAoB,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAC;IACjE,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAC/B,QAAgB,EAChB,aAAsB;QAEtB,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,oBAAoB,CACjE,QAAQ,EACR,aAAa,CACd,CAAC;QAEF,uBAAuB;QACvB,IAAI,oBAAoB,CAAC,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACvE,OAAO,oBAAoB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,YAAY,CACxB,QAAgB,EAChB,aAAsB;QAEtB,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,oBAAoB,CACjE,QAAQ,EACR,aAAa,CACd,CAAC;QAEF,IAAI,oBAAoB,CAAC,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC;YACpE,OAAO,oBAAoB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAE7D,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;YAChD,oBAAoB,CAAC,qBAAqB,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACzE,CAAC;QACD,OAAO,oBAAoB,CAAC,qBAAqB,CAAC;IACpD,CAAC;;AAjEc,gCAAW,GAAuC,EAAE,CAAC;AAoEtE,oGAAoG;AACpG,6EAA6E;AAC7E,oBAAoB,CAAC,iBAAiB,CACpC,iBAAiB,CAAC,IAAI,EACtB,mBAAmB,CACpB,CAAC;AACF,oBAAoB,CAAC,iBAAiB,CACpC,iBAAiB,CAAC,MAAM,EACxB,mBAAmB,CACpB,CAAC;AACF,oBAAoB,CAAC,iBAAiB,CACpC,iBAAiB,CAAC,GAAG,EACrB,mBAAmB,CACpB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module TypeConverters\n */\n\nimport { StandardTypeNames } from \"@itwin/appui-abstract\";\nimport type { TypeConverter } from \"./TypeConverter\";\nimport { StringTypeConverter } from \"./StringTypeConverter\";\n\n/**\n * Manages Type Converters. Type Converters are registered with and obtained from the manager.\n * @public\n */\nexport class TypeConverterManager {\n private static _converters: { [index: string]: TypeConverter } = {};\n private static _defaultTypeConverter: TypeConverter;\n\n private static getFullConverterName(\n typename: string,\n converterName?: string\n ): string {\n let fullConverterName = typename;\n if (converterName) fullConverterName += `:${converterName}`;\n return fullConverterName;\n }\n\n public static registerConverter(\n typename: string,\n converter: new () => TypeConverter,\n converterName?: string\n ): void {\n const fullConverterName = TypeConverterManager.getFullConverterName(\n typename,\n converterName\n );\n\n if (TypeConverterManager._converters.hasOwnProperty(fullConverterName)) {\n const nameOfConverter =\n TypeConverterManager._converters[fullConverterName].constructor.name;\n throw Error(\n `TypeConverterManager.registerConverter error: type '${typename}' already registered to '${nameOfConverter}'`\n );\n }\n\n const instance = new converter();\n TypeConverterManager._converters[fullConverterName] = instance;\n }\n\n public static unregisterConverter(\n typename: string,\n converterName?: string\n ): void {\n const fullConverterName = TypeConverterManager.getFullConverterName(\n typename,\n converterName\n );\n\n // istanbul ignore else\n if (TypeConverterManager._converters.hasOwnProperty(fullConverterName)) {\n delete TypeConverterManager._converters[fullConverterName];\n }\n }\n\n public static getConverter(\n typename: string,\n converterName?: string\n ): TypeConverter {\n const fullConverterName = TypeConverterManager.getFullConverterName(\n typename,\n converterName\n );\n\n if (TypeConverterManager._converters.hasOwnProperty(fullConverterName))\n return TypeConverterManager._converters[fullConverterName];\n\n if (!TypeConverterManager._defaultTypeConverter) {\n TypeConverterManager._defaultTypeConverter = new StringTypeConverter();\n }\n return TypeConverterManager._defaultTypeConverter;\n }\n}\n\n// Register these here as this is also the default type register, we always want it to be registered\n// and if moved to the StringTypeConverter it causes a dependency loop issue.\nTypeConverterManager.registerConverter(\n StandardTypeNames.Text,\n StringTypeConverter\n);\nTypeConverterManager.registerConverter(\n StandardTypeNames.String,\n StringTypeConverter\n);\nTypeConverterManager.registerConverter(\n StandardTypeNames.URL,\n StringTypeConverter\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateField.js","sourceRoot":"","sources":["../../../../src/components-react/datepicker/DateField.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE1E,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAmB7C;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,SAAe,EACf,WAAyB,EACzB,eAA+B,EAC/B,mBAA0C;IAE1C,IAAI,eAAe,EAAE;QACnB,OAAO,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;KAC/C;IAED,IAAI,mBAAmB,EAAE;QACvB,QAAQ,mBAAmB,EAAE;YAC3B,KAAK,oBAAoB,CAAC,WAAW;gBACnC,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC;YACjC,KAAK,oBAAoB,CAAC,QAAQ;gBAChC,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,KAAK,oBAAoB,CAAC,WAAW;gBACnC,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1C,KAAK,oBAAoB,CAAC,QAAQ;gBAChC,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,KAAK,oBAAoB,CAAC,kBAAkB;gBAC1C,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC;YACjC,KAAK,oBAAoB,CAAC,eAAe;gBACvC,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SAC/C;KACF;SAAM;QACL,MAAM,UAAU,GAAG,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE;YACzD,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QACH,IAAI,UAAU,GAAW,EAAE,CAAC;QAE5B,IAAI,WAAW,EAAE;YACf,QAAQ,WAAW,EAAE;gBACnB,KAAK,WAAW,CAAC,KAAK;oBACpB,UAAU,GAAG,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE;wBACnD,MAAM,EAAE,IAAI;wBACZ,IAAI,EAAE,SAAS;wBACf,MAAM,EAAE,SAAS;qBAClB,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,WAAW,CAAC,MAAM;oBACrB,UAAU,GAAG,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE;wBACnD,MAAM,EAAE,IAAI;wBACZ,IAAI,EAAE,SAAS;wBACf,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE,SAAS;qBAClB,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,WAAW,CAAC,IAAI;oBACnB,UAAU,GAAG,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE;wBACnD,MAAM,EAAE,KAAK;wBACb,IAAI,EAAE,SAAS;wBACf,MAAM,EAAE,SAAS;qBAClB,CAAC,CAAC;oBACH,uBAAuB;oBACvB,IAAI,UAAU,KAAK,OAAO;wBAAE,UAAU,GAAG,OAAO,CAAC;oBACjD,MAAM;gBACR,KAAK,WAAW,CAAC,KAAK;oBACpB,UAAU,GAAG,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE;wBACnD,MAAM,EAAE,KAAK;wBACb,IAAI,EAAE,SAAS;wBACf,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE,SAAS;qBAClB,CAAC,CAAC;oBACH,uBAAuB;oBACvB,IAAI,UAAU,KAAK,UAAU;wBAAE,UAAU,GAAG,UAAU,CAAC;oBACvD,MAAM;aACT;SACF;QACD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;KACxE;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,WAAW,EACX,KAAK,EACL,SAAS,GACM;IACf,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAChD,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CACzD,CAAC;IAEF,oEAAoE;IACpE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,uBAAuB;QACvB,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;YAC9D,cAAc,CAAC,OAAO,GAAG,WAAW,CAAC;SACtC;QACD,aAAa,CAAC,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;IAC1E,CAAC,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;IAE9C,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CACzC,CAAC,KAA0C,EAAE,EAAE;QAC7C,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CACjC,CAAC,UAAkB,EAAE,EAAE;QACrB,IAAI;YACF,IAAI,aAAa,IAAI,aAAa,CAAC,SAAS;gBAC1C,OAAO,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAE7C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC5C,uBAAuB;YACvB,IAAI,YAAY;gBAAE,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;SACjD;QAAC,OAAO,MAAM,EAAE,0BAA0B,CAAC;YAC1C,MAAM,CAAC,OAAO,CACZ,WAAW,EACX,0CAA0C,UAAU,cAAc,CACnE,CAAC;YACF,OAAO,SAAS,CAAC;SAClB;QACD,uBAAuB;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC,EACD,CAAC,aAAa,CAAC,CAChB,CAAC;IAEF,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CACvC,CAAC,UAAkB,EAAE,EAAE;QACrB,IAAI;YACF,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,YAAY,EAAE;gBAChB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;gBACvC,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtC,cAAc,CAAC,KAAK,CAAC,CAAC;aACvB;iBAAM;gBACL,cAAc,CAAC,IAAI,CAAC,CAAC;aACtB;SACF;QAAC,OAAO,MAAM,EAAE;YACf,uBAAuB;YACvB,cAAc,CAAC,IAAI,CAAC,CAAC;SACtB;IACH,CAAC,EACD,CAAC,YAAY,EAAE,SAAS,CAAC,CAC1B,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CACpC,CAAC,KAAyC,EAAE,EAAE;QAC5C,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,EACD,CAAC,eAAe,CAAC,CAClB,CAAC;IAEF,SAAS,cAAc,CAAC,KAA4C;QAClE,uBAAuB;QACvB,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACzB,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3C,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;IACH,CAAC;IACD,MAAM,UAAU,GAAG,UAAU,CAC3B,SAAS,EACT,uBAAuB,EACvB,WAAW,IAAI,2BAA2B,CAC3C,CAAC;IACF,OAAO,CACL,oBAAC,KAAK,mBACQ,uBAAuB,EACnC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,QAAQ,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EACjE,IAAI,EAAC,OAAO,GACZ,CACH,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Date\n */\n\nimport \"./DateField.scss\";\nimport * as React from \"react\";\nimport classnames from \"classnames\";\nimport type { DateFormatter } from \"@itwin/appui-abstract\";\nimport { AlternateDateFormats, TimeDisplay } from \"@itwin/appui-abstract\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { Input } from \"@itwin/itwinui-react\";\nimport { Logger } from \"@itwin/core-bentley\";\n\n/** Props for [[DateField]] Component.\n * @internal\n */\nexport interface DateFieldProps extends CommonProps {\n /** Defines initial date and time for component. */\n initialDate: Date;\n /** Function to call when the date or time is changed. */\n onDateChange?: (day: Date) => void;\n /** Optional value to define if edit field allows editing. If a DateFormatter is provided\n * it must provide a parseData function or the field will be read only no matter the setting of this value. */\n readOnly?: boolean;\n /** Optional date formatter that produces an explicit date display */\n dateFormatter?: DateFormatter;\n /** This property has two purposes, the first is specify that the display of time is desired and the second is to define the format of the time display. */\n timeDisplay?: TimeDisplay;\n}\n\n/** Function to format a Date object that is used in control, type editor, and type converter\n * to produce a consistent formatted Date string.\n * @internal\n */\nexport function formatInputDate(\n inputDate: Date,\n timeDisplay?: TimeDisplay,\n customFormatter?: DateFormatter,\n alternateDateFormat?: AlternateDateFormats\n): string | undefined {\n if (customFormatter) {\n return customFormatter.formateDate(inputDate);\n }\n\n if (alternateDateFormat) {\n switch (alternateDateFormat) {\n case AlternateDateFormats.IsoDateTime:\n return inputDate.toISOString();\n case AlternateDateFormats.IsoShort:\n return inputDate.toISOString().slice(0, 10);\n case AlternateDateFormats.UtcDateTime:\n return inputDate.toUTCString().slice(5);\n case AlternateDateFormats.UtcShort:\n return inputDate.toUTCString().slice(5, 16);\n case AlternateDateFormats.UtcDateTimeWithDay:\n return inputDate.toUTCString();\n case AlternateDateFormats.UtcShortWithDay:\n return inputDate.toUTCString().slice(0, 16);\n }\n } else {\n const dateString = inputDate.toLocaleDateString(undefined, {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n });\n let timeString: string = \"\";\n\n if (timeDisplay) {\n switch (timeDisplay) {\n case TimeDisplay.H12MC:\n timeString = inputDate.toLocaleTimeString(undefined, {\n hour12: true,\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n break;\n case TimeDisplay.H12MSC:\n timeString = inputDate.toLocaleTimeString(undefined, {\n hour12: true,\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n break;\n case TimeDisplay.H24M:\n timeString = inputDate.toLocaleTimeString(undefined, {\n hour12: false,\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n // istanbul ignore next\n if (timeString === \"24:00\") timeString = \"00:00\";\n break;\n case TimeDisplay.H24MS:\n timeString = inputDate.toLocaleTimeString(undefined, {\n hour12: false,\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n // istanbul ignore next\n if (timeString === \"24:00:00\") timeString = \"00:00:00\";\n break;\n }\n }\n return timeString.length ? `${dateString}, ${timeString}` : dateString;\n }\n}\n\n/** Date input component. This component is typically used by the [[DatePickerPopupButton]] to display and edit date and time.\n * @internal\n */\nexport function DateField({\n initialDate,\n onDateChange,\n readOnly,\n dateFormatter,\n timeDisplay,\n style,\n className,\n}: DateFieldProps) {\n const initialDateRef = React.useRef(initialDate);\n const [hasBadInput, setHasBadInput] = React.useState(false);\n const [inputValue, setInputValue] = React.useState(\n formatInputDate(initialDate, timeDisplay, dateFormatter)\n );\n\n // See if new initialDate props have changed since component mounted\n React.useEffect(() => {\n // istanbul ignore else\n if (initialDate.getTime() !== initialDateRef.current.getTime()) {\n initialDateRef.current = initialDate;\n }\n setInputValue(formatInputDate(initialDate, timeDisplay, dateFormatter));\n }, [initialDate, dateFormatter, timeDisplay]);\n\n const handleInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.currentTarget.value);\n },\n []\n );\n\n const parseDate = React.useCallback(\n (dateString: string) => {\n try {\n if (dateFormatter && dateFormatter.parseDate)\n return dateFormatter.parseDate(dateString);\n\n const newDateValue = Date.parse(dateString);\n // istanbul ignore next\n if (newDateValue) return new Date(newDateValue);\n } catch (_error) /* istanbul ignore next */ {\n Logger.logInfo(\n \"DateField\",\n `Encountered error parsing input value '${dateString}' as a date.`\n );\n return undefined;\n }\n // istanbul ignore next\n return undefined;\n },\n [dateFormatter]\n );\n\n const updateInputDate = React.useCallback(\n (dateString: string) => {\n try {\n const newDateValue = parseDate(dateString);\n if (newDateValue) {\n const newDate = new Date(newDateValue);\n onDateChange && onDateChange(newDate);\n setHasBadInput(false);\n } else {\n setHasBadInput(true);\n }\n } catch (_error) {\n // istanbul ignore next\n setHasBadInput(true);\n }\n },\n [onDateChange, parseDate]\n );\n\n const handleOnBlur = React.useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n updateInputDate(event.target.value);\n },\n [updateInputDate]\n );\n\n function onInputKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {\n // istanbul ignore else\n if (event.key === \"Enter\") {\n updateInputDate(event.currentTarget.value);\n event.preventDefault();\n }\n }\n const classNames = classnames(\n className,\n \"components-date-input\",\n hasBadInput && \"components-date-has-error\"\n );\n return (\n <Input\n data-testid=\"components-date-input\"\n style={style}\n className={classNames}\n onKeyDown={onInputKeyDown}\n onBlur={handleOnBlur}\n onChange={handleInputChange}\n value={inputValue}\n disabled={readOnly || (dateFormatter && !dateFormatter.parseDate)}\n size=\"small\"\n />\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DateField.js","sourceRoot":"","sources":["../../../../src/components-react/datepicker/DateField.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Date\n */\n\nimport \"./DateField.scss\";\nimport * as React from \"react\";\nimport classnames from \"classnames\";\nimport type { DateFormatter } from \"@itwin/appui-abstract\";\nimport { AlternateDateFormats, TimeDisplay } from \"@itwin/appui-abstract\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { Input } from \"@itwin/itwinui-react\";\nimport { Logger } from \"@itwin/core-bentley\";\n\n/** Props for [[DateField]] Component.\n * @internal\n */\nexport interface DateFieldProps extends CommonProps {\n /** Defines initial date and time for component. */\n initialDate: Date;\n /** Function to call when the date or time is changed. */\n onDateChange?: (day: Date) => void;\n /** Optional value to define if edit field allows editing. If a DateFormatter is provided\n * it must provide a parseData function or the field will be read only no matter the setting of this value. */\n readOnly?: boolean;\n /** Optional date formatter that produces an explicit date display */\n dateFormatter?: DateFormatter;\n /** This property has two purposes, the first is specify that the display of time is desired and the second is to define the format of the time display. */\n timeDisplay?: TimeDisplay;\n}\n\n/** Function to format a Date object that is used in control, type editor, and type converter\n * to produce a consistent formatted Date string.\n * @internal\n */\nexport function formatInputDate(\n inputDate: Date,\n timeDisplay?: TimeDisplay,\n customFormatter?: DateFormatter,\n alternateDateFormat?: AlternateDateFormats\n): string | undefined {\n if (customFormatter) {\n return customFormatter.formateDate(inputDate);\n }\n\n if (alternateDateFormat) {\n switch (alternateDateFormat) {\n case AlternateDateFormats.IsoDateTime:\n return inputDate.toISOString();\n case AlternateDateFormats.IsoShort:\n return inputDate.toISOString().slice(0, 10);\n case AlternateDateFormats.UtcDateTime:\n return inputDate.toUTCString().slice(5);\n case AlternateDateFormats.UtcShort:\n return inputDate.toUTCString().slice(5, 16);\n case AlternateDateFormats.UtcDateTimeWithDay:\n return inputDate.toUTCString();\n case AlternateDateFormats.UtcShortWithDay:\n return inputDate.toUTCString().slice(0, 16);\n }\n } else {\n const dateString = inputDate.toLocaleDateString(undefined, {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n });\n let timeString: string = \"\";\n\n if (timeDisplay) {\n switch (timeDisplay) {\n case TimeDisplay.H12MC:\n timeString = inputDate.toLocaleTimeString(undefined, {\n hour12: true,\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n break;\n case TimeDisplay.H12MSC:\n timeString = inputDate.toLocaleTimeString(undefined, {\n hour12: true,\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n break;\n case TimeDisplay.H24M:\n timeString = inputDate.toLocaleTimeString(undefined, {\n hour12: false,\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n // istanbul ignore next\n if (timeString === \"24:00\") timeString = \"00:00\";\n break;\n case TimeDisplay.H24MS:\n timeString = inputDate.toLocaleTimeString(undefined, {\n hour12: false,\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n // istanbul ignore next\n if (timeString === \"24:00:00\") timeString = \"00:00:00\";\n break;\n }\n }\n return timeString.length ? `${dateString}, ${timeString}` : dateString;\n }\n}\n\n/** Date input component. This component is typically used by the [[DatePickerPopupButton]] to display and edit date and time.\n * @internal\n */\nexport function DateField({\n initialDate,\n onDateChange,\n readOnly,\n dateFormatter,\n timeDisplay,\n style,\n className,\n}: DateFieldProps) {\n const initialDateRef = React.useRef(initialDate);\n const [hasBadInput, setHasBadInput] = React.useState(false);\n const [inputValue, setInputValue] = React.useState(\n formatInputDate(initialDate, timeDisplay, dateFormatter)\n );\n\n // See if new initialDate props have changed since component mounted\n React.useEffect(() => {\n // istanbul ignore else\n if (initialDate.getTime() !== initialDateRef.current.getTime()) {\n initialDateRef.current = initialDate;\n }\n setInputValue(formatInputDate(initialDate, timeDisplay, dateFormatter));\n }, [initialDate, dateFormatter, timeDisplay]);\n\n const handleInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.currentTarget.value);\n },\n []\n );\n\n const parseDate = React.useCallback(\n (dateString: string) => {\n try {\n if (dateFormatter && dateFormatter.parseDate)\n return dateFormatter.parseDate(dateString);\n\n const newDateValue = Date.parse(dateString);\n // istanbul ignore next\n if (newDateValue) return new Date(newDateValue);\n } catch (_error) /* istanbul ignore next */ {\n Logger.logInfo(\n \"DateField\",\n `Encountered error parsing input value '${dateString}' as a date.`\n );\n return undefined;\n }\n // istanbul ignore next\n return undefined;\n },\n [dateFormatter]\n );\n\n const updateInputDate = React.useCallback(\n (dateString: string) => {\n try {\n const newDateValue = parseDate(dateString);\n if (newDateValue) {\n const newDate = new Date(newDateValue);\n onDateChange && onDateChange(newDate);\n setHasBadInput(false);\n } else {\n setHasBadInput(true);\n }\n } catch (_error) {\n // istanbul ignore next\n setHasBadInput(true);\n }\n },\n [onDateChange, parseDate]\n );\n\n const handleOnBlur = React.useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n updateInputDate(event.target.value);\n },\n [updateInputDate]\n );\n\n function onInputKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {\n // istanbul ignore else\n if (event.key === \"Enter\") {\n updateInputDate(event.currentTarget.value);\n event.preventDefault();\n }\n }\n const classNames = classnames(\n className,\n \"components-date-input\",\n hasBadInput && \"components-date-has-error\"\n );\n return (\n <Input\n data-testid=\"components-date-input\"\n style={style}\n className={classNames}\n onKeyDown={onInputKeyDown}\n onBlur={handleOnBlur}\n onChange={handleInputChange}\n value={inputValue}\n disabled={readOnly || (dateFormatter && !dateFormatter.parseDate)}\n size=\"small\"\n />\n );\n}\n"]}
|