@open-pioneer/toc 0.3.0 → 0.4.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/CHANGELOG.md CHANGED
@@ -1,5 +1,36 @@
1
1
  # @open-pioneer/toc
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 9334e81: Update to OpenLayers 9
8
+
9
+ ### Patch Changes
10
+
11
+ - ca6c2fd: Don't remove uppercase characters in slugs
12
+ - 1a8ad89: Update package.json metadata
13
+ - 6162979: Update versions of core packages
14
+ - Updated dependencies [1a8ad89]
15
+ - Updated dependencies [a11bf72]
16
+ - Updated dependencies [fc6bf82]
17
+ - Updated dependencies [a0d8882]
18
+ - Updated dependencies [6162979]
19
+ - Updated dependencies [9334e81]
20
+ - Updated dependencies [ac7fdd1]
21
+ - Updated dependencies [13ea342]
22
+ - @open-pioneer/basemap-switcher@0.4.0
23
+ - @open-pioneer/react-utils@0.2.2
24
+ - @open-pioneer/map@0.4.0
25
+
26
+ ## 0.3.1
27
+
28
+ ### Patch Changes
29
+
30
+ - Updated dependencies [611ddb9]
31
+ - @open-pioneer/map@0.3.1
32
+ - @open-pioneer/basemap-switcher@0.3.1
33
+
3
34
  ## 0.3.0
4
35
 
5
36
  ### Minor Changes
package/LayerList.js CHANGED
@@ -231,7 +231,7 @@ function useCachedExternalStore(subscribe, getValue) {
231
231
  return useSyncExternalStore(cachedSubscribe, cachedGetSnapshot);
232
232
  }
233
233
  function slug(id) {
234
- return id.replace(/[^a-z0-9 -]/g, "").replace(/\s+/g, "-").replace(/-+/g, "-");
234
+ return id.toLowerCase().replace(/[^a-z0-9 -]/g, "").replace(/\s+/g, "-").replace(/-+/g, "-");
235
235
  }
236
236
 
237
237
  export { LayerList };
package/LayerList.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"LayerList.js","sources":["LayerList.tsx"],"sourcesContent":["// SPDX-FileCopyrightText: 2023 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport {\n Box,\n Button,\n Checkbox,\n Flex,\n List,\n ListProps,\n Popover,\n PopoverArrow,\n PopoverBody,\n PopoverCloseButton,\n PopoverContent,\n PopoverHeader,\n PopoverTrigger,\n Portal,\n Spacer,\n Text,\n Tooltip\n} from \"@open-pioneer/chakra-integration\";\nimport { Layer, LayerBase, MapModel, Sublayer } from \"@open-pioneer/map\";\nimport { PackageIntl } from \"@open-pioneer/runtime\";\nimport classNames from \"classnames\";\nimport { useIntl } from \"open-pioneer:react-hooks\";\nimport { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { FiAlertTriangle, FiMoreVertical } from \"react-icons/fi\";\n\ntype TocLayer = Layer | Sublayer;\n\n/**\n * Lists the (top level) operational layers in the map.\n *\n * Layer Groups are skipped in the current implementation.\n */\nexport function LayerList(props: { map: MapModel; \"aria-labelledby\"?: string }): JSX.Element {\n const { map, \"aria-labelledby\": ariaLabelledBy } = props;\n const intl = useIntl();\n const layers = useLayers(map);\n if (!layers.length) {\n return (\n <Text className=\"toc-missing-layers\" aria-labelledby={ariaLabelledBy}>\n {intl.formatMessage({ id: \"missingLayers\" })}\n </Text>\n );\n }\n\n return createList(layers, intl, {\n \"aria-labelledby\": ariaLabelledBy\n });\n}\n\nfunction createList(layers: TocLayer[], intl: PackageIntl, listProps: ListProps) {\n const items = layers.map((layer) => <LayerItem key={layer.id} layer={layer} intl={intl} />);\n return (\n <List\n // Note: not using UnorderedList because it adds default margins\n as=\"ul\"\n className=\"toc-layer-list\"\n listStyleType=\"none\"\n {...listProps}\n >\n {items}\n </List>\n );\n}\n\n/**\n * Renders a single layer as a list item.\n *\n * The item may have further nested list items if there are sublayers present.\n */\nfunction LayerItem(props: { layer: TocLayer; intl: PackageIntl }): JSX.Element {\n const { layer, intl } = props;\n const title = useTitle(layer);\n const { isVisible, setVisible } = useVisibility(layer);\n const sublayers = useSublayers(layer);\n const isAvailable = useLoadState(layer) !== \"error\";\n const notAvailableLabel = intl.formatMessage({ id: \"layerNotAvailable\" });\n\n let nestedChildren;\n if (sublayers?.length) {\n nestedChildren = createList(sublayers, intl, { ml: 4 });\n }\n\n return (\n <Box as=\"li\" className={classNames(\"toc-layer-item\", `layer-${slug(layer.id)}`)}>\n <Flex\n className=\"toc-layer-item-content\"\n width=\"100%\"\n flexDirection=\"row\"\n align=\"center\"\n justifyContent=\"space-between\"\n /** Gap to prevent bleeding of the buttons hover style into the layer title */\n gap={2}\n /** Aligned to the size of the (potential) menu button in LayerItemDescriptor */\n minHeight={10}\n >\n <Checkbox\n // Keyboard navigation jumps only to Checkboxes and uses the texts inside this DOM node. The aria-labels of Tooltip and Icon is ignored by screenreader because they are no child element of the checkbox. To consider the notAvailableLabel, an aria-label at the checkbox is necessary.\n aria-label={title + (!isAvailable ? \" \" + notAvailableLabel : \"\")}\n isChecked={isVisible}\n isDisabled={!isAvailable}\n onChange={(event) => setVisible(event.target.checked)}\n >\n {title}\n </Checkbox>\n {!isAvailable && (\n <Tooltip\n className=\"toc-layer-item-content-tooltip\"\n label={notAvailableLabel}\n placement=\"right\"\n openDelay={500}\n >\n <span>\n <FiAlertTriangle\n className=\"toc-layer-item-content-icon\"\n color={\"red\"}\n aria-label={notAvailableLabel}\n />\n </span>\n </Tooltip>\n )}\n <Spacer></Spacer>\n {layer.description && (\n <LayerItemDescriptor layer={layer} title={title} intl={intl} />\n )}\n </Flex>\n {nestedChildren}\n </Box>\n );\n}\n\nfunction LayerItemDescriptor(props: {\n layer: TocLayer;\n title: string;\n intl: PackageIntl;\n}): JSX.Element {\n const { layer, title, intl } = props;\n const buttonLabel = intl.formatMessage({ id: \"descriptionLabel\" });\n const description = useLayerDescription(layer);\n const isAvailable = useLoadState(layer) !== \"error\";\n\n return (\n <Popover placement=\"bottom-start\">\n <PopoverTrigger>\n <Button\n isDisabled={!isAvailable}\n className=\"toc-layer-item-details-button\"\n aria-label={buttonLabel}\n borderRadius=\"full\"\n iconSpacing={0}\n padding={0}\n variant=\"ghost\"\n leftIcon={<FiMoreVertical />}\n />\n </PopoverTrigger>\n <Portal>\n <PopoverContent className=\"toc-layer-item-details\" overflowY=\"auto\" maxHeight=\"400\">\n <PopoverArrow />\n <PopoverCloseButton mt={1} />\n <PopoverHeader>{title}</PopoverHeader>\n <PopoverBody>{description}</PopoverBody>\n </PopoverContent>\n </Portal>\n </Popover>\n );\n}\n\nfunction useLayerDescription(layer: LayerBase): string {\n const getSnapshot = useCallback(() => layer.description, [layer]);\n const subscribe = useCallback(\n (cb: () => void) => {\n const resource = layer.on(\"changed:description\", cb);\n return () => resource.destroy();\n },\n [layer]\n );\n return useSyncExternalStore(subscribe, getSnapshot);\n}\n\n/** Returns the layers current title. */\nfunction useTitle(layer: LayerBase): string {\n const getSnapshot = useCallback(() => layer.title, [layer]);\n const subscribe = useCallback(\n (cb: () => void) => {\n const resource = layer.on(\"changed:title\", cb);\n return () => resource.destroy();\n },\n [layer]\n );\n\n return useSyncExternalStore(subscribe, getSnapshot);\n}\n\n/** Returns the layer's current visibility and a function to change it. */\nfunction useVisibility(layer: LayerBase): {\n isVisible: boolean;\n setVisible(visible: boolean): void;\n} {\n const getSnapshot = useCallback(() => layer.visible, [layer]);\n const subscribe = useCallback(\n (cb: () => void) => {\n const resource = layer.on(\"changed:visible\", cb);\n return () => resource.destroy();\n },\n [layer]\n );\n const isVisible = useSyncExternalStore(subscribe, getSnapshot);\n const setVisible = useCallback(\n (visible: boolean) => {\n layer.setVisible(visible);\n },\n [layer]\n );\n\n return {\n isVisible,\n setVisible\n };\n}\n\n/** Returns the top level operation layers (without LayerGroups). */\nfunction useLayers(map: MapModel): Layer[] {\n const subscribe = useCallback(\n (cb: () => void) => {\n const resource = map.layers.on(\"changed\", cb);\n return () => resource.destroy();\n },\n [map]\n );\n const getValue = useCallback(() => {\n let layers = map.layers.getOperationalLayers({ sortByDisplayOrder: true }) ?? [];\n layers = layers.reverse();\n return layers;\n }, [map]);\n return useCachedExternalStore(subscribe, getValue);\n}\n\n/** Returns the sublayers of the given layer (or undefined, if the sublayer cannot have any). */\nfunction useSublayers(layer: LayerBase): Sublayer[] | undefined {\n const subscribe = useCallback(\n (cb: () => void) => {\n const resource = layer.sublayers?.on(\"changed\", cb);\n return () => resource?.destroy();\n },\n [layer]\n );\n const getValue = useCallback((): Sublayer[] | undefined => {\n const sublayers = layer.sublayers;\n if (!sublayers) {\n return undefined;\n }\n\n let layers = layer.sublayers?.getSublayers({ sortByDisplayOrder: true });\n layers = layers.reverse();\n return layers;\n }, [layer]);\n return useCachedExternalStore(subscribe, getValue);\n}\n\n/** Returns the layers current state. */\nfunction useLoadState(layer: TocLayer): string {\n // for sublayers, use the state of the parent\n const target = \"parentLayer\" in layer ? layer.parentLayer : layer;\n const subscribe = useCallback(\n (cb: () => void) => {\n const resource = target.on(\"changed:loadState\", cb);\n return () => resource.destroy();\n },\n [target]\n );\n\n const getSnapshot = useCallback(() => {\n return target.loadState;\n }, [target]);\n\n return useSyncExternalStore(subscribe, getSnapshot);\n}\n\n/**\n * This hooks wraps an external store that does not cache its own values, i.e.\n * it may return a different value each time from `getValue()`.\n *\n * The results returned from `getValue()` are cached locally; the cache\n * is only invalidated on re-subscription or if a change event has been observed.\n */\nfunction useCachedExternalStore<T>(\n subscribe: (onStoreChanged: () => void) => () => void,\n getValue: () => T\n): T {\n const cachedValue = useRef<{ value: T } | undefined>();\n\n const cachedSubscribe = useCallback(\n (cb: () => void) => {\n const cleanup = subscribe(() => {\n // Reset cache on change\n cachedValue.current = undefined;\n cb();\n });\n return () => {\n // Reset cache when (re-) subscribing\n cachedValue.current = undefined;\n cleanup();\n };\n },\n [subscribe]\n );\n const cachedGetSnapshot = useCallback(() => {\n // Return cached values if still up to date (see resets above).\n if (cachedValue.current) {\n return cachedValue.current.value;\n }\n\n // Compute values and cache the result.\n const value = getValue();\n cachedValue.current = { value };\n return value;\n }, [getValue]);\n return useSyncExternalStore(cachedSubscribe, cachedGetSnapshot);\n}\n\nfunction slug(id: string) {\n return id\n .replace(/[^a-z0-9 -]/g, \"\")\n .replace(/\\s+/g, \"-\")\n .replace(/-+/g, \"-\");\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LayerList.js","sources":["LayerList.tsx"],"sourcesContent":["// SPDX-FileCopyrightText: 2023 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport {\n Box,\n Button,\n Checkbox,\n Flex,\n List,\n ListProps,\n Popover,\n PopoverArrow,\n PopoverBody,\n PopoverCloseButton,\n PopoverContent,\n PopoverHeader,\n PopoverTrigger,\n Portal,\n Spacer,\n Text,\n Tooltip\n} from \"@open-pioneer/chakra-integration\";\nimport { Layer, LayerBase, MapModel, Sublayer } from \"@open-pioneer/map\";\nimport { PackageIntl } from \"@open-pioneer/runtime\";\nimport classNames from \"classnames\";\nimport { useIntl } from \"open-pioneer:react-hooks\";\nimport { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { FiAlertTriangle, FiMoreVertical } from \"react-icons/fi\";\n\ntype TocLayer = Layer | Sublayer;\n\n/**\n * Lists the (top level) operational layers in the map.\n *\n * Layer Groups are skipped in the current implementation.\n */\nexport function LayerList(props: { map: MapModel; \"aria-labelledby\"?: string }): JSX.Element {\n const { map, \"aria-labelledby\": ariaLabelledBy } = props;\n const intl = useIntl();\n const layers = useLayers(map);\n if (!layers.length) {\n return (\n <Text className=\"toc-missing-layers\" aria-labelledby={ariaLabelledBy}>\n {intl.formatMessage({ id: \"missingLayers\" })}\n </Text>\n );\n }\n\n return createList(layers, intl, {\n \"aria-labelledby\": ariaLabelledBy\n });\n}\n\nfunction createList(layers: TocLayer[], intl: PackageIntl, listProps: ListProps) {\n const items = layers.map((layer) => <LayerItem key={layer.id} layer={layer} intl={intl} />);\n return (\n <List\n // Note: not using UnorderedList because it adds default margins\n as=\"ul\"\n className=\"toc-layer-list\"\n listStyleType=\"none\"\n {...listProps}\n >\n {items}\n </List>\n );\n}\n\n/**\n * Renders a single layer as a list item.\n *\n * The item may have further nested list items if there are sublayers present.\n */\nfunction LayerItem(props: { layer: TocLayer; intl: PackageIntl }): JSX.Element {\n const { layer, intl } = props;\n const title = useTitle(layer);\n const { isVisible, setVisible } = useVisibility(layer);\n const sublayers = useSublayers(layer);\n const isAvailable = useLoadState(layer) !== \"error\";\n const notAvailableLabel = intl.formatMessage({ id: \"layerNotAvailable\" });\n\n let nestedChildren;\n if (sublayers?.length) {\n nestedChildren = createList(sublayers, intl, { ml: 4 });\n }\n\n return (\n <Box as=\"li\" className={classNames(\"toc-layer-item\", `layer-${slug(layer.id)}`)}>\n <Flex\n className=\"toc-layer-item-content\"\n width=\"100%\"\n flexDirection=\"row\"\n align=\"center\"\n justifyContent=\"space-between\"\n /** Gap to prevent bleeding of the buttons hover style into the layer title */\n gap={2}\n /** Aligned to the size of the (potential) menu button in LayerItemDescriptor */\n minHeight={10}\n >\n <Checkbox\n // Keyboard navigation jumps only to Checkboxes and uses the texts inside this DOM node. The aria-labels of Tooltip and Icon is ignored by screenreader because they are no child element of the checkbox. To consider the notAvailableLabel, an aria-label at the checkbox is necessary.\n aria-label={title + (!isAvailable ? \" \" + notAvailableLabel : \"\")}\n isChecked={isVisible}\n isDisabled={!isAvailable}\n onChange={(event) => setVisible(event.target.checked)}\n >\n {title}\n </Checkbox>\n {!isAvailable && (\n <Tooltip\n className=\"toc-layer-item-content-tooltip\"\n label={notAvailableLabel}\n placement=\"right\"\n openDelay={500}\n >\n <span>\n <FiAlertTriangle\n className=\"toc-layer-item-content-icon\"\n color={\"red\"}\n aria-label={notAvailableLabel}\n />\n </span>\n </Tooltip>\n )}\n <Spacer></Spacer>\n {layer.description && (\n <LayerItemDescriptor layer={layer} title={title} intl={intl} />\n )}\n </Flex>\n {nestedChildren}\n </Box>\n );\n}\n\nfunction LayerItemDescriptor(props: {\n layer: TocLayer;\n title: string;\n intl: PackageIntl;\n}): JSX.Element {\n const { layer, title, intl } = props;\n const buttonLabel = intl.formatMessage({ id: \"descriptionLabel\" });\n const description = useLayerDescription(layer);\n const isAvailable = useLoadState(layer) !== \"error\";\n\n return (\n <Popover placement=\"bottom-start\">\n <PopoverTrigger>\n <Button\n isDisabled={!isAvailable}\n className=\"toc-layer-item-details-button\"\n aria-label={buttonLabel}\n borderRadius=\"full\"\n iconSpacing={0}\n padding={0}\n variant=\"ghost\"\n leftIcon={<FiMoreVertical />}\n />\n </PopoverTrigger>\n <Portal>\n <PopoverContent className=\"toc-layer-item-details\" overflowY=\"auto\" maxHeight=\"400\">\n <PopoverArrow />\n <PopoverCloseButton mt={1} />\n <PopoverHeader>{title}</PopoverHeader>\n <PopoverBody>{description}</PopoverBody>\n </PopoverContent>\n </Portal>\n </Popover>\n );\n}\n\nfunction useLayerDescription(layer: LayerBase): string {\n const getSnapshot = useCallback(() => layer.description, [layer]);\n const subscribe = useCallback(\n (cb: () => void) => {\n const resource = layer.on(\"changed:description\", cb);\n return () => resource.destroy();\n },\n [layer]\n );\n return useSyncExternalStore(subscribe, getSnapshot);\n}\n\n/** Returns the layers current title. */\nfunction useTitle(layer: LayerBase): string {\n const getSnapshot = useCallback(() => layer.title, [layer]);\n const subscribe = useCallback(\n (cb: () => void) => {\n const resource = layer.on(\"changed:title\", cb);\n return () => resource.destroy();\n },\n [layer]\n );\n\n return useSyncExternalStore(subscribe, getSnapshot);\n}\n\n/** Returns the layer's current visibility and a function to change it. */\nfunction useVisibility(layer: LayerBase): {\n isVisible: boolean;\n setVisible(visible: boolean): void;\n} {\n const getSnapshot = useCallback(() => layer.visible, [layer]);\n const subscribe = useCallback(\n (cb: () => void) => {\n const resource = layer.on(\"changed:visible\", cb);\n return () => resource.destroy();\n },\n [layer]\n );\n const isVisible = useSyncExternalStore(subscribe, getSnapshot);\n const setVisible = useCallback(\n (visible: boolean) => {\n layer.setVisible(visible);\n },\n [layer]\n );\n\n return {\n isVisible,\n setVisible\n };\n}\n\n/** Returns the top level operation layers (without LayerGroups). */\nfunction useLayers(map: MapModel): Layer[] {\n const subscribe = useCallback(\n (cb: () => void) => {\n const resource = map.layers.on(\"changed\", cb);\n return () => resource.destroy();\n },\n [map]\n );\n const getValue = useCallback(() => {\n let layers = map.layers.getOperationalLayers({ sortByDisplayOrder: true }) ?? [];\n layers = layers.reverse();\n return layers;\n }, [map]);\n return useCachedExternalStore(subscribe, getValue);\n}\n\n/** Returns the sublayers of the given layer (or undefined, if the sublayer cannot have any). */\nfunction useSublayers(layer: LayerBase): Sublayer[] | undefined {\n const subscribe = useCallback(\n (cb: () => void) => {\n const resource = layer.sublayers?.on(\"changed\", cb);\n return () => resource?.destroy();\n },\n [layer]\n );\n const getValue = useCallback((): Sublayer[] | undefined => {\n const sublayers = layer.sublayers;\n if (!sublayers) {\n return undefined;\n }\n\n let layers = layer.sublayers?.getSublayers({ sortByDisplayOrder: true });\n layers = layers.reverse();\n return layers;\n }, [layer]);\n return useCachedExternalStore(subscribe, getValue);\n}\n\n/** Returns the layers current state. */\nfunction useLoadState(layer: TocLayer): string {\n // for sublayers, use the state of the parent\n const target = \"parentLayer\" in layer ? layer.parentLayer : layer;\n const subscribe = useCallback(\n (cb: () => void) => {\n const resource = target.on(\"changed:loadState\", cb);\n return () => resource.destroy();\n },\n [target]\n );\n\n const getSnapshot = useCallback(() => {\n return target.loadState;\n }, [target]);\n\n return useSyncExternalStore(subscribe, getSnapshot);\n}\n\n/**\n * This hooks wraps an external store that does not cache its own values, i.e.\n * it may return a different value each time from `getValue()`.\n *\n * The results returned from `getValue()` are cached locally; the cache\n * is only invalidated on re-subscription or if a change event has been observed.\n */\nfunction useCachedExternalStore<T>(\n subscribe: (onStoreChanged: () => void) => () => void,\n getValue: () => T\n): T {\n const cachedValue = useRef<{ value: T } | undefined>();\n\n const cachedSubscribe = useCallback(\n (cb: () => void) => {\n const cleanup = subscribe(() => {\n // Reset cache on change\n cachedValue.current = undefined;\n cb();\n });\n return () => {\n // Reset cache when (re-) subscribing\n cachedValue.current = undefined;\n cleanup();\n };\n },\n [subscribe]\n );\n const cachedGetSnapshot = useCallback(() => {\n // Return cached values if still up to date (see resets above).\n if (cachedValue.current) {\n return cachedValue.current.value;\n }\n\n // Compute values and cache the result.\n const value = getValue();\n cachedValue.current = { value };\n return value;\n }, [getValue]);\n return useSyncExternalStore(cachedSubscribe, cachedGetSnapshot);\n}\n\nfunction slug(id: string) {\n return id\n .toLowerCase()\n .replace(/[^a-z0-9 -]/g, \"\")\n .replace(/\\s+/g, \"-\")\n .replace(/-+/g, \"-\");\n}\n"],"names":[],"mappings":";;;;;;;AAmCO,SAAS,UAAU,KAAmE,EAAA;AACzF,EAAA,MAAM,EAAE,GAAA,EAAK,iBAAmB,EAAA,cAAA,EAAmB,GAAA,KAAA,CAAA;AACnD,EAAA,MAAM,OAAO,OAAQ,EAAA,CAAA;AACrB,EAAM,MAAA,MAAA,GAAS,UAAU,GAAG,CAAA,CAAA;AAC5B,EAAI,IAAA,CAAC,OAAO,MAAQ,EAAA;AAChB,IAAA,uBACK,GAAA,CAAA,IAAA,EAAA,EAAK,SAAU,EAAA,oBAAA,EAAqB,iBAAiB,EAAA,cAAA,EACjD,QAAK,EAAA,IAAA,CAAA,aAAA,CAAc,EAAE,EAAA,EAAI,eAAgB,EAAC,CAC/C,EAAA,CAAA,CAAA;AAAA,GAER;AAEA,EAAO,OAAA,UAAA,CAAW,QAAQ,IAAM,EAAA;AAAA,IAC5B,iBAAmB,EAAA,cAAA;AAAA,GACtB,CAAA,CAAA;AACL,CAAA;AAEA,SAAS,UAAA,CAAW,MAAoB,EAAA,IAAA,EAAmB,SAAsB,EAAA;AAC7E,EAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,GAAA,CAAI,CAAC,KAAA,qBAAW,GAAA,CAAA,SAAA,EAAA,EAAyB,KAAc,EAAA,IAAA,EAAA,EAAxB,KAAM,CAAA,EAA8B,CAAE,CAAA,CAAA;AAC1F,EACI,uBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MAEG,EAAG,EAAA,IAAA;AAAA,MACH,SAAU,EAAA,gBAAA;AAAA,MACV,aAAc,EAAA,MAAA;AAAA,MACb,GAAG,SAAA;AAAA,MAEH,QAAA,EAAA,KAAA;AAAA,KAAA;AAAA,GACL,CAAA;AAER,CAAA;AAOA,SAAS,UAAU,KAA4D,EAAA;AAC3E,EAAM,MAAA,EAAE,KAAO,EAAA,IAAA,EAAS,GAAA,KAAA,CAAA;AACxB,EAAM,MAAA,KAAA,GAAQ,SAAS,KAAK,CAAA,CAAA;AAC5B,EAAA,MAAM,EAAE,SAAA,EAAW,UAAW,EAAA,GAAI,cAAc,KAAK,CAAA,CAAA;AACrD,EAAM,MAAA,SAAA,GAAY,aAAa,KAAK,CAAA,CAAA;AACpC,EAAM,MAAA,WAAA,GAAc,YAAa,CAAA,KAAK,CAAM,KAAA,OAAA,CAAA;AAC5C,EAAA,MAAM,oBAAoB,IAAK,CAAA,aAAA,CAAc,EAAE,EAAA,EAAI,qBAAqB,CAAA,CAAA;AAExE,EAAI,IAAA,cAAA,CAAA;AACJ,EAAA,IAAI,WAAW,MAAQ,EAAA;AACnB,IAAA,cAAA,GAAiB,WAAW,SAAW,EAAA,IAAA,EAAM,EAAE,EAAA,EAAI,GAAG,CAAA,CAAA;AAAA,GAC1D;AAEA,EAAA,uBACK,IAAA,CAAA,GAAA,EAAA,EAAI,EAAG,EAAA,IAAA,EAAK,SAAW,EAAA,UAAA,CAAW,gBAAkB,EAAA,CAAA,MAAA,EAAS,IAAK,CAAA,KAAA,CAAM,EAAE,CAAC,EAAE,CAC1E,EAAA,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACG,SAAU,EAAA,wBAAA;AAAA,QACV,KAAM,EAAA,MAAA;AAAA,QACN,aAAc,EAAA,KAAA;AAAA,QACd,KAAM,EAAA,QAAA;AAAA,QACN,cAAe,EAAA,eAAA;AAAA,QAEf,GAAK,EAAA,CAAA;AAAA,QAEL,SAAW,EAAA,EAAA;AAAA,QAEX,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEG,YAAY,EAAA,KAAA,IAAS,CAAC,WAAA,GAAc,MAAM,iBAAoB,GAAA,EAAA,CAAA;AAAA,cAC9D,SAAW,EAAA,SAAA;AAAA,cACX,YAAY,CAAC,WAAA;AAAA,cACb,UAAU,CAAC,KAAA,KAAU,UAAW,CAAA,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,cAEnD,QAAA,EAAA,KAAA;AAAA,aAAA;AAAA,WACL;AAAA,UACC,CAAC,WACE,oBAAA,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACG,SAAU,EAAA,gCAAA;AAAA,cACV,KAAO,EAAA,iBAAA;AAAA,cACP,SAAU,EAAA,OAAA;AAAA,cACV,SAAW,EAAA,GAAA;AAAA,cAEX,8BAAC,MACG,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,gBAAC,eAAA;AAAA,gBAAA;AAAA,kBACG,SAAU,EAAA,6BAAA;AAAA,kBACV,KAAO,EAAA,KAAA;AAAA,kBACP,YAAY,EAAA,iBAAA;AAAA,iBAAA;AAAA,eAEpB,EAAA,CAAA;AAAA,aAAA;AAAA,WACJ;AAAA,8BAEH,MAAO,EAAA,EAAA,CAAA;AAAA,UACP,MAAM,WACH,oBAAA,GAAA,CAAC,mBAAoB,EAAA,EAAA,KAAA,EAAc,OAAc,IAAY,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA;AAAA,KAErE;AAAA,IACC,cAAA;AAAA,GACL,EAAA,CAAA,CAAA;AAER,CAAA;AAEA,SAAS,oBAAoB,KAIb,EAAA;AACZ,EAAA,MAAM,EAAE,KAAA,EAAO,KAAO,EAAA,IAAA,EAAS,GAAA,KAAA,CAAA;AAC/B,EAAA,MAAM,cAAc,IAAK,CAAA,aAAA,CAAc,EAAE,EAAA,EAAI,oBAAoB,CAAA,CAAA;AACjE,EAAM,MAAA,WAAA,GAAc,oBAAoB,KAAK,CAAA,CAAA;AAC7C,EAAM,MAAA,WAAA,GAAc,YAAa,CAAA,KAAK,CAAM,KAAA,OAAA,CAAA;AAE5C,EACI,uBAAA,IAAA,CAAC,OAAQ,EAAA,EAAA,SAAA,EAAU,cACf,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,cACG,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACG,YAAY,CAAC,WAAA;AAAA,QACb,SAAU,EAAA,+BAAA;AAAA,QACV,YAAY,EAAA,WAAA;AAAA,QACZ,YAAa,EAAA,MAAA;AAAA,QACb,WAAa,EAAA,CAAA;AAAA,QACb,OAAS,EAAA,CAAA;AAAA,QACT,OAAQ,EAAA,OAAA;AAAA,QACR,QAAA,sBAAW,cAAe,EAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAElC,EAAA,CAAA;AAAA,oBACA,GAAA,CAAC,UACG,QAAC,kBAAA,IAAA,CAAA,cAAA,EAAA,EAAe,WAAU,wBAAyB,EAAA,SAAA,EAAU,MAAO,EAAA,SAAA,EAAU,KAC1E,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,YAAa,EAAA,EAAA,CAAA;AAAA,sBACd,GAAA,CAAC,kBAAmB,EAAA,EAAA,EAAA,EAAI,CAAG,EAAA,CAAA;AAAA,sBAC3B,GAAA,CAAC,iBAAe,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,sBACtB,GAAA,CAAC,eAAa,QAAY,EAAA,WAAA,EAAA,CAAA;AAAA,KAAA,EAC9B,CACJ,EAAA,CAAA;AAAA,GACJ,EAAA,CAAA,CAAA;AAER,CAAA;AAEA,SAAS,oBAAoB,KAA0B,EAAA;AACnD,EAAA,MAAM,cAAc,WAAY,CAAA,MAAM,MAAM,WAAa,EAAA,CAAC,KAAK,CAAC,CAAA,CAAA;AAChE,EAAA,MAAM,SAAY,GAAA,WAAA;AAAA,IACd,CAAC,EAAmB,KAAA;AAChB,MAAA,MAAM,QAAW,GAAA,KAAA,CAAM,EAAG,CAAA,qBAAA,EAAuB,EAAE,CAAA,CAAA;AACnD,MAAO,OAAA,MAAM,SAAS,OAAQ,EAAA,CAAA;AAAA,KAClC;AAAA,IACA,CAAC,KAAK,CAAA;AAAA,GACV,CAAA;AACA,EAAO,OAAA,oBAAA,CAAqB,WAAW,WAAW,CAAA,CAAA;AACtD,CAAA;AAGA,SAAS,SAAS,KAA0B,EAAA;AACxC,EAAA,MAAM,cAAc,WAAY,CAAA,MAAM,MAAM,KAAO,EAAA,CAAC,KAAK,CAAC,CAAA,CAAA;AAC1D,EAAA,MAAM,SAAY,GAAA,WAAA;AAAA,IACd,CAAC,EAAmB,KAAA;AAChB,MAAA,MAAM,QAAW,GAAA,KAAA,CAAM,EAAG,CAAA,eAAA,EAAiB,EAAE,CAAA,CAAA;AAC7C,MAAO,OAAA,MAAM,SAAS,OAAQ,EAAA,CAAA;AAAA,KAClC;AAAA,IACA,CAAC,KAAK,CAAA;AAAA,GACV,CAAA;AAEA,EAAO,OAAA,oBAAA,CAAqB,WAAW,WAAW,CAAA,CAAA;AACtD,CAAA;AAGA,SAAS,cAAc,KAGrB,EAAA;AACE,EAAA,MAAM,cAAc,WAAY,CAAA,MAAM,MAAM,OAAS,EAAA,CAAC,KAAK,CAAC,CAAA,CAAA;AAC5D,EAAA,MAAM,SAAY,GAAA,WAAA;AAAA,IACd,CAAC,EAAmB,KAAA;AAChB,MAAA,MAAM,QAAW,GAAA,KAAA,CAAM,EAAG,CAAA,iBAAA,EAAmB,EAAE,CAAA,CAAA;AAC/C,MAAO,OAAA,MAAM,SAAS,OAAQ,EAAA,CAAA;AAAA,KAClC;AAAA,IACA,CAAC,KAAK,CAAA;AAAA,GACV,CAAA;AACA,EAAM,MAAA,SAAA,GAAY,oBAAqB,CAAA,SAAA,EAAW,WAAW,CAAA,CAAA;AAC7D,EAAA,MAAM,UAAa,GAAA,WAAA;AAAA,IACf,CAAC,OAAqB,KAAA;AAClB,MAAA,KAAA,CAAM,WAAW,OAAO,CAAA,CAAA;AAAA,KAC5B;AAAA,IACA,CAAC,KAAK,CAAA;AAAA,GACV,CAAA;AAEA,EAAO,OAAA;AAAA,IACH,SAAA;AAAA,IACA,UAAA;AAAA,GACJ,CAAA;AACJ,CAAA;AAGA,SAAS,UAAU,GAAwB,EAAA;AACvC,EAAA,MAAM,SAAY,GAAA,WAAA;AAAA,IACd,CAAC,EAAmB,KAAA;AAChB,MAAA,MAAM,QAAW,GAAA,GAAA,CAAI,MAAO,CAAA,EAAA,CAAG,WAAW,EAAE,CAAA,CAAA;AAC5C,MAAO,OAAA,MAAM,SAAS,OAAQ,EAAA,CAAA;AAAA,KAClC;AAAA,IACA,CAAC,GAAG,CAAA;AAAA,GACR,CAAA;AACA,EAAM,MAAA,QAAA,GAAW,YAAY,MAAM;AAC/B,IAAI,IAAA,MAAA,GAAS,IAAI,MAAO,CAAA,oBAAA,CAAqB,EAAE,kBAAoB,EAAA,IAAA,EAAM,CAAA,IAAK,EAAC,CAAA;AAC/E,IAAA,MAAA,GAAS,OAAO,OAAQ,EAAA,CAAA;AACxB,IAAO,OAAA,MAAA,CAAA;AAAA,GACX,EAAG,CAAC,GAAG,CAAC,CAAA,CAAA;AACR,EAAO,OAAA,sBAAA,CAAuB,WAAW,QAAQ,CAAA,CAAA;AACrD,CAAA;AAGA,SAAS,aAAa,KAA0C,EAAA;AAC5D,EAAA,MAAM,SAAY,GAAA,WAAA;AAAA,IACd,CAAC,EAAmB,KAAA;AAChB,MAAA,MAAM,QAAW,GAAA,KAAA,CAAM,SAAW,EAAA,EAAA,CAAG,WAAW,EAAE,CAAA,CAAA;AAClD,MAAO,OAAA,MAAM,UAAU,OAAQ,EAAA,CAAA;AAAA,KACnC;AAAA,IACA,CAAC,KAAK,CAAA;AAAA,GACV,CAAA;AACA,EAAM,MAAA,QAAA,GAAW,YAAY,MAA8B;AACvD,IAAA,MAAM,YAAY,KAAM,CAAA,SAAA,CAAA;AACxB,IAAA,IAAI,CAAC,SAAW,EAAA;AACZ,MAAO,OAAA,KAAA,CAAA,CAAA;AAAA,KACX;AAEA,IAAA,IAAI,SAAS,KAAM,CAAA,SAAA,EAAW,aAAa,EAAE,kBAAA,EAAoB,MAAM,CAAA,CAAA;AACvE,IAAA,MAAA,GAAS,OAAO,OAAQ,EAAA,CAAA;AACxB,IAAO,OAAA,MAAA,CAAA;AAAA,GACX,EAAG,CAAC,KAAK,CAAC,CAAA,CAAA;AACV,EAAO,OAAA,sBAAA,CAAuB,WAAW,QAAQ,CAAA,CAAA;AACrD,CAAA;AAGA,SAAS,aAAa,KAAyB,EAAA;AAE3C,EAAA,MAAM,MAAS,GAAA,aAAA,IAAiB,KAAQ,GAAA,KAAA,CAAM,WAAc,GAAA,KAAA,CAAA;AAC5D,EAAA,MAAM,SAAY,GAAA,WAAA;AAAA,IACd,CAAC,EAAmB,KAAA;AAChB,MAAA,MAAM,QAAW,GAAA,MAAA,CAAO,EAAG,CAAA,mBAAA,EAAqB,EAAE,CAAA,CAAA;AAClD,MAAO,OAAA,MAAM,SAAS,OAAQ,EAAA,CAAA;AAAA,KAClC;AAAA,IACA,CAAC,MAAM,CAAA;AAAA,GACX,CAAA;AAEA,EAAM,MAAA,WAAA,GAAc,YAAY,MAAM;AAClC,IAAA,OAAO,MAAO,CAAA,SAAA,CAAA;AAAA,GAClB,EAAG,CAAC,MAAM,CAAC,CAAA,CAAA;AAEX,EAAO,OAAA,oBAAA,CAAqB,WAAW,WAAW,CAAA,CAAA;AACtD,CAAA;AASA,SAAS,sBAAA,CACL,WACA,QACC,EAAA;AACD,EAAA,MAAM,cAAc,MAAiC,EAAA,CAAA;AAErD,EAAA,MAAM,eAAkB,GAAA,WAAA;AAAA,IACpB,CAAC,EAAmB,KAAA;AAChB,MAAM,MAAA,OAAA,GAAU,UAAU,MAAM;AAE5B,QAAA,WAAA,CAAY,OAAU,GAAA,KAAA,CAAA,CAAA;AACtB,QAAG,EAAA,EAAA,CAAA;AAAA,OACN,CAAA,CAAA;AACD,MAAA,OAAO,MAAM;AAET,QAAA,WAAA,CAAY,OAAU,GAAA,KAAA,CAAA,CAAA;AACtB,QAAQ,OAAA,EAAA,CAAA;AAAA,OACZ,CAAA;AAAA,KACJ;AAAA,IACA,CAAC,SAAS,CAAA;AAAA,GACd,CAAA;AACA,EAAM,MAAA,iBAAA,GAAoB,YAAY,MAAM;AAExC,IAAA,IAAI,YAAY,OAAS,EAAA;AACrB,MAAA,OAAO,YAAY,OAAQ,CAAA,KAAA,CAAA;AAAA,KAC/B;AAGA,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AACvB,IAAY,WAAA,CAAA,OAAA,GAAU,EAAE,KAAM,EAAA,CAAA;AAC9B,IAAO,OAAA,KAAA,CAAA;AAAA,GACX,EAAG,CAAC,QAAQ,CAAC,CAAA,CAAA;AACb,EAAO,OAAA,oBAAA,CAAqB,iBAAiB,iBAAiB,CAAA,CAAA;AAClE,CAAA;AAEA,SAAS,KAAK,EAAY,EAAA;AACtB,EAAA,OAAO,EACF,CAAA,WAAA,EACA,CAAA,OAAA,CAAQ,cAAgB,EAAA,EAAE,CAC1B,CAAA,OAAA,CAAQ,MAAQ,EAAA,GAAG,CACnB,CAAA,OAAA,CAAQ,OAAO,GAAG,CAAA,CAAA;AAC3B;;;;"}
package/package.json CHANGED
@@ -1,18 +1,28 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@open-pioneer/toc",
4
- "version": "0.3.0",
4
+ "version": "0.4.0",
5
+ "description": "This package provides a UI component that displays the map content to the user and allows them to control it.",
6
+ "keywords": [
7
+ "open-pioneer-trails"
8
+ ],
9
+ "homepage": "https://github.com/open-pioneer",
5
10
  "license": "Apache-2.0",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/open-pioneer/trails-openlayers-base-packages",
14
+ "directory": "src/packages/toc"
15
+ },
6
16
  "peerDependencies": {
7
17
  "@open-pioneer/chakra-integration": "^1.1.1",
8
- "@open-pioneer/runtime": "^2.1.0",
9
- "ol": "^8.2.0",
18
+ "@open-pioneer/runtime": "^2.1.2",
19
+ "ol": "^9.0.0",
10
20
  "react": "^18.2.0",
11
21
  "classnames": "^2.3.2",
12
22
  "react-icons": "^4.12.0",
13
- "@open-pioneer/map": "^0.3.0",
14
- "@open-pioneer/react-utils": "^0.2.1",
15
- "@open-pioneer/basemap-switcher": "^0.3.0"
23
+ "@open-pioneer/map": "^0.4.0",
24
+ "@open-pioneer/basemap-switcher": "^0.4.0",
25
+ "@open-pioneer/react-utils": "^0.2.2"
16
26
  },
17
27
  "exports": {
18
28
  "./package.json": "./package.json",