@sanity/google-maps-input 0.147.10-ts-client.1 → 1.0.0-v2-studio.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.
Files changed (95) hide show
  1. package/LICENSE +1 -1
  2. package/config.dist.json +1 -0
  3. package/dts/diff/GeopointArrayDiff.d.ts +4 -0
  4. package/dts/diff/GeopointFieldDiff.d.ts +4 -0
  5. package/dts/diff/GeopointFieldDiff.styles.d.ts +1 -0
  6. package/dts/diff/GeopointMove.d.ts +12 -0
  7. package/dts/diff/resolver.d.ts +3 -0
  8. package/dts/input/GeopointInput.d.ts +64 -0
  9. package/dts/input/GeopointInput.styles.d.ts +2 -0
  10. package/dts/input/GeopointSelect.d.ts +52 -0
  11. package/dts/loader/GoogleMapsLoadProxy.d.ts +13 -0
  12. package/dts/loader/LoadError.d.ts +9 -0
  13. package/dts/loader/loadGoogleMapsApi.d.ts +17 -0
  14. package/dts/map/Arrow.d.ts +30 -0
  15. package/dts/map/Map.d.ts +38 -0
  16. package/dts/map/Map.styles.d.ts +1 -0
  17. package/dts/map/Marker.d.ts +38 -0
  18. package/dts/map/SearchInput.d.ts +17 -0
  19. package/dts/map/SearchInput.styles.d.ts +1 -0
  20. package/dts/map/util.d.ts +3 -0
  21. package/dts/types.d.ts +13 -0
  22. package/lib/@types/css.d.js +2 -0
  23. package/lib/@types/css.d.js.map +1 -0
  24. package/lib/diff/GeopointArrayDiff.js +66 -0
  25. package/lib/diff/GeopointArrayDiff.js.map +1 -0
  26. package/lib/diff/GeopointFieldDiff.js +78 -0
  27. package/lib/diff/GeopointFieldDiff.js.map +1 -0
  28. package/lib/diff/GeopointFieldDiff.styles.js +13 -0
  29. package/lib/diff/GeopointFieldDiff.styles.js.map +1 -0
  30. package/lib/diff/GeopointMove.js +49 -0
  31. package/lib/diff/GeopointMove.js.map +1 -0
  32. package/lib/diff/resolver.js +21 -0
  33. package/lib/diff/resolver.js.map +1 -0
  34. package/lib/input/GeopointInput.js +163 -0
  35. package/lib/input/GeopointInput.js.map +1 -0
  36. package/lib/input/GeopointInput.styles.js +15 -0
  37. package/lib/input/GeopointInput.styles.js.map +1 -0
  38. package/lib/input/GeopointSelect.js +81 -0
  39. package/lib/input/GeopointSelect.js.map +1 -0
  40. package/lib/loader/GoogleMapsLoadProxy.js +55 -0
  41. package/lib/loader/GoogleMapsLoadProxy.js.map +1 -0
  42. package/lib/loader/LoadError.js +37 -0
  43. package/lib/loader/LoadError.js.map +1 -0
  44. package/lib/loader/loadGoogleMapsApi.js +65 -0
  45. package/lib/loader/loadGoogleMapsApi.js.map +1 -0
  46. package/lib/map/Arrow.js +79 -0
  47. package/lib/map/Arrow.js.map +1 -0
  48. package/lib/map/Map.js +114 -0
  49. package/lib/map/Map.js.map +1 -0
  50. package/lib/map/Map.styles.js +13 -0
  51. package/lib/map/Map.styles.js.map +1 -0
  52. package/lib/map/Marker.js +125 -0
  53. package/lib/map/Marker.js.map +1 -0
  54. package/lib/map/SearchInput.js +60 -0
  55. package/lib/map/SearchInput.js.map +1 -0
  56. package/lib/map/SearchInput.styles.js +13 -0
  57. package/lib/map/SearchInput.styles.js.map +1 -0
  58. package/lib/map/util.js +14 -0
  59. package/lib/map/util.js.map +1 -0
  60. package/lib/types.js +2 -0
  61. package/lib/types.js.map +1 -0
  62. package/package.json +63 -27
  63. package/sanity.json +5 -1
  64. package/src/@types/css.d.ts +4 -0
  65. package/src/diff/GeopointArrayDiff.tsx +83 -0
  66. package/src/diff/GeopointFieldDiff.styles.tsx +20 -0
  67. package/src/diff/GeopointFieldDiff.tsx +94 -0
  68. package/src/diff/GeopointMove.tsx +49 -0
  69. package/src/diff/resolver.ts +21 -0
  70. package/src/input/GeopointInput.styles.tsx +12 -0
  71. package/src/input/GeopointInput.tsx +231 -0
  72. package/src/input/GeopointSelect.tsx +78 -0
  73. package/src/loader/GoogleMapsLoadProxy.tsx +49 -0
  74. package/src/loader/LoadError.tsx +44 -0
  75. package/src/loader/loadGoogleMapsApi.ts +93 -0
  76. package/src/map/Arrow.tsx +76 -0
  77. package/src/map/Map.styles.tsx +10 -0
  78. package/src/map/Map.tsx +125 -0
  79. package/src/map/Marker.tsx +132 -0
  80. package/src/map/SearchInput.styles.tsx +8 -0
  81. package/src/map/SearchInput.tsx +55 -0
  82. package/src/map/util.ts +14 -0
  83. package/src/types.ts +16 -0
  84. package/example/Main.js +0 -28
  85. package/example/config/.checksums +0 -4
  86. package/example/config/@sanity/google-maps-input.json +0 -8
  87. package/example/sanity.json +0 -33
  88. package/example/schema.js +0 -22
  89. package/lib/GeopointInput.js +0 -170
  90. package/lib/GeopointSelect.js +0 -174
  91. package/lib/GoogleMapsLoadProxy.js +0 -65
  92. package/lib/loadGoogleMapsApi.js +0 -36
  93. package/locale/strings.json +0 -11
  94. package/styles/GeopointInput.css +0 -28
  95. package/styles/GeopointSelect.css +0 -27
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _GeopointFieldDiff = require("./GeopointFieldDiff");
8
+ var _GeopointArrayDiff = require("./GeopointArrayDiff");
9
+ var diffResolver = function diffResolver(_ref) {
10
+ var schemaType = _ref.schemaType;
11
+ if (schemaType.name === 'geopoint') {
12
+ return _GeopointFieldDiff.GeopointFieldDiff;
13
+ }
14
+ if (schemaType.jsonType === 'array' && schemaType.of.length === 1 && schemaType.of[0].name === 'geopoint') {
15
+ return _GeopointArrayDiff.GeopointArrayDiff;
16
+ }
17
+ return undefined;
18
+ };
19
+ var _default = diffResolver;
20
+ exports.default = _default;
21
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","names":["diffResolver","schemaType","name","GeopointFieldDiff","jsonType","of","length","GeopointArrayDiff","undefined"],"sources":["../../src/diff/resolver.ts"],"sourcesContent":["import {DiffComponentResolver} from '@sanity/field/diff'\nimport {GeopointFieldDiff} from './GeopointFieldDiff'\nimport {GeopointArrayDiff} from './GeopointArrayDiff'\n\nconst diffResolver: DiffComponentResolver = function diffResolver({schemaType}) {\n if (schemaType.name === 'geopoint') {\n return GeopointFieldDiff\n }\n\n if (\n schemaType.jsonType === 'array' &&\n schemaType.of.length === 1 &&\n schemaType.of[0].name === 'geopoint'\n ) {\n return GeopointArrayDiff\n }\n\n return undefined\n}\n\nexport default diffResolver\n"],"mappings":";;;;;;AACA;AACA;AAEA,IAAMA,YAAmC,GAAG,SAASA,YAAY,OAAe;EAAA,IAAbC,UAAU,QAAVA,UAAU;EAC3E,IAAIA,UAAU,CAACC,IAAI,KAAK,UAAU,EAAE;IAClC,OAAOC,oCAAiB;EAC1B;EAEA,IACEF,UAAU,CAACG,QAAQ,KAAK,OAAO,IAC/BH,UAAU,CAACI,EAAE,CAACC,MAAM,KAAK,CAAC,IAC1BL,UAAU,CAACI,EAAE,CAAC,CAAC,CAAC,CAACH,IAAI,KAAK,UAAU,EACpC;IACA,OAAOK,oCAAiB;EAC1B;EAEA,OAAOC,SAAS;AAClB,CAAC;AAAA,eAEcR,YAAY;AAAA"}
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _lodash = require("lodash");
9
+ var _ui = require("@sanity/ui");
10
+ var _icons = require("@sanity/icons");
11
+ var _googleMapsInput = _interopRequireDefault(require("config:@sanity/google-maps-input"));
12
+ var _components = require("@sanity/base/components");
13
+ var _patchEvent = require("part:@sanity/form-builder/patch-event");
14
+ var _changeIndicators = require("@sanity/base/change-indicators");
15
+ var _GoogleMapsLoadProxy = require("../loader/GoogleMapsLoadProxy");
16
+ var _GeopointSelect = require("./GeopointSelect");
17
+ var _GeopointInput = require("./GeopointInput.styles");
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
20
+ var getStaticImageUrl = value => {
21
+ var loc = "".concat(value.lat, ",").concat(value.lng);
22
+ var params = {
23
+ key: _googleMapsInput.default.apiKey,
24
+ center: loc,
25
+ markers: loc,
26
+ zoom: 13,
27
+ scale: 2,
28
+ size: '640x300'
29
+ };
30
+ var qs = Object.keys(params).reduce((res, param) => {
31
+ return res.concat("".concat(param, "=").concat(encodeURIComponent(params[param])));
32
+ }, []);
33
+ return "https://maps.googleapis.com/maps/api/staticmap?".concat(qs.join('&'));
34
+ };
35
+ class GeopointInput extends _react.default.PureComponent {
36
+ constructor(props) {
37
+ super(props);
38
+ _defineProperty(this, "_geopointInputId", (0, _lodash.uniqueId)('GeopointInput'));
39
+ _defineProperty(this, "editButton", void 0);
40
+ _defineProperty(this, "setEditButton", el => {
41
+ this.editButton = el;
42
+ });
43
+ _defineProperty(this, "handleFocus", event => {
44
+ this.props.onFocus(event);
45
+ });
46
+ _defineProperty(this, "handleBlur", () => {
47
+ this.props.onBlur();
48
+ });
49
+ _defineProperty(this, "handleToggleModal", () => {
50
+ var _this$props = this.props,
51
+ onFocus = _this$props.onFocus,
52
+ onBlur = _this$props.onBlur;
53
+ this.setState(prevState => ({
54
+ modalOpen: !prevState.modalOpen
55
+ }), () => {
56
+ if (this.state.modalOpen) {
57
+ onFocus(['$']);
58
+ } else {
59
+ onBlur();
60
+ }
61
+ });
62
+ });
63
+ _defineProperty(this, "handleCloseModal", () => {
64
+ this.setState({
65
+ modalOpen: false
66
+ });
67
+ });
68
+ _defineProperty(this, "handleChange", latLng => {
69
+ var _this$props2 = this.props,
70
+ type = _this$props2.type,
71
+ onChange = _this$props2.onChange;
72
+ onChange(_patchEvent.PatchEvent.from([(0, _patchEvent.setIfMissing)({
73
+ _type: type.name
74
+ }), (0, _patchEvent.set)(latLng.lat(), ['lat']), (0, _patchEvent.set)(latLng.lng(), ['lng'])]));
75
+ });
76
+ _defineProperty(this, "handleClear", () => {
77
+ var onChange = this.props.onChange;
78
+ onChange(_patchEvent.PatchEvent.from((0, _patchEvent.unset)()));
79
+ });
80
+ this.state = {
81
+ modalOpen: false
82
+ };
83
+ }
84
+ focus() {
85
+ if (this.editButton) {
86
+ this.editButton.focus();
87
+ }
88
+ }
89
+ render() {
90
+ var _this$props3 = this.props,
91
+ value = _this$props3.value,
92
+ compareValue = _this$props3.compareValue,
93
+ readOnly = _this$props3.readOnly,
94
+ type = _this$props3.type,
95
+ markers = _this$props3.markers,
96
+ level = _this$props3.level,
97
+ presence = _this$props3.presence;
98
+ var modalOpen = this.state.modalOpen;
99
+ if (!_googleMapsInput.default || !_googleMapsInput.default.apiKey) {
100
+ return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("p", null, "The ", /*#__PURE__*/_react.default.createElement("a", {
101
+ href: "https://sanity.io/docs/schema-types/geopoint-type"
102
+ }, "Geopoint type"), " needs a Google Maps API key with access to:"), /*#__PURE__*/_react.default.createElement("ul", null, /*#__PURE__*/_react.default.createElement("li", null, "Google Maps JavaScript API"), /*#__PURE__*/_react.default.createElement("li", null, "Google Places API Web Service"), /*#__PURE__*/_react.default.createElement("li", null, "Google Static Maps API")), /*#__PURE__*/_react.default.createElement("p", null, "Please enter the API key with access to these services in", /*#__PURE__*/_react.default.createElement("code", {
103
+ style: {
104
+ whiteSpace: 'nowrap'
105
+ }
106
+ }, "`<project-root>/config/@sanity/google-maps-input.json`")));
107
+ }
108
+ return /*#__PURE__*/_react.default.createElement(_components.FormFieldSet, {
109
+ level: level,
110
+ title: type.title,
111
+ description: type.description,
112
+ onFocus: this.handleFocus,
113
+ onBlur: this.handleBlur,
114
+ __unstable_presence: presence,
115
+ __unstable_changeIndicator: false,
116
+ __unstable_markers: markers
117
+ }, /*#__PURE__*/_react.default.createElement("div", null, value && /*#__PURE__*/_react.default.createElement(_changeIndicators.ChangeIndicatorCompareValueProvider, {
118
+ value: value,
119
+ compareValue: compareValue
120
+ }, /*#__PURE__*/_react.default.createElement(_changeIndicators.ChangeIndicator, {
121
+ compareDeep: true
122
+ }, /*#__PURE__*/_react.default.createElement(_GeopointInput.PreviewImage, {
123
+ src: getStaticImageUrl(value),
124
+ alt: "Map location"
125
+ }))), !readOnly && /*#__PURE__*/_react.default.createElement(_ui.Box, {
126
+ marginTop: 4
127
+ }, /*#__PURE__*/_react.default.createElement(_ui.Grid, {
128
+ columns: 2,
129
+ gap: 2
130
+ }, /*#__PURE__*/_react.default.createElement(_ui.Button, {
131
+ mode: "ghost",
132
+ icon: value && _icons.EditIcon,
133
+ padding: 3,
134
+ ref: this.setEditButton,
135
+ text: value ? 'Edit' : 'Set location',
136
+ onClick: this.handleToggleModal
137
+ }), value && /*#__PURE__*/_react.default.createElement(_ui.Button, {
138
+ tone: "critical",
139
+ icon: _icons.TrashIcon,
140
+ padding: 3,
141
+ mode: "ghost",
142
+ text: 'Remove',
143
+ onClick: this.handleClear
144
+ }))), modalOpen && /*#__PURE__*/_react.default.createElement(_ui.Dialog, {
145
+ id: "".concat(this._geopointInputId, "_dialog"),
146
+ onClose: this.handleCloseModal,
147
+ header: "Place the marker on the map",
148
+ width: 1
149
+ }, /*#__PURE__*/_react.default.createElement(_GeopointInput.DialogInnerContainer, null, /*#__PURE__*/_react.default.createElement(_GoogleMapsLoadProxy.GoogleMapsLoadProxy, null, api => /*#__PURE__*/_react.default.createElement(_GeopointSelect.GeopointSelect, {
150
+ api: api,
151
+ value: value,
152
+ onChange: readOnly ? undefined : this.handleChange,
153
+ defaultLocation: _googleMapsInput.default.defaultLocation,
154
+ defaultZoom: _googleMapsInput.default.defaultZoom
155
+ }))))));
156
+ }
157
+ }
158
+ _defineProperty(GeopointInput, "defaultProps", {
159
+ markers: []
160
+ });
161
+ var _default = GeopointInput;
162
+ exports.default = _default;
163
+ //# sourceMappingURL=GeopointInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeopointInput.js","names":["getStaticImageUrl","value","loc","lat","lng","params","key","config","apiKey","center","markers","zoom","scale","size","qs","Object","keys","reduce","res","param","concat","encodeURIComponent","join","GeopointInput","React","PureComponent","constructor","props","uniqueId","el","editButton","event","onFocus","onBlur","setState","prevState","modalOpen","state","latLng","type","onChange","PatchEvent","from","setIfMissing","_type","name","set","unset","focus","render","compareValue","readOnly","level","presence","whiteSpace","title","description","handleFocus","handleBlur","EditIcon","setEditButton","handleToggleModal","TrashIcon","handleClear","_geopointInputId","handleCloseModal","api","undefined","handleChange","defaultLocation","defaultZoom"],"sources":["../../src/input/GeopointInput.tsx"],"sourcesContent":["// @todo: remove the following line when part imports has been removed from this file\n///<reference types=\"@sanity/types/parts\" />\n\nimport React from 'react'\nimport {uniqueId} from 'lodash'\nimport {Box, Grid, Button, Dialog} from '@sanity/ui'\nimport {TrashIcon, EditIcon} from '@sanity/icons'\nimport {Path, Marker} from '@sanity/types'\nimport config from 'config:@sanity/google-maps-input'\nimport {FormFieldSet} from '@sanity/base/components'\nimport {FormFieldPresence} from '@sanity/base/presence'\nimport {PatchEvent, set, setIfMissing, unset} from 'part:@sanity/form-builder/patch-event'\nimport {ChangeIndicatorCompareValueProvider, ChangeIndicator} from '@sanity/base/change-indicators'\nimport {GoogleMapsLoadProxy} from '../loader/GoogleMapsLoadProxy'\nimport {Geopoint, GeopointSchemaType} from '../types'\nimport {GeopointSelect} from './GeopointSelect'\nimport {PreviewImage, DialogInnerContainer} from './GeopointInput.styles'\n\nconst getStaticImageUrl = (value) => {\n const loc = `${value.lat},${value.lng}`\n const params = {\n key: config.apiKey,\n center: loc,\n markers: loc,\n zoom: 13,\n scale: 2,\n size: '640x300',\n }\n\n const qs = Object.keys(params).reduce((res, param) => {\n return res.concat(`${param}=${encodeURIComponent(params[param])}`)\n }, [] as string[])\n\n return `https://maps.googleapis.com/maps/api/staticmap?${qs.join('&')}`\n}\n\ninterface InputProps {\n markers: Marker[]\n level?: number\n value?: Geopoint\n compareValue?: Geopoint\n type: GeopointSchemaType\n readOnly?: boolean\n onFocus: (path: Path) => void\n onBlur: () => void\n onChange: (patchEvent: unknown) => void\n presence: FormFieldPresence[]\n}\n\n// @todo\n// interface Focusable {\n// focus: () => void\n// }\ntype Focusable = any\n\ninterface InputState {\n modalOpen: boolean\n}\n\nclass GeopointInput extends React.PureComponent<InputProps, InputState> {\n _geopointInputId = uniqueId('GeopointInput')\n\n static defaultProps = {\n markers: [],\n }\n\n editButton: Focusable | undefined\n\n constructor(props) {\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 handleFocus = (event) => {\n this.props.onFocus(event)\n }\n\n handleBlur = () => {\n this.props.onBlur()\n }\n\n handleToggleModal = () => {\n const {onFocus, onBlur} = this.props\n this.setState(\n (prevState) => ({modalOpen: !prevState.modalOpen}),\n () => {\n if (this.state.modalOpen) {\n onFocus(['$'])\n } else {\n onBlur()\n }\n }\n )\n }\n\n handleCloseModal = () => {\n this.setState({modalOpen: false})\n }\n\n handleChange = (latLng: google.maps.LatLng) => {\n const {type, onChange} = this.props\n onChange(\n PatchEvent.from([\n setIfMissing({\n _type: type.name,\n }),\n set(latLng.lat(), ['lat']),\n set(latLng.lng(), ['lng']),\n ])\n )\n }\n\n handleClear = () => {\n const {onChange} = this.props\n onChange(PatchEvent.from(unset()))\n }\n\n render() {\n const {value, compareValue, readOnly, type, markers, level, presence} = this.props\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\n <code style={{whiteSpace: 'nowrap'}}>\n `&lt;project-root&gt;/config/@sanity/google-maps-input.json`\n </code>\n </p>\n </div>\n )\n }\n\n return (\n <FormFieldSet\n level={level}\n title={type.title}\n description={type.description}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n __unstable_presence={presence}\n __unstable_changeIndicator={false}\n __unstable_markers={markers}\n >\n <div>\n {value && (\n <ChangeIndicatorCompareValueProvider value={value} compareValue={compareValue}>\n <ChangeIndicator compareDeep>\n <PreviewImage src={getStaticImageUrl(value)} alt=\"Map location\" />\n </ChangeIndicator>\n </ChangeIndicatorCompareValueProvider>\n )}\n\n {!readOnly && (\n <Box marginTop={4}>\n <Grid columns={2} gap={2}>\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 />\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 />\n )}\n </Grid>\n </Box>\n )}\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>\n {(api) => (\n <GeopointSelect\n api={api}\n value={value}\n onChange={readOnly ? undefined : this.handleChange}\n defaultLocation={config.defaultLocation}\n defaultZoom={config.defaultZoom}\n />\n )}\n </GoogleMapsLoadProxy>\n </DialogInnerContainer>\n </Dialog>\n )}\n </div>\n </FormFieldSet>\n )\n }\n}\n\nexport default GeopointInput\n"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PreviewImage = exports.DialogInnerContainer = void 0;
7
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
+ var _templateObject, _templateObject2;
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
11
+ var PreviewImage = _styledComponents.default.img(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 100%;\n height: auto;\n vertical-align: top;\n"])));
12
+ exports.PreviewImage = PreviewImage;
13
+ var DialogInnerContainer = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n height: 40rem;\n width: 50rem;\n"])));
14
+ exports.DialogInnerContainer = DialogInnerContainer;
15
+ //# sourceMappingURL=GeopointInput.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeopointInput.styles.js","names":["PreviewImage","styled","img","DialogInnerContainer","div"],"sources":["../../src/input/GeopointInput.styles.tsx"],"sourcesContent":["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"],"mappings":";;;;;;AAAA;AAAsC;AAAA;AAAA;AAE/B,IAAMA,YAAY,GAAGC,yBAAM,CAACC,GAAG,gIAIrC;AAAA;AAEM,IAAMC,oBAAoB,GAAGF,yBAAM,CAACG,GAAG,4GAG7C;AAAA"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.GeopointSelect = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _SearchInput = require("../map/SearchInput");
9
+ var _Map = require("../map/Map");
10
+ var _Marker = require("../map/Marker");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
13
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
14
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
+ var fallbackLatLng = {
16
+ lat: 40.7058254,
17
+ lng: -74.1180863
18
+ };
19
+ class GeopointSelect extends _react.default.PureComponent {
20
+ constructor() {
21
+ super(...arguments);
22
+ _defineProperty(this, "mapRef", /*#__PURE__*/_react.default.createRef());
23
+ _defineProperty(this, "handlePlaceChanged", place => {
24
+ if (!place.geometry) {
25
+ return;
26
+ }
27
+ this.setValue(place.geometry.location);
28
+ });
29
+ _defineProperty(this, "handleMarkerDragEnd", event => {
30
+ this.setValue(event.latLng);
31
+ });
32
+ _defineProperty(this, "handleMapClick", event => {
33
+ this.setValue(event.latLng);
34
+ });
35
+ }
36
+ getCenter() {
37
+ var _this$props = this.props,
38
+ _this$props$value = _this$props.value,
39
+ value = _this$props$value === void 0 ? {} : _this$props$value,
40
+ _this$props$defaultLo = _this$props.defaultLocation,
41
+ defaultLocation = _this$props$defaultLo === void 0 ? {} : _this$props$defaultLo;
42
+ var point = _objectSpread(_objectSpread(_objectSpread({}, fallbackLatLng), defaultLocation), value);
43
+ return point;
44
+ }
45
+ setValue(geoPoint) {
46
+ if (this.props.onChange) {
47
+ this.props.onChange(geoPoint);
48
+ }
49
+ }
50
+ render() {
51
+ var _this$props2 = this.props,
52
+ api = _this$props2.api,
53
+ defaultZoom = _this$props2.defaultZoom,
54
+ value = _this$props2.value,
55
+ onChange = _this$props2.onChange;
56
+ return /*#__PURE__*/_react.default.createElement(_Map.GoogleMap, {
57
+ api: api,
58
+ location: this.getCenter(),
59
+ onClick: this.handleMapClick,
60
+ defaultZoom: defaultZoom
61
+ }, map => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_SearchInput.SearchInput, {
62
+ api: api,
63
+ map: map,
64
+ onChange: this.handlePlaceChanged
65
+ }), value && /*#__PURE__*/_react.default.createElement(_Marker.Marker, {
66
+ api: api,
67
+ map: map,
68
+ position: value,
69
+ onMove: onChange ? this.handleMarkerDragEnd : undefined
70
+ })));
71
+ }
72
+ }
73
+ exports.GeopointSelect = GeopointSelect;
74
+ _defineProperty(GeopointSelect, "defaultProps", {
75
+ defaultZoom: 8,
76
+ defaultLocation: {
77
+ lng: 10.74609,
78
+ lat: 59.91273
79
+ }
80
+ });
81
+ //# sourceMappingURL=GeopointSelect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeopointSelect.js","names":["fallbackLatLng","lat","lng","GeopointSelect","React","PureComponent","createRef","place","geometry","setValue","location","event","latLng","getCenter","props","value","defaultLocation","point","geoPoint","onChange","render","api","defaultZoom","handleMapClick","map","handlePlaceChanged","handleMarkerDragEnd","undefined"],"sources":["../../src/input/GeopointSelect.tsx"],"sourcesContent":["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) {\n return\n }\n\n this.setValue(place.geometry.location)\n }\n\n handleMarkerDragEnd = (event: google.maps.MapMouseEvent) => {\n this.setValue(event.latLng)\n }\n\n handleMapClick = (event: google.maps.MapMouseEvent) => {\n 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"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAAoC;AAAA;AAAA;AAAA;AAGpC,IAAMA,cAAsB,GAAG;EAACC,GAAG,EAAE,UAAU;EAAEC,GAAG,EAAE,CAAC;AAAU,CAAC;AAU3D,MAAMC,cAAc,SAASC,cAAK,CAACC,aAAa,CAAc;EAAA;IAAA;IAAA,6CAM1DD,cAAK,CAACE,SAAS,EAAkB;IAAA,4CAQpBC,KAAqC,IAAK;MAC9D,IAAI,CAACA,KAAK,CAACC,QAAQ,EAAE;QACnB;MACF;MAEA,IAAI,CAACC,QAAQ,CAACF,KAAK,CAACC,QAAQ,CAACE,QAAQ,CAAC;IACxC,CAAC;IAAA,6CAEsBC,KAAgC,IAAK;MAC1D,IAAI,CAACF,QAAQ,CAACE,KAAK,CAACC,MAAM,CAAC;IAC7B,CAAC;IAAA,wCAEiBD,KAAgC,IAAK;MACrD,IAAI,CAACF,QAAQ,CAACE,KAAK,CAACC,MAAM,CAAC;IAC7B,CAAC;EAAA;EApBDC,SAAS,GAAG;IACV,kBAA2C,IAAI,CAACC,KAAK;MAAA,gCAA9CC,KAAK;MAALA,KAAK,kCAAG,CAAC,CAAC;MAAA,oCAAEC,eAAe;MAAfA,eAAe,sCAAG,CAAC,CAAC;IACvC,IAAMC,KAAa,iDAAOjB,cAAc,GAAKgB,eAAe,GAAKD,KAAK,CAAC;IACvE,OAAOE,KAAK;EACd;EAkBAR,QAAQ,CAACS,QAA4B,EAAE;IACrC,IAAI,IAAI,CAACJ,KAAK,CAACK,QAAQ,EAAE;MACvB,IAAI,CAACL,KAAK,CAACK,QAAQ,CAACD,QAAQ,CAAC;IAC/B;EACF;EAEAE,MAAM,GAAG;IACP,mBAA4C,IAAI,CAACN,KAAK;MAA/CO,GAAG,gBAAHA,GAAG;MAAEC,WAAW,gBAAXA,WAAW;MAAEP,KAAK,gBAALA,KAAK;MAAEI,QAAQ,gBAARA,QAAQ;IACxC,oBACE,6BAAC,cAAS;MACR,GAAG,EAAEE,GAAI;MACT,QAAQ,EAAE,IAAI,CAACR,SAAS,EAAG;MAC3B,OAAO,EAAE,IAAI,CAACU,cAAe;MAC7B,WAAW,EAAED;IAAY,GAEvBE,GAAG,iBACH,yEACE,6BAAC,wBAAW;MAAC,GAAG,EAAEH,GAAI;MAAC,GAAG,EAAEG,GAAI;MAAC,QAAQ,EAAE,IAAI,CAACC;IAAmB,EAAG,EACrEV,KAAK,iBACJ,6BAAC,cAAM;MACL,GAAG,EAAEM,GAAI;MACT,GAAG,EAAEG,GAAI;MACT,QAAQ,EAAET,KAAM;MAChB,MAAM,EAAEI,QAAQ,GAAG,IAAI,CAACO,mBAAmB,GAAGC;IAAU,EAE3D,CAEJ,CACS;EAEhB;AACF;AAAC;AAAA,gBA7DYxB,cAAc,kBACH;EACpBmB,WAAW,EAAE,CAAC;EACdN,eAAe,EAAE;IAACd,GAAG,EAAE,QAAQ;IAAED,GAAG,EAAE;EAAQ;AAChD,CAAC"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.GoogleMapsLoadProxy = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _loadGoogleMapsApi = require("./loadGoogleMapsApi");
9
+ var _LoadError = require("./LoadError");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
+ class GoogleMapsLoadProxy extends _react.default.Component {
13
+ constructor(props) {
14
+ super(props);
15
+ _defineProperty(this, "loadSubscription", void 0);
16
+ this.state = {
17
+ loadState: 'loading'
18
+ };
19
+ var sync = true;
20
+ this.loadSubscription = (0, _loadGoogleMapsApi.loadGoogleMapsApi)().subscribe(loadState => {
21
+ if (sync) {
22
+ this.state = loadState;
23
+ } else {
24
+ this.setState(loadState);
25
+ }
26
+ });
27
+ sync = false;
28
+ }
29
+ componentWillUnmount() {
30
+ if (this.loadSubscription) {
31
+ this.loadSubscription.unsubscribe();
32
+ }
33
+ }
34
+ render() {
35
+ switch (this.state.loadState) {
36
+ case 'loadError':
37
+ return /*#__PURE__*/_react.default.createElement(_LoadError.LoadError, {
38
+ error: this.state.error,
39
+ isAuthError: false
40
+ });
41
+ case 'authError':
42
+ return /*#__PURE__*/_react.default.createElement(_LoadError.LoadError, {
43
+ isAuthError: true
44
+ });
45
+ case 'loading':
46
+ return /*#__PURE__*/_react.default.createElement("div", null, "Loading Google Maps API");
47
+ case 'loaded':
48
+ return this.props.children(this.state.api) || null;
49
+ default:
50
+ return null;
51
+ }
52
+ }
53
+ }
54
+ exports.GoogleMapsLoadProxy = GoogleMapsLoadProxy;
55
+ //# sourceMappingURL=GoogleMapsLoadProxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoogleMapsLoadProxy.js","names":["GoogleMapsLoadProxy","React","Component","constructor","props","state","loadState","sync","loadSubscription","loadGoogleMapsApi","subscribe","setState","componentWillUnmount","unsubscribe","render","error","children","api"],"sources":["../../src/loader/GoogleMapsLoadProxy.tsx"],"sourcesContent":["import React from 'react'\nimport {Subscription} from 'rxjs'\nimport {loadGoogleMapsApi, GoogleLoadState} from './loadGoogleMapsApi'\nimport {LoadError} from './LoadError'\n\ninterface LoadProps {\n children: (api: typeof window.google.maps) => React.ReactElement\n}\n\nexport class GoogleMapsLoadProxy extends React.Component<LoadProps, GoogleLoadState> {\n loadSubscription: Subscription | undefined\n\n constructor(props: LoadProps) {\n super(props)\n\n this.state = {loadState: 'loading'}\n\n let sync = true\n this.loadSubscription = loadGoogleMapsApi().subscribe((loadState) => {\n if (sync) {\n this.state = loadState\n } else {\n this.setState(loadState)\n }\n })\n sync = false\n }\n\n componentWillUnmount() {\n if (this.loadSubscription) {\n this.loadSubscription.unsubscribe()\n }\n }\n\n render() {\n switch (this.state.loadState) {\n case 'loadError':\n return <LoadError error={this.state.error} isAuthError={false} />\n case 'authError':\n return <LoadError isAuthError />\n case 'loading':\n return <div>Loading Google Maps API</div>\n case 'loaded':\n return this.props.children(this.state.api) || null\n default:\n return null\n }\n }\n}\n"],"mappings":";;;;;;AAAA;AAEA;AACA;AAAqC;AAAA;AAM9B,MAAMA,mBAAmB,SAASC,cAAK,CAACC,SAAS,CAA6B;EAGnFC,WAAW,CAACC,KAAgB,EAAE;IAC5B,KAAK,CAACA,KAAK,CAAC;IAAA;IAEZ,IAAI,CAACC,KAAK,GAAG;MAACC,SAAS,EAAE;IAAS,CAAC;IAEnC,IAAIC,IAAI,GAAG,IAAI;IACf,IAAI,CAACC,gBAAgB,GAAG,IAAAC,oCAAiB,GAAE,CAACC,SAAS,CAAEJ,SAAS,IAAK;MACnE,IAAIC,IAAI,EAAE;QACR,IAAI,CAACF,KAAK,GAAGC,SAAS;MACxB,CAAC,MAAM;QACL,IAAI,CAACK,QAAQ,CAACL,SAAS,CAAC;MAC1B;IACF,CAAC,CAAC;IACFC,IAAI,GAAG,KAAK;EACd;EAEAK,oBAAoB,GAAG;IACrB,IAAI,IAAI,CAACJ,gBAAgB,EAAE;MACzB,IAAI,CAACA,gBAAgB,CAACK,WAAW,EAAE;IACrC;EACF;EAEAC,MAAM,GAAG;IACP,QAAQ,IAAI,CAACT,KAAK,CAACC,SAAS;MAC1B,KAAK,WAAW;QACd,oBAAO,6BAAC,oBAAS;UAAC,KAAK,EAAE,IAAI,CAACD,KAAK,CAACU,KAAM;UAAC,WAAW,EAAE;QAAM,EAAG;MACnE,KAAK,WAAW;QACd,oBAAO,6BAAC,oBAAS;UAAC,WAAW;QAAA,EAAG;MAClC,KAAK,SAAS;QACZ,oBAAO,oEAAkC;MAC3C,KAAK,QAAQ;QACX,OAAO,IAAI,CAACX,KAAK,CAACY,QAAQ,CAAC,IAAI,CAACX,KAAK,CAACY,GAAG,CAAC,IAAI,IAAI;MACpD;QACE,OAAO,IAAI;IAAA;EAEjB;AACF;AAAC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.LoadError = LoadError;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _ui = require("@sanity/ui");
9
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
+ function LoadError(props) {
12
+ var _props$error;
13
+ return /*#__PURE__*/React.createElement(_ui.Card, {
14
+ tone: "critical",
15
+ radius: 1
16
+ }, /*#__PURE__*/React.createElement(_ui.Box, {
17
+ as: "header",
18
+ paddingX: 4,
19
+ paddingTop: 4,
20
+ paddingBottom: 1
21
+ }, /*#__PURE__*/React.createElement(_ui.Text, {
22
+ as: "h2",
23
+ weight: "bold"
24
+ }, "Google Maps failed to load")), /*#__PURE__*/React.createElement(_ui.Box, {
25
+ paddingX: 4,
26
+ paddingTop: 4,
27
+ paddingBottom: 1
28
+ }, props.isAuthError ? /*#__PURE__*/React.createElement(AuthError, null) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_ui.Text, {
29
+ as: "h3"
30
+ }, "Error details:"), /*#__PURE__*/React.createElement("pre", null, /*#__PURE__*/React.createElement(_ui.Code, {
31
+ size: 1
32
+ }, (_props$error = props.error) === null || _props$error === void 0 ? void 0 : _props$error.message)))));
33
+ }
34
+ function AuthError() {
35
+ return /*#__PURE__*/React.createElement(_ui.Text, null, /*#__PURE__*/React.createElement("p", null, "The error appears to be related to authentication"), /*#__PURE__*/React.createElement("p", null, "Common causes include:"), /*#__PURE__*/React.createElement("ul", null, /*#__PURE__*/React.createElement("li", null, "Incorrect API key"), /*#__PURE__*/React.createElement("li", null, "Referer not allowed"), /*#__PURE__*/React.createElement("li", null, "Missing authentication scope")), /*#__PURE__*/React.createElement("p", null, "Check the browser developer tools for more information."));
36
+ }
37
+ //# sourceMappingURL=LoadError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadError.js","names":["LoadError","props","isAuthError","error","message","AuthError"],"sources":["../../src/loader/LoadError.tsx"],"sourcesContent":["import * as React from 'react'\nimport {Card, Box, Text, Code} from '@sanity/ui'\n\ntype Props = {error: Error; 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}>{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"],"mappings":";;;;;;AAAA;AACA;AAAgD;AAAA;AAIzC,SAASA,SAAS,CAACC,KAAY,EAAE;EAAA;EACtC,oBACE,oBAAC,QAAI;IAAC,IAAI,EAAC,UAAU;IAAC,MAAM,EAAE;EAAE,gBAC9B,oBAAC,OAAG;IAAC,EAAE,EAAC,QAAQ;IAAC,QAAQ,EAAE,CAAE;IAAC,UAAU,EAAE,CAAE;IAAC,aAAa,EAAE;EAAE,gBAC5D,oBAAC,QAAI;IAAC,EAAE,EAAC,IAAI;IAAC,MAAM,EAAC;EAAM,gCAEpB,CACH,eAEN,oBAAC,OAAG;IAAC,QAAQ,EAAE,CAAE;IAAC,UAAU,EAAE,CAAE;IAAC,aAAa,EAAE;EAAE,GAC/CA,KAAK,CAACC,WAAW,gBAChB,oBAAC,SAAS,OAAG,gBAEb,uDACE,oBAAC,QAAI;IAAC,EAAE,EAAC;EAAI,oBAAsB,eACnC,8CACE,oBAAC,QAAI;IAAC,IAAI,EAAE;EAAE,mBAAED,KAAK,CAACE,KAAK,iDAAX,aAAaC,OAAO,CAAQ,CACxC,CAET,CACG,CACD;AAEX;AAEA,SAASC,SAAS,GAAG;EACnB,oBACE,oBAAC,QAAI,qBACH,mFAAwD,eACxD,wDAA6B,eAC7B,6CACE,oDAA0B,eAC1B,sDAA4B,eAC5B,+DAAqC,CAClC,eACL,yFAA8D,CACzD;AAEX"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.loadGoogleMapsApi = loadGoogleMapsApi;
7
+ var _rxjs = require("rxjs");
8
+ var _googleMapsInput = _interopRequireDefault(require("config:@sanity/google-maps-input"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ // @todo: remove the following line when part imports has been removed from this file
11
+ ///<reference types="@sanity/types/parts" />
12
+
13
+ var callbackName = '___sanity_googleMapsApiCallback';
14
+ var authFailureCallbackName = 'gm_authFailure';
15
+ var locale = typeof window !== 'undefined' && window.navigator.language || 'en';
16
+ var subject;
17
+ function loadGoogleMapsApi() {
18
+ var selectedLocale = _googleMapsInput.default.defaultLocale || locale || 'en-US';
19
+ if (subject) {
20
+ return subject;
21
+ }
22
+ subject = new _rxjs.BehaviorSubject({
23
+ loadState: 'loading'
24
+ });
25
+ window[authFailureCallbackName] = () => {
26
+ delete window[authFailureCallbackName];
27
+ subject.next({
28
+ loadState: 'authError'
29
+ });
30
+ };
31
+ window[callbackName] = () => {
32
+ delete window[callbackName];
33
+ subject.next({
34
+ loadState: 'loaded',
35
+ api: window.google.maps
36
+ });
37
+ };
38
+ var script = document.createElement('script');
39
+ script.onerror = (event, source, lineno, colno, error) => subject.next({
40
+ loadState: 'loadError',
41
+ error: coeerceError(event, error)
42
+ });
43
+ script.src = "https://maps.googleapis.com/maps/api/js?key=".concat(_googleMapsInput.default.apiKey, "&libraries=places&callback=").concat(callbackName, "&language=").concat(selectedLocale);
44
+ document.getElementsByTagName('head')[0].appendChild(script);
45
+ return subject;
46
+ }
47
+ function coeerceError(event, error) {
48
+ if (error) {
49
+ return error;
50
+ }
51
+ if (typeof event === 'string') {
52
+ return new Error(event);
53
+ }
54
+ return new Error(isErrorEvent(event) ? event.message : 'Failed to load Google Maps API');
55
+ }
56
+ function isErrorEvent(event) {
57
+ if (typeof event !== 'object' || event === null) {
58
+ return false;
59
+ }
60
+ if (!('message' in event)) {
61
+ return false;
62
+ }
63
+ return typeof event.message === 'string';
64
+ }
65
+ //# sourceMappingURL=loadGoogleMapsApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadGoogleMapsApi.js","names":["callbackName","authFailureCallbackName","locale","window","navigator","language","subject","loadGoogleMapsApi","selectedLocale","config","defaultLocale","BehaviorSubject","loadState","next","api","google","maps","script","document","createElement","onerror","event","source","lineno","colno","error","coeerceError","src","apiKey","getElementsByTagName","appendChild","Error","isErrorEvent","message"],"sources":["../../src/loader/loadGoogleMapsApi.ts"],"sourcesContent":["// @todo: remove the following line when part imports has been removed from this file\n///<reference types=\"@sanity/types/parts\" />\n\nimport {Observable, BehaviorSubject} from 'rxjs'\nimport config from 'config:@sanity/google-maps-input'\n\nconst callbackName = '___sanity_googleMapsApiCallback'\nconst authFailureCallbackName = 'gm_authFailure'\nconst locale = (typeof window !== 'undefined' && window.navigator.language) || 'en'\n\nexport interface LoadingState {\n loadState: 'loading'\n}\n\nexport interface LoadedState {\n loadState: 'loaded'\n api: typeof window.google.maps\n}\n\nexport interface LoadErrorState {\n loadState: 'loadError'\n error: Error\n}\n\nexport interface AuthErrorState {\n loadState: 'authError'\n}\n\nexport type GoogleLoadState = LoadingState | LoadedState | LoadErrorState | AuthErrorState\n\nlet subject: BehaviorSubject<GoogleLoadState>\n\nexport function loadGoogleMapsApi(): Observable<GoogleLoadState> {\n const selectedLocale = config.defaultLocale || locale || 'en-US'\n\n if (subject) {\n return subject\n }\n\n subject = new BehaviorSubject<GoogleLoadState>({loadState: 'loading'})\n\n window[authFailureCallbackName] = () => {\n delete window[authFailureCallbackName]\n subject.next({loadState: 'authError'})\n }\n\n window[callbackName] = () => {\n delete window[callbackName]\n subject.next({loadState: 'loaded', api: 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 ) =>\n subject.next({\n loadState: 'loadError',\n error: coeerceError(event, error),\n } as LoadErrorState)\n\n script.src = `https://maps.googleapis.com/maps/api/js?key=${config.apiKey}&libraries=places&callback=${callbackName}&language=${selectedLocale}`\n document.getElementsByTagName('head')[0].appendChild(script)\n\n return subject\n}\n\nfunction coeerceError(event: Event | string, error?: Error): Error {\n if (error) {\n return error\n }\n\n if (typeof event === 'string') {\n return new Error(event)\n }\n\n return new Error(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"],"mappings":";;;;;;AAGA;AACA;AAAqD;AAJrD;AACA;;AAKA,IAAMA,YAAY,GAAG,iCAAiC;AACtD,IAAMC,uBAAuB,GAAG,gBAAgB;AAChD,IAAMC,MAAM,GAAI,OAAOC,MAAM,KAAK,WAAW,IAAIA,MAAM,CAACC,SAAS,CAACC,QAAQ,IAAK,IAAI;AAsBnF,IAAIC,OAAyC;AAEtC,SAASC,iBAAiB,GAAgC;EAC/D,IAAMC,cAAc,GAAGC,wBAAM,CAACC,aAAa,IAAIR,MAAM,IAAI,OAAO;EAEhE,IAAII,OAAO,EAAE;IACX,OAAOA,OAAO;EAChB;EAEAA,OAAO,GAAG,IAAIK,qBAAe,CAAkB;IAACC,SAAS,EAAE;EAAS,CAAC,CAAC;EAEtET,MAAM,CAACF,uBAAuB,CAAC,GAAG,MAAM;IACtC,OAAOE,MAAM,CAACF,uBAAuB,CAAC;IACtCK,OAAO,CAACO,IAAI,CAAC;MAACD,SAAS,EAAE;IAAW,CAAC,CAAC;EACxC,CAAC;EAEDT,MAAM,CAACH,YAAY,CAAC,GAAG,MAAM;IAC3B,OAAOG,MAAM,CAACH,YAAY,CAAC;IAC3BM,OAAO,CAACO,IAAI,CAAC;MAACD,SAAS,EAAE,QAAQ;MAAEE,GAAG,EAAEX,MAAM,CAACY,MAAM,CAACC;IAAI,CAAC,CAAC;EAC9D,CAAC;EAED,IAAMC,MAAM,GAAGC,QAAQ,CAACC,aAAa,CAAC,QAAQ,CAAC;EAC/CF,MAAM,CAACG,OAAO,GAAG,CACfC,KAAqB,EACrBC,MAAe,EACfC,MAAe,EACfC,KAAc,EACdC,KAAa,KAEbnB,OAAO,CAACO,IAAI,CAAC;IACXD,SAAS,EAAE,WAAW;IACtBa,KAAK,EAAEC,YAAY,CAACL,KAAK,EAAEI,KAAK;EAClC,CAAC,CAAmB;EAEtBR,MAAM,CAACU,GAAG,yDAAkDlB,wBAAM,CAACmB,MAAM,wCAA8B5B,YAAY,uBAAaQ,cAAc,CAAE;EAChJU,QAAQ,CAACW,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAACC,WAAW,CAACb,MAAM,CAAC;EAE5D,OAAOX,OAAO;AAChB;AAEA,SAASoB,YAAY,CAACL,KAAqB,EAAEI,KAAa,EAAS;EACjE,IAAIA,KAAK,EAAE;IACT,OAAOA,KAAK;EACd;EAEA,IAAI,OAAOJ,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAO,IAAIU,KAAK,CAACV,KAAK,CAAC;EACzB;EAEA,OAAO,IAAIU,KAAK,CAACC,YAAY,CAACX,KAAK,CAAC,GAAGA,KAAK,CAACY,OAAO,GAAG,gCAAgC,CAAC;AAC1F;AAEA,SAASD,YAAY,CAACX,KAAc,EAAuB;EACzD,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,EAAE;IAC/C,OAAO,KAAK;EACd;EAEA,IAAI,EAAE,SAAS,IAAIA,KAAK,CAAC,EAAE;IACzB,OAAO,KAAK;EACd;EAEA,OAAO,OAAQA,KAAK,CAAgBY,OAAO,KAAK,QAAQ;AAC1D"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Arrow = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _util = require("./util");
9
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
+ class Arrow extends React.PureComponent {
13
+ constructor() {
14
+ super(...arguments);
15
+ _defineProperty(this, "line", void 0);
16
+ _defineProperty(this, "eventHandlers", {});
17
+ }
18
+ componentDidMount() {
19
+ var _this$props = this.props,
20
+ from = _this$props.from,
21
+ to = _this$props.to,
22
+ api = _this$props.api,
23
+ map = _this$props.map,
24
+ zIndex = _this$props.zIndex,
25
+ onClick = _this$props.onClick,
26
+ color = _this$props.color,
27
+ arrowRef = _this$props.arrowRef;
28
+ var lineSymbol = {
29
+ path: api.SymbolPath.FORWARD_OPEN_ARROW
30
+ };
31
+ this.line = new api.Polyline({
32
+ map,
33
+ zIndex,
34
+ path: [from, to],
35
+ icons: [{
36
+ icon: lineSymbol,
37
+ offset: '50%'
38
+ }],
39
+ strokeOpacity: 0.55,
40
+ strokeColor: color ? color.text : 'black'
41
+ });
42
+ if (onClick) {
43
+ this.eventHandlers.click = api.event.addListener(this.line, 'click', onClick);
44
+ }
45
+ if (arrowRef) {
46
+ arrowRef.current = this.line;
47
+ }
48
+ }
49
+ componentDidUpdate(prevProps) {
50
+ if (!this.line) {
51
+ return;
52
+ }
53
+ var _this$props2 = this.props,
54
+ from = _this$props2.from,
55
+ to = _this$props2.to,
56
+ map = _this$props2.map;
57
+ if (!(0, _util.latLngAreEqual)(prevProps.from, from) || !(0, _util.latLngAreEqual)(prevProps.to, to)) {
58
+ this.line.setPath([from, to]);
59
+ }
60
+ if (prevProps.map !== map) {
61
+ this.line.setMap(map);
62
+ }
63
+ }
64
+ componentWillUnmount() {
65
+ if (this.line) {
66
+ this.line.setMap(null);
67
+ }
68
+ if (this.eventHandlers.click) {
69
+ this.eventHandlers.click.remove();
70
+ }
71
+ }
72
+
73
+ // eslint-disable-next-line class-methods-use-this
74
+ render() {
75
+ return null;
76
+ }
77
+ }
78
+ exports.Arrow = Arrow;
79
+ //# sourceMappingURL=Arrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Arrow.js","names":["Arrow","React","PureComponent","componentDidMount","props","from","to","api","map","zIndex","onClick","color","arrowRef","lineSymbol","path","SymbolPath","FORWARD_OPEN_ARROW","line","Polyline","icons","icon","offset","strokeOpacity","strokeColor","text","eventHandlers","click","event","addListener","current","componentDidUpdate","prevProps","latLngAreEqual","setPath","setMap","componentWillUnmount","remove","render"],"sources":["../../src/map/Arrow.tsx"],"sourcesContent":["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() {\n return null\n }\n}\n"],"mappings":";;;;;;AAAA;AAEA;AAAqC;AAAA;AAAA;AAa9B,MAAMA,KAAK,SAASC,KAAK,CAACC,aAAa,CAAQ;EAAA;IAAA;IAAA;IAAA,uCAKhD,CAAC,CAAC;EAAA;EAENC,iBAAiB,GAAG;IAClB,kBAA+D,IAAI,CAACC,KAAK;MAAlEC,IAAI,eAAJA,IAAI;MAAEC,EAAE,eAAFA,EAAE;MAAEC,GAAG,eAAHA,GAAG;MAAEC,GAAG,eAAHA,GAAG;MAAEC,MAAM,eAANA,MAAM;MAAEC,OAAO,eAAPA,OAAO;MAAEC,KAAK,eAALA,KAAK;MAAEC,QAAQ,eAARA,QAAQ;IAC3D,IAAMC,UAAU,GAAG;MACjBC,IAAI,EAAEP,GAAG,CAACQ,UAAU,CAACC;IACvB,CAAC;IAED,IAAI,CAACC,IAAI,GAAG,IAAIV,GAAG,CAACW,QAAQ,CAAC;MAC3BV,GAAG;MACHC,MAAM;MACNK,IAAI,EAAE,CAACT,IAAI,EAAEC,EAAE,CAAC;MAChBa,KAAK,EAAE,CAAC;QAACC,IAAI,EAAEP,UAAU;QAAEQ,MAAM,EAAE;MAAK,CAAC,CAAC;MAC1CC,aAAa,EAAE,IAAI;MACnBC,WAAW,EAAEZ,KAAK,GAAGA,KAAK,CAACa,IAAI,GAAG;IACpC,CAAC,CAAC;IAEF,IAAId,OAAO,EAAE;MACX,IAAI,CAACe,aAAa,CAACC,KAAK,GAAGnB,GAAG,CAACoB,KAAK,CAACC,WAAW,CAAC,IAAI,CAACX,IAAI,EAAE,OAAO,EAAEP,OAAO,CAAC;IAC/E;IAEA,IAAIE,QAAQ,EAAE;MACZA,QAAQ,CAACiB,OAAO,GAAG,IAAI,CAACZ,IAAI;IAC9B;EACF;EAEAa,kBAAkB,CAACC,SAAgB,EAAE;IACnC,IAAI,CAAC,IAAI,CAACd,IAAI,EAAE;MACd;IACF;IAEA,mBAAwB,IAAI,CAACb,KAAK;MAA3BC,IAAI,gBAAJA,IAAI;MAAEC,EAAE,gBAAFA,EAAE;MAAEE,GAAG,gBAAHA,GAAG;IACpB,IAAI,CAAC,IAAAwB,oBAAc,EAACD,SAAS,CAAC1B,IAAI,EAAEA,IAAI,CAAC,IAAI,CAAC,IAAA2B,oBAAc,EAACD,SAAS,CAACzB,EAAE,EAAEA,EAAE,CAAC,EAAE;MAC9E,IAAI,CAACW,IAAI,CAACgB,OAAO,CAAC,CAAC5B,IAAI,EAAEC,EAAE,CAAC,CAAC;IAC/B;IAEA,IAAIyB,SAAS,CAACvB,GAAG,KAAKA,GAAG,EAAE;MACzB,IAAI,CAACS,IAAI,CAACiB,MAAM,CAAC1B,GAAG,CAAC;IACvB;EACF;EAEA2B,oBAAoB,GAAG;IACrB,IAAI,IAAI,CAAClB,IAAI,EAAE;MACb,IAAI,CAACA,IAAI,CAACiB,MAAM,CAAC,IAAI,CAAC;IACxB;IAEA,IAAI,IAAI,CAACT,aAAa,CAACC,KAAK,EAAE;MAC5B,IAAI,CAACD,aAAa,CAACC,KAAK,CAACU,MAAM,EAAE;IACnC;EACF;;EAEA;EACAC,MAAM,GAAG;IACP,OAAO,IAAI;EACb;AACF;AAAC"}