@longline/aqua-ui 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/Types.d.ts +6 -0
- package/Types.js +5 -0
- package/containers/Anchor/Anchor.d.ts +63 -0
- package/containers/Anchor/Anchor.js +113 -0
- package/containers/Anchor/index.d.ts +1 -0
- package/containers/Anchor/index.js +1 -0
- package/containers/Dock/Dock.d.ts +45 -0
- package/containers/Dock/Dock.js +61 -0
- package/containers/Dock/Dockable.d.ts +60 -0
- package/containers/Dock/Dockable.js +98 -0
- package/containers/Dock/index.d.ts +2 -0
- package/containers/Dock/index.js +2 -0
- package/containers/Form/Field.d.ts +104 -0
- package/containers/Form/Field.js +168 -0
- package/containers/Form/Form.d.ts +51 -0
- package/containers/Form/Form.js +89 -0
- package/containers/Form/Validation.d.ts +212 -0
- package/containers/Form/Validation.js +232 -0
- package/containers/Form/context/FormContext.d.ts +10 -0
- package/containers/Form/context/FormContext.js +3 -0
- package/containers/Form/context/useForm.d.ts +5 -0
- package/containers/Form/context/useForm.js +9 -0
- package/containers/Form/elements/BoxWrapper.d.ts +15 -0
- package/containers/Form/elements/BoxWrapper.js +35 -0
- package/containers/Form/elements/Hint.d.ts +21 -0
- package/containers/Form/elements/Hint.js +15 -0
- package/containers/Form/elements/Label.d.ts +22 -0
- package/containers/Form/elements/Label.js +15 -0
- package/containers/Form/elements/SimpleWrapper.d.ts +15 -0
- package/containers/Form/elements/SimpleWrapper.js +17 -0
- package/containers/GlassPane/GlassPane.d.ts +36 -0
- package/containers/GlassPane/GlassPane.js +66 -0
- package/containers/GlassPane/index.d.ts +1 -0
- package/containers/GlassPane/index.js +1 -0
- package/containers/InfoBox/InfoBox.d.ts +34 -0
- package/containers/InfoBox/InfoBox.js +45 -0
- package/containers/InfoBox/elements/Content.d.ts +23 -0
- package/containers/InfoBox/elements/Content.js +37 -0
- package/containers/InfoBox/elements/Footer.d.ts +9 -0
- package/containers/InfoBox/elements/Footer.js +24 -0
- package/containers/InfoBox/elements/Header.d.ts +9 -0
- package/containers/InfoBox/elements/Header.js +24 -0
- package/containers/List/List.d.ts +45 -0
- package/containers/List/List.js +47 -0
- package/containers/List/ListCell.d.ts +13 -0
- package/containers/List/ListCell.js +24 -0
- package/containers/List/ListRow.d.ts +15 -0
- package/containers/List/ListRow.js +24 -0
- package/containers/List/index.d.ts +3 -0
- package/containers/List/index.js +3 -0
- package/containers/Tabs/Pane.d.ts +29 -0
- package/containers/Tabs/Pane.js +45 -0
- package/containers/Tabs/Tabs.d.ts +66 -0
- package/containers/Tabs/Tabs.js +144 -0
- package/controls/Chip/Chip.d.ts +35 -0
- package/controls/Chip/Chip.js +83 -0
- package/controls/Fab/Fab.d.ts +73 -0
- package/controls/Fab/Fab.js +94 -0
- package/controls/Icon/Icon.d.ts +98 -0
- package/controls/Icon/Icon.js +79 -0
- package/controls/Icon/index.d.ts +1 -0
- package/controls/Icon/index.js +1 -0
- package/controls/Key/Key.d.ts +22 -0
- package/controls/Key/Key.js +74 -0
- package/controls/Key/index.d.ts +1 -0
- package/controls/Key/index.js +1 -0
- package/controls/LinearChart/LinearChart.d.ts +31 -0
- package/controls/LinearChart/LinearChart.js +58 -0
- package/controls/ListView/Body.d.ts +8 -0
- package/controls/ListView/Body.js +24 -0
- package/controls/ListView/Column.d.ts +55 -0
- package/controls/ListView/Column.js +8 -0
- package/controls/ListView/ColumnsManager/ColumnDraggable.d.ts +11 -0
- package/controls/ListView/ColumnsManager/ColumnDraggable.js +83 -0
- package/controls/ListView/ColumnsManager/ColumnsManager.d.ts +12 -0
- package/controls/ListView/ColumnsManager/ColumnsManager.js +63 -0
- package/controls/ListView/ColumnsManager/OrderColumns.d.ts +11 -0
- package/controls/ListView/ColumnsManager/OrderColumns.js +62 -0
- package/controls/ListView/ColumnsManager/SourceColumns.d.ts +10 -0
- package/controls/ListView/ColumnsManager/SourceColumns.js +45 -0
- package/controls/ListView/Ghost.d.ts +9 -0
- package/controls/ListView/Ghost.js +52 -0
- package/controls/ListView/Header.d.ts +12 -0
- package/controls/ListView/Header.js +35 -0
- package/controls/ListView/HeaderButton.d.ts +8 -0
- package/controls/ListView/HeaderButton.js +8 -0
- package/controls/ListView/HeaderCell.d.ts +20 -0
- package/controls/ListView/HeaderCell.js +47 -0
- package/controls/ListView/IListViewProps.d.ts +105 -0
- package/controls/ListView/IListViewProps.js +1 -0
- package/controls/ListView/ListView.d.ts +20 -0
- package/controls/ListView/ListView.js +97 -0
- package/controls/ListView/NoData.d.ts +19 -0
- package/controls/ListView/NoData.js +30 -0
- package/controls/ListView/SortButton.d.ts +16 -0
- package/controls/ListView/SortButton.js +26 -0
- package/controls/ListView/Table.d.ts +18 -0
- package/controls/ListView/Table.js +99 -0
- package/controls/ListView/Total.d.ts +9 -0
- package/controls/ListView/Total.js +28 -0
- package/controls/ListView/sortItems.d.ts +6 -0
- package/controls/ListView/sortItems.js +35 -0
- package/controls/Mouse/Mouse.d.ts +38 -0
- package/controls/Mouse/Mouse.js +51 -0
- package/controls/Mouse/index.d.ts +1 -0
- package/controls/Mouse/index.js +1 -0
- package/controls/PrimaryButton/PrimaryButton.d.ts +63 -0
- package/controls/PrimaryButton/PrimaryButton.js +83 -0
- package/controls/PrimaryButton/index.d.ts +1 -0
- package/controls/PrimaryButton/index.js +1 -0
- package/controls/Progress/Progress.d.ts +35 -0
- package/controls/Progress/Progress.js +49 -0
- package/controls/SecondaryButton/SecondaryButton.d.ts +58 -0
- package/controls/SecondaryButton/SecondaryButton.js +73 -0
- package/controls/SecondaryButton/index.d.ts +1 -0
- package/controls/SecondaryButton/index.js +1 -0
- package/controls/TabBar/Tab.d.ts +21 -0
- package/controls/TabBar/Tab.js +25 -0
- package/controls/TabBar/TabBar.d.ts +34 -0
- package/controls/TabBar/TabBar.js +134 -0
- package/controls/TabBar/Underliner.d.ts +7 -0
- package/controls/TabBar/Underliner.js +27 -0
- package/controls/TabBar/index.d.ts +1 -0
- package/controls/TabBar/index.js +1 -0
- package/controls/TertiaryButton/TertiaryButton.d.ts +28 -0
- package/controls/TertiaryButton/TertiaryButton.js +65 -0
- package/controls/TertiaryButton/index.d.ts +1 -0
- package/controls/TertiaryButton/index.js +1 -0
- package/controls/View/View.d.ts +35 -0
- package/controls/View/View.js +58 -0
- package/formatters/Date/DateTime.d.ts +45 -0
- package/formatters/Date/DateTime.js +64 -0
- package/formatters/Date/elements/Custom.d.ts +18 -0
- package/formatters/Date/elements/Custom.js +22 -0
- package/formatters/Date/elements/Distance.d.ts +24 -0
- package/formatters/Date/elements/Distance.js +45 -0
- package/formatters/Date/elements/LongDate.d.ts +17 -0
- package/formatters/Date/elements/LongDate.js +11 -0
- package/formatters/Date/elements/LongDateTime.d.ts +14 -0
- package/formatters/Date/elements/LongDateTime.js +10 -0
- package/formatters/Date/elements/LongTime.d.ts +14 -0
- package/formatters/Date/elements/LongTime.js +10 -0
- package/formatters/Date/elements/ShortDate.d.ts +14 -0
- package/formatters/Date/elements/ShortDate.js +10 -0
- package/formatters/Date/elements/ShortDateTime.d.ts +14 -0
- package/formatters/Date/elements/ShortDateTime.js +10 -0
- package/formatters/Date/elements/ShortTime.d.ts +18 -0
- package/formatters/Date/elements/ShortTime.js +10 -0
- package/formatters/Date/elements/toDate.d.ts +2 -0
- package/formatters/Date/elements/toDate.js +13 -0
- package/formatters/Filesize/Filesize.d.ts +29 -0
- package/formatters/Filesize/Filesize.js +54 -0
- package/formatters/GIS/Latitude.d.ts +23 -0
- package/formatters/GIS/Latitude.js +13 -0
- package/formatters/GIS/Longitude.d.ts +23 -0
- package/formatters/GIS/Longitude.js +13 -0
- package/formatters/GIS/index.d.ts +2 -0
- package/formatters/GIS/index.js +2 -0
- package/formatters/GIS/toDMS.d.ts +2 -0
- package/formatters/GIS/toDMS.js +16 -0
- package/formatters/Highlight/Highlight.d.ts +22 -0
- package/formatters/Highlight/Highlight.js +32 -0
- package/formatters/Highlight/index.d.ts +1 -0
- package/formatters/Highlight/index.js +1 -0
- package/formatters/Human/Human.d.ts +18 -0
- package/formatters/Human/Human.js +34 -0
- package/formatters/Human/index.d.ts +1 -0
- package/formatters/Human/index.js +1 -0
- package/formatters/Number/Number.d.ts +24 -0
- package/formatters/Number/Number.js +36 -0
- package/formatters/Number/index.d.ts +1 -0
- package/formatters/Number/index.js +1 -0
- package/helper/DMS.d.ts +22 -0
- package/helper/DMS.js +46 -0
- package/helper/HslColor.d.ts +11 -0
- package/helper/HslColor.js +47 -0
- package/helper/RgbColor.d.ts +43 -0
- package/helper/RgbColor.js +162 -0
- package/helper/SizeHelper.d.ts +10 -0
- package/helper/SizeHelper.js +56 -0
- package/helper/darken.d.ts +8 -0
- package/helper/darken.js +18 -0
- package/helper/guard.d.ts +5 -0
- package/helper/guard.js +7 -0
- package/helper/lighten.d.ts +8 -0
- package/helper/lighten.js +11 -0
- package/helper/nameToHex.d.ts +6 -0
- package/helper/nameToHex.js +163 -0
- package/inputs/DateInput/Body.d.ts +34 -0
- package/inputs/DateInput/Body.js +50 -0
- package/inputs/DateInput/Calendar.d.ts +15 -0
- package/inputs/DateInput/Calendar.js +60 -0
- package/inputs/DateInput/DateInput.d.ts +73 -0
- package/inputs/DateInput/DateInput.js +143 -0
- package/inputs/DateInput/Day.d.ts +32 -0
- package/inputs/DateInput/Day.js +33 -0
- package/inputs/DateInput/InfiniteList.d.ts +26 -0
- package/inputs/DateInput/InfiniteList.js +87 -0
- package/inputs/DateInput/Nav.d.ts +11 -0
- package/inputs/DateInput/Nav.js +24 -0
- package/inputs/DateInput/Navbar.d.ts +16 -0
- package/inputs/DateInput/Navbar.js +33 -0
- package/inputs/DateInput/NumericInput.d.ts +14 -0
- package/inputs/DateInput/NumericInput.js +48 -0
- package/inputs/DateInput/Selector.d.ts +47 -0
- package/inputs/DateInput/Selector.js +55 -0
- package/inputs/DateInput/SimpleList.d.ts +19 -0
- package/inputs/DateInput/SimpleList.js +31 -0
- package/inputs/Dropdown/Body.d.ts +25 -0
- package/inputs/Dropdown/Body.js +14 -0
- package/inputs/Dropdown/Column.d.ts +21 -0
- package/inputs/Dropdown/Column.js +6 -0
- package/inputs/Dropdown/Dropdown.d.ts +136 -0
- package/inputs/Dropdown/Dropdown.js +446 -0
- package/inputs/Dropdown/Selection.d.ts +11 -0
- package/inputs/Dropdown/Selection.js +23 -0
- package/inputs/Dropdown/Selector.d.ts +29 -0
- package/inputs/Dropdown/Selector.js +16 -0
- package/inputs/Editor/Editor.d.ts +45 -0
- package/inputs/Editor/Editor.js +60 -0
- package/inputs/Editor/buttons/BoldButton.d.ts +7 -0
- package/inputs/Editor/buttons/BoldButton.js +7 -0
- package/inputs/Editor/buttons/BulletListButton.d.ts +7 -0
- package/inputs/Editor/buttons/BulletListButton.js +7 -0
- package/inputs/Editor/buttons/CodeBlockButton.d.ts +7 -0
- package/inputs/Editor/buttons/CodeBlockButton.js +7 -0
- package/inputs/Editor/buttons/CodeButton.d.ts +7 -0
- package/inputs/Editor/buttons/CodeButton.js +7 -0
- package/inputs/Editor/buttons/ItalicButton.d.ts +7 -0
- package/inputs/Editor/buttons/ItalicButton.js +7 -0
- package/inputs/Editor/buttons/OrderedListButton.d.ts +7 -0
- package/inputs/Editor/buttons/OrderedListButton.js +7 -0
- package/inputs/Editor/buttons/StrikethroughButton.d.ts +7 -0
- package/inputs/Editor/buttons/StrikethroughButton.js +7 -0
- package/inputs/Editor/menu/MenuBar.d.ts +9 -0
- package/inputs/Editor/menu/MenuBar.js +44 -0
- package/inputs/Editor/menu/MenuButton.d.ts +35 -0
- package/inputs/Editor/menu/MenuButton.js +34 -0
- package/inputs/Editor/menu/MenuSeparator.d.ts +7 -0
- package/inputs/Editor/menu/MenuSeparator.js +24 -0
- package/inputs/Input/Clear.d.ts +7 -0
- package/inputs/Input/Clear.js +14 -0
- package/inputs/Input/Input.d.ts +133 -0
- package/inputs/Input/Input.js +64 -0
- package/inputs/Input/InputWrapper.d.ts +23 -0
- package/inputs/Input/InputWrapper.js +57 -0
- package/inputs/Input/index.d.ts +1 -0
- package/inputs/Input/index.js +1 -0
- package/inputs/Selector/ISelectorProps.d.ts +29 -0
- package/inputs/Selector/ISelectorProps.js +1 -0
- package/inputs/Selector/Selector.d.ts +29 -0
- package/inputs/Selector/Selector.js +77 -0
- package/inputs/Selector/index.d.ts +1 -0
- package/inputs/Selector/index.js +1 -0
- package/inputs/Selector/widgets/Checkbox.d.ts +6 -0
- package/inputs/Selector/widgets/Checkbox.js +29 -0
- package/inputs/Selector/widgets/Toggle.d.ts +6 -0
- package/inputs/Selector/widgets/Toggle.js +24 -0
- package/inputs/Slider/Slider.d.ts +63 -0
- package/inputs/Slider/Slider.js +198 -0
- package/inputs/Textarea/Textarea.d.ts +79 -0
- package/inputs/Textarea/Textarea.js +65 -0
- package/main.js +32 -0
- package/map/Map/Map.d.ts +47 -0
- package/map/Map/Map.js +221 -0
- package/map/Map/index.d.ts +1 -0
- package/map/Map/index.js +1 -0
- package/map/PositionsManager/PositionBox.d.ts +14 -0
- package/map/PositionsManager/PositionBox.js +86 -0
- package/map/PositionsManager/PositionsManager.d.ts +27 -0
- package/map/PositionsManager/PositionsManager.js +99 -0
- package/map/controls/CompassButton/CompassButton.d.ts +33 -0
- package/map/controls/CompassButton/CompassButton.js +88 -0
- package/map/controls/FullscreenButton/FullscreenButton.d.ts +21 -0
- package/map/controls/FullscreenButton/FullscreenButton.js +62 -0
- package/map/controls/Geocoder/Geocoder.d.ts +49 -0
- package/map/controls/Geocoder/Geocoder.js +179 -0
- package/map/controls/Geocoder/GeocoderApi.d.ts +59 -0
- package/map/controls/Geocoder/GeocoderApi.js +68 -0
- package/map/controls/Geocoder/GeocoderEntry.d.ts +15 -0
- package/map/controls/Geocoder/GeocoderEntry.js +18 -0
- package/map/controls/Geocoder/GeocoderList.d.ts +10 -0
- package/map/controls/Geocoder/GeocoderList.js +18 -0
- package/map/controls/Geocoder/GeocoderSelector.d.ts +16 -0
- package/map/controls/Geocoder/GeocoderSelector.js +25 -0
- package/map/controls/Graticule/Graticule.d.ts +35 -0
- package/map/controls/Graticule/Graticule.js +142 -0
- package/map/controls/MapLoader/MapLoader.d.ts +33 -0
- package/map/controls/MapLoader/MapLoader.js +73 -0
- package/map/controls/ScaleControl/ScaleControl.d.ts +24 -0
- package/map/controls/ScaleControl/ScaleControl.js +107 -0
- package/map/controls/ZoomInButton/ZoomInButton.d.ts +19 -0
- package/map/controls/ZoomInButton/ZoomInButton.js +56 -0
- package/map/controls/ZoomOutButton/ZoomOutButton.d.ts +19 -0
- package/map/controls/ZoomOutButton/ZoomOutButton.js +56 -0
- package/map/controls/base/MapButton/Hint.d.ts +17 -0
- package/map/controls/base/MapButton/Hint.js +34 -0
- package/map/controls/base/MapButton/MapButton.d.ts +46 -0
- package/map/controls/base/MapButton/MapButton.js +71 -0
- package/map/controls/base/MapButton/index.d.ts +1 -0
- package/map/controls/base/MapButton/index.js +1 -0
- package/map/controls/base/MapButtonGroup/MapButtonGroup.d.ts +17 -0
- package/map/controls/base/MapButtonGroup/MapButtonGroup.js +24 -0
- package/map/controls/base/MapControl/MapControl.d.ts +36 -0
- package/map/controls/base/MapControl/MapControl.js +77 -0
- package/map/controls/base/MapControl/index.d.ts +1 -0
- package/map/controls/base/MapControl/index.js +1 -0
- package/map/layers/ClusterLayer/ClusterLayer.d.ts +79 -0
- package/map/layers/ClusterLayer/ClusterLayer.js +118 -0
- package/map/layers/HtmlMarkerLayer/HtmlMarkerLayer.d.ts +51 -0
- package/map/layers/HtmlMarkerLayer/HtmlMarkerLayer.js +151 -0
- package/map/layers/InterpolationLayer/ContoursFragmentShader.d.ts +2 -0
- package/map/layers/InterpolationLayer/ContoursFragmentShader.js +2 -0
- package/map/layers/InterpolationLayer/ContoursVertexShader.d.ts +2 -0
- package/map/layers/InterpolationLayer/ContoursVertexShader.js +2 -0
- package/map/layers/InterpolationLayer/IGradientStop.d.ts +5 -0
- package/map/layers/InterpolationLayer/IGradientStop.js +1 -0
- package/map/layers/InterpolationLayer/InterpolationLayer.d.ts +35 -0
- package/map/layers/InterpolationLayer/InterpolationLayer.js +256 -0
- package/map/layers/InterpolationLayer/LevelsFragmentShader.d.ts +2 -0
- package/map/layers/InterpolationLayer/LevelsFragmentShader.js +2 -0
- package/map/layers/InterpolationLayer/LevelsVertexShader.d.ts +2 -0
- package/map/layers/InterpolationLayer/LevelsVertexShader.js +2 -0
- package/map/layers/ParticlesLayer/ParticlesFragmentShader.d.ts +2 -0
- package/map/layers/ParticlesLayer/ParticlesFragmentShader.js +2 -0
- package/map/layers/ParticlesLayer/ParticlesLayer.d.ts +40 -0
- package/map/layers/ParticlesLayer/ParticlesLayer.js +337 -0
- package/map/layers/ParticlesLayer/ParticlesVertexShader.d.ts +2 -0
- package/map/layers/ParticlesLayer/ParticlesVertexShader.js +2 -0
- package/map/layers/ParticlesLayer/UVFragmentShader.d.ts +2 -0
- package/map/layers/ParticlesLayer/UVFragmentShader.js +2 -0
- package/map/layers/ParticlesLayer/UVVertexShader.d.ts +2 -0
- package/map/layers/ParticlesLayer/UVVertexShader.js +2 -0
- package/map/markers/ClusterMarker/ClusterMarker.d.ts +36 -0
- package/map/markers/ClusterMarker/ClusterMarker.js +99 -0
- package/map/markers/ClusterMarker/index.d.ts +1 -0
- package/map/markers/ClusterMarker/index.js +1 -0
- package/map/markers/RiskMarker/RiskMarker.d.ts +22 -0
- package/map/markers/RiskMarker/RiskMarker.js +61 -0
- package/modules/MainMenu/Item.d.ts +42 -0
- package/modules/MainMenu/Item.js +94 -0
- package/modules/MainMenu/MainMenu.d.ts +20 -0
- package/modules/MainMenu/MainMenu.js +41 -0
- package/modules/MainMenu/index.d.ts +1 -0
- package/modules/MainMenu/index.js +1 -0
- package/modules/Root/Content.d.ts +16 -0
- package/modules/Root/Content.js +25 -0
- package/modules/Root/Overlay.d.ts +23 -0
- package/modules/Root/Overlay.js +33 -0
- package/modules/Root/Root.d.ts +7 -0
- package/modules/Root/Root.js +45 -0
- package/modules/Root/Shader.d.ts +15 -0
- package/modules/Root/Shader.js +24 -0
- package/modules/Root/Sidebar.d.ts +13 -0
- package/modules/Root/Sidebar.js +24 -0
- package/modules/Root/stories/SampleContent.d.ts +7 -0
- package/modules/Root/stories/SampleContent.js +44 -0
- package/package.json +64 -0
- package/services/Dialog/AlertDialog.d.ts +31 -0
- package/services/Dialog/AlertDialog.js +29 -0
- package/services/Dialog/ConfirmDialog.d.ts +34 -0
- package/services/Dialog/ConfirmDialog.js +30 -0
- package/services/Dialog/Dialog.d.ts +91 -0
- package/services/Dialog/Dialog.js +92 -0
- package/services/Dialog/DialogBackground.d.ts +7 -0
- package/services/Dialog/DialogBackground.js +12 -0
- package/services/Dialog/DialogContent.d.ts +25 -0
- package/services/Dialog/DialogContent.js +38 -0
- package/services/Dialog/DialogFooter.d.ts +24 -0
- package/services/Dialog/DialogFooter.js +50 -0
- package/services/Dialog/DialogHeader.d.ts +18 -0
- package/services/Dialog/DialogHeader.js +36 -0
- package/services/Dialog/DialogWindow.d.ts +13 -0
- package/services/Dialog/DialogWindow.js +12 -0
- package/services/Dialog/XhrDialog.d.ts +34 -0
- package/services/Dialog/XhrDialog.js +321 -0
- package/services/Toast/IToastMessage.d.ts +10 -0
- package/services/Toast/IToastMessage.js +1 -0
- package/services/Toast/IToastProps.d.ts +23 -0
- package/services/Toast/IToastProps.js +1 -0
- package/services/Toast/Toast.d.ts +21 -0
- package/services/Toast/Toast.js +79 -0
- package/services/Toast/ToastContainer.d.ts +40 -0
- package/services/Toast/ToastContainer.js +65 -0
- package/services/Toast/ToastContext.d.ts +22 -0
- package/services/Toast/ToastContext.js +7 -0
- package/services/Toast/ToastProvider.d.ts +19 -0
- package/services/Toast/ToastProvider.js +67 -0
- package/services/Toast/index.d.ts +2 -0
- package/services/Toast/index.js +2 -0
- package/services/Toast/useToast.d.ts +5 -0
- package/services/Toast/useToast.js +9 -0
- package/spritemap.svg +1 -0
- package/styles/NormalTheme.d.ts +3 -0
- package/styles/NormalTheme.js +65 -0
- package/styles/StyleBase.d.ts +2 -0
- package/styles/StyleBase.js +8 -0
- package/styles/StyleReset.d.ts +2 -0
- package/styles/StyleReset.js +8 -0
- package/svg/editor/index.d.ts +10 -0
- package/svg/editor/index.js +11 -0
- package/svg/file/index.d.ts +5 -0
- package/svg/file/index.js +6 -0
- package/svg/icons/index.d.ts +36 -0
- package/svg/icons/index.js +37 -0
- package/svg/index.d.ts +11 -0
- package/svg/index.js +5 -0
- package/svg/menu/index.d.ts +8 -0
- package/svg/menu/index.js +9 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { IMapControlProps } from '../MapControl';
|
|
3
|
+
interface IMapButtonProps extends IMapControlProps {
|
|
4
|
+
/**
|
|
5
|
+
* Is the button currently active?
|
|
6
|
+
* @default false*
|
|
7
|
+
*/
|
|
8
|
+
active?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Is the button currently disabled?
|
|
11
|
+
* @default false
|
|
12
|
+
*/
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Optional hint to show on hover. This can be JSX. No hint is shown if this value is `null`.
|
|
16
|
+
*/
|
|
17
|
+
hint?: React.ReactNode;
|
|
18
|
+
/**
|
|
19
|
+
* Button size in pixels.
|
|
20
|
+
* @defaultValue 32
|
|
21
|
+
*/
|
|
22
|
+
size?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Is this button grouped with siblings? This is the case when it is inside a `MapButtonGroup`.
|
|
25
|
+
*/
|
|
26
|
+
grouped?: boolean;
|
|
27
|
+
}
|
|
28
|
+
interface IProps {
|
|
29
|
+
/** @ignore */
|
|
30
|
+
className?: string;
|
|
31
|
+
/** @ignore */
|
|
32
|
+
children?: React.ReactNode;
|
|
33
|
+
/**
|
|
34
|
+
* Fired when the map button is clicked.
|
|
35
|
+
*/
|
|
36
|
+
onClick: () => void;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* A `MapButton` is a square button to be used on a Mapbox map. It must
|
|
40
|
+
* be provided with the `ViewState` by the underlying `Map`.
|
|
41
|
+
*
|
|
42
|
+
* This component is **abstract**: the button has no content by itself,
|
|
43
|
+
* which must be provided by its child.
|
|
44
|
+
*/
|
|
45
|
+
declare const MapButton: ({ size, disabled, active, grouped, ...props }: IProps & IMapButtonProps) => React.JSX.Element;
|
|
46
|
+
export { MapButton, IMapButtonProps, IProps };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
2
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
3
|
+
return cooked;
|
|
4
|
+
};
|
|
5
|
+
var __assign = (this && this.__assign) || function () {
|
|
6
|
+
__assign = Object.assign || function(t) {
|
|
7
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
8
|
+
s = arguments[i];
|
|
9
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
10
|
+
t[p] = s[p];
|
|
11
|
+
}
|
|
12
|
+
return t;
|
|
13
|
+
};
|
|
14
|
+
return __assign.apply(this, arguments);
|
|
15
|
+
};
|
|
16
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
17
|
+
var t = {};
|
|
18
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
19
|
+
t[p] = s[p];
|
|
20
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
21
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
22
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
23
|
+
t[p[i]] = s[p[i]];
|
|
24
|
+
}
|
|
25
|
+
return t;
|
|
26
|
+
};
|
|
27
|
+
import * as React from 'react';
|
|
28
|
+
import styled, { css } from 'styled-components';
|
|
29
|
+
import { Hint } from './Hint';
|
|
30
|
+
import { MapControl } from '../MapControl';
|
|
31
|
+
var MapButtonBase = function (props) {
|
|
32
|
+
var handleClick = function () {
|
|
33
|
+
if (props.disabled)
|
|
34
|
+
return;
|
|
35
|
+
if (props.onClick)
|
|
36
|
+
props.onClick();
|
|
37
|
+
};
|
|
38
|
+
var renderButton = function () {
|
|
39
|
+
return React.createElement("div", { className: props.className, tabIndex: props.disabled ? -1 : 0, onClick: handleClick },
|
|
40
|
+
React.createElement(Button, { "$grouped": props.grouped, "$size": props.size, "$disabled": props.disabled, "$active": props.active }, props.children),
|
|
41
|
+
props.hint &&
|
|
42
|
+
React.createElement(Hint, { offset: 12, side: props.x < 0 ? "right" : "left" }, props.hint));
|
|
43
|
+
};
|
|
44
|
+
if (props.grouped)
|
|
45
|
+
return renderButton();
|
|
46
|
+
return React.createElement(MapControl, { x: props.x, y: props.y }, renderButton());
|
|
47
|
+
};
|
|
48
|
+
// const Teardrop = styled.svg<{ $disabled: boolean }>`
|
|
49
|
+
var Button = styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject([" \n width: 100%;\n height: 100%;\n cursor: pointer;\n background-color: ", ";\n\n // Border:\n border-radius: 4px;\n\n ", "\n\n svg {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n padding: 8px;\n fill: ", ";\n transition: fill ease-in-out ", "ms;\n }\n\n // Hover:\n div:hover > & {\n background-color: ", ";\n }\n\n ", "\n\n // Disabled:\n ", "\n"], [" \n width: 100%;\n height: 100%;\n cursor: pointer;\n background-color: ", ";\n\n // Border:\n border-radius: 4px;\n\n ", "\n\n svg {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n padding: 8px;\n fill: ", ";\n transition: fill ease-in-out ", "ms;\n }\n\n // Hover:\n div:hover > & {\n background-color: ", ";\n }\n\n ", "\n\n // Disabled:\n ", "\n"])), function (p) { return p.theme.colors.neutral[100]; }, function (p) { return p.$grouped && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n div:first-child > & {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n div:not(:last-child):not(:first-child) > & {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n div:last-child > & {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n "], ["\n div:first-child > & {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n div:not(:last-child):not(:first-child) > & {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n div:last-child > & {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n "]))); }, function (p) { return p.theme.colors.neutral[10]; }, function (p) { return p.theme.animation.duration; }, function (p) { return p.theme.colors.neutral[95]; }, function (p) { return p.$active && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background-color: ", " !important;\n svg {\n fill: ", ";\n }\n "], ["\n background-color: ", " !important;\n svg {\n fill: ", ";\n }\n "])), function (p) { return p.theme.colors.accent; }, function (p) { return p.theme.colors.neutral[100]; }); }, function (p) { return p.$disabled && css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n cursor: default;\n background-color: ", ";\n svg { fill: ", "; } \n "], ["\n cursor: default;\n background-color: ", ";\n svg { fill: ", "; } \n "])), function (p) { return p.theme.colors.neutral[50]; }, function (p) { return p.theme.colors.primary[3]; }); });
|
|
50
|
+
var MapButtonStyled = styled(MapButtonBase)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n position: relative;\n pointer-events: all;\n\n // Size control:\n width: ", "px;\n height: ", "px;\n\n outline: 0;\n user-select: none;\n\n // Grouped button has a separator border (though not the last button in the group):\n ", "\n\n // Hint positioning:\n div:nth-child(2) {\n opacity: 0;\n }\n\n // Hover:\n &:hover {\n div:nth-child(2) {\n opacity: 1;\n }\n }\n\n // Disabled mode:\n ", " \n"], ["\n position: relative;\n pointer-events: all;\n\n // Size control:\n width: ", "px;\n height: ", "px;\n\n outline: 0;\n user-select: none;\n\n // Grouped button has a separator border (though not the last button in the group):\n ", "\n\n // Hint positioning:\n div:nth-child(2) {\n opacity: 0;\n }\n\n // Hover:\n &:hover {\n div:nth-child(2) {\n opacity: 1;\n }\n }\n\n // Disabled mode:\n ", " \n"
|
|
51
|
+
/**
|
|
52
|
+
* A `MapButton` is a square button to be used on a Mapbox map. It must
|
|
53
|
+
* be provided with the `ViewState` by the underlying `Map`.
|
|
54
|
+
*
|
|
55
|
+
* This component is **abstract**: the button has no content by itself,
|
|
56
|
+
* which must be provided by its child.
|
|
57
|
+
*/
|
|
58
|
+
])), function (p) { return p.size; }, function (p) { return p.size; }, function (p) { return p.grouped && css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n &:not(:last-child) {\n border-bottom: solid 1px ", ";\n } \n "], ["\n &:not(:last-child) {\n border-bottom: solid 1px ", ";\n } \n "])), function (p) { return p.theme.colors.neutral[80]; }); }, function (p) { return p.disabled && css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n pointer-events: none;\n cursor: default;\n "], ["\n pointer-events: none;\n cursor: default;\n "]))); });
|
|
59
|
+
/**
|
|
60
|
+
* A `MapButton` is a square button to be used on a Mapbox map. It must
|
|
61
|
+
* be provided with the `ViewState` by the underlying `Map`.
|
|
62
|
+
*
|
|
63
|
+
* This component is **abstract**: the button has no content by itself,
|
|
64
|
+
* which must be provided by its child.
|
|
65
|
+
*/
|
|
66
|
+
var MapButton = function (_a) {
|
|
67
|
+
var _b = _a.size, size = _b === void 0 ? 32 : _b, _c = _a.disabled, disabled = _c === void 0 ? false : _c, _d = _a.active, active = _d === void 0 ? false : _d, _e = _a.grouped, grouped = _e === void 0 ? false : _e, props = __rest(_a, ["size", "disabled", "active", "grouped"]);
|
|
68
|
+
return React.createElement(MapButtonStyled, __assign({ size: size, disabled: disabled, active: active, grouped: grouped }, props));
|
|
69
|
+
};
|
|
70
|
+
export { MapButton };
|
|
71
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { MapButton, IMapButtonProps } from './MapButton';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { MapButton } from './MapButton';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { IMapControlProps } from '../MapControl';
|
|
3
|
+
interface IProps extends IMapControlProps {
|
|
4
|
+
/**
|
|
5
|
+
* Children must be one or more `MapButton`-derived components.
|
|
6
|
+
*/
|
|
7
|
+
children?: React.ReactNode;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* A `MapButtonGroup` groups `MapButton`-derived components, like `ZoomInButton` and `CompassButton`.
|
|
11
|
+
* It removes button borders, leaving a thin separator line between buttons.
|
|
12
|
+
*
|
|
13
|
+
* The button children do not need `x` and `y` coordinates. Instead, coordinates are set once
|
|
14
|
+
* through `MapButtonGroup`.
|
|
15
|
+
*/
|
|
16
|
+
declare const MapButtonGroup: (props: IProps) => React.JSX.Element;
|
|
17
|
+
export { MapButtonGroup };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { MapControl } from '../MapControl';
|
|
3
|
+
/**
|
|
4
|
+
* A `MapButtonGroup` groups `MapButton`-derived components, like `ZoomInButton` and `CompassButton`.
|
|
5
|
+
* It removes button borders, leaving a thin separator line between buttons.
|
|
6
|
+
*
|
|
7
|
+
* The button children do not need `x` and `y` coordinates. Instead, coordinates are set once
|
|
8
|
+
* through `MapButtonGroup`.
|
|
9
|
+
*/
|
|
10
|
+
var MapButtonGroup = function (props) {
|
|
11
|
+
return (React.createElement(MapControl, { x: props.x, y: props.y },
|
|
12
|
+
React.createElement("div", { className: props.className }, React.Children.map(props.children, function (child) {
|
|
13
|
+
if (child == null)
|
|
14
|
+
return null;
|
|
15
|
+
return React.cloneElement(child, {
|
|
16
|
+
// X-coordinate is required to determine if Hint aligns left or right.
|
|
17
|
+
x: props.x,
|
|
18
|
+
// If there's only one child, then grouped should be false, or we'd get
|
|
19
|
+
// a single button with no borders.
|
|
20
|
+
grouped: React.Children.count(props.children) > 1
|
|
21
|
+
});
|
|
22
|
+
}))));
|
|
23
|
+
};
|
|
24
|
+
export { MapButtonGroup };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
interface IMapControlProps {
|
|
3
|
+
/** @ignore */
|
|
4
|
+
className?: string;
|
|
5
|
+
/**
|
|
6
|
+
* (From `MapControl`): Horizontal button position. A positive value is an offset from
|
|
7
|
+
* the left, and a negative value is an offset from the right.
|
|
8
|
+
* @default 0
|
|
9
|
+
*/
|
|
10
|
+
x?: number;
|
|
11
|
+
/**
|
|
12
|
+
* (From `MapControl`): Vertical button position. A positive value is an offset from the
|
|
13
|
+
* top, and a negative value is an offset from the bottom.
|
|
14
|
+
* @default 0
|
|
15
|
+
*/
|
|
16
|
+
y?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* `MapControl` positions a control of top of a map, taking Mapbox `padding`
|
|
20
|
+
* into account.
|
|
21
|
+
*
|
|
22
|
+
* The control is positioned using `x` and `y`. Positive values mean offset from
|
|
23
|
+
* left and top, and negative coordinates mean offsets from right and bottom.
|
|
24
|
+
*
|
|
25
|
+
* This component is **abstract**: the button has no content by itself,
|
|
26
|
+
* which must be provided by its child.
|
|
27
|
+
*
|
|
28
|
+
* **Note**: `MapControl` has `pointer-events: none`. It is the responsibility of
|
|
29
|
+
* the wrapped control to set `pointer-events: all`. This is done to accommodate
|
|
30
|
+
* controls that must not capture pointer events, such as `MapLoader`
|
|
31
|
+
* and `ScaleControl`.
|
|
32
|
+
*/
|
|
33
|
+
declare const MapControl: ({ x, y, ...props }: IMapControlProps & {
|
|
34
|
+
children?: React.ReactNode;
|
|
35
|
+
}) => React.JSX.Element;
|
|
36
|
+
export { MapControl, IMapControlProps };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
2
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
3
|
+
return cooked;
|
|
4
|
+
};
|
|
5
|
+
var __assign = (this && this.__assign) || function () {
|
|
6
|
+
__assign = Object.assign || function(t) {
|
|
7
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
8
|
+
s = arguments[i];
|
|
9
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
10
|
+
t[p] = s[p];
|
|
11
|
+
}
|
|
12
|
+
return t;
|
|
13
|
+
};
|
|
14
|
+
return __assign.apply(this, arguments);
|
|
15
|
+
};
|
|
16
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
17
|
+
var t = {};
|
|
18
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
19
|
+
t[p] = s[p];
|
|
20
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
21
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
22
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
23
|
+
t[p[i]] = s[p[i]];
|
|
24
|
+
}
|
|
25
|
+
return t;
|
|
26
|
+
};
|
|
27
|
+
import * as React from 'react';
|
|
28
|
+
import { useViewState } from '../../../Map';
|
|
29
|
+
import styled from 'styled-components';
|
|
30
|
+
var MapControlBase = function (props) {
|
|
31
|
+
var viewState = useViewState();
|
|
32
|
+
return (React.createElement("div", { className: props.className, style: {
|
|
33
|
+
// Must calculate this style dynamically, because it needs local state.
|
|
34
|
+
left: props.x >= 0 ? "".concat(props.x + viewState.padding.left, "px") : 'auto',
|
|
35
|
+
right: props.x < 0 ? "".concat(viewState.padding.right - props.x, "px") : 'auto',
|
|
36
|
+
top: props.y >= 0 ? "".concat(props.y + viewState.padding.top, "px") : 'auto',
|
|
37
|
+
bottom: props.y < 0 ? "".concat(-props.y - -viewState.padding.bottom, "px") : 'auto'
|
|
38
|
+
} }, props.children));
|
|
39
|
+
};
|
|
40
|
+
var MapControlStyled = styled(MapControlBase)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: absolute;\n z-index: 100;\n box-sizing: border-box;\n pointer-events: none;\n"], ["\n position: absolute;\n z-index: 100;\n box-sizing: border-box;\n pointer-events: none;\n"
|
|
41
|
+
/**
|
|
42
|
+
* `MapControl` positions a control of top of a map, taking Mapbox `padding`
|
|
43
|
+
* into account.
|
|
44
|
+
*
|
|
45
|
+
* The control is positioned using `x` and `y`. Positive values mean offset from
|
|
46
|
+
* left and top, and negative coordinates mean offsets from right and bottom.
|
|
47
|
+
*
|
|
48
|
+
* This component is **abstract**: the button has no content by itself,
|
|
49
|
+
* which must be provided by its child.
|
|
50
|
+
*
|
|
51
|
+
* **Note**: `MapControl` has `pointer-events: none`. It is the responsibility of
|
|
52
|
+
* the wrapped control to set `pointer-events: all`. This is done to accommodate
|
|
53
|
+
* controls that must not capture pointer events, such as `MapLoader`
|
|
54
|
+
* and `ScaleControl`.
|
|
55
|
+
*/
|
|
56
|
+
])));
|
|
57
|
+
/**
|
|
58
|
+
* `MapControl` positions a control of top of a map, taking Mapbox `padding`
|
|
59
|
+
* into account.
|
|
60
|
+
*
|
|
61
|
+
* The control is positioned using `x` and `y`. Positive values mean offset from
|
|
62
|
+
* left and top, and negative coordinates mean offsets from right and bottom.
|
|
63
|
+
*
|
|
64
|
+
* This component is **abstract**: the button has no content by itself,
|
|
65
|
+
* which must be provided by its child.
|
|
66
|
+
*
|
|
67
|
+
* **Note**: `MapControl` has `pointer-events: none`. It is the responsibility of
|
|
68
|
+
* the wrapped control to set `pointer-events: all`. This is done to accommodate
|
|
69
|
+
* controls that must not capture pointer events, such as `MapLoader`
|
|
70
|
+
* and `ScaleControl`.
|
|
71
|
+
*/
|
|
72
|
+
var MapControl = function (_a) {
|
|
73
|
+
var _b = _a.x, x = _b === void 0 ? 0 : _b, _c = _a.y, y = _c === void 0 ? 0 : _c, props = __rest(_a, ["x", "y"]);
|
|
74
|
+
return React.createElement(MapControlStyled, __assign({ x: x, y: y }, props));
|
|
75
|
+
};
|
|
76
|
+
export { MapControl };
|
|
77
|
+
var templateObject_1;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MapControl';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MapControl';
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
interface IItem {
|
|
3
|
+
latitude: number;
|
|
4
|
+
longitude: number;
|
|
5
|
+
}
|
|
6
|
+
interface IProps {
|
|
7
|
+
/**
|
|
8
|
+
* Array of items that must be clustered. Each item must at least have
|
|
9
|
+
* a `latitude` and `longitude` key.
|
|
10
|
+
*/
|
|
11
|
+
items: IItem[];
|
|
12
|
+
/**
|
|
13
|
+
* Radius of cluster (in pixels).
|
|
14
|
+
* @default 18
|
|
15
|
+
*/
|
|
16
|
+
radius?: number;
|
|
17
|
+
/**
|
|
18
|
+
* If set, cluster size is relative to its value (as taken from the `field`),
|
|
19
|
+
* adding this value to the cluster radius per logarithmic step.
|
|
20
|
+
* @default 0
|
|
21
|
+
*/
|
|
22
|
+
relativeSize?: number;
|
|
23
|
+
/**
|
|
24
|
+
* If provided, then this property will be extracted from features and a
|
|
25
|
+
* sum is calculated for each cluster. This is the value that will be
|
|
26
|
+
* printed on clusters. If omitted, `point_count` is used.
|
|
27
|
+
*/
|
|
28
|
+
aggregation?: string;
|
|
29
|
+
/**
|
|
30
|
+
* RingFields are drawn as colored segments around the cluster marker.
|
|
31
|
+
* For each ring field, provide a (numeric) item property.
|
|
32
|
+
* @default []
|
|
33
|
+
*/
|
|
34
|
+
ringFields?: string[];
|
|
35
|
+
/**
|
|
36
|
+
* Radius of each cluster. A value of 512 indicates a radius equal to the width
|
|
37
|
+
* of a tile.
|
|
38
|
+
* @default 80
|
|
39
|
+
*/
|
|
40
|
+
clusterRadius?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Max zoom on which to cluster points. Defaults to one zoom less than maxzoom
|
|
43
|
+
* (so that last zoom features are not clustered). Clusters are re-evaluated at
|
|
44
|
+
* integer zoom levels so setting clusterMaxZoom to 14 means the clusters will
|
|
45
|
+
* be displayed until z15.
|
|
46
|
+
* @default 18
|
|
47
|
+
*/
|
|
48
|
+
clusterMaxZoom?: number;
|
|
49
|
+
/**
|
|
50
|
+
* If set, clicking a cluster zooms the map to its extent.
|
|
51
|
+
* @default false
|
|
52
|
+
*/
|
|
53
|
+
clickZoom?: boolean;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* A `ClusterLayer` manages its own `Source`. It does not takes GeoJSON, but a list of objects which must at least have
|
|
57
|
+
* `latitude` and `longitude` keys. Other object keys may be used for the aggregate values of clusters; if no field is
|
|
58
|
+
* supplied, then the cluster will display the number of features inside them (the `point_count`).
|
|
59
|
+
*
|
|
60
|
+
* A `ClusterLayer` uses `HtmlMarkerLayer`, providing it with its own preset marker.
|
|
61
|
+
*
|
|
62
|
+
* `ringFields` is an array of strings, each element being a key in the layer input items. For each cluster, the field
|
|
63
|
+
* values are aggregated, and then an arc is painted on the cluster marker which correspond to that field's weight
|
|
64
|
+
* compared to the other `ringFields`.
|
|
65
|
+
*
|
|
66
|
+
* ```tsx
|
|
67
|
+
* const items = [
|
|
68
|
+
* { latitude: 23.3, longitude: 16.6, population: 100 },
|
|
69
|
+
* { latitude: 24.5, longitude: 17.2, population: 250 },
|
|
70
|
+
* ...
|
|
71
|
+
* ];
|
|
72
|
+
*
|
|
73
|
+
* <Map>
|
|
74
|
+
* <ClusterLayer items={items} aggregation="population"/>
|
|
75
|
+
* </Map>
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
declare const ClusterLayer: ({ relativeSize, radius, clusterRadius, clusterMaxZoom, ringFields, clickZoom, ...props }: IProps) => React.JSX.Element;
|
|
79
|
+
export { ClusterLayer };
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
+
t[p] = s[p];
|
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
+
t[p[i]] = s[p[i]];
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
import * as React from 'react';
|
|
24
|
+
import { Source, useMap } from 'react-map-gl';
|
|
25
|
+
import { HtmlMarkerLayer } from '../HtmlMarkerLayer/HtmlMarkerLayer';
|
|
26
|
+
import { ClusterMarker } from '../../markers/ClusterMarker';
|
|
27
|
+
function uuidv4() {
|
|
28
|
+
return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, function (c) {
|
|
29
|
+
return (+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
var ClusterLayerBase = function (_a) {
|
|
33
|
+
var _b = _a.relativeSize, relativeSize = _b === void 0 ? 0 : _b, _c = _a.radius, radius = _c === void 0 ? 18 : _c, _d = _a.clusterRadius, clusterRadius = _d === void 0 ? 80 : _d, _e = _a.clusterMaxZoom, clusterMaxZoom = _e === void 0 ? 18 : _e, _f = _a.ringFields, ringFields = _f === void 0 ? [] : _f, _g = _a.clickZoom, clickZoom = _g === void 0 ? false : _g, props = __rest(_a, ["relativeSize", "radius", "clusterRadius", "clusterMaxZoom", "ringFields", "clickZoom"]);
|
|
34
|
+
var map = useMap().current;
|
|
35
|
+
// Generate a random, unique source ID:
|
|
36
|
+
var sourceId = React.useRef(uuidv4()).current;
|
|
37
|
+
var itemsToFeatures = React.useMemo(function () {
|
|
38
|
+
var collection = {
|
|
39
|
+
type: 'FeatureCollection',
|
|
40
|
+
// Return a feature for each item.
|
|
41
|
+
features: props.items.map(function (f) {
|
|
42
|
+
var _a;
|
|
43
|
+
// Build feature's propeties:
|
|
44
|
+
var properties = {};
|
|
45
|
+
// If an aggregation was provided, copy its value to the GeoJSON.
|
|
46
|
+
if (props.aggregation) {
|
|
47
|
+
properties[props.aggregation] = (_a = f[props.aggregation]) !== null && _a !== void 0 ? _a : 0;
|
|
48
|
+
}
|
|
49
|
+
// If ringFields were provided, copy their values to the GeoJSON.
|
|
50
|
+
ringFields.forEach(function (rf) { return properties[rf] = f[rf]; });
|
|
51
|
+
return {
|
|
52
|
+
type: 'Feature',
|
|
53
|
+
geometry: { type: 'Point', coordinates: [f.longitude, f.latitude] },
|
|
54
|
+
properties: properties
|
|
55
|
+
};
|
|
56
|
+
})
|
|
57
|
+
};
|
|
58
|
+
return collection;
|
|
59
|
+
}, [props.items]);
|
|
60
|
+
// Cluster properties calculations:
|
|
61
|
+
// * The `aggregation` is summed.
|
|
62
|
+
// * Each `ringField` is summed.
|
|
63
|
+
var clusterProperties = React.useMemo(function () {
|
|
64
|
+
var obj = {};
|
|
65
|
+
if (props.aggregation)
|
|
66
|
+
obj["sum"] = ["+", ["get", props.aggregation]];
|
|
67
|
+
ringFields.forEach(function (rf) { return obj[rf] = ["+", ["get", rf]]; });
|
|
68
|
+
return obj;
|
|
69
|
+
}, [props.aggregation, ringFields]);
|
|
70
|
+
var handleClick = function (longitude, latitude, cluster_id) {
|
|
71
|
+
map.getSource(sourceId).getClusterExpansionZoom(cluster_id, function (err, zoom) {
|
|
72
|
+
if (err)
|
|
73
|
+
return;
|
|
74
|
+
map.easeTo({
|
|
75
|
+
center: [longitude, latitude],
|
|
76
|
+
zoom: zoom
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
return (React.createElement(Source, { id: sourceId, type: 'geojson', data: itemsToFeatures, cluster: true, clusterRadius: clusterRadius, clusterMaxZoom: clusterMaxZoom, clusterProperties: __assign({}, clusterProperties) },
|
|
81
|
+
React.createElement(HtmlMarkerLayer, { sourceId: sourceId, idField: "cluster_id" }, function (markerProps) {
|
|
82
|
+
return React.createElement(ClusterMarker, __assign({ relativeSize: relativeSize, radius: radius, value: props.aggregation ? markerProps['sum'] : markerProps['point_count'], ringValues: ringFields.map(function (f) { return markerProps[f]; }), onClick: clickZoom ? function () { return handleClick(markerProps.longitude, markerProps.latitude, markerProps.cluster_id); } : null }, markerProps));
|
|
83
|
+
})));
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* A `ClusterLayer` manages its own `Source`. It does not takes GeoJSON, but a list of objects which must at least have
|
|
87
|
+
* `latitude` and `longitude` keys. Other object keys may be used for the aggregate values of clusters; if no field is
|
|
88
|
+
* supplied, then the cluster will display the number of features inside them (the `point_count`).
|
|
89
|
+
*
|
|
90
|
+
* A `ClusterLayer` uses `HtmlMarkerLayer`, providing it with its own preset marker.
|
|
91
|
+
*
|
|
92
|
+
* `ringFields` is an array of strings, each element being a key in the layer input items. For each cluster, the field
|
|
93
|
+
* values are aggregated, and then an arc is painted on the cluster marker which correspond to that field's weight
|
|
94
|
+
* compared to the other `ringFields`.
|
|
95
|
+
*
|
|
96
|
+
* ```tsx
|
|
97
|
+
* const items = [
|
|
98
|
+
* { latitude: 23.3, longitude: 16.6, population: 100 },
|
|
99
|
+
* { latitude: 24.5, longitude: 17.2, population: 250 },
|
|
100
|
+
* ...
|
|
101
|
+
* ];
|
|
102
|
+
*
|
|
103
|
+
* <Map>
|
|
104
|
+
* <ClusterLayer items={items} aggregation="population"/>
|
|
105
|
+
* </Map>
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
var ClusterLayer = function (_a) {
|
|
109
|
+
var _b = _a.relativeSize, relativeSize = _b === void 0 ? 0 : _b, _c = _a.radius, radius = _c === void 0 ? 24 : _c, _d = _a.clusterRadius, clusterRadius = _d === void 0 ? 80 : _d, _e = _a.clusterMaxZoom, clusterMaxZoom = _e === void 0 ? 18 : _e, ringFields = _a.ringFields, _f = _a.clickZoom, clickZoom = _f === void 0 ? false : _f, props = __rest(_a, ["relativeSize", "radius", "clusterRadius", "clusterMaxZoom", "ringFields", "clickZoom"]);
|
|
110
|
+
var _g = React.useState(0), key = _g[0], setKey = _g[1];
|
|
111
|
+
// When aggregation changes, we mount a whole new component. Mapbox does not
|
|
112
|
+
// appear to deal with changes to clusterProperties well.
|
|
113
|
+
React.useEffect(function () {
|
|
114
|
+
setKey(Date.now());
|
|
115
|
+
}, [props.aggregation, ringFields]);
|
|
116
|
+
return React.createElement(ClusterLayerBase, __assign({ key: key, relativeSize: relativeSize, radius: radius, clusterRadius: clusterRadius, clusterMaxZoom: clusterMaxZoom, ringFields: ringFields, clickZoom: clickZoom }, props));
|
|
117
|
+
};
|
|
118
|
+
export { ClusterLayer };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
interface IProps {
|
|
3
|
+
/**
|
|
4
|
+
* Function that returns a marker component. Properties that `HtmlMarkerLayer`
|
|
5
|
+
* makes available to the component are passed in as `props`.
|
|
6
|
+
* e.g. `{(p) => <MyMarker {...p} bordered flashing/>}`
|
|
7
|
+
*/
|
|
8
|
+
children?: (props: any) => React.ReactNode;
|
|
9
|
+
/**
|
|
10
|
+
* ID of the source that's queried.
|
|
11
|
+
*/
|
|
12
|
+
sourceId: string;
|
|
13
|
+
/**
|
|
14
|
+
* Every feature must have a unique ID in its properties. This is used to
|
|
15
|
+
* tell features apart. If the `source` should ever change, then it is
|
|
16
|
+
* important that new items have new IDs, so that old markers get removed
|
|
17
|
+
* correctly.
|
|
18
|
+
*/
|
|
19
|
+
idField: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The `HtmlMarkerLayer` manages HTML markers on a map. HTML markers are far slower
|
|
23
|
+
* than OpenGL layers, but much more flexible: with SVG, any shape of marker can
|
|
24
|
+
* be designed, and the markers can easily be made responsive to hover.
|
|
25
|
+
*
|
|
26
|
+
* The `HtmlMarkerLayer` keeps an internal cache, creating and rendering markers only
|
|
27
|
+
* when they are visible in the map viewport. This is a suitable solution for clusters
|
|
28
|
+
* (where by definition there are never very many icons in the viewport), or when
|
|
29
|
+
* there are simply not _that_ many markers: up to a few hundred in the viewport is the
|
|
30
|
+
* upper limit.
|
|
31
|
+
*
|
|
32
|
+
* The `HtmlMarkerLayer` must be placed inside a GeoJSON `Source`. In that source,
|
|
33
|
+
* each feature must have a unique ID (passed to this layer as the `idField`), which
|
|
34
|
+
* is used to tell features apart. When features are refreshed, it is imported that
|
|
35
|
+
* they all get new IDs so that old markers get removed correctly.
|
|
36
|
+
*
|
|
37
|
+
* The `HtmlMarkerLayer` component takes a _function child_. This function accepts
|
|
38
|
+
* a `props` object, which will be the properties from each GeoJSON feature for which
|
|
39
|
+
* a marker is rendered.
|
|
40
|
+
*
|
|
41
|
+
* ```tsx
|
|
42
|
+
* // featureCollection has a property "id" with unique values
|
|
43
|
+
* <Source id="mysource" type="geojson" data={featureCollection}>
|
|
44
|
+
* <HtmlMarkerLayer sourceId="mysource" idField="id">
|
|
45
|
+
* {(markerProps) => <MyMarkerComponent color="gold" radius={45} {...markerProps}/>
|
|
46
|
+
* </HtmlMarkerLayer>
|
|
47
|
+
* </Source>
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
declare const HtmlMarkerLayer: (props: IProps) => React.JSX.Element;
|
|
51
|
+
export { HtmlMarkerLayer };
|