@next-bricks/data-view 1.10.1 → 1.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bricks.json +2 -2
- package/dist/chunks/1045.54ae2d5b.js +2 -0
- package/dist/chunks/1045.54ae2d5b.js.map +1 -0
- package/dist/chunks/{114.f8141681.js → 114.066d30f1.js} +2 -2
- package/dist/chunks/{114.f8141681.js.map → 114.066d30f1.js.map} +1 -1
- package/dist/chunks/1491.ca56048e.js +3 -0
- package/dist/chunks/{1491.345114bf.js.map → 1491.ca56048e.js.map} +1 -1
- package/dist/chunks/{1493.e45be49f.js → 1493.2fc0dfef.js} +2 -2
- package/dist/chunks/{1493.e45be49f.js.map → 1493.2fc0dfef.js.map} +1 -1
- package/dist/chunks/1940.ba4034cc.js +2 -0
- package/dist/chunks/{1940.3555f80f.js.map → 1940.ba4034cc.js.map} +1 -1
- package/dist/chunks/2277.c4b47020.js +2 -0
- package/dist/chunks/{2277.26add4d5.js.map → 2277.c4b47020.js.map} +1 -1
- package/dist/chunks/{3171.3a9c6cb7.js → 3171.d8fa5a74.js} +2 -2
- package/dist/chunks/{3171.3a9c6cb7.js.map → 3171.d8fa5a74.js.map} +1 -1
- package/dist/chunks/3933.7cb9c356.js +2 -0
- package/dist/chunks/{3933.248700f4.js.map → 3933.7cb9c356.js.map} +1 -1
- package/dist/chunks/4658.e9b0d7a9.js +2 -0
- package/dist/chunks/{4658.7e7a0ae1.js.map → 4658.e9b0d7a9.js.map} +1 -1
- package/dist/chunks/4837.7e0b494a.js +2 -0
- package/dist/chunks/{7218.446f491e.js.map → 4837.7e0b494a.js.map} +1 -1
- package/dist/chunks/{5552.f0363a64.js → 5552.15b2b47a.js} +2 -2
- package/dist/chunks/{5552.f0363a64.js.map → 5552.15b2b47a.js.map} +1 -1
- package/dist/chunks/6314.dd2c9bcc.js +2 -0
- package/dist/chunks/{6314.c8020ca1.js.map → 6314.dd2c9bcc.js.map} +1 -1
- package/dist/chunks/7218.168df8f5.js +2 -0
- package/dist/chunks/{4837.26a827bd.js.map → 7218.168df8f5.js.map} +1 -1
- package/dist/chunks/{7733.d4c53ed9.js → 7733.bb8d9bac.js} +2 -2
- package/dist/chunks/{7733.d4c53ed9.js.map → 7733.bb8d9bac.js.map} +1 -1
- package/dist/chunks/{8097.13253824.js → 8097.8c59867f.js} +2 -2
- package/dist/chunks/{8097.13253824.js.map → 8097.8c59867f.js.map} +1 -1
- package/dist/chunks/8826.9ba3bce1.js +2 -0
- package/dist/chunks/{8826.2d0820ed.js.map → 8826.9ba3bce1.js.map} +1 -1
- package/dist/chunks/9559.8a095ed7.js +2 -0
- package/dist/chunks/{9559.1c290960.js.map → 9559.8a095ed7.js.map} +1 -1
- package/dist/chunks/{app-wall-card-item.f3230e62.js → app-wall-card-item.2c51024a.js} +3 -3
- package/dist/chunks/{app-wall-card-item.f3230e62.js.map → app-wall-card-item.2c51024a.js.map} +1 -1
- package/dist/chunks/{app-wall-relation-line.4428d63e.js → app-wall-relation-line.89a4b2fb.js} +3 -3
- package/dist/chunks/{app-wall-relation-line.4428d63e.js.map → app-wall-relation-line.89a4b2fb.js.map} +1 -1
- package/dist/chunks/{app-wall-system-card.4c2ea6f9.js → app-wall-system-card.9bc2413f.js} +2 -2
- package/dist/chunks/{app-wall-system-card.4c2ea6f9.js.map → app-wall-system-card.9bc2413f.js.map} +1 -1
- package/dist/chunks/{app-wall.b522423e.js → app-wall.d911a1bb.js} +2 -2
- package/dist/chunks/{app-wall.b522423e.js.map → app-wall.d911a1bb.js.map} +1 -1
- package/dist/chunks/{basic-index-group.0e98cc10.js → basic-index-group.0f6be63c.js} +2 -2
- package/dist/chunks/{basic-index-group.0e98cc10.js.map → basic-index-group.0f6be63c.js.map} +1 -1
- package/dist/chunks/{battery-chart.abdaa4e4.js → battery-chart.d4eece56.js} +2 -2
- package/dist/chunks/{battery-chart.abdaa4e4.js.map → battery-chart.d4eece56.js.map} +1 -1
- package/dist/chunks/{brick-notification.bf772819.js → brick-notification.30fc969c.js} +2 -2
- package/dist/chunks/{brick-notification.bf772819.js.map → brick-notification.30fc969c.js.map} +1 -1
- package/dist/chunks/{bubbles-indicator.9c56af44.js → bubbles-indicator.ced83522.js} +2 -2
- package/dist/chunks/{bubbles-indicator.9c56af44.js.map → bubbles-indicator.ced83522.js.map} +1 -1
- package/dist/chunks/{cabinet-app-layer.764bb10d.js → cabinet-app-layer.0cf450c8.js} +3 -3
- package/dist/chunks/{cabinet-app-layer.764bb10d.js.map → cabinet-app-layer.0cf450c8.js.map} +1 -1
- package/dist/chunks/{cabinet-button.2861c374.js → cabinet-button.5c7febcc.js} +2 -2
- package/dist/chunks/{cabinet-button.2861c374.js.map → cabinet-button.5c7febcc.js.map} +1 -1
- package/dist/chunks/{cabinet-container.bc8cb288.js → cabinet-container.ade75762.js} +3 -3
- package/dist/chunks/{cabinet-container.bc8cb288.js.map → cabinet-container.ade75762.js.map} +1 -1
- package/dist/chunks/{cabinet-graph.4b9538f0.js → cabinet-graph.7e6339e0.js} +2 -2
- package/dist/chunks/{cabinet-graph.4b9538f0.js.map → cabinet-graph.7e6339e0.js.map} +1 -1
- package/dist/chunks/{cabinet-node.6cada36d.js → cabinet-node.3f08c2ab.js} +3 -3
- package/dist/chunks/{cabinet-node.6cada36d.js.map → cabinet-node.3f08c2ab.js.map} +1 -1
- package/dist/chunks/{cabinet-thumbnail.d6c2b232.js → cabinet-thumbnail.dbc7d4ce.js} +3 -3
- package/dist/chunks/{cabinet-thumbnail.d6c2b232.js.map → cabinet-thumbnail.dbc7d4ce.js.map} +1 -1
- package/dist/chunks/{china-map-chart.52890013.js → china-map-chart.82ce6dda.js} +2 -2
- package/dist/chunks/{china-map-chart.52890013.js.map → china-map-chart.82ce6dda.js.map} +1 -1
- package/dist/chunks/{china-map.c8780d37.js → china-map.136b71be.js} +2 -2
- package/dist/chunks/{china-map.c8780d37.js.map → china-map.136b71be.js.map} +1 -1
- package/dist/chunks/complex-search.94ff4d73.js +2 -0
- package/dist/chunks/{complex-search.edc01a8a.js.map → complex-search.94ff4d73.js.map} +1 -1
- package/dist/chunks/{crystal-ball-indicator.67278de8.js → crystal-ball-indicator.1181e572.js} +2 -2
- package/dist/chunks/{crystal-ball-indicator.67278de8.js.map → crystal-ball-indicator.1181e572.js.map} +1 -1
- package/dist/chunks/{data-display-flipper-fifth.354d1e71.js → data-display-flipper-fifth.dc1b1c1d.js} +2 -2
- package/dist/chunks/{data-display-flipper-fifth.354d1e71.js.map → data-display-flipper-fifth.dc1b1c1d.js.map} +1 -1
- package/dist/chunks/{data-display-flipper-sixth.6ecd9549.js → data-display-flipper-sixth.88034847.js} +2 -2
- package/dist/chunks/{data-display-flipper-sixth.6ecd9549.js.map → data-display-flipper-sixth.88034847.js.map} +1 -1
- package/dist/chunks/{data-display-flipper.fae041d0.js → data-display-flipper.8dbf0c1d.js} +2 -2
- package/dist/chunks/{data-display-flipper.fae041d0.js.map → data-display-flipper.8dbf0c1d.js.map} +1 -1
- package/dist/chunks/{dropdown-menu.a4c77402.js → dropdown-menu.daf5cd7e.js} +3 -3
- package/dist/chunks/{dropdown-menu.a4c77402.js.map → dropdown-menu.daf5cd7e.js.map} +1 -1
- package/dist/chunks/{gauge-chart.6ed1dfa8.js → gauge-chart.45b4ea28.js} +2 -2
- package/dist/chunks/{gauge-chart.6ed1dfa8.js.map → gauge-chart.45b4ea28.js.map} +1 -1
- package/dist/chunks/{gear-background.7707f3b1.js → gear-background.675d0978.js} +2 -2
- package/dist/chunks/{gear-background.7707f3b1.js.map → gear-background.675d0978.js.map} +1 -1
- package/dist/chunks/{globe-with-gear-indicator.a35ef0d2.js → globe-with-gear-indicator.a8253164.js} +2 -2
- package/dist/chunks/{globe-with-gear-indicator.a35ef0d2.js.map → globe-with-gear-indicator.a8253164.js.map} +1 -1
- package/dist/chunks/{globe-with-halo-indicator.ed913008.js → globe-with-halo-indicator.55f4a346.js} +2 -2
- package/dist/chunks/{globe-with-halo-indicator.ed913008.js.map → globe-with-halo-indicator.55f4a346.js.map} +1 -1
- package/dist/chunks/{globe-with-orbit-indicator.14c59388.js → globe-with-orbit-indicator.d86c5710.js} +2 -2
- package/dist/chunks/{globe-with-orbit-indicator.14c59388.js.map → globe-with-orbit-indicator.d86c5710.js.map} +1 -1
- package/dist/chunks/{graph-layout-grid.1a62c049.js → graph-layout-grid.f8a65323.js} +2 -2
- package/dist/chunks/{graph-layout-grid.1a62c049.js.map → graph-layout-grid.f8a65323.js.map} +1 -1
- package/dist/chunks/{graph-node.414864df.js → graph-node.8843ac35.js} +2 -2
- package/dist/chunks/{graph-node.414864df.js.map → graph-node.8843ac35.js.map} +1 -1
- package/dist/chunks/graph-text.06bbd3ce.js +2 -0
- package/dist/chunks/{graph-text.56e101b0.js.map → graph-text.06bbd3ce.js.map} +1 -1
- package/dist/chunks/{grid-background.7c505caa.js → grid-background.1dba8b8f.js} +2 -2
- package/dist/chunks/{grid-background.7c505caa.js.map → grid-background.1dba8b8f.js.map} +1 -1
- package/dist/chunks/{hi-tech-button.d51b6c2b.js → hi-tech-button.ad8a248b.js} +2 -2
- package/dist/chunks/{hi-tech-button.d51b6c2b.js.map → hi-tech-button.ad8a248b.js.map} +1 -1
- package/dist/chunks/{indicator-card.10734d27.js → indicator-card.67e3126c.js} +3 -3
- package/dist/chunks/{indicator-card.10734d27.js.map → indicator-card.67e3126c.js.map} +1 -1
- package/dist/chunks/{lights-component-title.751f95be.js → lights-component-title.a60bd019.js} +2 -2
- package/dist/chunks/{lights-component-title.751f95be.js.map → lights-component-title.a60bd019.js.map} +1 -1
- package/dist/chunks/{loading-panel.4b9cfaa7.js → loading-panel.5bed2bef.js} +2 -2
- package/dist/chunks/{loading-panel.4b9cfaa7.js.map → loading-panel.5bed2bef.js.map} +1 -1
- package/dist/chunks/main.103ffe2c.js +2 -0
- package/dist/chunks/main.103ffe2c.js.map +1 -0
- package/dist/chunks/{modern-style-component-title.2f427009.js → modern-style-component-title.3fc77ffb.js} +2 -2
- package/dist/chunks/{modern-style-component-title.2f427009.js.map → modern-style-component-title.3fc77ffb.js.map} +1 -1
- package/dist/chunks/{modern-style-page-title.790a17ac.js → modern-style-page-title.853d866b.js} +2 -2
- package/dist/chunks/{modern-style-page-title.790a17ac.js.map → modern-style-page-title.853d866b.js.map} +1 -1
- package/dist/chunks/modern-style-treemap.fbaa3c10.js +3 -0
- package/dist/chunks/{modern-style-treemap.eb1d71e0.js.map → modern-style-treemap.fbaa3c10.js.map} +1 -1
- package/dist/chunks/{particle-animation.15b8adfb.js → particle-animation.8a51b1a4.js} +2 -2
- package/dist/chunks/{particle-animation.15b8adfb.js.map → particle-animation.8a51b1a4.js.map} +1 -1
- package/dist/chunks/{progress-bar-list.ddeaf614.js → progress-bar-list.f85b0cf3.js} +2 -2
- package/dist/chunks/{progress-bar-list.ddeaf614.js.map → progress-bar-list.f85b0cf3.js.map} +1 -1
- package/dist/chunks/{radar-chart.c9abdd30.js → radar-chart.454b6164.js} +2 -2
- package/dist/chunks/{radar-chart.c9abdd30.js.map → radar-chart.454b6164.js.map} +1 -1
- package/dist/chunks/{simple-card-item.07b301f4.js → simple-card-item.0837e16d.js} +3 -3
- package/dist/chunks/{simple-card-item.07b301f4.js.map → simple-card-item.0837e16d.js.map} +1 -1
- package/dist/chunks/{tabs-drawer.04866e23.js → tabs-drawer.1c4c63a5.js} +3 -3
- package/dist/chunks/{tabs-drawer.04866e23.js.map → tabs-drawer.1c4c63a5.js.map} +1 -1
- package/dist/chunks/{tabs-page-title.670649e6.js → tabs-page-title.aa25b8e1.js} +3 -3
- package/dist/chunks/{tabs-page-title.670649e6.js.map → tabs-page-title.aa25b8e1.js.map} +1 -1
- package/dist/chunks/{tech-mesh-base-view.1a2baf3a.js → tech-mesh-base-view.3f4774cf.js} +2 -2
- package/dist/chunks/{tech-mesh-base-view.1a2baf3a.js.map → tech-mesh-base-view.3f4774cf.js.map} +1 -1
- package/dist/chunks/{title-text.77f2e79a.js → title-text.5db6c472.js} +2 -2
- package/dist/chunks/{title-text.77f2e79a.js.map → title-text.5db6c472.js.map} +1 -1
- package/dist/chunks/{top-title-bar.03e1e61d.js → top-title-bar.0079c0e3.js} +2 -2
- package/dist/chunks/{top-title-bar.03e1e61d.js.map → top-title-bar.0079c0e3.js.map} +1 -1
- package/dist/examples.json +3 -3
- package/dist/index.e5ef11af.js +2 -0
- package/dist/index.e5ef11af.js.map +1 -0
- package/dist/manifest.json +18 -18
- package/package.json +3 -3
- package/dist/chunks/1045.b74cadcb.js +0 -2
- package/dist/chunks/1045.b74cadcb.js.map +0 -1
- package/dist/chunks/1491.345114bf.js +0 -3
- package/dist/chunks/1940.3555f80f.js +0 -2
- package/dist/chunks/2277.26add4d5.js +0 -2
- package/dist/chunks/3933.248700f4.js +0 -2
- package/dist/chunks/4658.7e7a0ae1.js +0 -2
- package/dist/chunks/4837.26a827bd.js +0 -2
- package/dist/chunks/6314.c8020ca1.js +0 -2
- package/dist/chunks/7218.446f491e.js +0 -2
- package/dist/chunks/8826.2d0820ed.js +0 -2
- package/dist/chunks/9559.1c290960.js +0 -2
- package/dist/chunks/complex-search.edc01a8a.js +0 -2
- package/dist/chunks/graph-text.56e101b0.js +0 -2
- package/dist/chunks/main.e8031b63.js +0 -2
- package/dist/chunks/main.e8031b63.js.map +0 -1
- package/dist/chunks/modern-style-treemap.eb1d71e0.js +0 -3
- package/dist/index.38a026f6.js +0 -2
- package/dist/index.38a026f6.js.map +0 -1
- /package/dist/chunks/{1491.345114bf.js.LICENSE.txt → 1491.ca56048e.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{app-wall-card-item.f3230e62.js.LICENSE.txt → app-wall-card-item.2c51024a.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{app-wall-relation-line.4428d63e.js.LICENSE.txt → app-wall-relation-line.89a4b2fb.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{cabinet-app-layer.764bb10d.js.LICENSE.txt → cabinet-app-layer.0cf450c8.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{cabinet-container.bc8cb288.js.LICENSE.txt → cabinet-container.ade75762.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{cabinet-node.6cada36d.js.LICENSE.txt → cabinet-node.3f08c2ab.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{cabinet-thumbnail.d6c2b232.js.LICENSE.txt → cabinet-thumbnail.dbc7d4ce.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{dropdown-menu.a4c77402.js.LICENSE.txt → dropdown-menu.daf5cd7e.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{indicator-card.10734d27.js.LICENSE.txt → indicator-card.67e3126c.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{modern-style-treemap.eb1d71e0.js.LICENSE.txt → modern-style-treemap.fbaa3c10.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{simple-card-item.07b301f4.js.LICENSE.txt → simple-card-item.0837e16d.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{tabs-drawer.04866e23.js.LICENSE.txt → tabs-drawer.1c4c63a5.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{tabs-page-title.670649e6.js.LICENSE.txt → tabs-page-title.aa25b8e1.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/china-map-chart.52890013.js","mappings":"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","sources":["webpack:///./src/china-map-chart/index.tsx","webpack:///./src/shared/useContainerScale.ts","webpack:///./src/china-map-chart/styles.shadow.css"],"sourcesContent":["import React, { useEffect, useRef, useState, CSSProperties } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport {\n Scene,\n PolygonLayer,\n LineLayer,\n Marker,\n ImageLayer,\n type ILayer,\n type Point,\n} from \"@antv/l7\";\nimport { Map } from \"@antv/l7-maps\";\nimport { cloneDeep, isEmpty, isEqual, toNumber } from \"lodash\";\nimport defaultSvg from \"./assets/default.svg?url\";\nimport selectedSvg from \"./assets/selected.svg?url\";\nimport chinaPng from \"./assets/china.png\";\nimport texturePng from \"./assets/texture.png\";\nimport styleText from \"./styles.shadow.css\";\nimport { useContainerScale } from \"../shared/useContainerScale\";\n\nconst { defineElement, property, event } = createDecorators();\n\nconst BASE_WIDTH = 825;\nconst BASE_HEIGHT = 600;\n\ninterface FeatureCollection {\n type: \"FeatureCollection\";\n features: Feature[];\n}\n\ninterface Feature {\n type: \"Feature\";\n id?: string;\n properties: {\n name: string;\n center?: Point;\n province_adcode: number;\n province: string;\n };\n geometry: Polygon | MultiPolygon;\n}\n\ninterface Polygon {\n type: \"Polygon\";\n coordinates: Point[][];\n}\n\ninterface MultiPolygon {\n type: \"MultiPolygon\";\n coordinates: Point[][][];\n}\n\ninterface Area {\n name: string;\n level: \"country\" | \"province\" | \"city\" | \"district\";\n adcode: number;\n lng: number;\n lat: number;\n parent: number;\n}\n\n/**\n * 中国地图图表构件,可以显示省级指标数据\n *\n * @deprecated 已废弃,请使用 `data-view.china-map`\n */\nexport\n@defineElement(\"data-view.china-map-chart\", {\n styleTexts: [styleText],\n})\nclass ChinaMapChart extends ReactNextElement {\n /**\n * 省份名称,例如“广东”。如果设置,则只显示该省份的地图,否则显示全国地图\n */\n @property()\n accessor province: string | undefined;\n\n /**\n * 数据源\n */\n @property({ attribute: false })\n accessor dataSource: DataSource[] | undefined;\n\n /**\n * 描述内容样式\n */\n @property({ attribute: false })\n accessor detailContentStyle: CSSProperties | undefined;\n\n /**\n * 是否铺满容器\n *\n * 注意:该属性不同时兼容 detail 插槽\n */\n @property({ type: Boolean })\n accessor fillContainer: boolean | undefined;\n\n /**\n * 当提示可见性开始变化时触发\n * @detail 当前是否可见\n */\n @event({ type: \"detail.open.change\" })\n accessor #openChangeEvent!: EventEmitter<{\n open: boolean;\n data: Record<string, any>;\n }>;\n #handleOpenChange = (open: boolean, data: Record<string, any>): void => {\n this.#openChangeEvent.emit({ open, data });\n };\n\n render() {\n return (\n <ChinaMapChartComponent\n root={this}\n province={this.province}\n dataSource={this.dataSource}\n onDetailOpenChange={this.#handleOpenChange}\n detailContentStyle={this.detailContentStyle}\n fillContainer={this.fillContainer}\n />\n );\n }\n}\n\ninterface DataSource {\n /** 省级行政区域名,例如:四川、北京 */\n city: string;\n detailDisplayLocation: \"pageCenter\" | \"textBottom\";\n text: string;\n [x: string]: any;\n}\n\nexport interface ChinaMapChartProps {\n root: HTMLElement;\n province?: string;\n onDetailOpenChange: (open: boolean, data: Record<string, any>) => void;\n dataSource: DataSource[];\n detailContentStyle?: CSSProperties;\n fillContainer?: boolean;\n // Define props here.\n}\n\nexport function ChinaMapChartComponent(props: ChinaMapChartProps) {\n const {\n root,\n province,\n onDetailOpenChange,\n dataSource = [],\n detailContentStyle = {},\n fillContainer,\n } = props;\n const mapRef = useRef<HTMLDivElement>();\n const slotRef = useRef<HTMLSlotElement>();\n const [showData, setShowData] = useState<DataSource>();\n const showDataRef = useRef<DataSource>();\n const [textPosition, setTextPosition] = useState<{\n left: string;\n top: string;\n }>();\n\n const scale = useContainerScale({\n width: BASE_WIDTH,\n height: BASE_HEIGHT,\n root,\n maxScale: 10,\n disabled: !fillContainer,\n });\n\n const textClick = (e: MouseEvent, data: any) => {\n e.stopPropagation();\n if (isEqual(data, showDataRef.current)) {\n setShowData(null);\n return;\n }\n setShowData(data);\n setTextPosition({\n left: `${toNumber((e.target as any).style.left.replace(\"px\", \"\")) + 24}px`,\n top: `${toNumber((e.target as any).style.top.replace(\"px\", \"\")) + 28}px`,\n });\n };\n useEffect(() => {\n const scene = new Scene({\n id: mapRef.current,\n logoVisible: false,\n map: new Map({\n // center: [90.268, 40.3628],\n pitch: 35,\n zoom: 1,\n }),\n });\n scene.setMapStatus({ doubleClickZoom: false, zoomEnable: false });\n const defaultImg = new Image();\n defaultImg.src = defaultSvg;\n\n const selectedImg = new Image();\n selectedImg.src = selectedSvg;\n\n scene.addImage(\"default\", defaultImg);\n scene.addImage(\"selected\", selectedImg);\n if (!province) {\n scene.addImage(\"chinaBg\", chinaPng);\n } else {\n scene.addImage(\"texture\", texturePng);\n }\n\n scene.on(\"loaded\", async () => {\n let data: FeatureCollection;\n let southSeaData: FeatureCollection;\n let matchedProvince: Area | undefined;\n let AreaList: Area[] | undefined;\n if (province) {\n const [CitiesImport, AreaListImport] = await Promise.all([\n import(\"./cities.json\"),\n import(\"./area-list.json\"),\n ]);\n const Cities = CitiesImport.default as unknown as FeatureCollection;\n AreaList = AreaListImport.default as unknown as Area[];\n matchedProvince = AreaList.find(\n (a) => a.level === \"province\" && a.name.includes(province)\n );\n\n if (!matchedProvince) {\n throw new Error(`没有找到省份:\"${province}\"`);\n }\n\n data = {\n type: \"FeatureCollection\",\n features: (Cities as FeatureCollection).features.filter(\n (f) => f.properties.province_adcode === matchedProvince.adcode\n ),\n };\n } else {\n const ChinaImport = await import(\"./map.json\");\n const CHINA = ChinaImport.default as unknown as FeatureCollection;\n data = {\n type: \"FeatureCollection\",\n features: (CHINA as unknown as FeatureCollection).features.slice(\n 0,\n CHINA.features.length - 2\n ),\n };\n southSeaData = {\n ...CHINA,\n features: CHINA.features.slice(\n CHINA.features.length - 2,\n CHINA.features.length\n ),\n };\n }\n\n const seventhPolygonLayer = new PolygonLayer({\n autoFit: false,\n }).source(data);\n\n let labelDivideLng: number | undefined;\n // 根据坐标范围设置 3D 图层升起的高度\n let raisingHeightBase: number;\n if (province) {\n let top = Infinity;\n let left = Infinity;\n let bottom = -Infinity;\n let right = -Infinity;\n const points = data.features.flatMap(\n (f) =>\n f.geometry.coordinates.flat(\n f.geometry.type === \"MultiPolygon\" ? 2 : 1\n ) as Point[]\n );\n points.forEach(([lng, lat]) => {\n top = Math.min(top, lat);\n left = Math.min(left, lng);\n bottom = Math.max(bottom, lat);\n right = Math.max(right, lng);\n });\n const lngRange = right - left;\n const latRange = bottom - top;\n raisingHeightBase = Math.max(2000 * lngRange, 3000 * latRange);\n // 在经度范围的 3/4 处设置分界线,左边的文字向右排,右边的文字向左排\n labelDivideLng = left + (lngRange * 3) / 4;\n } else {\n raisingHeightBase = 100000;\n }\n\n seventhPolygonLayer\n .shape(\"extrude\")\n .color(\"rgba(84, 239, 241, 0.20)\")\n .style({\n heightfixed: true,\n pickLight: true,\n opacity: 1,\n raisingHeight: -13 * raisingHeightBase,\n });\n\n const sixthPolygonLayer = new PolygonLayer({\n autoFit: false,\n }).source(data);\n\n sixthPolygonLayer\n .shape(\"extrude\")\n .color(\"rgba(14, 11, 75, 0.58)\")\n .style({\n heightfixed: true,\n pickLight: true,\n opacity: 1,\n raisingHeight: -11 * raisingHeightBase,\n });\n\n const fifthPolygonLayer = new PolygonLayer({\n autoFit: false,\n }).source(data);\n\n fifthPolygonLayer\n .shape(\"extrude\")\n .color(\"rgba(190, 225, 226, 1)\")\n .style({\n heightfixed: true,\n pickLight: true,\n opacity: 1,\n raisingHeight: -9 * raisingHeightBase,\n });\n const fourthPolygonLayer = new PolygonLayer({\n autoFit: false,\n }).source(data);\n\n fourthPolygonLayer\n .shape(\"extrude\")\n .color(\"rgba(18, 26, 45, 1)\")\n .style({\n heightfixed: true,\n pickLight: true,\n opacity: 1,\n raisingHeight: -7 * raisingHeightBase,\n });\n\n const thirdPolygonLayer = new PolygonLayer({\n autoFit: false,\n }).source(data);\n\n thirdPolygonLayer\n .shape(\"extrude\")\n .color(\"#111D3C\")\n .style({\n heightfixed: true,\n pickLight: true,\n opacity: 1,\n raisingHeight: -5 * raisingHeightBase,\n });\n const secondPolygonLayer = new PolygonLayer({\n autoFit: false,\n }).source(data);\n\n secondPolygonLayer\n .shape(\"extrude\")\n .color(\"#121A2D\")\n .style({\n heightfixed: true,\n pickLight: true,\n opacity: 1,\n raisingHeight: -3 * raisingHeightBase,\n });\n\n const firstPolygonLayer = new PolygonLayer({\n autoFit: true,\n }).source(data);\n\n firstPolygonLayer.shape(\"fill\").color(\"rgba(8, 77, 255, 0.60)\");\n // .select({\n // color: \"rgba(177, 254, 254, 1)\",\n // });//编排上层缩放会影响到高亮功能,还不知道怎么解决,暂时不实现。\n\n let chinaImgLayer: ILayer | undefined;\n if (!province) {\n chinaImgLayer = new ImageLayer({\n autoFit: false,\n zIndex: 1,\n }).source(chinaPng, {\n parser: {\n type: \"image\",\n extent: [73.33, 17.9, 134.85, 53.73],\n },\n });\n\n chinaImgLayer.shape(\"img\").style({\n opacity: 1,\n });\n }\n\n const fourthLineLayer = new LineLayer()\n .source(data)\n .shape(\"line\")\n .color(\"rgba(43, 100, 255, 1)\")\n .size(1)\n .style({\n raisingHeight: -16 * raisingHeightBase,\n });\n\n const thirdLineLayer = new LineLayer()\n .source(data)\n .shape(\"line\")\n .color(\"rgba(84, 239, 241, 1)\")\n .size(1)\n .style({\n raisingHeight: -12 * raisingHeightBase,\n });\n\n const secondLineLayer = new LineLayer()\n .source(data)\n .shape(\"line\")\n .color(\"rgba(43, 100, 255, 1)\")\n .size(1)\n .style({\n raisingHeight: -6 * raisingHeightBase,\n });\n\n const firstLineLayer = new LineLayer({ zIndex: 2 })\n .source(data)\n .shape(\"line\")\n .color(\"#3DC6FF\")\n .size(1)\n .style({\n raisingHeight: 0,\n })\n .scale(\"density\", {\n type: \"quantile\",\n });\n\n // const hightLayer = new LineLayer({\n // zIndex: 10, // 设置显示层级\n // name: \"hightlight\",\n // })\n // .source({\n // type: \"FeatureCollection\",\n // features: [],\n // })\n // .shape(\"line\")\n // .size(2)\n // .color(\"rgba(177, 254, 254, 1)\")\n // .style({\n // opacity: 1,\n // });\n // const hightPolygonLayer = new PolygonLayer({zIndex: 10})\n // .source({\n // type: \"FeatureCollection\",\n // features: [],\n // })\n // .shape(\"fill\")\n // .color(\"rgba(177, 254, 254, 1)\")\n // .style({\n // heightfixed: true,\n // pickLight: true,\n // opacity: 1,\n // raisingHeight: 0,\n // }); //自定义选择高亮\n\n scene.addLayer(seventhPolygonLayer);\n // scene.addLayer(sixthPolygonLayer);\n // scene.addLayer(fifthPolygonLayer);\n // // scene.addLayer(fourthPolygonLayer);\n // scene.addLayer(thirdPolygonLayer);\n scene.addLayer(secondPolygonLayer);\n if (chinaImgLayer) {\n scene.addLayer(chinaImgLayer);\n }\n // scene.addLayer(hightLayer);\n // scene.addLayer(hightPolygonLayer);\n scene.addLayer(firstPolygonLayer);\n\n scene.addLayer(fourthLineLayer);\n scene.addLayer(thirdLineLayer);\n scene.addLayer(secondLineLayer);\n scene.addLayer(firstLineLayer);\n\n // firstPolygonLayer.on(\"click\", (e) => {\n // const { feature } = e;\n // hightPolygonLayer.setData({\n // type: \"FeatureCollection\",\n // features: [feature],\n // });\n // hightLayer.setData({\n // type: \"FeatureCollection\",\n // features: [feature],\n // });\n // });\n\n if (!province) {\n const southSeaPolygonLayer = new PolygonLayer({\n autoFit: false,\n }).source(southSeaData);\n\n southSeaPolygonLayer.shape(\"fill\").color(\"black\");\n\n const southSeaLineLayer = new LineLayer({ zIndex: 2 })\n .source(southSeaData)\n .shape(\"line\")\n .color(\"rgba(30, 144, 255, 1)\")\n .size(0.5)\n .style({\n raisingHeight: 0,\n })\n .scale(\"density\", {\n type: \"quantile\",\n });\n scene.addLayer(southSeaPolygonLayer);\n scene.addLayer(southSeaLineLayer);\n }\n\n dataSource.forEach((i) => {\n const el = document.createElement(\"div\");\n let classNameText = \"text\";\n el.textContent = i.text;\n let coord: Point;\n\n // 计算标签的排列方向,全国地图保持原有逻辑,省份地图根据经度所在比例自动适应排列方向\n if (!province) {\n const city = data.features.find((f) =>\n f.properties.name.includes(i.city)\n );\n if (!city) {\n return;\n }\n coord = city.properties.center;\n //先手动调整位置,缓解重叠的问题\n if (\n [\n \"410000\",\n \"820000\",\n \"140000\",\n \"110000\",\n \"420000\",\n \"430000\",\n \"450000\",\n \"500000\",\n \"520000\",\n \"530000\",\n \"510000\",\n \"610000\",\n \"640000\",\n \"150000\",\n \"630000\",\n \"540000\",\n \"340000\",\n ].includes(city.id)\n ) {\n classNameText = `${classNameText} leftText`;\n i.isLeftOffset = true;\n }\n if (\n [\n \"620000\",\n \"640000\",\n \"450000\",\n \"440000\",\n \"120000\",\n \"340000\",\n \"510000\",\n \"150000\",\n \"320000\",\n ].includes(city.id)\n ) {\n classNameText = `${classNameText} topText`;\n i.isTopOffset = true;\n }\n\n if (\n [\n \"530000\",\n \"520000\",\n \"430000\",\n \"360000\",\n \"330000\",\n \"610000\",\n \"370000\",\n \"130000\",\n ].includes(city.id)\n ) {\n coord[1] -= 1;\n }\n } else {\n const area = AreaList.find(\n (a) =>\n a.parent === matchedProvince.adcode && a.name.includes(i.city)\n );\n if (!area) {\n return;\n }\n coord = [area.lng, area.lat];\n if (area.lng > labelDivideLng) {\n classNameText = `${classNameText} leftText`;\n i.isLeftOffset = true;\n }\n }\n\n el.className = classNameText;\n\n el.onclick = (e) => {\n i.width = el.getBoundingClientRect().width;\n textClick(e, i);\n };\n\n const imgEl = document.createElement(\"img\");\n imgEl.src = defaultSvg;\n imgEl.className = \"iconImg\";\n\n const marker = new Marker({\n element: el,\n }).setLnglat({ lng: coord[0], lat: coord[1] });\n const imgMarker = new Marker({\n element: imgEl,\n }).setLnglat({ lng: coord[0], lat: coord[1] });\n scene.addMarker(marker);\n scene.addMarker(imgMarker);\n });\n\n setTimeout(() => {\n const bounds = scene.getBounds();\n // 进行适当平移和缩放,因为设置了倾角 pitch,地图默认没有铺满并居中\n scene.panTo([\n (bounds[0][0] + bounds[1][0]) / 2 + (province ? 0 : 1.6),\n (bounds[0][1] + bounds[1][1]) / 2 - (bounds[1][1] - bounds[0][1]) / 9,\n ]);\n if (province) {\n scene.setZoom(scene.getZoom() * 0.97);\n }\n\n // 省份贴图\n if (province) {\n const provinceImgLayer = new ImageLayer({\n autoFit: false,\n zIndex: 1,\n maskLayers: [firstPolygonLayer],\n }).source(texturePng, {\n parser: {\n type: \"image\",\n extent: [...bounds[0], ...bounds[1]],\n },\n });\n\n provinceImgLayer.shape(\"img\").style({\n opacity: 1,\n });\n scene.addLayer(provinceImgLayer);\n }\n });\n });\n\n return () => {\n scene.destroy();\n };\n }, []);\n\n useEffect(() => {\n const handleClick = (e: MouseEvent) => {\n if (slotRef.current && e.composedPath().includes(slotRef.current)) return;\n setShowData(null);\n };\n document?.addEventListener(\"click\", handleClick);\n return () => {\n document?.removeEventListener(\"click\", handleClick);\n };\n }, []);\n\n useEffect(() => {\n showDataRef.current = cloneDeep(showData);\n onDetailOpenChange(!isEmpty(showData), showData);\n }, [showData]);\n return (\n <div\n style={\n fillContainer\n ? {\n height: \"100%\",\n transform: `scale(${scale ?? 1})`,\n }\n : null\n }\n >\n <div\n id=\"map\"\n ref={mapRef}\n className=\"map\"\n style={\n fillContainer\n ? {\n width: BASE_WIDTH,\n height: BASE_HEIGHT,\n }\n : null\n }\n ></div>\n {showData && (\n <div\n className=\"detailContent\"\n onClick={(e) => {\n e.stopPropagation();\n }}\n style={{\n ...(showData.detailDisplayLocation === \"textBottom\"\n ? {\n left: textPosition.left,\n top: textPosition.top,\n transform: `translate(${showData.isLeftOffset ? -showData.width : 0}px, ${showData.isTopOffset ? -50 : -40}px)`,\n }\n : {\n transform: \"translate(-50%, 0%)\",\n top: \"50%\",\n left: \"50%\",\n }),\n ...detailContentStyle,\n }}\n >\n <slot name=\"detail\" ref={slotRef}></slot>\n </div>\n )}\n </div>\n );\n}\n","import { useEffect, useState } from \"react\";\nimport ResizeObserver from \"resize-observer-polyfill\";\n\n/**\n * 根据容器尺寸进行缩放\n */\nexport function useContainerScale({\n width: baseWidth,\n height: baseHeight,\n root,\n maxScale,\n disabled,\n}: {\n width: number;\n height: number;\n root: HTMLElement;\n /** 最大缩放比例,默认为 1 */\n maxScale?: number;\n disabled?: boolean;\n}): number | null {\n const [scale, setScale] = useState<number | null>(null);\n\n useEffect(() => {\n if (disabled) {\n setScale(null);\n return;\n }\n // 当容器宽高低于预设值时,图形会自动缩小\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === root) {\n const { width, height } = entry.contentRect;\n setScale(\n Math.min(maxScale ?? 1, width / baseWidth, height / baseHeight)\n );\n }\n }\n });\n observer.observe(root);\n return () => observer.disconnect();\n }, [baseHeight, baseWidth, disabled, maxScale, root]);\n\n return scale;\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./assets/label.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([fill-container]){display:block;height:100%;position:relative;overflow:hidden}:host([hidden]){display:none}.text{position:absolute;z-index:6;height:22px;line-height:22px;font-size:12px;background:url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat center left;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);transform:translate(20px,-150%)!important;color:rgba(255,255,255,1);text-indent:10px}.iconImg{position:absolute;z-index:5;src:\"./assets/default.png\";-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.detailContent{position:absolute;opacity:0.8;z-index:20}:host(:not([fill-container])) .map{position:absolute;top:0;left:0;right:0;bottom:0}:host([fill-container]) .map{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.leftText{margin-left:-20px;transform:translate(-100%,-150%)!important}.topText{margin-top:-10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n"],"names":["defineElement","property","event","createDecorators","BASE_WIDTH","BASE_HEIGHT","_ChinaMapChart","_A","WeakMap","_B","_C","_D","_E","_ChinaMapChart_brand","WeakSet","_handleOpenChange","ChinaMapChart","ReactNextElement","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_init_province","_init_extra_province","_init_dataSource","_init_extra_dataSource","_init_detailContentStyle","_init_extra_detailContentStyle","_init_fillContainer","_init_extra_fillContainer","_init_openChangeEvent","_init_extra_openChangeEvent","open","data","_classPrivateGetter","this","_get_openChangeEvent","emit","province","_classPrivateFieldGet","v","_classPrivateFieldSet","dataSource","detailContentStyle","fillContainer","render","React","ChinaMapChartComponent","root","onDetailOpenChange","props","mapRef","useRef","slotRef","showData","setShowData","useState","showDataRef","textPosition","setTextPosition","scale","useContainerScale","width","height","maxScale","disabled","useEffect","scene","Scene","id","current","logoVisible","map","Map","pitch","zoom","setMapStatus","doubleClickZoom","zoomEnable","defaultImg","Image","src","defaultSvg","selectedImg","selectedSvg","addImage","texturePng","chinaPng","on","async","southSeaData","matchedProvince","AreaList","CitiesImport","AreaListImport","Promise","all","Cities","default","find","a","level","name","includes","Error","type","features","filter","f","properties","province_adcode","adcode","CHINA","slice","length","seventhPolygonLayer","PolygonLayer","autoFit","source","labelDivideLng","raisingHeightBase","top","Infinity","left","bottom","right","flatMap","geometry","coordinates","flat","forEach","_ref","lng","lat","Math","min","max","lngRange","latRange","shape","color","style","heightfixed","pickLight","opacity","raisingHeight","secondPolygonLayer","firstPolygonLayer","chinaImgLayer","ImageLayer","zIndex","parser","extent","fourthLineLayer","LineLayer","size","thirdLineLayer","secondLineLayer","firstLineLayer","addLayer","southSeaPolygonLayer","southSeaLineLayer","i","el","document","createElement","coord","classNameText","textContent","text","area","parent","city","isLeftOffset","center","isTopOffset","className","onclick","e","getBoundingClientRect","textClick","stopPropagation","isEqual","toNumber","target","replace","imgEl","marker","Marker","element","setLnglat","imgMarker","addMarker","setTimeout","bounds","getBounds","panTo","setZoom","getZoom","provinceImgLayer","maskLayers","destroy","_document","handleClick","composedPath","addEventListener","_document2","removeEventListener","cloneDeep","isEmpty","transform","ref","onClick","detailDisplayLocation","_ChinaMapChart2","_set_openChangeEvent","c","_initClass","_applyDecs","styleTexts","styleText","attribute","Boolean","o","_","has","_checkInRHS","baseWidth","baseHeight","setScale","observer","ResizeObserver","entries","entry","contentRect","observe","disconnect","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","push","module","toString"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/china-map-chart.82ce6dda.js","mappings":"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","sources":["webpack:///./src/china-map-chart/index.tsx","webpack:///./src/shared/useContainerScale.ts","webpack:///./src/china-map-chart/styles.shadow.css"],"sourcesContent":["import React, { useEffect, useRef, useState, CSSProperties } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport {\n Scene,\n PolygonLayer,\n LineLayer,\n Marker,\n ImageLayer,\n type ILayer,\n type Point,\n} from \"@antv/l7\";\nimport { Map } from \"@antv/l7-maps\";\nimport { cloneDeep, isEmpty, isEqual, toNumber } from \"lodash\";\nimport defaultSvg from \"./assets/default.svg?url\";\nimport selectedSvg from \"./assets/selected.svg?url\";\nimport chinaPng from \"./assets/china.png\";\nimport texturePng from \"./assets/texture.png\";\nimport styleText from \"./styles.shadow.css\";\nimport { useContainerScale } from \"../shared/useContainerScale\";\n\nconst { defineElement, property, event } = createDecorators();\n\nconst BASE_WIDTH = 825;\nconst BASE_HEIGHT = 600;\n\ninterface FeatureCollection {\n type: \"FeatureCollection\";\n features: Feature[];\n}\n\ninterface Feature {\n type: \"Feature\";\n id?: string;\n properties: {\n name: string;\n center?: Point;\n province_adcode: number;\n province: string;\n };\n geometry: Polygon | MultiPolygon;\n}\n\ninterface Polygon {\n type: \"Polygon\";\n coordinates: Point[][];\n}\n\ninterface MultiPolygon {\n type: \"MultiPolygon\";\n coordinates: Point[][][];\n}\n\ninterface Area {\n name: string;\n level: \"country\" | \"province\" | \"city\" | \"district\";\n adcode: number;\n lng: number;\n lat: number;\n parent: number;\n}\n\n/**\n * 中国地图图表构件,可以显示省级指标数据\n *\n * @deprecated 已废弃,请使用 `data-view.china-map`\n */\nexport\n@defineElement(\"data-view.china-map-chart\", {\n styleTexts: [styleText],\n})\nclass ChinaMapChart extends ReactNextElement {\n /**\n * 省份名称,例如“广东”。如果设置,则只显示该省份的地图,否则显示全国地图\n */\n @property()\n accessor province: string | undefined;\n\n /**\n * 数据源\n */\n @property({ attribute: false })\n accessor dataSource: DataSource[] | undefined;\n\n /**\n * 描述内容样式\n */\n @property({ attribute: false })\n accessor detailContentStyle: CSSProperties | undefined;\n\n /**\n * 是否铺满容器\n *\n * 注意:该属性不同时兼容 detail 插槽\n */\n @property({ type: Boolean })\n accessor fillContainer: boolean | undefined;\n\n /**\n * 当提示可见性开始变化时触发\n * @detail 当前是否可见\n */\n @event({ type: \"detail.open.change\" })\n accessor #openChangeEvent!: EventEmitter<{\n open: boolean;\n data: Record<string, any>;\n }>;\n #handleOpenChange = (open: boolean, data: Record<string, any>): void => {\n this.#openChangeEvent.emit({ open, data });\n };\n\n render() {\n return (\n <ChinaMapChartComponent\n root={this}\n province={this.province}\n dataSource={this.dataSource}\n onDetailOpenChange={this.#handleOpenChange}\n detailContentStyle={this.detailContentStyle}\n fillContainer={this.fillContainer}\n />\n );\n }\n}\n\ninterface DataSource {\n /** 省级行政区域名,例如:四川、北京 */\n city: string;\n detailDisplayLocation: \"pageCenter\" | \"textBottom\";\n text: string;\n [x: string]: any;\n}\n\nexport interface ChinaMapChartProps {\n root: HTMLElement;\n province?: string;\n onDetailOpenChange: (open: boolean, data: Record<string, any>) => void;\n dataSource: DataSource[];\n detailContentStyle?: CSSProperties;\n fillContainer?: boolean;\n // Define props here.\n}\n\nexport function ChinaMapChartComponent(props: ChinaMapChartProps) {\n const {\n root,\n province,\n onDetailOpenChange,\n dataSource = [],\n detailContentStyle = {},\n fillContainer,\n } = props;\n const mapRef = useRef<HTMLDivElement>();\n const slotRef = useRef<HTMLSlotElement>();\n const [showData, setShowData] = useState<DataSource>();\n const showDataRef = useRef<DataSource>();\n const [textPosition, setTextPosition] = useState<{\n left: string;\n top: string;\n }>();\n\n const scale = useContainerScale({\n width: BASE_WIDTH,\n height: BASE_HEIGHT,\n root,\n maxScale: 10,\n disabled: !fillContainer,\n });\n\n const textClick = (e: MouseEvent, data: any) => {\n e.stopPropagation();\n if (isEqual(data, showDataRef.current)) {\n setShowData(null);\n return;\n }\n setShowData(data);\n setTextPosition({\n left: `${toNumber((e.target as any).style.left.replace(\"px\", \"\")) + 24}px`,\n top: `${toNumber((e.target as any).style.top.replace(\"px\", \"\")) + 28}px`,\n });\n };\n useEffect(() => {\n const scene = new Scene({\n id: mapRef.current,\n logoVisible: false,\n map: new Map({\n // center: [90.268, 40.3628],\n pitch: 35,\n zoom: 1,\n }),\n });\n scene.setMapStatus({ doubleClickZoom: false, zoomEnable: false });\n const defaultImg = new Image();\n defaultImg.src = defaultSvg;\n\n const selectedImg = new Image();\n selectedImg.src = selectedSvg;\n\n scene.addImage(\"default\", defaultImg);\n scene.addImage(\"selected\", selectedImg);\n if (!province) {\n scene.addImage(\"chinaBg\", chinaPng);\n } else {\n scene.addImage(\"texture\", texturePng);\n }\n\n scene.on(\"loaded\", async () => {\n let data: FeatureCollection;\n let southSeaData: FeatureCollection;\n let matchedProvince: Area | undefined;\n let AreaList: Area[] | undefined;\n if (province) {\n const [CitiesImport, AreaListImport] = await Promise.all([\n import(\"./cities.json\"),\n import(\"./area-list.json\"),\n ]);\n const Cities = CitiesImport.default as unknown as FeatureCollection;\n AreaList = AreaListImport.default as unknown as Area[];\n matchedProvince = AreaList.find(\n (a) => a.level === \"province\" && a.name.includes(province)\n );\n\n if (!matchedProvince) {\n throw new Error(`没有找到省份:\"${province}\"`);\n }\n\n data = {\n type: \"FeatureCollection\",\n features: (Cities as FeatureCollection).features.filter(\n (f) => f.properties.province_adcode === matchedProvince.adcode\n ),\n };\n } else {\n const ChinaImport = await import(\"./map.json\");\n const CHINA = ChinaImport.default as unknown as FeatureCollection;\n data = {\n type: \"FeatureCollection\",\n features: (CHINA as unknown as FeatureCollection).features.slice(\n 0,\n CHINA.features.length - 2\n ),\n };\n southSeaData = {\n ...CHINA,\n features: CHINA.features.slice(\n CHINA.features.length - 2,\n CHINA.features.length\n ),\n };\n }\n\n const seventhPolygonLayer = new PolygonLayer({\n autoFit: false,\n }).source(data);\n\n let labelDivideLng: number | undefined;\n // 根据坐标范围设置 3D 图层升起的高度\n let raisingHeightBase: number;\n if (province) {\n let top = Infinity;\n let left = Infinity;\n let bottom = -Infinity;\n let right = -Infinity;\n const points = data.features.flatMap(\n (f) =>\n f.geometry.coordinates.flat(\n f.geometry.type === \"MultiPolygon\" ? 2 : 1\n ) as Point[]\n );\n points.forEach(([lng, lat]) => {\n top = Math.min(top, lat);\n left = Math.min(left, lng);\n bottom = Math.max(bottom, lat);\n right = Math.max(right, lng);\n });\n const lngRange = right - left;\n const latRange = bottom - top;\n raisingHeightBase = Math.max(2000 * lngRange, 3000 * latRange);\n // 在经度范围的 3/4 处设置分界线,左边的文字向右排,右边的文字向左排\n labelDivideLng = left + (lngRange * 3) / 4;\n } else {\n raisingHeightBase = 100000;\n }\n\n seventhPolygonLayer\n .shape(\"extrude\")\n .color(\"rgba(84, 239, 241, 0.20)\")\n .style({\n heightfixed: true,\n pickLight: true,\n opacity: 1,\n raisingHeight: -13 * raisingHeightBase,\n });\n\n const sixthPolygonLayer = new PolygonLayer({\n autoFit: false,\n }).source(data);\n\n sixthPolygonLayer\n .shape(\"extrude\")\n .color(\"rgba(14, 11, 75, 0.58)\")\n .style({\n heightfixed: true,\n pickLight: true,\n opacity: 1,\n raisingHeight: -11 * raisingHeightBase,\n });\n\n const fifthPolygonLayer = new PolygonLayer({\n autoFit: false,\n }).source(data);\n\n fifthPolygonLayer\n .shape(\"extrude\")\n .color(\"rgba(190, 225, 226, 1)\")\n .style({\n heightfixed: true,\n pickLight: true,\n opacity: 1,\n raisingHeight: -9 * raisingHeightBase,\n });\n const fourthPolygonLayer = new PolygonLayer({\n autoFit: false,\n }).source(data);\n\n fourthPolygonLayer\n .shape(\"extrude\")\n .color(\"rgba(18, 26, 45, 1)\")\n .style({\n heightfixed: true,\n pickLight: true,\n opacity: 1,\n raisingHeight: -7 * raisingHeightBase,\n });\n\n const thirdPolygonLayer = new PolygonLayer({\n autoFit: false,\n }).source(data);\n\n thirdPolygonLayer\n .shape(\"extrude\")\n .color(\"#111D3C\")\n .style({\n heightfixed: true,\n pickLight: true,\n opacity: 1,\n raisingHeight: -5 * raisingHeightBase,\n });\n const secondPolygonLayer = new PolygonLayer({\n autoFit: false,\n }).source(data);\n\n secondPolygonLayer\n .shape(\"extrude\")\n .color(\"#121A2D\")\n .style({\n heightfixed: true,\n pickLight: true,\n opacity: 1,\n raisingHeight: -3 * raisingHeightBase,\n });\n\n const firstPolygonLayer = new PolygonLayer({\n autoFit: true,\n }).source(data);\n\n firstPolygonLayer.shape(\"fill\").color(\"rgba(8, 77, 255, 0.60)\");\n // .select({\n // color: \"rgba(177, 254, 254, 1)\",\n // });//编排上层缩放会影响到高亮功能,还不知道怎么解决,暂时不实现。\n\n let chinaImgLayer: ILayer | undefined;\n if (!province) {\n chinaImgLayer = new ImageLayer({\n autoFit: false,\n zIndex: 1,\n }).source(chinaPng, {\n parser: {\n type: \"image\",\n extent: [73.33, 17.9, 134.85, 53.73],\n },\n });\n\n chinaImgLayer.shape(\"img\").style({\n opacity: 1,\n });\n }\n\n const fourthLineLayer = new LineLayer()\n .source(data)\n .shape(\"line\")\n .color(\"rgba(43, 100, 255, 1)\")\n .size(1)\n .style({\n raisingHeight: -16 * raisingHeightBase,\n });\n\n const thirdLineLayer = new LineLayer()\n .source(data)\n .shape(\"line\")\n .color(\"rgba(84, 239, 241, 1)\")\n .size(1)\n .style({\n raisingHeight: -12 * raisingHeightBase,\n });\n\n const secondLineLayer = new LineLayer()\n .source(data)\n .shape(\"line\")\n .color(\"rgba(43, 100, 255, 1)\")\n .size(1)\n .style({\n raisingHeight: -6 * raisingHeightBase,\n });\n\n const firstLineLayer = new LineLayer({ zIndex: 2 })\n .source(data)\n .shape(\"line\")\n .color(\"#3DC6FF\")\n .size(1)\n .style({\n raisingHeight: 0,\n })\n .scale(\"density\", {\n type: \"quantile\",\n });\n\n // const hightLayer = new LineLayer({\n // zIndex: 10, // 设置显示层级\n // name: \"hightlight\",\n // })\n // .source({\n // type: \"FeatureCollection\",\n // features: [],\n // })\n // .shape(\"line\")\n // .size(2)\n // .color(\"rgba(177, 254, 254, 1)\")\n // .style({\n // opacity: 1,\n // });\n // const hightPolygonLayer = new PolygonLayer({zIndex: 10})\n // .source({\n // type: \"FeatureCollection\",\n // features: [],\n // })\n // .shape(\"fill\")\n // .color(\"rgba(177, 254, 254, 1)\")\n // .style({\n // heightfixed: true,\n // pickLight: true,\n // opacity: 1,\n // raisingHeight: 0,\n // }); //自定义选择高亮\n\n scene.addLayer(seventhPolygonLayer);\n // scene.addLayer(sixthPolygonLayer);\n // scene.addLayer(fifthPolygonLayer);\n // // scene.addLayer(fourthPolygonLayer);\n // scene.addLayer(thirdPolygonLayer);\n scene.addLayer(secondPolygonLayer);\n if (chinaImgLayer) {\n scene.addLayer(chinaImgLayer);\n }\n // scene.addLayer(hightLayer);\n // scene.addLayer(hightPolygonLayer);\n scene.addLayer(firstPolygonLayer);\n\n scene.addLayer(fourthLineLayer);\n scene.addLayer(thirdLineLayer);\n scene.addLayer(secondLineLayer);\n scene.addLayer(firstLineLayer);\n\n // firstPolygonLayer.on(\"click\", (e) => {\n // const { feature } = e;\n // hightPolygonLayer.setData({\n // type: \"FeatureCollection\",\n // features: [feature],\n // });\n // hightLayer.setData({\n // type: \"FeatureCollection\",\n // features: [feature],\n // });\n // });\n\n if (!province) {\n const southSeaPolygonLayer = new PolygonLayer({\n autoFit: false,\n }).source(southSeaData);\n\n southSeaPolygonLayer.shape(\"fill\").color(\"black\");\n\n const southSeaLineLayer = new LineLayer({ zIndex: 2 })\n .source(southSeaData)\n .shape(\"line\")\n .color(\"rgba(30, 144, 255, 1)\")\n .size(0.5)\n .style({\n raisingHeight: 0,\n })\n .scale(\"density\", {\n type: \"quantile\",\n });\n scene.addLayer(southSeaPolygonLayer);\n scene.addLayer(southSeaLineLayer);\n }\n\n dataSource.forEach((i) => {\n const el = document.createElement(\"div\");\n let classNameText = \"text\";\n el.textContent = i.text;\n let coord: Point;\n\n // 计算标签的排列方向,全国地图保持原有逻辑,省份地图根据经度所在比例自动适应排列方向\n if (!province) {\n const city = data.features.find((f) =>\n f.properties.name.includes(i.city)\n );\n if (!city) {\n return;\n }\n coord = city.properties.center;\n //先手动调整位置,缓解重叠的问题\n if (\n [\n \"410000\",\n \"820000\",\n \"140000\",\n \"110000\",\n \"420000\",\n \"430000\",\n \"450000\",\n \"500000\",\n \"520000\",\n \"530000\",\n \"510000\",\n \"610000\",\n \"640000\",\n \"150000\",\n \"630000\",\n \"540000\",\n \"340000\",\n ].includes(city.id)\n ) {\n classNameText = `${classNameText} leftText`;\n i.isLeftOffset = true;\n }\n if (\n [\n \"620000\",\n \"640000\",\n \"450000\",\n \"440000\",\n \"120000\",\n \"340000\",\n \"510000\",\n \"150000\",\n \"320000\",\n ].includes(city.id)\n ) {\n classNameText = `${classNameText} topText`;\n i.isTopOffset = true;\n }\n\n if (\n [\n \"530000\",\n \"520000\",\n \"430000\",\n \"360000\",\n \"330000\",\n \"610000\",\n \"370000\",\n \"130000\",\n ].includes(city.id)\n ) {\n coord[1] -= 1;\n }\n } else {\n const area = AreaList.find(\n (a) =>\n a.parent === matchedProvince.adcode && a.name.includes(i.city)\n );\n if (!area) {\n return;\n }\n coord = [area.lng, area.lat];\n if (area.lng > labelDivideLng) {\n classNameText = `${classNameText} leftText`;\n i.isLeftOffset = true;\n }\n }\n\n el.className = classNameText;\n\n el.onclick = (e) => {\n i.width = el.getBoundingClientRect().width;\n textClick(e, i);\n };\n\n const imgEl = document.createElement(\"img\");\n imgEl.src = defaultSvg;\n imgEl.className = \"iconImg\";\n\n const marker = new Marker({\n element: el,\n }).setLnglat({ lng: coord[0], lat: coord[1] });\n const imgMarker = new Marker({\n element: imgEl,\n }).setLnglat({ lng: coord[0], lat: coord[1] });\n scene.addMarker(marker);\n scene.addMarker(imgMarker);\n });\n\n setTimeout(() => {\n const bounds = scene.getBounds();\n // 进行适当平移和缩放,因为设置了倾角 pitch,地图默认没有铺满并居中\n scene.panTo([\n (bounds[0][0] + bounds[1][0]) / 2 + (province ? 0 : 1.6),\n (bounds[0][1] + bounds[1][1]) / 2 - (bounds[1][1] - bounds[0][1]) / 9,\n ]);\n if (province) {\n scene.setZoom(scene.getZoom() * 0.97);\n }\n\n // 省份贴图\n if (province) {\n const provinceImgLayer = new ImageLayer({\n autoFit: false,\n zIndex: 1,\n maskLayers: [firstPolygonLayer],\n }).source(texturePng, {\n parser: {\n type: \"image\",\n extent: [...bounds[0], ...bounds[1]],\n },\n });\n\n provinceImgLayer.shape(\"img\").style({\n opacity: 1,\n });\n scene.addLayer(provinceImgLayer);\n }\n });\n });\n\n return () => {\n scene.destroy();\n };\n }, []);\n\n useEffect(() => {\n const handleClick = (e: MouseEvent) => {\n if (slotRef.current && e.composedPath().includes(slotRef.current)) return;\n setShowData(null);\n };\n document?.addEventListener(\"click\", handleClick);\n return () => {\n document?.removeEventListener(\"click\", handleClick);\n };\n }, []);\n\n useEffect(() => {\n showDataRef.current = cloneDeep(showData);\n onDetailOpenChange(!isEmpty(showData), showData);\n }, [showData]);\n return (\n <div\n style={\n fillContainer\n ? {\n height: \"100%\",\n transform: `scale(${scale ?? 1})`,\n }\n : null\n }\n >\n <div\n id=\"map\"\n ref={mapRef}\n className=\"map\"\n style={\n fillContainer\n ? {\n width: BASE_WIDTH,\n height: BASE_HEIGHT,\n }\n : null\n }\n ></div>\n {showData && (\n <div\n className=\"detailContent\"\n onClick={(e) => {\n e.stopPropagation();\n }}\n style={{\n ...(showData.detailDisplayLocation === \"textBottom\"\n ? {\n left: textPosition.left,\n top: textPosition.top,\n transform: `translate(${showData.isLeftOffset ? -showData.width : 0}px, ${showData.isTopOffset ? -50 : -40}px)`,\n }\n : {\n transform: \"translate(-50%, 0%)\",\n top: \"50%\",\n left: \"50%\",\n }),\n ...detailContentStyle,\n }}\n >\n <slot name=\"detail\" ref={slotRef}></slot>\n </div>\n )}\n </div>\n );\n}\n","import { useEffect, useState } from \"react\";\nimport ResizeObserver from \"resize-observer-polyfill\";\n\n/**\n * 根据容器尺寸进行缩放\n */\nexport function useContainerScale({\n width: baseWidth,\n height: baseHeight,\n root,\n maxScale,\n disabled,\n}: {\n width: number;\n height: number;\n root: HTMLElement;\n /** 最大缩放比例,默认为 1 */\n maxScale?: number;\n disabled?: boolean;\n}): number | null {\n const [scale, setScale] = useState<number | null>(null);\n\n useEffect(() => {\n if (disabled) {\n setScale(null);\n return;\n }\n // 当容器宽高低于预设值时,图形会自动缩小\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === root) {\n const { width, height } = entry.contentRect;\n setScale(\n Math.min(maxScale ?? 1, width / baseWidth, height / baseHeight)\n );\n }\n }\n });\n observer.observe(root);\n return () => observer.disconnect();\n }, [baseHeight, baseWidth, disabled, maxScale, root]);\n\n return scale;\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./assets/label.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([fill-container]){display:block;height:100%;position:relative;overflow:hidden}:host([hidden]){display:none}.text{position:absolute;z-index:6;height:22px;line-height:22px;font-size:12px;background:url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat center left;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);transform:translate(20px,-150%)!important;color:rgba(255,255,255,1);text-indent:10px}.iconImg{position:absolute;z-index:5;src:\"./assets/default.png\";-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.detailContent{position:absolute;opacity:0.8;z-index:20}:host(:not([fill-container])) .map{position:absolute;top:0;left:0;right:0;bottom:0}:host([fill-container]) .map{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.leftText{margin-left:-20px;transform:translate(-100%,-150%)!important}.topText{margin-top:-10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n"],"names":["defineElement","property","event","createDecorators","BASE_WIDTH","BASE_HEIGHT","_ChinaMapChart","_A","WeakMap","_B","_C","_D","_E","_ChinaMapChart_brand","WeakSet","_handleOpenChange","ChinaMapChart","ReactNextElement","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_init_province","_init_extra_province","_init_dataSource","_init_extra_dataSource","_init_detailContentStyle","_init_extra_detailContentStyle","_init_fillContainer","_init_extra_fillContainer","_init_openChangeEvent","_init_extra_openChangeEvent","open","data","_classPrivateGetter","this","_get_openChangeEvent","emit","province","_classPrivateFieldGet","v","_classPrivateFieldSet","dataSource","detailContentStyle","fillContainer","render","React","ChinaMapChartComponent","root","onDetailOpenChange","props","mapRef","useRef","slotRef","showData","setShowData","useState","showDataRef","textPosition","setTextPosition","scale","useContainerScale","width","height","maxScale","disabled","useEffect","scene","Scene","id","current","logoVisible","map","Map","pitch","zoom","setMapStatus","doubleClickZoom","zoomEnable","defaultImg","Image","src","defaultSvg","selectedImg","selectedSvg","addImage","texturePng","chinaPng","on","async","southSeaData","matchedProvince","AreaList","CitiesImport","AreaListImport","Promise","all","Cities","default","find","a","level","name","includes","Error","type","features","filter","f","properties","province_adcode","adcode","CHINA","slice","length","seventhPolygonLayer","PolygonLayer","autoFit","source","labelDivideLng","raisingHeightBase","top","Infinity","left","bottom","right","flatMap","geometry","coordinates","flat","forEach","_ref","lng","lat","Math","min","max","lngRange","latRange","shape","color","style","heightfixed","pickLight","opacity","raisingHeight","secondPolygonLayer","firstPolygonLayer","chinaImgLayer","ImageLayer","zIndex","parser","extent","fourthLineLayer","LineLayer","size","thirdLineLayer","secondLineLayer","firstLineLayer","addLayer","southSeaPolygonLayer","southSeaLineLayer","i","el","document","createElement","coord","classNameText","textContent","text","area","parent","city","isLeftOffset","center","isTopOffset","className","onclick","e","getBoundingClientRect","textClick","stopPropagation","isEqual","toNumber","target","replace","imgEl","marker","Marker","element","setLnglat","imgMarker","addMarker","setTimeout","bounds","getBounds","panTo","setZoom","getZoom","provinceImgLayer","maskLayers","destroy","_document","handleClick","composedPath","addEventListener","_document2","removeEventListener","cloneDeep","isEmpty","transform","ref","onClick","detailDisplayLocation","_ChinaMapChart2","_set_openChangeEvent","c","_initClass","_applyDecs","styleTexts","styleText","attribute","Boolean","o","_","has","_checkInRHS","baseWidth","baseHeight","setScale","observer","ResizeObserver","entries","entry","contentRect","observe","disconnect","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","push","module","toString"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(globalThis.webpackChunk_next_bricks_data_view=globalThis.webpackChunk_next_bricks_data_view||[]).push([[5509],{7851:(e,t,a)=>{a.r(t),a.d(t,{ChinaMap:()=>R,ChinaMapComponent:()=>z});var r=a(70918),s=a(86121),n=a(70829),i=a(62740),l=a(18769),o=a.n(l),c=a(72445),d=a(
|
|
2
|
-
//# sourceMappingURL=china-map.
|
|
1
|
+
"use strict";(globalThis.webpackChunk_next_bricks_data_view=globalThis.webpackChunk_next_bricks_data_view||[]).push([[5509],{7851:(e,t,a)=>{a.r(t),a.d(t,{ChinaMap:()=>R,ChinaMapComponent:()=>z});var r=a(70918),s=a(86121),n=a(70829),i=a(62740),l=a(18769),o=a.n(l),c=a(72445),d=a(65821),h=a(79476),f=(a(44291),a(20840)),p=a(86168),u=a(47906),m=a(84890),g=a(10177),v=a(13910);let w,x,b,y,S,k,E;var A,C;const{defineElement:P,property:N}=(0,d.createDecorators)(),_=(0,h.wrapBrick)("eo-icon"),F=960,W=750,B=null!==(A=window.devicePixelRatio)&&void 0!==A?A:1,M=[{fill:"rgba(84, 239, 241, 0.2)",shadowColor:"rgba(84, 239, 241, 0.2)",shadowBlur:2,shadowOffsetY:1,offset:28},{fill:"#bee1e2",shadowColor:"rgba(93,250,255,0.2)",shadowBlur:4,shadowOffsetY:10,offset:23},{fill:"#000",offset:19.5},{lineWidth:1,strokeStyle:"#2B64FF",offset:15},{lineWidth:1.5,strokeStyle:"#2B64FF",offset:10}];let R;var D=new WeakMap,O=new WeakMap,Y=new WeakMap;class $ extends h.ReactNextElement{constructor(){super(...arguments),(0,r.A)(this,D,x(this)),(0,r.A)(this,O,(b(this),y(this))),(0,r.A)(this,Y,(S(this),k(this))),E(this)}get province(){return(0,n.A)(D,this)}set province(e){(0,s.A)(D,this,e)}get dataSource(){return(0,n.A)(O,this)}set dataSource(e){(0,s.A)(O,this,e)}get maxScale(){return(0,n.A)(Y,this)}set maxScale(e){(0,s.A)(Y,this,e)}render(){return o().createElement(z,{root:this,province:this.province,dataSource:this.dataSource,maxScale:this.maxScale})}}function z(e){let{root:t,province:r,dataSource:s,maxScale:n}=e;const i=(0,u.D)({width:F,height:W,root:t,maxScale:n}),d=(0,l.useRef)(null),[h,v]=(0,l.useState)([]),[w,x]=(0,l.useState)(!1);return(0,l.useEffect)((()=>{const e=d.current.getContext("2d");let t=!1;return(async()=>{let n,i,l,o,d;try{[d]=await Promise.all([new Promise(((e,t)=>{const a=new Image;a.onload=()=>{e(a)},a.onerror=e=>{t(e)},a.src=m})),(async()=>{if(r){const[e,t]=await Promise.all([a.e(8763).then(a.t.bind(a,1144,19)),a.e(6873).then(a.t.bind(a,76873,19))]),s=e.default;if(o=t.default,l=o.find((e=>"province"===e.level&&e.name.includes(r))),!l)throw new Error(`没有找到省份:"${r}"`);n={type:"FeatureCollection",features:s.features.filter((e=>e.properties.province_adcode===l.adcode))}}else{const e=(await a.e(2785).then(a.t.bind(a,52785,19))).default,t=(0,c.groupBy)(e.features,(e=>e.properties.name?"main-land":"south-sea"));n={type:"FeatureCollection",features:t["main-land"]},i={type:"FeatureCollection",features:t["south-sea"]}}})()])}catch(a){return void(t||(x(String(a)),e.clearRect(0,0,F*B,W*B),v([])))}if(t)return;x(!0),e.clearRect(0,0,F*B,W*B),e.strokeStyle="#fff",e.lineWidth=2.5*B,e.lineJoin="round";const h=(0,f.Ay)().fitExtent([[10*B,10*B],[(F-10)*B,(W-25)*B]],n),u=(0,p.A)(h,e);M.forEach((t=>{const a=e;var r,s;e.save(),e.translate(0,t.offset*B),t.shadowColor&&(a.shadowColor=t.shadowColor,a.shadowBlur=(null!==(r=t.shadowBlur)&&void 0!==r?r:0)*B,a.shadowOffsetY=(null!==(s=t.shadowOffsetY)&&void 0!==s?s:0)*B),a.beginPath(),(0,p.A)(h,a)(n),a.closePath(),t.fill&&(a.fillStyle=t.fill,a.fill()),t.lineWidth&&(a.strokeStyle=t.strokeStyle,a.lineWidth=t.lineWidth*B,a.stroke()),e.restore()})),e.save();{const t=e.createPattern(d,"repeat");e.fillStyle=t}e.beginPath(),u(n),e.closePath(),e.fill(),e.restore(),e.save(),e.strokeStyle="#3DC6FF",e.beginPath(),u(n),e.closePath(),e.stroke(),e.restore(),r||(e.save(),e.strokeStyle="rgb(30, 144, 255)",e.beginPath(),u(i),e.closePath(),e.stroke(),e.restore()),v(null==s?void 0:s.flatMap((e=>{let t,a;if(l){const r=o.find((t=>"city"===t.level&&t.parent===l.adcode&&t.name.includes(e.city)));if(!r)return[];({lng:t,lat:a}=r)}else{var r;const s=n.features.find((t=>"province"===t.properties.level&&t.properties.name.includes(e.province)));if(!s)return[];[t,a]=null!==(r=s.properties.cp)&&void 0!==r?r:s.properties.center}const s=h([t,a]),i=s[0]/B;return{left:i,top:s[1]/B,text:e.text,align:i>F-150?"left":"right"}})))})(),()=>{t=!0}}),[r,s]),o().createElement("div",{className:"container",style:{width:F,height:W,visibility:null===i?"hidden":"visible","--scale":i}},!0!==w&&o().createElement("div",{className:"message",style:{width:F,height:W}},!1===w&&o().createElement(_,{lib:"antd",icon:"loading",spinning:!0,className:"loading"}),"string"==typeof w&&o().createElement("div",{className:"error"},w)),o().createElement("canvas",{ref:d,width:F*B,height:W*B,style:{width:F,height:W}}),o().createElement("div",{className:"labels",style:{width:F,height:W}},null==h?void 0:h.map(((e,t)=>o().createElement("div",{key:t,className:`label ${e.align}`,style:{left:e.left,top:e.top}},o().createElement("img",{width:28,height:32,className:"marker",src:g}),o().createElement("div",{className:"text"},e.text))))))}C=$,({e:[x,b,y,S,k,E],c:[R,w]}=(0,i.A)(C,[P("data-view.china-map",{styleTexts:[v.A]})],[[N(),1,"province"],[N({attribute:!1}),1,"dataSource"],[N({type:Number}),1,"maxScale"]],0,void 0,h.ReactNextElement)),w()},47906:(e,t,a)=>{a.d(t,{D:()=>n});var r=a(18769),s=a(99126);function n(e){let{width:t,height:a,root:n,maxScale:i,disabled:l}=e;const[o,c]=(0,r.useState)(null);return(0,r.useEffect)((()=>{if(l)return void c(null);const e=new s.A((e=>{for(const r of e)if(r.target===n){const{width:e,height:s}=r.contentRect;c(Math.min(null!=i?i:1,e/t,s/a))}}));return e.observe(n),()=>e.disconnect()}),[a,t,l,i,n]),o}},13910:(e,t,a)=>{a.d(t,{A:()=>f});var r=a(36758),s=a.n(r),n=a(40935),i=a.n(n),l=a(20062),o=a.n(l),c=new URL(a(99158),a.b),d=i()(s()),h=o()(c);d.push([e.id,`:host,\n.message{display:flex;align-items:center;justify-content:center}:host{position:relative;color:#fff;height:100%}:host([hidden]){display:none}*{box-sizing:border-box}.container{position:relative;transform:scale(var(--scale));--scale:1}canvas,\n.message,\n.labels{position:absolute;left:50%;transform:translate(-50%,0);top:0}.loading{font-size:48px}.error{color:var(--color-error)}.label{position:absolute;display:flex;align-items:center;transform:translate(-14px,-28px)}.text{height:22px;line-height:22px;font-size:12px;background:url(${h}) no-repeat center left;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);text-indent:10px;transform:translate(0,-18px);white-space:nowrap;color:#fffcef}.left > .text{transform:translate(calc(-100% - 32px),-18px)}`,""]);const f=d.toString()},20062:e=>{e.exports=function(e,t){return t||(t={}),e?(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]|(%20)/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e):e}},10177:(e,t,a)=>{e.exports=a.p+"images/d20b2c27.svg"},99158:(e,t,a)=>{e.exports=a.p+"images/4f7762f3.svg"},84890:(e,t,a)=>{e.exports=a.p+"images/7e4100fd.png"}}]);
|
|
2
|
+
//# sourceMappingURL=china-map.136b71be.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/china-map.c8780d37.js","mappings":"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","sources":["webpack:///./src/china-map/index.tsx","webpack:///./src/shared/useContainerScale.ts","webpack:///./src/china-map/styles.shadow.css","webpack:///../../node_modules/css-loader/dist/runtime/getUrl.js"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport { groupBy } from \"lodash\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { geoPath, geoMercator, type ExtendedFeatureCollection } from \"d3-geo\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { useContainerScale } from \"../shared/useContainerScale\";\nimport texturePng from \"../china-map-chart/assets/texture.png\";\nimport markerSvg from \"../china-map-chart/assets/default.svg?url\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst BASE_WIDTH = 960;\nconst BASE_HEIGHT = 750;\nconst pixelRatio = window.devicePixelRatio ?? 1;\nconst layers = [\n {\n fill: \"rgba(84, 239, 241, 0.2)\",\n shadowColor: \"rgba(84, 239, 241, 0.2)\",\n shadowBlur: 2,\n shadowOffsetY: 1,\n offset: 28,\n },\n {\n fill: \"#bee1e2\",\n shadowColor: \"rgba(93,250,255,0.2)\",\n shadowBlur: 4,\n shadowOffsetY: 10,\n offset: 23,\n },\n {\n fill: \"#000\",\n offset: 19.5,\n },\n {\n lineWidth: 1,\n strokeStyle: \"#2B64FF\",\n offset: 15,\n },\n {\n lineWidth: 1.5,\n strokeStyle: \"#2B64FF\",\n offset: 10,\n },\n];\n\nexport interface ChinaMapProps {\n province?: string;\n dataSource?: DataItem[];\n maxScale?: number;\n}\n\nexport interface DataItem {\n province?: string;\n city?: string;\n text: string;\n}\n\n/**\n * 构件 `data-view.china-map`\n */\nexport\n@defineElement(\"data-view.china-map\", {\n styleTexts: [styleText],\n})\nclass ChinaMap extends ReactNextElement implements ChinaMapProps {\n /**\n * 省份名称,例如“广东”。如果设置,则只显示该省份的地图,否则显示全国地图\n */\n @property()\n accessor province: string | undefined;\n\n /**\n * 数据源\n */\n @property({ attribute: false })\n accessor dataSource: DataItem[] | undefined;\n\n /**\n * 最大缩放比例\n *\n * @default 1\n */\n @property({ type: Number })\n accessor maxScale: number | undefined;\n\n render() {\n return (\n <ChinaMapComponent\n root={this}\n province={this.province}\n dataSource={this.dataSource}\n maxScale={this.maxScale}\n />\n );\n }\n}\n\nexport interface ChinaMapComponentProps extends ChinaMapProps {\n root: ChinaMap;\n}\n\ninterface Area {\n name: string;\n level: \"country\" | \"province\" | \"city\" | \"district\";\n adcode: number;\n lng: number;\n lat: number;\n parent: number;\n}\n\ninterface Label {\n left: number;\n top: number;\n text: string;\n align: \"left\" | \"right\";\n}\n\nexport function ChinaMapComponent({\n root,\n province,\n dataSource,\n maxScale,\n}: ChinaMapComponentProps) {\n const scale = useContainerScale({\n width: BASE_WIDTH,\n height: BASE_HEIGHT,\n root,\n maxScale,\n });\n\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const [labels, setLabels] = useState<Label[]>([]);\n\n // true: loaded\n // false: loading\n // string: error\n const [state, setState] = useState<boolean | string>(false);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n const context = canvas.getContext(\"2d\");\n let ignore = false;\n\n (async () => {\n let geo: ExtendedFeatureCollection;\n let SouthSea: ExtendedFeatureCollection;\n let matchedProvince: Area | undefined;\n let AreaList: Area[] | undefined;\n\n let image: HTMLImageElement;\n try {\n [image] = await Promise.all([\n new Promise<HTMLImageElement>((resolve, reject) => {\n const img = new Image();\n // istanbul ignore next: can't mock image\n img.onload = () => {\n resolve(img);\n };\n // istanbul ignore next: can't mock image\n img.onerror = (reason) => {\n reject(reason);\n };\n img.src = texturePng;\n // istanbul ignore next: can't mock image\n if (process.env.NODE_ENV === \"test\") {\n resolve(null);\n }\n }),\n (async () => {\n if (province) {\n const [CitiesImport, AreaListImport] = await Promise.all([\n import(\"./cities.json\"),\n import(\"../china-map-chart/area-list.json\"),\n ]);\n\n const Cities =\n CitiesImport.default as unknown as ExtendedFeatureCollection;\n AreaList = AreaListImport.default as unknown as Area[];\n matchedProvince = AreaList.find(\n (a) => a.level === \"province\" && a.name.includes(province)\n );\n if (!matchedProvince) {\n throw new Error(`没有找到省份:\"${province}\"`);\n }\n geo = {\n type: \"FeatureCollection\",\n features: Cities.features.filter(\n (f) => f.properties.province_adcode === matchedProvince.adcode\n ),\n };\n } else {\n const ChinaImport = await import(\"./provinces.json\");\n const ChinaGeoJson =\n ChinaImport.default as unknown as ExtendedFeatureCollection;\n const geoGroup = groupBy(ChinaGeoJson.features, (f) =>\n f.properties.name ? \"main-land\" : \"south-sea\"\n );\n geo = {\n type: \"FeatureCollection\",\n features: geoGroup[\"main-land\"],\n };\n SouthSea = {\n type: \"FeatureCollection\",\n features: geoGroup[\"south-sea\"],\n };\n }\n })(),\n ]);\n } catch (e) {\n if (!ignore) {\n setState(String(e));\n context.clearRect(\n 0,\n 0,\n BASE_WIDTH * pixelRatio,\n BASE_HEIGHT * pixelRatio\n );\n setLabels([]);\n }\n return;\n }\n\n if (ignore) {\n return;\n }\n\n setState(true);\n\n context.clearRect(\n 0,\n 0,\n BASE_WIDTH * pixelRatio,\n BASE_HEIGHT * pixelRatio\n );\n\n context.strokeStyle = \"#fff\";\n context.lineWidth = 2.5 * pixelRatio;\n context.lineJoin = \"round\";\n\n const projection = geoMercator().fitExtent(\n [\n [10 * pixelRatio, 10 * pixelRatio],\n [(BASE_WIDTH - 10) * pixelRatio, (BASE_HEIGHT - 25) * pixelRatio],\n ],\n geo\n );\n const path = geoPath(projection, context);\n\n // 3D 效果层\n layers.forEach((layer) => {\n const ctx = context;\n context.save();\n context.translate(0, layer.offset * pixelRatio);\n\n if (layer.shadowColor) {\n ctx.shadowColor = layer.shadowColor;\n ctx.shadowBlur = (layer.shadowBlur ?? 0) * pixelRatio;\n ctx.shadowOffsetY = (layer.shadowOffsetY ?? 0) * pixelRatio;\n }\n\n ctx.beginPath();\n const p = geoPath(projection, ctx);\n p(geo);\n ctx.closePath();\n\n if (layer.fill) {\n ctx.fillStyle = layer.fill;\n ctx.fill();\n }\n\n if (layer.lineWidth) {\n ctx.strokeStyle = layer.strokeStyle;\n ctx.lineWidth = layer.lineWidth * pixelRatio;\n ctx.stroke();\n }\n context.restore();\n });\n\n // 纹理填充\n context.save();\n // istanbul ignore next: can't mock image\n if (process.env.NODE_ENV !== \"test\") {\n const pattern = context.createPattern(image, \"repeat\");\n context.fillStyle = pattern;\n }\n context.beginPath();\n path(geo);\n context.closePath();\n context.fill();\n context.restore();\n\n // 边界线\n context.save();\n context.strokeStyle = \"#3DC6FF\";\n context.beginPath();\n path(geo);\n context.closePath();\n context.stroke();\n context.restore();\n\n // 南海\n if (!province) {\n context.save();\n context.strokeStyle = \"rgb(30, 144, 255)\";\n context.beginPath();\n path(SouthSea);\n context.closePath();\n context.stroke();\n context.restore();\n }\n\n // 标签\n setLabels(\n dataSource?.flatMap((label) => {\n let lng: number;\n let lat: number;\n if (matchedProvince) {\n const area = AreaList.find(\n (a) =>\n a.level === \"city\" &&\n a.parent === matchedProvince.adcode &&\n a.name.includes(label.city)\n );\n if (!area) {\n return [];\n }\n ({ lng, lat } = area);\n } else {\n const feature = geo.features.find(\n (f) =>\n f.properties.level === \"province\" &&\n f.properties.name.includes(label.province)\n );\n if (!feature) {\n return [];\n }\n [lng, lat] = feature.properties.cp ?? feature.properties.center;\n }\n\n const point = projection([lng, lat]);\n const left = point[0] / pixelRatio;\n const top = point[1] / pixelRatio;\n\n return {\n left,\n top,\n text: label.text,\n // 防止标签超出边界,将最右侧的标签左对齐\n align: left > BASE_WIDTH - 150 ? \"left\" : \"right\",\n };\n })\n );\n })();\n\n return () => {\n ignore = true;\n };\n }, [province, dataSource]);\n\n return (\n <div\n className=\"container\"\n style={\n {\n width: BASE_WIDTH,\n height: BASE_HEIGHT,\n visibility: scale === null ? \"hidden\" : \"visible\",\n \"--scale\": scale,\n } as React.CSSProperties & {\n \"--scale\": number;\n }\n }\n >\n {state !== true && (\n <div\n className=\"message\"\n style={{ width: BASE_WIDTH, height: BASE_HEIGHT }}\n >\n {state === false && (\n <WrappedIcon\n lib=\"antd\"\n icon=\"loading\"\n spinning\n className=\"loading\"\n />\n )}\n {typeof state === \"string\" && <div className=\"error\">{state}</div>}\n </div>\n )}\n <canvas\n ref={canvasRef}\n width={BASE_WIDTH * pixelRatio}\n height={BASE_HEIGHT * pixelRatio}\n style={{ width: BASE_WIDTH, height: BASE_HEIGHT }}\n />\n <div\n className=\"labels\"\n style={{\n width: BASE_WIDTH,\n height: BASE_HEIGHT,\n }}\n >\n {labels?.map((label, index) => (\n <div\n key={index}\n className={`label ${label.align}`}\n style={{ left: label.left, top: label.top }}\n >\n <img width={28} height={32} className=\"marker\" src={markerSvg} />\n <div className=\"text\">{label.text}</div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import { useEffect, useState } from \"react\";\nimport ResizeObserver from \"resize-observer-polyfill\";\n\n/**\n * 根据容器尺寸进行缩放\n */\nexport function useContainerScale({\n width: baseWidth,\n height: baseHeight,\n root,\n maxScale,\n disabled,\n}: {\n width: number;\n height: number;\n root: HTMLElement;\n /** 最大缩放比例,默认为 1 */\n maxScale?: number;\n disabled?: boolean;\n}): number | null {\n const [scale, setScale] = useState<number | null>(null);\n\n useEffect(() => {\n if (disabled) {\n setScale(null);\n return;\n }\n // 当容器宽高低于预设值时,图形会自动缩小\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === root) {\n const { width, height } = entry.contentRect;\n setScale(\n Math.min(maxScale ?? 1, width / baseWidth, height / baseHeight)\n );\n }\n }\n });\n observer.observe(root);\n return () => observer.disconnect();\n }, [baseHeight, baseWidth, disabled, maxScale, root]);\n\n return scale;\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../china-map-chart/assets/label.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host,\n.message{display:flex;align-items:center;justify-content:center}:host{position:relative;color:#fff;height:100%}:host([hidden]){display:none}*{box-sizing:border-box}.container{position:relative;transform:scale(var(--scale));--scale:1}canvas,\n.message,\n.labels{position:absolute;left:50%;transform:translate(-50%,0);top:0}.loading{font-size:48px}.error{color:var(--color-error)}.label{position:absolute;display:flex;align-items:center;transform:translate(-14px,-28px)}.text{height:22px;line-height:22px;font-size:12px;background:url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat center left;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);text-indent:10px;transform:translate(0,-18px);white-space:nowrap;color:#fffcef}.left > .text{transform:translate(calc(-100% - 32px),-18px)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};"],"names":["defineElement","property","createDecorators","WrappedIcon","wrapBrick","BASE_WIDTH","BASE_HEIGHT","pixelRatio","_window$devicePixelRa","window","devicePixelRatio","layers","fill","shadowColor","shadowBlur","shadowOffsetY","offset","lineWidth","strokeStyle","_ChinaMap","_A","WeakMap","_B","_C","ChinaMap","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","_init_province","_init_extra_province","_init_dataSource","_init_extra_dataSource","_init_maxScale","_init_extra_maxScale","province","_classPrivateFieldGet","v","_classPrivateFieldSet","dataSource","maxScale","render","React","ChinaMapComponent","root","this","_ref","scale","useContainerScale","width","height","canvasRef","useRef","labels","setLabels","useState","state","setState","useEffect","context","current","getContext","ignore","geo","SouthSea","matchedProvince","AreaList","image","Promise","all","resolve","reject","img","Image","onload","onerror","reason","src","texturePng","CitiesImport","AreaListImport","Cities","default","find","a","level","name","includes","Error","type","features","filter","f","properties","province_adcode","adcode","ChinaGeoJson","geoGroup","groupBy","e","String","clearRect","lineJoin","projection","geoMercator","fitExtent","path","geoPath","forEach","layer","ctx","_layer$shadowBlur","_layer$shadowOffsetY","save","translate","beginPath","p","closePath","fillStyle","stroke","restore","pattern","createPattern","flatMap","label","lng","lat","area","parent","city","_feature$properties$c","feature","cp","center","point","left","top","text","align","className","style","visibility","lib","icon","spinning","ref","map","index","key","markerSvg","_ChinaMap2","c","_initClass","_applyDecs","styleTexts","styleText","attribute","Number","baseWidth","baseHeight","disabled","setScale","observer","ResizeObserver","entries","entry","target","contentRect","Math","min","observe","disconnect","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","push","module","id","toString","exports","url","options","__esModule","test","slice","hash","needQuotes","concat","replace"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/china-map.136b71be.js","mappings":"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","sources":["webpack:///./src/china-map/index.tsx","webpack:///./src/shared/useContainerScale.ts","webpack:///./src/china-map/styles.shadow.css","webpack:///../../node_modules/css-loader/dist/runtime/getUrl.js"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport { groupBy } from \"lodash\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { geoPath, geoMercator, type ExtendedFeatureCollection } from \"d3-geo\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { useContainerScale } from \"../shared/useContainerScale\";\nimport texturePng from \"../china-map-chart/assets/texture.png\";\nimport markerSvg from \"../china-map-chart/assets/default.svg?url\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst BASE_WIDTH = 960;\nconst BASE_HEIGHT = 750;\nconst pixelRatio = window.devicePixelRatio ?? 1;\nconst layers = [\n {\n fill: \"rgba(84, 239, 241, 0.2)\",\n shadowColor: \"rgba(84, 239, 241, 0.2)\",\n shadowBlur: 2,\n shadowOffsetY: 1,\n offset: 28,\n },\n {\n fill: \"#bee1e2\",\n shadowColor: \"rgba(93,250,255,0.2)\",\n shadowBlur: 4,\n shadowOffsetY: 10,\n offset: 23,\n },\n {\n fill: \"#000\",\n offset: 19.5,\n },\n {\n lineWidth: 1,\n strokeStyle: \"#2B64FF\",\n offset: 15,\n },\n {\n lineWidth: 1.5,\n strokeStyle: \"#2B64FF\",\n offset: 10,\n },\n];\n\nexport interface ChinaMapProps {\n province?: string;\n dataSource?: DataItem[];\n maxScale?: number;\n}\n\nexport interface DataItem {\n province?: string;\n city?: string;\n text: string;\n}\n\n/**\n * 构件 `data-view.china-map`\n */\nexport\n@defineElement(\"data-view.china-map\", {\n styleTexts: [styleText],\n})\nclass ChinaMap extends ReactNextElement implements ChinaMapProps {\n /**\n * 省份名称,例如“广东”。如果设置,则只显示该省份的地图,否则显示全国地图\n */\n @property()\n accessor province: string | undefined;\n\n /**\n * 数据源\n */\n @property({ attribute: false })\n accessor dataSource: DataItem[] | undefined;\n\n /**\n * 最大缩放比例\n *\n * @default 1\n */\n @property({ type: Number })\n accessor maxScale: number | undefined;\n\n render() {\n return (\n <ChinaMapComponent\n root={this}\n province={this.province}\n dataSource={this.dataSource}\n maxScale={this.maxScale}\n />\n );\n }\n}\n\nexport interface ChinaMapComponentProps extends ChinaMapProps {\n root: ChinaMap;\n}\n\ninterface Area {\n name: string;\n level: \"country\" | \"province\" | \"city\" | \"district\";\n adcode: number;\n lng: number;\n lat: number;\n parent: number;\n}\n\ninterface Label {\n left: number;\n top: number;\n text: string;\n align: \"left\" | \"right\";\n}\n\nexport function ChinaMapComponent({\n root,\n province,\n dataSource,\n maxScale,\n}: ChinaMapComponentProps) {\n const scale = useContainerScale({\n width: BASE_WIDTH,\n height: BASE_HEIGHT,\n root,\n maxScale,\n });\n\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const [labels, setLabels] = useState<Label[]>([]);\n\n // true: loaded\n // false: loading\n // string: error\n const [state, setState] = useState<boolean | string>(false);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n const context = canvas.getContext(\"2d\");\n let ignore = false;\n\n (async () => {\n let geo: ExtendedFeatureCollection;\n let SouthSea: ExtendedFeatureCollection;\n let matchedProvince: Area | undefined;\n let AreaList: Area[] | undefined;\n\n let image: HTMLImageElement;\n try {\n [image] = await Promise.all([\n new Promise<HTMLImageElement>((resolve, reject) => {\n const img = new Image();\n // istanbul ignore next: can't mock image\n img.onload = () => {\n resolve(img);\n };\n // istanbul ignore next: can't mock image\n img.onerror = (reason) => {\n reject(reason);\n };\n img.src = texturePng;\n // istanbul ignore next: can't mock image\n if (process.env.NODE_ENV === \"test\") {\n resolve(null);\n }\n }),\n (async () => {\n if (province) {\n const [CitiesImport, AreaListImport] = await Promise.all([\n import(\"./cities.json\"),\n import(\"../china-map-chart/area-list.json\"),\n ]);\n\n const Cities =\n CitiesImport.default as unknown as ExtendedFeatureCollection;\n AreaList = AreaListImport.default as unknown as Area[];\n matchedProvince = AreaList.find(\n (a) => a.level === \"province\" && a.name.includes(province)\n );\n if (!matchedProvince) {\n throw new Error(`没有找到省份:\"${province}\"`);\n }\n geo = {\n type: \"FeatureCollection\",\n features: Cities.features.filter(\n (f) => f.properties.province_adcode === matchedProvince.adcode\n ),\n };\n } else {\n const ChinaImport = await import(\"./provinces.json\");\n const ChinaGeoJson =\n ChinaImport.default as unknown as ExtendedFeatureCollection;\n const geoGroup = groupBy(ChinaGeoJson.features, (f) =>\n f.properties.name ? \"main-land\" : \"south-sea\"\n );\n geo = {\n type: \"FeatureCollection\",\n features: geoGroup[\"main-land\"],\n };\n SouthSea = {\n type: \"FeatureCollection\",\n features: geoGroup[\"south-sea\"],\n };\n }\n })(),\n ]);\n } catch (e) {\n if (!ignore) {\n setState(String(e));\n context.clearRect(\n 0,\n 0,\n BASE_WIDTH * pixelRatio,\n BASE_HEIGHT * pixelRatio\n );\n setLabels([]);\n }\n return;\n }\n\n if (ignore) {\n return;\n }\n\n setState(true);\n\n context.clearRect(\n 0,\n 0,\n BASE_WIDTH * pixelRatio,\n BASE_HEIGHT * pixelRatio\n );\n\n context.strokeStyle = \"#fff\";\n context.lineWidth = 2.5 * pixelRatio;\n context.lineJoin = \"round\";\n\n const projection = geoMercator().fitExtent(\n [\n [10 * pixelRatio, 10 * pixelRatio],\n [(BASE_WIDTH - 10) * pixelRatio, (BASE_HEIGHT - 25) * pixelRatio],\n ],\n geo\n );\n const path = geoPath(projection, context);\n\n // 3D 效果层\n layers.forEach((layer) => {\n const ctx = context;\n context.save();\n context.translate(0, layer.offset * pixelRatio);\n\n if (layer.shadowColor) {\n ctx.shadowColor = layer.shadowColor;\n ctx.shadowBlur = (layer.shadowBlur ?? 0) * pixelRatio;\n ctx.shadowOffsetY = (layer.shadowOffsetY ?? 0) * pixelRatio;\n }\n\n ctx.beginPath();\n const p = geoPath(projection, ctx);\n p(geo);\n ctx.closePath();\n\n if (layer.fill) {\n ctx.fillStyle = layer.fill;\n ctx.fill();\n }\n\n if (layer.lineWidth) {\n ctx.strokeStyle = layer.strokeStyle;\n ctx.lineWidth = layer.lineWidth * pixelRatio;\n ctx.stroke();\n }\n context.restore();\n });\n\n // 纹理填充\n context.save();\n // istanbul ignore next: can't mock image\n if (process.env.NODE_ENV !== \"test\") {\n const pattern = context.createPattern(image, \"repeat\");\n context.fillStyle = pattern;\n }\n context.beginPath();\n path(geo);\n context.closePath();\n context.fill();\n context.restore();\n\n // 边界线\n context.save();\n context.strokeStyle = \"#3DC6FF\";\n context.beginPath();\n path(geo);\n context.closePath();\n context.stroke();\n context.restore();\n\n // 南海\n if (!province) {\n context.save();\n context.strokeStyle = \"rgb(30, 144, 255)\";\n context.beginPath();\n path(SouthSea);\n context.closePath();\n context.stroke();\n context.restore();\n }\n\n // 标签\n setLabels(\n dataSource?.flatMap((label) => {\n let lng: number;\n let lat: number;\n if (matchedProvince) {\n const area = AreaList.find(\n (a) =>\n a.level === \"city\" &&\n a.parent === matchedProvince.adcode &&\n a.name.includes(label.city)\n );\n if (!area) {\n return [];\n }\n ({ lng, lat } = area);\n } else {\n const feature = geo.features.find(\n (f) =>\n f.properties.level === \"province\" &&\n f.properties.name.includes(label.province)\n );\n if (!feature) {\n return [];\n }\n [lng, lat] = feature.properties.cp ?? feature.properties.center;\n }\n\n const point = projection([lng, lat]);\n const left = point[0] / pixelRatio;\n const top = point[1] / pixelRatio;\n\n return {\n left,\n top,\n text: label.text,\n // 防止标签超出边界,将最右侧的标签左对齐\n align: left > BASE_WIDTH - 150 ? \"left\" : \"right\",\n };\n })\n );\n })();\n\n return () => {\n ignore = true;\n };\n }, [province, dataSource]);\n\n return (\n <div\n className=\"container\"\n style={\n {\n width: BASE_WIDTH,\n height: BASE_HEIGHT,\n visibility: scale === null ? \"hidden\" : \"visible\",\n \"--scale\": scale,\n } as React.CSSProperties & {\n \"--scale\": number;\n }\n }\n >\n {state !== true && (\n <div\n className=\"message\"\n style={{ width: BASE_WIDTH, height: BASE_HEIGHT }}\n >\n {state === false && (\n <WrappedIcon\n lib=\"antd\"\n icon=\"loading\"\n spinning\n className=\"loading\"\n />\n )}\n {typeof state === \"string\" && <div className=\"error\">{state}</div>}\n </div>\n )}\n <canvas\n ref={canvasRef}\n width={BASE_WIDTH * pixelRatio}\n height={BASE_HEIGHT * pixelRatio}\n style={{ width: BASE_WIDTH, height: BASE_HEIGHT }}\n />\n <div\n className=\"labels\"\n style={{\n width: BASE_WIDTH,\n height: BASE_HEIGHT,\n }}\n >\n {labels?.map((label, index) => (\n <div\n key={index}\n className={`label ${label.align}`}\n style={{ left: label.left, top: label.top }}\n >\n <img width={28} height={32} className=\"marker\" src={markerSvg} />\n <div className=\"text\">{label.text}</div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import { useEffect, useState } from \"react\";\nimport ResizeObserver from \"resize-observer-polyfill\";\n\n/**\n * 根据容器尺寸进行缩放\n */\nexport function useContainerScale({\n width: baseWidth,\n height: baseHeight,\n root,\n maxScale,\n disabled,\n}: {\n width: number;\n height: number;\n root: HTMLElement;\n /** 最大缩放比例,默认为 1 */\n maxScale?: number;\n disabled?: boolean;\n}): number | null {\n const [scale, setScale] = useState<number | null>(null);\n\n useEffect(() => {\n if (disabled) {\n setScale(null);\n return;\n }\n // 当容器宽高低于预设值时,图形会自动缩小\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === root) {\n const { width, height } = entry.contentRect;\n setScale(\n Math.min(maxScale ?? 1, width / baseWidth, height / baseHeight)\n );\n }\n }\n });\n observer.observe(root);\n return () => observer.disconnect();\n }, [baseHeight, baseWidth, disabled, maxScale, root]);\n\n return scale;\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../china-map-chart/assets/label.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host,\n.message{display:flex;align-items:center;justify-content:center}:host{position:relative;color:#fff;height:100%}:host([hidden]){display:none}*{box-sizing:border-box}.container{position:relative;transform:scale(var(--scale));--scale:1}canvas,\n.message,\n.labels{position:absolute;left:50%;transform:translate(-50%,0);top:0}.loading{font-size:48px}.error{color:var(--color-error)}.label{position:absolute;display:flex;align-items:center;transform:translate(-14px,-28px)}.text{height:22px;line-height:22px;font-size:12px;background:url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat center left;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);text-indent:10px;transform:translate(0,-18px);white-space:nowrap;color:#fffcef}.left > .text{transform:translate(calc(-100% - 32px),-18px)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};"],"names":["defineElement","property","createDecorators","WrappedIcon","wrapBrick","BASE_WIDTH","BASE_HEIGHT","pixelRatio","_window$devicePixelRa","window","devicePixelRatio","layers","fill","shadowColor","shadowBlur","shadowOffsetY","offset","lineWidth","strokeStyle","_ChinaMap","_A","WeakMap","_B","_C","ChinaMap","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","_init_province","_init_extra_province","_init_dataSource","_init_extra_dataSource","_init_maxScale","_init_extra_maxScale","province","_classPrivateFieldGet","v","_classPrivateFieldSet","dataSource","maxScale","render","React","ChinaMapComponent","root","this","_ref","scale","useContainerScale","width","height","canvasRef","useRef","labels","setLabels","useState","state","setState","useEffect","context","current","getContext","ignore","geo","SouthSea","matchedProvince","AreaList","image","Promise","all","resolve","reject","img","Image","onload","onerror","reason","src","texturePng","CitiesImport","AreaListImport","Cities","default","find","a","level","name","includes","Error","type","features","filter","f","properties","province_adcode","adcode","ChinaGeoJson","geoGroup","groupBy","e","String","clearRect","lineJoin","projection","geoMercator","fitExtent","path","geoPath","forEach","layer","ctx","_layer$shadowBlur","_layer$shadowOffsetY","save","translate","beginPath","p","closePath","fillStyle","stroke","restore","pattern","createPattern","flatMap","label","lng","lat","area","parent","city","_feature$properties$c","feature","cp","center","point","left","top","text","align","className","style","visibility","lib","icon","spinning","ref","map","index","key","markerSvg","_ChinaMap2","c","_initClass","_applyDecs","styleTexts","styleText","attribute","Number","baseWidth","baseHeight","disabled","setScale","observer","ResizeObserver","entries","entry","target","contentRect","Math","min","observe","disconnect","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","push","module","id","toString","exports","url","options","__esModule","test","slice","hash","needQuotes","concat","replace"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(globalThis.webpackChunk_next_bricks_data_view=globalThis.webpackChunk_next_bricks_data_view||[]).push([[5994,2052],{98414:(e,t,r)=>{r.d(t,{I:()=>o,K:()=>a,NS:()=>n});let a=function(e){return e.EMPTY_DATA="EMPTY_DATA",e}({});const n="bricks/data-view/complex-search",o={en:{EMPTY_DATA:"Empty data"},zh:{EMPTY_DATA:"空数据"}}},66060:(e,t,r)=>{r.r(t),r.d(t,{ComplexSearch:()=>re,ComplexSearchComponent:()=>be});var a,n=r(89575),o=r(24586),i=r(74635),l=r(70918),s=r(26902),c=r(5536),p=r(86121),u=r(70829),h=r(62740),d=r(18769),b=r.n(d),g=r(65821),f=r(79476),v=r(79935),m=r(69994),x=r(7084),w=r(5747),y=r(98414),A=r(41856);let k,E,z,S,M,T,B,I,j,N,C,W,P,_,D,O,R,U,F,Y,K,L,q,G,H,J,Q,V,X;const{defineElement:Z,property:$,event:ee}=(0,g.createDecorators)();(0,w.initializeReactI18n)(y.NS,y.I);const te=(0,f.wrapBrick)("eo-icon");let re;var ae=new WeakMap,ne=new WeakMap,oe=new WeakMap,ie=new WeakMap,le=new WeakMap,se=new WeakSet,ce=new WeakMap,pe=new WeakMap,ue=new WeakMap,he=new WeakMap;class de extends f.ReactNextElement{constructor(){super(...arguments),(0,i.A)(this,se),(0,l.A)(this,ae,E(this)),(0,l.A)(this,ne,(z(this),S(this))),(0,l.A)(this,oe,(M(this),T(this))),(0,l.A)(this,ie,(B(this),I(this))),(0,l.A)(this,le,(j(this),N(this))),(0,l.A)(this,ce,(P(this),_(this))),(0,l.A)(this,pe,(R(this),U(this))),(0,l.A)(this,ue,(K(this),L(this))),(0,l.A)(this,he,(H(this),J(this))),(0,o.A)(this,"handleInputChange",(X(this),e=>{(0,c.A)(se,this,C).emit(e)})),(0,o.A)(this,"handleSearch",(e=>{(0,c.A)(se,this,D).emit(e)})),(0,o.A)(this,"handleFocus",(()=>{(0,c.A)(se,this,q).emit()})),(0,o.A)(this,"handleBlur",(()=>{(0,c.A)(se,this,Q).emit()})),(0,o.A)(this,"handleSelect",(e=>{(0,c.A)(se,this,F).emit(e)}))}get value(){return(0,u.A)(ae,this)}set value(e){(0,p.A)(ae,this,e)}get placeholder(){return(0,u.A)(ne,this)}set placeholder(e){(0,p.A)(ne,this,e)}get options(){return(0,u.A)(oe,this)}set options(e){(0,p.A)(oe,this,e)}get tooltipUseBrick(){return(0,u.A)(ie,this)}set tooltipUseBrick(e){(0,p.A)(ie,this,e)}render(){return b().createElement(be,{value:this.value,onInputChange:this.handleInputChange,onSearch:this.handleSearch,onBlur:this.handleBlur,onFocus:this.handleFocus,tooltipUseBrick:this.tooltipUseBrick,placeholder:this.placeholder,onSelect:this.handleSelect,options:this.options})}}function be(e){const{onInputChange:t,onSearch:r,onBlur:a,onFocus:o,tooltipUseBrick:i,placeholder:l,onSelect:s,options:c=[]}=e,{t:p}=(0,w.useTranslation)(y.NS),[u,h]=(0,d.useState)(!1),g=(0,d.useRef)(null),[f,v]=(0,d.useState)(!1),[m,k]=(0,d.useState)(),[E,z]=(0,d.useState)(0),[S,M]=(0,d.useState)(!1),[T,B]=(0,d.useState)(e.value);(0,d.useEffect)((()=>{B(e.value)}),[e.value]),(0,d.useEffect)((()=>{h(!!T)}),[T]);const I=e=>{e.composedPath().some((e=>e===g.current))||v(!1)},j=(0,d.useMemo)((()=>null!=i&&i.useBrick?b().createElement("div",{className:"dropdownMenuItemTooltip",style:{top:E,visibility:S?"visible":"hidden",opacity:S?1:0},onMouseEnter:()=>M(!0),onMouseLeave:()=>M(!1)},b().createElement("div",{className:"useBrickWrapper"},b().createElement(x.ReactUseMultipleBricks,{useBrick:i.useBrick,data:m||{}}))):void 0),[m,i,E,S]);return(0,d.useEffect)((()=>(document.addEventListener("click",I),()=>document.removeEventListener("click",I))),[]),b().createElement("div",{className:"wrapper",ref:g},b().createElement("div",{className:"inputWrapper"},b().createElement("input",{placeholder:l,value:null!=T?T:"",type:"text",onChange:e=>{return r=e.target.value,B(r),t(r),void v(!0);var r},onFocus:()=>{v(!0),o()},onBlur:a,onKeyDown:e=>{"Enter"===e.key&&(v(!1),B(e.target.value),r(e.target.value))}}),b().createElement(te,{className:"searchIcon icon",lib:"antd",icon:"search",theme:"outlined"}),u&&b().createElement(te,{className:"clearIcon icon",onClick:()=>{B(null),t(""),v(!1)},lib:"antd",icon:"close-circle",theme:"filled"})),b().createElement("div",{className:"dropdownWrapper",style:{visibility:f?"visible":"hidden"}},c.length?b().createElement("div",{className:"dropdownMenu"},c.map(((e,t)=>b().createElement("div",{className:"dropdownMenuItem",key:t,onMouseEnter:t=>((e,t)=>{k(t),M(!0);const r=e.target.getBoundingClientRect().top-g.current.getBoundingClientRect().top;z(r)})(t,e),onMouseLeave:()=>M(!1),onClick:()=>{return B((t=e).name),s(t),void v(!1);var t}},b().createElement(te,(0,n.A)({},e.icon,{className:"menuIcon"})),b().createElement("span",{className:"menuTitle"},e.name))))):b().createElement("div",{className:"emptyData"},b().createElement("img",{src:A,alt:p(y.K.EMPTY_DATA)}),b().createElement("span",null,p(y.K.EMPTY_DATA)))),j)}a=de,({e:[E,z,S,M,T,B,I,j,N,C,W,P,_,D,O,R,U,F,Y,K,L,q,G,H,J,Q,V,X],c:[re,k]}=(0,h.A)(a,[Z("data-view.complex-search",{styleTexts:[v.A,m.A]})],[[$(),1,"value"],[$(),1,"placeholder"],[$({attribute:!1}),1,"options"],[$({attribute:!1}),1,"tooltipUseBrick"],[ee({type:"change"}),1,"inputChangeEvent",e=>(0,u.A)(le,e),(e,t)=>(0,p.A)(le,e,t)],[ee({type:"search"}),1,"onSearchEvent",e=>(0,u.A)(ce,e),(e,t)=>(0,p.A)(ce,e,t)],[ee({type:"select"}),1,"onSelectEvent",e=>(0,u.A)(pe,e),(e,t)=>(0,p.A)(pe,e,t)],[ee({type:"focus"}),1,"onFocusEvent",e=>(0,u.A)(ue,e),(e,t)=>(0,p.A)(ue,e,t)],[ee({type:"blur"}),1,"onBlurEvent",e=>(0,u.A)(he,e),(e,t)=>(0,p.A)(he,e,t)]],0,(e=>se.has((0,s.A)(e))),f.ReactNextElement)),k()},69994:(e,t,r)=>{r.d(t,{A:()=>l});var a=r(36758),n=r.n(a),o=r(40935),i=r.n(o)()(n());i.push([e.id,'.wrapper{width:100%;position:relative}.inputWrapper{width:100%;height:32px;position:relative}input{height:100%;line-height:32px;border:none;width:100%;box-sizing:border-box;padding:0 32px;background:var(--color-fill-bg-base-1);border-radius:var(--medius-border-radius);font-size:var(--auxiliary-font-size-small);font-weight:var(--font-weight-400);color:var(--color-normal-text)}input::placeholder{color:var(--color-disabled-text);font-size:var(--auxiliary-font-size-small);font-weight:var(--font-weight-400)}input:not(:disabled):focus{border:none;outline:0}.icon{position:absolute;color:var(--color-normal-text);opacity:0.6}.searchIcon{left:10px;top:6px;font-size:16px}.clearIcon{right:10px;top:7px;font-size:14px}.dropdownWrapper{width:100%;height:336px;margin:5px 0;padding:8px 0;box-sizing:border-box;position:absolute;z-index:900;overflow:auto;background:var(--color-fill-bg-base-1);border-radius:var(--medius-border-radius);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}.emptyData{width:100%;height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;color:var(--color-disabled-text);gap:20px}.emptyData img{width:62px}.dropdownMenu{overflow-y:auto}.dropdownMenuItem{padding:6px 18px;color:var(--color-normal-text);font-size:var(--auxiliary-font-size-small);font-weight:var(--font-weight-400);display:flex;align-items:center;gap:6px;height:32px;line-height:20px;box-sizing:border-box;cursor:pointer}.menuTitle{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.menuIcon{font-size:20px}.dropdownMenuItem:hover{border-radius:var(--no-border-radius);background:var(--color-fill-bg-container-1)}.dropdownMenuItemTooltip{position:absolute;width:324px;left:-325px;top:0;background:var(--color-fill-bg-base-4);border-radius:var(--medius-border-radius)}.dropdownMenuItemTooltip:before{content:"";position:absolute;top:0;width:100%;height:100%;left:0;background:#282e3a linear-gradient(186deg,rgba(51,102,255,0.3) 0%,rgba(51,102,255,0) 100%);border-radius:4px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.useBrickWrapper{position:relative;min-height:100px;max-height:465px;overflow:auto}',""]);const l=i.toString()},79935:(e,t,r)=>{r.d(t,{A:()=>l});var a=r(36758),n=r.n(a),o=r(40935),i=r.n(o)()(n());i.push([e.id,":host{--palette-rgba-white-1:rgba(255,255,255,10%);--palette-rgba-white-2:rgba(255,255,255,20%);--palette-rgba-white-3:rgba(255,255,255,30%);--palette-rgba-white-4:rgba(255,255,255,40%);--palette-rgba-white-5:rgba(255,255,255,50%);--palette-rgba-white-6:rgba(255,255,255,60%);--palette-rgba-white-7:rgba(255,255,255,70%);--palette-rgba-white-8:rgba(255,255,255,80%);--palette-rgba-white-9:rgba(255,255,255,90%);--palette-rgba-white-10:rgba(255,255,255,100%);--palette-rgba-gray-1:rgba(0,0,0,10%);--palette-rgba-gray-2:rgba(0,0,0,20%);--palette-rgba-gray-3:rgba(0,0,0,30%);--palette-rgba-gray-4:rgba(0,0,0,40%);--palette-rgba-gray-5:rgba(0,0,0,50%);--palette-rgba-gray-6:rgba(0,0,0,60%);--palette-rgba-gray-7:rgba(0,0,0,70%);--palette-rgba-gray-8:rgba(0,0,0,80%);--palette-rgba-gray-9:rgba(0,0,0,90%);--palette-rgba-gray-10:rgba(0,0,0,100%);--palette-rgba-blue-gray-2:rgba(101,106,134,20%);--palette-rgba-blue-gray-3:rgba(101,106,134,30%);--palette-rgba-blue-gray-8:rgba(101,106,134,80%);--palette-tech-blue-4-channel:67,127,255;--palette-tech-blue-4:rgb(var(--palette-tech-blue-4-channel));--palette-tech-blue-6-channel:51,102,255;--palette-tech-blue-6:rgb(var(--palette-tech-blue-6-channel));--palette-tech-blue-8-channel:40,69,159;--palette-tech-blue-8:rgb(var(--palette-tech-blue-8-channel));--palette-sea-green-4-channel:131,245,225;--palette-sea-green-4:rgb(var(--palette-sea-green-4-channel));--palette-green-6-channel:81,235,73;--palette-green-6:rgb(var(--palette-green-6-channel));--palette-green-2:rgba(var(--palette-green-6-channel),20%);--palette-lotus-pink-7-channel:204,0,102;--palette-lotus-pink-7:rgb(var(--palette-lotus-pink-7-channel));--palette-red-6-channel:242,39,39;--palette-red-6:rgb(var(--palette-red-6-channel));--palette-red-2:rgba(var(--palette-red-6-channel),20%);--color-fill-global-bg:#0f1014;--color-fill-bg-container-1:var(--palette-rgba-white-1);--color-fill-bg-container-2:var(--palette-rgba-blue-gray-2);--color-fill-bg-container-3:var(--palette-rgba-blue-gray-8);--color-fill-bg-base-1:var(--palette-rgba-blue-gray-2);--color-fill-bg-base-2:rgba(15,16,20,0%);--color-fill-bg-base-3:rgba(0,0,0,20%);--color-fill-bg-base-4:rgba(40,46,58,100%);--color-fill-bg-base-5:rgba(19,25,47,80%);--color-fill-bg-base-6:var(--palette-rgba-blue-gray-3);--color-brand:var(--palette-tech-blue-6);--color-brand-hover:var(--palette-tech-blue-4);--color-brand-active:var(--palette-tech-blue-8);--color-contrast-1:var(--palette-sea-green-4);--color-error:var(--palette-red-6);--color-error-bg:var(--palette-red-2);--color-success:var(--palette-green-6);--color-success-bg:var(--palette-green-2);--color-header-text-big:var(--palette-rgba-white-10);--color-header-text:var(--palette-rgba-white-10);--color-normal-text:var(--palette-rgba-white-10);--color-strong-text:var(--palette-rgba-white-9);--color-auxiliary-text:var(--palette-rgba-white-8);--color-secondary-text:var(--palette-rgba-white-6);--color-disabled-text:var(--palette-rgba-white-4);--color-border-divider-line:var(--palette-rgba-white-1);--color-text-divider-line-1:var(--palette-rgba-white-2);--color-text-divider-line-2:var(--palette-rgba-white-2);--small-border-radius:2px;--medius-border-radius:5px;--larger-border-radius:12px;--container-border-radius:9999px;--no-border-radius:0px;--mask-bg:var(--palette-rgba-gray-7);--title-font-size-larger:30px;--title-font-size-strong:22px;--title-font-size:18px;--normal-font-size:14px;--auxiliary-font-size:16px;--auxiliary-font-size-small:12px;--overview-data-font-size:34px;--statistics-data-font-size:28px;--normal-data-font-size-larger:20px;--normal-data-font-size:16px;--chart-legend-font-size:12px;--chart-tooltips-font-size-1:12px;--chart-tooltips-font-size-2:12px;--chart-axis-x-font-size:12px;--chart-axis-x-font-size-larger:14px;--chart-axis-y-font-size:12px;--chart-axis-y-font-size-larger:14px;--font-weight-600:600;--font-weight-500:500;--font-weight-400:400;--text-shadow:0px 1px 4px #2863ee;--border-width-base:1px;--border-width-double-base:2px;--border-width-tribble-base:3px;--punctate-width-base:1px;--paragraph-width-base:1px;--button-text-color:#40d0db}",""]);const l=i.toString()},40935:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var r="",a=void 0!==t[5];return t[4]&&(r+="@supports (".concat(t[4],") {")),t[2]&&(r+="@media ".concat(t[2]," {")),a&&(r+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),r+=e(t),a&&(r+="}"),t[2]&&(r+="}"),t[4]&&(r+="}"),r})).join("")},t.i=function(e,r,a,n,o){"string"==typeof e&&(e=[[null,e,void 0]]);var i={};if(a)for(var l=0;l<this.length;l++){var s=this[l][0];null!=s&&(i[s]=!0)}for(var c=0;c<e.length;c++){var p=[].concat(e[c]);a&&i[p[0]]||(void 0!==o&&(void 0===p[5]||(p[1]="@layer".concat(p[5].length>0?" ".concat(p[5]):""," {").concat(p[1],"}")),p[5]=o),r&&(p[2]?(p[1]="@media ".concat(p[2]," {").concat(p[1],"}"),p[2]=r):p[2]=r),n&&(p[4]?(p[1]="@supports (".concat(p[4],") {").concat(p[1],"}"),p[4]=n):p[4]="".concat(n)),t.push(p))}},t}},36758:e=>{e.exports=function(e){return e[1]}},41856:(e,t,r)=>{e.exports=r.p+"images/6d954a25.png"},62740:(e,t,r)=>{r.d(t,{A:()=>l});var a=r(17545),n=r(26902);function o(e,t,r){"symbol"==(0,a.A)(t)&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:r?r+" "+t:t})}catch(e){}return e}var i=r(11369);function l(e,t,r,l,s,c){var p,u,h,d,b,g,f,v=Symbol.metadata||Symbol.for("Symbol.metadata"),m=Object.defineProperty,x=Object.create,w=[x(null),x(null)],y=t.length;function A(t,r,a){return function(n,o){r&&(o=n,n=e);for(var i=0;i<t.length;i++)o=t[i].apply(n,a?[o]:[]);return a?o:n}}function k(e,t,r,a){if("function"!=typeof e&&(a||void 0!==e))throw new TypeError(t+" must "+(r||"be")+" a function"+(a?"":" or undefined"));return e}function E(e,t,r,n,i,l,s,c,h,d,b){function g(e){if(!b(e))throw new TypeError("Attempted to access private element on non-instance")}var f=[].concat(t[0]),v=t[3],x=!s,y=1===i,E=3===i,z=4===i,S=2===i;function M(t,r,a){return function(n,o){return r&&(o=n,n=e),a&&a(n),T[t].call(n,o)}}if(!x){var T={},B=[],I=E?"get":z||y?"set":"value";if(h?(d||y?T={get:o((function(){return v(this)}),n,"get"),set:function(e){t[4](this,e)}}:T[I]=v,d||o(T[I],n,S?"":I)):d||(T=Object.getOwnPropertyDescriptor(e,n)),!d&&!h){if((u=w[+c][n])&&7!=(u^i))throw Error("Decorating two elements with the same name ("+T[I].name+") is not supported yet");w[+c][n]=i<3?1:i}}for(var j=e,N=f.length-1;N>=0;N-=r?2:1){var C=k(f[N],"A decorator","be",!0),W=r?f[N-1]:void 0,P={},_={kind:["field","accessor","method","getter","setter","class"][i],name:n,metadata:p,addInitializer:function(e,t){if(e.v)throw Error("attempted to call addInitializer after decoration was finished");k(t,"An initializer","be",!0),l.push(t)}.bind(null,P)};if(x)u=C.call(W,j,_),P.v=1,k(u,"class decorators","return")&&(j=u);else if(_.static=c,_.private=h,u=_.access={has:h?b.bind():function(e){return n in e}},z||(u.get=h?S?function(e){return g(e),T.value}:M("get",0,g):function(e){return e[n]}),S||E||(u.set=h?M("set",0,g):function(e,t){e[n]=t}),j=C.call(W,y?{get:T.get,set:T.set}:T[I],_),P.v=1,y){if("object"==(0,a.A)(j)&&j)(u=k(j.get,"accessor.get"))&&(T.get=u),(u=k(j.set,"accessor.set"))&&(T.set=u),(u=k(j.init,"accessor.init"))&&B.unshift(u);else if(void 0!==j)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else k(j,(d?"field":"method")+" decorators","return")&&(d?B.unshift(j):T[I]=j)}return i<2&&s.push(A(B,c,1),A(l,c,0)),d||x||(h?y?s.splice(-1,0,M("get",c),M("set",c)):s.push(S?T[I]:k.call.bind(T[I])):m(e,n,T)),j}function z(e){return m(e,v,{configurable:!0,enumerable:!0,value:p})}return void 0!==c&&(p=c[v]),p=x(null==p?null:p),b=[],g=function(e){e&&b.push(A(e))},f=function(t,a){for(var o=0;o<r.length;o++){var l=r[o],c=l[1],p=7&c;if((8&c)==t&&!p==a){var u=l[2],g=!!l[3],f=16&c;E(t?e:e.prototype,l,f,g?"#"+u:(0,i.A)(u),p,p<2?[]:t?d=d||[]:h=h||[],b,!!t,g,a,t&&g?function(t){return(0,n.A)(t)===e}:s)}}},f(8,0),f(0,0),f(8,1),f(0,1),g(h),g(d),u=b,y||z(e),{e:u,get c(){var r=[];return y&&[z(e=E(e,[t],l,e.name,5,r)),A(r,1)]}}}},12559:(e,t,r)=>{function a(e,t,r){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:r;throw new TypeError("Private element is not present on this object")}r.d(t,{A:()=>a})},26902:(e,t,r)=>{r.d(t,{A:()=>n});var a=r(17545);function n(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(null!==e?(0,a.A)(e):"null"));return e}},72016:(e,t,r)=>{function a(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}r.d(t,{A:()=>a})},70829:(e,t,r)=>{r.d(t,{A:()=>n});var a=r(12559);function n(e,t){return e.get((0,a.A)(e,t))}},70918:(e,t,r)=>{r.d(t,{A:()=>n});var a=r(72016);function n(e,t,r){(0,a.A)(e,t),t.set(e,r)}},86121:(e,t,r)=>{r.d(t,{A:()=>n});var a=r(12559);function n(e,t,r){return e.set((0,a.A)(e,t),r),r}},5536:(e,t,r)=>{r.d(t,{A:()=>n});var a=r(12559);function n(e,t,r){return r((0,a.A)(e,t))}},74635:(e,t,r)=>{r.d(t,{A:()=>n});var a=r(72016);function n(e,t){(0,a.A)(e,t),t.add(e)}},24586:(e,t,r)=>{r.d(t,{A:()=>n});var a=r(11369);function n(e,t,r){return(t=(0,a.A)(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}},89575:(e,t,r)=>{function a(){return a=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},a.apply(this,arguments)}r.d(t,{A:()=>a})},11369:(e,t,r)=>{r.d(t,{A:()=>n});var a=r(17545);function n(e){var t=function(e,t){if("object"!=(0,a.A)(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=(0,a.A)(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==(0,a.A)(t)?t:t+""}},17545:(e,t,r)=>{function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}r.d(t,{A:()=>a})}}]);
|
|
2
|
+
//# sourceMappingURL=complex-search.94ff4d73.js.map
|