react-naver-maps
Version:
React Navermaps API integration for modern development.
1 lines • 3.32 kB
Source Map (JSON)
{"version":3,"sources":["../src/overlays/rectangle.tsx"],"sourcesContent":["import pick from 'lodash.pick';\nimport { useEffect, useState, forwardRef, useImperativeHandle } from 'react';\n\nimport { HandleEvents } from '../helpers/event';\nimport { Overlay } from '../overlay';\nimport type { UIEventHandlers } from '../types/event';\nimport { useNavermaps } from '../use-navermaps';\nimport { omitUndefined } from '../utils/omit-undefined';\n\nconst optionKeys = [\n 'strokeWeight',\n 'strokeOpacity',\n 'strokeColor',\n 'strokeStyle',\n 'strokeLineCap',\n 'strokeLineJoin',\n 'fillColor',\n 'fillOpacity',\n] as const;\nconst kvoKeys = [\n 'bounds',\n 'clickable',\n 'visible',\n 'zIndex',\n] as const;\nconst kvoEvents = kvoKeys.map(key => `${key}_changed`);\nconst uiEvents = [\n 'click',\n 'dblclick',\n 'mousedown',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n] as const;\nconst events = [...uiEvents, ...kvoEvents];\n\ntype RectangleOptions = {\n /**\n * @type naver.maps.Bounds | naver.maps.BoundsLiteral\n */\n bounds: naver.maps.Bounds | naver.maps.BoundsLiteral;\n strokeWeight?: number;\n strokeOpacity?: number;\n strokeColor?: string;\n strokeStyle?: naver.maps.strokeStyleType;\n strokeLineCap?: naver.maps.strokeLineCapType;\n strokeLineJoin?: naver.maps.strokeLineJoinType;\n fillColor?: string;\n fillOpacity?: number;\n clickable?: boolean;\n visible?: boolean;\n zIndex?: number;\n};\n\nexport type Props = RectangleOptions & {\n onBoundsChanged?: (value: naver.maps.Bounds) => void;\n onClickableChanged?: (value: boolean) => void;\n onVisibleChanged?: (value: boolean) => void;\n onZIndexChanged?: (value: number) => void;\n} & UIEventHandlers<typeof uiEvents>;\n\nexport const Rectangle = forwardRef<naver.maps.Rectangle, Props>(function Rectangle(props, ref) {\n const options = pick(props, [...optionKeys, ...kvoKeys]);\n const navermaps = useNavermaps();\n const [rectangle] = useState(() => new navermaps.Rectangle(options));\n\n useImperativeHandle<naver.maps.Rectangle | undefined, naver.maps.Rectangle | undefined>(ref, () => rectangle);\n\n useEffect(() => {\n rectangle.setOptions(omitUndefined(options) as RectangleOptions); // TODO: FIX DefinilyTyped. setOptions의 assign type 은 Partial<Options> 이어야 함\n }, kvoKeys.map(key => options[key]));\n\n return (\n <Overlay element={rectangle}>\n <HandleEvents events={events} listeners={props as any} />\n </Overlay>\n );\n});\n"],"mappings":";;;;;;;;;;;;;;AAAA,OAAO,UAAU;AACjB,SAAS,WAAW,UAAU,YAAY,2BAA2B;AAyE/D;AAjEN,IAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,UAAU;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,YAAY,QAAQ,IAAI,SAAO,GAAG,aAAa;AACrD,IAAM,WAAW;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,SAAS,CAAC,GAAG,UAAU,GAAG,SAAS;AA2BlC,IAAM,YAAY,WAAwC,SAASA,WAAU,OAAO,KAAK;AAC9F,QAAM,UAAU,KAAK,OAAO,CAAC,GAAG,YAAY,GAAG,OAAO,CAAC;AACvD,QAAM,YAAY,aAAa;AAC/B,QAAM,CAAC,SAAS,IAAI,SAAS,MAAM,IAAI,UAAU,UAAU,OAAO,CAAC;AAEnE,sBAAwF,KAAK,MAAM,SAAS;AAE5G,YAAU,MAAM;AACd,cAAU,WAAW,cAAc,OAAO,CAAqB;AAAA,EACjE,GAAG,QAAQ,IAAI,SAAO,QAAQ,IAAI,CAAC;AAEnC,SACE,oBAAC;AAAA,IAAQ,SAAS;AAAA,IAChB,8BAAC;AAAA,MAAa;AAAA,MAAgB,WAAW;AAAA,KAAc;AAAA,GACzD;AAEJ,CAAC;","names":["Rectangle"]}