@sanity/google-maps-input 4.0.1 → 4.1.1
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/LICENSE +1 -1
- package/README.md +5 -4
- package/dist/index.cjs +604 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +54 -0
- package/dist/index.d.ts +5 -25
- package/dist/index.js +428 -888
- package/dist/index.js.map +1 -1
- package/package.json +45 -46
- package/src/diff/GeopointArrayDiff.tsx +9 -3
- package/src/diff/GeopointFieldDiff.tsx +5 -5
- package/src/diff/GeopointMove.tsx +7 -7
- package/src/global-workaround.ts +1 -1
- package/src/index.ts +3 -5
- package/src/input/GeopointInput.styles.tsx +0 -1
- package/src/input/GeopointInput.tsx +151 -145
- package/src/input/GeopointSelect.tsx +57 -56
- package/src/loader/GoogleMapsLoadProxy.tsx +7 -3
- package/src/loader/LoadError.tsx +0 -1
- package/src/map/Arrow.tsx +4 -4
- package/src/map/Map.tsx +5 -5
- package/src/map/Marker.tsx +4 -4
- package/src/map/SearchInput.tsx +3 -3
- package/src/map/util.ts +1 -1
- package/src/plugin.tsx +3 -14
- package/src/types.ts +12 -2
- package/dist/index.cjs.mjs +0 -7
- package/dist/index.esm.js +0 -1042
- package/dist/index.esm.js.map +0 -1
- package/src/@types/css.d.ts +0 -4
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/loader/loadGoogleMapsApi.ts","../src/loader/LoadError.tsx","../src/loader/GoogleMapsLoadProxy.tsx","../src/map/SearchInput.styles.tsx","../src/map/SearchInput.tsx","../src/map/util.ts","../src/map/Map.styles.tsx","../src/map/Map.tsx","../src/map/Marker.tsx","../src/input/GeopointSelect.tsx","../src/input/GeopointInput.styles.tsx","../src/global-workaround.ts","../src/input/GeopointInput.tsx","../src/map/Arrow.tsx","../src/diff/GeopointMove.tsx","../src/diff/GeopointFieldDiff.styles.tsx","../src/diff/GeopointArrayDiff.tsx","../src/diff/GeopointFieldDiff.tsx","../src/plugin.tsx"],"sourcesContent":["declare global {\n // eslint-disable-next-line\n interface Window {\n gm_authFailure: any\n ___sanity_googleMapsApiCallback: any\n }\n}\n\nconst callbackName = '___sanity_googleMapsApiCallback'\nconst authFailureCallbackName = 'gm_authFailure'\n\nexport class AuthError extends Error {}\n\nfunction _loadGoogleMapsApi(config: {locale: string; apiKey: string}) {\n return new Promise<typeof window.google.maps>((resolve, reject) => {\n window[authFailureCallbackName] = () => {\n reject(new AuthError('Authentication error when loading Google Maps API.'))\n }\n\n window[callbackName] = () => {\n resolve(window.google.maps)\n }\n\n const script = document.createElement('script')\n script.onerror = (\n event: Event | string,\n source?: string,\n lineno?: number,\n colno?: number,\n error?: Error,\n ) => reject(new Error(coeerceError(event, error)))\n\n script.src = `https://maps.googleapis.com/maps/api/js?key=${config.apiKey}&libraries=places&callback=${callbackName}&language=${config.locale}`\n document.getElementsByTagName('head')[0].appendChild(script)\n }).finally(() => {\n delete window[callbackName]\n delete window[authFailureCallbackName]\n })\n}\n\nlet memo: Promise<typeof window.google.maps> | null = null\nexport function loadGoogleMapsApi(config: {\n locale: string\n apiKey: string\n}): Promise<typeof window.google.maps> {\n if (memo) {\n return memo\n }\n memo = _loadGoogleMapsApi(config)\n memo.catch(() => {\n memo = null\n })\n return memo\n}\nfunction coeerceError(event: Event | string, error?: Error): string {\n if (error) {\n return error.message\n }\n\n if (typeof event === 'string') {\n return event\n }\n\n return isErrorEvent(event) ? event.message : 'Failed to load Google Maps API'\n}\n\nfunction isErrorEvent(event: unknown): event is ErrorEvent {\n if (typeof event !== 'object' || event === null) {\n return false\n }\n\n if (!('message' in event)) {\n return false\n }\n\n return typeof (event as ErrorEvent).message === 'string'\n}\n","import * as React from 'react'\nimport {Card, Box, Text, Code} from '@sanity/ui'\n\ntype Props = {error: {message?: string}; isAuthError: false} | {isAuthError: true}\n\nexport function LoadError(props: Props) {\n return (\n <Card tone=\"critical\" radius={1}>\n <Box as=\"header\" paddingX={4} paddingTop={4} paddingBottom={1}>\n <Text as=\"h2\" weight=\"bold\">\n Google Maps failed to load\n </Text>\n </Box>\n\n <Box paddingX={4} paddingTop={4} paddingBottom={1}>\n {props.isAuthError ? (\n <AuthError />\n ) : (\n <>\n <Text as=\"h3\">Error details:</Text>\n <pre>\n <Code size={1}>{'error' in props && props.error?.message}</Code>\n </pre>\n </>\n )}\n </Box>\n </Card>\n )\n}\n\nfunction AuthError() {\n return (\n <Text>\n <p>The error appears to be related to authentication</p>\n <p>Common causes include:</p>\n <ul>\n <li>Incorrect API key</li>\n <li>Referer not allowed</li>\n <li>Missing authentication scope</li>\n </ul>\n <p>Check the browser developer tools for more information.</p>\n </Text>\n )\n}\n","import React, {useEffect, useState} from 'react'\nimport {AuthError, loadGoogleMapsApi} from './loadGoogleMapsApi'\nimport {LoadError as LoadErrorView} from './LoadError'\nimport {GoogleMapsInputConfig} from '../index'\n\ninterface LoadProps {\n children: (api: typeof window.google.maps) => React.ReactElement\n config: GoogleMapsInputConfig\n}\n\nconst browserLocale = (typeof window !== 'undefined' && window.navigator.language) || 'en'\n\ntype LoadState =\n | {\n type: 'loading'\n }\n | {\n type: 'loaded'\n api: typeof window.google.maps\n }\n | {\n type: 'error'\n error: {type: 'loadError' | 'authError'; message: string}\n }\n\nfunction useLoadGoogleMapsApi(config: {defaultLocale?: string; apiKey: string}): LoadState {\n const locale = config.defaultLocale || browserLocale || 'en-US'\n\n const [state, setState] = useState<LoadState>({type: 'loading'})\n\n useEffect(() => {\n loadGoogleMapsApi({locale, apiKey: config.apiKey}).then(\n (api) => setState({type: 'loaded', api}),\n (err) =>\n setState({\n type: 'error',\n error: {type: err instanceof AuthError ? 'authError' : 'loadError', message: err.message},\n }),\n )\n }, [locale, config.apiKey])\n return state\n}\n\nexport function GoogleMapsLoadProxy(props: LoadProps) {\n const loadState = useLoadGoogleMapsApi(props.config)\n switch (loadState.type) {\n case 'error':\n return (\n <LoadErrorView error={loadState.error} isAuthError={loadState.error.type === 'authError'} />\n )\n case 'loading':\n return <div>Loading Google Maps API</div>\n case 'loaded':\n return props.children(loadState.api)\n default:\n return null\n }\n}\n","import {styled} from 'styled-components'\n\nexport const WrapperContainer = styled.div`\n position: absolute;\n right: 10px;\n top: 10px;\n width: 220px;\n`\n","import * as React from 'react'\nimport {TextInput} from '@sanity/ui'\nimport {WrapperContainer} from './SearchInput.styles'\n\ninterface Props {\n api: typeof window.google.maps\n map: google.maps.Map\n onChange: (result: google.maps.places.PlaceResult) => void\n}\n\nexport class SearchInput extends React.PureComponent<Props> {\n searchInputRef = React.createRef<HTMLInputElement>()\n autoComplete: google.maps.places.Autocomplete | undefined\n\n handleChange = () => {\n if (!this.autoComplete) {\n return\n }\n\n this.props.onChange(this.autoComplete.getPlace())\n\n if (this.searchInputRef.current) {\n this.searchInputRef.current.value = ''\n }\n }\n\n componentDidMount() {\n const input = this.searchInputRef.current\n if (!input) {\n return\n }\n\n const {api, map} = this.props\n const {Circle, places, event} = api\n const searchBounds = new Circle({center: map.getCenter(), radius: 100}).getBounds()!\n this.autoComplete = new places.Autocomplete(input, {\n bounds: searchBounds,\n types: [], // return all kinds of places\n })\n\n event.addListener(this.autoComplete, 'place_changed', this.handleChange)\n }\n\n render() {\n return (\n <WrapperContainer>\n <TextInput\n name=\"place\"\n ref={this.searchInputRef}\n placeholder=\"Search for place or address\"\n padding={4}\n />\n </WrapperContainer>\n )\n }\n}\n","import {LatLng} from '../types'\n\nexport function latLngAreEqual(\n latLng1: LatLng | google.maps.LatLng,\n latLng2: LatLng | google.maps.LatLng,\n): boolean {\n const lat1 = typeof latLng1.lat === 'function' ? latLng1.lat() : latLng1.lat\n const lng1 = typeof latLng1.lng === 'function' ? latLng1.lng() : latLng1.lng\n\n const lat2 = typeof latLng2.lat === 'function' ? latLng2.lat() : latLng2.lat\n const lng2 = typeof latLng2.lng === 'function' ? latLng2.lng() : latLng2.lng\n\n return lat1 === lat2 && lng1 === lng2\n}\n","import {styled} from 'styled-components'\n\nexport const MapContainer = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n`\n","import React from 'react'\nimport {LatLng} from '../types'\nimport {latLngAreEqual} from './util'\nimport {MapContainer} from './Map.styles'\n\ninterface MapProps {\n api: typeof window.google.maps\n location: LatLng\n bounds?: google.maps.LatLngBounds\n defaultZoom?: number\n mapTypeControl?: boolean\n scrollWheel?: boolean\n controlSize?: number\n onClick?: (event: google.maps.MapMouseEvent) => void\n children?: (map: google.maps.Map) => React.ReactElement\n}\n\ninterface MapState {\n map: google.maps.Map | undefined\n}\n\nexport class GoogleMap extends React.PureComponent<MapProps, MapState> {\n static defaultProps = {\n defaultZoom: 8,\n scrollWheel: true,\n }\n\n state: MapState = {map: undefined}\n clickHandler: google.maps.MapsEventListener | undefined\n mapRef = React.createRef<HTMLDivElement>()\n mapEl: HTMLDivElement | null = null\n\n componentDidMount() {\n this.attachClickHandler()\n }\n\n attachClickHandler = () => {\n const map = this.state.map\n if (!map) {\n return\n }\n\n const {api, onClick} = this.props\n const {event} = api\n\n if (this.clickHandler) {\n this.clickHandler.remove()\n }\n\n if (onClick) {\n this.clickHandler = event.addListener(map, 'click', onClick)\n }\n }\n\n componentDidUpdate(prevProps: MapProps) {\n const map = this.state.map\n if (!map) {\n return\n }\n\n const {onClick, location, bounds} = this.props\n\n if (prevProps.onClick !== onClick) {\n this.attachClickHandler()\n }\n\n if (!latLngAreEqual(prevProps.location, location)) {\n map.panTo(this.getCenter())\n }\n\n if (bounds && (!prevProps.bounds || !bounds.equals(prevProps.bounds))) {\n map.fitBounds(bounds)\n }\n }\n\n componentWillUnmount() {\n if (this.clickHandler) {\n this.clickHandler.remove()\n }\n }\n\n getCenter(): google.maps.LatLng {\n const {location, api} = this.props\n return new api.LatLng(location.lat, location.lng)\n }\n\n constructMap(el: HTMLDivElement) {\n const {defaultZoom, api, mapTypeControl, controlSize, bounds, scrollWheel} = this.props\n\n const map = new api.Map(el, {\n zoom: defaultZoom,\n center: this.getCenter(),\n scrollwheel: scrollWheel,\n streetViewControl: false,\n mapTypeControl,\n controlSize,\n })\n\n if (bounds) {\n map.fitBounds(bounds)\n }\n\n return map\n }\n\n setMapElement = (element: HTMLDivElement | null) => {\n if (element && element !== this.mapEl) {\n const map = this.constructMap(element)\n this.setState({map}, this.attachClickHandler)\n }\n\n this.mapEl = element\n }\n\n render() {\n const {children} = this.props\n const {map} = this.state\n return (\n <>\n <MapContainer ref={this.setMapElement} />\n {children && map ? children(map) : null}\n </>\n )\n }\n}\n","import * as React from 'react'\nimport {LatLng} from '../types'\nimport {latLngAreEqual} from './util'\n\nconst markerPath =\n 'M 3.052 3.7 C 1.56 5.293 0.626 7.612 0.663 9.793 C 0.738 14.352 2.793 16.077 6.078 22.351 C 7.263 25.111 8.497 28.032 9.672 32.871 C 9.835 33.584 9.994 34.246 10.069 34.305 C 10.143 34.362 10.301 33.697 10.465 32.983 C 11.639 28.145 12.875 25.226 14.059 22.466 C 17.344 16.192 19.398 14.466 19.474 9.908 C 19.511 7.727 18.574 5.405 17.083 3.814 C 15.379 1.994 12.809 0.649 10.069 0.593 C 7.328 0.536 4.756 1.882 3.052 3.7 Z'\n\ninterface Props {\n api: typeof window.google.maps\n map: google.maps.Map\n onMove?: (event: google.maps.MapMouseEvent) => void\n onClick?: (event: google.maps.MapMouseEvent) => void\n position: LatLng | google.maps.LatLng\n zIndex?: number\n opacity?: number\n label?: string\n markerRef?: React.MutableRefObject<google.maps.Marker | undefined>\n color?: {background: string; border: string; text: string}\n}\n\nexport class Marker extends React.PureComponent<Props> {\n marker: google.maps.Marker | undefined\n\n eventHandlers: {\n move?: google.maps.MapsEventListener\n click?: google.maps.MapsEventListener\n } = {}\n\n componentDidMount() {\n const {position, api, map, onMove, zIndex, opacity, label, markerRef, color} = this.props\n const {Marker: GMarker} = api\n\n let icon: google.maps.Symbol | undefined\n if (color) {\n icon = {\n path: markerPath,\n fillOpacity: 1,\n fillColor: color.background,\n strokeColor: color.border,\n strokeWeight: 2,\n anchor: new api.Point(10, 35),\n labelOrigin: new api.Point(10, 11),\n }\n }\n\n this.marker = new GMarker({\n draggable: Boolean(onMove),\n position,\n map,\n zIndex,\n opacity,\n label,\n icon,\n })\n\n if (markerRef) {\n markerRef.current = this.marker\n }\n\n this.attachMoveHandler()\n this.attachClickHandler()\n }\n\n componentDidUpdate(prevProps: Props) {\n if (!this.marker) {\n return\n }\n\n const {position, onMove, label, zIndex, opacity, map} = this.props\n\n if (prevProps.onMove !== onMove) {\n this.attachMoveHandler()\n }\n\n if (!latLngAreEqual(prevProps.position, position)) {\n this.marker.setPosition(position)\n }\n\n if (prevProps.label !== label) {\n this.marker.setLabel(label || null)\n }\n\n if (prevProps.zIndex !== zIndex) {\n this.marker.setZIndex(zIndex || null)\n }\n\n if (prevProps.opacity !== opacity) {\n this.marker.setOpacity(opacity || null)\n }\n\n if (prevProps.map !== map) {\n this.marker.setMap(map)\n }\n }\n\n componentWillUnmount() {\n if (this.eventHandlers.move) {\n this.eventHandlers.move.remove()\n }\n\n if (this.marker) {\n this.marker.setMap(null)\n }\n }\n\n attachMoveHandler() {\n const {api, onMove} = this.props\n if (this.eventHandlers.move) {\n this.eventHandlers.move.remove()\n }\n if (this.marker && onMove) {\n this.eventHandlers.move = api.event.addListener(this.marker, 'dragend', onMove)\n }\n }\n\n attachClickHandler() {\n const {api, onClick} = this.props\n if (this.eventHandlers.click) {\n this.eventHandlers.click.remove()\n }\n if (this.marker && onClick) {\n this.eventHandlers.click = api.event.addListener(this.marker, 'click', onClick)\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n render(): any {\n return null\n }\n}\n","import React from 'react'\nimport {SearchInput} from '../map/SearchInput'\nimport {GoogleMap} from '../map/Map'\nimport {Marker} from '../map/Marker'\nimport {LatLng, Geopoint} from '../types'\n\nconst fallbackLatLng: LatLng = {lat: 40.7058254, lng: -74.1180863}\n\ninterface SelectProps {\n api: typeof window.google.maps\n value?: Geopoint\n onChange?: (latLng: google.maps.LatLng) => void\n defaultLocation?: LatLng\n defaultZoom?: number\n}\n\nexport class GeopointSelect extends React.PureComponent<SelectProps> {\n static defaultProps = {\n defaultZoom: 8,\n defaultLocation: {lng: 10.74609, lat: 59.91273},\n }\n\n mapRef = React.createRef<HTMLDivElement>()\n\n getCenter() {\n const {value = {}, defaultLocation = {}} = this.props\n const point: LatLng = {...fallbackLatLng, ...defaultLocation, ...value}\n return point\n }\n\n handlePlaceChanged = (place: google.maps.places.PlaceResult) => {\n if (!place.geometry?.location) {\n return\n }\n\n this.setValue(place.geometry.location)\n }\n\n handleMarkerDragEnd = (event: google.maps.MapMouseEvent) => {\n if (event.latLng) this.setValue(event.latLng)\n }\n\n handleMapClick = (event: google.maps.MapMouseEvent) => {\n if (event.latLng) this.setValue(event.latLng)\n }\n\n setValue(geoPoint: google.maps.LatLng) {\n if (this.props.onChange) {\n this.props.onChange(geoPoint)\n }\n }\n\n render() {\n const {api, defaultZoom, value, onChange} = this.props\n return (\n <GoogleMap\n api={api}\n location={this.getCenter()}\n onClick={this.handleMapClick}\n defaultZoom={defaultZoom}\n >\n {(map) => (\n <>\n <SearchInput api={api} map={map} onChange={this.handlePlaceChanged} />\n {value && (\n <Marker\n api={api}\n map={map}\n position={value}\n onMove={onChange ? this.handleMarkerDragEnd : undefined}\n />\n )}\n </>\n )}\n </GoogleMap>\n )\n }\n}\n","import {styled} from 'styled-components'\n\nexport const PreviewImage = styled.img`\n width: 100%;\n height: auto;\n vertical-align: top;\n`\n\nexport const DialogInnerContainer = styled.div`\n height: 40rem;\n width: 50rem;\n`\n","import {GoogleMapsInputConfig} from './index'\n\nlet config: GoogleMapsInputConfig\n\nexport function getGeoConfig(): GoogleMapsInputConfig {\n return config as GoogleMapsInputConfig\n}\n\nexport function setGeoConfig(newConfig: GoogleMapsInputConfig): void {\n config = newConfig\n}\n","import React from 'react'\nimport {uniqueId} from 'lodash'\nimport {Box, Button, Dialog, Grid, Stack} from '@sanity/ui'\nimport {EditIcon, TrashIcon} from '@sanity/icons'\nimport {ObjectInputProps, set, setIfMissing, unset, ChangeIndicator} from 'sanity'\nimport {GoogleMapsLoadProxy} from '../loader/GoogleMapsLoadProxy'\nimport {Geopoint, GeopointSchemaType, LatLng} from '../types'\nimport {GeopointSelect} from './GeopointSelect'\nimport {DialogInnerContainer, PreviewImage} from './GeopointInput.styles'\nimport {GoogleMapsInputConfig} from '../index'\nimport {getGeoConfig} from '../global-workaround'\n\nconst getStaticImageUrl = (value: LatLng, apiKey: string) => {\n const loc = `${value.lat},${value.lng}`\n const params = {\n key: apiKey,\n center: loc,\n markers: loc,\n zoom: 13,\n scale: 2,\n size: '640x300',\n } as const\n const qs = Object.keys(params).reduce((res, param) => {\n return res.concat(`${param}=${encodeURIComponent(params[param as keyof typeof params])}`)\n }, [] as string[])\n\n return `https://maps.googleapis.com/maps/api/staticmap?${qs.join('&')}`\n}\n\nexport type GeopointInputProps = ObjectInputProps<Geopoint, GeopointSchemaType> & {\n geoConfig: GoogleMapsInputConfig\n}\n\ntype Focusable = any\n\ninterface InputState {\n modalOpen: boolean\n}\n\nclass GeopointInput extends React.PureComponent<GeopointInputProps, InputState> {\n _geopointInputId = uniqueId('GeopointInput')\n\n editButton: Focusable | undefined\n\n constructor(props: GeopointInputProps) {\n super(props)\n\n this.state = {\n modalOpen: false,\n }\n }\n\n setEditButton = (el: Focusable) => {\n this.editButton = el\n }\n\n focus() {\n if (this.editButton) {\n this.editButton.focus()\n }\n }\n\n handleToggleModal = () => {\n this.setState((prevState) => ({modalOpen: !prevState.modalOpen}))\n }\n\n handleCloseModal = () => {\n this.setState({modalOpen: false})\n }\n\n handleChange = (latLng: google.maps.LatLng) => {\n const {schemaType, onChange} = this.props\n onChange([\n setIfMissing({\n _type: schemaType.name,\n }),\n set(latLng.lat(), ['lat']),\n set(latLng.lng(), ['lng']),\n ])\n }\n\n handleClear = () => {\n const {onChange} = this.props\n onChange(unset())\n }\n\n render() {\n const {value, readOnly, geoConfig: config, path, changed, focused} = this.props\n\n const {modalOpen} = this.state\n\n if (!config || !config.apiKey) {\n return (\n <div>\n <p>\n The <a href=\"https://sanity.io/docs/schema-types/geopoint-type\">Geopoint type</a> needs\n a Google Maps API key with access to:\n </p>\n <ul>\n <li>Google Maps JavaScript API</li>\n <li>Google Places API Web Service</li>\n <li>Google Static Maps API</li>\n </ul>\n <p>\n Please enter the API key with access to these services in your googleMapsInput plugin\n config.\n </p>\n </div>\n )\n }\n\n return (\n <Stack space={3}>\n {value && (\n <ChangeIndicator path={path} isChanged={changed} hasFocus={!!focused}>\n <PreviewImage src={getStaticImageUrl(value, config.apiKey)} alt=\"Map location\" />\n </ChangeIndicator>\n )}\n\n <Box>\n <Grid columns={value ? 2 : 1} gap={3}>\n <Button\n mode=\"ghost\"\n icon={value && EditIcon}\n padding={3}\n ref={this.setEditButton}\n text={value ? 'Edit' : 'Set location'}\n onClick={this.handleToggleModal}\n disabled={readOnly}\n />\n\n {value && (\n <Button\n tone=\"critical\"\n icon={TrashIcon}\n padding={3}\n mode=\"ghost\"\n text={'Remove'}\n onClick={this.handleClear}\n disabled={readOnly}\n />\n )}\n </Grid>\n </Box>\n\n {modalOpen && (\n <Dialog\n id={`${this._geopointInputId}_dialog`}\n onClose={this.handleCloseModal}\n header=\"Place the marker on the map\"\n width={1}\n >\n <DialogInnerContainer>\n <GoogleMapsLoadProxy config={getGeoConfig()}>\n {(api) => (\n <GeopointSelect\n api={api}\n value={value || undefined}\n onChange={readOnly ? undefined : this.handleChange}\n defaultLocation={config.defaultLocation}\n defaultZoom={config.defaultZoom}\n />\n )}\n </GoogleMapsLoadProxy>\n </DialogInnerContainer>\n </Dialog>\n )}\n </Stack>\n )\n }\n}\n\nexport default GeopointInput\n","import * as React from 'react'\nimport {LatLng} from '../types'\nimport {latLngAreEqual} from './util'\n\ninterface Props {\n api: typeof window.google.maps\n map: google.maps.Map\n from: LatLng\n to: LatLng\n color?: {background: string; border: string; text: string}\n zIndex?: number\n arrowRef?: React.MutableRefObject<google.maps.Polyline | undefined>\n onClick?: (event: google.maps.MapMouseEvent) => void\n}\n\nexport class Arrow extends React.PureComponent<Props> {\n line: google.maps.Polyline | undefined\n\n eventHandlers: {\n click?: google.maps.MapsEventListener\n } = {}\n\n componentDidMount() {\n const {from, to, api, map, zIndex, onClick, color, arrowRef} = this.props\n const lineSymbol = {\n path: api.SymbolPath.FORWARD_OPEN_ARROW,\n }\n\n this.line = new api.Polyline({\n map,\n zIndex,\n path: [from, to],\n icons: [{icon: lineSymbol, offset: '50%'}],\n strokeOpacity: 0.55,\n strokeColor: color ? color.text : 'black',\n })\n\n if (onClick) {\n this.eventHandlers.click = api.event.addListener(this.line, 'click', onClick)\n }\n\n if (arrowRef) {\n arrowRef.current = this.line\n }\n }\n\n componentDidUpdate(prevProps: Props) {\n if (!this.line) {\n return\n }\n\n const {from, to, map} = this.props\n if (!latLngAreEqual(prevProps.from, from) || !latLngAreEqual(prevProps.to, to)) {\n this.line.setPath([from, to])\n }\n\n if (prevProps.map !== map) {\n this.line.setMap(map)\n }\n }\n\n componentWillUnmount() {\n if (this.line) {\n this.line.setMap(null)\n }\n\n if (this.eventHandlers.click) {\n this.eventHandlers.click.remove()\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n render(): any {\n return null\n }\n}\n","import * as React from 'react'\nimport {useUserColor, ObjectDiff} from 'sanity'\nimport {Marker} from '../map/Marker'\nimport {Arrow} from '../map/Arrow'\nimport {Geopoint} from '../types'\n\ninterface Props {\n api: typeof window.google.maps\n map: google.maps.Map\n diff: ObjectDiff<Geopoint>\n label?: string\n}\n\nexport function GeopointMove({diff, api, map, label}: Props) {\n const {fromValue: from, toValue: to} = diff\n const annotation = diff.isChanged ? diff.annotation : undefined\n const userColor = useUserColor(annotation ? annotation.author : null) || undefined\n const fromRef = React.useRef<google.maps.Marker>()\n const toRef = React.useRef<google.maps.Marker>()\n\n return (\n <>\n {from && (\n <Marker\n api={api}\n map={map}\n position={from}\n zIndex={0}\n opacity={0.55}\n markerRef={fromRef}\n color={userColor}\n />\n )}\n {from && to && <Arrow api={api} map={map} from={from} to={to} zIndex={1} color={userColor} />}\n {to && (\n <Marker\n api={api}\n map={map}\n position={to}\n zIndex={2}\n markerRef={toRef}\n label={label}\n color={userColor}\n />\n )}\n </>\n )\n}\n","import {styled} from 'styled-components'\n\nexport const RootContainer = styled.div`\n position: relative;\n min-height: 200px;\n\n &:empty {\n background-color: var(--card-skeleton-color-from);\n display: table;\n width: 100%;\n }\n\n &:empty:after {\n content: 'Missing/invalid data';\n display: table-cell;\n vertical-align: middle;\n text-align: center;\n position: relative;\n }\n`\n","import {ArrayDiff, ObjectDiff, Diff, DiffProps as GenericDiffProps, DiffComponent} from 'sanity'\nimport {GoogleMapsLoadProxy} from '../loader/GoogleMapsLoadProxy'\nimport {GoogleMap} from '../map/Map'\nimport {Geopoint} from '../types'\nimport {GeopointMove} from './GeopointMove'\nimport {RootContainer} from './GeopointFieldDiff.styles'\nimport {getGeoConfig} from '../global-workaround'\n\nexport type DiffProps = GenericDiffProps<ArrayDiff<Geopoint>>\n\nexport const GeopointArrayDiff: DiffComponent<ArrayDiff<Geopoint>> = ({\n diff,\n schemaType,\n}: DiffProps) => {\n return (\n <RootContainer>\n <GoogleMapsLoadProxy config={getGeoConfig()}>\n {(api) => <GeopointDiff api={api} diff={diff} schemaType={schemaType} />}\n </GoogleMapsLoadProxy>\n </RootContainer>\n )\n}\n\nfunction GeopointDiff({api, diff}: DiffProps & {api: typeof google.maps}) {\n const fromValue = (diff.fromValue || []).filter(hasCoordinates)\n const toValue = (diff.toValue || []).filter(hasCoordinates)\n if (fromValue.length === 0 && toValue.length === 0) {\n return null\n }\n\n const bounds = getBounds(fromValue, toValue, api)\n return (\n <GoogleMap\n api={api}\n location={bounds.getCenter().toJSON()}\n mapTypeControl={false}\n controlSize={20}\n bounds={bounds}\n >\n {(map) => (\n <>\n {diff.items.map(({toIndex, diff: pointDiff}) => {\n if (!isChangeDiff(pointDiff)) {\n return null\n }\n\n return (\n <GeopointMove\n key={toIndex}\n api={api}\n map={map}\n diff={pointDiff}\n label={`${toIndex}`}\n />\n )\n })}\n </>\n )}\n </GoogleMap>\n )\n}\n\nfunction isChangeDiff(diff: Diff): diff is ObjectDiff<Geopoint> {\n return diff.action !== 'unchanged' && diff.type === 'object'\n}\n\nfunction hasCoordinates(point: Partial<Geopoint>): point is Geopoint {\n return typeof point.lat === 'number' && typeof point.lng === 'number'\n}\n\nfunction getBounds(\n fromValue: google.maps.LatLngLiteral[] | null | undefined,\n toValue: google.maps.LatLngLiteral[] | null | undefined,\n api: typeof window.google.maps,\n): google.maps.LatLngBounds {\n const bounds = new api.LatLngBounds()\n const points = [...(fromValue || []), ...(toValue || [])]\n points.forEach((point) => bounds.extend(point))\n return bounds\n}\n","import {\n DiffComponent,\n ObjectDiff,\n DiffProps as GenericDiffProps,\n DiffTooltip,\n getAnnotationAtPath,\n} from 'sanity'\nimport {GoogleMapsLoadProxy} from '../loader/GoogleMapsLoadProxy'\nimport {GoogleMap} from '../map/Map'\nimport {Geopoint} from '../types'\nimport {GeopointMove} from './GeopointMove'\nimport {RootContainer} from './GeopointFieldDiff.styles'\nimport {getGeoConfig} from '../global-workaround'\n\nexport type DiffProps = GenericDiffProps<ObjectDiff<Geopoint>>\n\nexport const GeopointFieldDiff: DiffComponent<ObjectDiff<Geopoint>> = ({\n diff,\n schemaType,\n}: DiffProps) => {\n return (\n <RootContainer>\n <GoogleMapsLoadProxy config={getGeoConfig()}>\n {(api) => <GeopointDiff api={api} diff={diff} schemaType={schemaType} />}\n </GoogleMapsLoadProxy>\n </RootContainer>\n )\n}\n\nfunction GeopointDiff({api, diff}: DiffProps & {api: typeof window.google.maps}) {\n const {fromValue, toValue} = diff\n const annotation =\n getAnnotationAtPath(diff, ['lat']) ||\n getAnnotationAtPath(diff, ['lng']) ||\n getAnnotationAtPath(diff, [])\n\n const center = getCenter(diff, api)\n const bounds = fromValue && toValue ? getBounds(fromValue, toValue, api) : undefined\n\n return (\n <DiffTooltip annotations={annotation ? [annotation] : []} description={getAction(diff)}>\n <div>\n <GoogleMap\n api={api}\n location={center}\n mapTypeControl={false}\n controlSize={20}\n bounds={bounds}\n scrollWheel={false}\n >\n {(map) => <GeopointMove api={api} map={map} diff={diff} />}\n </GoogleMap>\n </div>\n </DiffTooltip>\n )\n}\n\nfunction getBounds(\n fromValue: google.maps.LatLngLiteral,\n toValue: google.maps.LatLngLiteral,\n api: typeof window.google.maps,\n): google.maps.LatLngBounds {\n return new api.LatLngBounds().extend(fromValue).extend(toValue)\n}\n\nfunction getCenter(\n diff: DiffProps['diff'],\n api: typeof window.google.maps,\n): google.maps.LatLngLiteral {\n const {fromValue, toValue} = diff\n if (fromValue && toValue) {\n return getBounds(fromValue, toValue, api).getCenter().toJSON()\n }\n\n if (fromValue) {\n return fromValue\n }\n\n if (toValue) {\n return toValue\n }\n\n throw new Error('Neither a from or a to value present')\n}\n\nfunction getAction(diff: ObjectDiff<Geopoint>) {\n const {fromValue, toValue} = diff\n if (fromValue && toValue) {\n return 'Moved'\n } else if (fromValue) {\n return 'Removed'\n } else if (toValue) {\n return 'Added'\n }\n\n return 'Unchanged'\n}\n","import React from 'react'\nimport {definePlugin, SchemaType} from 'sanity'\nimport GeopointInput, {GeopointInputProps} from './input/GeopointInput'\nimport {setGeoConfig} from './global-workaround'\nimport {GeopointSchemaType} from './types'\n\nexport interface GoogleMapsInputConfig {\n apiKey: string\n defaultZoom?: number\n defaultLocale?: string\n defaultLocation?: {\n lat: number\n lng: number\n }\n}\n\nexport const googleMapsInput = definePlugin<GoogleMapsInputConfig>((config) => {\n setGeoConfig(config)\n return {\n name: 'google-maps-input',\n form: {\n components: {\n input(props) {\n if (isGeopoint(props.schemaType)) {\n const castedProps = props as unknown as Omit<GeopointInputProps, 'geoConfig'>\n return <GeopointInput {...castedProps} geoConfig={config} />\n }\n return props.renderDefault(props)\n },\n },\n },\n }\n})\n\nfunction isGeopoint(schemaType: SchemaType): schemaType is GeopointSchemaType {\n return isType('geopoint', schemaType)\n}\n\nfunction isType(name: string, schema?: SchemaType): boolean {\n if (schema?.name === name) {\n return true\n // eslint-disable-next-line no-negated-condition\n } else if (!schema?.name) {\n return false\n }\n return isType(name, schema?.type)\n}\n"],"names":["callbackName","authFailureCallbackName","AuthError","Error","_loadGoogleMapsApi","config","Promise","resolve","reject","window","google","maps","script","document","createElement","onerror","event","source","lineno","colno","error","coeerceError","src","concat","apiKey","locale","getElementsByTagName","appendChild","finally","memo","loadGoogleMapsApi","catch","message","isErrorEvent","LoadError","props","_a","jsxs","Card","tone","radius","children","jsx","Box","as","paddingX","paddingTop","paddingBottom","Text","weight","isAuthError","Fragment","Code","size","browserLocale","navigator","language","useLoadGoogleMapsApi","defaultLocale","state","setState","useState","type","useEffect","then","api","err","GoogleMapsLoadProxy","loadState","LoadErrorView","WrapperContainer","styled","div","__template","SearchInput","React","PureComponent","constructor","arguments","__publicField","createRef","autoComplete","onChange","getPlace","searchInputRef","current","value","componentDidMount","input","map","Circle","places","searchBounds","center","getCenter","getBounds","Autocomplete","bounds","types","addListener","handleChange","render","TextInput","name","ref","placeholder","padding","latLngAreEqual","latLng1","latLng2","lat1","lat","lng1","lng","lat2","lng2","MapContainer","GoogleMap","onClick","clickHandler","remove","element","mapEl","constructMap","attachClickHandler","componentDidUpdate","prevProps","location","panTo","equals","fitBounds","componentWillUnmount","LatLng","el","defaultZoom","mapTypeControl","controlSize","scrollWheel","Map","zoom","scrollwheel","streetViewControl","setMapElement","markerPath","Marker","position","onMove","zIndex","opacity","label","markerRef","color","GMarker","icon","path","fillOpacity","fillColor","background","strokeColor","border","strokeWeight","anchor","Point","labelOrigin","marker","draggable","Boolean","attachMoveHandler","setPosition","setLabel","setZIndex","setOpacity","setMap","eventHandlers","move","click","fallbackLatLng","GeopointSelect","place","geometry","setValue","latLng","defaultLocation","point","geoPoint","handleMapClick","handlePlaceChanged","handleMarkerDragEnd","_b","PreviewImage","img","DialogInnerContainer","getGeoConfig","setGeoConfig","newConfig","getStaticImageUrl","loc","params","key","markers","scale","qs","Object","keys","reduce","res","param","encodeURIComponent","join","GeopointInput","uniqueId","editButton","prevState","modalOpen","schemaType","setIfMissing","_type","set","unset","focus","readOnly","geoConfig","changed","focused","href","Stack","space","ChangeIndicator","isChanged","hasFocus","alt","Grid","columns","gap","Button","mode","EditIcon","setEditButton","text","handleToggleModal","disabled","TrashIcon","handleClear","Dialog","id","_geopointInputId","onClose","handleCloseModal","header","width","Arrow","from","to","arrowRef","lineSymbol","SymbolPath","FORWARD_OPEN_ARROW","line","Polyline","icons","offset","strokeOpacity","setPath","GeopointMove","diff","_ref","fromValue","toValue","annotation","userColor","useUserColor","author","fromRef","useRef","toRef","RootContainer","GeopointArrayDiff","_ref2","GeopointDiff","GeopointDiff$1","_ref3","filter","hasCoordinates","length","toJSON","items","_ref4","toIndex","pointDiff","isChangeDiff","action","getBounds$1","LatLngBounds","points","forEach","extend","GeopointFieldDiff","_ref5","_ref6","getAnnotationAtPath","DiffTooltip","annotations","description","getAction","googleMapsInput","definePlugin","form","components","isGeopoint","castedProps","renderDefault","isType","schema"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/loader/loadGoogleMapsApi.ts","../src/loader/LoadError.tsx","../src/loader/GoogleMapsLoadProxy.tsx","../src/global-workaround.ts","../src/input/GeopointInput.styles.tsx","../src/map/SearchInput.styles.tsx","../src/map/SearchInput.tsx","../src/map/util.ts","../src/map/Map.styles.tsx","../src/map/Map.tsx","../src/map/Marker.tsx","../src/input/GeopointSelect.tsx","../src/input/GeopointInput.tsx","../src/map/Arrow.tsx","../src/diff/GeopointMove.tsx","../src/diff/GeopointFieldDiff.styles.tsx","../src/diff/GeopointArrayDiff.tsx","../src/diff/GeopointFieldDiff.tsx","../src/plugin.tsx"],"sourcesContent":["declare global {\n // eslint-disable-next-line\n interface Window {\n gm_authFailure: any\n ___sanity_googleMapsApiCallback: any\n }\n}\n\nconst callbackName = '___sanity_googleMapsApiCallback'\nconst authFailureCallbackName = 'gm_authFailure'\n\nexport class AuthError extends Error {}\n\nfunction _loadGoogleMapsApi(config: {locale: string; apiKey: string}) {\n return new Promise<typeof window.google.maps>((resolve, reject) => {\n window[authFailureCallbackName] = () => {\n reject(new AuthError('Authentication error when loading Google Maps API.'))\n }\n\n window[callbackName] = () => {\n resolve(window.google.maps)\n }\n\n const script = document.createElement('script')\n script.onerror = (\n event: Event | string,\n source?: string,\n lineno?: number,\n colno?: number,\n error?: Error,\n ) => reject(new Error(coeerceError(event, error)))\n\n script.src = `https://maps.googleapis.com/maps/api/js?key=${config.apiKey}&libraries=places&callback=${callbackName}&language=${config.locale}`\n document.getElementsByTagName('head')[0].appendChild(script)\n }).finally(() => {\n delete window[callbackName]\n delete window[authFailureCallbackName]\n })\n}\n\nlet memo: Promise<typeof window.google.maps> | null = null\nexport function loadGoogleMapsApi(config: {\n locale: string\n apiKey: string\n}): Promise<typeof window.google.maps> {\n if (memo) {\n return memo\n }\n memo = _loadGoogleMapsApi(config)\n memo.catch(() => {\n memo = null\n })\n return memo\n}\nfunction coeerceError(event: Event | string, error?: Error): string {\n if (error) {\n return error.message\n }\n\n if (typeof event === 'string') {\n return event\n }\n\n return isErrorEvent(event) ? event.message : 'Failed to load Google Maps API'\n}\n\nfunction isErrorEvent(event: unknown): event is ErrorEvent {\n if (typeof event !== 'object' || event === null) {\n return false\n }\n\n if (!('message' in event)) {\n return false\n }\n\n return typeof (event as ErrorEvent).message === 'string'\n}\n","import {Card, Box, Text, Code} from '@sanity/ui'\n\ntype Props = {error: {message?: string}; isAuthError: false} | {isAuthError: true}\n\nexport function LoadError(props: Props) {\n return (\n <Card tone=\"critical\" radius={1}>\n <Box as=\"header\" paddingX={4} paddingTop={4} paddingBottom={1}>\n <Text as=\"h2\" weight=\"bold\">\n Google Maps failed to load\n </Text>\n </Box>\n\n <Box paddingX={4} paddingTop={4} paddingBottom={1}>\n {props.isAuthError ? (\n <AuthError />\n ) : (\n <>\n <Text as=\"h3\">Error details:</Text>\n <pre>\n <Code size={1}>{'error' in props && props.error?.message}</Code>\n </pre>\n </>\n )}\n </Box>\n </Card>\n )\n}\n\nfunction AuthError() {\n return (\n <Text>\n <p>The error appears to be related to authentication</p>\n <p>Common causes include:</p>\n <ul>\n <li>Incorrect API key</li>\n <li>Referer not allowed</li>\n <li>Missing authentication scope</li>\n </ul>\n <p>Check the browser developer tools for more information.</p>\n </Text>\n )\n}\n","import {type ReactElement, useEffect, useState} from 'react'\nimport type {GoogleMapsInputConfig} from '../types'\nimport {AuthError, loadGoogleMapsApi} from './loadGoogleMapsApi'\nimport {LoadError as LoadErrorView} from './LoadError'\n\ninterface LoadProps {\n children: (api: typeof window.google.maps) => ReactElement\n config: GoogleMapsInputConfig\n}\n\nconst browserLocale = (typeof window !== 'undefined' && window.navigator.language) || 'en'\n\ntype LoadState =\n | {\n type: 'loading'\n }\n | {\n type: 'loaded'\n api: typeof window.google.maps\n }\n | {\n type: 'error'\n error: {type: 'loadError' | 'authError'; message: string}\n }\n\nfunction useLoadGoogleMapsApi(config: {defaultLocale?: string; apiKey: string}): LoadState {\n const locale = config.defaultLocale || browserLocale || 'en-US'\n\n const [state, setState] = useState<LoadState>({type: 'loading'})\n\n useEffect(() => {\n if (typeof window === 'undefined') {\n return\n }\n\n loadGoogleMapsApi({locale, apiKey: config.apiKey}).then(\n (api) => setState({type: 'loaded', api}),\n (err) =>\n setState({\n type: 'error',\n error: {type: err instanceof AuthError ? 'authError' : 'loadError', message: err.message},\n }),\n )\n }, [locale, config.apiKey])\n return state\n}\n\nexport function GoogleMapsLoadProxy(props: LoadProps) {\n const loadState = useLoadGoogleMapsApi(props.config)\n switch (loadState.type) {\n case 'error':\n return (\n <LoadErrorView error={loadState.error} isAuthError={loadState.error.type === 'authError'} />\n )\n case 'loading':\n return <div>Loading Google Maps API</div>\n case 'loaded':\n return props.children(loadState.api)\n default:\n return null\n }\n}\n","import type {GoogleMapsInputConfig} from './types'\n\nlet config: GoogleMapsInputConfig\n\nexport function getGeoConfig(): GoogleMapsInputConfig {\n return config as GoogleMapsInputConfig\n}\n\nexport function setGeoConfig(newConfig: GoogleMapsInputConfig): void {\n config = newConfig\n}\n","import {styled} from 'styled-components'\n\nexport const PreviewImage = styled.img`\n width: 100%;\n height: auto;\n vertical-align: top;\n`\n\nexport const DialogInnerContainer = styled.div`\n height: 40rem;\n`\n","import {styled} from 'styled-components'\n\nexport const WrapperContainer = styled.div`\n position: absolute;\n right: 10px;\n top: 10px;\n width: 220px;\n`\n","import {TextInput} from '@sanity/ui'\nimport {WrapperContainer} from './SearchInput.styles'\nimport {createRef, PureComponent} from 'react'\n\ninterface Props {\n api: typeof window.google.maps\n map: google.maps.Map\n onChange: (result: google.maps.places.PlaceResult) => void\n}\n\nexport class SearchInput extends PureComponent<Props> {\n searchInputRef = createRef<HTMLInputElement>()\n autoComplete: google.maps.places.Autocomplete | undefined\n\n handleChange = () => {\n if (!this.autoComplete) {\n return\n }\n\n this.props.onChange(this.autoComplete.getPlace())\n\n if (this.searchInputRef.current) {\n this.searchInputRef.current.value = ''\n }\n }\n\n componentDidMount() {\n const input = this.searchInputRef.current\n if (!input) {\n return\n }\n\n const {api, map} = this.props\n const {Circle, places, event} = api\n const searchBounds = new Circle({center: map.getCenter(), radius: 100}).getBounds()!\n this.autoComplete = new places.Autocomplete(input, {\n bounds: searchBounds,\n types: [], // return all kinds of places\n })\n\n event.addListener(this.autoComplete, 'place_changed', this.handleChange)\n }\n\n render() {\n return (\n <WrapperContainer>\n <TextInput\n name=\"place\"\n ref={this.searchInputRef}\n placeholder=\"Search for place or address\"\n padding={4}\n />\n </WrapperContainer>\n )\n }\n}\n","import type {LatLng} from '../types'\n\nexport function latLngAreEqual(\n latLng1: LatLng | google.maps.LatLng,\n latLng2: LatLng | google.maps.LatLng,\n): boolean {\n const lat1 = typeof latLng1.lat === 'function' ? latLng1.lat() : latLng1.lat\n const lng1 = typeof latLng1.lng === 'function' ? latLng1.lng() : latLng1.lng\n\n const lat2 = typeof latLng2.lat === 'function' ? latLng2.lat() : latLng2.lat\n const lng2 = typeof latLng2.lng === 'function' ? latLng2.lng() : latLng2.lng\n\n return lat1 === lat2 && lng1 === lng2\n}\n","import {styled} from 'styled-components'\n\nexport const MapContainer = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n`\n","import {createRef, PureComponent, type ReactElement} from 'react'\nimport type {LatLng} from '../types'\nimport {latLngAreEqual} from './util'\nimport {MapContainer} from './Map.styles'\n\ninterface MapProps {\n api: typeof window.google.maps\n location: LatLng\n bounds?: google.maps.LatLngBounds\n defaultZoom?: number\n mapTypeControl?: boolean\n scrollWheel?: boolean\n controlSize?: number\n onClick?: (event: google.maps.MapMouseEvent) => void\n children?: (map: google.maps.Map) => ReactElement\n}\n\ninterface MapState {\n map: google.maps.Map | undefined\n}\n\nexport class GoogleMap extends PureComponent<MapProps, MapState> {\n static defaultProps = {\n defaultZoom: 8,\n scrollWheel: true,\n }\n\n state: MapState = {map: undefined}\n clickHandler: google.maps.MapsEventListener | undefined\n mapRef = createRef<HTMLDivElement>()\n mapEl: HTMLDivElement | null = null\n\n componentDidMount() {\n this.attachClickHandler()\n }\n\n attachClickHandler = () => {\n const map = this.state.map\n if (!map) {\n return\n }\n\n const {api, onClick} = this.props\n const {event} = api\n\n if (this.clickHandler) {\n this.clickHandler.remove()\n }\n\n if (onClick) {\n this.clickHandler = event.addListener(map, 'click', onClick)\n }\n }\n\n componentDidUpdate(prevProps: MapProps) {\n const map = this.state.map\n if (!map) {\n return\n }\n\n const {onClick, location, bounds} = this.props\n\n if (prevProps.onClick !== onClick) {\n this.attachClickHandler()\n }\n\n if (!latLngAreEqual(prevProps.location, location)) {\n map.panTo(this.getCenter())\n }\n\n if (bounds && (!prevProps.bounds || !bounds.equals(prevProps.bounds))) {\n map.fitBounds(bounds)\n }\n }\n\n componentWillUnmount() {\n if (this.clickHandler) {\n this.clickHandler.remove()\n }\n }\n\n getCenter(): google.maps.LatLng {\n const {location, api} = this.props\n return new api.LatLng(location.lat, location.lng)\n }\n\n constructMap(el: HTMLDivElement) {\n const {defaultZoom, api, mapTypeControl, controlSize, bounds, scrollWheel} = this.props\n\n const map = new api.Map(el, {\n zoom: defaultZoom,\n center: this.getCenter(),\n scrollwheel: scrollWheel,\n streetViewControl: false,\n mapTypeControl,\n controlSize,\n })\n\n if (bounds) {\n map.fitBounds(bounds)\n }\n\n return map\n }\n\n setMapElement = (element: HTMLDivElement | null) => {\n if (element && element !== this.mapEl) {\n const map = this.constructMap(element)\n this.setState({map}, this.attachClickHandler)\n }\n\n this.mapEl = element\n }\n\n render() {\n const {children} = this.props\n const {map} = this.state\n return (\n <>\n <MapContainer ref={this.setMapElement} />\n {children && map ? children(map) : null}\n </>\n )\n }\n}\n","import {PureComponent, type MutableRefObject} from 'react'\nimport type {LatLng} from '../types'\nimport {latLngAreEqual} from './util'\n\nconst markerPath =\n 'M 3.052 3.7 C 1.56 5.293 0.626 7.612 0.663 9.793 C 0.738 14.352 2.793 16.077 6.078 22.351 C 7.263 25.111 8.497 28.032 9.672 32.871 C 9.835 33.584 9.994 34.246 10.069 34.305 C 10.143 34.362 10.301 33.697 10.465 32.983 C 11.639 28.145 12.875 25.226 14.059 22.466 C 17.344 16.192 19.398 14.466 19.474 9.908 C 19.511 7.727 18.574 5.405 17.083 3.814 C 15.379 1.994 12.809 0.649 10.069 0.593 C 7.328 0.536 4.756 1.882 3.052 3.7 Z'\n\ninterface Props {\n api: typeof window.google.maps\n map: google.maps.Map\n onMove?: (event: google.maps.MapMouseEvent) => void\n onClick?: (event: google.maps.MapMouseEvent) => void\n position: LatLng | google.maps.LatLng\n zIndex?: number\n opacity?: number\n label?: string\n markerRef?: MutableRefObject<google.maps.Marker | undefined>\n color?: {background: string; border: string; text: string}\n}\n\nexport class Marker extends PureComponent<Props> {\n marker: google.maps.Marker | undefined\n\n eventHandlers: {\n move?: google.maps.MapsEventListener\n click?: google.maps.MapsEventListener\n } = {}\n\n componentDidMount() {\n const {position, api, map, onMove, zIndex, opacity, label, markerRef, color} = this.props\n const {Marker: GMarker} = api\n\n let icon: google.maps.Symbol | undefined\n if (color) {\n icon = {\n path: markerPath,\n fillOpacity: 1,\n fillColor: color.background,\n strokeColor: color.border,\n strokeWeight: 2,\n anchor: new api.Point(10, 35),\n labelOrigin: new api.Point(10, 11),\n }\n }\n\n this.marker = new GMarker({\n draggable: Boolean(onMove),\n position,\n map,\n zIndex,\n opacity,\n label,\n icon,\n })\n\n if (markerRef) {\n markerRef.current = this.marker\n }\n\n this.attachMoveHandler()\n this.attachClickHandler()\n }\n\n componentDidUpdate(prevProps: Props) {\n if (!this.marker) {\n return\n }\n\n const {position, onMove, label, zIndex, opacity, map} = this.props\n\n if (prevProps.onMove !== onMove) {\n this.attachMoveHandler()\n }\n\n if (!latLngAreEqual(prevProps.position, position)) {\n this.marker.setPosition(position)\n }\n\n if (prevProps.label !== label) {\n this.marker.setLabel(label || null)\n }\n\n if (prevProps.zIndex !== zIndex) {\n this.marker.setZIndex(zIndex || null)\n }\n\n if (prevProps.opacity !== opacity) {\n this.marker.setOpacity(opacity || null)\n }\n\n if (prevProps.map !== map) {\n this.marker.setMap(map)\n }\n }\n\n componentWillUnmount() {\n if (this.eventHandlers.move) {\n this.eventHandlers.move.remove()\n }\n\n if (this.marker) {\n this.marker.setMap(null)\n }\n }\n\n attachMoveHandler() {\n const {api, onMove} = this.props\n if (this.eventHandlers.move) {\n this.eventHandlers.move.remove()\n }\n if (this.marker && onMove) {\n this.eventHandlers.move = api.event.addListener(this.marker, 'dragend', onMove)\n }\n }\n\n attachClickHandler() {\n const {api, onClick} = this.props\n if (this.eventHandlers.click) {\n this.eventHandlers.click.remove()\n }\n if (this.marker && onClick) {\n this.eventHandlers.click = api.event.addListener(this.marker, 'click', onClick)\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n render(): any {\n return null\n }\n}\n","import {type FC, useCallback} from 'react'\nimport {SearchInput} from '../map/SearchInput'\nimport {GoogleMap} from '../map/Map'\nimport {Marker} from '../map/Marker'\nimport type {LatLng, Geopoint} from '../types'\n\nconst fallbackLatLng: LatLng = {lat: 40.7058254, lng: -74.1180863}\n\ninterface SelectProps {\n api: typeof window.google.maps\n value?: Geopoint\n onChange?: (latLng: google.maps.LatLng) => void\n defaultLocation?: LatLng\n defaultZoom?: number\n}\n\nexport const GeopointSelect: FC<SelectProps> = ({\n api,\n value,\n onChange,\n defaultLocation = {lng: 10.74609, lat: 59.91273},\n defaultZoom = 8,\n}) => {\n const getCenter = useCallback(() => {\n const point: LatLng = {...fallbackLatLng, ...defaultLocation, ...value}\n return point\n }, [value, defaultLocation])\n\n const setValue = useCallback(\n (geoPoint: google.maps.LatLng) => {\n if (onChange) {\n onChange(geoPoint)\n }\n },\n [onChange],\n )\n\n const handlePlaceChanged = useCallback(\n (place: google.maps.places.PlaceResult) => {\n if (!place.geometry?.location) {\n return\n }\n setValue(place.geometry.location)\n },\n [setValue],\n )\n\n const handleMarkerDragEnd = useCallback(\n (event: google.maps.MapMouseEvent) => {\n if (event.latLng) setValue(event.latLng)\n },\n [setValue],\n )\n\n const handleMapClick = useCallback(\n (event: google.maps.MapMouseEvent) => {\n if (event.latLng) setValue(event.latLng)\n },\n [setValue],\n )\n\n return (\n <GoogleMap api={api} location={getCenter()} onClick={handleMapClick} defaultZoom={defaultZoom}>\n {(map) => (\n <>\n <SearchInput api={api} map={map} onChange={handlePlaceChanged} />\n {value && (\n <Marker\n api={api}\n map={map}\n position={value}\n onMove={onChange ? handleMarkerDragEnd : undefined}\n />\n )}\n </>\n )}\n </GoogleMap>\n )\n}\n","import {useCallback, useEffect, useId, useRef, useState} from 'react'\nimport {Box, Button, Dialog, Grid, Stack} from '@sanity/ui'\nimport {EditIcon, TrashIcon} from '@sanity/icons'\nimport {ObjectInputProps, set, setIfMissing, unset, ChangeIndicator, Path} from 'sanity'\nimport {GoogleMapsLoadProxy} from '../loader/GoogleMapsLoadProxy'\nimport type {Geopoint, GeopointSchemaType, GoogleMapsInputConfig, LatLng} from '../types'\nimport {getGeoConfig} from '../global-workaround'\nimport {DialogInnerContainer, PreviewImage} from './GeopointInput.styles'\nimport {GeopointSelect} from './GeopointSelect'\n\nconst EMPTY_PATH: Path = []\n\nconst getStaticImageUrl = (value: LatLng, apiKey: string) => {\n const loc = `${value.lat},${value.lng}`\n const qs = new URLSearchParams({\n key: apiKey,\n center: loc,\n markers: loc,\n zoom: '13',\n scale: '2',\n size: '640x300',\n })\n\n return `https://maps.googleapis.com/maps/api/staticmap?${qs.toString()}`\n}\n\nexport type GeopointInputProps = ObjectInputProps<Geopoint, GeopointSchemaType> & {\n geoConfig: GoogleMapsInputConfig\n}\n\nexport function GeopointInput(props: GeopointInputProps) {\n const {\n changed,\n elementProps,\n focused,\n geoConfig: config,\n onChange,\n onPathFocus,\n path,\n readOnly,\n schemaType,\n value,\n } = props\n\n const {\n id,\n ref: inputRef,\n onBlur: handleBlur,\n onFocus: handleFocus,\n 'aria-describedby': ariaDescribedBy,\n } = elementProps\n\n const schemaTypeName = schemaType.name\n const dialogId = useId()\n const dialogRef = useRef<HTMLDivElement | null>(null)\n const handleFocusButton = useCallback(() => inputRef?.current?.focus(), [inputRef])\n const [modalOpen, setModalOpen] = useState(false)\n\n const handleCloseModal = useCallback(() => {\n if (dialogRef.current) dialogRef.current.blur()\n setModalOpen(false)\n handleFocusButton()\n }, [setModalOpen, handleFocusButton])\n\n const handleToggleModal = useCallback(\n () => setModalOpen((currentState) => !currentState),\n [setModalOpen],\n )\n\n const handleChange = useCallback(\n (latLng: google.maps.LatLng) => {\n onChange([\n setIfMissing({_type: schemaTypeName}),\n set(latLng.lat(), ['lat']),\n set(latLng.lng(), ['lng']),\n ])\n },\n [schemaTypeName, onChange],\n )\n\n const handleClear = useCallback(() => {\n onChange(unset())\n }, [onChange])\n\n useEffect(() => {\n if (modalOpen) {\n onPathFocus(EMPTY_PATH)\n }\n }, [modalOpen, onPathFocus])\n\n if (!config || !config.apiKey) {\n return (\n <div>\n <p>\n The <a href=\"https://sanity.io/docs/schema-types/geopoint-type\">Geopoint type</a> needs a\n Google Maps API key with access to:\n </p>\n <ul>\n <li>Google Maps JavaScript API</li>\n <li>Google Places API Web Service</li>\n <li>Google Static Maps API</li>\n </ul>\n <p>\n Please enter the API key with access to these services in your googleMapsInput plugin\n config.\n </p>\n </div>\n )\n }\n\n return (\n <Stack space={3}>\n {value && (\n <ChangeIndicator path={path} isChanged={changed} hasFocus={!!focused}>\n <PreviewImage\n src={getStaticImageUrl(value, config.apiKey)}\n alt=\"Map location\"\n onClick={handleFocusButton}\n onDoubleClick={handleToggleModal}\n />\n </ChangeIndicator>\n )}\n\n <Box>\n <Grid columns={value ? 2 : 1} gap={3}>\n <Button\n aria-describedby={ariaDescribedBy}\n disabled={readOnly}\n icon={value && EditIcon}\n id={id}\n mode=\"ghost\"\n onClick={handleToggleModal}\n onFocus={handleFocus}\n padding={3}\n ref={inputRef}\n text={value ? 'Edit' : 'Set location'}\n />\n\n {value && (\n <Button\n disabled={readOnly}\n icon={TrashIcon}\n mode=\"ghost\"\n onClick={handleClear}\n padding={3}\n text=\"Remove\"\n tone=\"critical\"\n />\n )}\n </Grid>\n </Box>\n\n {modalOpen && (\n <Dialog\n header=\"Place the marker on the map\"\n id={`${dialogId}_dialog`}\n onBlur={handleBlur}\n onClose={handleCloseModal}\n ref={dialogRef}\n width={1}\n >\n <DialogInnerContainer>\n <GoogleMapsLoadProxy config={getGeoConfig()}>\n {(api) => (\n <GeopointSelect\n api={api}\n value={value || undefined}\n onChange={readOnly ? undefined : handleChange}\n defaultLocation={config.defaultLocation}\n defaultZoom={config.defaultZoom}\n />\n )}\n </GoogleMapsLoadProxy>\n </DialogInnerContainer>\n </Dialog>\n )}\n </Stack>\n )\n}\n","import {type MutableRefObject, PureComponent} from 'react'\nimport type {LatLng} from '../types'\nimport {latLngAreEqual} from './util'\n\ninterface Props {\n api: typeof window.google.maps\n map: google.maps.Map\n from: LatLng\n to: LatLng\n color?: {background: string; border: string; text: string}\n zIndex?: number\n arrowRef?: MutableRefObject<google.maps.Polyline | undefined>\n onClick?: (event: google.maps.MapMouseEvent) => void\n}\n\nexport class Arrow extends PureComponent<Props> {\n line: google.maps.Polyline | undefined\n\n eventHandlers: {\n click?: google.maps.MapsEventListener\n } = {}\n\n componentDidMount() {\n const {from, to, api, map, zIndex, onClick, color, arrowRef} = this.props\n const lineSymbol = {\n path: api.SymbolPath.FORWARD_OPEN_ARROW,\n }\n\n this.line = new api.Polyline({\n map,\n zIndex,\n path: [from, to],\n icons: [{icon: lineSymbol, offset: '50%'}],\n strokeOpacity: 0.55,\n strokeColor: color ? color.text : 'black',\n })\n\n if (onClick) {\n this.eventHandlers.click = api.event.addListener(this.line, 'click', onClick)\n }\n\n if (arrowRef) {\n arrowRef.current = this.line\n }\n }\n\n componentDidUpdate(prevProps: Props) {\n if (!this.line) {\n return\n }\n\n const {from, to, map} = this.props\n if (!latLngAreEqual(prevProps.from, from) || !latLngAreEqual(prevProps.to, to)) {\n this.line.setPath([from, to])\n }\n\n if (prevProps.map !== map) {\n this.line.setMap(map)\n }\n }\n\n componentWillUnmount() {\n if (this.line) {\n this.line.setMap(null)\n }\n\n if (this.eventHandlers.click) {\n this.eventHandlers.click.remove()\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n render(): any {\n return null\n }\n}\n","import {useRef} from 'react'\nimport {useUserColor, type ObjectDiff} from 'sanity'\nimport {Marker} from '../map/Marker'\nimport {Arrow} from '../map/Arrow'\nimport type {Geopoint} from '../types'\n\ninterface GeopointMoveProps {\n api: typeof window.google.maps\n map: google.maps.Map\n diff: ObjectDiff<Geopoint>\n label?: string\n}\n\nexport function GeopointMove({diff, api, map, label}: GeopointMoveProps) {\n const {fromValue: from, toValue: to} = diff\n const annotation = diff.isChanged ? diff.annotation : undefined\n const userColor = useUserColor(annotation ? annotation.author : null) || undefined\n const fromRef = useRef<google.maps.Marker>()\n const toRef = useRef<google.maps.Marker>()\n\n return (\n <>\n {from && (\n <Marker\n api={api}\n map={map}\n position={from}\n zIndex={0}\n opacity={0.55}\n markerRef={fromRef}\n color={userColor}\n />\n )}\n {from && to && <Arrow api={api} map={map} from={from} to={to} zIndex={1} color={userColor} />}\n {to && (\n <Marker\n api={api}\n map={map}\n position={to}\n zIndex={2}\n markerRef={toRef}\n label={label}\n color={userColor}\n />\n )}\n </>\n )\n}\n","import {styled} from 'styled-components'\n\nexport const RootContainer = styled.div`\n position: relative;\n min-height: 200px;\n\n &:empty {\n background-color: var(--card-skeleton-color-from);\n display: table;\n width: 100%;\n }\n\n &:empty:after {\n content: 'Missing/invalid data';\n display: table-cell;\n vertical-align: middle;\n text-align: center;\n position: relative;\n }\n`\n","import type {\n ArrayDiff,\n Diff,\n DiffComponent,\n DiffProps as GenericDiffProps,\n ObjectDiff,\n} from 'sanity'\nimport {GoogleMapsLoadProxy} from '../loader/GoogleMapsLoadProxy'\nimport {GoogleMap} from '../map/Map'\nimport type {Geopoint} from '../types'\nimport {getGeoConfig} from '../global-workaround'\nimport {GeopointMove} from './GeopointMove'\nimport {RootContainer} from './GeopointFieldDiff.styles'\n\nexport type DiffProps = GenericDiffProps<ArrayDiff<Geopoint>>\n\nexport const GeopointArrayDiff: DiffComponent<ArrayDiff<Geopoint>> = ({\n diff,\n schemaType,\n}: DiffProps) => {\n return (\n <RootContainer>\n <GoogleMapsLoadProxy config={getGeoConfig()}>\n {(api) => <GeopointDiff api={api} diff={diff} schemaType={schemaType} />}\n </GoogleMapsLoadProxy>\n </RootContainer>\n )\n}\n\nfunction GeopointDiff({api, diff}: DiffProps & {api: typeof google.maps}) {\n const fromValue = (diff.fromValue || []).filter(hasCoordinates)\n const toValue = (diff.toValue || []).filter(hasCoordinates)\n if (fromValue.length === 0 && toValue.length === 0) {\n return null\n }\n\n const bounds = getBounds(fromValue, toValue, api)\n return (\n <GoogleMap\n api={api}\n location={bounds.getCenter().toJSON()}\n mapTypeControl={false}\n controlSize={20}\n bounds={bounds}\n >\n {(map) => (\n <>\n {diff.items.map(({toIndex, diff: pointDiff}) => {\n if (!isChangeDiff(pointDiff)) {\n return null\n }\n\n return (\n <GeopointMove\n key={toIndex}\n api={api}\n map={map}\n diff={pointDiff}\n label={`${toIndex}`}\n />\n )\n })}\n </>\n )}\n </GoogleMap>\n )\n}\n\nfunction isChangeDiff(diff: Diff): diff is ObjectDiff<Geopoint> {\n return diff.action !== 'unchanged' && diff.type === 'object'\n}\n\nfunction hasCoordinates(point: Partial<Geopoint>): point is Geopoint {\n return typeof point.lat === 'number' && typeof point.lng === 'number'\n}\n\nfunction getBounds(\n fromValue: google.maps.LatLngLiteral[] | null | undefined,\n toValue: google.maps.LatLngLiteral[] | null | undefined,\n api: typeof window.google.maps,\n): google.maps.LatLngBounds {\n const bounds = new api.LatLngBounds()\n const points = [...(fromValue || []), ...(toValue || [])]\n points.forEach((point) => bounds.extend(point))\n return bounds\n}\n","import {\n type DiffComponent,\n type ObjectDiff,\n type DiffProps as GenericDiffProps,\n DiffTooltip,\n getAnnotationAtPath,\n} from 'sanity'\nimport {GoogleMapsLoadProxy} from '../loader/GoogleMapsLoadProxy'\nimport {GoogleMap} from '../map/Map'\nimport type {Geopoint} from '../types'\nimport {getGeoConfig} from '../global-workaround'\nimport {GeopointMove} from './GeopointMove'\nimport {RootContainer} from './GeopointFieldDiff.styles'\n\nexport type DiffProps = GenericDiffProps<ObjectDiff<Geopoint>>\n\nexport const GeopointFieldDiff: DiffComponent<ObjectDiff<Geopoint>> = ({\n diff,\n schemaType,\n}: DiffProps) => {\n return (\n <RootContainer>\n <GoogleMapsLoadProxy config={getGeoConfig()}>\n {(api) => <GeopointDiff api={api} diff={diff} schemaType={schemaType} />}\n </GoogleMapsLoadProxy>\n </RootContainer>\n )\n}\n\nfunction GeopointDiff({api, diff}: DiffProps & {api: typeof window.google.maps}) {\n const {fromValue, toValue} = diff\n const annotation =\n getAnnotationAtPath(diff, ['lat']) ||\n getAnnotationAtPath(diff, ['lng']) ||\n getAnnotationAtPath(diff, [])\n\n const center = getCenter(diff, api)\n const bounds = fromValue && toValue ? getBounds(fromValue, toValue, api) : undefined\n\n return (\n <DiffTooltip annotations={annotation ? [annotation] : []} description={getAction(diff)}>\n <div>\n <GoogleMap\n api={api}\n location={center}\n mapTypeControl={false}\n controlSize={20}\n bounds={bounds}\n scrollWheel={false}\n >\n {(map) => <GeopointMove api={api} map={map} diff={diff} />}\n </GoogleMap>\n </div>\n </DiffTooltip>\n )\n}\n\nfunction getBounds(\n fromValue: google.maps.LatLngLiteral,\n toValue: google.maps.LatLngLiteral,\n api: typeof window.google.maps,\n): google.maps.LatLngBounds {\n return new api.LatLngBounds().extend(fromValue).extend(toValue)\n}\n\nfunction getCenter(\n diff: DiffProps['diff'],\n api: typeof window.google.maps,\n): google.maps.LatLngLiteral {\n const {fromValue, toValue} = diff\n if (fromValue && toValue) {\n return getBounds(fromValue, toValue, api).getCenter().toJSON()\n }\n\n if (fromValue) {\n return fromValue\n }\n\n if (toValue) {\n return toValue\n }\n\n throw new Error('Neither a from or a to value present')\n}\n\nfunction getAction(diff: ObjectDiff<Geopoint>) {\n const {fromValue, toValue} = diff\n if (fromValue && toValue) {\n return 'Moved'\n } else if (fromValue) {\n return 'Removed'\n } else if (toValue) {\n return 'Added'\n }\n\n return 'Unchanged'\n}\n","import {definePlugin, type SchemaType} from 'sanity'\nimport {GeopointInput, type GeopointInputProps} from './input/GeopointInput'\nimport {setGeoConfig} from './global-workaround'\nimport type {GeopointSchemaType, GoogleMapsInputConfig} from './types'\n\nexport const googleMapsInput = definePlugin<GoogleMapsInputConfig>((config) => {\n setGeoConfig(config)\n return {\n name: 'google-maps-input',\n form: {\n components: {\n input(props) {\n if (isGeopoint(props.schemaType)) {\n const castedProps = props as unknown as Omit<GeopointInputProps, 'geoConfig'>\n return <GeopointInput {...castedProps} geoConfig={config} />\n }\n return props.renderDefault(props)\n },\n },\n },\n }\n})\n\nfunction isGeopoint(schemaType: SchemaType): schemaType is GeopointSchemaType {\n return isType('geopoint', schemaType)\n}\n\nfunction isType(name: string, schema?: SchemaType): boolean {\n if (schema?.name === name) {\n return true\n // eslint-disable-next-line no-negated-condition\n } else if (!schema?.name) {\n return false\n }\n return isType(name, schema?.type)\n}\n"],"names":["config","AuthError","LoadErrorView","__publicField","getCenter","__spreadValues","GeopointDiff","getBounds"],"mappings":";;;;;;AAQA,MAAM,eAAe,mCACf,0BAA0B;kBAEzB,cAAwB,MAAM;AAAC;AAEtC,SAAS,mBAAmBA,SAA0C;AACpE,SAAO,IAAI,QAAmC,CAAC,SAAS,WAAW;AAC1D,WAAA,uBAAuB,IAAI,MAAM;AAC/B,aAAA,IAAIC,YAAU,oDAAoD,CAAC;AAAA,IAAA,GAG5E,OAAO,YAAY,IAAI,MAAM;AACnB,cAAA,OAAO,OAAO,IAAI;AAAA,IAC5B;AAEM,UAAA,SAAS,SAAS,cAAc,QAAQ;AAC9C,WAAO,UAAU,CACf,OACA,QACA,QACA,OACA,UACG,OAAO,IAAI,MAAM,aAAa,OAAO,KAAK,CAAC,CAAC,GAEjD,OAAO,MAAM,+CAA+CD,QAAO,MAAM,8BAA8B,YAAY,aAAaA,QAAO,MAAM,IAC7I,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAAE,YAAY,MAAM;AAAA,EAAA,CAC5D,EAAE,QAAQ,MAAM;AACf,WAAO,OAAO,YAAY,GAC1B,OAAO,OAAO,uBAAuB;AAAA,EAAA,CACtC;AACH;AAEA,IAAI,OAAkD;AAC/C,SAAS,kBAAkBA,SAGK;AACrC,SAAI,SAGJ,OAAO,mBAAmBA,OAAM,GAChC,KAAK,MAAM,MAAM;AACR,WAAA;AAAA,EACR,CAAA,GACM;AACT;AACA,SAAS,aAAa,OAAuB,OAAuB;AAC9D,SAAA,QACK,MAAM,UAGX,OAAO,SAAU,WACZ,QAGF,aAAa,KAAK,IAAI,MAAM,UAAU;AAC/C;AAEA,SAAS,aAAa,OAAqC;AACrD,SAAA,OAAO,SAAU,YAAY,UAAU,QAIvC,EAAE,aAAa,SACV,KAGF,OAAQ,MAAqB,WAAY;AAClD;ACxEO,SAAS,UAAU,OAAc;AAJxC,MAAA;AAKE,SACG,qBAAA,MAAA,EAAK,MAAK,YAAW,QAAQ,GAC5B,UAAA;AAAA,IAAA,oBAAC,OAAI,IAAG,UAAS,UAAU,GAAG,YAAY,GAAG,eAAe,GAC1D,UAAA,oBAAC,QAAK,IAAG,MAAK,QAAO,QAAO,uCAE5B,CAAA,GACF;AAAA,IAEC,oBAAA,KAAA,EAAI,UAAU,GAAG,YAAY,GAAG,eAAe,GAC7C,UAAM,MAAA,cACJ,oBAAAC,YAAA,CAAA,CAAU,IAGT,qBAAA,UAAA,EAAA,UAAA;AAAA,MAAC,oBAAA,MAAA,EAAK,IAAG,MAAK,UAAc,kBAAA;AAAA,MAC3B,oBAAA,OAAA,EACC,UAAC,oBAAA,MAAA,EAAK,MAAM,GAAI,UAAW,WAAA,WAAS,KAAM,MAAA,UAAN,OAAa,SAAA,GAAA,SAAA,CAAQ,EAC3D,CAAA;AAAA,IAAA,EAAA,CACF,EAEJ,CAAA;AAAA,EAAA,GACF;AAEJ;AAEA,SAASA,aAAY;AACnB,8BACG,MACC,EAAA,UAAA;AAAA,IAAA,oBAAC,OAAE,UAAiD,oDAAA,CAAA;AAAA,IACpD,oBAAC,OAAE,UAAsB,yBAAA,CAAA;AAAA,yBACxB,MACC,EAAA,UAAA;AAAA,MAAA,oBAAC,QAAG,UAAiB,oBAAA,CAAA;AAAA,MACrB,oBAAC,QAAG,UAAmB,sBAAA,CAAA;AAAA,MACvB,oBAAC,QAAG,UAA4B,+BAAA,CAAA;AAAA,IAAA,GAClC;AAAA,IACA,oBAAC,OAAE,UAAuD,0DAAA,CAAA;AAAA,EAAA,GAC5D;AAEJ;AChCA,MAAM,gBAAiB,OAAO,SAAW,OAAe,OAAO,UAAU,YAAa;AAetF,SAAS,qBAAqBD,SAA6D;AACzF,QAAM,SAASA,QAAO,iBAAiB,iBAAiB,SAElD,CAAC,OAAO,QAAQ,IAAI,SAAoB,EAAC,MAAM,WAAU;AAE/D,SAAA,UAAU,MAAM;AACV,WAAO,SAAW,OAItB,kBAAkB,EAAC,QAAQ,QAAQA,QAAO,OAAO,CAAA,EAAE;AAAA,MACjD,CAAC,QAAQ,SAAS,EAAC,MAAM,UAAU,KAAI;AAAA,MACvC,CAAC,QACC,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO,EAAC,MAAM,eAAeC,cAAY,cAAc,aAAa,SAAS,IAAI,QAAO;AAAA,MACzF,CAAA;AAAA,IACL;AAAA,KACC,CAAC,QAAQD,QAAO,MAAM,CAAC,GACnB;AACT;AAEO,SAAS,oBAAoB,OAAkB;AAC9C,QAAA,YAAY,qBAAqB,MAAM,MAAM;AACnD,UAAQ,UAAU,MAAM;AAAA,IACtB,KAAK;AAED,aAAA,oBAACE,aAAc,OAAO,UAAU,OAAO,aAAa,UAAU,MAAM,SAAS,YAAa,CAAA;AAAA,IAE9F,KAAK;AACI,aAAA,oBAAC,SAAI,UAAuB,0BAAA,CAAA;AAAA,IACrC,KAAK;AACI,aAAA,MAAM,SAAS,UAAU,GAAG;AAAA,IACrC;AACS,aAAA;AAAA,EAAA;AAEb;AC3DA,IAAI;AAEG,SAAS,eAAsC;AAC7C,SAAA;AACT;AAEO,SAAS,aAAa,WAAwC;AAC1D,WAAA;AACX;ACRO,MAAM,eAAe,OAAO;AAAA;AAAA;AAAA;AAAA,GAMtB,uBAAuB,OAAO;AAAA;AAAA,GCN9B,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;;ACQhC,MAAM,oBAAoB,cAAqB;AAAA,EAA/C,cAAA;AAAA,UAAA,GAAA,SAAA,GACLC,gBAAA,MAAA,kBAAiB,WAA4B,GAC7CA,gBAAA,MAAA,cAAA,GAEAA,gBAAA,MAAA,gBAAe,MAAM;AACd,WAAK,iBAIV,KAAK,MAAM,SAAS,KAAK,aAAa,SAAU,CAAA,GAE5C,KAAK,eAAe,YACtB,KAAK,eAAe,QAAQ,QAAQ;AAAA,IAAA,CAExC;AAAA,EAAA;AAAA,EAEA,oBAAoB;AACZ,UAAA,QAAQ,KAAK,eAAe;AAClC,QAAI,CAAC;AACH;AAGI,UAAA,EAAC,KAAK,IAAA,IAAO,KAAK,OAClB,EAAC,QAAQ,QAAQ,UAAS,KAC1B,eAAe,IAAI,OAAO,EAAC,QAAQ,IAAI,aAAa,QAAQ,KAAI,EAAE,UAAU;AAClF,SAAK,eAAe,IAAI,OAAO,aAAa,OAAO;AAAA,MACjD,QAAQ;AAAA,MACR,OAAO,CAAA;AAAA;AAAA,IAAC,CACT,GAED,MAAM,YAAY,KAAK,cAAc,iBAAiB,KAAK,YAAY;AAAA,EAAA;AAAA,EAGzE,SAAS;AACP,+BACG,kBACC,EAAA,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,KAAK,KAAK;AAAA,QACV,aAAY;AAAA,QACZ,SAAS;AAAA,MAAA;AAAA,IAAA,GAEb;AAAA,EAAA;AAGN;ACrDgB,SAAA,eACd,SACA,SACS;AACT,QAAM,OAAO,OAAO,QAAQ,OAAQ,aAAa,QAAQ,QAAQ,QAAQ,KACnE,OAAO,OAAO,QAAQ,OAAQ,aAAa,QAAQ,QAAQ,QAAQ,KAEnE,OAAO,OAAO,QAAQ,OAAQ,aAAa,QAAQ,IAAQ,IAAA,QAAQ,KACnE,OAAO,OAAO,QAAQ,OAAQ,aAAa,QAAQ,IAAA,IAAQ,QAAQ;AAElE,SAAA,SAAS,QAAQ,SAAS;AACnC;ACXO,MAAM,eAAe,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;ACmB5B,MAAM,kBAAkB,cAAkC;AAAA,EAA1D,cAAA;AAAA,UAAA,GAAA,SAAA,GAMaA,gBAAA,MAAA,SAAA,EAAC,KAAK,OAAS,CAAA,GACjCA,gBAAA,MAAA,cAAA,GACAA,gBAAA,MAAA,UAAS,WAA0B,GACJA,gBAAA,MAAA,SAAA,IAAA,GAM/BA,gBAAA,MAAA,sBAAqB,MAAM;AACnB,YAAA,MAAM,KAAK,MAAM;AACvB,UAAI,CAAC;AACH;AAGI,YAAA,EAAC,KAAK,QAAO,IAAI,KAAK,OACtB,EAAC,UAAS;AAEZ,WAAK,gBACP,KAAK,aAAa,OAAO,GAGvB,YACF,KAAK,eAAe,MAAM,YAAY,KAAK,SAAS,OAAO;AAAA,IAAA,CAE/D,GAqDAA,gBAAA,MAAA,iBAAgB,CAAC,YAAmC;AAC9C,UAAA,WAAW,YAAY,KAAK,OAAO;AAC/B,cAAA,MAAM,KAAK,aAAa,OAAO;AACrC,aAAK,SAAS,EAAC,IAAG,GAAG,KAAK,kBAAkB;AAAA,MAAA;AAG9C,WAAK,QAAQ;AAAA,IAAA,CACf;AAAA,EAAA;AAAA,EAhFA,oBAAoB;AAClB,SAAK,mBAAmB;AAAA,EAAA;AAAA,EAqB1B,mBAAmB,WAAqB;AAChC,UAAA,MAAM,KAAK,MAAM;AACvB,QAAI,CAAC;AACH;AAGF,UAAM,EAAC,SAAS,UAAU,WAAU,KAAK;AAErC,cAAU,YAAY,WACxB,KAAK,mBAAmB,GAGrB,eAAe,UAAU,UAAU,QAAQ,KAC9C,IAAI,MAAM,KAAK,UAAW,CAAA,GAGxB,WAAW,CAAC,UAAU,UAAU,CAAC,OAAO,OAAO,UAAU,MAAM,MACjE,IAAI,UAAU,MAAM;AAAA,EAAA;AAAA,EAIxB,uBAAuB;AACjB,SAAK,gBACP,KAAK,aAAa,OAAO;AAAA,EAAA;AAAA,EAI7B,YAAgC;AAC9B,UAAM,EAAC,UAAU,IAAG,IAAI,KAAK;AAC7B,WAAO,IAAI,IAAI,OAAO,SAAS,KAAK,SAAS,GAAG;AAAA,EAAA;AAAA,EAGlD,aAAa,IAAoB;AAC/B,UAAM,EAAC,aAAa,KAAK,gBAAgB,aAAa,QAAQ,YAAe,IAAA,KAAK,OAE5E,MAAM,IAAI,IAAI,IAAI,IAAI;AAAA,MAC1B,MAAM;AAAA,MACN,QAAQ,KAAK,UAAU;AAAA,MACvB,aAAa;AAAA,MACb,mBAAmB;AAAA,MACnB;AAAA,MACA;AAAA,IAAA,CACD;AAED,WAAI,UACF,IAAI,UAAU,MAAM,GAGf;AAAA,EAAA;AAAA,EAYT,SAAS;AACD,UAAA,EAAC,aAAY,KAAK,OAClB,EAAC,IAAA,IAAO,KAAK;AACnB,WAEI,qBAAA,UAAA,EAAA,UAAA;AAAA,MAAC,oBAAA,cAAA,EAAa,KAAK,KAAK,cAAe,CAAA;AAAA,MACtC,YAAY,MAAM,SAAS,GAAG,IAAI;AAAA,IAAA,GACrC;AAAA,EAAA;AAGN;AAtGEA,gBADW,WACJ,gBAAe;AAAA,EACpB,aAAa;AAAA,EACb,aAAa;AACf,CAAA;;ACrBF,MAAM,aACJ;AAeK,MAAM,eAAe,cAAqB;AAAA,EAA1C,cAAA;AAAA,UAAA,GAAA,SAAA,GACLA,gBAAA,MAAA,QAAA,GAEAA,gBAAA,MAAA,iBAGI,EAAC;AAAA,EAAA;AAAA,EAEL,oBAAoB;AAClB,UAAM,EAAC,UAAU,KAAK,KAAK,QAAQ,QAAQ,SAAS,OAAO,WAAW,UAAS,KAAK,OAC9E,EAAC,QAAQ,YAAW;AAEtB,QAAA;AACA,cACF,OAAO;AAAA,MACL,MAAM;AAAA,MACN,aAAa;AAAA,MACb,WAAW,MAAM;AAAA,MACjB,aAAa,MAAM;AAAA,MACnB,cAAc;AAAA,MACd,QAAQ,IAAI,IAAI,MAAM,IAAI,EAAE;AAAA,MAC5B,aAAa,IAAI,IAAI,MAAM,IAAI,EAAE;AAAA,IAIrC,IAAA,KAAK,SAAS,IAAI,QAAQ;AAAA,MACxB,WAAW,CAAQ,CAAA;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAA,GAEG,cACF,UAAU,UAAU,KAAK,SAG3B,KAAK,qBACL,KAAK,mBAAmB;AAAA,EAAA;AAAA,EAG1B,mBAAmB,WAAkB;AACnC,QAAI,CAAC,KAAK;AACR;AAGI,UAAA,EAAC,UAAU,QAAQ,OAAO,QAAQ,SAAS,QAAO,KAAK;AAEzD,cAAU,WAAW,UACvB,KAAK,qBAGF,eAAe,UAAU,UAAU,QAAQ,KAC9C,KAAK,OAAO,YAAY,QAAQ,GAG9B,UAAU,UAAU,SACtB,KAAK,OAAO,SAAS,SAAS,IAAI,GAGhC,UAAU,WAAW,UACvB,KAAK,OAAO,UAAU,UAAU,IAAI,GAGlC,UAAU,YAAY,WACxB,KAAK,OAAO,WAAW,WAAW,IAAI,GAGpC,UAAU,QAAQ,OACpB,KAAK,OAAO,OAAO,GAAG;AAAA,EAAA;AAAA,EAI1B,uBAAuB;AACjB,SAAK,cAAc,QACrB,KAAK,cAAc,KAAK,UAGtB,KAAK,UACP,KAAK,OAAO,OAAO,IAAI;AAAA,EAAA;AAAA,EAI3B,oBAAoB;AAClB,UAAM,EAAC,KAAK,OAAM,IAAI,KAAK;AACvB,SAAK,cAAc,QACrB,KAAK,cAAc,KAAK,OAAA,GAEtB,KAAK,UAAU,WACjB,KAAK,cAAc,OAAO,IAAI,MAAM,YAAY,KAAK,QAAQ,WAAW,MAAM;AAAA,EAAA;AAAA,EAIlF,qBAAqB;AACnB,UAAM,EAAC,KAAK,QAAO,IAAI,KAAK;AACxB,SAAK,cAAc,SACrB,KAAK,cAAc,MAAM,OAAA,GAEvB,KAAK,UAAU,YACjB,KAAK,cAAc,QAAQ,IAAI,MAAM,YAAY,KAAK,QAAQ,SAAS,OAAO;AAAA,EAAA;AAAA;AAAA,EAKlF,SAAc;AACL,WAAA;AAAA,EAAA;AAEX;;;;;;;;;AC3HA,MAAM,iBAAyB,EAAC,KAAK,YAAY,KAAK,YAAW,GAUpD,iBAAkC,CAAC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB,EAAC,KAAK,UAAU,KAAK,SAAQ;AAAA,EAC/C,cAAc;AAChB,MAAM;AACJ,QAAMC,aAAY,YAAY,MACNC,iBAAAA,iBAAAA,iBAAA,CAAA,GAAI,cAAmB,GAAA,eAAA,GAAoB,KAEhE,GAAA,CAAC,OAAO,eAAe,CAAC,GAErB,WAAW;AAAA,IACf,CAAC,aAAiC;AAC5B,kBACF,SAAS,QAAQ;AAAA,IAErB;AAAA,IACA,CAAC,QAAQ;AAAA,KAGL,qBAAqB;AAAA,IACzB,CAAC,UAA0C;AAtC/C,UAAA;AAuCM,OAAK,WAAM,aAAN,QAAA,GAAgB,YAGrB,SAAS,MAAM,SAAS,QAAQ;AAAA,IAClC;AAAA,IACA,CAAC,QAAQ;AAAA,KAGL,sBAAsB;AAAA,IAC1B,CAAC,UAAqC;AAChC,YAAM,UAAQ,SAAS,MAAM,MAAM;AAAA,IACzC;AAAA,IACA,CAAC,QAAQ;AAAA,KAGL,iBAAiB;AAAA,IACrB,CAAC,UAAqC;AAChC,YAAM,UAAQ,SAAS,MAAM,MAAM;AAAA,IACzC;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAGE,SAAA,oBAAC,WAAU,EAAA,KAAU,UAAUD,WAAA,GAAa,SAAS,gBAAgB,aAClE,UAAC,CAAA,QAEE,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAA,oBAAC,aAAY,EAAA,KAAU,KAAU,UAAU,oBAAoB;AAAA,IAC9D,SACC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV,QAAQ,WAAW,sBAAsB;AAAA,MAAA;AAAA,IAAA;AAAA,EAC3C,EAAA,CAEJ,EAEJ,CAAA;AAEJ,GCpEM,aAAmB,CAAA,GAEnB,oBAAoB,CAAC,OAAe,WAAmB;AAC3D,QAAM,MAAM,GAAG,MAAM,GAAG,IAAI,MAAM,GAAG;AAU9B,SAAA,kDATI,IAAI,gBAAgB;AAAA,IAC7B,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,EAAA,CACP,EAE2D,SAAA,CAAU;AACxE;AAMO,SAAS,cAAc,OAA2B;AACjD,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAWJ;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,OAEE;AAAA,IACJ;AAAA,IACA,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,oBAAoB;AAAA,EAClB,IAAA,cAEE,iBAAiB,WAAW,MAC5B,WAAW,SACX,YAAY,OAA8B,IAAI,GAC9C,oBAAoB,YAAY,MAAG;AAvD3C,QAAA;AAuD8C,YAAA,KAAA,YAAA,OAAA,SAAA,SAAU,YAAV,OAAmB,SAAA,GAAA,MAAA;AAAA,EAAA,GAAS,CAAC,QAAQ,CAAC,GAC5E,CAAC,WAAW,YAAY,IAAI,SAAS,EAAK,GAE1C,mBAAmB,YAAY,MAAM;AACrC,cAAU,WAAS,UAAU,QAAQ,KACzC,GAAA,aAAa,EAAK,GAClB,kBAAkB;AAAA,KACjB,CAAC,cAAc,iBAAiB,CAAC,GAE9B,oBAAoB;AAAA,IACxB,MAAM,aAAa,CAAC,iBAAiB,CAAC,YAAY;AAAA,IAClD,CAAC,YAAY;AAAA,KAGT,eAAe;AAAA,IACnB,CAAC,WAA+B;AACrB,eAAA;AAAA,QACP,aAAa,EAAC,OAAO,gBAAe;AAAA,QACpC,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC;AAAA,QACzB,IAAI,OAAO,IAAO,GAAA,CAAC,KAAK,CAAC;AAAA,MAAA,CAC1B;AAAA,IACH;AAAA,IACA,CAAC,gBAAgB,QAAQ;AAAA,EAAA,GAGrB,cAAc,YAAY,MAAM;AACpC,aAAS,OAAO;AAAA,EAAA,GACf,CAAC,QAAQ,CAAC;AAQb,SANA,UAAU,MAAM;AACV,iBACF,YAAY,UAAU;AAAA,EAEvB,GAAA,CAAC,WAAW,WAAW,CAAC,GAEvB,CAACA,WAAU,CAACA,QAAO,SAEnB,qBAAC,OACC,EAAA,UAAA;AAAA,IAAA,qBAAC,KAAE,EAAA,UAAA;AAAA,MAAA;AAAA,MACI,oBAAA,KAAA,EAAE,MAAK,qDAAoD,UAAa,iBAAA;AAAA,MAAI;AAAA,IAAA,GAEnF;AAAA,yBACC,MACC,EAAA,UAAA;AAAA,MAAA,oBAAC,QAAG,UAA0B,6BAAA,CAAA;AAAA,MAC9B,oBAAC,QAAG,UAA6B,gCAAA,CAAA;AAAA,MACjC,oBAAC,QAAG,UAAsB,yBAAA,CAAA;AAAA,IAAA,GAC5B;AAAA,IACA,oBAAC,OAAE,UAGH,gGAAA,CAAA;AAAA,EAAA,EACF,CAAA,IAKF,qBAAC,OAAM,EAAA,OAAO,GACX,UAAA;AAAA,IACC,SAAA,oBAAC,mBAAgB,MAAY,WAAW,SAAS,UAAU,CAAC,CAAC,SAC3D,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAK,kBAAkB,OAAOA,QAAO,MAAM;AAAA,QAC3C,KAAI;AAAA,QACJ,SAAS;AAAA,QACT,eAAe;AAAA,MAAA;AAAA,IAAA,GAEnB;AAAA,IAGF,oBAAC,OACC,UAAC,qBAAA,MAAA,EAAK,SAAS,QAAQ,IAAI,GAAG,KAAK,GACjC,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,oBAAkB;AAAA,UAClB,UAAU;AAAA,UACV,MAAM,SAAS;AAAA,UACf;AAAA,UACA,MAAK;AAAA,UACL,SAAS;AAAA,UACT,SAAS;AAAA,UACT,SAAS;AAAA,UACT,KAAK;AAAA,UACL,MAAM,QAAQ,SAAS;AAAA,QAAA;AAAA,MACzB;AAAA,MAEC,SACC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,UAAU;AAAA,UACV,MAAM;AAAA,UACN,MAAK;AAAA,UACL,SAAS;AAAA,UACT,SAAS;AAAA,UACT,MAAK;AAAA,UACL,MAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACP,EAAA,CAEJ,EACF,CAAA;AAAA,IAEC,aACC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,QAAO;AAAA,QACP,IAAI,GAAG,QAAQ;AAAA,QACf,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,KAAK;AAAA,QACL,OAAO;AAAA,QAEP,UAAA,oBAAC,wBACC,UAAC,oBAAA,qBAAA,EAAoB,QAAQ,aAAa,GACvC,WAAC,QACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,OAAO,SAAS;AAAA,YAChB,UAAU,WAAW,SAAY;AAAA,YACjC,iBAAiBA,QAAO;AAAA,YACxB,aAAaA,QAAO;AAAA,UAAA;AAAA,WAG1B,EACF,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GAEJ;AAEJ;;ACnKO,MAAM,cAAc,cAAqB;AAAA,EAAzC,cAAA;AAAA,UAAA,GAAA,SAAA,GACL,cAAA,MAAA,MAAA,GAEA,cAAA,MAAA,iBAEI,EAAC;AAAA,EAAA;AAAA,EAEL,oBAAoB;AAClB,UAAM,EAAC,MAAM,IAAI,KAAK,KAAK,QAAQ,SAAS,OAAO,SAAQ,IAAI,KAAK,OAC9D,aAAa;AAAA,MACjB,MAAM,IAAI,WAAW;AAAA,IACvB;AAEK,SAAA,OAAO,IAAI,IAAI,SAAS;AAAA,MAC3B;AAAA,MACA;AAAA,MACA,MAAM,CAAC,MAAM,EAAE;AAAA,MACf,OAAO,CAAC,EAAC,MAAM,YAAY,QAAQ,OAAM;AAAA,MACzC,eAAe;AAAA,MACf,aAAa,QAAQ,MAAM,OAAO;AAAA,IAAA,CACnC,GAEG,YACF,KAAK,cAAc,QAAQ,IAAI,MAAM,YAAY,KAAK,MAAM,SAAS,OAAO,IAG1E,aACF,SAAS,UAAU,KAAK;AAAA,EAAA;AAAA,EAI5B,mBAAmB,WAAkB;AACnC,QAAI,CAAC,KAAK;AACR;AAGF,UAAM,EAAC,MAAM,IAAI,QAAO,KAAK;AACzB,KAAA,CAAC,eAAe,UAAU,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,IAAI,EAAE,MAC3E,KAAK,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC,GAG1B,UAAU,QAAQ,OACpB,KAAK,KAAK,OAAO,GAAG;AAAA,EAAA;AAAA,EAIxB,uBAAuB;AACjB,SAAK,QACP,KAAK,KAAK,OAAO,IAAI,GAGnB,KAAK,cAAc,SACrB,KAAK,cAAc,MAAM,OAAO;AAAA,EAAA;AAAA;AAAA,EAKpC,SAAc;AACL,WAAA;AAAA,EAAA;AAEX;AC9DO,SAAS,aAAa,EAAC,MAAM,KAAK,KAAK,SAA2B;AACjE,QAAA,EAAC,WAAW,MAAM,SAAS,OAAM,MACjC,aAAa,KAAK,YAAY,KAAK,aAAa,QAChD,YAAY,aAAa,aAAa,WAAW,SAAS,IAAI,KAAK,QACnE,UAAU,UACV,QAAQ,OAA2B;AAEzC,SAEK,qBAAA,UAAA,EAAA,UAAA;AAAA,IACC,QAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,WAAW;AAAA,QACX,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAED,QAAQ,MAAM,oBAAC,OAAM,EAAA,KAAU,KAAU,MAAY,IAAQ,QAAQ,GAAG,OAAO,UAAW,CAAA;AAAA,IAC1F,MACC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,WAAW;AAAA,QACX;AAAA,QACA,OAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EACT,GAEJ;AAEJ;AC7CO,MAAM,gBAAgB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCcvB,oBAAwD,CAAC;AAAA,EACpE;AAAA,EACA;AACF,MAEK,oBAAA,eAAA,EACC,UAAC,oBAAA,qBAAA,EAAoB,QAAQ,aAAa,GACvC,UAAC,CAAA,4BAASM,gBAAa,EAAA,KAAU,MAAY,YAAwB,GACxE,EACF,CAAA;AAIJ,SAASA,eAAa,EAAC,KAAK,QAA8C;AACxE,QAAM,aAAa,KAAK,aAAa,CAAA,GAAI,OAAO,cAAc,GACxD,WAAW,KAAK,WAAW,CAAA,GAAI,OAAO,cAAc;AAC1D,MAAI,UAAU,WAAW,KAAK,QAAQ,WAAW;AACxC,WAAA;AAGT,QAAM,SAASC,YAAU,WAAW,SAAS,GAAG;AAE9C,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,UAAU,OAAO,UAAU,EAAE,OAAO;AAAA,MACpC,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb;AAAA,MAEC,UAAC,CAAA,QAEG,oBAAA,UAAA,EAAA,UAAA,KAAK,MAAM,IAAI,CAAC,EAAC,SAAS,MAAM,UAC1B,MAAA,aAAa,SAAS,IAKzB;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN,OAAO,GAAG,OAAO;AAAA,QAAA;AAAA,QAJZ;AAAA,MAKP,IAVO,IAYV,EACH,CAAA;AAAA,IAAA;AAAA,EAEJ;AAEJ;AAEA,SAAS,aAAa,MAA0C;AAC9D,SAAO,KAAK,WAAW,eAAe,KAAK,SAAS;AACtD;AAEA,SAAS,eAAe,OAA6C;AACnE,SAAO,OAAO,MAAM,OAAQ,YAAY,OAAO,MAAM,OAAQ;AAC/D;AAEA,SAASA,YACP,WACA,SACA,KAC0B;AACpB,QAAA,SAAS,IAAI,IAAI,aAAa;AAEpC,SADe,CAAC,GAAI,aAAa,CAAC,GAAI,GAAI,WAAW,CAAA,CAAG,EACjD,QAAQ,CAAC,UAAU,OAAO,OAAO,KAAK,CAAC,GACvC;AACT;ACrEO,MAAM,oBAAyD,CAAC;AAAA,EACrE;AAAA,EACA;AACF,MAEK,oBAAA,eAAA,EACC,UAAC,oBAAA,qBAAA,EAAoB,QAAQ,aAAa,GACvC,UAAC,CAAA,4BAAS,cAAa,EAAA,KAAU,MAAY,YAAwB,GACxE,EACF,CAAA;AAIJ,SAAS,aAAa,EAAC,KAAK,QAAqD;AAC/E,QAAM,EAAC,WAAW,QAAO,IAAI,MACvB,aACJ,oBAAoB,MAAM,CAAC,KAAK,CAAC,KACjC,oBAAoB,MAAM,CAAC,KAAK,CAAC,KACjC,oBAAoB,MAAM,CAAA,CAAE,GAExB,SAAS,UAAU,MAAM,GAAG,GAC5B,SAAS,aAAa,UAAU,UAAU,WAAW,SAAS,GAAG,IAAI;AAE3E,SACG,oBAAA,aAAA,EAAY,aAAa,aAAa,CAAC,UAAU,IAAI,CAAC,GAAG,aAAa,UAAU,IAAI,GACnF,8BAAC,OACC,EAAA,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb;AAAA,MACA,aAAa;AAAA,MAEZ,WAAC,QAAQ,oBAAC,cAAa,EAAA,KAAU,KAAU,KAAY,CAAA;AAAA,IAAA;AAAA,KAE5D,EACF,CAAA;AAEJ;AAEA,SAAS,UACP,WACA,SACA,KAC0B;AACnB,SAAA,IAAI,IAAI,aAAa,EAAE,OAAO,SAAS,EAAE,OAAO,OAAO;AAChE;AAEA,SAAS,UACP,MACA,KAC2B;AACrB,QAAA,EAAC,WAAW,QAAA,IAAW;AAC7B,MAAI,aAAa;AACf,WAAO,UAAU,WAAW,SAAS,GAAG,EAAE,YAAY,OAAO;AAG3D,MAAA;AACK,WAAA;AAGL,MAAA;AACK,WAAA;AAGH,QAAA,IAAI,MAAM,sCAAsC;AACxD;AAEA,SAAS,UAAU,MAA4B;AACvC,QAAA,EAAC,WAAW,QAAA,IAAW;AAC7B,SAAI,aAAa,UACR,UACE,YACF,YACE,UACF,UAGF;AACT;;;;;;;;;AC3FO,MAAM,kBAAkB,aAAoC,CAACP,aAClE,aAAaA,OAAM,GACZ;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AAAA,IACJ,YAAY;AAAA,MACV,MAAM,OAAO;AACX,eAAI,WAAW,MAAM,UAAU,IAErB,oBAAA,eAAA,cAAA,eAAA,CAAA,GADY,KACZ,GAAA,EAA+B,WAAWA,QAAA,CAAA,CAAQ,IAErD,MAAM,cAAc,KAAK;AAAA,MAAA;AAAA,IAClC;AAAA,EACF;AAEJ,EACD;AAED,SAAS,WAAW,YAA0D;AACrE,SAAA,OAAO,YAAY,UAAU;AACtC;AAEA,SAAS,OAAO,MAAc,QAA8B;AACtD,UAAA,UAAA,OAAA,SAAA,OAAQ,UAAS,OACZ,KAEG,UAAA,QAAA,OAAQ,OAGb,OAAO,MAAM,UAAQ,OAAA,SAAA,OAAA,IAAI,IAFvB;AAGX;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sanity/google-maps-input",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.1.1",
|
|
4
4
|
"description": "Sanity plugin providing input handlers for geo-related input types using Google Maps",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sanity",
|
|
@@ -21,24 +21,21 @@
|
|
|
21
21
|
},
|
|
22
22
|
"license": "MIT",
|
|
23
23
|
"author": "Sanity.io <hello@sanity.io>",
|
|
24
|
+
"type": "module",
|
|
25
|
+
"sideEffects": false,
|
|
24
26
|
"exports": {
|
|
25
27
|
".": {
|
|
26
|
-
"types": "./dist/index.d.ts",
|
|
27
28
|
"source": "./src/index.ts",
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
"import": "./dist/index.cjs.mjs"
|
|
32
|
-
},
|
|
33
|
-
"import": "./dist/index.esm.js",
|
|
34
|
-
"default": "./dist/index.esm.js"
|
|
29
|
+
"import": "./dist/index.js",
|
|
30
|
+
"require": "./dist/index.cjs",
|
|
31
|
+
"default": "./dist/index.js"
|
|
35
32
|
},
|
|
36
33
|
"./package.json": "./package.json"
|
|
37
34
|
},
|
|
38
|
-
"main": "./dist/index.
|
|
39
|
-
"module": "./dist/index.
|
|
40
|
-
"source": "./src/index.ts",
|
|
35
|
+
"main": "./dist/index.cjs",
|
|
36
|
+
"module": "./dist/index.js",
|
|
41
37
|
"types": "./dist/index.d.ts",
|
|
38
|
+
"browserslist": "extends @sanity/browserslist-config",
|
|
42
39
|
"files": [
|
|
43
40
|
"dist",
|
|
44
41
|
"sanity.json",
|
|
@@ -46,58 +43,57 @@
|
|
|
46
43
|
"v2-incompatible.js"
|
|
47
44
|
],
|
|
48
45
|
"scripts": {
|
|
49
|
-
"build": "
|
|
46
|
+
"build": "plugin-kit verify-package --silent && pkg-utils build --strict --check --clean",
|
|
47
|
+
"build:studio": "sanity build studio -y",
|
|
48
|
+
"dev": "sanity dev",
|
|
49
|
+
"prepublishOnly": "npm run build",
|
|
50
50
|
"clean": "rimraf dist",
|
|
51
51
|
"format": "prettier --write --cache --ignore-unknown .",
|
|
52
52
|
"link-watch": "plugin-kit link-watch",
|
|
53
53
|
"lint": "eslint .",
|
|
54
|
-
"prepublishOnly": "run-s build",
|
|
55
54
|
"watch": "pkg-utils watch --strict",
|
|
56
55
|
"prepare": "husky install"
|
|
57
56
|
},
|
|
58
57
|
"dependencies": {
|
|
59
|
-
"@sanity/icons": "^
|
|
58
|
+
"@sanity/icons": "^3.5.2",
|
|
60
59
|
"@sanity/incompatible-plugin": "^1.0.4",
|
|
61
|
-
"@sanity/ui": "^2.
|
|
62
|
-
"lodash": "^4.17.21"
|
|
60
|
+
"@sanity/ui": "^2.10.9"
|
|
63
61
|
},
|
|
64
62
|
"devDependencies": {
|
|
65
|
-
"@commitlint/cli": "^
|
|
66
|
-
"@commitlint/config-conventional": "^
|
|
67
|
-
"@sanity/pkg-utils": "^
|
|
68
|
-
"@sanity/plugin-kit": "^
|
|
69
|
-
"@sanity/semantic-release-preset": "^
|
|
70
|
-
"@types/google.maps": "^3.
|
|
71
|
-
"@types/react": "^18.
|
|
72
|
-
"@typescript-eslint/eslint-plugin": "^6.
|
|
73
|
-
"@typescript-eslint/parser": "^6.
|
|
74
|
-
"eslint": "^8.
|
|
75
|
-
"eslint-config-prettier": "^9.
|
|
63
|
+
"@commitlint/cli": "^19.6.1",
|
|
64
|
+
"@commitlint/config-conventional": "^19.6.0",
|
|
65
|
+
"@sanity/pkg-utils": "^6.12.0",
|
|
66
|
+
"@sanity/plugin-kit": "^4.0.18",
|
|
67
|
+
"@sanity/semantic-release-preset": "^5.0.0",
|
|
68
|
+
"@types/google.maps": "^3.58.1",
|
|
69
|
+
"@types/react": "^18.3.17",
|
|
70
|
+
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
|
71
|
+
"@typescript-eslint/parser": "^6.21.0",
|
|
72
|
+
"eslint": "^8.57.1",
|
|
73
|
+
"eslint-config-prettier": "^9.1.0",
|
|
76
74
|
"eslint-config-sanity": "^6.0.0",
|
|
77
|
-
"eslint-plugin-prettier": "^5.
|
|
78
|
-
"eslint-plugin-react": "^7.
|
|
79
|
-
"eslint-plugin-react-hooks": "^4.6.
|
|
75
|
+
"eslint-plugin-prettier": "^5.2.1",
|
|
76
|
+
"eslint-plugin-react": "^7.37.2",
|
|
77
|
+
"eslint-plugin-react-hooks": "^4.6.2",
|
|
80
78
|
"husky": "^8.0.3",
|
|
81
|
-
"lint-staged": "^
|
|
82
|
-
"
|
|
83
|
-
"prettier": "^
|
|
84
|
-
"
|
|
85
|
-
"react": "^18.
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"styled-components": "^6.1.8",
|
|
92
|
-
"typescript": "^5.2.2"
|
|
79
|
+
"lint-staged": "^15.2.11",
|
|
80
|
+
"prettier": "^3.4.2",
|
|
81
|
+
"prettier-plugin-packagejson": "^2.5.6",
|
|
82
|
+
"react": "^18.3.1",
|
|
83
|
+
"react-dom": "^18.3.1",
|
|
84
|
+
"rimraf": "^6.0.1",
|
|
85
|
+
"sanity": "^3.67.1",
|
|
86
|
+
"semantic-release": "^24.2.0",
|
|
87
|
+
"styled-components": "^6.1.13",
|
|
88
|
+
"typescript": "^5.7.2"
|
|
93
89
|
},
|
|
94
90
|
"peerDependencies": {
|
|
95
|
-
"react": "^18",
|
|
96
|
-
"sanity": "^3.19.0",
|
|
91
|
+
"react": "^18 || ^19",
|
|
92
|
+
"sanity": "^3.19.0 || ^4.0.0-0",
|
|
97
93
|
"styled-components": "^6.1"
|
|
98
94
|
},
|
|
99
95
|
"engines": {
|
|
100
|
-
"node": ">=
|
|
96
|
+
"node": ">=18"
|
|
101
97
|
},
|
|
102
98
|
"alias": {
|
|
103
99
|
"google": {
|
|
@@ -106,5 +102,8 @@
|
|
|
106
102
|
},
|
|
107
103
|
"publishConfig": {
|
|
108
104
|
"access": "public"
|
|
105
|
+
},
|
|
106
|
+
"overrides": {
|
|
107
|
+
"conventional-changelog-conventionalcommits": ">= 8.0.0"
|
|
109
108
|
}
|
|
110
109
|
}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type {
|
|
2
|
+
ArrayDiff,
|
|
3
|
+
Diff,
|
|
4
|
+
DiffComponent,
|
|
5
|
+
DiffProps as GenericDiffProps,
|
|
6
|
+
ObjectDiff,
|
|
7
|
+
} from 'sanity'
|
|
2
8
|
import {GoogleMapsLoadProxy} from '../loader/GoogleMapsLoadProxy'
|
|
3
9
|
import {GoogleMap} from '../map/Map'
|
|
4
|
-
import {Geopoint} from '../types'
|
|
10
|
+
import type {Geopoint} from '../types'
|
|
11
|
+
import {getGeoConfig} from '../global-workaround'
|
|
5
12
|
import {GeopointMove} from './GeopointMove'
|
|
6
13
|
import {RootContainer} from './GeopointFieldDiff.styles'
|
|
7
|
-
import {getGeoConfig} from '../global-workaround'
|
|
8
14
|
|
|
9
15
|
export type DiffProps = GenericDiffProps<ArrayDiff<Geopoint>>
|
|
10
16
|
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
|
-
DiffComponent,
|
|
3
|
-
ObjectDiff,
|
|
4
|
-
DiffProps as GenericDiffProps,
|
|
2
|
+
type DiffComponent,
|
|
3
|
+
type ObjectDiff,
|
|
4
|
+
type DiffProps as GenericDiffProps,
|
|
5
5
|
DiffTooltip,
|
|
6
6
|
getAnnotationAtPath,
|
|
7
7
|
} from 'sanity'
|
|
8
8
|
import {GoogleMapsLoadProxy} from '../loader/GoogleMapsLoadProxy'
|
|
9
9
|
import {GoogleMap} from '../map/Map'
|
|
10
|
-
import {Geopoint} from '../types'
|
|
10
|
+
import type {Geopoint} from '../types'
|
|
11
|
+
import {getGeoConfig} from '../global-workaround'
|
|
11
12
|
import {GeopointMove} from './GeopointMove'
|
|
12
13
|
import {RootContainer} from './GeopointFieldDiff.styles'
|
|
13
|
-
import {getGeoConfig} from '../global-workaround'
|
|
14
14
|
|
|
15
15
|
export type DiffProps = GenericDiffProps<ObjectDiff<Geopoint>>
|
|
16
16
|
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {useUserColor, ObjectDiff} from 'sanity'
|
|
1
|
+
import {useRef} from 'react'
|
|
2
|
+
import {useUserColor, type ObjectDiff} from 'sanity'
|
|
3
3
|
import {Marker} from '../map/Marker'
|
|
4
4
|
import {Arrow} from '../map/Arrow'
|
|
5
|
-
import {Geopoint} from '../types'
|
|
5
|
+
import type {Geopoint} from '../types'
|
|
6
6
|
|
|
7
|
-
interface
|
|
7
|
+
interface GeopointMoveProps {
|
|
8
8
|
api: typeof window.google.maps
|
|
9
9
|
map: google.maps.Map
|
|
10
10
|
diff: ObjectDiff<Geopoint>
|
|
11
11
|
label?: string
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export function GeopointMove({diff, api, map, label}:
|
|
14
|
+
export function GeopointMove({diff, api, map, label}: GeopointMoveProps) {
|
|
15
15
|
const {fromValue: from, toValue: to} = diff
|
|
16
16
|
const annotation = diff.isChanged ? diff.annotation : undefined
|
|
17
17
|
const userColor = useUserColor(annotation ? annotation.author : null) || undefined
|
|
18
|
-
const fromRef =
|
|
19
|
-
const toRef =
|
|
18
|
+
const fromRef = useRef<google.maps.Marker>()
|
|
19
|
+
const toRef = useRef<google.maps.Marker>()
|
|
20
20
|
|
|
21
21
|
return (
|
|
22
22
|
<>
|
package/src/global-workaround.ts
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
export {GeopointInput, type GeopointInputProps} from './input/GeopointInput'
|
|
2
2
|
|
|
3
3
|
export {GeopointArrayDiff, type DiffProps as GeopointArrayDiffProps} from './diff/GeopointArrayDiff'
|
|
4
4
|
export {GeopointFieldDiff, type DiffProps as GeopointFieldDiffProps} from './diff/GeopointFieldDiff'
|
|
5
5
|
|
|
6
|
-
export type {LatLng, GeopointSchemaType, Geopoint} from './types'
|
|
7
|
-
export {GeopointInput}
|
|
8
|
-
export type {GeopointInputProps}
|
|
6
|
+
export type {LatLng, GeopointSchemaType, Geopoint, GoogleMapsInputConfig} from './types'
|
|
9
7
|
|
|
10
|
-
export {googleMapsInput
|
|
8
|
+
export {googleMapsInput} from './plugin'
|