@open-pioneer/legend 0.1.0 → 0.2.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,34 @@
1
1
  # @open-pioneer/legend
2
2
 
3
+ ## 0.2.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/react-utils@0.2.2
23
+ - @open-pioneer/map@0.4.0
24
+
25
+ ## 0.1.1
26
+
27
+ ### Patch Changes
28
+
29
+ - Updated dependencies [611ddb9]
30
+ - @open-pioneer/map@0.3.1
31
+
3
32
  ## 0.1.0
4
33
 
5
34
  ### Minor Changes
package/Legend.js CHANGED
@@ -197,7 +197,7 @@ function useLegendAttributes(layer) {
197
197
  return legendAttributes;
198
198
  }
199
199
  function slug(id) {
200
- return id.replace(/[^a-z0-9 -]/g, "").replace(/\s+/g, "-").replace(/-+/g, "-");
200
+ return id.toLowerCase().replace(/[^a-z0-9 -]/g, "").replace(/\s+/g, "-").replace(/-+/g, "-");
201
201
  }
202
202
 
203
203
  export { Legend };
package/Legend.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Legend.js","sources":["Legend.tsx"],"sourcesContent":["// SPDX-FileCopyrightText: 2023 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { Box, Image, List, Text } from \"@open-pioneer/chakra-integration\";\nimport { Layer, MapModel, useMapModel, LayerBase, Sublayer } from \"@open-pioneer/map\";\nimport {\n ComponentType,\n FC,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n useSyncExternalStore\n} from \"react\";\nimport { CommonComponentProps, useCommonComponentProps } from \"@open-pioneer/react-utils\";\nimport { useIntl } from \"open-pioneer:react-hooks\";\nimport { WarningTwoIcon } from \"@chakra-ui/icons\";\nimport classNames from \"classnames\";\n\ntype LegendLayer = Layer | Sublayer;\n\n/**\n * Properties of a legend item React component.\n */\nexport interface LegendItemComponentProps {\n /**\n * Related layer of the legend.\n */\n layer: LayerBase;\n}\n\n/**\n * Attributes of the legend attribute that can be specified on a layer.\n *\n * To show a legend for the layer, provide an imageUrl to an image to show\n * or provide a React component that will be rendered as a legend.\n */\nexport interface LegendItemAttributes {\n /**\n * (Optional) URL to an image that will be shown as a legend for the layer.\n */\n imageUrl?: string;\n\n /**\n * (Optional) React component that will be shown as customized legend for the layer.\n */\n Component?: ComponentType<LegendItemComponentProps>;\n}\n\n/**\n * These are special properties for the Legend.\n */\nexport interface LegendProps extends CommonComponentProps {\n /**\n * The id of the map.\n */\n mapId: string;\n\n /**\n * Specifies whether legend for active base layer is shown in the legend UI.\n * Defaults to `false`.\n */\n showBaseLayers?: boolean;\n}\n\n/**\n * The `Legend` component can be used to display the legend of layers that are visible in the map.\n */\nexport const Legend: FC<LegendProps> = (props) => {\n const { mapId, showBaseLayers = false } = props;\n const { containerProps } = useCommonComponentProps(\"legend\", props);\n const { map } = useMapModel(mapId);\n\n return (\n <Box {...containerProps}>\n {map ? <LegendList map={map} showBaseLayers={showBaseLayers} /> : null}\n </Box>\n );\n};\n\nfunction LegendList(props: { map: MapModel; showBaseLayers: boolean }): JSX.Element {\n const { map, showBaseLayers } = props;\n\n const layers = useLayers(map);\n const legendListItems: ReactNode[] = layers.map((layer) => {\n return (\n <LegendItem key={layer.id} layer={layer} showBaseLayers={showBaseLayers}></LegendItem>\n );\n });\n\n return (\n <List\n // Note: not using UnorderedList because it adds default margins\n as=\"ul\"\n className=\"legend-layer-list\"\n listStyleType=\"none\"\n spacing={2}\n >\n {legendListItems}\n </List>\n );\n}\n\nfunction LegendItem(props: { layer: LegendLayer; showBaseLayers: boolean }): ReactNode {\n const { layer, showBaseLayers } = props;\n const { isVisible } = useVisibility(layer);\n const sublayers = useSublayers(layer);\n\n if (!isVisible) {\n return undefined;\n }\n\n // '!(\"parentLayer\" in layer)' checks if the layer is no sublayer\n if (!showBaseLayers && !(\"parentLayer\" in layer) && layer.isBaseLayer) {\n return undefined;\n }\n\n // legend items for all sublayers\n const childItems: ReactNode[] = [];\n if (sublayers?.length) {\n sublayers.forEach((sublayer) => {\n childItems.push(\n <LegendItem key={sublayer.id} layer={sublayer} showBaseLayers={showBaseLayers} />\n );\n });\n }\n\n return (\n <>\n <LegendContent layer={layer} showBaseLayers={showBaseLayers} />\n {childItems}\n </>\n );\n}\n\nfunction LegendContent(props: { layer: LegendLayer; showBaseLayers: boolean }) {\n const intl = useIntl();\n\n const { layer, showBaseLayers } = props;\n const legendAttributes = useLegendAttributes(layer);\n const legendUrl = useLegend(layer);\n let renderedComponent: ReactNode | undefined;\n\n if (legendAttributes?.Component) {\n renderedComponent = <legendAttributes.Component layer={layer} />;\n } else if (legendAttributes?.imageUrl) {\n renderedComponent = <LegendImage layer={layer} imageUrl={legendAttributes.imageUrl} />;\n } else {\n if (legendUrl) {\n renderedComponent = <LegendImage layer={layer} imageUrl={legendUrl} />;\n }\n }\n\n const isBaseLayer = !(\"parentLayer\" in layer) && layer.isBaseLayer;\n\n return renderedComponent ? (\n <Box as=\"li\" className={classNames(\"legend-item\", `layer-${slug(layer.id)}`)}>\n {showBaseLayers && isBaseLayer ? (\n /* Render additional text, if layer is a configured basemap */\n <Text as=\"b\">{intl.formatMessage({ id: \"basemapLabel\" })}</Text>\n ) : null}\n {renderedComponent}\n </Box>\n ) : undefined;\n}\n\nfunction LegendImage(props: { imageUrl: string; layer: LegendLayer }) {\n const intl = useIntl();\n\n const { layer, imageUrl } = props;\n\n return (\n <Box>\n <Text>{layer.title}</Text>\n <Image\n maxW=\"none\"\n maxH=\"none\"\n src={imageUrl}\n alt={intl.formatMessage({ id: \"altLabel\" }, { layerName: layer.title })}\n className={\"legend-item__image\"}\n fallbackStrategy={\"onError\"}\n fallback={\n <Box>\n <Text>\n <WarningTwoIcon me={2} />\n {intl.formatMessage({ id: \"fallbackLabel\" })}\n </Text>\n </Box>\n }\n />\n </Box>\n );\n}\n\nfunction useLegend(layer: LayerBase): string | undefined {\n const getSnapshot = useCallback(() => layer.legend, [layer]);\n const subscribe = useCallback(\n (cb: () => void) => {\n const resource = layer.on(\"changed:legend\", cb);\n return () => resource.destroy();\n },\n [layer]\n );\n\n return useSyncExternalStore(subscribe, getSnapshot);\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.getAllLayers({ 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/**\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\n/** Returns the layer's current visibility. */\nfunction useVisibility(layer: LayerBase): {\n isVisible: boolean;\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\n return {\n isVisible\n };\n}\n\nfunction useLegendAttributes(layer: LayerBase) {\n const [legendAttributes, setLegendAttributes] = useState<LegendItemAttributes | undefined>(\n undefined\n );\n\n useEffect(() => {\n setLegendAttributes(layer.attributes.legend as LegendItemAttributes | undefined);\n\n const resource = layer.on(\"changed:attributes\", () => {\n setLegendAttributes(layer.attributes.legend as LegendItemAttributes | undefined);\n });\n return () => resource.destroy();\n }, [layer]);\n\n return legendAttributes;\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":"Legend.js","sources":["Legend.tsx"],"sourcesContent":["// SPDX-FileCopyrightText: 2023 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { Box, Image, List, Text } from \"@open-pioneer/chakra-integration\";\nimport { Layer, MapModel, useMapModel, LayerBase, Sublayer } from \"@open-pioneer/map\";\nimport {\n ComponentType,\n FC,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n useSyncExternalStore\n} from \"react\";\nimport { CommonComponentProps, useCommonComponentProps } from \"@open-pioneer/react-utils\";\nimport { useIntl } from \"open-pioneer:react-hooks\";\nimport { WarningTwoIcon } from \"@chakra-ui/icons\";\nimport classNames from \"classnames\";\n\ntype LegendLayer = Layer | Sublayer;\n\n/**\n * Properties of a legend item React component.\n */\nexport interface LegendItemComponentProps {\n /**\n * Related layer of the legend.\n */\n layer: LayerBase;\n}\n\n/**\n * Attributes of the legend attribute that can be specified on a layer.\n *\n * To show a legend for the layer, provide an imageUrl to an image to show\n * or provide a React component that will be rendered as a legend.\n */\nexport interface LegendItemAttributes {\n /**\n * (Optional) URL to an image that will be shown as a legend for the layer.\n */\n imageUrl?: string;\n\n /**\n * (Optional) React component that will be shown as customized legend for the layer.\n */\n Component?: ComponentType<LegendItemComponentProps>;\n}\n\n/**\n * These are special properties for the Legend.\n */\nexport interface LegendProps extends CommonComponentProps {\n /**\n * The id of the map.\n */\n mapId: string;\n\n /**\n * Specifies whether legend for active base layer is shown in the legend UI.\n * Defaults to `false`.\n */\n showBaseLayers?: boolean;\n}\n\n/**\n * The `Legend` component can be used to display the legend of layers that are visible in the map.\n */\nexport const Legend: FC<LegendProps> = (props) => {\n const { mapId, showBaseLayers = false } = props;\n const { containerProps } = useCommonComponentProps(\"legend\", props);\n const { map } = useMapModel(mapId);\n\n return (\n <Box {...containerProps}>\n {map ? <LegendList map={map} showBaseLayers={showBaseLayers} /> : null}\n </Box>\n );\n};\n\nfunction LegendList(props: { map: MapModel; showBaseLayers: boolean }): JSX.Element {\n const { map, showBaseLayers } = props;\n\n const layers = useLayers(map);\n const legendListItems: ReactNode[] = layers.map((layer) => {\n return (\n <LegendItem key={layer.id} layer={layer} showBaseLayers={showBaseLayers}></LegendItem>\n );\n });\n\n return (\n <List\n // Note: not using UnorderedList because it adds default margins\n as=\"ul\"\n className=\"legend-layer-list\"\n listStyleType=\"none\"\n spacing={2}\n >\n {legendListItems}\n </List>\n );\n}\n\nfunction LegendItem(props: { layer: LegendLayer; showBaseLayers: boolean }): ReactNode {\n const { layer, showBaseLayers } = props;\n const { isVisible } = useVisibility(layer);\n const sublayers = useSublayers(layer);\n\n if (!isVisible) {\n return undefined;\n }\n\n // '!(\"parentLayer\" in layer)' checks if the layer is no sublayer\n if (!showBaseLayers && !(\"parentLayer\" in layer) && layer.isBaseLayer) {\n return undefined;\n }\n\n // legend items for all sublayers\n const childItems: ReactNode[] = [];\n if (sublayers?.length) {\n sublayers.forEach((sublayer) => {\n childItems.push(\n <LegendItem key={sublayer.id} layer={sublayer} showBaseLayers={showBaseLayers} />\n );\n });\n }\n\n return (\n <>\n <LegendContent layer={layer} showBaseLayers={showBaseLayers} />\n {childItems}\n </>\n );\n}\n\nfunction LegendContent(props: { layer: LegendLayer; showBaseLayers: boolean }) {\n const intl = useIntl();\n\n const { layer, showBaseLayers } = props;\n const legendAttributes = useLegendAttributes(layer);\n const legendUrl = useLegend(layer);\n let renderedComponent: ReactNode | undefined;\n\n if (legendAttributes?.Component) {\n renderedComponent = <legendAttributes.Component layer={layer} />;\n } else if (legendAttributes?.imageUrl) {\n renderedComponent = <LegendImage layer={layer} imageUrl={legendAttributes.imageUrl} />;\n } else {\n if (legendUrl) {\n renderedComponent = <LegendImage layer={layer} imageUrl={legendUrl} />;\n }\n }\n\n const isBaseLayer = !(\"parentLayer\" in layer) && layer.isBaseLayer;\n\n return renderedComponent ? (\n <Box as=\"li\" className={classNames(\"legend-item\", `layer-${slug(layer.id)}`)}>\n {showBaseLayers && isBaseLayer ? (\n /* Render additional text, if layer is a configured basemap */\n <Text as=\"b\">{intl.formatMessage({ id: \"basemapLabel\" })}</Text>\n ) : null}\n {renderedComponent}\n </Box>\n ) : undefined;\n}\n\nfunction LegendImage(props: { imageUrl: string; layer: LegendLayer }) {\n const intl = useIntl();\n\n const { layer, imageUrl } = props;\n\n return (\n <Box>\n <Text>{layer.title}</Text>\n <Image\n maxW=\"none\"\n maxH=\"none\"\n src={imageUrl}\n alt={intl.formatMessage({ id: \"altLabel\" }, { layerName: layer.title })}\n className={\"legend-item__image\"}\n fallbackStrategy={\"onError\"}\n fallback={\n <Box>\n <Text>\n <WarningTwoIcon me={2} />\n {intl.formatMessage({ id: \"fallbackLabel\" })}\n </Text>\n </Box>\n }\n />\n </Box>\n );\n}\n\nfunction useLegend(layer: LayerBase): string | undefined {\n const getSnapshot = useCallback(() => layer.legend, [layer]);\n const subscribe = useCallback(\n (cb: () => void) => {\n const resource = layer.on(\"changed:legend\", cb);\n return () => resource.destroy();\n },\n [layer]\n );\n\n return useSyncExternalStore(subscribe, getSnapshot);\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.getAllLayers({ 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/**\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\n/** Returns the layer's current visibility. */\nfunction useVisibility(layer: LayerBase): {\n isVisible: boolean;\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\n return {\n isVisible\n };\n}\n\nfunction useLegendAttributes(layer: LayerBase) {\n const [legendAttributes, setLegendAttributes] = useState<LegendItemAttributes | undefined>(\n undefined\n );\n\n useEffect(() => {\n setLegendAttributes(layer.attributes.legend as LegendItemAttributes | undefined);\n\n const resource = layer.on(\"changed:attributes\", () => {\n setLegendAttributes(layer.attributes.legend as LegendItemAttributes | undefined);\n });\n return () => resource.destroy();\n }, [layer]);\n\n return legendAttributes;\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":"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"}
package/package.json CHANGED
@@ -1,17 +1,27 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@open-pioneer/legend",
4
- "version": "0.1.0",
4
+ "version": "0.2.0",
5
+ "description": "This package provides a legend UI component that allows a user to see legend information for layers in the map.",
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/legend"
15
+ },
6
16
  "peerDependencies": {
7
17
  "@open-pioneer/chakra-integration": "^1.1.1",
8
18
  "@chakra-ui/icons": "^2.1.1",
9
- "@open-pioneer/runtime": "^2.1.0",
10
- "ol": "^8.2.0",
19
+ "@open-pioneer/runtime": "^2.1.2",
20
+ "ol": "^9.0.0",
11
21
  "react": "^18.2.0",
12
22
  "classnames": "^2.3.2",
13
- "@open-pioneer/react-utils": "^0.2.1",
14
- "@open-pioneer/map": "^0.3.0"
23
+ "@open-pioneer/react-utils": "^0.2.2",
24
+ "@open-pioneer/map": "^0.4.0"
15
25
  },
16
26
  "exports": {
17
27
  "./package.json": "./package.json",