@mint-ui/map 0.9.2-beta → 0.9.2-beta-test1

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.
@@ -0,0 +1,19 @@
1
+ import React from "react";
2
+ import { MarkerOptions, Offset, Position } from "../../../types";
3
+ export interface CanvasMarkerRendererParams<T> {
4
+ context: CanvasRenderingContext2D;
5
+ offset: Offset;
6
+ payload?: T;
7
+ }
8
+ export interface CanvasMarkerOption<T> {
9
+ position: Position;
10
+ anchor?: Offset;
11
+ visible?: boolean;
12
+ payload?: T;
13
+ }
14
+ export declare type CanvasMarkerRenderFunction<T> = (params: CanvasMarkerRendererParams<T>) => void;
15
+ export interface CanvasMarkerProps<T> extends Pick<MarkerOptions, 'zIndex' | 'anchor' | 'visible'> {
16
+ renderer: CanvasMarkerRenderFunction<T>;
17
+ data: CanvasMarkerOption<T>[];
18
+ }
19
+ export declare function CanvasMarker<T>({ renderer, data, ...options }: CanvasMarkerProps<T>): React.ReactPortal;
@@ -0,0 +1,149 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib = require('tslib');
6
+ var React = require('react');
7
+ var MintMapProvider = require('../../provider/MintMapProvider.js');
8
+ var MapDrawables = require('../../../types/MapDrawables.js');
9
+ require('../../../types/MapTypes.js');
10
+ require('../../../types/MapEventTypes.js');
11
+ var reactDom = require('react-dom');
12
+ var canvasUtil = require('./draw/canvas-util.js');
13
+
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
+
16
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
+
18
+ function CanvasMarker(_a) {
19
+ var renderer = _a.renderer,
20
+ data = _a.data,
21
+ options = tslib.__rest(_a, ["renderer", "data"]); //controller
22
+
23
+
24
+ var controller = MintMapProvider.useMintMapController(); //element
25
+
26
+ var divRef = React.useRef(document.createElement('div'));
27
+ var divElement = divRef.current; //canvas container ref
28
+
29
+ var containerRef = React.useRef(null); //canvas ref
30
+
31
+ var canvasRef = React.useRef(null); //canvas context
32
+
33
+ var contextRef = React.useRef(); //marker
34
+
35
+ var markerRef = React.useRef(); //create object
36
+
37
+ React.useEffect(function () {
38
+ divElement.style.width = 'fit-content';
39
+ divElement.style.pointerEvents = 'none';
40
+ return function () {
41
+ if (markerRef.current) {
42
+ controller.clearDrawable(markerRef.current);
43
+ markerRef.current = undefined;
44
+ }
45
+ };
46
+ }, []); //create / update object
47
+
48
+ React.useEffect(function () {
49
+ if (options) {
50
+ var bounds = controller.getCurrBounds();
51
+
52
+ var markerOptions = tslib.__assign({
53
+ position: bounds.nw
54
+ }, options);
55
+
56
+ if (markerRef.current) {
57
+ controller.updateMarker(markerRef.current, markerOptions);
58
+ } else {
59
+ markerRef.current = new MapDrawables.Marker(markerOptions);
60
+ markerRef.current.element = divElement;
61
+ controller.createMarker(markerRef.current); //disablePointerEvent 처리
62
+
63
+ if (divElement.parentElement) {
64
+ divElement.style.pointerEvents = 'none';
65
+ divElement.parentElement.style.pointerEvents = 'none';
66
+ } //z-index 처리
67
+
68
+
69
+ if (options.zIndex !== undefined) {
70
+ controller.setMarkerZIndex(markerRef.current, options.zIndex);
71
+ }
72
+ }
73
+ }
74
+ }, [options]);
75
+
76
+ var handleIdle = function () {
77
+ // 클리어
78
+ canvasUtil.clearRect(canvasRef.current, contextRef.current); // 마커 이동
79
+
80
+ var bounds = controller.getCurrBounds();
81
+
82
+ var markerOptions = tslib.__assign({
83
+ position: bounds.nw
84
+ }, options);
85
+
86
+ markerRef.current && controller.updateMarker(markerRef.current, markerOptions); // 렌더링
87
+
88
+ canvasUtil.renderMain(controller, rendererRef.current, containerRef.current, canvasRef.current, contextRef.current, dataRef.current);
89
+ }; //initialize
90
+
91
+
92
+ React.useEffect(function () {
93
+ var resizeObserver;
94
+
95
+ if (canvasRef.current && containerRef.current) {
96
+ // 리사이즈 처리
97
+ resizeObserver = new ResizeObserver(function () {
98
+ console.log('on resize'); // 클리어
99
+
100
+ canvasUtil.clearRect(canvasRef.current, contextRef.current); // 스케일링
101
+
102
+ canvasRef.current && contextRef.current && canvasUtil.scaleCanvas(controller, canvasRef.current, contextRef.current); // 렌더링
103
+
104
+ canvasUtil.renderMain(controller, rendererRef.current, containerRef.current, canvasRef.current, contextRef.current, dataRef.current);
105
+ });
106
+ resizeObserver.observe(containerRef.current); // IDLE 이벤트 등록
107
+
108
+ controller.addEventListener('IDLE', handleIdle); // 2d 컨텍스트
109
+
110
+ contextRef.current = canvasRef.current.getContext('2d'); // 스케일링
111
+
112
+ if (contextRef.current) {
113
+ canvasUtil.scaleCanvas(controller, canvasRef.current, contextRef.current);
114
+ }
115
+ }
116
+
117
+ return function () {
118
+ resizeObserver && resizeObserver.disconnect();
119
+ controller.removeEventListener('IDLE', handleIdle);
120
+ };
121
+ }, []); // data ref
122
+
123
+ var dataRef = React.useRef(data);
124
+ React.useEffect(function () {
125
+ dataRef.current = data;
126
+ }, [data]); // renderer ref
127
+
128
+ var rendererRef = React.useRef(renderer);
129
+ React.useEffect(function () {
130
+ rendererRef.current = renderer;
131
+ }, [renderer]);
132
+ canvasUtil.renderMain(controller, renderer, containerRef.current, canvasRef.current, contextRef.current, data);
133
+ return reactDom.createPortal(React__default["default"].createElement("div", {
134
+ ref: containerRef,
135
+ style: {
136
+ position: 'absolute',
137
+ width: '100%',
138
+ height: '100%',
139
+ pointerEvents: 'none'
140
+ }
141
+ }, React__default["default"].createElement("canvas", {
142
+ ref: canvasRef,
143
+ style: {
144
+ pointerEvents: 'revert-layer'
145
+ }
146
+ })), divElement);
147
+ }
148
+
149
+ exports.CanvasMarker = CanvasMarker;
@@ -0,0 +1,5 @@
1
+ import { MintMapController } from "../../../MintMapController";
2
+ import { CanvasMarkerOption, CanvasMarkerRenderFunction } from "../CanvasMarker";
3
+ export declare const scaleCanvas: (controller: MintMapController, canvasElement: HTMLCanvasElement, canvasContext: CanvasRenderingContext2D) => void;
4
+ export declare const clearRect: (canvas: HTMLCanvasElement | null, context?: CanvasRenderingContext2D | null) => boolean;
5
+ export declare function renderMain<T>(controller: MintMapController, renderer: CanvasMarkerRenderFunction<T>, container?: HTMLDivElement | null, canvas?: HTMLCanvasElement | null, context?: CanvasRenderingContext2D | null, data?: CanvasMarkerOption<T>[]): void;
@@ -0,0 +1,56 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ //scaling
6
+ var scaleCanvas = function (controller, canvasElement, canvasContext) {
7
+ var devicePixelRatio = window.devicePixelRatio;
8
+ var container = controller.mapDivElement;
9
+ var width = container.offsetWidth;
10
+ var height = container.offsetHeight;
11
+ canvasElement.width = width * devicePixelRatio;
12
+ canvasElement.height = height * devicePixelRatio;
13
+ canvasElement.style.width = "".concat(width, "px");
14
+ canvasElement.style.height = "".concat(height, "px");
15
+ canvasContext.scale(devicePixelRatio, devicePixelRatio);
16
+ }; //clear rect
17
+
18
+ var clearRect = function (canvas, context) {
19
+ if (canvas && context) {
20
+ context.clearRect(canvas.width * -1, canvas.height * -1, canvas.width * 3, canvas.height * 3);
21
+ }
22
+
23
+ return true;
24
+ };
25
+ function renderMain(controller, renderer, container, canvas, context, data) {
26
+ if (!container || !canvas || !context || !data) {
27
+ return;
28
+ } //all clear
29
+
30
+
31
+ clearRect(canvas, context); //draw
32
+
33
+ data.forEach(function (item) {
34
+ if (item.visible === undefined || item.visible) {
35
+ var pos = item.position; //위치 변환
36
+
37
+ pos.offset = controller.positionToOffset(pos);
38
+
39
+ if (item.anchor) {
40
+ pos.offset.x += item.anchor.x;
41
+ pos.offset.y += item.anchor.y;
42
+ } //그리기
43
+
44
+
45
+ renderer({
46
+ context: context,
47
+ offset: pos.offset,
48
+ payload: item.payload
49
+ });
50
+ }
51
+ });
52
+ }
53
+
54
+ exports.clearRect = clearRect;
55
+ exports.renderMain = renderMain;
56
+ exports.scaleCanvas = scaleCanvas;
@@ -0,0 +1 @@
1
+ export * from './CanvasMarker';
@@ -1,3 +1,4 @@
1
1
  export * from './shapes';
2
+ export * from './canvas';
2
3
  export * from './MapBuildingProjection';
3
4
  export * from './MapLoadingComponents';
package/dist/index.es.js CHANGED
@@ -4830,6 +4830,186 @@ function PolygonMarker(_a) {
4830
4830
  }, children)));
4831
4831
  }
4832
4832
 
4833
+ //scaling
4834
+ var scaleCanvas = function (controller, canvasElement, canvasContext) {
4835
+ var devicePixelRatio = window.devicePixelRatio;
4836
+ var container = controller.mapDivElement;
4837
+ var width = container.offsetWidth;
4838
+ var height = container.offsetHeight;
4839
+ canvasElement.width = width * devicePixelRatio;
4840
+ canvasElement.height = height * devicePixelRatio;
4841
+ canvasElement.style.width = "".concat(width, "px");
4842
+ canvasElement.style.height = "".concat(height, "px");
4843
+ canvasContext.scale(devicePixelRatio, devicePixelRatio);
4844
+ }; //clear rect
4845
+
4846
+ var clearRect = function (canvas, context) {
4847
+ if (canvas && context) {
4848
+ context.clearRect(canvas.width * -1, canvas.height * -1, canvas.width * 3, canvas.height * 3);
4849
+ }
4850
+
4851
+ return true;
4852
+ };
4853
+ function renderMain(controller, renderer, container, canvas, context, data) {
4854
+ if (!container || !canvas || !context || !data) {
4855
+ return;
4856
+ } //all clear
4857
+
4858
+
4859
+ clearRect(canvas, context); //draw
4860
+
4861
+ data.forEach(function (item) {
4862
+ if (item.visible === undefined || item.visible) {
4863
+ var pos = item.position; //위치 변환
4864
+
4865
+ pos.offset = controller.positionToOffset(pos);
4866
+
4867
+ if (item.anchor) {
4868
+ pos.offset.x += item.anchor.x;
4869
+ pos.offset.y += item.anchor.y;
4870
+ } //그리기
4871
+
4872
+
4873
+ renderer({
4874
+ context: context,
4875
+ offset: pos.offset,
4876
+ payload: item.payload
4877
+ });
4878
+ }
4879
+ });
4880
+ }
4881
+
4882
+ function CanvasMarker(_a) {
4883
+ var renderer = _a.renderer,
4884
+ data = _a.data,
4885
+ options = __rest(_a, ["renderer", "data"]); //controller
4886
+
4887
+
4888
+ var controller = useMintMapController(); //element
4889
+
4890
+ var divRef = useRef(document.createElement('div'));
4891
+ var divElement = divRef.current; //canvas container ref
4892
+
4893
+ var containerRef = useRef(null); //canvas ref
4894
+
4895
+ var canvasRef = useRef(null); //canvas context
4896
+
4897
+ var contextRef = useRef(); //marker
4898
+
4899
+ var markerRef = useRef(); //create object
4900
+
4901
+ useEffect(function () {
4902
+ divElement.style.width = 'fit-content';
4903
+ divElement.style.pointerEvents = 'none';
4904
+ return function () {
4905
+ if (markerRef.current) {
4906
+ controller.clearDrawable(markerRef.current);
4907
+ markerRef.current = undefined;
4908
+ }
4909
+ };
4910
+ }, []); //create / update object
4911
+
4912
+ useEffect(function () {
4913
+ if (options) {
4914
+ var bounds = controller.getCurrBounds();
4915
+
4916
+ var markerOptions = __assign({
4917
+ position: bounds.nw
4918
+ }, options);
4919
+
4920
+ if (markerRef.current) {
4921
+ controller.updateMarker(markerRef.current, markerOptions);
4922
+ } else {
4923
+ markerRef.current = new Marker(markerOptions);
4924
+ markerRef.current.element = divElement;
4925
+ controller.createMarker(markerRef.current); //disablePointerEvent 처리
4926
+
4927
+ if (divElement.parentElement) {
4928
+ divElement.style.pointerEvents = 'none';
4929
+ divElement.parentElement.style.pointerEvents = 'none';
4930
+ } //z-index 처리
4931
+
4932
+
4933
+ if (options.zIndex !== undefined) {
4934
+ controller.setMarkerZIndex(markerRef.current, options.zIndex);
4935
+ }
4936
+ }
4937
+ }
4938
+ }, [options]);
4939
+
4940
+ var handleIdle = function () {
4941
+ // 클리어
4942
+ clearRect(canvasRef.current, contextRef.current); // 마커 이동
4943
+
4944
+ var bounds = controller.getCurrBounds();
4945
+
4946
+ var markerOptions = __assign({
4947
+ position: bounds.nw
4948
+ }, options);
4949
+
4950
+ markerRef.current && controller.updateMarker(markerRef.current, markerOptions); // 렌더링
4951
+
4952
+ renderMain(controller, rendererRef.current, containerRef.current, canvasRef.current, contextRef.current, dataRef.current);
4953
+ }; //initialize
4954
+
4955
+
4956
+ useEffect(function () {
4957
+ var resizeObserver;
4958
+
4959
+ if (canvasRef.current && containerRef.current) {
4960
+ // 리사이즈 처리
4961
+ resizeObserver = new ResizeObserver(function () {
4962
+ console.log('on resize'); // 클리어
4963
+
4964
+ clearRect(canvasRef.current, contextRef.current); // 스케일링
4965
+
4966
+ canvasRef.current && contextRef.current && scaleCanvas(controller, canvasRef.current, contextRef.current); // 렌더링
4967
+
4968
+ renderMain(controller, rendererRef.current, containerRef.current, canvasRef.current, contextRef.current, dataRef.current);
4969
+ });
4970
+ resizeObserver.observe(containerRef.current); // IDLE 이벤트 등록
4971
+
4972
+ controller.addEventListener('IDLE', handleIdle); // 2d 컨텍스트
4973
+
4974
+ contextRef.current = canvasRef.current.getContext('2d'); // 스케일링
4975
+
4976
+ if (contextRef.current) {
4977
+ scaleCanvas(controller, canvasRef.current, contextRef.current);
4978
+ }
4979
+ }
4980
+
4981
+ return function () {
4982
+ resizeObserver && resizeObserver.disconnect();
4983
+ controller.removeEventListener('IDLE', handleIdle);
4984
+ };
4985
+ }, []); // data ref
4986
+
4987
+ var dataRef = useRef(data);
4988
+ useEffect(function () {
4989
+ dataRef.current = data;
4990
+ }, [data]); // renderer ref
4991
+
4992
+ var rendererRef = useRef(renderer);
4993
+ useEffect(function () {
4994
+ rendererRef.current = renderer;
4995
+ }, [renderer]);
4996
+ renderMain(controller, renderer, containerRef.current, canvasRef.current, contextRef.current, data);
4997
+ return createPortal(React.createElement("div", {
4998
+ ref: containerRef,
4999
+ style: {
5000
+ position: 'absolute',
5001
+ width: '100%',
5002
+ height: '100%',
5003
+ pointerEvents: 'none'
5004
+ }
5005
+ }, React.createElement("canvas", {
5006
+ ref: canvasRef,
5007
+ style: {
5008
+ pointerEvents: 'revert-layer'
5009
+ }
5010
+ })), divElement);
5011
+ }
5012
+
4833
5013
  /**
4834
5014
  * Mint Map 컴포넌트
4835
5015
  *
@@ -5702,4 +5882,4 @@ function MapCanvasMarkerWrapper(_props) {
5702
5882
  return React.createElement(React.Fragment, null);
5703
5883
  }
5704
5884
 
5705
- export { AnimationPlayer, Bounds, CircleMarker, Drawable, GeoCalulator, GoogleMintMapController, MapBuildingProjection, MapCanvasMarkerWrapper, MapCanvasWrapper, MapControlWrapper, MapEvent, MapLoadingWithImage, MapMarkerWrapper, MapPolygonWrapper, MapPolylineWrapper, MapUIEvent, Marker, MintMap, MintMapCanvasRenderer, MintMapController, MintMapCore, MintMapProvider, NaverMintMapController, Offset, PointLoading, Polygon, PolygonCalculator, PolygonMarker, Polyline, Position, SVGCircle, SVGPolygon, SVGRect, Status, getClusterInfo, getMapOfType, log, useMarkerMoving, useMintMapController, waiting };
5885
+ export { AnimationPlayer, Bounds, CanvasMarker, CircleMarker, Drawable, GeoCalulator, GoogleMintMapController, MapBuildingProjection, MapCanvasMarkerWrapper, MapCanvasWrapper, MapControlWrapper, MapEvent, MapLoadingWithImage, MapMarkerWrapper, MapPolygonWrapper, MapPolylineWrapper, MapUIEvent, Marker, MintMap, MintMapCanvasRenderer, MintMapController, MintMapCore, MintMapProvider, NaverMintMapController, Offset, PointLoading, Polygon, PolygonCalculator, PolygonMarker, Polyline, Position, SVGCircle, SVGPolygon, SVGRect, Status, getClusterInfo, getMapOfType, log, useMarkerMoving, useMintMapController, waiting };
package/dist/index.js CHANGED
@@ -11,6 +11,7 @@ var SVGPolygon = require('./components/mint-map/core/advanced/shapes/base/SVGPol
11
11
  var SVGRect = require('./components/mint-map/core/advanced/shapes/base/SVGRect.js');
12
12
  var CircleMarker = require('./components/mint-map/core/advanced/shapes/CircleMarker.js');
13
13
  var PolygonMarker = require('./components/mint-map/core/advanced/shapes/PolygonMarker.js');
14
+ var CanvasMarker = require('./components/mint-map/core/advanced/canvas/CanvasMarker.js');
14
15
  var MapBuildingProjection = require('./components/mint-map/core/advanced/MapBuildingProjection.js');
15
16
  var MapLoadingComponents = require('./components/mint-map/core/advanced/MapLoadingComponents.js');
16
17
  var MarkerMovingHook = require('./components/mint-map/core/hooks/MarkerMovingHook.js');
@@ -46,6 +47,7 @@ exports.SVGPolygon = SVGPolygon.SVGPolygon;
46
47
  exports.SVGRect = SVGRect.SVGRect;
47
48
  exports.CircleMarker = CircleMarker.CircleMarker;
48
49
  exports.PolygonMarker = PolygonMarker.PolygonMarker;
50
+ exports.CanvasMarker = CanvasMarker.CanvasMarker;
49
51
  exports.MapBuildingProjection = MapBuildingProjection.MapBuildingProjection;
50
52
  exports.MapLoadingWithImage = MapLoadingComponents.MapLoadingWithImage;
51
53
  exports.PointLoading = MapLoadingComponents.PointLoading;
package/dist/index.umd.js CHANGED
@@ -4834,6 +4834,186 @@
4834
4834
  }, children)));
4835
4835
  }
4836
4836
 
4837
+ //scaling
4838
+ var scaleCanvas = function (controller, canvasElement, canvasContext) {
4839
+ var devicePixelRatio = window.devicePixelRatio;
4840
+ var container = controller.mapDivElement;
4841
+ var width = container.offsetWidth;
4842
+ var height = container.offsetHeight;
4843
+ canvasElement.width = width * devicePixelRatio;
4844
+ canvasElement.height = height * devicePixelRatio;
4845
+ canvasElement.style.width = "".concat(width, "px");
4846
+ canvasElement.style.height = "".concat(height, "px");
4847
+ canvasContext.scale(devicePixelRatio, devicePixelRatio);
4848
+ }; //clear rect
4849
+
4850
+ var clearRect = function (canvas, context) {
4851
+ if (canvas && context) {
4852
+ context.clearRect(canvas.width * -1, canvas.height * -1, canvas.width * 3, canvas.height * 3);
4853
+ }
4854
+
4855
+ return true;
4856
+ };
4857
+ function renderMain(controller, renderer, container, canvas, context, data) {
4858
+ if (!container || !canvas || !context || !data) {
4859
+ return;
4860
+ } //all clear
4861
+
4862
+
4863
+ clearRect(canvas, context); //draw
4864
+
4865
+ data.forEach(function (item) {
4866
+ if (item.visible === undefined || item.visible) {
4867
+ var pos = item.position; //위치 변환
4868
+
4869
+ pos.offset = controller.positionToOffset(pos);
4870
+
4871
+ if (item.anchor) {
4872
+ pos.offset.x += item.anchor.x;
4873
+ pos.offset.y += item.anchor.y;
4874
+ } //그리기
4875
+
4876
+
4877
+ renderer({
4878
+ context: context,
4879
+ offset: pos.offset,
4880
+ payload: item.payload
4881
+ });
4882
+ }
4883
+ });
4884
+ }
4885
+
4886
+ function CanvasMarker(_a) {
4887
+ var renderer = _a.renderer,
4888
+ data = _a.data,
4889
+ options = tslib.__rest(_a, ["renderer", "data"]); //controller
4890
+
4891
+
4892
+ var controller = useMintMapController(); //element
4893
+
4894
+ var divRef = React.useRef(document.createElement('div'));
4895
+ var divElement = divRef.current; //canvas container ref
4896
+
4897
+ var containerRef = React.useRef(null); //canvas ref
4898
+
4899
+ var canvasRef = React.useRef(null); //canvas context
4900
+
4901
+ var contextRef = React.useRef(); //marker
4902
+
4903
+ var markerRef = React.useRef(); //create object
4904
+
4905
+ React.useEffect(function () {
4906
+ divElement.style.width = 'fit-content';
4907
+ divElement.style.pointerEvents = 'none';
4908
+ return function () {
4909
+ if (markerRef.current) {
4910
+ controller.clearDrawable(markerRef.current);
4911
+ markerRef.current = undefined;
4912
+ }
4913
+ };
4914
+ }, []); //create / update object
4915
+
4916
+ React.useEffect(function () {
4917
+ if (options) {
4918
+ var bounds = controller.getCurrBounds();
4919
+
4920
+ var markerOptions = tslib.__assign({
4921
+ position: bounds.nw
4922
+ }, options);
4923
+
4924
+ if (markerRef.current) {
4925
+ controller.updateMarker(markerRef.current, markerOptions);
4926
+ } else {
4927
+ markerRef.current = new Marker(markerOptions);
4928
+ markerRef.current.element = divElement;
4929
+ controller.createMarker(markerRef.current); //disablePointerEvent 처리
4930
+
4931
+ if (divElement.parentElement) {
4932
+ divElement.style.pointerEvents = 'none';
4933
+ divElement.parentElement.style.pointerEvents = 'none';
4934
+ } //z-index 처리
4935
+
4936
+
4937
+ if (options.zIndex !== undefined) {
4938
+ controller.setMarkerZIndex(markerRef.current, options.zIndex);
4939
+ }
4940
+ }
4941
+ }
4942
+ }, [options]);
4943
+
4944
+ var handleIdle = function () {
4945
+ // 클리어
4946
+ clearRect(canvasRef.current, contextRef.current); // 마커 이동
4947
+
4948
+ var bounds = controller.getCurrBounds();
4949
+
4950
+ var markerOptions = tslib.__assign({
4951
+ position: bounds.nw
4952
+ }, options);
4953
+
4954
+ markerRef.current && controller.updateMarker(markerRef.current, markerOptions); // 렌더링
4955
+
4956
+ renderMain(controller, rendererRef.current, containerRef.current, canvasRef.current, contextRef.current, dataRef.current);
4957
+ }; //initialize
4958
+
4959
+
4960
+ React.useEffect(function () {
4961
+ var resizeObserver;
4962
+
4963
+ if (canvasRef.current && containerRef.current) {
4964
+ // 리사이즈 처리
4965
+ resizeObserver = new ResizeObserver(function () {
4966
+ console.log('on resize'); // 클리어
4967
+
4968
+ clearRect(canvasRef.current, contextRef.current); // 스케일링
4969
+
4970
+ canvasRef.current && contextRef.current && scaleCanvas(controller, canvasRef.current, contextRef.current); // 렌더링
4971
+
4972
+ renderMain(controller, rendererRef.current, containerRef.current, canvasRef.current, contextRef.current, dataRef.current);
4973
+ });
4974
+ resizeObserver.observe(containerRef.current); // IDLE 이벤트 등록
4975
+
4976
+ controller.addEventListener('IDLE', handleIdle); // 2d 컨텍스트
4977
+
4978
+ contextRef.current = canvasRef.current.getContext('2d'); // 스케일링
4979
+
4980
+ if (contextRef.current) {
4981
+ scaleCanvas(controller, canvasRef.current, contextRef.current);
4982
+ }
4983
+ }
4984
+
4985
+ return function () {
4986
+ resizeObserver && resizeObserver.disconnect();
4987
+ controller.removeEventListener('IDLE', handleIdle);
4988
+ };
4989
+ }, []); // data ref
4990
+
4991
+ var dataRef = React.useRef(data);
4992
+ React.useEffect(function () {
4993
+ dataRef.current = data;
4994
+ }, [data]); // renderer ref
4995
+
4996
+ var rendererRef = React.useRef(renderer);
4997
+ React.useEffect(function () {
4998
+ rendererRef.current = renderer;
4999
+ }, [renderer]);
5000
+ renderMain(controller, renderer, containerRef.current, canvasRef.current, contextRef.current, data);
5001
+ return reactDom.createPortal(React__default["default"].createElement("div", {
5002
+ ref: containerRef,
5003
+ style: {
5004
+ position: 'absolute',
5005
+ width: '100%',
5006
+ height: '100%',
5007
+ pointerEvents: 'none'
5008
+ }
5009
+ }, React__default["default"].createElement("canvas", {
5010
+ ref: canvasRef,
5011
+ style: {
5012
+ pointerEvents: 'revert-layer'
5013
+ }
5014
+ })), divElement);
5015
+ }
5016
+
4837
5017
  /**
4838
5018
  * Mint Map 컴포넌트
4839
5019
  *
@@ -5708,6 +5888,7 @@
5708
5888
 
5709
5889
  exports.AnimationPlayer = AnimationPlayer;
5710
5890
  exports.Bounds = Bounds;
5891
+ exports.CanvasMarker = CanvasMarker;
5711
5892
  exports.CircleMarker = CircleMarker;
5712
5893
  exports.Drawable = Drawable;
5713
5894
  exports.GeoCalulator = GeoCalulator;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mint-ui/map",
3
- "version": "0.9.2-beta",
3
+ "version": "0.9.2-beta-test1",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.es.js",
6
6
  "browser": "./dist/index.umd.js",