UNPKG

@davedev42/react-naver-maps

Version:

React Navermaps API integration for modern development.

1 lines 4.4 kB
{"version":3,"sources":["../src/overlays/polyline.tsx"],"sourcesContent":["import { forwardRef, useEffect, useImperativeHandle, useState } 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 kvoKeys = [\n 'path',\n 'strokeWeight',\n 'strokeOpacity',\n 'strokeColor',\n 'strokeStyle',\n 'strokeLineCap',\n 'strokeLineJoin',\n 'clickable',\n 'visible',\n 'zIndex',\n 'startIcon',\n 'startIconSize',\n 'endIcon',\n 'endIconSize',\n] as const;\nconst kvoEvents = kvoKeys.map(key => `${key}_changed`);\nconst uiEvents = [\n 'mousedown',\n 'mouseup',\n 'click',\n 'dblclick',\n 'rightclick',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n] as const;\nconst events = [...uiEvents, ...kvoEvents];\n\ntype PolylineOptions = {\n /**\n * @type naver.maps.ArrayOfCoords | naver.maps.KVOArrayOfCoords | naver.maps.ArrayOfCoordsLiteral\n */\n path: naver.maps.ArrayOfCoords | naver.maps.KVOArrayOfCoords | naver.maps.ArrayOfCoordsLiteral;\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 clickable?: boolean;\n visible?: boolean;\n zIndex?: number;\n startIcon?: naver.maps.PointingIcon;\n startIconSize?: number;\n endIcon?: naver.maps.PointingIcon;\n endIconSize?: number;\n};\n\nexport type Props = PolylineOptions & {\n onPathChanged?: (value: naver.maps.ArrayOfCoords) => void;\n onStrokeWeightChanged?: (value: number) => void;\n onStrokeOpacityChanged?: (value: number) => void;\n onStrokeColorChanged?: (value: string) => void;\n onStrokeStyleChanged?: (value: naver.maps.StrokeStyleType) => void;\n onStrokeLineCapChanged?: (value: naver.maps.StrokeLineCapType) => void;\n onStrokeLineJoinChanged?: (value: naver.maps.StrokeLineJoinType) => void;\n onClickableChanged?: (value: boolean) => void;\n onVisibleChanged?: (value: boolean) => void;\n onZIndexChanged?: (value: number) => void;\n onStartIconChanged?: (value: naver.maps.PointingIcon) => void;\n onStartIconSizeChanged?: (number: string) => void;\n onEndIconChanged?: (value: naver.maps.PointingIcon) => void;\n onEndIconSizeChanged?: (number: string) => void;\n} & UIEventHandlers<typeof uiEvents>;\n\nexport const Polyline = forwardRef<naver.maps.Polyline, Props>(function Polyline(props, ref) {\n const { path } = props;\n const options = {\n path,\n ...Object.fromEntries(kvoKeys.filter(key => key !== 'path').map(key => [key, props[key]])),\n } as naver.maps.PolylineOptions;\n const navermaps = useNavermaps();\n const [polyline] = useState(() => new navermaps.Polyline(options));\n\n useImperativeHandle<naver.maps.Polyline | undefined, naver.maps.Polyline | undefined>(ref, () => polyline);\n\n useEffect(() => {\n const cleanOptions = omitUndefined(options);\n if (Object.keys(cleanOptions).length > 0) {\n polyline.setOptions(cleanOptions as naver.maps.PolylineOptions);\n }\n }, kvoKeys.map(key => options[key]));\n\n return (\n <Overlay element={polyline}>\n <HandleEvents events={events} listeners={props as any} />\n </Overlay>\n );\n});\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,YAAY,WAAW,qBAAqB,gBAAgB;AA8F/D;AAtFN,IAAM,UAAU;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,YAAY,QAAQ,IAAI,SAAO,GAAG,GAAG,UAAU;AACrD,IAAM,WAAW;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,SAAS,CAAC,GAAG,UAAU,GAAG,SAAS;AAuClC,IAAM,WAAW,WAAuC,SAASA,UAAS,OAAO,KAAK;AAC3F,QAAM,EAAE,KAAK,IAAI;AACjB,QAAM,UAAU;AAAA,IACd;AAAA,IACA,GAAG,OAAO,YAAY,QAAQ,OAAO,SAAO,QAAQ,MAAM,EAAE,IAAI,SAAO,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC;AAAA,EAC3F;AACA,QAAM,YAAY,aAAa;AAC/B,QAAM,CAAC,QAAQ,IAAI,SAAS,MAAM,IAAI,UAAU,SAAS,OAAO,CAAC;AAEjE,sBAAsF,KAAK,MAAM,QAAQ;AAEzG,YAAU,MAAM;AACd,UAAM,eAAe,cAAc,OAAO;AAC1C,QAAI,OAAO,KAAK,YAAY,EAAE,SAAS,GAAG;AACxC,eAAS,WAAW,YAA0C;AAAA,IAChE;AAAA,EACF,GAAG,QAAQ,IAAI,SAAO,QAAQ,GAAG,CAAC,CAAC;AAEnC,SACE,oBAAC,WAAQ,SAAS,UAChB,8BAAC,gBAAa,QAAgB,WAAW,OAAc,GACzD;AAEJ,CAAC;","names":["Polyline"]}