@abcagency/hc-ui-components 1.0.0
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/dist/globals.css +3 -0
- package/dist/index.js +4644 -0
- package/dist/output.css +784 -0
- package/dist/services/globals.css +3 -0
- package/dist/services/listingService.js +606 -0
- package/package.json +38 -0
- package/postcss.config.js +15 -0
- package/rollup.config.js +67 -0
- package/src/apis/hcApi.js +68 -0
- package/src/clientToken.js +9 -0
- package/src/components/layout/footer.js +34 -0
- package/src/components/layout/header.js +23 -0
- package/src/components/layout/layout.js +36 -0
- package/src/components/modules/accordions/MapAccordionItem.js +69 -0
- package/src/components/modules/accordions/default.js +173 -0
- package/src/components/modules/accordions/filterItem.js +53 -0
- package/src/components/modules/accordions/filters.js +44 -0
- package/src/components/modules/animations/slidein.js +41 -0
- package/src/components/modules/buttons/button-group-apply.js +75 -0
- package/src/components/modules/buttons/commute-pill.js +21 -0
- package/src/components/modules/buttons/default.js +196 -0
- package/src/components/modules/buttons/items-pill.js +31 -0
- package/src/components/modules/buttons/pill-wrapper.js +26 -0
- package/src/components/modules/buttons/show-all-button.js +20 -0
- package/src/components/modules/cards/default.js +168 -0
- package/src/components/modules/cards/filter.js +55 -0
- package/src/components/modules/dialogs/apply-dialog.js +47 -0
- package/src/components/modules/filter/commute.js +149 -0
- package/src/components/modules/filter/index.js +86 -0
- package/src/components/modules/filter/item.js +77 -0
- package/src/components/modules/filter/location.js +69 -0
- package/src/components/modules/filter/points-of-interest.js +43 -0
- package/src/components/modules/filter/radio-item.js +51 -0
- package/src/components/modules/filter/search.js +89 -0
- package/src/components/modules/filter/search.js.rej +9 -0
- package/src/components/modules/filter/sort.js +83 -0
- package/src/components/modules/form.js +362 -0
- package/src/components/modules/grid.js +75 -0
- package/src/components/modules/icon.js +33 -0
- package/src/components/modules/jobListing/listing-details.js +87 -0
- package/src/components/modules/jumbotron.js +81 -0
- package/src/components/modules/maps/info-window-card.js +17 -0
- package/src/components/modules/maps/info-window-content.js +60 -0
- package/src/components/modules/maps/list/field-mapper.js +113 -0
- package/src/components/modules/maps/list/header-item.js +90 -0
- package/src/components/modules/maps/list/header.js +46 -0
- package/src/components/modules/maps/list/index.js +104 -0
- package/src/components/modules/maps/list/item-expand-card/index.js +21 -0
- package/src/components/modules/maps/list/item-expand-card/recruiter-contact-nav.js +48 -0
- package/src/components/modules/maps/list/item-expand-card/recruiter-details.js +67 -0
- package/src/components/modules/maps/list/item-expand-card/recruiter-headshot.js +22 -0
- package/src/components/modules/maps/list/list-item/index.js +133 -0
- package/src/components/modules/maps/map-list.js +73 -0
- package/src/components/modules/maps/map-marker.js +84 -0
- package/src/components/modules/maps/map.js +218 -0
- package/src/components/modules/maps/place-marker.js +41 -0
- package/src/components/modules/maps/tabs.js +79 -0
- package/src/components/modules/navigation/nav-link.js +65 -0
- package/src/components/modules/navigation/navbar.js +109 -0
- package/src/components/modules/navigation/skip-link.js +21 -0
- package/src/components/modules/navigation/social.js +29 -0
- package/src/components/modules/sections/default.js +59 -0
- package/src/components/modules/sections/sectionContext.js +4 -0
- package/src/components/modules/video-player.js +126 -0
- package/src/constants/placeTypes.js +8 -0
- package/src/contexts/mapContext.js +116 -0
- package/src/contexts/mapListContext.js +212 -0
- package/src/contexts/placesContext.js +98 -0
- package/src/hooks/useClickOutside.js +16 -0
- package/src/hooks/useEventListener.js +25 -0
- package/src/hooks/useEventTracker.js +19 -0
- package/src/hooks/useList.js +102 -0
- package/src/hooks/useRefScrollProgress.js +24 -0
- package/src/hooks/useScript.js +63 -0
- package/src/hooks/useScrollDirection.js +39 -0
- package/src/hooks/useSectionTracker.js +95 -0
- package/src/hooks/useUserAgent.js +43 -0
- package/src/hooks/useWindowSize.js +28 -0
- package/src/index.css +25 -0
- package/src/index.js +116 -0
- package/src/services/configService.js +16 -0
- package/src/services/googlePlacesNearbyService.js +33 -0
- package/src/services/listingAggregatorService.js +42 -0
- package/src/services/listingEntityService.js +14 -0
- package/src/services/listingService.js +28 -0
- package/src/services/recruiterService.js +17 -0
- package/src/styles/fonts.js +0 -0
- package/src/styles/globals.css +25 -0
- package/src/tailwind/preset.default.js +15 -0
- package/src/tailwind/tailwind.config.js +126 -0
- package/src/util/arrayUtil.js +3 -0
- package/src/util/fieldMapper.js +19 -0
- package/src/util/filterUtil.js +195 -0
- package/src/util/loading.js +17 -0
- package/src/util/localStorageUtil.js +27 -0
- package/src/util/mapIconUtil.js +179 -0
- package/src/util/mapUtil.js +91 -0
- package/src/util/page-head.js +62 -0
- package/src/util/provider.js +12 -0
- package/src/util/sortUtil.js +33 -0
- package/src/util/stringUtils.js +6 -0
- package/src/util/urlFilterUtil.js +91 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,4644 @@
|
|
|
1
|
+
import React, { useContext, useState, useEffect, createContext, useRef, forwardRef, memo, Fragment } from 'react';
|
|
2
|
+
import { useLocation, useNavigate, Link, BrowserRouter } from 'react-router-dom';
|
|
3
|
+
import { twMerge } from 'tailwind-merge';
|
|
4
|
+
import { useScroll, useTransform, useSpring, motion } from 'framer-motion';
|
|
5
|
+
import { Icon } from '@iconify/react';
|
|
6
|
+
import * as RadixAccordion from '@radix-ui/react-accordion';
|
|
7
|
+
import { Combobox, Transition } from '@headlessui/react';
|
|
8
|
+
import usePlacesAutocomplete, { getLatLng, getGeocode } from 'use-places-autocomplete';
|
|
9
|
+
import * as Select from '@radix-ui/react-select';
|
|
10
|
+
import * as Dialog from '@radix-ui/react-dialog';
|
|
11
|
+
import { MarkerF, InfoWindow, Marker, InfoWindowF, GoogleMap, MarkerClustererF, useLoadScript } from '@react-google-maps/api';
|
|
12
|
+
import * as Tabs from '@radix-ui/react-tabs';
|
|
13
|
+
import { Provider as Provider$1 } from 'react-wrap-balancer';
|
|
14
|
+
|
|
15
|
+
function _iterableToArrayLimit(r, l) {
|
|
16
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
17
|
+
if (null != t) {
|
|
18
|
+
var e,
|
|
19
|
+
n,
|
|
20
|
+
i,
|
|
21
|
+
u,
|
|
22
|
+
a = [],
|
|
23
|
+
f = !0,
|
|
24
|
+
o = !1;
|
|
25
|
+
try {
|
|
26
|
+
if (i = (t = t.call(r)).next, 0 === l) {
|
|
27
|
+
if (Object(t) !== t) return;
|
|
28
|
+
f = !1;
|
|
29
|
+
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
|
30
|
+
} catch (r) {
|
|
31
|
+
o = !0, n = r;
|
|
32
|
+
} finally {
|
|
33
|
+
try {
|
|
34
|
+
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
|
|
35
|
+
} finally {
|
|
36
|
+
if (o) throw n;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return a;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function ownKeys(e, r) {
|
|
43
|
+
var t = Object.keys(e);
|
|
44
|
+
if (Object.getOwnPropertySymbols) {
|
|
45
|
+
var o = Object.getOwnPropertySymbols(e);
|
|
46
|
+
r && (o = o.filter(function (r) {
|
|
47
|
+
return Object.getOwnPropertyDescriptor(e, r).enumerable;
|
|
48
|
+
})), t.push.apply(t, o);
|
|
49
|
+
}
|
|
50
|
+
return t;
|
|
51
|
+
}
|
|
52
|
+
function _objectSpread2(e) {
|
|
53
|
+
for (var r = 1; r < arguments.length; r++) {
|
|
54
|
+
var t = null != arguments[r] ? arguments[r] : {};
|
|
55
|
+
r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
|
|
56
|
+
_defineProperty(e, r, t[r]);
|
|
57
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
|
|
58
|
+
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return e;
|
|
62
|
+
}
|
|
63
|
+
function _regeneratorRuntime() {
|
|
64
|
+
_regeneratorRuntime = function () {
|
|
65
|
+
return e;
|
|
66
|
+
};
|
|
67
|
+
var t,
|
|
68
|
+
e = {},
|
|
69
|
+
r = Object.prototype,
|
|
70
|
+
n = r.hasOwnProperty,
|
|
71
|
+
o = Object.defineProperty || function (t, e, r) {
|
|
72
|
+
t[e] = r.value;
|
|
73
|
+
},
|
|
74
|
+
i = "function" == typeof Symbol ? Symbol : {},
|
|
75
|
+
a = i.iterator || "@@iterator",
|
|
76
|
+
c = i.asyncIterator || "@@asyncIterator",
|
|
77
|
+
u = i.toStringTag || "@@toStringTag";
|
|
78
|
+
function define(t, e, r) {
|
|
79
|
+
return Object.defineProperty(t, e, {
|
|
80
|
+
value: r,
|
|
81
|
+
enumerable: !0,
|
|
82
|
+
configurable: !0,
|
|
83
|
+
writable: !0
|
|
84
|
+
}), t[e];
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
define({}, "");
|
|
88
|
+
} catch (t) {
|
|
89
|
+
define = function (t, e, r) {
|
|
90
|
+
return t[e] = r;
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function wrap(t, e, r, n) {
|
|
94
|
+
var i = e && e.prototype instanceof Generator ? e : Generator,
|
|
95
|
+
a = Object.create(i.prototype),
|
|
96
|
+
c = new Context(n || []);
|
|
97
|
+
return o(a, "_invoke", {
|
|
98
|
+
value: makeInvokeMethod(t, r, c)
|
|
99
|
+
}), a;
|
|
100
|
+
}
|
|
101
|
+
function tryCatch(t, e, r) {
|
|
102
|
+
try {
|
|
103
|
+
return {
|
|
104
|
+
type: "normal",
|
|
105
|
+
arg: t.call(e, r)
|
|
106
|
+
};
|
|
107
|
+
} catch (t) {
|
|
108
|
+
return {
|
|
109
|
+
type: "throw",
|
|
110
|
+
arg: t
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
e.wrap = wrap;
|
|
115
|
+
var h = "suspendedStart",
|
|
116
|
+
l = "suspendedYield",
|
|
117
|
+
f = "executing",
|
|
118
|
+
s = "completed",
|
|
119
|
+
y = {};
|
|
120
|
+
function Generator() {}
|
|
121
|
+
function GeneratorFunction() {}
|
|
122
|
+
function GeneratorFunctionPrototype() {}
|
|
123
|
+
var p = {};
|
|
124
|
+
define(p, a, function () {
|
|
125
|
+
return this;
|
|
126
|
+
});
|
|
127
|
+
var d = Object.getPrototypeOf,
|
|
128
|
+
v = d && d(d(values([])));
|
|
129
|
+
v && v !== r && n.call(v, a) && (p = v);
|
|
130
|
+
var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
|
|
131
|
+
function defineIteratorMethods(t) {
|
|
132
|
+
["next", "throw", "return"].forEach(function (e) {
|
|
133
|
+
define(t, e, function (t) {
|
|
134
|
+
return this._invoke(e, t);
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
function AsyncIterator(t, e) {
|
|
139
|
+
function invoke(r, o, i, a) {
|
|
140
|
+
var c = tryCatch(t[r], t, o);
|
|
141
|
+
if ("throw" !== c.type) {
|
|
142
|
+
var u = c.arg,
|
|
143
|
+
h = u.value;
|
|
144
|
+
return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
|
|
145
|
+
invoke("next", t, i, a);
|
|
146
|
+
}, function (t) {
|
|
147
|
+
invoke("throw", t, i, a);
|
|
148
|
+
}) : e.resolve(h).then(function (t) {
|
|
149
|
+
u.value = t, i(u);
|
|
150
|
+
}, function (t) {
|
|
151
|
+
return invoke("throw", t, i, a);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
a(c.arg);
|
|
155
|
+
}
|
|
156
|
+
var r;
|
|
157
|
+
o(this, "_invoke", {
|
|
158
|
+
value: function (t, n) {
|
|
159
|
+
function callInvokeWithMethodAndArg() {
|
|
160
|
+
return new e(function (e, r) {
|
|
161
|
+
invoke(t, n, e, r);
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
function makeInvokeMethod(e, r, n) {
|
|
169
|
+
var o = h;
|
|
170
|
+
return function (i, a) {
|
|
171
|
+
if (o === f) throw Error("Generator is already running");
|
|
172
|
+
if (o === s) {
|
|
173
|
+
if ("throw" === i) throw a;
|
|
174
|
+
return {
|
|
175
|
+
value: t,
|
|
176
|
+
done: !0
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
for (n.method = i, n.arg = a;;) {
|
|
180
|
+
var c = n.delegate;
|
|
181
|
+
if (c) {
|
|
182
|
+
var u = maybeInvokeDelegate(c, n);
|
|
183
|
+
if (u) {
|
|
184
|
+
if (u === y) continue;
|
|
185
|
+
return u;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
|
|
189
|
+
if (o === h) throw o = s, n.arg;
|
|
190
|
+
n.dispatchException(n.arg);
|
|
191
|
+
} else "return" === n.method && n.abrupt("return", n.arg);
|
|
192
|
+
o = f;
|
|
193
|
+
var p = tryCatch(e, r, n);
|
|
194
|
+
if ("normal" === p.type) {
|
|
195
|
+
if (o = n.done ? s : l, p.arg === y) continue;
|
|
196
|
+
return {
|
|
197
|
+
value: p.arg,
|
|
198
|
+
done: n.done
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
"throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
function maybeInvokeDelegate(e, r) {
|
|
206
|
+
var n = r.method,
|
|
207
|
+
o = e.iterator[n];
|
|
208
|
+
if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
|
|
209
|
+
var i = tryCatch(o, e.iterator, r.arg);
|
|
210
|
+
if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
|
|
211
|
+
var a = i.arg;
|
|
212
|
+
return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
|
|
213
|
+
}
|
|
214
|
+
function pushTryEntry(t) {
|
|
215
|
+
var e = {
|
|
216
|
+
tryLoc: t[0]
|
|
217
|
+
};
|
|
218
|
+
1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
|
|
219
|
+
}
|
|
220
|
+
function resetTryEntry(t) {
|
|
221
|
+
var e = t.completion || {};
|
|
222
|
+
e.type = "normal", delete e.arg, t.completion = e;
|
|
223
|
+
}
|
|
224
|
+
function Context(t) {
|
|
225
|
+
this.tryEntries = [{
|
|
226
|
+
tryLoc: "root"
|
|
227
|
+
}], t.forEach(pushTryEntry, this), this.reset(!0);
|
|
228
|
+
}
|
|
229
|
+
function values(e) {
|
|
230
|
+
if (e || "" === e) {
|
|
231
|
+
var r = e[a];
|
|
232
|
+
if (r) return r.call(e);
|
|
233
|
+
if ("function" == typeof e.next) return e;
|
|
234
|
+
if (!isNaN(e.length)) {
|
|
235
|
+
var o = -1,
|
|
236
|
+
i = function next() {
|
|
237
|
+
for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
|
|
238
|
+
return next.value = t, next.done = !0, next;
|
|
239
|
+
};
|
|
240
|
+
return i.next = i;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
throw new TypeError(typeof e + " is not iterable");
|
|
244
|
+
}
|
|
245
|
+
return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
|
|
246
|
+
value: GeneratorFunctionPrototype,
|
|
247
|
+
configurable: !0
|
|
248
|
+
}), o(GeneratorFunctionPrototype, "constructor", {
|
|
249
|
+
value: GeneratorFunction,
|
|
250
|
+
configurable: !0
|
|
251
|
+
}), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
|
|
252
|
+
var e = "function" == typeof t && t.constructor;
|
|
253
|
+
return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
|
|
254
|
+
}, e.mark = function (t) {
|
|
255
|
+
return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
|
|
256
|
+
}, e.awrap = function (t) {
|
|
257
|
+
return {
|
|
258
|
+
__await: t
|
|
259
|
+
};
|
|
260
|
+
}, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
|
|
261
|
+
return this;
|
|
262
|
+
}), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
|
|
263
|
+
void 0 === i && (i = Promise);
|
|
264
|
+
var a = new AsyncIterator(wrap(t, r, n, o), i);
|
|
265
|
+
return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
|
|
266
|
+
return t.done ? t.value : a.next();
|
|
267
|
+
});
|
|
268
|
+
}, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
|
|
269
|
+
return this;
|
|
270
|
+
}), define(g, "toString", function () {
|
|
271
|
+
return "[object Generator]";
|
|
272
|
+
}), e.keys = function (t) {
|
|
273
|
+
var e = Object(t),
|
|
274
|
+
r = [];
|
|
275
|
+
for (var n in e) r.push(n);
|
|
276
|
+
return r.reverse(), function next() {
|
|
277
|
+
for (; r.length;) {
|
|
278
|
+
var t = r.pop();
|
|
279
|
+
if (t in e) return next.value = t, next.done = !1, next;
|
|
280
|
+
}
|
|
281
|
+
return next.done = !0, next;
|
|
282
|
+
};
|
|
283
|
+
}, e.values = values, Context.prototype = {
|
|
284
|
+
constructor: Context,
|
|
285
|
+
reset: function (e) {
|
|
286
|
+
if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
|
|
287
|
+
},
|
|
288
|
+
stop: function () {
|
|
289
|
+
this.done = !0;
|
|
290
|
+
var t = this.tryEntries[0].completion;
|
|
291
|
+
if ("throw" === t.type) throw t.arg;
|
|
292
|
+
return this.rval;
|
|
293
|
+
},
|
|
294
|
+
dispatchException: function (e) {
|
|
295
|
+
if (this.done) throw e;
|
|
296
|
+
var r = this;
|
|
297
|
+
function handle(n, o) {
|
|
298
|
+
return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
|
|
299
|
+
}
|
|
300
|
+
for (var o = this.tryEntries.length - 1; o >= 0; --o) {
|
|
301
|
+
var i = this.tryEntries[o],
|
|
302
|
+
a = i.completion;
|
|
303
|
+
if ("root" === i.tryLoc) return handle("end");
|
|
304
|
+
if (i.tryLoc <= this.prev) {
|
|
305
|
+
var c = n.call(i, "catchLoc"),
|
|
306
|
+
u = n.call(i, "finallyLoc");
|
|
307
|
+
if (c && u) {
|
|
308
|
+
if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
|
|
309
|
+
if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
|
|
310
|
+
} else if (c) {
|
|
311
|
+
if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
|
|
312
|
+
} else {
|
|
313
|
+
if (!u) throw Error("try statement without catch or finally");
|
|
314
|
+
if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
abrupt: function (t, e) {
|
|
320
|
+
for (var r = this.tryEntries.length - 1; r >= 0; --r) {
|
|
321
|
+
var o = this.tryEntries[r];
|
|
322
|
+
if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
|
|
323
|
+
var i = o;
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
|
|
328
|
+
var a = i ? i.completion : {};
|
|
329
|
+
return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
|
|
330
|
+
},
|
|
331
|
+
complete: function (t, e) {
|
|
332
|
+
if ("throw" === t.type) throw t.arg;
|
|
333
|
+
return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
|
|
334
|
+
},
|
|
335
|
+
finish: function (t) {
|
|
336
|
+
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
|
|
337
|
+
var r = this.tryEntries[e];
|
|
338
|
+
if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
catch: function (t) {
|
|
342
|
+
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
|
|
343
|
+
var r = this.tryEntries[e];
|
|
344
|
+
if (r.tryLoc === t) {
|
|
345
|
+
var n = r.completion;
|
|
346
|
+
if ("throw" === n.type) {
|
|
347
|
+
var o = n.arg;
|
|
348
|
+
resetTryEntry(r);
|
|
349
|
+
}
|
|
350
|
+
return o;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
throw Error("illegal catch attempt");
|
|
354
|
+
},
|
|
355
|
+
delegateYield: function (e, r, n) {
|
|
356
|
+
return this.delegate = {
|
|
357
|
+
iterator: values(e),
|
|
358
|
+
resultName: r,
|
|
359
|
+
nextLoc: n
|
|
360
|
+
}, "next" === this.method && (this.arg = t), y;
|
|
361
|
+
}
|
|
362
|
+
}, e;
|
|
363
|
+
}
|
|
364
|
+
function _toPrimitive(t, r) {
|
|
365
|
+
if ("object" != typeof t || !t) return t;
|
|
366
|
+
var e = t[Symbol.toPrimitive];
|
|
367
|
+
if (void 0 !== e) {
|
|
368
|
+
var i = e.call(t, r || "default");
|
|
369
|
+
if ("object" != typeof i) return i;
|
|
370
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
371
|
+
}
|
|
372
|
+
return ("string" === r ? String : Number)(t);
|
|
373
|
+
}
|
|
374
|
+
function _toPropertyKey(t) {
|
|
375
|
+
var i = _toPrimitive(t, "string");
|
|
376
|
+
return "symbol" == typeof i ? i : i + "";
|
|
377
|
+
}
|
|
378
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
379
|
+
try {
|
|
380
|
+
var info = gen[key](arg);
|
|
381
|
+
var value = info.value;
|
|
382
|
+
} catch (error) {
|
|
383
|
+
reject(error);
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
if (info.done) {
|
|
387
|
+
resolve(value);
|
|
388
|
+
} else {
|
|
389
|
+
Promise.resolve(value).then(_next, _throw);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
function _asyncToGenerator(fn) {
|
|
393
|
+
return function () {
|
|
394
|
+
var self = this,
|
|
395
|
+
args = arguments;
|
|
396
|
+
return new Promise(function (resolve, reject) {
|
|
397
|
+
var gen = fn.apply(self, args);
|
|
398
|
+
function _next(value) {
|
|
399
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
400
|
+
}
|
|
401
|
+
function _throw(err) {
|
|
402
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
403
|
+
}
|
|
404
|
+
_next(undefined);
|
|
405
|
+
});
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
function _defineProperty(obj, key, value) {
|
|
409
|
+
key = _toPropertyKey(key);
|
|
410
|
+
if (key in obj) {
|
|
411
|
+
Object.defineProperty(obj, key, {
|
|
412
|
+
value: value,
|
|
413
|
+
enumerable: true,
|
|
414
|
+
configurable: true,
|
|
415
|
+
writable: true
|
|
416
|
+
});
|
|
417
|
+
} else {
|
|
418
|
+
obj[key] = value;
|
|
419
|
+
}
|
|
420
|
+
return obj;
|
|
421
|
+
}
|
|
422
|
+
function _extends() {
|
|
423
|
+
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|
424
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
425
|
+
var source = arguments[i];
|
|
426
|
+
for (var key in source) {
|
|
427
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
428
|
+
target[key] = source[key];
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
return target;
|
|
433
|
+
};
|
|
434
|
+
return _extends.apply(this, arguments);
|
|
435
|
+
}
|
|
436
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
437
|
+
if (source == null) return {};
|
|
438
|
+
var target = {};
|
|
439
|
+
for (var key in source) {
|
|
440
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
441
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
442
|
+
target[key] = source[key];
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
return target;
|
|
446
|
+
}
|
|
447
|
+
function _objectWithoutProperties(source, excluded) {
|
|
448
|
+
if (source == null) return {};
|
|
449
|
+
var target = _objectWithoutPropertiesLoose(source, excluded);
|
|
450
|
+
var key, i;
|
|
451
|
+
if (Object.getOwnPropertySymbols) {
|
|
452
|
+
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
453
|
+
for (i = 0; i < sourceSymbolKeys.length; i++) {
|
|
454
|
+
key = sourceSymbolKeys[i];
|
|
455
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
456
|
+
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
457
|
+
target[key] = source[key];
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
return target;
|
|
461
|
+
}
|
|
462
|
+
function _taggedTemplateLiteral(strings, raw) {
|
|
463
|
+
if (!raw) {
|
|
464
|
+
raw = strings.slice(0);
|
|
465
|
+
}
|
|
466
|
+
return Object.freeze(Object.defineProperties(strings, {
|
|
467
|
+
raw: {
|
|
468
|
+
value: Object.freeze(raw)
|
|
469
|
+
}
|
|
470
|
+
}));
|
|
471
|
+
}
|
|
472
|
+
function _slicedToArray(arr, i) {
|
|
473
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
474
|
+
}
|
|
475
|
+
function _toConsumableArray(arr) {
|
|
476
|
+
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
|
477
|
+
}
|
|
478
|
+
function _arrayWithoutHoles(arr) {
|
|
479
|
+
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
|
|
480
|
+
}
|
|
481
|
+
function _arrayWithHoles(arr) {
|
|
482
|
+
if (Array.isArray(arr)) return arr;
|
|
483
|
+
}
|
|
484
|
+
function _iterableToArray(iter) {
|
|
485
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
486
|
+
}
|
|
487
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
488
|
+
if (!o) return;
|
|
489
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
490
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
491
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
492
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
493
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
494
|
+
}
|
|
495
|
+
function _arrayLikeToArray(arr, len) {
|
|
496
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
497
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
498
|
+
return arr2;
|
|
499
|
+
}
|
|
500
|
+
function _nonIterableSpread() {
|
|
501
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
502
|
+
}
|
|
503
|
+
function _nonIterableRest() {
|
|
504
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
505
|
+
}
|
|
506
|
+
function _createForOfIteratorHelper(o, allowArrayLike) {
|
|
507
|
+
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
508
|
+
if (!it) {
|
|
509
|
+
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike ) {
|
|
510
|
+
if (it) o = it;
|
|
511
|
+
var i = 0;
|
|
512
|
+
var F = function () {};
|
|
513
|
+
return {
|
|
514
|
+
s: F,
|
|
515
|
+
n: function () {
|
|
516
|
+
if (i >= o.length) return {
|
|
517
|
+
done: true
|
|
518
|
+
};
|
|
519
|
+
return {
|
|
520
|
+
done: false,
|
|
521
|
+
value: o[i++]
|
|
522
|
+
};
|
|
523
|
+
},
|
|
524
|
+
e: function (e) {
|
|
525
|
+
throw e;
|
|
526
|
+
},
|
|
527
|
+
f: F
|
|
528
|
+
};
|
|
529
|
+
}
|
|
530
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
531
|
+
}
|
|
532
|
+
var normalCompletion = true,
|
|
533
|
+
didErr = false,
|
|
534
|
+
err;
|
|
535
|
+
return {
|
|
536
|
+
s: function () {
|
|
537
|
+
it = it.call(o);
|
|
538
|
+
},
|
|
539
|
+
n: function () {
|
|
540
|
+
var step = it.next();
|
|
541
|
+
normalCompletion = step.done;
|
|
542
|
+
return step;
|
|
543
|
+
},
|
|
544
|
+
e: function (e) {
|
|
545
|
+
didErr = true;
|
|
546
|
+
err = e;
|
|
547
|
+
},
|
|
548
|
+
f: function () {
|
|
549
|
+
try {
|
|
550
|
+
if (!normalCompletion && it.return != null) it.return();
|
|
551
|
+
} finally {
|
|
552
|
+
if (didErr) throw err;
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
};
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
var clientAuthKey = null;
|
|
559
|
+
var setClientAuthKey = function setClientAuthKey(key) {
|
|
560
|
+
clientAuthKey = key;
|
|
561
|
+
};
|
|
562
|
+
var getClientAuthKey = function getClientAuthKey() {
|
|
563
|
+
return clientAuthKey;
|
|
564
|
+
};
|
|
565
|
+
|
|
566
|
+
var baseURL = "https://https://api.myhirecontrol.com";
|
|
567
|
+
var login = /*#__PURE__*/function () {
|
|
568
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
569
|
+
var clientAuthKey, response, data;
|
|
570
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
571
|
+
while (1) switch (_context.prev = _context.next) {
|
|
572
|
+
case 0:
|
|
573
|
+
clientAuthKey = getClientAuthKey();
|
|
574
|
+
_context.prev = 1;
|
|
575
|
+
_context.next = 4;
|
|
576
|
+
return fetch("".concat(baseURL, "/auth/login"), {
|
|
577
|
+
method: 'POST',
|
|
578
|
+
headers: {
|
|
579
|
+
'Content-Type': 'application/json'
|
|
580
|
+
},
|
|
581
|
+
body: JSON.stringify({
|
|
582
|
+
clientAuthKey: clientAuthKey
|
|
583
|
+
})
|
|
584
|
+
});
|
|
585
|
+
case 4:
|
|
586
|
+
response = _context.sent;
|
|
587
|
+
_context.next = 7;
|
|
588
|
+
return response.json();
|
|
589
|
+
case 7:
|
|
590
|
+
data = _context.sent;
|
|
591
|
+
if (!(data.token && data.expiration)) {
|
|
592
|
+
_context.next = 12;
|
|
593
|
+
break;
|
|
594
|
+
}
|
|
595
|
+
sessionStorage.setItem('authToken', data.token);
|
|
596
|
+
sessionStorage.setItem('tokenExpiration', data.expiration);
|
|
597
|
+
return _context.abrupt("return", {
|
|
598
|
+
token: data.token,
|
|
599
|
+
expiration: data.expiration
|
|
600
|
+
});
|
|
601
|
+
case 12:
|
|
602
|
+
_context.next = 18;
|
|
603
|
+
break;
|
|
604
|
+
case 14:
|
|
605
|
+
_context.prev = 14;
|
|
606
|
+
_context.t0 = _context["catch"](1);
|
|
607
|
+
console.error('Login failed:', _context.t0);
|
|
608
|
+
throw _context.t0;
|
|
609
|
+
case 18:
|
|
610
|
+
case "end":
|
|
611
|
+
return _context.stop();
|
|
612
|
+
}
|
|
613
|
+
}, _callee, null, [[1, 14]]);
|
|
614
|
+
}));
|
|
615
|
+
return function login() {
|
|
616
|
+
return _ref.apply(this, arguments);
|
|
617
|
+
};
|
|
618
|
+
}();
|
|
619
|
+
var fetchWithAuth = /*#__PURE__*/function () {
|
|
620
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(url) {
|
|
621
|
+
var options,
|
|
622
|
+
token,
|
|
623
|
+
expirationDateTime,
|
|
624
|
+
currentTime,
|
|
625
|
+
authResponse,
|
|
626
|
+
headers,
|
|
627
|
+
finalOptions,
|
|
628
|
+
response,
|
|
629
|
+
_args2 = arguments;
|
|
630
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
631
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
632
|
+
case 0:
|
|
633
|
+
options = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {};
|
|
634
|
+
token = sessionStorage.getItem('authToken');
|
|
635
|
+
expirationDateTime = sessionStorage.getItem('tokenExpiration');
|
|
636
|
+
currentTime = new Date();
|
|
637
|
+
if (!(!token || !expirationDateTime || new Date(expirationDateTime) <= currentTime)) {
|
|
638
|
+
_context2.next = 9;
|
|
639
|
+
break;
|
|
640
|
+
}
|
|
641
|
+
_context2.next = 7;
|
|
642
|
+
return login();
|
|
643
|
+
case 7:
|
|
644
|
+
authResponse = _context2.sent;
|
|
645
|
+
token = authResponse.token;
|
|
646
|
+
case 9:
|
|
647
|
+
headers = new Headers(options.headers || {});
|
|
648
|
+
headers.append('Authorization', "Bearer ".concat(token));
|
|
649
|
+
finalOptions = _objectSpread2(_objectSpread2({}, options), {}, {
|
|
650
|
+
headers: headers
|
|
651
|
+
});
|
|
652
|
+
_context2.next = 14;
|
|
653
|
+
return fetch("".concat(baseURL).concat(url), finalOptions);
|
|
654
|
+
case 14:
|
|
655
|
+
response = _context2.sent;
|
|
656
|
+
if (response.ok) {
|
|
657
|
+
_context2.next = 17;
|
|
658
|
+
break;
|
|
659
|
+
}
|
|
660
|
+
throw new Error('Network response was not ok.');
|
|
661
|
+
case 17:
|
|
662
|
+
return _context2.abrupt("return", response);
|
|
663
|
+
case 18:
|
|
664
|
+
case "end":
|
|
665
|
+
return _context2.stop();
|
|
666
|
+
}
|
|
667
|
+
}, _callee2);
|
|
668
|
+
}));
|
|
669
|
+
return function fetchWithAuth(_x) {
|
|
670
|
+
return _ref2.apply(this, arguments);
|
|
671
|
+
};
|
|
672
|
+
}();
|
|
673
|
+
var api = {
|
|
674
|
+
get: function () {
|
|
675
|
+
var _get = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(url) {
|
|
676
|
+
var response;
|
|
677
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
678
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
679
|
+
case 0:
|
|
680
|
+
_context3.next = 2;
|
|
681
|
+
return fetchWithAuth(url);
|
|
682
|
+
case 2:
|
|
683
|
+
response = _context3.sent;
|
|
684
|
+
return _context3.abrupt("return", response.json());
|
|
685
|
+
case 4:
|
|
686
|
+
case "end":
|
|
687
|
+
return _context3.stop();
|
|
688
|
+
}
|
|
689
|
+
}, _callee3);
|
|
690
|
+
}));
|
|
691
|
+
function get(_x2) {
|
|
692
|
+
return _get.apply(this, arguments);
|
|
693
|
+
}
|
|
694
|
+
return get;
|
|
695
|
+
}(),
|
|
696
|
+
post: function () {
|
|
697
|
+
var _post = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(url, data) {
|
|
698
|
+
var response;
|
|
699
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
700
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
701
|
+
case 0:
|
|
702
|
+
_context4.next = 2;
|
|
703
|
+
return fetchWithAuth(url, {
|
|
704
|
+
method: 'POST',
|
|
705
|
+
headers: {
|
|
706
|
+
'Content-Type': 'application/json'
|
|
707
|
+
},
|
|
708
|
+
body: JSON.stringify(data)
|
|
709
|
+
});
|
|
710
|
+
case 2:
|
|
711
|
+
response = _context4.sent;
|
|
712
|
+
return _context4.abrupt("return", response.json());
|
|
713
|
+
case 4:
|
|
714
|
+
case "end":
|
|
715
|
+
return _context4.stop();
|
|
716
|
+
}
|
|
717
|
+
}, _callee4);
|
|
718
|
+
}));
|
|
719
|
+
function post(_x3, _x4) {
|
|
720
|
+
return _post.apply(this, arguments);
|
|
721
|
+
}
|
|
722
|
+
return post;
|
|
723
|
+
}()
|
|
724
|
+
};
|
|
725
|
+
|
|
726
|
+
var getListings = /*#__PURE__*/function () {
|
|
727
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(companyId) {
|
|
728
|
+
var response;
|
|
729
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
730
|
+
while (1) switch (_context.prev = _context.next) {
|
|
731
|
+
case 0:
|
|
732
|
+
_context.prev = 0;
|
|
733
|
+
_context.next = 4;
|
|
734
|
+
return api.get("/Listings");
|
|
735
|
+
case 4:
|
|
736
|
+
response = _context.sent;
|
|
737
|
+
return _context.abrupt("return", response);
|
|
738
|
+
case 8:
|
|
739
|
+
_context.prev = 8;
|
|
740
|
+
_context.t0 = _context["catch"](0);
|
|
741
|
+
console.error(_context.t0);
|
|
742
|
+
throw _context.t0;
|
|
743
|
+
case 12:
|
|
744
|
+
case "end":
|
|
745
|
+
return _context.stop();
|
|
746
|
+
}
|
|
747
|
+
}, _callee, null, [[0, 8]]);
|
|
748
|
+
}));
|
|
749
|
+
return function getListings(_x) {
|
|
750
|
+
return _ref.apply(this, arguments);
|
|
751
|
+
};
|
|
752
|
+
}();
|
|
753
|
+
|
|
754
|
+
var getRecruiters = /*#__PURE__*/function () {
|
|
755
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(recruiterIds) {
|
|
756
|
+
var params, response;
|
|
757
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
758
|
+
while (1) switch (_context.prev = _context.next) {
|
|
759
|
+
case 0:
|
|
760
|
+
_context.prev = 0;
|
|
761
|
+
params = recruiterIds.map(function (id) {
|
|
762
|
+
return "recruiterIds=".concat(id);
|
|
763
|
+
}).join("&");
|
|
764
|
+
_context.next = 4;
|
|
765
|
+
return api.get("/Recruiters?".concat(params));
|
|
766
|
+
case 4:
|
|
767
|
+
response = _context.sent;
|
|
768
|
+
return _context.abrupt("return", response.data);
|
|
769
|
+
case 8:
|
|
770
|
+
_context.prev = 8;
|
|
771
|
+
_context.t0 = _context["catch"](0);
|
|
772
|
+
console.error("Error fetching recruiters:", _context.t0);
|
|
773
|
+
throw _context.t0;
|
|
774
|
+
case 12:
|
|
775
|
+
case "end":
|
|
776
|
+
return _context.stop();
|
|
777
|
+
}
|
|
778
|
+
}, _callee, null, [[0, 8]]);
|
|
779
|
+
}));
|
|
780
|
+
return function getRecruiters(_x) {
|
|
781
|
+
return _ref.apply(this, arguments);
|
|
782
|
+
};
|
|
783
|
+
}();
|
|
784
|
+
|
|
785
|
+
var getListingEntities = /*#__PURE__*/function () {
|
|
786
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(entityIds) {
|
|
787
|
+
var origin,
|
|
788
|
+
response,
|
|
789
|
+
_args = arguments;
|
|
790
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
791
|
+
while (1) switch (_context.prev = _context.next) {
|
|
792
|
+
case 0:
|
|
793
|
+
origin = _args.length > 1 && _args[1] !== undefined ? _args[1] : '';
|
|
794
|
+
_context.prev = 1;
|
|
795
|
+
_context.next = 4;
|
|
796
|
+
return api.post("/ListingEntities?origin=".concat(origin), entityIds);
|
|
797
|
+
case 4:
|
|
798
|
+
response = _context.sent;
|
|
799
|
+
return _context.abrupt("return", response);
|
|
800
|
+
case 8:
|
|
801
|
+
_context.prev = 8;
|
|
802
|
+
_context.t0 = _context["catch"](1);
|
|
803
|
+
console.error("Error fetching listing entities:", _context.t0);
|
|
804
|
+
throw _context.t0;
|
|
805
|
+
case 12:
|
|
806
|
+
case "end":
|
|
807
|
+
return _context.stop();
|
|
808
|
+
}
|
|
809
|
+
}, _callee, null, [[1, 8]]);
|
|
810
|
+
}));
|
|
811
|
+
return function getListingEntities(_x) {
|
|
812
|
+
return _ref.apply(this, arguments);
|
|
813
|
+
};
|
|
814
|
+
}();
|
|
815
|
+
|
|
816
|
+
var getDistinctItemsByProximity = function getDistinctItemsByProximity(items, listingEntitiesDetails) {
|
|
817
|
+
var clusters = {};
|
|
818
|
+
if (!listingEntitiesDetails) return [];
|
|
819
|
+
var closeItemPairs = findCloseItems(listingEntitiesDetails);
|
|
820
|
+
if (closeItemPairs.length > 0) {
|
|
821
|
+
listingEntitiesDetails = adjustItemPositions(listingEntitiesDetails, closeItemPairs);
|
|
822
|
+
}
|
|
823
|
+
items === null || items === void 0 || items.forEach(function (item) {
|
|
824
|
+
if (item.entityId !== -1) {
|
|
825
|
+
var entityDetails = listingEntitiesDetails[item.entityId];
|
|
826
|
+
if (!entityDetails) {
|
|
827
|
+
console.error("Details not found for entityId: ".concat(item.entityId));
|
|
828
|
+
return;
|
|
829
|
+
}
|
|
830
|
+
item.mapDetails = entityDetails;
|
|
831
|
+
if (!clusters[item.entityId]) {
|
|
832
|
+
clusters[item.entityId] = _objectSpread2(_objectSpread2({}, item.mapDetails), {}, {
|
|
833
|
+
items: _defineProperty({}, item.id, item)
|
|
834
|
+
});
|
|
835
|
+
} else {
|
|
836
|
+
clusters[item.entityId].items[item.id] = item;
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
});
|
|
840
|
+
return Object.values(clusters);
|
|
841
|
+
};
|
|
842
|
+
var findCloseItems = function findCloseItems(itemsObj) {
|
|
843
|
+
var closeItems = [];
|
|
844
|
+
var items = Object.values(itemsObj); // Convert object to array for iteration
|
|
845
|
+
var proximityThreshold = 0.0001;
|
|
846
|
+
for (var i = 0; i < items.length; i++) {
|
|
847
|
+
for (var j = i + 1; j < items.length; j++) {
|
|
848
|
+
var distanceLat = Math.abs(items[i].latitude - items[j].latitude);
|
|
849
|
+
var distanceLng = Math.abs(items[i].longitude - items[j].longitude);
|
|
850
|
+
if (distanceLat < proximityThreshold && distanceLng < proximityThreshold) {
|
|
851
|
+
closeItems.push({
|
|
852
|
+
item1: items[i],
|
|
853
|
+
item2: items[j]
|
|
854
|
+
});
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
return closeItems;
|
|
859
|
+
};
|
|
860
|
+
var adjustItemPositions = function adjustItemPositions(itemsObj, closeItemPairs) {
|
|
861
|
+
var adjustmentValue = 0.0001;
|
|
862
|
+
var adjustedItems = _objectSpread2({}, itemsObj); // Create a shallow copy of the object
|
|
863
|
+
|
|
864
|
+
closeItemPairs.forEach(function (pair) {
|
|
865
|
+
if (adjustedItems[pair.item1.id] && adjustedItems[pair.item2.id]) {
|
|
866
|
+
adjustedItems[pair.item2.id].latitude += adjustmentValue;
|
|
867
|
+
adjustedItems[pair.item2.id].longitude += adjustmentValue;
|
|
868
|
+
}
|
|
869
|
+
});
|
|
870
|
+
return adjustedItems;
|
|
871
|
+
};
|
|
872
|
+
var clusterOptions = function clusterOptions(clusterGridSize, fillColor) {
|
|
873
|
+
return {
|
|
874
|
+
gridSize: clusterGridSize,
|
|
875
|
+
styles: [{
|
|
876
|
+
url: createSvgDataUri(fillColor),
|
|
877
|
+
textColor: 'white',
|
|
878
|
+
height: 40,
|
|
879
|
+
width: 40
|
|
880
|
+
}]
|
|
881
|
+
};
|
|
882
|
+
};
|
|
883
|
+
function createSvgDataUri(fillColor) {
|
|
884
|
+
var svg = "<svg width=\"50\" height=\"50\" xmlns=\"http://www.w3.org/2000/svg\">\n\t <circle cx=\"25\" cy=\"25\" r=\"20\" fill=\"".concat(fillColor, "\" />\n\t</svg>");
|
|
885
|
+
return "data:image/svg+xml;base64,".concat(btoa(svg));
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
var fetchListings = /*#__PURE__*/function () {
|
|
889
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(query, siteConfig) {
|
|
890
|
+
var listingsResult, recruiterIds, fetchedRecruiters, distinctEntityIds, fetchedEntities, distinctItems;
|
|
891
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
892
|
+
while (1) switch (_context.prev = _context.next) {
|
|
893
|
+
case 0:
|
|
894
|
+
_context.prev = 0;
|
|
895
|
+
_context.next = 3;
|
|
896
|
+
return getListings(siteConfig.companyId, 5000, 1, query);
|
|
897
|
+
case 3:
|
|
898
|
+
listingsResult = _context.sent;
|
|
899
|
+
recruiterIds = _toConsumableArray(new Set(listingsResult.map(function (listing) {
|
|
900
|
+
return listing.recruiterId;
|
|
901
|
+
})));
|
|
902
|
+
_context.next = 7;
|
|
903
|
+
return getRecruiters(recruiterIds);
|
|
904
|
+
case 7:
|
|
905
|
+
fetchedRecruiters = _context.sent;
|
|
906
|
+
distinctEntityIds = _toConsumableArray(new Set(listingsResult.map(function (listing) {
|
|
907
|
+
return listing.entityId;
|
|
908
|
+
})));
|
|
909
|
+
_context.next = 11;
|
|
910
|
+
return getListingEntities(distinctEntityIds);
|
|
911
|
+
case 11:
|
|
912
|
+
fetchedEntities = _context.sent;
|
|
913
|
+
distinctItems = getDistinctItemsByProximity(listingsResult, fetchedEntities);
|
|
914
|
+
return _context.abrupt("return", {
|
|
915
|
+
listingsResult: listingsResult,
|
|
916
|
+
fetchedRecruiters: fetchedRecruiters,
|
|
917
|
+
fetchedEntities: fetchedEntities,
|
|
918
|
+
distinctItems: distinctItems
|
|
919
|
+
});
|
|
920
|
+
case 16:
|
|
921
|
+
_context.prev = 16;
|
|
922
|
+
_context.t0 = _context["catch"](0);
|
|
923
|
+
console.error("Error fetching listings:", _context.t0);
|
|
924
|
+
throw _context.t0;
|
|
925
|
+
case 20:
|
|
926
|
+
case "end":
|
|
927
|
+
return _context.stop();
|
|
928
|
+
}
|
|
929
|
+
}, _callee, null, [[0, 16]]);
|
|
930
|
+
}));
|
|
931
|
+
return function fetchListings(_x, _x2) {
|
|
932
|
+
return _ref.apply(this, arguments);
|
|
933
|
+
};
|
|
934
|
+
}();
|
|
935
|
+
|
|
936
|
+
var getFilterOptions = function getFilterOptions(listings, filteredListings, field) {
|
|
937
|
+
var excludeZeroCount = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
938
|
+
var options = new Set();
|
|
939
|
+
listings.forEach(function (listing) {
|
|
940
|
+
if (listing.fields[field]) {
|
|
941
|
+
options.add(listing.fields[field]);
|
|
942
|
+
}
|
|
943
|
+
});
|
|
944
|
+
var optionCounts = {};
|
|
945
|
+
options.forEach(function (option) {
|
|
946
|
+
optionCounts[option] = 0;
|
|
947
|
+
});
|
|
948
|
+
filteredListings.forEach(function (listing) {
|
|
949
|
+
var value = listing.fields[field];
|
|
950
|
+
if (value && optionCounts.hasOwnProperty(value)) {
|
|
951
|
+
optionCounts[value] += 1;
|
|
952
|
+
}
|
|
953
|
+
});
|
|
954
|
+
return Array.from(options).sort().map(function (option) {
|
|
955
|
+
return {
|
|
956
|
+
name: option,
|
|
957
|
+
count: optionCounts[option] || 0
|
|
958
|
+
};
|
|
959
|
+
}).filter(function (option) {
|
|
960
|
+
return !(excludeZeroCount === true && option.count === 0);
|
|
961
|
+
});
|
|
962
|
+
};
|
|
963
|
+
var getSpecialFeatureOptions = function getSpecialFeatureOptions(listings, filteredListings, siteConfig, favorites) {
|
|
964
|
+
var specialFeatures = siteConfig.specialFeatures;
|
|
965
|
+
var featureCounts = Object.keys(specialFeatures).sort().reduce(function (acc, key) {
|
|
966
|
+
acc[specialFeatures[key]] = 0;
|
|
967
|
+
return acc;
|
|
968
|
+
}, {});
|
|
969
|
+
filteredListings.forEach(function (listing) {
|
|
970
|
+
Object.entries(specialFeatures).forEach(function (_ref) {
|
|
971
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
972
|
+
featureKey = _ref2[0],
|
|
973
|
+
featureName = _ref2[1];
|
|
974
|
+
if (listing.fields[featureKey] === 1) {
|
|
975
|
+
featureCounts[featureName] += 1;
|
|
976
|
+
}
|
|
977
|
+
});
|
|
978
|
+
});
|
|
979
|
+
var specialFeatureOptions = Object.entries(featureCounts).map(function (_ref3) {
|
|
980
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
981
|
+
name = _ref4[0],
|
|
982
|
+
count = _ref4[1];
|
|
983
|
+
return {
|
|
984
|
+
name: name,
|
|
985
|
+
count: count
|
|
986
|
+
};
|
|
987
|
+
});
|
|
988
|
+
var _iterator = _createForOfIteratorHelper(specialFeatureOptions),
|
|
989
|
+
_step;
|
|
990
|
+
try {
|
|
991
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
992
|
+
var option = _step.value;
|
|
993
|
+
if (option.name === 'Favorite') {
|
|
994
|
+
option.count = filteredListings.filter(function (x) {
|
|
995
|
+
return favorites.includes(x.id);
|
|
996
|
+
}).length;
|
|
997
|
+
}
|
|
998
|
+
}
|
|
999
|
+
} catch (err) {
|
|
1000
|
+
_iterator.e(err);
|
|
1001
|
+
} finally {
|
|
1002
|
+
_iterator.f();
|
|
1003
|
+
}
|
|
1004
|
+
return specialFeatureOptions;
|
|
1005
|
+
};
|
|
1006
|
+
var getPointsOfInterestOptions = function getPointsOfInterestOptions(pointsOfInterestNames) {
|
|
1007
|
+
return Object.entries(pointsOfInterestNames).sort().map(function (_ref5) {
|
|
1008
|
+
var _ref6 = _slicedToArray(_ref5, 2),
|
|
1009
|
+
key = _ref6[0],
|
|
1010
|
+
name = _ref6[1];
|
|
1011
|
+
return {
|
|
1012
|
+
key: key,
|
|
1013
|
+
name: name
|
|
1014
|
+
};
|
|
1015
|
+
});
|
|
1016
|
+
};
|
|
1017
|
+
var generateFilterOptions = function generateFilterOptions(filteredListings, allListings, siteConfig, filterOptions) {
|
|
1018
|
+
var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
|
|
1019
|
+
var favorites = arguments.length > 5 ? arguments[5] : undefined;
|
|
1020
|
+
if (allListings.length > 0) {
|
|
1021
|
+
var dynamicFilters = siteConfig.fieldFiltersShown.map(function (fieldName) {
|
|
1022
|
+
if (fieldName === parentField && filterOptions !== null && filterOptions !== void 0 && filterOptions.filters) {
|
|
1023
|
+
return filterOptions.filters.find(function (filter) {
|
|
1024
|
+
return filter.id === fieldName;
|
|
1025
|
+
});
|
|
1026
|
+
}
|
|
1027
|
+
if (fieldName == "specialFeatures") {
|
|
1028
|
+
return {
|
|
1029
|
+
id: fieldName,
|
|
1030
|
+
title: siteConfig.fieldNames[fieldName],
|
|
1031
|
+
items: getSpecialFeatureOptions(allListings, filteredListings, siteConfig, favorites).sort()
|
|
1032
|
+
};
|
|
1033
|
+
}
|
|
1034
|
+
return {
|
|
1035
|
+
id: fieldName,
|
|
1036
|
+
title: siteConfig.fieldNames[fieldName],
|
|
1037
|
+
items: getFilterOptions(allListings, filteredListings, fieldName)
|
|
1038
|
+
};
|
|
1039
|
+
});
|
|
1040
|
+
var locations = siteConfig.locationFiltersShown.map(function (fieldName, index) {
|
|
1041
|
+
if (index === 0 && filterOptions !== null && filterOptions !== void 0 && filterOptions.locations) {
|
|
1042
|
+
return filterOptions.locations.find(function (filter) {
|
|
1043
|
+
return filter.id === fieldName;
|
|
1044
|
+
});
|
|
1045
|
+
}
|
|
1046
|
+
return {
|
|
1047
|
+
id: fieldName,
|
|
1048
|
+
title: siteConfig.fieldNames[fieldName],
|
|
1049
|
+
items: getFilterOptions(allListings, filteredListings, fieldName, true)
|
|
1050
|
+
};
|
|
1051
|
+
});
|
|
1052
|
+
var pointsOfInterest = {
|
|
1053
|
+
id: "pointsOfInterest",
|
|
1054
|
+
title: siteConfig.pointsOfInterestConfig.title,
|
|
1055
|
+
items: getPointsOfInterestOptions(siteConfig.pointsOfInterestConfig.pointsOfInterestNames)
|
|
1056
|
+
};
|
|
1057
|
+
return {
|
|
1058
|
+
filters: dynamicFilters,
|
|
1059
|
+
locations: locations,
|
|
1060
|
+
pointsOfInterest: pointsOfInterest
|
|
1061
|
+
};
|
|
1062
|
+
}
|
|
1063
|
+
return null;
|
|
1064
|
+
};
|
|
1065
|
+
var applyFilters = function applyFilters(allListings, selectedFilters, query, listingEntities, favorites, siteConfig) {
|
|
1066
|
+
var results = allListings;
|
|
1067
|
+
var invertedSpecialFeaturesMap;
|
|
1068
|
+
if (siteConfig.specialFeatures) {
|
|
1069
|
+
invertedSpecialFeaturesMap = Object.entries(siteConfig.specialFeatures).reduce(function (acc, _ref7) {
|
|
1070
|
+
var _ref8 = _slicedToArray(_ref7, 2),
|
|
1071
|
+
key = _ref8[0],
|
|
1072
|
+
value = _ref8[1];
|
|
1073
|
+
acc[value] = key;
|
|
1074
|
+
return acc;
|
|
1075
|
+
}, {});
|
|
1076
|
+
}
|
|
1077
|
+
var hasFavorite = !!selectedFilters.specialFeatures && !!selectedFilters.specialFeatures.Favorite;
|
|
1078
|
+
if (hasFavorite && selectedFilters.specialFeatures.Favorite == true) {
|
|
1079
|
+
results = results.filter(function (x) {
|
|
1080
|
+
return favorites.includes(x.id);
|
|
1081
|
+
});
|
|
1082
|
+
}
|
|
1083
|
+
var favorite;
|
|
1084
|
+
if (hasFavorite) {
|
|
1085
|
+
favorite = selectedFilters.specialFeatures.Favorite;
|
|
1086
|
+
delete selectedFilters.specialFeatures.Favorite;
|
|
1087
|
+
}
|
|
1088
|
+
var _loop = function _loop() {
|
|
1089
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
1090
|
+
field = _Object$entries$_i[0],
|
|
1091
|
+
filterItems = _Object$entries$_i[1];
|
|
1092
|
+
var formattedField = field;
|
|
1093
|
+
if (field === "pointsOfInterest") return 1; // continue
|
|
1094
|
+
if (field === "specialFeatures" && invertedSpecialFeaturesMap && Object.keys(filterItems).length > 0) {
|
|
1095
|
+
results = results.filter(function (listing) {
|
|
1096
|
+
return Object.entries(filterItems).some(function (_ref9) {
|
|
1097
|
+
var _ref10 = _slicedToArray(_ref9, 2),
|
|
1098
|
+
filterName = _ref10[0],
|
|
1099
|
+
filterValue = _ref10[1];
|
|
1100
|
+
var listingFieldName = invertedSpecialFeaturesMap[filterName];
|
|
1101
|
+
return filterValue && listing.fields[listingFieldName] === 1;
|
|
1102
|
+
});
|
|
1103
|
+
});
|
|
1104
|
+
} else if (Object.keys(filterItems).length > 0) {
|
|
1105
|
+
results = results.filter(function (listing) {
|
|
1106
|
+
return filterItems.hasOwnProperty(listing.fields[formattedField]);
|
|
1107
|
+
});
|
|
1108
|
+
}
|
|
1109
|
+
};
|
|
1110
|
+
for (var _i = 0, _Object$entries = Object.entries(selectedFilters); _i < _Object$entries.length; _i++) {
|
|
1111
|
+
if (_loop()) continue;
|
|
1112
|
+
}
|
|
1113
|
+
if (query) {
|
|
1114
|
+
results = results.filter(function (listing) {
|
|
1115
|
+
var _Object$values;
|
|
1116
|
+
return (_Object$values = Object.values(listing.fields)) === null || _Object$values === void 0 ? void 0 : _Object$values.some(function (value) {
|
|
1117
|
+
return value === null || value === void 0 ? void 0 : value.toString().toLowerCase().includes(query.toLowerCase());
|
|
1118
|
+
});
|
|
1119
|
+
});
|
|
1120
|
+
}
|
|
1121
|
+
var distinctItems = getDistinctItemsByProximity(results, listingEntities);
|
|
1122
|
+
if (hasFavorite) {
|
|
1123
|
+
selectedFilters.specialFeatures.Favorite = favorite;
|
|
1124
|
+
}
|
|
1125
|
+
return {
|
|
1126
|
+
filteredListings: results,
|
|
1127
|
+
mapItems: distinctItems
|
|
1128
|
+
};
|
|
1129
|
+
};
|
|
1130
|
+
var filterListingsByLocation = function filterListingsByLocation(allListings, selectedLocation, listingEntities) {
|
|
1131
|
+
var results = allListings;
|
|
1132
|
+
if (selectedLocation !== null) {
|
|
1133
|
+
results = results.filter(function (item) {
|
|
1134
|
+
return selectedLocation.items.hasOwnProperty(item.id);
|
|
1135
|
+
});
|
|
1136
|
+
}
|
|
1137
|
+
var mapItems = getDistinctItemsByProximity(results, listingEntities);
|
|
1138
|
+
return {
|
|
1139
|
+
filteredListings: results,
|
|
1140
|
+
mapItems: mapItems
|
|
1141
|
+
};
|
|
1142
|
+
};
|
|
1143
|
+
|
|
1144
|
+
var getStorageObject = function getStorageObject(item) {
|
|
1145
|
+
var _JSON$parse;
|
|
1146
|
+
var defaultItem = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
1147
|
+
if (typeof window == 'undefined') return defaultItem;
|
|
1148
|
+
if (localStorage.getItem(item) == null) return defaultItem;
|
|
1149
|
+
if (localStorage.getItem(item) == 'undefined') {
|
|
1150
|
+
localStorage.removeItem(item);
|
|
1151
|
+
}
|
|
1152
|
+
return (_JSON$parse = JSON.parse(localStorage.getItem(item))) !== null && _JSON$parse !== void 0 ? _JSON$parse : defaultItem;
|
|
1153
|
+
};
|
|
1154
|
+
var getStorageItem = function getStorageItem(item) {
|
|
1155
|
+
var _localStorage$getItem;
|
|
1156
|
+
var defaultItem = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
1157
|
+
if (typeof window == 'undefined') return defaultItem;
|
|
1158
|
+
if (localStorage.getItem(item) == null) return defaultItem;
|
|
1159
|
+
if (localStorage.getItem(item) == 'undefined') {
|
|
1160
|
+
localStorage.removeItem(item);
|
|
1161
|
+
}
|
|
1162
|
+
return (_localStorage$getItem = localStorage.getItem(item)) !== null && _localStorage$getItem !== void 0 ? _localStorage$getItem : defaultItem;
|
|
1163
|
+
};
|
|
1164
|
+
var setStorageObject = function setStorageObject(key, item) {
|
|
1165
|
+
if (typeof window == 'undefined') return;
|
|
1166
|
+
if (item == undefined) return;
|
|
1167
|
+
try {
|
|
1168
|
+
localStorage.setItem(key, JSON.stringify(item));
|
|
1169
|
+
} catch (err) {
|
|
1170
|
+
console.log(err);
|
|
1171
|
+
}
|
|
1172
|
+
};
|
|
1173
|
+
|
|
1174
|
+
var updateURLWithFilters = function updateURLWithFilters(filters, location, navigate, query) {
|
|
1175
|
+
console.log("attempting to update url");
|
|
1176
|
+
console.log(filters);
|
|
1177
|
+
console.log(location);
|
|
1178
|
+
console.log(navigate);
|
|
1179
|
+
console.log(query);
|
|
1180
|
+
var searchParams = new URLSearchParams();
|
|
1181
|
+
|
|
1182
|
+
// Add the new filters to search params
|
|
1183
|
+
Object.keys(filters).forEach(function (category) {
|
|
1184
|
+
Object.keys(filters[category]).forEach(function (filter) {
|
|
1185
|
+
if (filters[category][filter]) {
|
|
1186
|
+
var key = "".concat(category, ".").concat(filter);
|
|
1187
|
+
searchParams.set(key, 'true');
|
|
1188
|
+
}
|
|
1189
|
+
});
|
|
1190
|
+
});
|
|
1191
|
+
|
|
1192
|
+
// Add the query to search params if it exists
|
|
1193
|
+
if (query) {
|
|
1194
|
+
searchParams.set('query', query);
|
|
1195
|
+
}
|
|
1196
|
+
navigate({
|
|
1197
|
+
search: searchParams.toString()
|
|
1198
|
+
}, {
|
|
1199
|
+
replace: true
|
|
1200
|
+
});
|
|
1201
|
+
notifyParentOfUrlChange();
|
|
1202
|
+
};
|
|
1203
|
+
function notifyParentOfUrlChange() {
|
|
1204
|
+
setTimeout(function () {
|
|
1205
|
+
var message = {
|
|
1206
|
+
type: 'URL_CHANGE',
|
|
1207
|
+
url: window.location.href
|
|
1208
|
+
};
|
|
1209
|
+
window.parent.postMessage(message, "*");
|
|
1210
|
+
}, 500);
|
|
1211
|
+
}
|
|
1212
|
+
var parseQueryParams = function parseQueryParams(search) {
|
|
1213
|
+
var queryParams = {};
|
|
1214
|
+
if (!search) return queryParams;
|
|
1215
|
+
var queryString = search.split('?')[1];
|
|
1216
|
+
if (!queryString) {
|
|
1217
|
+
return queryParams;
|
|
1218
|
+
}
|
|
1219
|
+
queryString = queryString.replaceAll('+', ' ');
|
|
1220
|
+
queryString.split('&').forEach(function (param) {
|
|
1221
|
+
var _param$split = param.split('='),
|
|
1222
|
+
_param$split2 = _slicedToArray(_param$split, 2),
|
|
1223
|
+
key = _param$split2[0],
|
|
1224
|
+
value = _param$split2[1];
|
|
1225
|
+
queryParams[decodeURIComponent(key)] = decodeURIComponent(value);
|
|
1226
|
+
});
|
|
1227
|
+
return queryParams;
|
|
1228
|
+
};
|
|
1229
|
+
var filtersFromURL = function filtersFromURL(location) {
|
|
1230
|
+
if (!location || !location.search) return;
|
|
1231
|
+
var filters = {};
|
|
1232
|
+
var queryParam = null;
|
|
1233
|
+
var queryParams = parseQueryParams(location.search);
|
|
1234
|
+
if (!queryParams) return;
|
|
1235
|
+
Object.keys(queryParams).forEach(function (key) {
|
|
1236
|
+
if (key && key.includes('.')) {
|
|
1237
|
+
var _key$split = key.split('.'),
|
|
1238
|
+
_key$split2 = _slicedToArray(_key$split, 2),
|
|
1239
|
+
category = _key$split2[0],
|
|
1240
|
+
filter = _key$split2[1];
|
|
1241
|
+
if (!filters[category]) {
|
|
1242
|
+
filters[category] = {};
|
|
1243
|
+
}
|
|
1244
|
+
filters[category][filter] = queryParams[key] === 'true';
|
|
1245
|
+
} else if (key === 'query') {
|
|
1246
|
+
queryParam = queryParams[key];
|
|
1247
|
+
}
|
|
1248
|
+
});
|
|
1249
|
+
return {
|
|
1250
|
+
filters: filters,
|
|
1251
|
+
query: queryParam
|
|
1252
|
+
};
|
|
1253
|
+
};
|
|
1254
|
+
var hasFiltersInURL = function hasFiltersInURL(location) {
|
|
1255
|
+
if (!location || !location.search) return;
|
|
1256
|
+
var queryParams = parseQueryParams(location.search);
|
|
1257
|
+
if (!queryParams) return;
|
|
1258
|
+
return Object.keys(queryParams).some(function (key) {
|
|
1259
|
+
return key.includes('.');
|
|
1260
|
+
});
|
|
1261
|
+
};
|
|
1262
|
+
var hasQueryInUrl = function hasQueryInUrl(location) {
|
|
1263
|
+
console.log(location);
|
|
1264
|
+
if (!location || !location.search) return;
|
|
1265
|
+
var queryParams = parseQueryParams(location.search);
|
|
1266
|
+
if (!queryParams) return;
|
|
1267
|
+
return Object.keys(queryParams).includes('query');
|
|
1268
|
+
};
|
|
1269
|
+
|
|
1270
|
+
var MapListContext = /*#__PURE__*/createContext();
|
|
1271
|
+
var useMapList = function useMapList() {
|
|
1272
|
+
return useContext(MapListContext);
|
|
1273
|
+
};
|
|
1274
|
+
var getQuery = function getQuery(location) {
|
|
1275
|
+
var query;
|
|
1276
|
+
if (!hasQueryInUrl(location)) {
|
|
1277
|
+
query = typeof window !== 'undefined' ? localStorage.getItem('query') : '';
|
|
1278
|
+
} else {
|
|
1279
|
+
query = filtersFromURL(location).query;
|
|
1280
|
+
}
|
|
1281
|
+
return query;
|
|
1282
|
+
};
|
|
1283
|
+
var MapListProvider = function MapListProvider(_ref) {
|
|
1284
|
+
var children = _ref.children,
|
|
1285
|
+
siteConfig = _ref.siteConfig,
|
|
1286
|
+
resetFilters = _ref.resetFilters;
|
|
1287
|
+
var location = useLocation();
|
|
1288
|
+
var navigate = useNavigate();
|
|
1289
|
+
var _useState = useState(getStorageObject("listings", [])),
|
|
1290
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1291
|
+
allListings = _useState2[0],
|
|
1292
|
+
setAllListings = _useState2[1];
|
|
1293
|
+
var _useState3 = useState([]),
|
|
1294
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
1295
|
+
filteredListings = _useState4[0],
|
|
1296
|
+
setFilteredListings = _useState4[1];
|
|
1297
|
+
var _useState5 = useState(false),
|
|
1298
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
1299
|
+
loading = _useState6[0],
|
|
1300
|
+
setLoading = _useState6[1];
|
|
1301
|
+
var _useState7 = useState(getStorageObject('mapItems', [])),
|
|
1302
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
1303
|
+
mapItems = _useState8[0],
|
|
1304
|
+
setMapItems = _useState8[1];
|
|
1305
|
+
var _useState9 = useState(function () {
|
|
1306
|
+
return resetFilters ? null : getQuery(location);
|
|
1307
|
+
}),
|
|
1308
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
1309
|
+
query = _useState10[0],
|
|
1310
|
+
setQuery = _useState10[1];
|
|
1311
|
+
var _useState11 = useState(getStorageObject("listingEntities", null)),
|
|
1312
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
1313
|
+
listingEntities = _useState12[0],
|
|
1314
|
+
setListingEntities = _useState12[1];
|
|
1315
|
+
var _useState13 = useState(true),
|
|
1316
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
1317
|
+
firstLoad = _useState14[0],
|
|
1318
|
+
setFirstLoad = _useState14[1];
|
|
1319
|
+
var _useState15 = useState(null),
|
|
1320
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
1321
|
+
commuteLocation = _useState16[0],
|
|
1322
|
+
setCommuteLocation = _useState16[1];
|
|
1323
|
+
var _useState17 = useState(function () {
|
|
1324
|
+
return resetFilters ? {} : hasFiltersInURL(location) ? filtersFromURL(location).filters : getStorageObject('selectedFilters', {});
|
|
1325
|
+
}),
|
|
1326
|
+
_useState18 = _slicedToArray(_useState17, 2),
|
|
1327
|
+
selectedFilters = _useState18[0],
|
|
1328
|
+
setSelectedFilters = _useState18[1];
|
|
1329
|
+
var _useState19 = useState(),
|
|
1330
|
+
_useState20 = _slicedToArray(_useState19, 2),
|
|
1331
|
+
filterOptions = _useState20[0],
|
|
1332
|
+
setFilterOptions = _useState20[1];
|
|
1333
|
+
var _useState21 = useState(getStorageObject("recruiters", {})),
|
|
1334
|
+
_useState22 = _slicedToArray(_useState21, 2),
|
|
1335
|
+
recruiters = _useState22[0],
|
|
1336
|
+
setRecruiters = _useState22[1];
|
|
1337
|
+
var _useState23 = useState(false),
|
|
1338
|
+
_useState24 = _slicedToArray(_useState23, 2),
|
|
1339
|
+
filterDialogIsOpen = _useState24[0],
|
|
1340
|
+
setFilterDialogIsOpen = _useState24[1];
|
|
1341
|
+
var _useState25 = useState("listTab"),
|
|
1342
|
+
_useState26 = _slicedToArray(_useState25, 2),
|
|
1343
|
+
mobileTab = _useState26[0],
|
|
1344
|
+
setMobileTab = _useState26[1];
|
|
1345
|
+
var _useState27 = useState([]),
|
|
1346
|
+
_useState28 = _slicedToArray(_useState27, 2),
|
|
1347
|
+
favorites = _useState28[0],
|
|
1348
|
+
setFavorites = _useState28[1];
|
|
1349
|
+
var _useState29 = useState(false),
|
|
1350
|
+
_useState30 = _slicedToArray(_useState29, 2),
|
|
1351
|
+
filterByFavorites = _useState30[0],
|
|
1352
|
+
setFilterByFavorites = _useState30[1];
|
|
1353
|
+
useEffect(function () {
|
|
1354
|
+
var loadedFavorites = JSON.parse(localStorage.getItem('favorites')) || [];
|
|
1355
|
+
setFavorites(loadedFavorites);
|
|
1356
|
+
}, []);
|
|
1357
|
+
useEffect(function () {
|
|
1358
|
+
if (commuteLocation === null || commuteLocation === '') return;
|
|
1359
|
+
function fetchEntities() {
|
|
1360
|
+
return _fetchEntities.apply(this, arguments);
|
|
1361
|
+
}
|
|
1362
|
+
function _fetchEntities() {
|
|
1363
|
+
_fetchEntities = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
1364
|
+
var distinctEntityIds, fetchedEntities, newFilteredListings, i;
|
|
1365
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
1366
|
+
while (1) switch (_context.prev = _context.next) {
|
|
1367
|
+
case 0:
|
|
1368
|
+
distinctEntityIds = _toConsumableArray(new Set(allListings.map(function (listing) {
|
|
1369
|
+
return listing.entityId;
|
|
1370
|
+
})));
|
|
1371
|
+
_context.prev = 1;
|
|
1372
|
+
_context.next = 4;
|
|
1373
|
+
return getListingEntities(distinctEntityIds, "".concat(commuteLocation.lat, ", ").concat(commuteLocation.lng));
|
|
1374
|
+
case 4:
|
|
1375
|
+
fetchedEntities = _context.sent;
|
|
1376
|
+
setListingEntities(fetchedEntities);
|
|
1377
|
+
newFilteredListings = filteredListings;
|
|
1378
|
+
for (i = 0; i < allListings.length; i++) {
|
|
1379
|
+
if (newFilteredListings[i].entityId != -1) {
|
|
1380
|
+
newFilteredListings[i].fields.travelTime = fetchedEntities[newFilteredListings[i].entityId].travelTime;
|
|
1381
|
+
}
|
|
1382
|
+
}
|
|
1383
|
+
for (i = 0; i < newFilteredListings.length; i++) {
|
|
1384
|
+
if (newFilteredListings[i].entityId != -1) {
|
|
1385
|
+
newFilteredListings[i].fields.travelTime = fetchedEntities[newFilteredListings[i].entityId].travelTime;
|
|
1386
|
+
}
|
|
1387
|
+
}
|
|
1388
|
+
setFilteredListings(newFilteredListings);
|
|
1389
|
+
_context.next = 15;
|
|
1390
|
+
break;
|
|
1391
|
+
case 12:
|
|
1392
|
+
_context.prev = 12;
|
|
1393
|
+
_context.t0 = _context["catch"](1);
|
|
1394
|
+
console.error("Failed to fetch listing entities:", _context.t0);
|
|
1395
|
+
case 15:
|
|
1396
|
+
case "end":
|
|
1397
|
+
return _context.stop();
|
|
1398
|
+
}
|
|
1399
|
+
}, _callee, null, [[1, 12]]);
|
|
1400
|
+
}));
|
|
1401
|
+
return _fetchEntities.apply(this, arguments);
|
|
1402
|
+
}
|
|
1403
|
+
fetchEntities();
|
|
1404
|
+
}, [commuteLocation, allListings, siteConfig.companyId]);
|
|
1405
|
+
useEffect(function () {
|
|
1406
|
+
var handleFetchListings = /*#__PURE__*/function () {
|
|
1407
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
1408
|
+
var _yield$fetchListings, listingsResult, fetchedRecruiters, fetchedEntities, distinctItems;
|
|
1409
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
1410
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
1411
|
+
case 0:
|
|
1412
|
+
if (!getStorageObject('listings', []).length > 0) {
|
|
1413
|
+
setLoading(true);
|
|
1414
|
+
}
|
|
1415
|
+
_context2.prev = 1;
|
|
1416
|
+
_context2.next = 4;
|
|
1417
|
+
return fetchListings(query, siteConfig);
|
|
1418
|
+
case 4:
|
|
1419
|
+
_yield$fetchListings = _context2.sent;
|
|
1420
|
+
listingsResult = _yield$fetchListings.listingsResult;
|
|
1421
|
+
fetchedRecruiters = _yield$fetchListings.fetchedRecruiters;
|
|
1422
|
+
fetchedEntities = _yield$fetchListings.fetchedEntities;
|
|
1423
|
+
distinctItems = _yield$fetchListings.distinctItems;
|
|
1424
|
+
setAllListings(listingsResult);
|
|
1425
|
+
setRecruiters(fetchedRecruiters);
|
|
1426
|
+
setListingEntities(fetchedEntities);
|
|
1427
|
+
setMapItems(distinctItems);
|
|
1428
|
+
setStorageObject("mapItems", distinctItems);
|
|
1429
|
+
setStorageObject("listingEntities", fetchedEntities);
|
|
1430
|
+
setStorageObject("recruiters", fetchedRecruiters);
|
|
1431
|
+
setStorageObject("listings", listingsResult);
|
|
1432
|
+
_context2.next = 22;
|
|
1433
|
+
break;
|
|
1434
|
+
case 19:
|
|
1435
|
+
_context2.prev = 19;
|
|
1436
|
+
_context2.t0 = _context2["catch"](1);
|
|
1437
|
+
console.log(_context2.t0);
|
|
1438
|
+
case 22:
|
|
1439
|
+
setLoading(false);
|
|
1440
|
+
case 23:
|
|
1441
|
+
case "end":
|
|
1442
|
+
return _context2.stop();
|
|
1443
|
+
}
|
|
1444
|
+
}, _callee2, null, [[1, 19]]);
|
|
1445
|
+
}));
|
|
1446
|
+
return function handleFetchListings() {
|
|
1447
|
+
return _ref2.apply(this, arguments);
|
|
1448
|
+
};
|
|
1449
|
+
}();
|
|
1450
|
+
handleFetchListings();
|
|
1451
|
+
}, [query, siteConfig]);
|
|
1452
|
+
useEffect(function () {
|
|
1453
|
+
var processListings = function processListings() {
|
|
1454
|
+
var _applyFilters = applyFilters(allListings, selectedFilters, query, listingEntities, favorites, siteConfig),
|
|
1455
|
+
filteredListings = _applyFilters.filteredListings,
|
|
1456
|
+
mapItems = _applyFilters.mapItems;
|
|
1457
|
+
if (filterByFavorites) {
|
|
1458
|
+
filteredListings = filteredListings.filter(function (x) {
|
|
1459
|
+
return favorites.includes(x.id);
|
|
1460
|
+
});
|
|
1461
|
+
}
|
|
1462
|
+
setFilteredListings(filteredListings);
|
|
1463
|
+
if (firstLoad && hasFiltersInURL(location)) {
|
|
1464
|
+
var _filtersFromURL = filtersFromURL(location),
|
|
1465
|
+
filters = _filtersFromURL.filters;
|
|
1466
|
+
setSelectedFilters(filters);
|
|
1467
|
+
}
|
|
1468
|
+
if (firstLoad && selectedFilters) {
|
|
1469
|
+
updateURLWithFilters(selectedFilters, location, navigate, query);
|
|
1470
|
+
} else if (Object.keys(selectedFilters).length === 0 && !firstLoad) {
|
|
1471
|
+
localStorage.removeItem('selectedFilters');
|
|
1472
|
+
updateURLWithFilters(selectedFilters, location, navigate, query);
|
|
1473
|
+
} else if (!firstLoad) {
|
|
1474
|
+
setStorageObject('selectedFilters', selectedFilters);
|
|
1475
|
+
updateURLWithFilters(selectedFilters, location, navigate, query);
|
|
1476
|
+
}
|
|
1477
|
+
query != null ? localStorage.setItem('query', query) : localStorage.removeItem('query');
|
|
1478
|
+
setMapItems(mapItems);
|
|
1479
|
+
if (selectedFilters) {
|
|
1480
|
+
var keys = Object.keys(selectedFilters);
|
|
1481
|
+
var lastKey = keys[keys.length - 1];
|
|
1482
|
+
var options = generateFilterOptions(firstLoad ? allListings : filteredListings, allListings, siteConfig, filterOptions, lastKey, favorites);
|
|
1483
|
+
if (options) {
|
|
1484
|
+
setFilterOptions(options);
|
|
1485
|
+
if (firstLoad) setFirstLoad(false);
|
|
1486
|
+
}
|
|
1487
|
+
}
|
|
1488
|
+
};
|
|
1489
|
+
processListings();
|
|
1490
|
+
}, [selectedFilters, query, listingEntities, filterByFavorites, favorites]);
|
|
1491
|
+
var handleFilterListingsByLocation = function handleFilterListingsByLocation(selectedLocation) {
|
|
1492
|
+
var _filterListingsByLoca = filterListingsByLocation(allListings, selectedLocation, listingEntities),
|
|
1493
|
+
filteredListings = _filterListingsByLoca.filteredListings;
|
|
1494
|
+
setFilteredListings(filteredListings);
|
|
1495
|
+
//setMapItems(mapItems);
|
|
1496
|
+
};
|
|
1497
|
+
var handleSettingFavorites = function handleSettingFavorites(newFavorites) {
|
|
1498
|
+
if (newFavorites == null) {
|
|
1499
|
+
localStorage.removeItem('favorites');
|
|
1500
|
+
} else {
|
|
1501
|
+
setFavorites(newFavorites);
|
|
1502
|
+
localStorage.setItem('favorites', JSON.stringify(newFavorites));
|
|
1503
|
+
}
|
|
1504
|
+
};
|
|
1505
|
+
return /*#__PURE__*/React.createElement(MapListContext.Provider, {
|
|
1506
|
+
value: {
|
|
1507
|
+
loading: loading,
|
|
1508
|
+
allListings: allListings,
|
|
1509
|
+
filteredListings: filteredListings,
|
|
1510
|
+
mapItems: mapItems,
|
|
1511
|
+
query: query,
|
|
1512
|
+
setFilteredListings: setFilteredListings,
|
|
1513
|
+
setQuery: setQuery,
|
|
1514
|
+
listingEntities: listingEntities,
|
|
1515
|
+
selectedFilters: selectedFilters,
|
|
1516
|
+
setSelectedFilters: setSelectedFilters,
|
|
1517
|
+
filterOptions: filterOptions,
|
|
1518
|
+
recruiters: recruiters,
|
|
1519
|
+
handleFilterListingsByLocation: handleFilterListingsByLocation,
|
|
1520
|
+
filterDialogIsOpen: filterDialogIsOpen,
|
|
1521
|
+
setFilterDialogIsOpen: setFilterDialogIsOpen,
|
|
1522
|
+
setMobileTab: setMobileTab,
|
|
1523
|
+
mobileTab: mobileTab,
|
|
1524
|
+
siteConfig: siteConfig,
|
|
1525
|
+
favorites: favorites,
|
|
1526
|
+
handleSettingFavorites: handleSettingFavorites,
|
|
1527
|
+
setFilterByFavorites: setFilterByFavorites,
|
|
1528
|
+
filterByFavorites: filterByFavorites,
|
|
1529
|
+
commuteLocation: commuteLocation,
|
|
1530
|
+
setCommuteLocation: setCommuteLocation
|
|
1531
|
+
}
|
|
1532
|
+
}, children);
|
|
1533
|
+
};
|
|
1534
|
+
|
|
1535
|
+
var PageHead = function PageHead(_ref) {
|
|
1536
|
+
var _siteConfig$colors$ma, _siteConfig$colors;
|
|
1537
|
+
var description = _ref.description,
|
|
1538
|
+
keywords = _ref.keywords,
|
|
1539
|
+
title = _ref.title;
|
|
1540
|
+
var _useMapList = useMapList(),
|
|
1541
|
+
siteConfig = _useMapList.siteConfig;
|
|
1542
|
+
//const router = useRouter();
|
|
1543
|
+
var defaultTitle = siteConfig.title;
|
|
1544
|
+
var pageTitle = title || defaultTitle;
|
|
1545
|
+
var metaDescription = description || siteConfig.description;
|
|
1546
|
+
return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("title", null, title ? "".concat(title, " | ").concat(defaultTitle) : defaultTitle), /*#__PURE__*/React.createElement("meta", {
|
|
1547
|
+
name: "description",
|
|
1548
|
+
content: metaDescription
|
|
1549
|
+
}), (keywords === null || keywords === void 0 ? void 0 : keywords.length) > 0 ? /*#__PURE__*/React.createElement("meta", {
|
|
1550
|
+
name: "keywords",
|
|
1551
|
+
content: "".concat(keywords.join(', '))
|
|
1552
|
+
}) : null, /*#__PURE__*/React.createElement("meta", {
|
|
1553
|
+
property: "og:title",
|
|
1554
|
+
content: pageTitle
|
|
1555
|
+
}), /*#__PURE__*/React.createElement("meta", {
|
|
1556
|
+
property: "og:description",
|
|
1557
|
+
content: metaDescription
|
|
1558
|
+
}), (siteConfig === null || siteConfig === void 0 ? void 0 : siteConfig.shareImage) && /*#__PURE__*/React.createElement("meta", {
|
|
1559
|
+
property: "og:image",
|
|
1560
|
+
content: "/".concat(siteConfig.shareImage)
|
|
1561
|
+
}), /*#__PURE__*/React.createElement("meta", {
|
|
1562
|
+
property: "og:type",
|
|
1563
|
+
content: "website"
|
|
1564
|
+
}), /*#__PURE__*/React.createElement("meta", {
|
|
1565
|
+
name: "twitter:card",
|
|
1566
|
+
content: "summary"
|
|
1567
|
+
}), /*#__PURE__*/React.createElement("meta", {
|
|
1568
|
+
name: "twitter:creator",
|
|
1569
|
+
content: siteConfig === null || siteConfig === void 0 ? void 0 : siteConfig.author
|
|
1570
|
+
}), /*#__PURE__*/React.createElement("meta", {
|
|
1571
|
+
name: "twitter:title",
|
|
1572
|
+
content: pageTitle
|
|
1573
|
+
}), /*#__PURE__*/React.createElement("meta", {
|
|
1574
|
+
name: "twitter:description",
|
|
1575
|
+
content: metaDescription
|
|
1576
|
+
}), /*#__PURE__*/React.createElement("script", {
|
|
1577
|
+
type: "application/ld+json"
|
|
1578
|
+
}, "\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\"@type\": \"WebPage\",\n\t\t\t\t\t\t\t\"url\": \"pathame\",\n\t\t\t\t\t\t\t\"legalName\": \"".concat(defaultTitle, "\",\n\t\t\t\t\t\t\t\"name\": \"").concat(pageTitle, "\",\n\t\t\t\t\t\t\t\"about\": \"").concat(metaDescription, "\",\n\t\t\t\t\t\t\t\"brand\": \"").concat(defaultTitle, "\"\n\t\t\t\t\t\t}\n\t\t\t\t")), /*#__PURE__*/React.createElement("link", {
|
|
1579
|
+
rel: "icon",
|
|
1580
|
+
href: "/favicon.svg",
|
|
1581
|
+
type: "image/svg+xml"
|
|
1582
|
+
}), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("link", {
|
|
1583
|
+
rel: "icon",
|
|
1584
|
+
href: "/favicon.ico",
|
|
1585
|
+
sizes: "any"
|
|
1586
|
+
}), /*#__PURE__*/React.createElement("link", {
|
|
1587
|
+
rel: "apple-touch-icon",
|
|
1588
|
+
href: "/apple-touch-icon.png"
|
|
1589
|
+
}), /*#__PURE__*/React.createElement("link", {
|
|
1590
|
+
rel: "manifest",
|
|
1591
|
+
href: "/manifest.webmanifest"
|
|
1592
|
+
}), /*#__PURE__*/React.createElement("meta", {
|
|
1593
|
+
name: "msapplication-TileColor",
|
|
1594
|
+
content: (_siteConfig$colors$ma = siteConfig === null || siteConfig === void 0 || (_siteConfig$colors = siteConfig.colors) === null || _siteConfig$colors === void 0 || (_siteConfig$colors = _siteConfig$colors.manifest) === null || _siteConfig$colors === void 0 ? void 0 : _siteConfig$colors.tileColor) !== null && _siteConfig$colors$ma !== void 0 ? _siteConfig$colors$ma : '#000'
|
|
1595
|
+
})));
|
|
1596
|
+
};
|
|
1597
|
+
|
|
1598
|
+
var _excluded$f = ["as", "children", "delay", "opacity", "scale", "y"];
|
|
1599
|
+
var SlideIn = function SlideIn(_ref) {
|
|
1600
|
+
_ref.as;
|
|
1601
|
+
var children = _ref.children;
|
|
1602
|
+
_ref.delay;
|
|
1603
|
+
_ref.opacity;
|
|
1604
|
+
var _ref$scale = _ref.scale,
|
|
1605
|
+
scale = _ref$scale === void 0 ? 0.95 : _ref$scale;
|
|
1606
|
+
_ref.y;
|
|
1607
|
+
var rest = _objectWithoutProperties(_ref, _excluded$f);
|
|
1608
|
+
var ref = useRef();
|
|
1609
|
+
var _useScroll = useScroll({
|
|
1610
|
+
target: ref,
|
|
1611
|
+
offset: ["start end", "start 0.85"]
|
|
1612
|
+
}),
|
|
1613
|
+
scrollYProgress = _useScroll.scrollYProgress;
|
|
1614
|
+
var scaleContained = useTransform(scrollYProgress, [0, 1], [scale, 1]);
|
|
1615
|
+
var scaleSpring = useSpring(scaleContained, {
|
|
1616
|
+
damping: 100,
|
|
1617
|
+
stiffness: 1000
|
|
1618
|
+
});
|
|
1619
|
+
return /*#__PURE__*/React.createElement(motion.div, _extends({
|
|
1620
|
+
ref: ref,
|
|
1621
|
+
className: "h-full",
|
|
1622
|
+
style: {
|
|
1623
|
+
scale: scaleSpring
|
|
1624
|
+
}
|
|
1625
|
+
}, rest), children);
|
|
1626
|
+
};
|
|
1627
|
+
|
|
1628
|
+
var _excluded$e = ["as", "isAnimated", "children", "className", "autoRows", "columns", "gap"];
|
|
1629
|
+
var Grid = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
1630
|
+
var _props$as = props.as,
|
|
1631
|
+
as = _props$as === void 0 ? 'div' : _props$as,
|
|
1632
|
+
_props$isAnimated = props.isAnimated,
|
|
1633
|
+
isAnimated = _props$isAnimated === void 0 ? true : _props$isAnimated,
|
|
1634
|
+
children = props.children,
|
|
1635
|
+
className = props.className,
|
|
1636
|
+
_props$autoRows = props.autoRows,
|
|
1637
|
+
autoRows = _props$autoRows === void 0 ? true : _props$autoRows,
|
|
1638
|
+
_props$columns = props.columns,
|
|
1639
|
+
columns = _props$columns === void 0 ? 'md:grid-cols-2' : _props$columns,
|
|
1640
|
+
_props$gap = props.gap,
|
|
1641
|
+
gap = _props$gap === void 0 ? 'gap-12 lg:gap-16' : _props$gap,
|
|
1642
|
+
rest = _objectWithoutProperties(props, _excluded$e);
|
|
1643
|
+
var Container = as;
|
|
1644
|
+
return isAnimated ? /*#__PURE__*/React.createElement(SlideIn, null, /*#__PURE__*/React.createElement(Container, _extends({
|
|
1645
|
+
ref: ref,
|
|
1646
|
+
className: twMerge('grid', gap, autoRows ? 'auto-rows-min' : '', 'grid-cols-1', columns, className !== null && className !== void 0 ? className : '')
|
|
1647
|
+
}, rest), children)) : /*#__PURE__*/React.createElement(Container, _extends({
|
|
1648
|
+
ref: ref,
|
|
1649
|
+
className: twMerge('grid', gap, autoRows ? 'auto-rows-min' : '', 'grid-cols-1', columns, className !== null && className !== void 0 ? className : '')
|
|
1650
|
+
}, rest), children);
|
|
1651
|
+
});
|
|
1652
|
+
var GridItem = function GridItem(_ref) {
|
|
1653
|
+
var _ref$as = _ref.as,
|
|
1654
|
+
as = _ref$as === void 0 ? 'div' : _ref$as,
|
|
1655
|
+
children = _ref.children,
|
|
1656
|
+
className = _ref.className;
|
|
1657
|
+
var Container = as;
|
|
1658
|
+
return /*#__PURE__*/React.createElement(Container, {
|
|
1659
|
+
className: className !== null && className !== void 0 ? className : ''
|
|
1660
|
+
}, children);
|
|
1661
|
+
};
|
|
1662
|
+
Grid.Item = GridItem;
|
|
1663
|
+
Grid.displayName = 'Grid';
|
|
1664
|
+
|
|
1665
|
+
var _excluded$d = ["className", "size", "icon", "iconClasses", "title"];
|
|
1666
|
+
var IconContained = function IconContained(_ref) {
|
|
1667
|
+
var className = _ref.className,
|
|
1668
|
+
size = _ref.size,
|
|
1669
|
+
icon = _ref.icon,
|
|
1670
|
+
iconClasses = _ref.iconClasses,
|
|
1671
|
+
title = _ref.title,
|
|
1672
|
+
iconProps = _objectWithoutProperties(_ref, _excluded$d);
|
|
1673
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
1674
|
+
title: title,
|
|
1675
|
+
className: "\n\t\t\t\tinline-block align-middle\n\t\t\t\t".concat(className !== null && className !== void 0 ? className : '', "\n\t\t\t\t").concat(size !== null && size !== void 0 ? size : '', "\n\t\t\t")
|
|
1676
|
+
}, /*#__PURE__*/React.createElement(Icon, _extends({
|
|
1677
|
+
icon: icon,
|
|
1678
|
+
className: "\n\t\t\t\t\t".concat(iconClasses !== null && iconClasses !== void 0 ? iconClasses : '', "\n\t\t\t\t\t").concat(size !== null && size !== void 0 ? size : '', "\n\t\t\t\t")
|
|
1679
|
+
}, iconProps)));
|
|
1680
|
+
};
|
|
1681
|
+
|
|
1682
|
+
var _excluded$c = ["children", "href", "className", "size", "variant", "isBlock", "hasUnderline", "target"],
|
|
1683
|
+
_excluded2$3 = ["children", "href", "className", "activeClassName", "partiallyActive", "size", "variant", "isBlock", "hasUnderline"],
|
|
1684
|
+
_excluded3$2 = ["children", "href", "className", "size", "variant", "isBlock", "hasUnderline"],
|
|
1685
|
+
_excluded4$2 = ["children", "type", "className", "size", "variant", "isBlock", "hasUnderline"];
|
|
1686
|
+
var linkDefaultClasses = "normal-case text-inherit !font-[inherit] [font-weight:inherit] !p-0 rounded-none";
|
|
1687
|
+
var underlineClasses = "!underline decoration-1 underline-offset-2 hover:!no-underline focus:!no-underline";
|
|
1688
|
+
var ButtonVariant = {
|
|
1689
|
+
none: '',
|
|
1690
|
+
primary: 'bg-primary border border-primary text-white hover:bg-opacity-70 focus:bg-opacity-70',
|
|
1691
|
+
secondary: 'bg-secondary border border-secondary text-white hover:bg-opacity-70 focus:bg-opacity-70',
|
|
1692
|
+
outline: 'bg-transparent border border-primary text-primary hover:bg-primaryDark hover:border-primaryDark hover:text-white focus:bg-primaryDark focus:border-primaryDark focus:text-white',
|
|
1693
|
+
link: "".concat(linkDefaultClasses, " text-primary hover:text-uiText focus:text-uiText"),
|
|
1694
|
+
icon: 'opacity-100 hover:opacity-70 focus:opacity-70'
|
|
1695
|
+
};
|
|
1696
|
+
var ButtonSize = {
|
|
1697
|
+
none: '',
|
|
1698
|
+
"default": 'py-2 px-6 text-base',
|
|
1699
|
+
sq: 'p-2.5',
|
|
1700
|
+
sqsm: 'p-1',
|
|
1701
|
+
xs: 'py-1.5 px-3 text-xs',
|
|
1702
|
+
sm: 'py-1.5 px-4 text-sm',
|
|
1703
|
+
lg: 'py-4 px-10 text-lg'
|
|
1704
|
+
};
|
|
1705
|
+
var ButtonDefaults = {
|
|
1706
|
+
style: 'group font-medium uppercase text-center rounded transition',
|
|
1707
|
+
size: ButtonSize["default"],
|
|
1708
|
+
variant: ButtonVariant.primary,
|
|
1709
|
+
block: 'block w-full'
|
|
1710
|
+
};
|
|
1711
|
+
var linkVariants = function linkVariants(variant) {
|
|
1712
|
+
return variant === 'link';
|
|
1713
|
+
};
|
|
1714
|
+
var buttonClasses = function buttonClasses(variant, size, isBlock, hasUnderline, className) {
|
|
1715
|
+
return twMerge(isBlock ? ButtonDefaults.block : linkVariants(variant) ? 'inline' : 'inline-block', ButtonDefaults.style, variant ? ButtonVariant[variant] : ButtonDefaults.variant, size ? ButtonSize[size] : ButtonDefaults.size, hasUnderline ? underlineClasses : '', className !== null && className !== void 0 ? className : '');
|
|
1716
|
+
};
|
|
1717
|
+
var Button = function Button(_ref) {
|
|
1718
|
+
var children = _ref.children;
|
|
1719
|
+
return {
|
|
1720
|
+
children: children
|
|
1721
|
+
};
|
|
1722
|
+
};
|
|
1723
|
+
var Anchor = function Anchor(_ref2) {
|
|
1724
|
+
var children = _ref2.children,
|
|
1725
|
+
href = _ref2.href,
|
|
1726
|
+
className = _ref2.className,
|
|
1727
|
+
size = _ref2.size,
|
|
1728
|
+
variant = _ref2.variant,
|
|
1729
|
+
isBlock = _ref2.isBlock,
|
|
1730
|
+
hasUnderline = _ref2.hasUnderline,
|
|
1731
|
+
_ref2$target = _ref2.target,
|
|
1732
|
+
target = _ref2$target === void 0 ? '_blank' : _ref2$target,
|
|
1733
|
+
rest = _objectWithoutProperties(_ref2, _excluded$c);
|
|
1734
|
+
return /*#__PURE__*/React.createElement("a", _extends({
|
|
1735
|
+
href: href,
|
|
1736
|
+
target: target,
|
|
1737
|
+
className: buttonClasses(variant, size, isBlock, hasUnderline, className),
|
|
1738
|
+
onClick: href === '#' ? function (e) {
|
|
1739
|
+
e.preventDefault();
|
|
1740
|
+
} : null
|
|
1741
|
+
}, rest), children);
|
|
1742
|
+
};
|
|
1743
|
+
var AnchorLink = function AnchorLink(_ref3) {
|
|
1744
|
+
var children = _ref3.children,
|
|
1745
|
+
href = _ref3.href,
|
|
1746
|
+
className = _ref3.className,
|
|
1747
|
+
activeClassName = _ref3.activeClassName,
|
|
1748
|
+
_ref3$partiallyActive = _ref3.partiallyActive,
|
|
1749
|
+
partiallyActive = _ref3$partiallyActive === void 0 ? false : _ref3$partiallyActive,
|
|
1750
|
+
size = _ref3.size,
|
|
1751
|
+
variant = _ref3.variant,
|
|
1752
|
+
isBlock = _ref3.isBlock,
|
|
1753
|
+
hasUnderline = _ref3.hasUnderline,
|
|
1754
|
+
rest = _objectWithoutProperties(_ref3, _excluded2$3);
|
|
1755
|
+
var router = useRouter();
|
|
1756
|
+
return /*#__PURE__*/React.createElement(Link, _extends({
|
|
1757
|
+
href: href,
|
|
1758
|
+
className: "\n\t\t\t\t".concat(buttonClasses(variant, size, isBlock, hasUnderline, className), "\n\t\t\t\t").concat(activeClassName && router.pathname === href || router.pathname.startsWith(href) && partiallyActive ? activeClassName : '', "\n\t\t\t")
|
|
1759
|
+
}, rest), children);
|
|
1760
|
+
};
|
|
1761
|
+
var ScrollAnchor = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
1762
|
+
var children = props.children,
|
|
1763
|
+
href = props.href,
|
|
1764
|
+
className = props.className,
|
|
1765
|
+
size = props.size,
|
|
1766
|
+
variant = props.variant,
|
|
1767
|
+
isBlock = props.isBlock,
|
|
1768
|
+
hasUnderline = props.hasUnderline,
|
|
1769
|
+
rest = _objectWithoutProperties(props, _excluded3$2);
|
|
1770
|
+
return /*#__PURE__*/React.createElement(Link, _extends({
|
|
1771
|
+
ref: ref,
|
|
1772
|
+
href: "#".concat(href),
|
|
1773
|
+
scroll: false,
|
|
1774
|
+
className: buttonClasses(variant, size, isBlock, hasUnderline, className)
|
|
1775
|
+
}, rest), children);
|
|
1776
|
+
});
|
|
1777
|
+
var Btn = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
1778
|
+
var children = props.children,
|
|
1779
|
+
_props$type = props.type,
|
|
1780
|
+
type = _props$type === void 0 ? 'button' : _props$type,
|
|
1781
|
+
className = props.className,
|
|
1782
|
+
size = props.size,
|
|
1783
|
+
variant = props.variant,
|
|
1784
|
+
isBlock = props.isBlock,
|
|
1785
|
+
hasUnderline = props.hasUnderline,
|
|
1786
|
+
rest = _objectWithoutProperties(props, _excluded4$2);
|
|
1787
|
+
return /*#__PURE__*/React.createElement("button", _extends({
|
|
1788
|
+
ref: ref,
|
|
1789
|
+
type: type,
|
|
1790
|
+
className: buttonClasses(variant, size, isBlock, hasUnderline, className)
|
|
1791
|
+
}, rest), children);
|
|
1792
|
+
});
|
|
1793
|
+
var ButtonBody = function ButtonBody(_ref4) {
|
|
1794
|
+
var children = _ref4.children,
|
|
1795
|
+
className = _ref4.className;
|
|
1796
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
1797
|
+
className: twMerge('inline-flex w-full items-center justify-between gap-1.5', className !== null && className !== void 0 ? className : '')
|
|
1798
|
+
}, children);
|
|
1799
|
+
};
|
|
1800
|
+
var ButtonIcon = function ButtonIcon(_ref5) {
|
|
1801
|
+
var icon = _ref5.icon,
|
|
1802
|
+
_ref5$size = _ref5.size,
|
|
1803
|
+
size = _ref5$size === void 0 ? 'w-4 h-4' : _ref5$size,
|
|
1804
|
+
className = _ref5.className;
|
|
1805
|
+
return /*#__PURE__*/React.createElement(IconContained, {
|
|
1806
|
+
icon: icon,
|
|
1807
|
+
size: size,
|
|
1808
|
+
className: className !== null && className !== void 0 ? className : ''
|
|
1809
|
+
});
|
|
1810
|
+
};
|
|
1811
|
+
Button.Anchor = Anchor;
|
|
1812
|
+
Button.Link = AnchorLink;
|
|
1813
|
+
Button.Scroll = ScrollAnchor;
|
|
1814
|
+
Button.Btn = Btn;
|
|
1815
|
+
Button.Body = ButtonBody;
|
|
1816
|
+
Button.Icon = ButtonIcon;
|
|
1817
|
+
Btn.displayName = 'Button:Button';
|
|
1818
|
+
ScrollAnchor.displayName = 'Button:ScrollAnchor';
|
|
1819
|
+
|
|
1820
|
+
var _excluded$b = ["as", "className", "hasShadow", "image", "body", "children", "footer"],
|
|
1821
|
+
_excluded2$2 = ["as", "href", "className", "hasShadow", "image", "body", "children", "footer"],
|
|
1822
|
+
_excluded3$1 = ["image", "alt", "className", "imageClassName"],
|
|
1823
|
+
_excluded4$1 = ["as", "children", "className"];
|
|
1824
|
+
var cardClasses = function cardClasses(className, hasShadow) {
|
|
1825
|
+
return twMerge('relative flex flex-wrap flex-col bg-clip-border break-words bg-white border border-gray-100', hasShadow ? 'shadow-lg' : '', className !== null && className !== void 0 ? className : '');
|
|
1826
|
+
};
|
|
1827
|
+
var Card = function Card(_ref) {
|
|
1828
|
+
var children = _ref.children;
|
|
1829
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, children);
|
|
1830
|
+
};
|
|
1831
|
+
var CardDefault = /*#__PURE__*/forwardRef(function (_ref2, ref) {
|
|
1832
|
+
var _ref2$as = _ref2.as,
|
|
1833
|
+
as = _ref2$as === void 0 ? 'div' : _ref2$as,
|
|
1834
|
+
className = _ref2.className,
|
|
1835
|
+
_ref2$hasShadow = _ref2.hasShadow,
|
|
1836
|
+
hasShadow = _ref2$hasShadow === void 0 ? false : _ref2$hasShadow,
|
|
1837
|
+
image = _ref2.image,
|
|
1838
|
+
body = _ref2.body,
|
|
1839
|
+
children = _ref2.children,
|
|
1840
|
+
footer = _ref2.footer,
|
|
1841
|
+
rest = _objectWithoutProperties(_ref2, _excluded$b);
|
|
1842
|
+
var Container = as;
|
|
1843
|
+
return /*#__PURE__*/React.createElement(Container, _extends({
|
|
1844
|
+
ref: ref,
|
|
1845
|
+
className: cardClasses(className, hasShadow)
|
|
1846
|
+
}, rest), image, children, body, footer);
|
|
1847
|
+
});
|
|
1848
|
+
var CardLink = function CardLink(_ref3) {
|
|
1849
|
+
var _ref3$as = _ref3.as,
|
|
1850
|
+
as = _ref3$as === void 0 ? 'link' : _ref3$as,
|
|
1851
|
+
href = _ref3.href,
|
|
1852
|
+
className = _ref3.className,
|
|
1853
|
+
_ref3$hasShadow = _ref3.hasShadow,
|
|
1854
|
+
hasShadow = _ref3$hasShadow === void 0 ? false : _ref3$hasShadow,
|
|
1855
|
+
image = _ref3.image,
|
|
1856
|
+
body = _ref3.body,
|
|
1857
|
+
children = _ref3.children,
|
|
1858
|
+
footer = _ref3.footer,
|
|
1859
|
+
rest = _objectWithoutProperties(_ref3, _excluded2$2);
|
|
1860
|
+
var Container = as === 'link' ? Link : as;
|
|
1861
|
+
return /*#__PURE__*/React.createElement(Container, _extends({
|
|
1862
|
+
to: href,
|
|
1863
|
+
className: twMerge(cardClasses(className, hasShadow), 'group transition hover:shadow-xl hover:border-indigo-300 focus:shadow-xl focus:border-indigo-300')
|
|
1864
|
+
}, rest), image && image, children, body && body, footer && footer);
|
|
1865
|
+
};
|
|
1866
|
+
var CardImage = function CardImage(_ref4) {
|
|
1867
|
+
var image = _ref4.image,
|
|
1868
|
+
alt = _ref4.alt,
|
|
1869
|
+
className = _ref4.className,
|
|
1870
|
+
imageClassName = _ref4.imageClassName,
|
|
1871
|
+
rest = _objectWithoutProperties(_ref4, _excluded3$1);
|
|
1872
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
1873
|
+
className: twMerge('w-full', className !== null && className !== void 0 ? className : '')
|
|
1874
|
+
}, /*#__PURE__*/React.createElement("img", _extends({
|
|
1875
|
+
src: typeof image === 'string' ? image : image.src,
|
|
1876
|
+
width: image.width ? image.width : null,
|
|
1877
|
+
height: image.height ? image.height : null,
|
|
1878
|
+
alt: alt !== null && alt !== void 0 ? alt : '',
|
|
1879
|
+
className: twMerge('w-full h-auto', imageClassName !== null && imageClassName !== void 0 ? imageClassName : '')
|
|
1880
|
+
}, rest)));
|
|
1881
|
+
};
|
|
1882
|
+
var CardBody = function CardBody(_ref5) {
|
|
1883
|
+
var children = _ref5.children,
|
|
1884
|
+
className = _ref5.className;
|
|
1885
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
1886
|
+
className: twMerge('flex-auto p-4 md:px-6 lg:px-8', className !== null && className !== void 0 ? className : '')
|
|
1887
|
+
}, children);
|
|
1888
|
+
};
|
|
1889
|
+
var CardTitle$1 = function CardTitle(_ref6) {
|
|
1890
|
+
var _ref6$as = _ref6.as,
|
|
1891
|
+
as = _ref6$as === void 0 ? 'h3' : _ref6$as,
|
|
1892
|
+
children = _ref6.children,
|
|
1893
|
+
className = _ref6.className,
|
|
1894
|
+
rest = _objectWithoutProperties(_ref6, _excluded4$1);
|
|
1895
|
+
var Title = as;
|
|
1896
|
+
return /*#__PURE__*/React.createElement(Title, _extends({
|
|
1897
|
+
className: twMerge('text-2xl font-bold', className !== null && className !== void 0 ? className : '')
|
|
1898
|
+
}, rest), children);
|
|
1899
|
+
};
|
|
1900
|
+
var CardFooter = function CardFooter(_ref7) {
|
|
1901
|
+
var children = _ref7.children,
|
|
1902
|
+
className = _ref7.className;
|
|
1903
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
1904
|
+
className: twMerge('py-2 px-4 md:px-6 lg:px-8 bg-gray-100', className !== null && className !== void 0 ? className : '')
|
|
1905
|
+
}, children);
|
|
1906
|
+
};
|
|
1907
|
+
Card.Default = CardDefault;
|
|
1908
|
+
Card.Link = CardLink;
|
|
1909
|
+
Card.Image = CardImage;
|
|
1910
|
+
Card.Body = CardBody;
|
|
1911
|
+
Card.Title = CardTitle$1;
|
|
1912
|
+
Card.Footer = CardFooter;
|
|
1913
|
+
CardDefault.displayName = 'Card:Default';
|
|
1914
|
+
|
|
1915
|
+
var _excluded$a = ["as", "className", "children"],
|
|
1916
|
+
_excluded2$1 = ["as", "children", "icon", "className"];
|
|
1917
|
+
var CardFilter = function CardFilter(_ref) {
|
|
1918
|
+
var as = _ref.as,
|
|
1919
|
+
className = _ref.className,
|
|
1920
|
+
children = _ref.children,
|
|
1921
|
+
rest = _objectWithoutProperties(_ref, _excluded$a);
|
|
1922
|
+
return /*#__PURE__*/React.createElement(Card.Default, _extends({
|
|
1923
|
+
as: as,
|
|
1924
|
+
className: "\n\t\t\t\tbg-uiAccent/5 border border-uiAccent/20 rounded\n\t\t\t\t".concat(className !== null && className !== void 0 ? className : '', "\n\t\t\t")
|
|
1925
|
+
}, rest), /*#__PURE__*/React.createElement(Card.Body, {
|
|
1926
|
+
className: "!p-3"
|
|
1927
|
+
}, children));
|
|
1928
|
+
};
|
|
1929
|
+
var CardTitle = function CardTitle(_ref2) {
|
|
1930
|
+
var as = _ref2.as,
|
|
1931
|
+
children = _ref2.children,
|
|
1932
|
+
icon = _ref2.icon,
|
|
1933
|
+
className = _ref2.className,
|
|
1934
|
+
rest = _objectWithoutProperties(_ref2, _excluded2$1);
|
|
1935
|
+
return /*#__PURE__*/React.createElement(Card.Title, _extends({
|
|
1936
|
+
as: as,
|
|
1937
|
+
className: "\n\t\t\t\tflex items-center gap-2 mb-2 text-xs uppercase font-bold text-uiText\n\t\t\t\t".concat(className !== null && className !== void 0 ? className : '', "\n\t\t\t")
|
|
1938
|
+
}, rest), /*#__PURE__*/React.createElement(IconContained, {
|
|
1939
|
+
icon: icon,
|
|
1940
|
+
size: "w-5 h-5",
|
|
1941
|
+
className: "text-uiAccent/30"
|
|
1942
|
+
}), children);
|
|
1943
|
+
};
|
|
1944
|
+
CardFilter.Title = CardTitle;
|
|
1945
|
+
|
|
1946
|
+
var Search = function Search(_ref) {
|
|
1947
|
+
var _ref$inputPlaceholder = _ref.inputPlaceholder,
|
|
1948
|
+
inputPlaceholder = _ref$inputPlaceholder === void 0 ? "Keywords" : _ref$inputPlaceholder,
|
|
1949
|
+
_ref$showSearchIcon = _ref.showSearchIcon,
|
|
1950
|
+
showSearchIcon = _ref$showSearchIcon === void 0 ? false : _ref$showSearchIcon,
|
|
1951
|
+
className = _ref.className,
|
|
1952
|
+
labelClassName = _ref.labelClassName;
|
|
1953
|
+
var _useState = useState(query != null ? query : ""),
|
|
1954
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1955
|
+
inputValue = _useState2[0],
|
|
1956
|
+
setInputValue = _useState2[1];
|
|
1957
|
+
var debounceTimer = useRef(null);
|
|
1958
|
+
var _useMapList = useMapList(),
|
|
1959
|
+
query = _useMapList.query,
|
|
1960
|
+
setQuery = _useMapList.setQuery,
|
|
1961
|
+
siteConfig = _useMapList.siteConfig;
|
|
1962
|
+
var handleInputChange = function handleInputChange(e) {
|
|
1963
|
+
setInputValue(e.target.value);
|
|
1964
|
+
if (debounceTimer.current) {
|
|
1965
|
+
clearTimeout(debounceTimer.current);
|
|
1966
|
+
}
|
|
1967
|
+
debounceTimer.current = setTimeout(function () {
|
|
1968
|
+
setQuery(e.target.value);
|
|
1969
|
+
}, 500);
|
|
1970
|
+
};
|
|
1971
|
+
var handleReset = function handleReset() {
|
|
1972
|
+
setInputValue("");
|
|
1973
|
+
setQuery("");
|
|
1974
|
+
};
|
|
1975
|
+
useEffect(function () {
|
|
1976
|
+
if (query == null) {
|
|
1977
|
+
setInputValue("");
|
|
1978
|
+
}
|
|
1979
|
+
}, [query]);
|
|
1980
|
+
inputPlaceholder = siteConfig.searchConfig.placeholder;
|
|
1981
|
+
return /*#__PURE__*/React.createElement(CardFilter, {
|
|
1982
|
+
as: "form",
|
|
1983
|
+
className: className !== null && className !== void 0 ? className : ""
|
|
1984
|
+
}, /*#__PURE__*/React.createElement(CardFilter.Title, {
|
|
1985
|
+
as: "label",
|
|
1986
|
+
icon: "fluent:search-12-filled",
|
|
1987
|
+
className: labelClassName !== null && labelClassName !== void 0 ? labelClassName : ""
|
|
1988
|
+
}, /*#__PURE__*/React.createElement("span", null, siteConfig.searchConfig.label)), /*#__PURE__*/React.createElement("div", {
|
|
1989
|
+
className: "relative flex items-center px-2 rounded bg-white border border-uiAccent/20 focus-within:ring-1 focus-within:ring-uiAccent"
|
|
1990
|
+
}, showSearchIcon && /*#__PURE__*/React.createElement(IconContained, {
|
|
1991
|
+
icon: "fluent:search-12-filled",
|
|
1992
|
+
size: "w-4 h-4",
|
|
1993
|
+
className: "mr-2 text-uiAccent/50"
|
|
1994
|
+
}), /*#__PURE__*/React.createElement("input", {
|
|
1995
|
+
type: "text",
|
|
1996
|
+
name: "search",
|
|
1997
|
+
onKeyDown: function onKeyDown(e) {
|
|
1998
|
+
if (e.key === 'Enter') {
|
|
1999
|
+
e.preventDefault();
|
|
2000
|
+
}
|
|
2001
|
+
},
|
|
2002
|
+
placeholder: inputPlaceholder,
|
|
2003
|
+
value: inputValue,
|
|
2004
|
+
className: "w-full px-0 py-2 text-sm border-0 transition-colors placeholder:text-uiText/50 focus:ring-0 focus:outline-none",
|
|
2005
|
+
onChange: handleInputChange
|
|
2006
|
+
}), /*#__PURE__*/React.createElement(Button.Btn, {
|
|
2007
|
+
type: "reset",
|
|
2008
|
+
variant: "icon",
|
|
2009
|
+
size: "sqsm",
|
|
2010
|
+
className: "transition-opacity ".concat(inputValue ? "opacity-100" : "opacity-0 pointer-events-none"),
|
|
2011
|
+
onClick: handleReset
|
|
2012
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
2013
|
+
className: "sr-only"
|
|
2014
|
+
}, "Clear"), /*#__PURE__*/React.createElement(Button.Icon, {
|
|
2015
|
+
icon: "uil:times",
|
|
2016
|
+
className: "text-uiAccent"
|
|
2017
|
+
}))));
|
|
2018
|
+
};
|
|
2019
|
+
|
|
2020
|
+
var isBrowser = typeof window !== 'undefined';
|
|
2021
|
+
if (isBrowser) {
|
|
2022
|
+
window.dataLayer = window.dataLayer || [];
|
|
2023
|
+
}
|
|
2024
|
+
var trackEvent = function trackEvent(category, action, label, value) {
|
|
2025
|
+
if (isBrowser && window.dataLayer) {
|
|
2026
|
+
window.dataLayer.push({
|
|
2027
|
+
'event': 'eventTracking',
|
|
2028
|
+
'category': category,
|
|
2029
|
+
'action': action,
|
|
2030
|
+
'label': label,
|
|
2031
|
+
'value': value
|
|
2032
|
+
});
|
|
2033
|
+
}
|
|
2034
|
+
};
|
|
2035
|
+
|
|
2036
|
+
var _excluded$9 = ["id", "children", "className"],
|
|
2037
|
+
_excluded2 = ["children", "className"],
|
|
2038
|
+
_excluded3 = ["header", "headerClassName", "iconClassName", "children", "className"],
|
|
2039
|
+
_excluded4 = ["children", "className"],
|
|
2040
|
+
_excluded5 = ["children", "className", "bodyClassName"];
|
|
2041
|
+
var Accordion = function Accordion(_ref) {
|
|
2042
|
+
var className = _ref.className,
|
|
2043
|
+
_ref$type = _ref.type,
|
|
2044
|
+
type = _ref$type === void 0 ? 'single' : _ref$type,
|
|
2045
|
+
defaultValue = _ref.defaultValue,
|
|
2046
|
+
_ref$collapsible = _ref.collapsible,
|
|
2047
|
+
collapsible = _ref$collapsible === void 0 ? true : _ref$collapsible,
|
|
2048
|
+
children = _ref.children;
|
|
2049
|
+
return /*#__PURE__*/React.createElement(RadixAccordion.Root, {
|
|
2050
|
+
type: type,
|
|
2051
|
+
value: defaultValue !== null && defaultValue !== void 0 ? defaultValue : null,
|
|
2052
|
+
collapsible: collapsible,
|
|
2053
|
+
className: className !== null && className !== void 0 ? className : '',
|
|
2054
|
+
onValueChange: function onValueChange(value) {
|
|
2055
|
+
return trackEvent('Engagement', 'Open Accordion', value);
|
|
2056
|
+
}
|
|
2057
|
+
}, children);
|
|
2058
|
+
};
|
|
2059
|
+
var AccordionItem = /*#__PURE__*/forwardRef(function (_ref2, forwardedRef) {
|
|
2060
|
+
var id = _ref2.id,
|
|
2061
|
+
children = _ref2.children,
|
|
2062
|
+
className = _ref2.className,
|
|
2063
|
+
props = _objectWithoutProperties(_ref2, _excluded$9);
|
|
2064
|
+
return /*#__PURE__*/React.createElement(RadixAccordion.Item, _extends({
|
|
2065
|
+
ref: forwardedRef,
|
|
2066
|
+
value: id,
|
|
2067
|
+
className: className !== null && className !== void 0 ? className : ''
|
|
2068
|
+
}, props), children);
|
|
2069
|
+
});
|
|
2070
|
+
var AccordionTrigger = /*#__PURE__*/forwardRef(function (_ref3, forwardedRef) {
|
|
2071
|
+
var children = _ref3.children,
|
|
2072
|
+
className = _ref3.className,
|
|
2073
|
+
props = _objectWithoutProperties(_ref3, _excluded2);
|
|
2074
|
+
return /*#__PURE__*/React.createElement(RadixAccordion.Header, {
|
|
2075
|
+
asChild: true
|
|
2076
|
+
}, /*#__PURE__*/React.createElement(RadixAccordion.Trigger, _extends({
|
|
2077
|
+
ref: forwardedRef,
|
|
2078
|
+
className: twMerge('group flex justify-between w-full p-4 font-bold text-left text-uiText focus:outline-none focus-visible:ring focus-visible:ring-uiAccent focus-visible:ring-opacity-75 hover:text-primary focus:text-primary transition data-[state=open]:text-primary', className !== null && className !== void 0 ? className : '')
|
|
2079
|
+
}, props), children, /*#__PURE__*/React.createElement(IconContained, {
|
|
2080
|
+
icon: "uil:angle-down",
|
|
2081
|
+
size: "w-5 h-5",
|
|
2082
|
+
className: "transition-transform group-data-[state=open]:!rotate-180",
|
|
2083
|
+
"aria-hidden": "true"
|
|
2084
|
+
})));
|
|
2085
|
+
});
|
|
2086
|
+
var AccordionTriggerHasHeader = /*#__PURE__*/forwardRef(function (_ref4, forwardedRef) {
|
|
2087
|
+
var header = _ref4.header,
|
|
2088
|
+
headerClassName = _ref4.headerClassName,
|
|
2089
|
+
iconClassName = _ref4.iconClassName,
|
|
2090
|
+
children = _ref4.children,
|
|
2091
|
+
className = _ref4.className,
|
|
2092
|
+
props = _objectWithoutProperties(_ref4, _excluded3);
|
|
2093
|
+
return /*#__PURE__*/React.createElement(RadixAccordion.Header, {
|
|
2094
|
+
className: twMerge('group flex items-start justify-between w-full p-4 pr-3 font-bold text-left text-uiText focus:outline-none focus-visible:ring focus-visible:ring-uiAccent focus-visible:ring-opacity-75 hover:text-primary focus:text-primary transition data-[state=open]:text-primary', headerClassName !== null && headerClassName !== void 0 ? headerClassName : '')
|
|
2095
|
+
}, /*#__PURE__*/React.createElement(RadixAccordion.Trigger, _extends({
|
|
2096
|
+
ref: forwardedRef,
|
|
2097
|
+
className: twMerge('flex items-center justify-between w-full', className !== null && className !== void 0 ? className : '')
|
|
2098
|
+
}, props), children, /*#__PURE__*/React.createElement(IconContained, {
|
|
2099
|
+
icon: "uil:angle-down",
|
|
2100
|
+
size: "w-5 h-5",
|
|
2101
|
+
className: twMerge('transition-transform group-data-[state=open]:!rotate-180', iconClassName !== null && iconClassName !== void 0 ? iconClassName : ''),
|
|
2102
|
+
"aria-hidden": "true"
|
|
2103
|
+
}), header));
|
|
2104
|
+
});
|
|
2105
|
+
var AccordionTriggerBlank = /*#__PURE__*/forwardRef(function (_ref5, forwardedRef) {
|
|
2106
|
+
var children = _ref5.children;
|
|
2107
|
+
_ref5.className;
|
|
2108
|
+
var props = _objectWithoutProperties(_ref5, _excluded4);
|
|
2109
|
+
return /*#__PURE__*/React.createElement(RadixAccordion.Header, {
|
|
2110
|
+
asChild: true
|
|
2111
|
+
}, /*#__PURE__*/React.createElement(RadixAccordion.Trigger, _extends({
|
|
2112
|
+
asChild: true,
|
|
2113
|
+
ref: forwardedRef
|
|
2114
|
+
}, props), children));
|
|
2115
|
+
});
|
|
2116
|
+
var AccordionContent = /*#__PURE__*/forwardRef(function (_ref6, forwardedRef) {
|
|
2117
|
+
var children = _ref6.children,
|
|
2118
|
+
className = _ref6.className,
|
|
2119
|
+
bodyClassName = _ref6.bodyClassName,
|
|
2120
|
+
props = _objectWithoutProperties(_ref6, _excluded5);
|
|
2121
|
+
return /*#__PURE__*/React.createElement(RadixAccordion.Content, _extends({
|
|
2122
|
+
ref: forwardedRef,
|
|
2123
|
+
className: twMerge('data-[state=open]:animate-slideDown data-[state=closed]:animate-slideUp overflow-hidden', className !== null && className !== void 0 ? className : '')
|
|
2124
|
+
}, props), /*#__PURE__*/React.createElement("div", {
|
|
2125
|
+
className: twMerge('p-4 pt-0.5', bodyClassName !== null && bodyClassName !== void 0 ? bodyClassName : '')
|
|
2126
|
+
}, children));
|
|
2127
|
+
});
|
|
2128
|
+
Accordion.Item = AccordionItem;
|
|
2129
|
+
Accordion.Trigger = AccordionTrigger;
|
|
2130
|
+
Accordion.Trigger.Blank = AccordionTriggerBlank;
|
|
2131
|
+
Accordion.Trigger.HasHeader = AccordionTriggerHasHeader;
|
|
2132
|
+
Accordion.Content = AccordionContent;
|
|
2133
|
+
AccordionItem.displayName = 'AccordionItem';
|
|
2134
|
+
AccordionTrigger.displayName = 'AccordionTrigger';
|
|
2135
|
+
AccordionTriggerBlank.displayName = 'AccordionTriggerBlank';
|
|
2136
|
+
AccordionTriggerHasHeader.displayName = 'AccordionTriggerHasHeader';
|
|
2137
|
+
AccordionContent.displayName = 'AccordionContent';
|
|
2138
|
+
|
|
2139
|
+
var _excluded$8 = ["className", "item", "type", "itemKey", "hasCount", "field", "selectedFilters", "setSelectedFilters"];
|
|
2140
|
+
var FilterItem = function FilterItem(_ref) {
|
|
2141
|
+
var _selectedFilters$fiel;
|
|
2142
|
+
var className = _ref.className,
|
|
2143
|
+
item = _ref.item,
|
|
2144
|
+
_ref$type = _ref.type,
|
|
2145
|
+
type = _ref$type === void 0 ? 'checkbox' : _ref$type,
|
|
2146
|
+
_ref$itemKey = _ref.itemKey,
|
|
2147
|
+
itemKey = _ref$itemKey === void 0 ? null : _ref$itemKey,
|
|
2148
|
+
_ref$hasCount = _ref.hasCount,
|
|
2149
|
+
hasCount = _ref$hasCount === void 0 ? true : _ref$hasCount,
|
|
2150
|
+
field = _ref.field,
|
|
2151
|
+
selectedFilters = _ref.selectedFilters,
|
|
2152
|
+
setSelectedFilters = _ref.setSelectedFilters,
|
|
2153
|
+
rest = _objectWithoutProperties(_ref, _excluded$8);
|
|
2154
|
+
var itemName = item.name ? item.name : item;
|
|
2155
|
+
itemKey = itemKey === null ? itemName : itemKey;
|
|
2156
|
+
var isActive = selectedFilters != undefined && !!((_selectedFilters$fiel = selectedFilters[field]) !== null && _selectedFilters$fiel !== void 0 && _selectedFilters$fiel[itemKey]);
|
|
2157
|
+
var changeHandler = function changeHandler() {
|
|
2158
|
+
setSelectedFilters(function (prevFilters) {
|
|
2159
|
+
var updatedFilters = _objectSpread2({}, prevFilters);
|
|
2160
|
+
if (!isActive) {
|
|
2161
|
+
if (!updatedFilters[field]) {
|
|
2162
|
+
updatedFilters[field] = {};
|
|
2163
|
+
}
|
|
2164
|
+
updatedFilters[field][itemKey] = true;
|
|
2165
|
+
return updatedFilters;
|
|
2166
|
+
}
|
|
2167
|
+
delete updatedFilters[field][itemKey];
|
|
2168
|
+
if (Object.keys(updatedFilters[field]).length === 0) {
|
|
2169
|
+
delete updatedFilters[field];
|
|
2170
|
+
}
|
|
2171
|
+
return updatedFilters;
|
|
2172
|
+
});
|
|
2173
|
+
};
|
|
2174
|
+
var _useState = useState(isActive),
|
|
2175
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
2176
|
+
activeItem = _useState2[0],
|
|
2177
|
+
setActiveItem = _useState2[1];
|
|
2178
|
+
useEffect(function () {
|
|
2179
|
+
var _Object$keys;
|
|
2180
|
+
if (selectedFilters && selectedFilters[field] && ((_Object$keys = Object.keys(selectedFilters[field])) === null || _Object$keys === void 0 ? void 0 : _Object$keys.length) > 0) return;else if (activeItem === true) {
|
|
2181
|
+
setActiveItem(false);
|
|
2182
|
+
}
|
|
2183
|
+
}, [selectedFilters]);
|
|
2184
|
+
return /*#__PURE__*/React.createElement("label", _extends({
|
|
2185
|
+
className: "\n flex items-start gap-2 px-2 py-1.5 rounded-sm text-sm cursor-pointer transition hover:bg-uiAccent/5\n ".concat(className !== null && className !== void 0 ? className : "", "\n ")
|
|
2186
|
+
}, rest), /*#__PURE__*/React.createElement("input", {
|
|
2187
|
+
id: itemKey,
|
|
2188
|
+
name: field,
|
|
2189
|
+
disabled: item.count == 0,
|
|
2190
|
+
value: itemName,
|
|
2191
|
+
type: type,
|
|
2192
|
+
className: "h-4 w-4 mt-px text-primary border-uiAccent/30 transition-colors rounded-sm",
|
|
2193
|
+
checked: activeItem,
|
|
2194
|
+
onChange: function onChange() {
|
|
2195
|
+
setActiveItem(!activeItem);
|
|
2196
|
+
changeHandler();
|
|
2197
|
+
}
|
|
2198
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
2199
|
+
className: "font-medium"
|
|
2200
|
+
}, itemName), hasCount && /*#__PURE__*/React.createElement("span", {
|
|
2201
|
+
className: "inline-block mt-1 ml-auto text-xs leading-none text-primary"
|
|
2202
|
+
}, "(", item.count, ")"));
|
|
2203
|
+
};
|
|
2204
|
+
|
|
2205
|
+
var _excluded$7 = ["className", "activeItemsCount"];
|
|
2206
|
+
var ButtonItemsPill = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
2207
|
+
_ref.className;
|
|
2208
|
+
var activeItemsCount = _ref.activeItemsCount,
|
|
2209
|
+
props = _objectWithoutProperties(_ref, _excluded$7);
|
|
2210
|
+
return /*#__PURE__*/React.createElement(Button.Btn, _extends({
|
|
2211
|
+
ref: ref,
|
|
2212
|
+
size: "none",
|
|
2213
|
+
variant: "none",
|
|
2214
|
+
className: "relative z-[2] group inline-flex items-center gap-px ml-auto mr-1.5 pl-1.5 pr-1 py-0.5 rounded bg-primary/10 text-xs font-bold text-primary ring-1 ring-inset ring-primary/20"
|
|
2215
|
+
}, props), activeItemsCount > 9 ? '9+' : activeItemsCount, /*#__PURE__*/React.createElement(Button.Icon, {
|
|
2216
|
+
icon: "uil:times",
|
|
2217
|
+
size: "w-3.5 h-3.5"
|
|
2218
|
+
}));
|
|
2219
|
+
});
|
|
2220
|
+
ButtonItemsPill.displayName = 'ButtonItemsPill';
|
|
2221
|
+
|
|
2222
|
+
var AccordionFilterItem = /*#__PURE__*/memo(function (_ref) {
|
|
2223
|
+
var filter = _ref.filter,
|
|
2224
|
+
setDefaultValue = _ref.setDefaultValue,
|
|
2225
|
+
setSelectedFilters = _ref.setSelectedFilters,
|
|
2226
|
+
selectedFilters = _ref.selectedFilters;
|
|
2227
|
+
var fieldKey = filter.id;
|
|
2228
|
+
var activeItemsCount = selectedFilters != null && selectedFilters[fieldKey] ? Object.keys(selectedFilters[fieldKey]).length : 0;
|
|
2229
|
+
var handleClearFilters = function handleClearFilters() {
|
|
2230
|
+
setSelectedFilters(function (prevFilters) {
|
|
2231
|
+
var updatedFilters = _objectSpread2({}, prevFilters);
|
|
2232
|
+
delete updatedFilters[fieldKey];
|
|
2233
|
+
return updatedFilters;
|
|
2234
|
+
});
|
|
2235
|
+
};
|
|
2236
|
+
return /*#__PURE__*/React.createElement(Accordion.Item, {
|
|
2237
|
+
key: filter.id,
|
|
2238
|
+
id: filter.id
|
|
2239
|
+
}, /*#__PURE__*/React.createElement(Accordion.Trigger.HasHeader, {
|
|
2240
|
+
onClick: function onClick() {
|
|
2241
|
+
return setDefaultValue(filter.id);
|
|
2242
|
+
},
|
|
2243
|
+
className: "stretched-link text-left",
|
|
2244
|
+
iconClassName: "order-last",
|
|
2245
|
+
headerClassName: "relative py-2 rounded border border-uiAccent/20 bg-white text-sm transition data-[state=open]:border-b-transparent data-[state=open]:rounded-b-none",
|
|
2246
|
+
header: activeItemsCount > 0 && /*#__PURE__*/React.createElement(ButtonItemsPill, {
|
|
2247
|
+
activeItemsCount: activeItemsCount,
|
|
2248
|
+
onClick: handleClearFilters
|
|
2249
|
+
})
|
|
2250
|
+
}, filter.title), /*#__PURE__*/React.createElement(Accordion.Content, {
|
|
2251
|
+
bodyClassName: "px-2 py-1 bg-white rounded-b border border-uiAccent/20 border-t-0 max-h-[20vh] md:max-h-[25vh] overflow-auto"
|
|
2252
|
+
}, filter.items.sort().map(function (item) {
|
|
2253
|
+
return /*#__PURE__*/React.createElement(FilterItem, {
|
|
2254
|
+
key: item.name,
|
|
2255
|
+
item: item,
|
|
2256
|
+
field: filter.id,
|
|
2257
|
+
selectedFilters: selectedFilters,
|
|
2258
|
+
setSelectedFilters: setSelectedFilters
|
|
2259
|
+
});
|
|
2260
|
+
})));
|
|
2261
|
+
});
|
|
2262
|
+
AccordionFilterItem.displayName = 'AccordionItem';
|
|
2263
|
+
|
|
2264
|
+
var Loading = function Loading(_ref) {
|
|
2265
|
+
_ref.color;
|
|
2266
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2267
|
+
className: "flex items-center justify-center w-full h-full"
|
|
2268
|
+
}, /*#__PURE__*/React.createElement(IconContained, {
|
|
2269
|
+
icon: "ph:spinner",
|
|
2270
|
+
className: "animate-spin text-gray-300",
|
|
2271
|
+
width: "40",
|
|
2272
|
+
height: "40"
|
|
2273
|
+
}));
|
|
2274
|
+
};
|
|
2275
|
+
|
|
2276
|
+
var AccordionFilters = function AccordionFilters(_ref) {
|
|
2277
|
+
var className = _ref.className,
|
|
2278
|
+
defaultValue = _ref.defaultValue,
|
|
2279
|
+
setDefaultValue = _ref.setDefaultValue,
|
|
2280
|
+
setLocation = _ref.setLocation,
|
|
2281
|
+
setSelectedListItem = _ref.setSelectedListItem;
|
|
2282
|
+
var _useMapList = useMapList(),
|
|
2283
|
+
filterOptions = _useMapList.filterOptions,
|
|
2284
|
+
selectedFilters = _useMapList.selectedFilters,
|
|
2285
|
+
_setSelectedFilters = _useMapList.setSelectedFilters;
|
|
2286
|
+
_useMapList.favorites;
|
|
2287
|
+
_useMapList.filterByFavorites;
|
|
2288
|
+
_useMapList.setFilterByFavorites;
|
|
2289
|
+
return /*#__PURE__*/React.createElement(CardFilter, {
|
|
2290
|
+
className: className !== null && className !== void 0 ? className : ""
|
|
2291
|
+
}, /*#__PURE__*/React.createElement(CardFilter.Title, {
|
|
2292
|
+
icon: "fa-solid:sliders-h"
|
|
2293
|
+
}, /*#__PURE__*/React.createElement("span", null, "Filter ", /*#__PURE__*/React.createElement("span", {
|
|
2294
|
+
className: "md:hidden lg:inline"
|
|
2295
|
+
}, "your search"))), /*#__PURE__*/React.createElement(Accordion, {
|
|
2296
|
+
defaultValue: defaultValue,
|
|
2297
|
+
className: "space-y-4"
|
|
2298
|
+
}, !(filterOptions !== null && filterOptions !== void 0 && filterOptions.filters) && /*#__PURE__*/React.createElement(Accordion.Item, null, /*#__PURE__*/React.createElement(Loading, null)), (filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.filters) && (filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.filters.map(function (filter) {
|
|
2299
|
+
return /*#__PURE__*/React.createElement(AccordionFilterItem, {
|
|
2300
|
+
key: filter.id,
|
|
2301
|
+
filter: filter,
|
|
2302
|
+
setDefaultValue: setDefaultValue,
|
|
2303
|
+
selectedFilters: selectedFilters,
|
|
2304
|
+
setSelectedFilters: function setSelectedFilters(prevFilters) {
|
|
2305
|
+
_setSelectedFilters(prevFilters);
|
|
2306
|
+
setLocation(null);
|
|
2307
|
+
setSelectedListItem(null);
|
|
2308
|
+
}
|
|
2309
|
+
});
|
|
2310
|
+
}))));
|
|
2311
|
+
};
|
|
2312
|
+
|
|
2313
|
+
var MapContext = /*#__PURE__*/createContext();
|
|
2314
|
+
var useMap = function useMap() {
|
|
2315
|
+
var context = useContext(MapContext);
|
|
2316
|
+
if (!context) {
|
|
2317
|
+
throw new Error("useMap must be used within a MapProvider");
|
|
2318
|
+
}
|
|
2319
|
+
return context;
|
|
2320
|
+
};
|
|
2321
|
+
var MapProvider = function MapProvider(_ref) {
|
|
2322
|
+
var _getStorageObject;
|
|
2323
|
+
var children = _ref.children,
|
|
2324
|
+
resetFilters = _ref.resetFilters;
|
|
2325
|
+
var _useState = useState(getStorageObject('selectedListItem')),
|
|
2326
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
2327
|
+
selectedListItem = _useState2[0],
|
|
2328
|
+
setSelectedListItem = _useState2[1];
|
|
2329
|
+
var _useState3 = useState(getStorageObject('location')),
|
|
2330
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
2331
|
+
location = _useState4[0],
|
|
2332
|
+
setLocation = _useState4[1];
|
|
2333
|
+
var _useState5 = useState(getStorageObject("center", {
|
|
2334
|
+
lat: 39.8283,
|
|
2335
|
+
lng: -98.5795
|
|
2336
|
+
})),
|
|
2337
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
2338
|
+
center = _useState6[0],
|
|
2339
|
+
setCenter = _useState6[1];
|
|
2340
|
+
var _useState7 = useState(getStorageObject("zoom", 10)),
|
|
2341
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
2342
|
+
zoom = _useState8[0],
|
|
2343
|
+
setZoom = _useState8[1];
|
|
2344
|
+
var _useState9 = useState(getStorageObject('commuteLocation')),
|
|
2345
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
2346
|
+
commuteLocation = _useState10[0],
|
|
2347
|
+
setCommuteLocation = _useState10[1];
|
|
2348
|
+
var _useState11 = useState([]),
|
|
2349
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
2350
|
+
selectedPlaces = _useState12[0],
|
|
2351
|
+
setSelectedPlaces = _useState12[1];
|
|
2352
|
+
var _useState13 = useState(false),
|
|
2353
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
2354
|
+
mapInteracted = _useState14[0],
|
|
2355
|
+
setMapInteracted = _useState14[1];
|
|
2356
|
+
var _useState15 = useState((_getStorageObject = getStorageObject('selectedListItem')) !== null && _getStorageObject !== void 0 ? _getStorageObject : {
|
|
2357
|
+
id: "defaultId"
|
|
2358
|
+
}),
|
|
2359
|
+
_useState16 = _slicedToArray(_useState15, 1),
|
|
2360
|
+
firstLoadListItem = _useState16[0];
|
|
2361
|
+
var _useState17 = useState(null),
|
|
2362
|
+
_useState18 = _slicedToArray(_useState17, 2),
|
|
2363
|
+
travelTime = _useState18[0],
|
|
2364
|
+
setTravelTime = _useState18[1];
|
|
2365
|
+
var userSetZoom = useRef(true);
|
|
2366
|
+
useEffect(function () {
|
|
2367
|
+
setStorageObject("commuteLocation", commuteLocation);
|
|
2368
|
+
if (!commuteLocation) {
|
|
2369
|
+
setTravelTime(null);
|
|
2370
|
+
}
|
|
2371
|
+
}, [commuteLocation]);
|
|
2372
|
+
useEffect(function () {
|
|
2373
|
+
setStorageObject("selectedListItem", selectedListItem);
|
|
2374
|
+
}, [selectedListItem]);
|
|
2375
|
+
useEffect(function () {
|
|
2376
|
+
localStorage.setItem("zoom", zoom);
|
|
2377
|
+
}, [zoom]);
|
|
2378
|
+
useEffect(function () {
|
|
2379
|
+
if (location == null) {
|
|
2380
|
+
localStorage.removeItem("location");
|
|
2381
|
+
} else {
|
|
2382
|
+
setStorageObject("location", location);
|
|
2383
|
+
}
|
|
2384
|
+
}, [location]);
|
|
2385
|
+
useEffect(function () {
|
|
2386
|
+
setStorageObject("center", center);
|
|
2387
|
+
}, [center]);
|
|
2388
|
+
var selectItem = function selectItem(item, itemLocation, zoom, center) {
|
|
2389
|
+
setSelectedListItem(item);
|
|
2390
|
+
if (mapInteracted === false && itemLocation != null) {
|
|
2391
|
+
setLocation(itemLocation);
|
|
2392
|
+
}
|
|
2393
|
+
if (mapInteracted === false || itemLocation != null) {
|
|
2394
|
+
setLocation(itemLocation);
|
|
2395
|
+
setCenter(center);
|
|
2396
|
+
}
|
|
2397
|
+
if (mapInteracted === false) {
|
|
2398
|
+
setZoom(zoom);
|
|
2399
|
+
}
|
|
2400
|
+
};
|
|
2401
|
+
var filterReset = function filterReset() {
|
|
2402
|
+
setSelectedPlaces({});
|
|
2403
|
+
setSelectedListItem(null);
|
|
2404
|
+
setLocation(null);
|
|
2405
|
+
setZoom(8);
|
|
2406
|
+
setMapInteracted(false);
|
|
2407
|
+
};
|
|
2408
|
+
if (resetFilters === true) {
|
|
2409
|
+
filterReset();
|
|
2410
|
+
}
|
|
2411
|
+
var selectLocationEntity = function selectLocationEntity(location) {
|
|
2412
|
+
localStorage.removeItem("selectedListItem");
|
|
2413
|
+
setTimeout(function () {
|
|
2414
|
+
return setLocation(location);
|
|
2415
|
+
}, 200);
|
|
2416
|
+
setSelectedListItem(null);
|
|
2417
|
+
};
|
|
2418
|
+
return /*#__PURE__*/React.createElement(MapContext.Provider, {
|
|
2419
|
+
value: _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({
|
|
2420
|
+
selectedListItem: selectedListItem,
|
|
2421
|
+
setSelectedListItem: setSelectedListItem,
|
|
2422
|
+
location: location,
|
|
2423
|
+
center: center,
|
|
2424
|
+
zoom: zoom,
|
|
2425
|
+
setZoom: setZoom,
|
|
2426
|
+
selectItem: selectItem,
|
|
2427
|
+
commuteLocation: commuteLocation,
|
|
2428
|
+
setCommuteLocation: setCommuteLocation,
|
|
2429
|
+
setSelectedPlaces: setSelectedPlaces,
|
|
2430
|
+
selectedPlaces: selectedPlaces,
|
|
2431
|
+
selectLocationEntity: selectLocationEntity,
|
|
2432
|
+
setLocation: setLocation,
|
|
2433
|
+
setMapInteracted: setMapInteracted,
|
|
2434
|
+
mapInteracted: mapInteracted,
|
|
2435
|
+
userSetZoom: userSetZoom
|
|
2436
|
+
}, "setLocation", setLocation), "location", location), "firstLoadListItem", firstLoadListItem), "travelTime", travelTime), "setTravelTime", setTravelTime), "filterReset", filterReset)
|
|
2437
|
+
}, children);
|
|
2438
|
+
};
|
|
2439
|
+
|
|
2440
|
+
var FilterCommute = function FilterCommute(_ref) {
|
|
2441
|
+
var className = _ref.className;
|
|
2442
|
+
var _usePlacesAutocomplet = usePlacesAutocomplete(),
|
|
2443
|
+
ready = _usePlacesAutocomplet.ready;
|
|
2444
|
+
_usePlacesAutocomplet.value;
|
|
2445
|
+
var _usePlacesAutocomplet2 = _usePlacesAutocomplet.suggestions,
|
|
2446
|
+
status = _usePlacesAutocomplet2.status,
|
|
2447
|
+
data = _usePlacesAutocomplet2.data,
|
|
2448
|
+
setValue = _usePlacesAutocomplet.setValue,
|
|
2449
|
+
clearSuggestions = _usePlacesAutocomplet.clearSuggestions;
|
|
2450
|
+
var _useState = useState(getStorageItem('selectedCommute', '')),
|
|
2451
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
2452
|
+
selected = _useState2[0],
|
|
2453
|
+
setSelected = _useState2[1];
|
|
2454
|
+
var inputRef = useRef(null);
|
|
2455
|
+
var _useMapList = useMapList(),
|
|
2456
|
+
setCommuteLocation = _useMapList.setCommuteLocation,
|
|
2457
|
+
commuteLocation = _useMapList.commuteLocation;
|
|
2458
|
+
var _useState3 = useState(getStorageItem('isCurrentLocation', false)),
|
|
2459
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
2460
|
+
isCurrentLocation = _useState4[0],
|
|
2461
|
+
setIsCurrentLocation = _useState4[1];
|
|
2462
|
+
useEffect(function () {
|
|
2463
|
+
if (commuteLocation !== null && commuteLocation != '') return;
|
|
2464
|
+
setIsCurrentLocation(false);
|
|
2465
|
+
localStorage.removeItem('isCurrentLocation');
|
|
2466
|
+
localStorage.removeItem('selectedCommute');
|
|
2467
|
+
setSelected("");
|
|
2468
|
+
}, [commuteLocation]);
|
|
2469
|
+
var handleSelect = /*#__PURE__*/function () {
|
|
2470
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(val) {
|
|
2471
|
+
var isCurrLocation,
|
|
2472
|
+
results,
|
|
2473
|
+
_yield$getLatLng,
|
|
2474
|
+
lat,
|
|
2475
|
+
lng,
|
|
2476
|
+
_args = arguments;
|
|
2477
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
2478
|
+
while (1) switch (_context.prev = _context.next) {
|
|
2479
|
+
case 0:
|
|
2480
|
+
isCurrLocation = _args.length > 1 && _args[1] !== undefined ? _args[1] : false;
|
|
2481
|
+
setValue(val, false);
|
|
2482
|
+
setSelected(val);
|
|
2483
|
+
localStorage.setItem('selectedCommute', val);
|
|
2484
|
+
clearSuggestions();
|
|
2485
|
+
if (!isCurrLocation) {
|
|
2486
|
+
_context.next = 7;
|
|
2487
|
+
break;
|
|
2488
|
+
}
|
|
2489
|
+
return _context.abrupt("return");
|
|
2490
|
+
case 7:
|
|
2491
|
+
_context.prev = 7;
|
|
2492
|
+
_context.next = 10;
|
|
2493
|
+
return getGeocode({
|
|
2494
|
+
address: val
|
|
2495
|
+
});
|
|
2496
|
+
case 10:
|
|
2497
|
+
results = _context.sent;
|
|
2498
|
+
_context.next = 13;
|
|
2499
|
+
return getLatLng(results[0]);
|
|
2500
|
+
case 13:
|
|
2501
|
+
_yield$getLatLng = _context.sent;
|
|
2502
|
+
lat = _yield$getLatLng.lat;
|
|
2503
|
+
lng = _yield$getLatLng.lng;
|
|
2504
|
+
setCommuteLocation({
|
|
2505
|
+
lat: lat,
|
|
2506
|
+
lng: lng
|
|
2507
|
+
});
|
|
2508
|
+
_context.next = 21;
|
|
2509
|
+
break;
|
|
2510
|
+
case 19:
|
|
2511
|
+
_context.prev = 19;
|
|
2512
|
+
_context.t0 = _context["catch"](7);
|
|
2513
|
+
case 21:
|
|
2514
|
+
case "end":
|
|
2515
|
+
return _context.stop();
|
|
2516
|
+
}
|
|
2517
|
+
}, _callee, null, [[7, 19]]);
|
|
2518
|
+
}));
|
|
2519
|
+
return function handleSelect(_x) {
|
|
2520
|
+
return _ref2.apply(this, arguments);
|
|
2521
|
+
};
|
|
2522
|
+
}();
|
|
2523
|
+
var fetchLocation = function fetchLocation() {
|
|
2524
|
+
if (!navigator.geolocation) {
|
|
2525
|
+
console.error("Geolocation is not supported by this browser.");
|
|
2526
|
+
return;
|
|
2527
|
+
}
|
|
2528
|
+
navigator.geolocation.getCurrentPosition(function (position) {
|
|
2529
|
+
setCommuteLocation({
|
|
2530
|
+
lat: position.coords.latitude,
|
|
2531
|
+
lng: position.coords.longitude
|
|
2532
|
+
});
|
|
2533
|
+
handleSelect("Current Location");
|
|
2534
|
+
}, function (error) {
|
|
2535
|
+
console.error("Error fetching location", error);
|
|
2536
|
+
});
|
|
2537
|
+
};
|
|
2538
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2539
|
+
className: "relative ".concat(className !== null && className !== void 0 ? className : "")
|
|
2540
|
+
}, /*#__PURE__*/React.createElement("label", {
|
|
2541
|
+
htmlFor: "commute",
|
|
2542
|
+
className: "flex items-center gap-2 mb-2 text-xs uppercase font-bold text-uiText"
|
|
2543
|
+
}, /*#__PURE__*/React.createElement(IconContained, {
|
|
2544
|
+
icon: "ri:pin-distance-fill",
|
|
2545
|
+
size: "w-5 h-5",
|
|
2546
|
+
className: "text-uiAccent/30"
|
|
2547
|
+
}), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("span", {
|
|
2548
|
+
className: "md:hidden lg:inline"
|
|
2549
|
+
}, "Calculate your"), " commute")), /*#__PURE__*/React.createElement(Combobox, {
|
|
2550
|
+
value: selected,
|
|
2551
|
+
onChange: handleSelect
|
|
2552
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
2553
|
+
className: "relative mt-1"
|
|
2554
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
2555
|
+
className: "relative flex items-center w-full pr-2 cursor-default overflow-hidden rounded bg-white text-left border border-uiAccent/20 focus-within:ring-1 focus-within:ring-uiAccent focus:outline-none"
|
|
2556
|
+
}, /*#__PURE__*/React.createElement(Combobox.Input, {
|
|
2557
|
+
className: "w-full border-none py-2 pl-4 pr-1 text-sm leading-5 text-gray-900 focus:ring-0 placeholder:text-gray-400",
|
|
2558
|
+
onChange: function onChange(e) {
|
|
2559
|
+
setValue(e.target.value);
|
|
2560
|
+
setSelected(e.target.value);
|
|
2561
|
+
},
|
|
2562
|
+
value: selected,
|
|
2563
|
+
disabled: !ready,
|
|
2564
|
+
placeholder: "Starting point",
|
|
2565
|
+
ref: inputRef
|
|
2566
|
+
}), /*#__PURE__*/React.createElement(Button.Btn, {
|
|
2567
|
+
variant: "icon",
|
|
2568
|
+
size: "sqsm",
|
|
2569
|
+
onClick: function onClick() {
|
|
2570
|
+
setIsCurrentLocation(!isCurrentLocation);
|
|
2571
|
+
localStorage.setItem('isCurrentLocation', !isCurrentLocation);
|
|
2572
|
+
if (isCurrentLocation || commuteLocation) {
|
|
2573
|
+
setCommuteLocation("");
|
|
2574
|
+
setSelected("");
|
|
2575
|
+
} else if (!commuteLocation) {
|
|
2576
|
+
fetchLocation();
|
|
2577
|
+
}
|
|
2578
|
+
},
|
|
2579
|
+
className: ""
|
|
2580
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
2581
|
+
className: " sr-only"
|
|
2582
|
+
}, "Use your location"), commuteLocation ? /*#__PURE__*/React.createElement(IconContained, {
|
|
2583
|
+
icon: "mdi:times"
|
|
2584
|
+
}) : /*#__PURE__*/React.createElement(Button.Icon, {
|
|
2585
|
+
className: isCurrentLocation ? 'text-blue-500' : 'text-current',
|
|
2586
|
+
icon: "mdi:my-location"
|
|
2587
|
+
}))), /*#__PURE__*/React.createElement(Transition, {
|
|
2588
|
+
as: Fragment,
|
|
2589
|
+
leave: "transition ease-in duration-100",
|
|
2590
|
+
leaveFrom: "opacity-100",
|
|
2591
|
+
leaveTo: "opacity-0",
|
|
2592
|
+
afterLeave: clearSuggestions
|
|
2593
|
+
}, /*#__PURE__*/React.createElement(Combobox.Options, {
|
|
2594
|
+
className: "absolute z-20 mt-1 max-h-60 w-full overflow-auto rounded bg-white py-1 text-base shadow ring-1 ring-uiAccent/10 focus:outline-none sm:text-sm"
|
|
2595
|
+
}, status === "OK" && data.map(function (data) {
|
|
2596
|
+
return /*#__PURE__*/React.createElement(Combobox.Option, {
|
|
2597
|
+
key: data.place_id,
|
|
2598
|
+
value: data.description,
|
|
2599
|
+
className: function className(_ref3) {
|
|
2600
|
+
var active = _ref3.active;
|
|
2601
|
+
return "relative cursor-default select-none px-4 py-2 ".concat(active ? "bg-primary text-white" : "text-uiText");
|
|
2602
|
+
}
|
|
2603
|
+
}, function (_ref4) {
|
|
2604
|
+
var selected = _ref4.selected;
|
|
2605
|
+
_ref4.active;
|
|
2606
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
2607
|
+
className: "block truncate ".concat(selected ? "font-bold" : "font-medium")
|
|
2608
|
+
}, data.description);
|
|
2609
|
+
});
|
|
2610
|
+
}))))));
|
|
2611
|
+
};
|
|
2612
|
+
|
|
2613
|
+
var _excluded$6 = ["className", "item", "field"];
|
|
2614
|
+
var RadioItem = function RadioItem(_ref) {
|
|
2615
|
+
var className = _ref.className,
|
|
2616
|
+
item = _ref.item,
|
|
2617
|
+
field = _ref.field,
|
|
2618
|
+
rest = _objectWithoutProperties(_ref, _excluded$6);
|
|
2619
|
+
var _useMap = useMap(),
|
|
2620
|
+
selectedPlaces = _useMap.selectedPlaces,
|
|
2621
|
+
setSelectedPlaces = _useMap.setSelectedPlaces;
|
|
2622
|
+
var chosenPlace = item.key.toLowerCase();
|
|
2623
|
+
var isActive = selectedPlaces.includes(chosenPlace);
|
|
2624
|
+
var changeHandler = function changeHandler() {
|
|
2625
|
+
setSelectedPlaces([isActive ? '' : chosenPlace]);
|
|
2626
|
+
};
|
|
2627
|
+
return /*#__PURE__*/React.createElement("label", _extends({
|
|
2628
|
+
key: item.key,
|
|
2629
|
+
className: "\n flex items-start gap-2 px-2 py-1.5 rounded-sm text-sm cursor-pointer transition hover:bg-uiAccent/5\n\t\t\t\t".concat(item.count === 0 ? 'text-uiDisabled cursor-not-allowed' : 'hover:bg-uiAccent/5', "\n ").concat(className !== null && className !== void 0 ? className : "", "\n ")
|
|
2630
|
+
}, rest), /*#__PURE__*/React.createElement("input", {
|
|
2631
|
+
key: item.key,
|
|
2632
|
+
id: item.Key,
|
|
2633
|
+
name: field,
|
|
2634
|
+
value: item.key,
|
|
2635
|
+
type: "radio",
|
|
2636
|
+
className: "h-4 w-4 mt-px text-primary border-uiAccent/30 transition-colors rounded-full",
|
|
2637
|
+
checked: isActive,
|
|
2638
|
+
onClick: function onClick() {
|
|
2639
|
+
changeHandler();
|
|
2640
|
+
},
|
|
2641
|
+
onChange: function onChange() {}
|
|
2642
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
2643
|
+
className: "font-medium"
|
|
2644
|
+
}, item.key), isActive && /*#__PURE__*/React.createElement("div", {
|
|
2645
|
+
className: " w-full unselect-div"
|
|
2646
|
+
}, /*#__PURE__*/React.createElement(IconContained, {
|
|
2647
|
+
className: "float-right",
|
|
2648
|
+
icon: "mdi:times"
|
|
2649
|
+
})));
|
|
2650
|
+
};
|
|
2651
|
+
|
|
2652
|
+
var FilterPointsOfInterest = function FilterPointsOfInterest(_ref) {
|
|
2653
|
+
var _ref$title = _ref.title,
|
|
2654
|
+
title = _ref$title === void 0 ? "Points of interest" : _ref$title,
|
|
2655
|
+
pointsOfInterest = _ref.pointsOfInterest,
|
|
2656
|
+
setDefaultValue = _ref.setDefaultValue,
|
|
2657
|
+
className = _ref.className,
|
|
2658
|
+
defaultValue = _ref.defaultValue;
|
|
2659
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2660
|
+
className: "\n\t\t\t\trelative\n\t\t\t\t".concat(className !== null && className !== void 0 ? className : "", "\n\t\t\t")
|
|
2661
|
+
}, /*#__PURE__*/React.createElement(Accordion, {
|
|
2662
|
+
defaultValue: defaultValue,
|
|
2663
|
+
className: "space-y-4"
|
|
2664
|
+
}, /*#__PURE__*/React.createElement(Accordion.Item, {
|
|
2665
|
+
id: "points-of-interest"
|
|
2666
|
+
}, /*#__PURE__*/React.createElement(Accordion.Trigger.HasHeader, {
|
|
2667
|
+
onClick: function onClick() {
|
|
2668
|
+
return setDefaultValue("points-of-interest");
|
|
2669
|
+
},
|
|
2670
|
+
className: "stretched-link text-left",
|
|
2671
|
+
iconClassName: "order-last",
|
|
2672
|
+
headerClassName: "relative py-2 rounded border border-uiAccent/20 bg-white text-sm transition data-[state=open]:border-b-transparent data-[state=open]:rounded-b-none"
|
|
2673
|
+
}, title), /*#__PURE__*/React.createElement(Accordion.Content, {
|
|
2674
|
+
bodyClassName: "px-2 py-1 bg-white rounded-b border border-uiAccent/20 border-t-0 max-h-[20vh] md:max-h-[25vh] overflow-auto"
|
|
2675
|
+
}, pointsOfInterest.items.map(function (item, index) {
|
|
2676
|
+
return /*#__PURE__*/React.createElement(RadioItem, {
|
|
2677
|
+
key: item.key + index,
|
|
2678
|
+
item: item,
|
|
2679
|
+
field: item.id
|
|
2680
|
+
});
|
|
2681
|
+
})))));
|
|
2682
|
+
};
|
|
2683
|
+
|
|
2684
|
+
var FilterLocation = function FilterLocation(_ref) {
|
|
2685
|
+
var className = _ref.className,
|
|
2686
|
+
defaultValue = _ref.defaultValue,
|
|
2687
|
+
setDefaultValue = _ref.setDefaultValue,
|
|
2688
|
+
_ref$showMap = _ref.showMap,
|
|
2689
|
+
showMap = _ref$showMap === void 0 ? false : _ref$showMap,
|
|
2690
|
+
setLocation = _ref.setLocation,
|
|
2691
|
+
setSelectedListItem = _ref.setSelectedListItem;
|
|
2692
|
+
var _useMapList = useMapList(),
|
|
2693
|
+
_setSelectedFilters = _useMapList.setSelectedFilters,
|
|
2694
|
+
selectedFilters = _useMapList.selectedFilters,
|
|
2695
|
+
filterOptions = _useMapList.filterOptions;
|
|
2696
|
+
selectedFilters != null && selectedFilters["cityState"] ? Object.keys(selectedFilters["cityState"]).length : 0;
|
|
2697
|
+
var locations = filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.locations;
|
|
2698
|
+
var pointsOfInterest = filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.pointsOfInterest;
|
|
2699
|
+
return /*#__PURE__*/React.createElement(CardFilter, {
|
|
2700
|
+
className: className !== null && className !== void 0 ? className : ""
|
|
2701
|
+
}, /*#__PURE__*/React.createElement(CardFilter.Title, {
|
|
2702
|
+
icon: "fluent:location-16-filled"
|
|
2703
|
+
}, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("span", {
|
|
2704
|
+
className: "hidden lg:inline"
|
|
2705
|
+
}, "Job"), " location")), !locations && /*#__PURE__*/React.createElement(Loading, null), locations && /*#__PURE__*/React.createElement(Accordion, {
|
|
2706
|
+
defaultValue: defaultValue,
|
|
2707
|
+
className: "space-y-4"
|
|
2708
|
+
}, locations === null || locations === void 0 ? void 0 : locations.map(function (filter) {
|
|
2709
|
+
return /*#__PURE__*/React.createElement(AccordionFilterItem, {
|
|
2710
|
+
key: filter.id,
|
|
2711
|
+
filter: filter,
|
|
2712
|
+
setDefaultValue: setDefaultValue,
|
|
2713
|
+
selectedFilters: selectedFilters,
|
|
2714
|
+
setSelectedFilters: function setSelectedFilters(prevFilters) {
|
|
2715
|
+
_setSelectedFilters(prevFilters);
|
|
2716
|
+
setLocation(null);
|
|
2717
|
+
setSelectedListItem(null);
|
|
2718
|
+
}
|
|
2719
|
+
});
|
|
2720
|
+
}), showMap && /*#__PURE__*/React.createElement(FilterCommute, {
|
|
2721
|
+
className: "mt-6"
|
|
2722
|
+
}), showMap && /*#__PURE__*/React.createElement(FilterPointsOfInterest, {
|
|
2723
|
+
className: "mt-4",
|
|
2724
|
+
pointsOfInterest: pointsOfInterest,
|
|
2725
|
+
setDefaultValue: setDefaultValue,
|
|
2726
|
+
defaultValue: defaultValue
|
|
2727
|
+
})));
|
|
2728
|
+
};
|
|
2729
|
+
|
|
2730
|
+
var Filter = function Filter(_ref) {
|
|
2731
|
+
var className = _ref.className,
|
|
2732
|
+
showMap = _ref.showMap;
|
|
2733
|
+
var _useState = useState(false),
|
|
2734
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
2735
|
+
hasActiveFilters = _useState2[0],
|
|
2736
|
+
setHasActiveFilters = _useState2[1];
|
|
2737
|
+
var _useState3 = useState(null),
|
|
2738
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
2739
|
+
defaultValue = _useState4[0],
|
|
2740
|
+
_setDefaultValue = _useState4[1];
|
|
2741
|
+
var _useMap = useMap(),
|
|
2742
|
+
setSelectedListItem = _useMap.setSelectedListItem,
|
|
2743
|
+
setLocation = _useMap.setLocation,
|
|
2744
|
+
filterReset = _useMap.filterReset;
|
|
2745
|
+
var _useMapList = useMapList(),
|
|
2746
|
+
filteredListings = _useMapList.filteredListings,
|
|
2747
|
+
selectedFilters = _useMapList.selectedFilters,
|
|
2748
|
+
setSelectedFilters = _useMapList.setSelectedFilters,
|
|
2749
|
+
setMobileTab = _useMapList.setMobileTab,
|
|
2750
|
+
handleSettingFavorites = _useMapList.handleSettingFavorites,
|
|
2751
|
+
setQuery = _useMapList.setQuery,
|
|
2752
|
+
siteConfig = _useMapList.siteConfig;
|
|
2753
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2754
|
+
className: "\n\t\t\t\trelative max-h-[95vh] md:max-h-screen overflow-y-auto overflow-x-auto\n\t\t\t\t".concat(className !== null && className !== void 0 ? className : "", "\n\t\t\t")
|
|
2755
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
2756
|
+
className: "px-4 md:pt-4 space-y-4"
|
|
2757
|
+
}, /*#__PURE__*/React.createElement(AccordionFilters, {
|
|
2758
|
+
setHasActiveFilters: setHasActiveFilters,
|
|
2759
|
+
defaultValue: defaultValue,
|
|
2760
|
+
setDefaultValue: function setDefaultValue(value) {
|
|
2761
|
+
_setDefaultValue(value == defaultValue ? "" : value);
|
|
2762
|
+
},
|
|
2763
|
+
setLocation: setLocation,
|
|
2764
|
+
setSelectedListItem: setSelectedListItem
|
|
2765
|
+
}), /*#__PURE__*/React.createElement(Search, null), siteConfig.hideLocations !== true && /*#__PURE__*/React.createElement(FilterLocation, {
|
|
2766
|
+
setHasActiveFilters: setHasActiveFilters,
|
|
2767
|
+
defaultValue: defaultValue,
|
|
2768
|
+
showMap: showMap,
|
|
2769
|
+
setDefaultValue: function setDefaultValue(value) {
|
|
2770
|
+
_setDefaultValue(value == defaultValue ? "" : value);
|
|
2771
|
+
},
|
|
2772
|
+
setLocation: setLocation,
|
|
2773
|
+
setSelectedListItem: setSelectedListItem
|
|
2774
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
2775
|
+
className: "sticky bottom-0 inset-x-0 flex items-center justify-between gap-2 py-2 px-4 mt-2 bg-white md:bg-gray-100"
|
|
2776
|
+
}, /*#__PURE__*/React.createElement(Button.Btn, {
|
|
2777
|
+
onClick: function onClick() {
|
|
2778
|
+
filterReset();
|
|
2779
|
+
setSelectedFilters({});
|
|
2780
|
+
setQuery(null);
|
|
2781
|
+
handleSettingFavorites(null);
|
|
2782
|
+
},
|
|
2783
|
+
variant: "outline",
|
|
2784
|
+
size: "sm"
|
|
2785
|
+
}, "Reset"), selectedFilters && Object.keys(selectedFilters).length > 0 && /*#__PURE__*/React.createElement(Button.Btn, {
|
|
2786
|
+
onClick: function onClick() {
|
|
2787
|
+
return setMobileTab("listTab");
|
|
2788
|
+
},
|
|
2789
|
+
variant: "primary",
|
|
2790
|
+
size: "sm",
|
|
2791
|
+
className: "\n\t\t\t\t\t\tmd:hidden\n\t\t\t\t\t\t".concat(hasActiveFilters ? "opacity-0 pointer-events-none" : "opacity-100", "\n\t\t\t\t\t")
|
|
2792
|
+
}, /*#__PURE__*/React.createElement(Button.Body, null, /*#__PURE__*/React.createElement(Button.Icon, {
|
|
2793
|
+
icon: "fluent:search-12-filled",
|
|
2794
|
+
size: "w-3.5 h-3.5"
|
|
2795
|
+
}), "Show ", filteredListings.length, " Jobs"))));
|
|
2796
|
+
};
|
|
2797
|
+
|
|
2798
|
+
var _excluded$5 = ["className", "children", "field", "setSortSetting", "sortSetting", "isSortable"];
|
|
2799
|
+
var SORT_STATE = {
|
|
2800
|
+
notSorted: "not-sorted",
|
|
2801
|
+
sortedAsc: "sorted-asc",
|
|
2802
|
+
sortedDesc: "sorted-desc"
|
|
2803
|
+
};
|
|
2804
|
+
var HeaderItem = function HeaderItem(_ref) {
|
|
2805
|
+
var className = _ref.className,
|
|
2806
|
+
children = _ref.children,
|
|
2807
|
+
field = _ref.field,
|
|
2808
|
+
setSortSetting = _ref.setSortSetting,
|
|
2809
|
+
sortSetting = _ref.sortSetting,
|
|
2810
|
+
isSortable = _ref.isSortable,
|
|
2811
|
+
rest = _objectWithoutProperties(_ref, _excluded$5);
|
|
2812
|
+
var _useState = useState(SORT_STATE.notSorted),
|
|
2813
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
2814
|
+
isSorted = _useState2[0],
|
|
2815
|
+
setIsSorted = _useState2[1];
|
|
2816
|
+
var handleChange = function handleChange(field) {
|
|
2817
|
+
if (isSortable === false) return;
|
|
2818
|
+
var setting = {
|
|
2819
|
+
field: field,
|
|
2820
|
+
type: isSorted === SORT_STATE.sortedAsc ? "desc" : "asc"
|
|
2821
|
+
};
|
|
2822
|
+
setSortSetting(setting);
|
|
2823
|
+
isSorted === SORT_STATE.notSorted ? setIsSorted(SORT_STATE.sortedAsc) : isSorted === SORT_STATE.sortedAsc ? setIsSorted(SORT_STATE.sortedDesc) : setIsSorted(SORT_STATE.sortedAsc);
|
|
2824
|
+
};
|
|
2825
|
+
useEffect(function () {
|
|
2826
|
+
if ((sortSetting === null || sortSetting === void 0 ? void 0 : sortSetting.field) != null && sortSetting.field != field) {
|
|
2827
|
+
setIsSorted(SORT_STATE.notSorted);
|
|
2828
|
+
} else if ((sortSetting === null || sortSetting === void 0 ? void 0 : sortSetting.field) != null && isSorted == SORT_STATE.notSorted && sortSetting.field == field) {
|
|
2829
|
+
setIsSorted(sortSetting.type == "asc" ? SORT_STATE.sortedAsc : SORT_STATE.sortedDesc);
|
|
2830
|
+
}
|
|
2831
|
+
}, [sortSetting, isSorted, field]);
|
|
2832
|
+
return /*#__PURE__*/React.createElement(Button.Btn, _extends({
|
|
2833
|
+
onClick: function onClick() {
|
|
2834
|
+
return handleChange(field);
|
|
2835
|
+
},
|
|
2836
|
+
variant: "none",
|
|
2837
|
+
className: "\n\t\t\t\tp-2 rounded-none text-left normal-case font-bold hover:bg-uiAccent/5 focus:bg-uiAccent/5\n\t\t\t\t".concat(className !== null && className !== void 0 ? className : "", "\n\t\t\t")
|
|
2838
|
+
}, rest), /*#__PURE__*/React.createElement(Button.Body, null, children, isSortable && /*#__PURE__*/React.createElement("div", {
|
|
2839
|
+
className: "flex flex-col pr-2"
|
|
2840
|
+
}, /*#__PURE__*/React.createElement(Button.Icon, {
|
|
2841
|
+
icon: "bi:caret-up-fill",
|
|
2842
|
+
size: "w-2.5 h-2.5",
|
|
2843
|
+
className: "\n\t\t\t\t\t\t\t\ttransition-opacity\n\t\t\t\t\t\t\t\t".concat(isSorted === "sorted-asc" ? "opacity-100 text-primary" : "opacity-30", "\n\t\t\t\t\t\t\t")
|
|
2844
|
+
}), /*#__PURE__*/React.createElement(Button.Icon, {
|
|
2845
|
+
icon: "bi:caret-down-fill",
|
|
2846
|
+
size: "w-2.5 h-2.5",
|
|
2847
|
+
className: "\n\t\t\t\t\t\t\t\ttransition-opacity\n\t\t\t\t\t\t\t\t".concat(isSorted === "sorted-desc" ? "opacity-100" : "opacity-30", "\n\t\t\t\t\t\t\t")
|
|
2848
|
+
}))));
|
|
2849
|
+
};
|
|
2850
|
+
|
|
2851
|
+
var _templateObject$2;
|
|
2852
|
+
var ListHeader = function ListHeader(_ref) {
|
|
2853
|
+
var className = _ref.className,
|
|
2854
|
+
fieldsShown = _ref.fieldsShown,
|
|
2855
|
+
fieldNames = _ref.fieldNames,
|
|
2856
|
+
_ref$fieldIsSortable = _ref.fieldIsSortable,
|
|
2857
|
+
fieldIsSortable = _ref$fieldIsSortable === void 0 ? true : _ref$fieldIsSortable,
|
|
2858
|
+
setSortSetting = _ref.setSortSetting,
|
|
2859
|
+
sortSetting = _ref.sortSetting;
|
|
2860
|
+
return /*#__PURE__*/React.createElement(Grid, {
|
|
2861
|
+
columns: "grid-flow-col auto-cols-fr",
|
|
2862
|
+
gap: "gap-0",
|
|
2863
|
+
isAnimated: false,
|
|
2864
|
+
className: twMerge(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteral(["\n\t\t\t\tpl-6 pr-8 hidden md:grid flex-auto bg-uiAccent/10 border-b border-uiAccent/10 sticky top-0 z-10 padding-bottom:20px\n\t\t\t\t", "\n\t\t\t"])), className !== null && className !== void 0 ? className : "")
|
|
2865
|
+
}, fieldsShown.map(function (field) {
|
|
2866
|
+
return /*#__PURE__*/React.createElement(HeaderItem, {
|
|
2867
|
+
key: field,
|
|
2868
|
+
isSortable: fieldIsSortable,
|
|
2869
|
+
sortSetting: sortSetting,
|
|
2870
|
+
field: field,
|
|
2871
|
+
setSortSetting: setSortSetting
|
|
2872
|
+
}, fieldNames[field]);
|
|
2873
|
+
}), /*#__PURE__*/React.createElement(HeaderItem, {
|
|
2874
|
+
key: "favorite",
|
|
2875
|
+
isSortable: false,
|
|
2876
|
+
field: "favorite"
|
|
2877
|
+
}, "Favorite"));
|
|
2878
|
+
};
|
|
2879
|
+
|
|
2880
|
+
var capitalize = function capitalize(str) {
|
|
2881
|
+
if (str && typeof str === "string") {
|
|
2882
|
+
return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
|
|
2883
|
+
}
|
|
2884
|
+
return str;
|
|
2885
|
+
};
|
|
2886
|
+
|
|
2887
|
+
var _excluded$4 = ["className", "children"];
|
|
2888
|
+
var PillWrapper = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
2889
|
+
var className = _ref.className,
|
|
2890
|
+
children = _ref.children,
|
|
2891
|
+
props = _objectWithoutProperties(_ref, _excluded$4);
|
|
2892
|
+
return /*#__PURE__*/React.createElement(Button.Btn, _extends({
|
|
2893
|
+
ref: ref,
|
|
2894
|
+
size: "none",
|
|
2895
|
+
variant: "none",
|
|
2896
|
+
className: "relative group inline-flex items-center gap-px ml-auto mr-1.5 pl-1.5 pr-1 py-0.5 rounded bg-primary/10 text-xs font-bold text-primary ring-1 ring-inset ring-primary/20 ".concat(className)
|
|
2897
|
+
}, props), children);
|
|
2898
|
+
});
|
|
2899
|
+
PillWrapper.displayName = 'PillWrapper';
|
|
2900
|
+
|
|
2901
|
+
var CommutePill = function CommutePill(_ref) {
|
|
2902
|
+
var travelTime = _ref.travelTime;
|
|
2903
|
+
if (!travelTime) return;
|
|
2904
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2905
|
+
className: "pt-2"
|
|
2906
|
+
}, /*#__PURE__*/React.createElement(PillWrapper, null, /*#__PURE__*/React.createElement(IconContained, {
|
|
2907
|
+
icon: "ri:pin-distance-fill",
|
|
2908
|
+
size: "w-5 h-5",
|
|
2909
|
+
className: "text-uiAccent/30"
|
|
2910
|
+
}), "commute time = ", travelTime));
|
|
2911
|
+
};
|
|
2912
|
+
|
|
2913
|
+
var FieldMapper = function FieldMapper(_ref) {
|
|
2914
|
+
var item = _ref.item,
|
|
2915
|
+
fieldsShown = _ref.fieldsShown,
|
|
2916
|
+
specialFeatures = _ref.specialFeatures,
|
|
2917
|
+
handleFavouriteClick = _ref.handleFavouriteClick,
|
|
2918
|
+
isFavorite = _ref.isFavorite;
|
|
2919
|
+
var orderedFields = fieldsShown.filter(function (field) {
|
|
2920
|
+
return field in item.fields;
|
|
2921
|
+
});
|
|
2922
|
+
var specialFeaturePills = function specialFeaturePills(field) {
|
|
2923
|
+
return field === 'position' && specialFeatures && Object.entries(specialFeatures).map(function (_ref2) {
|
|
2924
|
+
var _ref3 = _slicedToArray(_ref2, 2),
|
|
2925
|
+
featureKey = _ref3[0],
|
|
2926
|
+
featureLabel = _ref3[1];
|
|
2927
|
+
return item.fields[featureKey] === 1 && /*#__PURE__*/React.createElement(PillWrapper, {
|
|
2928
|
+
key: featureKey
|
|
2929
|
+
}, featureLabel);
|
|
2930
|
+
});
|
|
2931
|
+
};
|
|
2932
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, orderedFields.map(function (field) {
|
|
2933
|
+
var value = item.fields[field];
|
|
2934
|
+
return /*#__PURE__*/React.createElement(Grid.Item, {
|
|
2935
|
+
key: field,
|
|
2936
|
+
className: "hidden md:block"
|
|
2937
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
2938
|
+
className: "sr-only"
|
|
2939
|
+
}, capitalize(field)), value, /*#__PURE__*/React.createElement("br", null), specialFeaturePills(field));
|
|
2940
|
+
}), /*#__PURE__*/React.createElement(Grid.Item, {
|
|
2941
|
+
className: "md:hidden"
|
|
2942
|
+
}, fieldsShown.includes("position") && /*#__PURE__*/React.createElement(React.Fragment, null, " ", /*#__PURE__*/React.createElement("div", {
|
|
2943
|
+
className: "flex items-start"
|
|
2944
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
2945
|
+
className: "flex justify-between items-center min-w-[100%]"
|
|
2946
|
+
}, " ", /*#__PURE__*/React.createElement("h3", {
|
|
2947
|
+
className: "font-bold mb-3 flex-1"
|
|
2948
|
+
}, item.fields.position), /*#__PURE__*/React.createElement("div", {
|
|
2949
|
+
className: "flex justify-end pb-2"
|
|
2950
|
+
}, /*#__PURE__*/React.createElement(IconContained, {
|
|
2951
|
+
icon: isFavorite ? "mdi:heart" : "mdi:heart-outline",
|
|
2952
|
+
size: "w-3.5 h-3.5",
|
|
2953
|
+
iconClasses: isFavorite ? "text-primary" : "",
|
|
2954
|
+
className: "transition-opacity duration-300 cursor-pointer\n\t\t\t\t\t\t\t\t\t".concat(isFavorite ? "opacity-100" : "text-uiText/60 group-hover:opacity-100", "\n\t\t\t\t\t\t\t\t\t"),
|
|
2955
|
+
onClick: function onClick(e) {
|
|
2956
|
+
return handleFavouriteClick(e);
|
|
2957
|
+
}
|
|
2958
|
+
})))), specialFeatures && /*#__PURE__*/React.createElement("div", {
|
|
2959
|
+
className: "pb-4"
|
|
2960
|
+
}, specialFeaturePills("position"), " ")), /*#__PURE__*/React.createElement("ul", {
|
|
2961
|
+
className: "space-y-2 text-xs"
|
|
2962
|
+
}, [{
|
|
2963
|
+
field: "category",
|
|
2964
|
+
name: "Category",
|
|
2965
|
+
icon: "icon-park-solid:tree-list"
|
|
2966
|
+
}, {
|
|
2967
|
+
field: "schedule",
|
|
2968
|
+
name: "Schedule",
|
|
2969
|
+
icon: "gravity-ui:clock-fill"
|
|
2970
|
+
}, {
|
|
2971
|
+
field: "cityState",
|
|
2972
|
+
name: "Location",
|
|
2973
|
+
icon: "fluent:location-16-filled"
|
|
2974
|
+
}, {
|
|
2975
|
+
field: "travelTime",
|
|
2976
|
+
name: "Commute",
|
|
2977
|
+
icon: "ri:pin-distance-fill"
|
|
2978
|
+
}].map(function (listItem) {
|
|
2979
|
+
return fieldsShown.includes(listItem.field) && item.fields[listItem.field] && /*#__PURE__*/React.createElement("li", {
|
|
2980
|
+
key: listItem.field,
|
|
2981
|
+
className: "flex gap-2"
|
|
2982
|
+
}, /*#__PURE__*/React.createElement(IconContained, {
|
|
2983
|
+
icon: listItem.icon,
|
|
2984
|
+
size: "w-3.5 h-3.5",
|
|
2985
|
+
className: "text-uiAccent/30"
|
|
2986
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
2987
|
+
className: "sr-only"
|
|
2988
|
+
}, listItem.name), item.fields[listItem.field]);
|
|
2989
|
+
}))));
|
|
2990
|
+
};
|
|
2991
|
+
|
|
2992
|
+
var _excluded$3 = ["isActive", "bodyClassName", "className", "item", "fieldsShown", "specialFeatures", "onItemSelected", "showMap", "setMobileTab", "favorites", "setFavorites"];
|
|
2993
|
+
var ListItem = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
2994
|
+
var _item$mapDetails, _item$mapDetails2, _item$mapDetails3, _item$mapDetails4;
|
|
2995
|
+
var isActive = _ref.isActive,
|
|
2996
|
+
bodyClassName = _ref.bodyClassName,
|
|
2997
|
+
className = _ref.className,
|
|
2998
|
+
item = _ref.item,
|
|
2999
|
+
fieldsShown = _ref.fieldsShown,
|
|
3000
|
+
specialFeatures = _ref.specialFeatures,
|
|
3001
|
+
onItemSelected = _ref.onItemSelected,
|
|
3002
|
+
showMap = _ref.showMap,
|
|
3003
|
+
setMobileTab = _ref.setMobileTab,
|
|
3004
|
+
favorites = _ref.favorites,
|
|
3005
|
+
setFavorites = _ref.setFavorites,
|
|
3006
|
+
props = _objectWithoutProperties(_ref, _excluded$3);
|
|
3007
|
+
var _useMapList = useMapList(),
|
|
3008
|
+
siteConfig = _useMapList.siteConfig;
|
|
3009
|
+
var mapPinColor = siteConfig.colors.primary.replace("#", "");
|
|
3010
|
+
var handleClick = function handleClick() {
|
|
3011
|
+
if (onItemSelected) {
|
|
3012
|
+
onItemSelected(item);
|
|
3013
|
+
}
|
|
3014
|
+
};
|
|
3015
|
+
var isFavorite = favorites.includes(item.id);
|
|
3016
|
+
var handleFavouriteClick = function handleFavouriteClick(event) {
|
|
3017
|
+
event.stopPropagation();
|
|
3018
|
+
var updatedFavorites;
|
|
3019
|
+
if (isFavorite) {
|
|
3020
|
+
updatedFavorites = favorites.filter(function (fav) {
|
|
3021
|
+
return fav !== item.id;
|
|
3022
|
+
});
|
|
3023
|
+
} else {
|
|
3024
|
+
updatedFavorites = [].concat(_toConsumableArray(favorites), [item.id]);
|
|
3025
|
+
}
|
|
3026
|
+
isFavorite = !isFavorite;
|
|
3027
|
+
setFavorites(updatedFavorites);
|
|
3028
|
+
};
|
|
3029
|
+
return /*#__PURE__*/React.createElement("button", _extends({
|
|
3030
|
+
ref: ref,
|
|
3031
|
+
onClick: handleClick,
|
|
3032
|
+
className: "\n group relative flex md:flex-col w-full md:pl-4 text-left bg-clip-border border border-transparent break-words overflow-hidden cursor-pointer transition-colors hover:bg-uiAccent/5 focus:hover:bg-uiAccent/5\n\t\t\t\t\t".concat(isActive ? "bg-uiAccent/5 border-secondary border" : "text-uiText bg-white", "\n\t\t\t\t\t").concat(className !== null && className !== void 0 ? className : "", "\n ")
|
|
3033
|
+
}, props), /*#__PURE__*/React.createElement(Grid, {
|
|
3034
|
+
columns: "grid-flow-col auto-cols-fr",
|
|
3035
|
+
gap: "gap-2",
|
|
3036
|
+
isAnimated: false,
|
|
3037
|
+
className: "\n block md:grid flex-auto p-2 ps-4 w-full grow leading-tight text-sm md:text-xs lg:text-sm\n ".concat(bodyClassName !== null && bodyClassName !== void 0 ? bodyClassName : "", "\n ")
|
|
3038
|
+
}, /*#__PURE__*/React.createElement(Grid.Item, {
|
|
3039
|
+
className: "hidden md:block md:absolute md:left-1.5 top-1.5"
|
|
3040
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
3041
|
+
className: "sr-only"
|
|
3042
|
+
}, "Expand row"), /*#__PURE__*/React.createElement(IconContained, {
|
|
3043
|
+
icon: "fluent-emoji-high-contrast:plus",
|
|
3044
|
+
size: "w-2.5 h-2.5",
|
|
3045
|
+
className: "\n\t\t\t\t\t\t\t\topacity-0 text-uiText/60 transition group-hover:opacity-100 group-active:opacity-100\n\t\t\t\t\t\t\t\t".concat(isActive ? "opacity-100 rotate-45" : "", "\n\t\t\t\t\t\t\t")
|
|
3046
|
+
})), /*#__PURE__*/React.createElement(FieldMapper, {
|
|
3047
|
+
item: item,
|
|
3048
|
+
fieldsShown: fieldsShown,
|
|
3049
|
+
specialFeatures: specialFeatures,
|
|
3050
|
+
isFavorite: isFavorite,
|
|
3051
|
+
handleFavouriteClick: handleFavouriteClick
|
|
3052
|
+
}), /*#__PURE__*/React.createElement(Grid.Item, {
|
|
3053
|
+
key: "favorites",
|
|
3054
|
+
className: "hidden md:block"
|
|
3055
|
+
}, /*#__PURE__*/React.createElement(IconContained, {
|
|
3056
|
+
icon: isFavorite ? "mdi:heart" : "mdi:heart-outline",
|
|
3057
|
+
size: "w-3.5 h-3.5",
|
|
3058
|
+
iconClasses: isFavorite ? "text-primary" : "",
|
|
3059
|
+
title: !isFavorite ? 'Add job to favorites' : 'Remove job from favorites',
|
|
3060
|
+
className: "\n\t\t\t\t\t\t\tpr-2 transition-opacity duration-300 cursor-pointer opacity-100\"\n\t\t\t\t\t\t",
|
|
3061
|
+
onClick: function onClick(e) {
|
|
3062
|
+
return handleFavouriteClick(e);
|
|
3063
|
+
}
|
|
3064
|
+
}))), showMap && /*#__PURE__*/React.createElement("div", {
|
|
3065
|
+
onClick: function onClick() {
|
|
3066
|
+
setMobileTab("mapTab");
|
|
3067
|
+
handleClick();
|
|
3068
|
+
},
|
|
3069
|
+
className: "md:hidden w-2/5 sm:w-1/3 p-1.5 my-1 bg-uiAccent/5 border border-uiAccent/10 rounded-sm"
|
|
3070
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
3071
|
+
src: "https://maps.googleapis.com/maps/api/staticmap?scale=2¢er=".concat((_item$mapDetails = item.mapDetails) === null || _item$mapDetails === void 0 ? void 0 : _item$mapDetails.latitude, ",").concat((_item$mapDetails2 = item.mapDetails) === null || _item$mapDetails2 === void 0 ? void 0 : _item$mapDetails2.longitude, "&zoom=10&size=240x180&maptype=roadmap&markers=color:0x").concat(mapPinColor, "%7Clabel:\u2022%7C").concat((_item$mapDetails3 = item.mapDetails) === null || _item$mapDetails3 === void 0 ? void 0 : _item$mapDetails3.latitude, ",").concat((_item$mapDetails4 = item.mapDetails) === null || _item$mapDetails4 === void 0 ? void 0 : _item$mapDetails4.longitude, "&key=ToDo"),
|
|
3072
|
+
alt: "Map of location for ".concat(item.fields.position),
|
|
3073
|
+
className: "w-full h-full object-cover"
|
|
3074
|
+
})));
|
|
3075
|
+
});
|
|
3076
|
+
ListItem.displayName = "ListItem";
|
|
3077
|
+
var ListItem$1 = /*#__PURE__*/React.memo(ListItem, function (prevProps, nextProps) {
|
|
3078
|
+
return (prevProps.isActive === nextProps.isActive || prevProps.isActive !== nextProps.isActive) && prevProps.bodyClassName === nextProps.bodyClassName && prevProps.className === nextProps.className && prevProps.fieldsShown === nextProps.fieldsShown && prevProps.item.id === nextProps.item.id;
|
|
3079
|
+
});
|
|
3080
|
+
|
|
3081
|
+
var _excluded$2 = ["className", "content"];
|
|
3082
|
+
var CardItemExpand = function CardItemExpand(_ref) {
|
|
3083
|
+
var className = _ref.className,
|
|
3084
|
+
content = _ref.content,
|
|
3085
|
+
props = _objectWithoutProperties(_ref, _excluded$2);
|
|
3086
|
+
return /*#__PURE__*/React.createElement("div", _extends({
|
|
3087
|
+
className: twMerge('flex flex-col lg:flex-row flex-wrap items-stretch gap-x-4 w-full lg:pt-2 border-t border-uiAccent/20', className !== null && className !== void 0 ? className : '')
|
|
3088
|
+
}, props), content);
|
|
3089
|
+
};
|
|
3090
|
+
|
|
3091
|
+
var MapAccordionItem = function MapAccordionItem(_ref) {
|
|
3092
|
+
var item = _ref.item,
|
|
3093
|
+
itemRefs = _ref.itemRefs,
|
|
3094
|
+
itemExpandedContent = _ref.itemExpandedContent,
|
|
3095
|
+
fieldsShown = _ref.fieldsShown,
|
|
3096
|
+
showMap = _ref.showMap,
|
|
3097
|
+
hasListItemSelected = _ref.hasListItemSelected,
|
|
3098
|
+
specialFeatures = _ref.specialFeatures,
|
|
3099
|
+
isActive = _ref.isActive;
|
|
3100
|
+
var _useMapList = useMapList(),
|
|
3101
|
+
mapItems = _useMapList.mapItems,
|
|
3102
|
+
recruiters = _useMapList.recruiters,
|
|
3103
|
+
setMobileTab = _useMapList.setMobileTab,
|
|
3104
|
+
favorites = _useMapList.favorites,
|
|
3105
|
+
handleSettingFavorites = _useMapList.handleSettingFavorites;
|
|
3106
|
+
var _useMap = useMap(),
|
|
3107
|
+
selectItem = _useMap.selectItem;
|
|
3108
|
+
var setSelectedItemAndZoomMap = function setSelectedItemAndZoomMap(item) {
|
|
3109
|
+
if (isActive) {
|
|
3110
|
+
localStorage.removeItem("selectedListItem");
|
|
3111
|
+
mapItems.find(function (x) {
|
|
3112
|
+
return x.items.hasOwnProperty(item.id);
|
|
3113
|
+
}) || null;
|
|
3114
|
+
selectItem(null, null, 9, {
|
|
3115
|
+
lat: 39.8283,
|
|
3116
|
+
lng: -98.5795
|
|
3117
|
+
});
|
|
3118
|
+
} else {
|
|
3119
|
+
setStorageObject("selectedListItem", item);
|
|
3120
|
+
var location = mapItems.find(function (x) {
|
|
3121
|
+
return x.items.hasOwnProperty(item.id);
|
|
3122
|
+
}) || null;
|
|
3123
|
+
selectItem(item, location, 12, {
|
|
3124
|
+
lat: location === null || location === void 0 ? void 0 : location.latitude,
|
|
3125
|
+
lng: location === null || location === void 0 ? void 0 : location.longitude
|
|
3126
|
+
});
|
|
3127
|
+
}
|
|
3128
|
+
};
|
|
3129
|
+
return /*#__PURE__*/React.createElement(Accordion.Item, {
|
|
3130
|
+
key: item.id,
|
|
3131
|
+
id: item.id
|
|
3132
|
+
}, /*#__PURE__*/React.createElement(Accordion.Trigger.Blank, null, /*#__PURE__*/React.createElement(ListItem$1, {
|
|
3133
|
+
ref: function ref(el) {
|
|
3134
|
+
return itemRefs.current[item.id] = el;
|
|
3135
|
+
},
|
|
3136
|
+
id: item.id,
|
|
3137
|
+
key: item.id,
|
|
3138
|
+
item: item,
|
|
3139
|
+
fieldsShown: fieldsShown,
|
|
3140
|
+
onClick: function onClick() {
|
|
3141
|
+
return setSelectedItemAndZoomMap(item);
|
|
3142
|
+
},
|
|
3143
|
+
showMap: showMap,
|
|
3144
|
+
isActive: isActive,
|
|
3145
|
+
setMobileTab: setMobileTab,
|
|
3146
|
+
specialFeatures: specialFeatures,
|
|
3147
|
+
className: hasListItemSelected ? isActive ? "!border-secondary border border-b-0" : "opacity-85" : "",
|
|
3148
|
+
favorites: favorites,
|
|
3149
|
+
setFavorites: handleSettingFavorites
|
|
3150
|
+
})), isActive && /*#__PURE__*/React.createElement(Accordion.Content, {
|
|
3151
|
+
bodyClassName: "px-2 py-2 pt-0 bg-uiAccent/5 border-secondary border border-t-0"
|
|
3152
|
+
}, /*#__PURE__*/React.createElement(CardItemExpand, {
|
|
3153
|
+
content: itemExpandedContent(item, recruiters)
|
|
3154
|
+
})));
|
|
3155
|
+
};
|
|
3156
|
+
|
|
3157
|
+
var dynamicSort = function dynamicSort(items, fieldName) {
|
|
3158
|
+
var order = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "asc";
|
|
3159
|
+
if (!items || !items.length) {
|
|
3160
|
+
return [];
|
|
3161
|
+
}
|
|
3162
|
+
var inferType = function inferType(value) {
|
|
3163
|
+
if (!isNaN(Date.parse(value)) && isNaN(value)) {
|
|
3164
|
+
return "date";
|
|
3165
|
+
} else if (!isNaN(parseFloat(value)) && isFinite(value)) {
|
|
3166
|
+
return "number";
|
|
3167
|
+
} else {
|
|
3168
|
+
return "string";
|
|
3169
|
+
}
|
|
3170
|
+
};
|
|
3171
|
+
var dataType = inferType(items[0].fields[fieldName]);
|
|
3172
|
+
return items.sort(function (a, b) {
|
|
3173
|
+
var valA = a.fields[fieldName];
|
|
3174
|
+
var valB = b.fields[fieldName];
|
|
3175
|
+
if (!valA || !valB) return;
|
|
3176
|
+
var comparison = 0;
|
|
3177
|
+
if (dataType === "string") {
|
|
3178
|
+
comparison = valA.localeCompare(valB);
|
|
3179
|
+
} else if (dataType === "number") {
|
|
3180
|
+
comparison = valA - valB;
|
|
3181
|
+
} else if (dataType === "date") {
|
|
3182
|
+
comparison = new Date(valA) - new Date(valB);
|
|
3183
|
+
}
|
|
3184
|
+
return order === "desc" ? comparison * -1 : comparison;
|
|
3185
|
+
});
|
|
3186
|
+
};
|
|
3187
|
+
|
|
3188
|
+
var getDefaultItemId = function getDefaultItemId() {
|
|
3189
|
+
var item = getStorageObject("selectedListItem");
|
|
3190
|
+
if ((item === null || item === void 0 ? void 0 : item.expanded) == true) {
|
|
3191
|
+
return item.id;
|
|
3192
|
+
} else {
|
|
3193
|
+
return null;
|
|
3194
|
+
}
|
|
3195
|
+
};
|
|
3196
|
+
var useListLogic = function useListLogic() {
|
|
3197
|
+
var _useState = useState(100),
|
|
3198
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
3199
|
+
itemLimit = _useState2[0],
|
|
3200
|
+
setItemLimit = _useState2[1];
|
|
3201
|
+
var _useState3 = useState(getDefaultItemId()),
|
|
3202
|
+
_useState4 = _slicedToArray(_useState3, 1),
|
|
3203
|
+
expandedId = _useState4[0];
|
|
3204
|
+
var _useState5 = useState(getStorageObject('sortSetting', null)),
|
|
3205
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
3206
|
+
sortSetting = _useState6[0],
|
|
3207
|
+
setSortSetting = _useState6[1];
|
|
3208
|
+
var _useState7 = useState(getStorageObject('scrollPosition', 0)),
|
|
3209
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
3210
|
+
scrollPosition = _useState8[0],
|
|
3211
|
+
setScrollPosition = _useState8[1];
|
|
3212
|
+
var loader = useRef(null);
|
|
3213
|
+
var scrollContainerRef = useRef(null);
|
|
3214
|
+
var itemRefs = useRef({});
|
|
3215
|
+
var observer = useRef(null);
|
|
3216
|
+
var _useMapList = useMapList(),
|
|
3217
|
+
filteredListings = _useMapList.filteredListings,
|
|
3218
|
+
setFilteredListings = _useMapList.setFilteredListings;
|
|
3219
|
+
useEffect(function () {
|
|
3220
|
+
if (!sortSetting) return;
|
|
3221
|
+
localStorage.setItem('sortSetting', JSON.stringify(sortSetting));
|
|
3222
|
+
var listingFiltered = dynamicSort(filteredListings, sortSetting.field, sortSetting.type);
|
|
3223
|
+
setFilteredListings(listingFiltered);
|
|
3224
|
+
}, [sortSetting]);
|
|
3225
|
+
useEffect(function () {
|
|
3226
|
+
observer.current = new IntersectionObserver(handleObserver, {
|
|
3227
|
+
root: scrollContainerRef.current,
|
|
3228
|
+
rootMargin: "100px 0px",
|
|
3229
|
+
threshold: 0.5
|
|
3230
|
+
});
|
|
3231
|
+
if (loader.current) {
|
|
3232
|
+
observer.current.observe(loader.current);
|
|
3233
|
+
}
|
|
3234
|
+
return function () {
|
|
3235
|
+
if (observer.current && loader.current) {
|
|
3236
|
+
observer.current.unobserve(loader.current);
|
|
3237
|
+
}
|
|
3238
|
+
};
|
|
3239
|
+
}, [loader.current, itemLimit, filteredListings.length]);
|
|
3240
|
+
useEffect(function () {
|
|
3241
|
+
localStorage.setItem('scrollPosition', scrollPosition.toString());
|
|
3242
|
+
}, [scrollPosition]);
|
|
3243
|
+
useEffect(function () {
|
|
3244
|
+
var savedScrollPosition = scrollPosition;
|
|
3245
|
+
if (parseInt(savedScrollPosition) > 3000) {
|
|
3246
|
+
setItemLimit(savedScrollPosition / 10);
|
|
3247
|
+
}
|
|
3248
|
+
if (savedScrollPosition && scrollPosition != null && scrollContainerRef.current) {
|
|
3249
|
+
scrollContainerRef.current;
|
|
3250
|
+
setTimeout(function () {
|
|
3251
|
+
}, 300);
|
|
3252
|
+
}
|
|
3253
|
+
}, []);
|
|
3254
|
+
useEffect(function () {
|
|
3255
|
+
var scrollContainer = scrollContainerRef.current;
|
|
3256
|
+
if (scrollContainer) {
|
|
3257
|
+
scrollContainer.addEventListener('scroll', handleScroll);
|
|
3258
|
+
}
|
|
3259
|
+
return function () {
|
|
3260
|
+
if (scrollContainer) {
|
|
3261
|
+
scrollContainer.removeEventListener('scroll', handleScroll);
|
|
3262
|
+
}
|
|
3263
|
+
};
|
|
3264
|
+
}, [scrollContainerRef.current]);
|
|
3265
|
+
var handleObserver = function handleObserver(entities) {
|
|
3266
|
+
var target = entities[0];
|
|
3267
|
+
if (!target.isIntersecting) return;
|
|
3268
|
+
if (filteredListings.length > itemLimit) {
|
|
3269
|
+
setItemLimit(function (prevLimit) {
|
|
3270
|
+
return prevLimit + 100;
|
|
3271
|
+
});
|
|
3272
|
+
} else if (observer.current) {
|
|
3273
|
+
observer.current.disconnect();
|
|
3274
|
+
}
|
|
3275
|
+
};
|
|
3276
|
+
if (sortSetting) {
|
|
3277
|
+
dynamicSort(filteredListings, sortSetting.field, sortSetting.type);
|
|
3278
|
+
}
|
|
3279
|
+
var handleScroll = function handleScroll() {
|
|
3280
|
+
if (scrollContainerRef.current) {
|
|
3281
|
+
setScrollPosition(scrollContainerRef.current.scrollTop);
|
|
3282
|
+
}
|
|
3283
|
+
};
|
|
3284
|
+
return {
|
|
3285
|
+
itemLimit: itemLimit,
|
|
3286
|
+
expandedId: expandedId,
|
|
3287
|
+
sortSetting: sortSetting,
|
|
3288
|
+
scrollPosition: scrollPosition,
|
|
3289
|
+
loader: loader,
|
|
3290
|
+
scrollContainerRef: scrollContainerRef,
|
|
3291
|
+
itemRefs: itemRefs,
|
|
3292
|
+
setSortSetting: setSortSetting,
|
|
3293
|
+
setScrollPosition: setScrollPosition,
|
|
3294
|
+
dynamicSort: dynamicSort,
|
|
3295
|
+
filteredListings: filteredListings
|
|
3296
|
+
};
|
|
3297
|
+
};
|
|
3298
|
+
|
|
3299
|
+
var _excluded$1 = ["children", "className"];
|
|
3300
|
+
var FilterSort = function FilterSort(_ref) {
|
|
3301
|
+
var className = _ref.className,
|
|
3302
|
+
fields = _ref.fields,
|
|
3303
|
+
setSortSetting = _ref.setSortSetting,
|
|
3304
|
+
fieldNames = _ref.fieldNames;
|
|
3305
|
+
var handleSortChange = function handleSortChange(value) {
|
|
3306
|
+
var _value$split = value.split("-"),
|
|
3307
|
+
_value$split2 = _slicedToArray(_value$split, 2),
|
|
3308
|
+
field = _value$split2[0],
|
|
3309
|
+
direction = _value$split2[1];
|
|
3310
|
+
setSortSetting({
|
|
3311
|
+
field: field,
|
|
3312
|
+
type: direction
|
|
3313
|
+
});
|
|
3314
|
+
};
|
|
3315
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
3316
|
+
className: className !== null && className !== void 0 ? className : ""
|
|
3317
|
+
}, /*#__PURE__*/React.createElement(Select.Root, {
|
|
3318
|
+
onValueChange: handleSortChange
|
|
3319
|
+
}, /*#__PURE__*/React.createElement(Select.Trigger, {
|
|
3320
|
+
asChild: true,
|
|
3321
|
+
"aria-label": "Sort"
|
|
3322
|
+
}, /*#__PURE__*/React.createElement(Button.Btn, {
|
|
3323
|
+
variant: "outline",
|
|
3324
|
+
size: "sm",
|
|
3325
|
+
className: "normal-case"
|
|
3326
|
+
}, /*#__PURE__*/React.createElement(Button.Body, {
|
|
3327
|
+
className: "justify-center"
|
|
3328
|
+
}, /*#__PURE__*/React.createElement(Select.Value, {
|
|
3329
|
+
placeholder: /*#__PURE__*/React.createElement("span", {
|
|
3330
|
+
className: "flex items-center gap-2"
|
|
3331
|
+
}, "Sort", /*#__PURE__*/React.createElement(IconContained, {
|
|
3332
|
+
icon: "mdi:sort"
|
|
3333
|
+
}))
|
|
3334
|
+
}), /*#__PURE__*/React.createElement(Select.Icon, null, /*#__PURE__*/React.createElement(Button.Icon, {
|
|
3335
|
+
icon: "mdi:chevron-down"
|
|
3336
|
+
}))))), /*#__PURE__*/React.createElement(Select.Portal, null, /*#__PURE__*/React.createElement(Select.Content, {
|
|
3337
|
+
className: "relative z-[200] overflow-hidden bg-white rounded-md "
|
|
3338
|
+
}, /*#__PURE__*/React.createElement(Select.ScrollUpButton, {
|
|
3339
|
+
className: "flex items-center justify-center h-5 bg-white text-primary cursor-default"
|
|
3340
|
+
}, /*#__PURE__*/React.createElement(IconContained, {
|
|
3341
|
+
icon: "mdi:chevron-up"
|
|
3342
|
+
})), /*#__PURE__*/React.createElement(Select.Viewport, {
|
|
3343
|
+
className: "p-1"
|
|
3344
|
+
}, fields.map(function (field) {
|
|
3345
|
+
var _fieldNames$field, _fieldNames$field2;
|
|
3346
|
+
return /*#__PURE__*/React.createElement(Select.Group, {
|
|
3347
|
+
key: field
|
|
3348
|
+
}, /*#__PURE__*/React.createElement(SelectItem, {
|
|
3349
|
+
value: "".concat(field, "-asc")
|
|
3350
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
3351
|
+
className: "flex items-center justify-between gap-2 w-full"
|
|
3352
|
+
}, (_fieldNames$field = fieldNames[field]) !== null && _fieldNames$field !== void 0 ? _fieldNames$field : field, /*#__PURE__*/React.createElement(IconContained, {
|
|
3353
|
+
icon: "mdi:sort-ascending"
|
|
3354
|
+
}))), /*#__PURE__*/React.createElement(SelectItem, {
|
|
3355
|
+
value: "".concat(field, "-desc")
|
|
3356
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
3357
|
+
className: "flex items-center justify-between gap-2 w-full"
|
|
3358
|
+
}, (_fieldNames$field2 = fieldNames[field]) !== null && _fieldNames$field2 !== void 0 ? _fieldNames$field2 : field, /*#__PURE__*/React.createElement(IconContained, {
|
|
3359
|
+
icon: "mdi:sort-descending"
|
|
3360
|
+
}))));
|
|
3361
|
+
})), /*#__PURE__*/React.createElement(Select.ScrollDownButton, {
|
|
3362
|
+
className: "flex items-center justify-center h-5 bg-white text-primary cursor-default"
|
|
3363
|
+
}, /*#__PURE__*/React.createElement(IconContained, {
|
|
3364
|
+
icon: "mdi:chevron-down"
|
|
3365
|
+
}))))));
|
|
3366
|
+
};
|
|
3367
|
+
var SelectItem = /*#__PURE__*/forwardRef(function (_ref2, forwardedRef) {
|
|
3368
|
+
var children = _ref2.children,
|
|
3369
|
+
className = _ref2.className,
|
|
3370
|
+
props = _objectWithoutProperties(_ref2, _excluded$1);
|
|
3371
|
+
return /*#__PURE__*/React.createElement(Select.Item, _extends({
|
|
3372
|
+
className: twMerge("text-sm leading-none rounded-sm flex items-center w-full py-1.5 pr-4 pl-7 relative select-none cursor-pointer data-[disabled]:text-gray-500 data-[disabled]:pointer-events-none data-[highlighted]:outline-none data-[highlighted]:bg-primary data-[highlighted]:text-white", className)
|
|
3373
|
+
}, props, {
|
|
3374
|
+
ref: forwardedRef
|
|
3375
|
+
}), /*#__PURE__*/React.createElement(Select.ItemText, null, children), /*#__PURE__*/React.createElement(Select.ItemIndicator, {
|
|
3376
|
+
className: "absolute left-0 w-8 inline-flex items-center justify-center"
|
|
3377
|
+
}, /*#__PURE__*/React.createElement(IconContained, {
|
|
3378
|
+
icon: "mdi:check"
|
|
3379
|
+
})));
|
|
3380
|
+
});
|
|
3381
|
+
SelectItem.displayName = "SelectItem";
|
|
3382
|
+
|
|
3383
|
+
var RecruiterHeadshot = function RecruiterHeadshot(_ref) {
|
|
3384
|
+
var image = _ref.image,
|
|
3385
|
+
alt = _ref.alt,
|
|
3386
|
+
className = _ref.className,
|
|
3387
|
+
imageClassName = _ref.imageClassName;
|
|
3388
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
3389
|
+
className: className !== null && className !== void 0 ? className : ''
|
|
3390
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
3391
|
+
src: image,
|
|
3392
|
+
width: "96",
|
|
3393
|
+
height: "96",
|
|
3394
|
+
alt: alt,
|
|
3395
|
+
className: imageClassName !== null && imageClassName !== void 0 ? imageClassName : ''
|
|
3396
|
+
}));
|
|
3397
|
+
};
|
|
3398
|
+
|
|
3399
|
+
var _templateObject$1, _templateObject2, _templateObject3;
|
|
3400
|
+
var RecruiterDetails = function RecruiterDetails(_ref) {
|
|
3401
|
+
var contactNav = _ref.contactNav,
|
|
3402
|
+
className = _ref.className,
|
|
3403
|
+
children = _ref.children;
|
|
3404
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
3405
|
+
className: twMerge(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteral(["\n\t\t\t\tgrow\n\t\t\t\t", "\n\t\t\t"])), className !== null && className !== void 0 ? className : '')
|
|
3406
|
+
}, children, contactNav && /*#__PURE__*/React.createElement("div", {
|
|
3407
|
+
className: "inline-flex"
|
|
3408
|
+
}, contactNav));
|
|
3409
|
+
};
|
|
3410
|
+
var Title = function Title(_ref2) {
|
|
3411
|
+
var _ref2$as = _ref2.as,
|
|
3412
|
+
as = _ref2$as === void 0 ? 'h4' : _ref2$as,
|
|
3413
|
+
className = _ref2.className,
|
|
3414
|
+
children = _ref2.children;
|
|
3415
|
+
var Container = as;
|
|
3416
|
+
return /*#__PURE__*/React.createElement(Container, {
|
|
3417
|
+
className: twMerge(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n\t\t\t\ttext-base font-medium\n\t\t\t\t", "\n\t\t\t"])), className !== null && className !== void 0 ? className : '')
|
|
3418
|
+
}, children);
|
|
3419
|
+
};
|
|
3420
|
+
var Text = function Text(_ref3) {
|
|
3421
|
+
var _ref3$as = _ref3.as,
|
|
3422
|
+
as = _ref3$as === void 0 ? 'p' : _ref3$as,
|
|
3423
|
+
className = _ref3.className,
|
|
3424
|
+
children = _ref3.children;
|
|
3425
|
+
var Container = as;
|
|
3426
|
+
return /*#__PURE__*/React.createElement(Container, {
|
|
3427
|
+
className: twMerge(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n\t\t\t\ttext-sm text-uiText/60\n\t\t\t\t", "\n\t\t\t"])), className !== null && className !== void 0 ? className : '')
|
|
3428
|
+
}, children);
|
|
3429
|
+
};
|
|
3430
|
+
RecruiterDetails.Title = Title;
|
|
3431
|
+
RecruiterDetails.Text = Text;
|
|
3432
|
+
|
|
3433
|
+
var ApplyDialog = function ApplyDialog(_ref) {
|
|
3434
|
+
var children = _ref.children,
|
|
3435
|
+
applyUrl = _ref.applyUrl,
|
|
3436
|
+
internalApplyLink = _ref.internalApplyLink,
|
|
3437
|
+
companyName = _ref.companyName;
|
|
3438
|
+
return /*#__PURE__*/React.createElement(Dialog.Root, null, /*#__PURE__*/React.createElement(Dialog.Trigger, {
|
|
3439
|
+
asChild: true
|
|
3440
|
+
}, children), /*#__PURE__*/React.createElement(Dialog.Portal, null, /*#__PURE__*/React.createElement(Dialog.Overlay, {
|
|
3441
|
+
className: "bg-blackA6 fixed inset-0 animate-overlayShow"
|
|
3442
|
+
}), /*#__PURE__*/React.createElement(Dialog.Content, {
|
|
3443
|
+
className: "fit-content animate-contentShow fixed inset-0 m-auto max-h-[85vh] w-[90vw] max-w-[450px] rounded-[6px] bg-white p-[25px] shadow-lg focus:outline-none flex flex-col items-center text-center"
|
|
3444
|
+
}, /*#__PURE__*/React.createElement(Dialog.Title, {
|
|
3445
|
+
className: "text-[17px] font-medium w-full"
|
|
3446
|
+
}, "Career Opportunities"), /*#__PURE__*/React.createElement(Dialog.Description, {
|
|
3447
|
+
className: "mt-4 mb-5 text-[15px] leading-normal w-full"
|
|
3448
|
+
}, "Are you currently a ", companyName, " employee?"), /*#__PURE__*/React.createElement("div", {
|
|
3449
|
+
className: "flex justify-center space-x-4 w-full"
|
|
3450
|
+
}, /*#__PURE__*/React.createElement(Dialog.Close, {
|
|
3451
|
+
asChild: true
|
|
3452
|
+
}, /*#__PURE__*/React.createElement(Button.Anchor, {
|
|
3453
|
+
variant: "outline",
|
|
3454
|
+
href: internalApplyLink
|
|
3455
|
+
}, "Yes")), /*#__PURE__*/React.createElement(Dialog.Close, {
|
|
3456
|
+
asChild: true
|
|
3457
|
+
}, /*#__PURE__*/React.createElement(Button.Anchor, {
|
|
3458
|
+
variant: "primary",
|
|
3459
|
+
href: applyUrl
|
|
3460
|
+
}, "No"))), /*#__PURE__*/React.createElement(Dialog.Close, {
|
|
3461
|
+
asChild: true
|
|
3462
|
+
}, /*#__PURE__*/React.createElement(Button.Anchor, {
|
|
3463
|
+
className: "absolute top-[10px] right-[10px] inline-flex h-[25px] w-[25px] items-center justify-center rounded-full focus:outline-none",
|
|
3464
|
+
variant: "ghost",
|
|
3465
|
+
"aria-label": "Close"
|
|
3466
|
+
}, /*#__PURE__*/React.createElement(IconContained, {
|
|
3467
|
+
icon: "mdi:times",
|
|
3468
|
+
className: "cursor-pointer text-black hover:text-gray-500 hover:opacity-75"
|
|
3469
|
+
}))))));
|
|
3470
|
+
};
|
|
3471
|
+
|
|
3472
|
+
var _templateObject;
|
|
3473
|
+
var ButtonGroupApply = function ButtonGroupApply(_ref) {
|
|
3474
|
+
var applyUrl = _ref.applyUrl,
|
|
3475
|
+
useDetailsPostMessage = _ref.useDetailsPostMessage,
|
|
3476
|
+
_ref$applyText = _ref.applyText,
|
|
3477
|
+
applyText = _ref$applyText === void 0 ? 'Apply Now' : _ref$applyText,
|
|
3478
|
+
detailsUrl = _ref.detailsUrl,
|
|
3479
|
+
_ref$detailsText = _ref.detailsText,
|
|
3480
|
+
detailsText = _ref$detailsText === void 0 ? 'View Details' : _ref$detailsText,
|
|
3481
|
+
className = _ref.className,
|
|
3482
|
+
_ref$buttonSize = _ref.buttonSize,
|
|
3483
|
+
buttonSize = _ref$buttonSize === void 0 ? 'default' : _ref$buttonSize,
|
|
3484
|
+
_ref$applyButtonVaria = _ref.applyButtonVariant,
|
|
3485
|
+
applyButtonVariant = _ref$applyButtonVaria === void 0 ? 'primary' : _ref$applyButtonVaria,
|
|
3486
|
+
_ref$detailsButtonVar = _ref.detailsButtonVariant,
|
|
3487
|
+
detailsButtonVariant = _ref$detailsButtonVar === void 0 ? 'outline' : _ref$detailsButtonVar,
|
|
3488
|
+
_ref$includeDialog = _ref.includeDialog,
|
|
3489
|
+
includeDialog = _ref$includeDialog === void 0 ? false : _ref$includeDialog,
|
|
3490
|
+
internalApplyLink = _ref.internalApplyLink,
|
|
3491
|
+
itemId = _ref.itemId,
|
|
3492
|
+
companyName = _ref.companyName;
|
|
3493
|
+
var applyButton = function applyButton() {
|
|
3494
|
+
return /*#__PURE__*/React.createElement(Button.Anchor, {
|
|
3495
|
+
variant: applyButtonVariant,
|
|
3496
|
+
size: buttonSize
|
|
3497
|
+
}, applyText);
|
|
3498
|
+
};
|
|
3499
|
+
return /*#__PURE__*/React.createElement("nav", {
|
|
3500
|
+
className: twMerge(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n\t\t\t\tflex flex-row justify-between gap-2 w-full\n\t\t\t\t", "\n\t\t\t"])), className !== null && className !== void 0 ? className : '')
|
|
3501
|
+
}, detailsUrl && useDetailsPostMessage !== true && /*#__PURE__*/React.createElement(Button.Anchor, {
|
|
3502
|
+
href: detailsUrl,
|
|
3503
|
+
variant: detailsButtonVariant,
|
|
3504
|
+
size: buttonSize
|
|
3505
|
+
}, detailsText), useDetailsPostMessage === true && /*#__PURE__*/React.createElement(Button.Btn, {
|
|
3506
|
+
onClick: function onClick() {
|
|
3507
|
+
window.parent.postMessage({
|
|
3508
|
+
itemId: itemId,
|
|
3509
|
+
type: 'LISTING_ID'
|
|
3510
|
+
}, '*');
|
|
3511
|
+
},
|
|
3512
|
+
variant: detailsButtonVariant,
|
|
3513
|
+
size: buttonSize
|
|
3514
|
+
}, detailsText), applyUrl && !includeDialog && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button.Anchor, {
|
|
3515
|
+
href: applyUrl,
|
|
3516
|
+
variant: applyButtonVariant,
|
|
3517
|
+
size: buttonSize
|
|
3518
|
+
}, applyText)), applyUrl && includeDialog && /*#__PURE__*/React.createElement(ApplyDialog, {
|
|
3519
|
+
applyUrl: applyUrl,
|
|
3520
|
+
internalApplyLink: internalApplyLink,
|
|
3521
|
+
companyName: companyName
|
|
3522
|
+
}, applyButton()));
|
|
3523
|
+
};
|
|
3524
|
+
|
|
3525
|
+
var _excluded = ["className", "href", "target", "title", "icon"];
|
|
3526
|
+
var RecruiterContactNav = function RecruiterContactNav(_ref) {
|
|
3527
|
+
var children = _ref.children,
|
|
3528
|
+
className = _ref.className;
|
|
3529
|
+
return /*#__PURE__*/React.createElement("nav", {
|
|
3530
|
+
className: "\n\t\t\t\tinline-flex items-center justify-between gap-2 mt-2\n\t\t\t\t".concat(className !== null && className !== void 0 ? className : '', "\n\t\t\t")
|
|
3531
|
+
}, children);
|
|
3532
|
+
};
|
|
3533
|
+
var NavButton = function NavButton(_ref2) {
|
|
3534
|
+
var className = _ref2.className,
|
|
3535
|
+
href = _ref2.href,
|
|
3536
|
+
_ref2$target = _ref2.target,
|
|
3537
|
+
target = _ref2$target === void 0 ? '_self' : _ref2$target,
|
|
3538
|
+
title = _ref2.title,
|
|
3539
|
+
icon = _ref2.icon,
|
|
3540
|
+
props = _objectWithoutProperties(_ref2, _excluded);
|
|
3541
|
+
return /*#__PURE__*/React.createElement(Button.Anchor, _extends({
|
|
3542
|
+
href: href,
|
|
3543
|
+
variant: "icon",
|
|
3544
|
+
size: "sq",
|
|
3545
|
+
target: target,
|
|
3546
|
+
title: title,
|
|
3547
|
+
className: className !== null && className !== void 0 ? className : ''
|
|
3548
|
+
}, props), /*#__PURE__*/React.createElement("span", {
|
|
3549
|
+
className: "sr-only"
|
|
3550
|
+
}, title), /*#__PURE__*/React.createElement(Button.Icon, {
|
|
3551
|
+
icon: icon,
|
|
3552
|
+
size: "w-8 h-8"
|
|
3553
|
+
}));
|
|
3554
|
+
};
|
|
3555
|
+
RecruiterContactNav.Button = NavButton;
|
|
3556
|
+
|
|
3557
|
+
var ListingDetails = function ListingDetails(_ref) {
|
|
3558
|
+
var _item$details;
|
|
3559
|
+
var item = _ref.item,
|
|
3560
|
+
recruiters = _ref.recruiters;
|
|
3561
|
+
var _useMap = useMap(),
|
|
3562
|
+
travelTime = _useMap.travelTime;
|
|
3563
|
+
var _useMapList = useMapList(),
|
|
3564
|
+
siteConfig = _useMapList.siteConfig;
|
|
3565
|
+
if (!item) {
|
|
3566
|
+
return null;
|
|
3567
|
+
}
|
|
3568
|
+
var matchingRecruiter = !recruiters ? null : recruiters[item === null || item === void 0 ? void 0 : item.recruiterId];
|
|
3569
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
3570
|
+
className: "w-full"
|
|
3571
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
3572
|
+
className: "grow flex flex-wrap items-center gap-4"
|
|
3573
|
+
}, (matchingRecruiter === null || matchingRecruiter === void 0 ? void 0 : matchingRecruiter.headshot) && /*#__PURE__*/React.createElement(RecruiterHeadshot, {
|
|
3574
|
+
image: "https:".concat(matchingRecruiter.headshot),
|
|
3575
|
+
alt: matchingRecruiter === null || matchingRecruiter === void 0 ? void 0 : matchingRecruiter.firstName,
|
|
3576
|
+
className: "bg-gray-300"
|
|
3577
|
+
}), matchingRecruiter && /*#__PURE__*/React.createElement(RecruiterDetails, {
|
|
3578
|
+
contactNav: /*#__PURE__*/React.createElement(RecruiterContactNav, null, (matchingRecruiter === null || matchingRecruiter === void 0 ? void 0 : matchingRecruiter.mobilePhone) && /*#__PURE__*/React.createElement(RecruiterContactNav.Button, {
|
|
3579
|
+
href: "tel:".concat(matchingRecruiter.mobilePhone),
|
|
3580
|
+
title: "Call ".concat(matchingRecruiter.mobilePhone),
|
|
3581
|
+
icon: "fluent:phone-32-regular"
|
|
3582
|
+
}), (matchingRecruiter === null || matchingRecruiter === void 0 ? void 0 : matchingRecruiter.email) && /*#__PURE__*/React.createElement(RecruiterContactNav.Button, {
|
|
3583
|
+
href: "mailto:".concat(matchingRecruiter.email),
|
|
3584
|
+
title: "email ".concat(matchingRecruiter.email),
|
|
3585
|
+
icon: "bi:envelope-at"
|
|
3586
|
+
}), (matchingRecruiter === null || matchingRecruiter === void 0 ? void 0 : matchingRecruiter.linkedIn) && /*#__PURE__*/React.createElement(RecruiterContactNav.Button, {
|
|
3587
|
+
href: matchingRecruiter.linkedIn,
|
|
3588
|
+
title: "LinkedIn",
|
|
3589
|
+
icon: "ant-design:linkedin-outlined"
|
|
3590
|
+
}))
|
|
3591
|
+
}, (matchingRecruiter === null || matchingRecruiter === void 0 ? void 0 : matchingRecruiter.firstName) && (matchingRecruiter === null || matchingRecruiter === void 0 ? void 0 : matchingRecruiter.lastName) && /*#__PURE__*/React.createElement(RecruiterDetails.Title, null, "".concat(matchingRecruiter === null || matchingRecruiter === void 0 ? void 0 : matchingRecruiter.firstName, " ").concat(matchingRecruiter === null || matchingRecruiter === void 0 ? void 0 : matchingRecruiter.lastName)), ((_item$details = item.details) === null || _item$details === void 0 || (_item$details = _item$details.recruiter) === null || _item$details === void 0 ? void 0 : _item$details.title) && /*#__PURE__*/React.createElement(RecruiterDetails.Text, null, item.details.recruiter.title)), /*#__PURE__*/React.createElement(ButtonGroupApply, {
|
|
3592
|
+
useDetailsPostMessage: siteConfig.useDetailsPostMessage,
|
|
3593
|
+
includeDialog: siteConfig.useApplyDialog,
|
|
3594
|
+
internalApplyLink: siteConfig.internalApplyLink,
|
|
3595
|
+
companyName: siteConfig.companyName,
|
|
3596
|
+
applyUrl: item === null || item === void 0 ? void 0 : item.applyUrl,
|
|
3597
|
+
itemId: item.id,
|
|
3598
|
+
detailsUrl: item.useClientJobUrl ? item === null || item === void 0 ? void 0 : item.detailsUrl : "".concat(siteConfig.jobsDomain).concat(item.id),
|
|
3599
|
+
className: "\n\t\t\t\t\tlg:flex-col lg:w-auto order-first lg:order-last md:self-center py-2 lg:p-0 lg:mb-0 border-b lg:border-none border-uiAccent/20\n\t\t\t\t\t".concat(matchingRecruiter ? "lg:flex-col lg:w-auto" : "lg:flex-row", "\n ")
|
|
3600
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
3601
|
+
className: "w-full"
|
|
3602
|
+
}, /*#__PURE__*/React.createElement(CommutePill, {
|
|
3603
|
+
travelTime: travelTime,
|
|
3604
|
+
className: "ml-0"
|
|
3605
|
+
})));
|
|
3606
|
+
};
|
|
3607
|
+
|
|
3608
|
+
var ItemsList = function ItemsList(_ref) {
|
|
3609
|
+
var fieldNames = _ref.fieldNames,
|
|
3610
|
+
showMap = _ref.showMap,
|
|
3611
|
+
fieldsShown = _ref.fieldsShown,
|
|
3612
|
+
specialFeatures = _ref.specialFeatures;
|
|
3613
|
+
var _useListLogic = useListLogic(),
|
|
3614
|
+
itemLimit = _useListLogic.itemLimit,
|
|
3615
|
+
sortSetting = _useListLogic.sortSetting,
|
|
3616
|
+
loader = _useListLogic.loader,
|
|
3617
|
+
scrollContainerRef = _useListLogic.scrollContainerRef,
|
|
3618
|
+
itemRefs = _useListLogic.itemRefs,
|
|
3619
|
+
setSortSetting = _useListLogic.setSortSetting;
|
|
3620
|
+
var _useMap = useMap(),
|
|
3621
|
+
selectedListItem = _useMap.selectedListItem;
|
|
3622
|
+
var _useMapList = useMapList(),
|
|
3623
|
+
mapItems = _useMapList.mapItems,
|
|
3624
|
+
filteredListings = _useMapList.filteredListings,
|
|
3625
|
+
loading = _useMapList.loading,
|
|
3626
|
+
commuteLocation = _useMapList.commuteLocation;
|
|
3627
|
+
var itemExpandedContent = function itemExpandedContent(item, recruiters) {
|
|
3628
|
+
return item ? /*#__PURE__*/React.createElement(ListingDetails, {
|
|
3629
|
+
item: item,
|
|
3630
|
+
recruiters: recruiters
|
|
3631
|
+
}) : null;
|
|
3632
|
+
};
|
|
3633
|
+
if (!fieldsShown.includes('travelTime') && commuteLocation != null && Object.entries(commuteLocation).length > 0) {
|
|
3634
|
+
fieldsShown.push('travelTime');
|
|
3635
|
+
fieldNames['travelTime'] = 'Commute';
|
|
3636
|
+
} else if (fieldsShown.includes('travelTime') && !commuteLocation) {
|
|
3637
|
+
fieldsShown = fieldsShown.filter(function (x) {
|
|
3638
|
+
return x !== 'travelTime';
|
|
3639
|
+
});
|
|
3640
|
+
}
|
|
3641
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
3642
|
+
className: "relative bg-white md:px-4 flex flex-col"
|
|
3643
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
3644
|
+
className: "flex flex-wrap items-center justify-between gap-4 md:mb-2 p-3 md:p-0 bg-uiAccent/10 md:bg-transparent border-b md:border-none border-uiAccent/20"
|
|
3645
|
+
}, /*#__PURE__*/React.createElement("h2", {
|
|
3646
|
+
className: "text-gray-500 font-semibold text-xs md:text-sm"
|
|
3647
|
+
}, loading && /*#__PURE__*/React.createElement("span", null, "Loading..."), !loading && /*#__PURE__*/React.createElement("span", null, filteredListings.length, " results")), /*#__PURE__*/React.createElement("div", {
|
|
3648
|
+
className: "block md:hidden"
|
|
3649
|
+
}, /*#__PURE__*/React.createElement(FilterSort, {
|
|
3650
|
+
fields: fieldsShown,
|
|
3651
|
+
setSortSetting: setSortSetting,
|
|
3652
|
+
fieldNames: fieldNames
|
|
3653
|
+
}))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(ListHeader, {
|
|
3654
|
+
setSortSetting: setSortSetting,
|
|
3655
|
+
sortSetting: sortSetting,
|
|
3656
|
+
fieldsShown: fieldsShown,
|
|
3657
|
+
fieldNames: fieldNames
|
|
3658
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
3659
|
+
ref: scrollContainerRef,
|
|
3660
|
+
className: "\n\t\t\t\t\tflex-grow overflow-y-auto\n\t\t\t\t\t".concat(showMap ? "md:max-h-45vh max-h-[100vh]" : "md:max-h-95vh max-h-[95vh]", "\n\t\t\t\t")
|
|
3661
|
+
}, loading ? /*#__PURE__*/React.createElement("div", {
|
|
3662
|
+
className: "flex justify-center items-center pt-20"
|
|
3663
|
+
}, /*#__PURE__*/React.createElement(Loading, null)) : /*#__PURE__*/React.createElement(Accordion, {
|
|
3664
|
+
className: "divide-y divide-uiAccent/10 z10000",
|
|
3665
|
+
defaultValue: selectedListItem === null || selectedListItem === void 0 ? void 0 : selectedListItem.id
|
|
3666
|
+
}, filteredListings.slice(0, itemLimit).map(function (item) {
|
|
3667
|
+
return /*#__PURE__*/React.createElement(MapAccordionItem, {
|
|
3668
|
+
key: item.id,
|
|
3669
|
+
showMap: showMap,
|
|
3670
|
+
item: item,
|
|
3671
|
+
itemRefs: itemRefs,
|
|
3672
|
+
fieldsShown: fieldsShown,
|
|
3673
|
+
itemExpandedContent: itemExpandedContent,
|
|
3674
|
+
specialFeatures: specialFeatures,
|
|
3675
|
+
mapItems: mapItems,
|
|
3676
|
+
isActive: (selectedListItem === null || selectedListItem === void 0 ? void 0 : selectedListItem.id) == item.id,
|
|
3677
|
+
hasListItemSelected: selectedListItem != null
|
|
3678
|
+
});
|
|
3679
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
3680
|
+
ref: loader,
|
|
3681
|
+
style: {
|
|
3682
|
+
height: "100px",
|
|
3683
|
+
textAlign: "center"
|
|
3684
|
+
}
|
|
3685
|
+
}, filteredListings.length >= itemLimit && /*#__PURE__*/React.createElement(Loading, null))));
|
|
3686
|
+
};
|
|
3687
|
+
|
|
3688
|
+
var CardInfoWindow = function CardInfoWindow(_ref) {
|
|
3689
|
+
var className = _ref.className,
|
|
3690
|
+
content = _ref.content,
|
|
3691
|
+
id = _ref.id;
|
|
3692
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
3693
|
+
id: id,
|
|
3694
|
+
className: "\n\t\t\t\trelative flex flex-col break-words bg-clip-border\n\t\t\t\t".concat(className !== null && className !== void 0 ? className : "", "\n\t\t\t")
|
|
3695
|
+
}, content);
|
|
3696
|
+
};
|
|
3697
|
+
|
|
3698
|
+
var InfoWindowContent = function InfoWindowContent(_ref) {
|
|
3699
|
+
var _items$0$mapDetails, _items$0$mapDetails2, _items$0$mapDetails3, _items$0$mapDetails4, _items$0$mapDetails5;
|
|
3700
|
+
var item = _ref.item,
|
|
3701
|
+
filterListingsByLocation = _ref.filterListingsByLocation;
|
|
3702
|
+
var _useMapList = useMapList(),
|
|
3703
|
+
setSelectedFilters = _useMapList.setSelectedFilters;
|
|
3704
|
+
_useMapList.setQuery;
|
|
3705
|
+
var setMobileTab = _useMapList.setMobileTab,
|
|
3706
|
+
selectedFilters = _useMapList.selectedFilters;
|
|
3707
|
+
var items = item && item.items ? Object.values(item.items) : null;
|
|
3708
|
+
if (!items || items.length < 0) {
|
|
3709
|
+
return;
|
|
3710
|
+
}
|
|
3711
|
+
var addressParts = [(_items$0$mapDetails = items[0].mapDetails) === null || _items$0$mapDetails === void 0 || (_items$0$mapDetails = _items$0$mapDetails.address) === null || _items$0$mapDetails === void 0 ? void 0 : _items$0$mapDetails.street, (_items$0$mapDetails2 = items[0].mapDetails) === null || _items$0$mapDetails2 === void 0 || (_items$0$mapDetails2 = _items$0$mapDetails2.address) === null || _items$0$mapDetails2 === void 0 ? void 0 : _items$0$mapDetails2.city, (_items$0$mapDetails3 = items[0].mapDetails) === null || _items$0$mapDetails3 === void 0 || (_items$0$mapDetails3 = _items$0$mapDetails3.address) === null || _items$0$mapDetails3 === void 0 ? void 0 : _items$0$mapDetails3.state, (_items$0$mapDetails4 = items[0].mapDetails) === null || _items$0$mapDetails4 === void 0 || (_items$0$mapDetails4 = _items$0$mapDetails4.address) === null || _items$0$mapDetails4 === void 0 ? void 0 : _items$0$mapDetails4.zip];
|
|
3712
|
+
var fullAddress = addressParts.filter(Boolean).join(', ');
|
|
3713
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
3714
|
+
className: "flex-auto p-2"
|
|
3715
|
+
}, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h4", {
|
|
3716
|
+
className: "text-lg font-bold leading-tight mb-3"
|
|
3717
|
+
}, (_items$0$mapDetails5 = items[0].mapDetails) === null || _items$0$mapDetails5 === void 0 ? void 0 : _items$0$mapDetails5.entityDisplayName), /*#__PURE__*/React.createElement("p", null, fullAddress), /*#__PURE__*/React.createElement("div", {
|
|
3718
|
+
className: "pt-2"
|
|
3719
|
+
}, /*#__PURE__*/React.createElement("button", {
|
|
3720
|
+
className: "cursor-pointer hover:opacity-70 text-primary",
|
|
3721
|
+
onClick: function onClick() {
|
|
3722
|
+
setMobileTab("listTab");
|
|
3723
|
+
setSelectedFilters(_objectSpread2(_objectSpread2({}, selectedFilters), {}, {
|
|
3724
|
+
cityState: _defineProperty({}, items[0].fields.cityState, true)
|
|
3725
|
+
}));
|
|
3726
|
+
filterListingsByLocation();
|
|
3727
|
+
}
|
|
3728
|
+
}, items.length > 1 ? "View All ".concat(items.length, " jobs at this location") : "View job at this location")))));
|
|
3729
|
+
};
|
|
3730
|
+
|
|
3731
|
+
var MapMarker = function MapMarker(_ref) {
|
|
3732
|
+
var item = _ref.item,
|
|
3733
|
+
markerRefs = _ref.markerRefs,
|
|
3734
|
+
infoWindowClasses = _ref.infoWindowClasses,
|
|
3735
|
+
markerClickHandler = _ref.markerClickHandler,
|
|
3736
|
+
clusterer = _ref.clusterer,
|
|
3737
|
+
markerIconSelected = _ref.markerIconSelected,
|
|
3738
|
+
markerIcon = _ref.markerIcon,
|
|
3739
|
+
selectedLocation = _ref.selectedLocation,
|
|
3740
|
+
setMapInteracted = _ref.setMapInteracted;
|
|
3741
|
+
var _useMap = useMap(),
|
|
3742
|
+
setLocation = _useMap.setLocation,
|
|
3743
|
+
commuteLocation = _useMap.commuteLocation;
|
|
3744
|
+
var isSelected = item.id === (selectedLocation === null || selectedLocation === void 0 ? void 0 : selectedLocation.id);
|
|
3745
|
+
var markerRef = useRef(null);
|
|
3746
|
+
var _useMapList = useMapList(),
|
|
3747
|
+
handleFilterListingsByLocation = _useMapList.handleFilterListingsByLocation;
|
|
3748
|
+
useEffect(function () {
|
|
3749
|
+
markerRefs.current[item.id] = markerRef.current;
|
|
3750
|
+
}, []);
|
|
3751
|
+
var onMarkerClick = function onMarkerClick() {
|
|
3752
|
+
setMapInteracted(true);
|
|
3753
|
+
markerClickHandler(item);
|
|
3754
|
+
};
|
|
3755
|
+
var getInfoWindow = function getInfoWindow() {
|
|
3756
|
+
if (!isSelected || !item || !item.id || !selectedLocation) {
|
|
3757
|
+
return;
|
|
3758
|
+
}
|
|
3759
|
+
//Direct dom removal of empty info windows
|
|
3760
|
+
document.querySelectorAll("div.gm-style-iw.gm-style-iw-c").forEach(function (x) {
|
|
3761
|
+
if (!x.innerHTML.includes(item.id)) x.parentElement.remove();
|
|
3762
|
+
});
|
|
3763
|
+
return /*#__PURE__*/React.createElement(InfoWindow, {
|
|
3764
|
+
position: {
|
|
3765
|
+
lat: item.latitude,
|
|
3766
|
+
lng: item.longitude
|
|
3767
|
+
},
|
|
3768
|
+
anchor: markerRefs.current[item.id],
|
|
3769
|
+
onCloseClick: function onCloseClick() {
|
|
3770
|
+
setMapInteracted(true);
|
|
3771
|
+
setLocation(null);
|
|
3772
|
+
},
|
|
3773
|
+
options: {
|
|
3774
|
+
maxWidth: 400
|
|
3775
|
+
}
|
|
3776
|
+
}, /*#__PURE__*/React.createElement(CardInfoWindow, {
|
|
3777
|
+
className: infoWindowClasses,
|
|
3778
|
+
id: item.id,
|
|
3779
|
+
content: /*#__PURE__*/React.createElement(InfoWindowContent, {
|
|
3780
|
+
item: item,
|
|
3781
|
+
commuteLocation: commuteLocation,
|
|
3782
|
+
filterListingsByLocation: function filterListingsByLocation() {
|
|
3783
|
+
return handleFilterListingsByLocation(selectedLocation);
|
|
3784
|
+
}
|
|
3785
|
+
})
|
|
3786
|
+
}));
|
|
3787
|
+
};
|
|
3788
|
+
return /*#__PURE__*/React.createElement(MarkerF, {
|
|
3789
|
+
key: item.id,
|
|
3790
|
+
position: {
|
|
3791
|
+
lat: item.latitude,
|
|
3792
|
+
lng: item.longitude
|
|
3793
|
+
},
|
|
3794
|
+
title: item.name,
|
|
3795
|
+
options: {
|
|
3796
|
+
icon: isSelected ? markerIconSelected : markerIcon
|
|
3797
|
+
},
|
|
3798
|
+
zIndex: isSelected ? 9999 : 1,
|
|
3799
|
+
onLoad: function onLoad(marker) {
|
|
3800
|
+
return markerRef.current = marker;
|
|
3801
|
+
},
|
|
3802
|
+
onClick: onMarkerClick,
|
|
3803
|
+
clusterer: clusterer
|
|
3804
|
+
}, isSelected && getInfoWindow());
|
|
3805
|
+
};
|
|
3806
|
+
|
|
3807
|
+
var placeTypes = {
|
|
3808
|
+
FOOD: "food",
|
|
3809
|
+
STORE: "shopping",
|
|
3810
|
+
TOURIST_ATTRACTION: "attractions",
|
|
3811
|
+
TRANSIT_STATION: "transit",
|
|
3812
|
+
SCHOOL: "schools",
|
|
3813
|
+
PLACE_OF_WORSHIP: "worship"
|
|
3814
|
+
};
|
|
3815
|
+
|
|
3816
|
+
var customSVGIcon = function customSVGIcon(type) {
|
|
3817
|
+
var fillColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "#FFFFFF";
|
|
3818
|
+
var strokeColor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "#000000";
|
|
3819
|
+
var backgroundFill = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "#000000";
|
|
3820
|
+
var backgroundStroke = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : "#000000";
|
|
3821
|
+
var svg = "";
|
|
3822
|
+
switch (type) {
|
|
3823
|
+
case placeTypes.FOOD:
|
|
3824
|
+
svg = "\n\t\t\t\t\t<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t\t\t\t\t\tviewBox=\"0 0 60.8 89.6\" preserveAspectRatio=\"xMidYMid meet\" style=\"enable-background:new 0 0 60.8 89.6;\" xml:space=\"preserve\">\n\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t.st0{fill:".concat(fillColor, "; stroke:").concat(strokeColor, ";}\n\t\t\t\t\t.svg-background{fill:").concat(backgroundFill, "; stroke:").concat(backgroundStroke, ";}\n\t\t\t\t\t</style>\n\t\t\t\t\t<path class=\"svg-background\" d=\"M30.4,3.9C14.3,3.9,1.3,16.8,1.3,33c0,21,18.6,29.1,29.1,56.6C40.9,62.1,59.5,54.9,59.5,33C60.3,16.8,46.6,3.9,30.4,3.9z\"/>\n\t\t\t\t\t<path class=\"st0\" d=\"M25.7,36.6l0.6,15.8c0.1,2.4-2.3,2.4-2.3,2.4s-2.4,0-2.3-2.4l0.6-15.8c0.1-2-4.3-2.9-4-4.9l2.3-13.3h1.1\n\t\t\t\t\t\tl-0.6,9.7l1.7,1.2l0.6-10.9h1.1l0.6,10.9l1.7-1.2l-0.6-9.7h1.1l2.3,13.3C29.7,33.7,25.6,34.6,25.7,36.6z\"/>\n\t\t\t\t\t<path class=\"st0\" d=\"M40,52.4c0,2.4-2.3,2.4-2.3,2.4s-2.5,0-2.3-2.4L36.6,39c-0.9,0-3.4-0.4-3.4-2.4v-6.1c0-2.4,0.3-6.4,1.2-8.2\n\t\t\t\t\t\tc1.1-2.4,3.9-4,5.6-4C40,18.3,40,52.4,40,52.4z\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t");
|
|
3825
|
+
break;
|
|
3826
|
+
case placeTypes.TOURIST_ATTRACTION:
|
|
3827
|
+
svg = "<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t\t\t\t\tviewBox=\"0 0 60.8 89.6\" preserveAspectRatio=\"xMidYMid meet\" style=\"enable-background:new 0 0 60.8 89.6;\" xml:space=\"preserve\">\n\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t.st0{fill:".concat(fillColor, "; stroke:").concat(strokeColor, ";}\n\t\t\t\t\t.svg-background{fill:").concat(backgroundFill, "; stroke:").concat(backgroundStroke, ";}\n\t\t\t\t\t</style>\n\t\t\t\t\t<path class=\"svg-background\" d=\"M30.4,3.9C14.3,3.9,1.3,16.8,1.3,33c0,21,18.6,29.1,29.1,56.6C40.9,62.1,59.5,54.9,59.5,33C60.3,16.8,46.6,3.9,30.4,3.9z\"/>\n\t\t\t\t\t<path class=\"st0\" d=\"M27,18.5c-1.2,0-1.7,1.1-2.2,2.2L23.7,23h-4.5c-1.9,0-3.4,1.5-3.4,3.4v11.2c0,1.9,1.5,3.4,3.4,3.4h22.5\n\t\t\t\t\t\tc1.9,0,3.4-1.5,3.4-3.4V26.4c0-1.9-1.5-3.4-3.4-3.4h-4.5L36,20.8c-0.6-1.1-1-2.2-2.2-2.2H27z M19.2,25.3c0.6,0,1.1,0.5,1.1,1.1\n\t\t\t\t\t\tc0,0.6-0.5,1.1-1.1,1.1c-0.6,0-1.1-0.5-1.1-1.1C18,25.8,18.5,25.3,19.2,25.3z M30.4,25.3c3.7,0,6.7,3,6.7,6.7s-3,6.7-6.7,6.7\n\t\t\t\t\t\ts-6.7-3-6.7-6.7S26.7,25.3,30.4,25.3z M30.4,28.7c-1.9,0-3.4,1.5-3.4,3.4s1.5,3.4,3.4,3.4c1.9,0,3.4-1.5,3.4-3.4\n\t\t\t\t\t\tS32.3,28.7,30.4,28.7z\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t");
|
|
3828
|
+
break;
|
|
3829
|
+
case placeTypes.SCHOOL:
|
|
3830
|
+
svg = "\n\t\t\t\t\t<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t\t\t\t\t\tviewBox=\"0 0 60.8 89.6\" preserveAspectRatio=\"xMidYMid meet\" style=\"enable-background:new 0 0 60.8 89.6;\" xml:space=\"preserve\">\n\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t.st0{fill:".concat(fillColor, "; stroke:").concat(strokeColor, ";}\n\t\t\t\t\t.svg-background{fill:").concat(backgroundFill, "; stroke:").concat(backgroundStroke, ";}\n\t\t\t\t\t</style>\n\t\t\t\t\t<path class=\"svg-background\" d=\"M30.4,3.9C14.3,3.9,1.3,16.8,1.3,33c0,21,18.6,29.1,29.1,56.6C40.9,62.1,59.5,54.9,59.5,33C60.3,16.8,46.6,3.9,30.4,3.9z\"/>\n\t\t\t\t\t<path class=\"st0\" d=\"M39.2,40.6c0,0-4.1,4.6-9.1,4.6S21,40.6,21,40.6v-5.2l9.1,5l9.1-5V40.6z\"/>\n\t\t\t\t\t<polygon class=\"st0\" points=\"44.4,40.4 41.8,40.4 41.8,31.4 30.1,37.8 15.8,30 30.1,22.2 44.4,30 \"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t");
|
|
3831
|
+
break;
|
|
3832
|
+
case placeTypes.STORE:
|
|
3833
|
+
svg = "<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t\t\t\t\tviewBox=\"0 0 60.8 89.6\" preserveAspectRatio=\"xMidYMid meet\" style=\"enable-background:new 0 0 60.8 89.6;\" xml:space=\"preserve\">\n\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t.st0{fill:".concat(fillColor, "; stroke:").concat(strokeColor, ";}\n\t\t\t\t\t.svg-background{fill:").concat(backgroundFill, "; stroke:").concat(backgroundStroke, ";}\n\t\t\t\t\t</style>\n\t\t\t\t\t<g>\n\t\t\t\t\t\t<path class=\"svg-background\" d=\"M30.4,3.9C14.3,3.9,1.3,16.8,1.3,33c0,21,18.6,29.1,29.1,56.6C40.9,62.1,59.5,54.9,59.5,33C60.3,16.8,46.6,3.9,30.4,3.9z\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t</g>\n\t\t\t\t\t<path class=\"st0\" d=\"M45.4,27.7L42,41.1c-0.1,0.6-0.7,1-1.3,1c1.8,0,3.3,1.5,3.3,3.3s-1.5,3.3-3.3,3.3s-3.3-1.5-3.3-3.3\n\t\t\t\t\t\ts1.5-3.3,3.3-3.3H23.3c1.8,0,3.3,1.5,3.3,3.3s-1.5,3.3-3.3,3.3S20,47.2,20,45.4s1.5-3.3,3.3-3.3c-0.6,0-1.2-0.4-1.3-1l-4.1-16.4\n\t\t\t\t\t\th-1.3c-0.7,0-1.3-0.6-1.3-1.3s0.6-1.3,1.3-1.3h2.3c0.6,0,1.2,0.4,1.3,1l0.8,3h23.1c0.4,0,0.8,0.2,1.1,0.5\n\t\t\t\t\t\tC45.4,26.9,45.5,27.3,45.4,27.7z\"/>\n\t\t\t\t\t<path d=\"M41.4,45.5c0-0.4-0.3-0.7-0.7-0.7S40,45.1,40,45.5C40.1,46.2,41.4,46.2,41.4,45.5z\"/>\n\t\t\t\t\t<path d=\"M24,45.5c0-0.4-0.3-0.7-0.7-0.7s-0.7,0.3-0.7,0.7C22.6,46.2,24,46.2,24,45.5z\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t");
|
|
3834
|
+
break;
|
|
3835
|
+
case placeTypes.TRANSIT_STATION:
|
|
3836
|
+
svg = "<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t\t\t\t\tviewBox=\"0 0 60.8 89.6\" preserveAspectRatio=\"xMidYMid meet\" style=\"enable-background:new 0 0 60.8 89.6;\" xml:space=\"preserve\">\n\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t.st0{fill:".concat(fillColor, "; stroke:").concat(strokeColor, ";}\n\t\t\t\t\t.svg-background{fill:").concat(backgroundFill, "; stroke:").concat(backgroundStroke, ";}\n\t\t\t\t\t</style>\n\t\t\t\t\t<g>\n\t\t\t\t\t\t<path class=\"svg-background\" d=\"M30.4,3.9C14.3,3.9,1.3,16.8,1.3,33c0,21,18.6,29.1,29.1,56.6C40.9,62.1,59.5,54.9,59.5,33C60.3,16.8,46.6,3.9,30.4,3.9z\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t</g>\n\t\t\t\t\t<path class=\"st0\" d=\"M26.3,41.3h-2.8L20.7,44h-1.4v-1.4l1.4-1.4c-2.3,0-4.2-1.9-4.2-4.2V26c0-2.3,1.9-4.2,4.2-4.2h9.7\n\t\t\t\t\t\tc2.3,0,4.2,1.9,4.2,4.2v1.4h-2.8v-2.8H19.3v9.7h6.9v7H26.3z\"/>\n\t\t\t\t\t<path class=\"st0\" d=\"M44.3,43c0,0.5-0.4,1-1,1h-0.8c-0.5,0-1-0.5-1-1.1v-1.7H30.4V43c0,0.5-0.4,1.1-0.9,1.1h-0.9c-0.5,0-1-0.5-1-1\n\t\t\t\t\t\tv-7.6l2-5.7c0.2-0.6,0.7-0.9,1.4-0.9h10c0.6,0,1.1,0.4,1.3,0.9l2,5.7V43z\"/>\n\t\t\t\t\t<circle cx=\"20.7\" cy=\"37.1\" r=\"1.4\"/>\n\t\t\t\t\t<circle cx=\"41.5\" cy=\"37.1\" r=\"1.4\"/>\n\t\t\t\t\t<circle cx=\"30.4\" cy=\"37.1\" r=\"1.4\"/>\n\t\t\t\t\t<polygon points=\"31,30.2 29.6,34.4 42.4,34.4 40.9,30.2 \"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t");
|
|
3837
|
+
break;
|
|
3838
|
+
case placeTypes.PLACE_OF_WORSHIP:
|
|
3839
|
+
svg = "<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t\t\t\t\tviewBox=\"0 0 60.8 89.6\" style=\"enable-background:new 0 0 60.8 89.6;\" xml:space=\"preserve\">\n\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t.st0{fill:".concat(fillColor, "; stroke:").concat(strokeColor, ";}\n\t\t\t\t\t.svg-background{fill:").concat(backgroundFill, "; stroke:").concat(backgroundStroke, ";}\n\t\t\t\t\t</style>\n\t\t\t\t\t<path class=\"svg-background\" d=\"M30.4,3.9C14.3,3.9,1.3,16.8,1.3,33c0,21,18.6,29.1,29.1,56.6C40.9,62.1,59.5,54.9,59.5,33C60.3,16.8,46.6,3.9,30.4,3.9z\"/>\n\t\t\t\t\t<path class=\"st0\" d=\"M21.3,40.8h-3.8c-1.3,0-2.3-1-2.3-2.3v-4.3c0-0.8,0.5-1.6,1.2-2l4.9-2.7V40.8z\"/>\n\t\t\t\t\t<path class=\"st0\" d=\"M38,40.8h-4.6v-4.6c0-1.7-1.4-3-3-3c-1.7,0-3,1.4-3,3v4.6h-4.6V30c0-0.8,0.4-1.5,1.1-2l1.9-1.2v-5.1l0,0\n\t\t\t\t\t\tc0-0.4,0.2-0.8,0.4-1.1l3.6-3.6c0.3-0.3,0.8-0.3,1.1,0l3.6,3.6c0.3,0.3,0.4,0.7,0.4,1.1v5.1l1.9,1.2c0.7,0.4,1.1,1.2,1.1,2L38,40.8\n\t\t\t\t\t\tL38,40.8z\"/>\n\t\t\t\t\t<path class=\"st0\" d=\"M45.6,38.5c0,1.3-1,2.3-2.3,2.3h-3.8V29.5l4.9,2.7c0.7,0.4,1.2,1.2,1.2,2C45.6,34.2,45.6,38.5,45.6,38.5z\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t");
|
|
3840
|
+
break;
|
|
3841
|
+
}
|
|
3842
|
+
var iconUrl = "data:image/svg+xml;utf8,".concat(encodeURIComponent(svg));
|
|
3843
|
+
return iconUrl;
|
|
3844
|
+
};
|
|
3845
|
+
var iconPath = "M5.5 0A5.27 5.27 0 0 0 0 5.01v.49c0 1.73 1.38 3.43 2.07 4.12s3.43 4.12 3.43 4.12 2.75-3.43 3.43-4.12 2.06-2.39 2.06-4.12c.14-2.9-2.1-5.36-5-5.5H5.5Zm-.04 5.71c-.32 0-.57-.27-.56-.58 0-.32.27-.57.58-.56.32 0 .57.27.56.58 0 .31-.25.55-.56.56h-.02Z";
|
|
3846
|
+
var markerIconProps = function markerIconProps(placeMarkerConfigs, type) {
|
|
3847
|
+
var scaledWidth = placeMarkerConfigs.size;
|
|
3848
|
+
var scaledHeight = scaledWidth * 3 / 2;
|
|
3849
|
+
var iconUrl = customSVGIcon(type, placeMarkerConfigs.colors.innerFillColor, placeMarkerConfigs.colors.innerStrokeColor, placeMarkerConfigs.colors.outerFillColor, placeMarkerConfigs.colors.outerStrokeColor);
|
|
3850
|
+
return {
|
|
3851
|
+
url: iconUrl,
|
|
3852
|
+
scaledSize: new google.maps.Size(scaledWidth, scaledHeight),
|
|
3853
|
+
anchor: new google.maps.Point(scaledWidth / 2, scaledHeight)
|
|
3854
|
+
};
|
|
3855
|
+
};
|
|
3856
|
+
var iconProps = function iconProps() {
|
|
3857
|
+
return {
|
|
3858
|
+
path: iconPath,
|
|
3859
|
+
fillOpacity: 1,
|
|
3860
|
+
strokeWeight: 1.75,
|
|
3861
|
+
scale: 1.6,
|
|
3862
|
+
anchor: new google.maps.Point(12, 17)
|
|
3863
|
+
};
|
|
3864
|
+
};
|
|
3865
|
+
var markerIcon = function markerIcon(markerConfigs) {
|
|
3866
|
+
return _objectSpread2(_objectSpread2({}, iconProps()), {}, {
|
|
3867
|
+
fillColor: markerConfigs.fillColor,
|
|
3868
|
+
strokeColor: markerConfigs.strokeColor
|
|
3869
|
+
});
|
|
3870
|
+
};
|
|
3871
|
+
var markerIconSelected = function markerIconSelected(markerConfigs) {
|
|
3872
|
+
return _objectSpread2(_objectSpread2({}, iconProps()), {}, {
|
|
3873
|
+
fillColor: markerConfigs.selectedFillColor,
|
|
3874
|
+
strokeColor: markerConfigs.selectedStrokeColor
|
|
3875
|
+
});
|
|
3876
|
+
};
|
|
3877
|
+
var pinIcon = function pinIcon(markerConfigs) {
|
|
3878
|
+
var fillColor = markerConfigs.fillColor,
|
|
3879
|
+
strokeColor = markerConfigs.strokeColor;
|
|
3880
|
+
var svg = "\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"30\" height=\"30\" viewBox=\"-6 -4 24 24\">\n\t\t<path d=\"".concat(iconPath, "\" fill=\"").concat(fillColor, "\" stroke=\"").concat(strokeColor, "\" stroke-width=\"2\"/>\n\t </svg>\n\t");
|
|
3881
|
+
return "data:image/svg+xml;utf8,".concat(encodeURIComponent(svg));
|
|
3882
|
+
};
|
|
3883
|
+
|
|
3884
|
+
var searchNearbyPlaces = /*#__PURE__*/function () {
|
|
3885
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(typesArray, location, radius) {
|
|
3886
|
+
var url, headers, data, response;
|
|
3887
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
3888
|
+
while (1) switch (_context.prev = _context.next) {
|
|
3889
|
+
case 0:
|
|
3890
|
+
url = 'https://places.googleapis.com/v1/places:searchNearby';
|
|
3891
|
+
headers = {
|
|
3892
|
+
'Content-Type': 'application/json',
|
|
3893
|
+
'X-Goog-Api-Key': "AIzaSyAXPlfaoMCrmjNV1u-vFYdLBi7GkGeh4S4",
|
|
3894
|
+
'X-Goog-FieldMask': 'places.location,places.displayName,places.types'
|
|
3895
|
+
};
|
|
3896
|
+
data = {
|
|
3897
|
+
includedTypes: typesArray,
|
|
3898
|
+
maxResultCount: 20,
|
|
3899
|
+
locationRestriction: {
|
|
3900
|
+
circle: {
|
|
3901
|
+
center: location,
|
|
3902
|
+
radius: radius
|
|
3903
|
+
}
|
|
3904
|
+
}
|
|
3905
|
+
};
|
|
3906
|
+
_context.prev = 3;
|
|
3907
|
+
_context.next = 6;
|
|
3908
|
+
return fetch(url, {
|
|
3909
|
+
method: 'POST',
|
|
3910
|
+
headers: headers,
|
|
3911
|
+
body: JSON.stringify(data)
|
|
3912
|
+
});
|
|
3913
|
+
case 6:
|
|
3914
|
+
response = _context.sent;
|
|
3915
|
+
if (response.ok) {
|
|
3916
|
+
_context.next = 9;
|
|
3917
|
+
break;
|
|
3918
|
+
}
|
|
3919
|
+
throw new Error("HTTP error! status: ".concat(response.status));
|
|
3920
|
+
case 9:
|
|
3921
|
+
_context.next = 11;
|
|
3922
|
+
return response.json();
|
|
3923
|
+
case 11:
|
|
3924
|
+
return _context.abrupt("return", _context.sent);
|
|
3925
|
+
case 14:
|
|
3926
|
+
_context.prev = 14;
|
|
3927
|
+
_context.t0 = _context["catch"](3);
|
|
3928
|
+
console.error('Error making the Nearby Search request:', _context.t0);
|
|
3929
|
+
throw _context.t0;
|
|
3930
|
+
case 18:
|
|
3931
|
+
case "end":
|
|
3932
|
+
return _context.stop();
|
|
3933
|
+
}
|
|
3934
|
+
}, _callee, null, [[3, 14]]);
|
|
3935
|
+
}));
|
|
3936
|
+
return function searchNearbyPlaces(_x, _x2, _x3) {
|
|
3937
|
+
return _ref.apply(this, arguments);
|
|
3938
|
+
};
|
|
3939
|
+
}();
|
|
3940
|
+
|
|
3941
|
+
var PlacesContext = /*#__PURE__*/createContext();
|
|
3942
|
+
var usePlaces = function usePlaces() {
|
|
3943
|
+
return useContext(PlacesContext);
|
|
3944
|
+
};
|
|
3945
|
+
var PlacesProvider = function PlacesProvider(_ref) {
|
|
3946
|
+
var children = _ref.children,
|
|
3947
|
+
placeMappings = _ref.placeMappings,
|
|
3948
|
+
markerColors = _ref.markerColors;
|
|
3949
|
+
var _useMap = useMap(),
|
|
3950
|
+
selectedPlaces = _useMap.selectedPlaces,
|
|
3951
|
+
zoom = _useMap.zoom,
|
|
3952
|
+
center = _useMap.center;
|
|
3953
|
+
var _useState = useState({
|
|
3954
|
+
markers: [],
|
|
3955
|
+
icon: null
|
|
3956
|
+
}),
|
|
3957
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
3958
|
+
poiMarkers = _useState2[0],
|
|
3959
|
+
setPoiMarkers = _useState2[1];
|
|
3960
|
+
var _useState3 = useState(center),
|
|
3961
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
3962
|
+
currentCenter = _useState4[0],
|
|
3963
|
+
setCurrentCenter = _useState4[1];
|
|
3964
|
+
var _useState5 = useState(zoom),
|
|
3965
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
3966
|
+
currentZoom = _useState6[0],
|
|
3967
|
+
setCurrentZoom = _useState6[1];
|
|
3968
|
+
var _useState7 = useState(false),
|
|
3969
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
3970
|
+
placesWindow = _useState8[0],
|
|
3971
|
+
setPlacesWindow = _useState8[1];
|
|
3972
|
+
var _useState9 = useState(null),
|
|
3973
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
3974
|
+
selectedPlaceMarker = _useState10[0],
|
|
3975
|
+
setSelectedPlaceMarker = _useState10[1];
|
|
3976
|
+
var getRadiusForZoom = function getRadiusForZoom() {
|
|
3977
|
+
if (currentZoom >= 18) return 1000;
|
|
3978
|
+
if (currentZoom <= 10) return 0;
|
|
3979
|
+
var tempZoom = Math.pow(19 - currentZoom, 4.85);
|
|
3980
|
+
var radius = tempZoom;
|
|
3981
|
+
var minRadius = 1500;
|
|
3982
|
+
var maxRadius = 800000;
|
|
3983
|
+
if (radius < minRadius) radius = minRadius;else if (radius > maxRadius) radius = maxRadius;
|
|
3984
|
+
return radius;
|
|
3985
|
+
};
|
|
3986
|
+
useEffect(function () {
|
|
3987
|
+
if (!selectedPlaces || !selectedPlaces.length > 0 || !center || currentZoom < 12) {
|
|
3988
|
+
setPoiMarkers({
|
|
3989
|
+
markers: [],
|
|
3990
|
+
icon: null
|
|
3991
|
+
});
|
|
3992
|
+
return;
|
|
3993
|
+
}
|
|
3994
|
+
var fetchPlaces = /*#__PURE__*/function () {
|
|
3995
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
3996
|
+
var poiTypes, selectedPOICategories, radius, location, response, newMarkers;
|
|
3997
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
3998
|
+
while (1) switch (_context.prev = _context.next) {
|
|
3999
|
+
case 0:
|
|
4000
|
+
poiTypes = [];
|
|
4001
|
+
selectedPOICategories = selectedPlaces;
|
|
4002
|
+
selectedPOICategories.forEach(function (pointOfInterest) {
|
|
4003
|
+
poiTypes = poiTypes.concat(placeMappings[pointOfInterest]);
|
|
4004
|
+
});
|
|
4005
|
+
radius = getRadiusForZoom();
|
|
4006
|
+
location = {
|
|
4007
|
+
latitude: currentCenter.lat,
|
|
4008
|
+
longitude: currentCenter.lng
|
|
4009
|
+
};
|
|
4010
|
+
_context.prev = 5;
|
|
4011
|
+
_context.next = 8;
|
|
4012
|
+
return searchNearbyPlaces(poiTypes, location, radius);
|
|
4013
|
+
case 8:
|
|
4014
|
+
response = _context.sent;
|
|
4015
|
+
newMarkers = response.places.map(function (place) {
|
|
4016
|
+
var getParentCategory = function getParentCategory(types) {
|
|
4017
|
+
var selectedTypes = selectedPOICategories.reduce(function (acc, category) {
|
|
4018
|
+
return acc.concat(placeMappings[category]);
|
|
4019
|
+
}, []);
|
|
4020
|
+
var _iterator = _createForOfIteratorHelper(types),
|
|
4021
|
+
_step;
|
|
4022
|
+
try {
|
|
4023
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
4024
|
+
var type = _step.value;
|
|
4025
|
+
if (!selectedTypes.includes(type)) continue;
|
|
4026
|
+
for (var category in placeMappings) {
|
|
4027
|
+
if (placeMappings[category].includes(type)) {
|
|
4028
|
+
return category;
|
|
4029
|
+
}
|
|
4030
|
+
}
|
|
4031
|
+
}
|
|
4032
|
+
} catch (err) {
|
|
4033
|
+
_iterator.e(err);
|
|
4034
|
+
} finally {
|
|
4035
|
+
_iterator.f();
|
|
4036
|
+
}
|
|
4037
|
+
};
|
|
4038
|
+
var icon = markerIconProps(markerColors.placeMarkers, getParentCategory(place.types));
|
|
4039
|
+
return {
|
|
4040
|
+
position: {
|
|
4041
|
+
lat: place.location.latitude,
|
|
4042
|
+
lng: place.location.longitude
|
|
4043
|
+
},
|
|
4044
|
+
title: place.displayName.text,
|
|
4045
|
+
icon: icon
|
|
4046
|
+
};
|
|
4047
|
+
});
|
|
4048
|
+
setPoiMarkers({
|
|
4049
|
+
markers: newMarkers,
|
|
4050
|
+
icon: null
|
|
4051
|
+
});
|
|
4052
|
+
_context.next = 16;
|
|
4053
|
+
break;
|
|
4054
|
+
case 13:
|
|
4055
|
+
_context.prev = 13;
|
|
4056
|
+
_context.t0 = _context["catch"](5);
|
|
4057
|
+
console.error('Failed to fetch places:', _context.t0);
|
|
4058
|
+
case 16:
|
|
4059
|
+
case "end":
|
|
4060
|
+
return _context.stop();
|
|
4061
|
+
}
|
|
4062
|
+
}, _callee, null, [[5, 13]]);
|
|
4063
|
+
}));
|
|
4064
|
+
return function fetchPlaces() {
|
|
4065
|
+
return _ref2.apply(this, arguments);
|
|
4066
|
+
};
|
|
4067
|
+
}();
|
|
4068
|
+
fetchPlaces();
|
|
4069
|
+
}, [selectedPlaces, currentZoom, currentCenter]);
|
|
4070
|
+
return /*#__PURE__*/React.createElement(PlacesContext.Provider, {
|
|
4071
|
+
value: {
|
|
4072
|
+
poiMarkers: poiMarkers,
|
|
4073
|
+
setCurrentCenter: setCurrentCenter,
|
|
4074
|
+
currentCenter: currentCenter,
|
|
4075
|
+
setCurrentZoom: setCurrentZoom,
|
|
4076
|
+
currentZoom: currentZoom,
|
|
4077
|
+
placesWindow: placesWindow,
|
|
4078
|
+
setPlacesWindow: setPlacesWindow,
|
|
4079
|
+
selectedPlaceMarker: selectedPlaceMarker,
|
|
4080
|
+
setSelectedPlaceMarker: setSelectedPlaceMarker
|
|
4081
|
+
}
|
|
4082
|
+
}, children);
|
|
4083
|
+
};
|
|
4084
|
+
|
|
4085
|
+
var PlaceMarker = function PlaceMarker(_ref) {
|
|
4086
|
+
var marker = _ref.marker,
|
|
4087
|
+
index = _ref.index,
|
|
4088
|
+
selectedPlaceMarker = _ref.selectedPlaceMarker,
|
|
4089
|
+
setSelectedPlaceMarker = _ref.setSelectedPlaceMarker,
|
|
4090
|
+
placesWindow = _ref.placesWindow,
|
|
4091
|
+
setPlacesWindow = _ref.setPlacesWindow;
|
|
4092
|
+
var markerKey = "marker-".concat(marker.title, "-").concat(index);
|
|
4093
|
+
var placeMarkerClickHandler = function placeMarkerClickHandler() {
|
|
4094
|
+
setSelectedPlaceMarker(markerKey);
|
|
4095
|
+
setPlacesWindow(true);
|
|
4096
|
+
};
|
|
4097
|
+
return /*#__PURE__*/React.createElement(Marker, {
|
|
4098
|
+
key: markerKey,
|
|
4099
|
+
position: marker.position,
|
|
4100
|
+
title: marker.title,
|
|
4101
|
+
icon: marker.icon,
|
|
4102
|
+
options: {
|
|
4103
|
+
optimized: false
|
|
4104
|
+
},
|
|
4105
|
+
onClick: placeMarkerClickHandler
|
|
4106
|
+
}, selectedPlaceMarker === markerKey && placesWindow && marker && /*#__PURE__*/React.createElement(InfoWindowF, {
|
|
4107
|
+
position: marker.position,
|
|
4108
|
+
onCloseClick: function onCloseClick() {
|
|
4109
|
+
return setPlacesWindow(false);
|
|
4110
|
+
},
|
|
4111
|
+
options: {
|
|
4112
|
+
maxWidth: 400
|
|
4113
|
+
}
|
|
4114
|
+
}, /*#__PURE__*/React.createElement("div", null, marker.title)));
|
|
4115
|
+
};
|
|
4116
|
+
|
|
4117
|
+
var ShowAllButton = function ShowAllButton(_ref) {
|
|
4118
|
+
var mapInteracted = _ref.mapInteracted,
|
|
4119
|
+
markerConfigs = _ref.markerConfigs,
|
|
4120
|
+
setMapInteracted = _ref.setMapInteracted,
|
|
4121
|
+
fitBounds = _ref.fitBounds,
|
|
4122
|
+
mapRef = _ref.mapRef,
|
|
4123
|
+
pinIconUrl = _ref.pinIconUrl,
|
|
4124
|
+
setSelectedFilters = _ref.setSelectedFilters,
|
|
4125
|
+
setQuery = _ref.setQuery,
|
|
4126
|
+
listingCount = _ref.listingCount;
|
|
4127
|
+
if (!mapInteracted || !markerConfigs) {
|
|
4128
|
+
return null;
|
|
4129
|
+
}
|
|
4130
|
+
return /*#__PURE__*/React.createElement("button", {
|
|
4131
|
+
style: {
|
|
4132
|
+
fontFamily: 'Roboto, Arial, sans-serif',
|
|
4133
|
+
fontSize: '14px',
|
|
4134
|
+
fontWeight: '500'
|
|
4135
|
+
},
|
|
4136
|
+
className: "absolute bottom-10 left-2.5 z-10 flex items-center justify-center pl-2 pb-1 pt-1.5 pr-3 bg-white text-black border-none rounded-full shadow cursor-pointer text-sm font-medium",
|
|
4137
|
+
onClick: function onClick() {
|
|
4138
|
+
setMapInteracted(false);
|
|
4139
|
+
fitBounds(mapRef.current, true);
|
|
4140
|
+
if (listingCount < 2) {
|
|
4141
|
+
setSelectedFilters({});
|
|
4142
|
+
setQuery(null);
|
|
4143
|
+
}
|
|
4144
|
+
}
|
|
4145
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
4146
|
+
src: pinIconUrl,
|
|
4147
|
+
alt: "Pin Icon",
|
|
4148
|
+
className: "w-5 h-5"
|
|
4149
|
+
}), "Show All");
|
|
4150
|
+
};
|
|
4151
|
+
|
|
4152
|
+
var Map = function Map(_ref) {
|
|
4153
|
+
var markerConfigs = _ref.markerConfigs,
|
|
4154
|
+
infoWindowClasses = _ref.infoWindowClasses,
|
|
4155
|
+
_ref$clusterGridSize = _ref.clusterGridSize,
|
|
4156
|
+
clusterGridSize = _ref$clusterGridSize === void 0 ? 60 : _ref$clusterGridSize;
|
|
4157
|
+
var _useMap = useMap(),
|
|
4158
|
+
location = _useMap.location,
|
|
4159
|
+
zoom = _useMap.zoom,
|
|
4160
|
+
center = _useMap.center;
|
|
4161
|
+
_useMap.commuteLocation;
|
|
4162
|
+
var selectLocationEntity = _useMap.selectLocationEntity,
|
|
4163
|
+
setLocation = _useMap.setLocation,
|
|
4164
|
+
mapInteracted = _useMap.mapInteracted,
|
|
4165
|
+
setMapInteracted = _useMap.setMapInteracted;
|
|
4166
|
+
var _useMapList = useMapList(),
|
|
4167
|
+
mapItems = _useMapList.mapItems;
|
|
4168
|
+
_useMapList.handleFilterListingsByLocation;
|
|
4169
|
+
var filteredListings = _useMapList.filteredListings,
|
|
4170
|
+
setSelectedFilters = _useMapList.setSelectedFilters,
|
|
4171
|
+
setQuery = _useMapList.setQuery;
|
|
4172
|
+
var mapRef = useRef();
|
|
4173
|
+
var markerRefs = useRef({});
|
|
4174
|
+
var mapContainerRef = useRef(null);
|
|
4175
|
+
var _usePlaces = usePlaces(),
|
|
4176
|
+
poiMarkers = _usePlaces.poiMarkers,
|
|
4177
|
+
setCurrentCenter = _usePlaces.setCurrentCenter,
|
|
4178
|
+
currentCenter = _usePlaces.currentCenter,
|
|
4179
|
+
setCurrentZoom = _usePlaces.setCurrentZoom,
|
|
4180
|
+
currentZoom = _usePlaces.currentZoom,
|
|
4181
|
+
selectedPlaceMarker = _usePlaces.selectedPlaceMarker,
|
|
4182
|
+
setSelectedPlaceMarker = _usePlaces.setSelectedPlaceMarker,
|
|
4183
|
+
placesWindow = _usePlaces.placesWindow,
|
|
4184
|
+
setPlacesWindow = _usePlaces.setPlacesWindow;
|
|
4185
|
+
var onIdle = function onIdle() {
|
|
4186
|
+
if (!currentCenter || !mapRef.current) return;
|
|
4187
|
+
var newCenter = mapRef.current.getCenter().toJSON();
|
|
4188
|
+
var newZoom = mapRef.current.zoom;
|
|
4189
|
+
setCurrentCenter(newCenter);
|
|
4190
|
+
if (newZoom != currentZoom) {
|
|
4191
|
+
setCurrentZoom(newZoom);
|
|
4192
|
+
}
|
|
4193
|
+
};
|
|
4194
|
+
useEffect(function () {
|
|
4195
|
+
if (mapContainerRef.current) {
|
|
4196
|
+
var handleScroll = function handleScroll() {
|
|
4197
|
+
setMapInteracted(true);
|
|
4198
|
+
};
|
|
4199
|
+
var mapContainerRefCurrent = mapContainerRef.current;
|
|
4200
|
+
mapContainerRef.current.addEventListener('wheel', handleScroll);
|
|
4201
|
+
return function () {
|
|
4202
|
+
return mapContainerRefCurrent.removeEventListener('wheel', handleScroll);
|
|
4203
|
+
};
|
|
4204
|
+
}
|
|
4205
|
+
}, [mapContainerRef.current]);
|
|
4206
|
+
useEffect(function () {
|
|
4207
|
+
if (mapRef.current) {
|
|
4208
|
+
var mapInstance = mapRef.current;
|
|
4209
|
+
var dragStartListener = mapInstance.addListener('dragstart', function () {
|
|
4210
|
+
return setMapInteracted(true);
|
|
4211
|
+
});
|
|
4212
|
+
var mouseDownListener = mapInstance.addListener('mousedown', function () {
|
|
4213
|
+
return setMapInteracted(true);
|
|
4214
|
+
});
|
|
4215
|
+
return function () {
|
|
4216
|
+
google.maps.event.removeListener(dragStartListener);
|
|
4217
|
+
google.maps.event.removeListener(mouseDownListener);
|
|
4218
|
+
};
|
|
4219
|
+
}
|
|
4220
|
+
}, [mapRef.current, mapContainerRef.current]);
|
|
4221
|
+
useEffect(function () {
|
|
4222
|
+
if ((mapItems && mapItems.length > 0 || poiMarkers.length > 0) && mapRef.current) {
|
|
4223
|
+
fitBounds(mapRef.current);
|
|
4224
|
+
}
|
|
4225
|
+
}, [mapItems, mapRef.current, location]);
|
|
4226
|
+
useEffect(function () {
|
|
4227
|
+
if (mapItems && mapItems.length > 0 || poiMarkers.length > 0 && mapRef.current && mapInteracted) {
|
|
4228
|
+
fitBounds(mapRef.current, true);
|
|
4229
|
+
}
|
|
4230
|
+
if (mapRef.current) {
|
|
4231
|
+
var currZoom = mapRef.current.zoom;
|
|
4232
|
+
var setZoomVal = currZoom < 13 ? currZoom : 12;
|
|
4233
|
+
mapRef.current.setZoom(setZoomVal);
|
|
4234
|
+
}
|
|
4235
|
+
}, [filteredListings]);
|
|
4236
|
+
useEffect(function () {
|
|
4237
|
+
if (!mapRef.current || !location || mapInteracted) return;
|
|
4238
|
+
mapRef.current.panTo(new google.maps.LatLng(location.latitude, location.longitude));
|
|
4239
|
+
if (mapRef.current) {
|
|
4240
|
+
var setZoomVal = zoom < 13 ? zoom : 12;
|
|
4241
|
+
mapRef.current.setZoom(setZoomVal);
|
|
4242
|
+
}
|
|
4243
|
+
}, [location, zoom, mapRef.current]);
|
|
4244
|
+
var fitBounds = function fitBounds(map) {
|
|
4245
|
+
var overload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
4246
|
+
if ((mapInteracted === false || overload) && mapItems != null) {
|
|
4247
|
+
var bounds = new window.google.maps.LatLngBounds();
|
|
4248
|
+
mapItems.forEach(function (item) {
|
|
4249
|
+
bounds.extend(new google.maps.LatLng(item.latitude, item.longitude));
|
|
4250
|
+
});
|
|
4251
|
+
if (!map) return;
|
|
4252
|
+
map.fitBounds(bounds);
|
|
4253
|
+
}
|
|
4254
|
+
if (mapRef.current.zoom > 17) {
|
|
4255
|
+
mapRef.current.setZoom(16);
|
|
4256
|
+
}
|
|
4257
|
+
};
|
|
4258
|
+
var markerClickHandler = function markerClickHandler(mapLocation) {
|
|
4259
|
+
setMapInteracted(true);
|
|
4260
|
+
selectLocationEntity(mapLocation);
|
|
4261
|
+
};
|
|
4262
|
+
var onLoad = function onLoad(map) {
|
|
4263
|
+
if (!location || location === null) {
|
|
4264
|
+
mapRef.current = map;
|
|
4265
|
+
fitBounds(map, true);
|
|
4266
|
+
return;
|
|
4267
|
+
}
|
|
4268
|
+
mapRef.current = map;
|
|
4269
|
+
if (mapInteracted === false) {
|
|
4270
|
+
mapRef.current.panTo(new google.maps.LatLng(location.latitude, location.longitude));
|
|
4271
|
+
mapRef.current.setZoom(zoom);
|
|
4272
|
+
}
|
|
4273
|
+
};
|
|
4274
|
+
var pinIconUrl = pinIcon({
|
|
4275
|
+
fillColor: markerConfigs.fillColor,
|
|
4276
|
+
strokeColor: markerConfigs.strokeColor
|
|
4277
|
+
});
|
|
4278
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, zoom && center && /*#__PURE__*/React.createElement("div", {
|
|
4279
|
+
ref: mapContainerRef,
|
|
4280
|
+
className: "h-full relative"
|
|
4281
|
+
}, /*#__PURE__*/React.createElement(GoogleMap, {
|
|
4282
|
+
zoom: zoom,
|
|
4283
|
+
onLoad: onLoad,
|
|
4284
|
+
onIdle: onIdle,
|
|
4285
|
+
center: center,
|
|
4286
|
+
mapContainerStyle: {
|
|
4287
|
+
width: "100%",
|
|
4288
|
+
height: "100%"
|
|
4289
|
+
},
|
|
4290
|
+
options: {
|
|
4291
|
+
styles: [{
|
|
4292
|
+
featureType: "poi",
|
|
4293
|
+
elementType: "labels",
|
|
4294
|
+
stylers: [{
|
|
4295
|
+
visibility: "off"
|
|
4296
|
+
}]
|
|
4297
|
+
}]
|
|
4298
|
+
}
|
|
4299
|
+
}, /*#__PURE__*/React.createElement(MarkerClustererF, {
|
|
4300
|
+
options: clusterOptions(clusterGridSize, markerConfigs.fillColor)
|
|
4301
|
+
}, function (clusterer) {
|
|
4302
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, mapItems.map(function (item) {
|
|
4303
|
+
return /*#__PURE__*/React.createElement(MapMarker, {
|
|
4304
|
+
key: item.id,
|
|
4305
|
+
item: item,
|
|
4306
|
+
selectedLocation: location,
|
|
4307
|
+
markerRefs: markerRefs,
|
|
4308
|
+
infoWindowClasses: infoWindowClasses,
|
|
4309
|
+
setSelectedLocation: setLocation,
|
|
4310
|
+
markerClickHandler: markerClickHandler,
|
|
4311
|
+
clusterer: clusterer,
|
|
4312
|
+
markerIcon: markerIcon(markerConfigs),
|
|
4313
|
+
markerIconSelected: markerIconSelected(markerConfigs),
|
|
4314
|
+
setMapInteracted: setMapInteracted
|
|
4315
|
+
});
|
|
4316
|
+
}), poiMarkers && poiMarkers.markers.map(function (marker, index) {
|
|
4317
|
+
return /*#__PURE__*/React.createElement(PlaceMarker, {
|
|
4318
|
+
key: "marker-".concat(marker.title, "-").concat(index),
|
|
4319
|
+
marker: marker,
|
|
4320
|
+
index: index,
|
|
4321
|
+
selectedPlaceMarker: selectedPlaceMarker,
|
|
4322
|
+
placesWindow: placesWindow,
|
|
4323
|
+
setPlacesWindow: setPlacesWindow,
|
|
4324
|
+
setSelectedPlaceMarker: setSelectedPlaceMarker
|
|
4325
|
+
});
|
|
4326
|
+
}));
|
|
4327
|
+
})), mapInteracted && markerConfigs && /*#__PURE__*/React.createElement(ShowAllButton, {
|
|
4328
|
+
mapInteracted: mapInteracted,
|
|
4329
|
+
markerConfigs: markerConfigs,
|
|
4330
|
+
setMapInteracted: setMapInteracted,
|
|
4331
|
+
fitBounds: fitBounds,
|
|
4332
|
+
mapRef: mapRef,
|
|
4333
|
+
pinIconUrl: pinIconUrl,
|
|
4334
|
+
setQuery: setQuery,
|
|
4335
|
+
listingCount: filteredListings.length,
|
|
4336
|
+
setSelectedFilters: setSelectedFilters
|
|
4337
|
+
})));
|
|
4338
|
+
};
|
|
4339
|
+
|
|
4340
|
+
var MapTabs = function MapTabs(_ref) {
|
|
4341
|
+
var map = _ref.map,
|
|
4342
|
+
list = _ref.list,
|
|
4343
|
+
filter = _ref.filter,
|
|
4344
|
+
className = _ref.className,
|
|
4345
|
+
showMap = _ref.showMap;
|
|
4346
|
+
var tabButtonClasses = "flex items-center gap-2 rounded-none border-x-0 data-[state=active]:bg-primary data-[state=active]:text-white";
|
|
4347
|
+
var _useMapList = useMapList(),
|
|
4348
|
+
mobileTab = _useMapList.mobileTab,
|
|
4349
|
+
setMobileTab = _useMapList.setMobileTab;
|
|
4350
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
4351
|
+
className: "\n\t\t\t\trelative overflow-hidden\n\t\t\t\t".concat(className !== null && className !== void 0 ? className : "", "\n\t\t\t")
|
|
4352
|
+
}, /*#__PURE__*/React.createElement(Tabs.Root, {
|
|
4353
|
+
className: "flex flex-col h-screen min-h-screen"
|
|
4354
|
+
//defaultValue="listTab"
|
|
4355
|
+
,
|
|
4356
|
+
value: mobileTab
|
|
4357
|
+
}, /*#__PURE__*/React.createElement(Tabs.List, {
|
|
4358
|
+
className: "w-full shrink-0 flex divide-x divide-primary",
|
|
4359
|
+
"aria-label": "Review positions"
|
|
4360
|
+
}, /*#__PURE__*/React.createElement(Tabs.Trigger, {
|
|
4361
|
+
value: "listTab",
|
|
4362
|
+
asChild: true,
|
|
4363
|
+
onClick: function onClick() {
|
|
4364
|
+
return setMobileTab("listTab");
|
|
4365
|
+
}
|
|
4366
|
+
}, /*#__PURE__*/React.createElement(Button.Btn, {
|
|
4367
|
+
variant: "outline",
|
|
4368
|
+
isBlock: true,
|
|
4369
|
+
className: tabButtonClasses
|
|
4370
|
+
}, /*#__PURE__*/React.createElement(Button.Body, {
|
|
4371
|
+
className: "justify-center"
|
|
4372
|
+
}, /*#__PURE__*/React.createElement(Button.Icon, {
|
|
4373
|
+
icon: "mdi:view-list",
|
|
4374
|
+
size: "w-5 h-5"
|
|
4375
|
+
}), "List"))), showMap && /*#__PURE__*/React.createElement(Tabs.Trigger, {
|
|
4376
|
+
value: "mapTab",
|
|
4377
|
+
asChild: true,
|
|
4378
|
+
onClick: function onClick() {
|
|
4379
|
+
return setMobileTab("mapTab");
|
|
4380
|
+
}
|
|
4381
|
+
}, /*#__PURE__*/React.createElement(Button.Btn, {
|
|
4382
|
+
variant: "outline",
|
|
4383
|
+
isBlock: true,
|
|
4384
|
+
className: tabButtonClasses
|
|
4385
|
+
}, /*#__PURE__*/React.createElement(Button.Body, {
|
|
4386
|
+
className: "justify-center"
|
|
4387
|
+
}, /*#__PURE__*/React.createElement(Button.Icon, {
|
|
4388
|
+
icon: "mdi:map",
|
|
4389
|
+
size: "w-5 h-5"
|
|
4390
|
+
}), "Map"))), /*#__PURE__*/React.createElement(Tabs.Trigger, {
|
|
4391
|
+
value: "filterTab",
|
|
4392
|
+
asChild: true,
|
|
4393
|
+
onClick: function onClick() {
|
|
4394
|
+
return setMobileTab("filterTab");
|
|
4395
|
+
}
|
|
4396
|
+
}, /*#__PURE__*/React.createElement(Button.Btn, {
|
|
4397
|
+
variant: "outline",
|
|
4398
|
+
isBlock: true,
|
|
4399
|
+
className: tabButtonClasses
|
|
4400
|
+
}, /*#__PURE__*/React.createElement(Button.Body, {
|
|
4401
|
+
className: "justify-center"
|
|
4402
|
+
}, /*#__PURE__*/React.createElement(Button.Icon, {
|
|
4403
|
+
icon: "fluent:search-12-filled",
|
|
4404
|
+
size: "w-5 h-5"
|
|
4405
|
+
}), "Filter")))), /*#__PURE__*/React.createElement(Tabs.Content, {
|
|
4406
|
+
className: "grow bg-white outline-none",
|
|
4407
|
+
value: "listTab"
|
|
4408
|
+
}, list), showMap && /*#__PURE__*/React.createElement(Tabs.Content, {
|
|
4409
|
+
className: "grow bg-white outline-none",
|
|
4410
|
+
value: "mapTab"
|
|
4411
|
+
}, map), /*#__PURE__*/React.createElement(Tabs.Content, {
|
|
4412
|
+
className: "grow bg-white outline-none p-2",
|
|
4413
|
+
value: "filterTab"
|
|
4414
|
+
}, filter)));
|
|
4415
|
+
};
|
|
4416
|
+
|
|
4417
|
+
var MapList = function MapList(_ref) {
|
|
4418
|
+
var _ref$loading = _ref.loading,
|
|
4419
|
+
loading = _ref$loading === void 0 ? false : _ref$loading,
|
|
4420
|
+
mapDetails = _ref.mapDetails,
|
|
4421
|
+
markerConfigs = _ref.markerConfigs,
|
|
4422
|
+
itemExpandedContent = _ref.itemExpandedContent,
|
|
4423
|
+
fieldsShown = _ref.fieldsShown,
|
|
4424
|
+
specialFeatures = _ref.specialFeatures,
|
|
4425
|
+
fieldNames = _ref.fieldNames,
|
|
4426
|
+
showMap = _ref.showMap,
|
|
4427
|
+
placeMappings = _ref.placeMappings;
|
|
4428
|
+
var listProps = {
|
|
4429
|
+
fieldsShown: fieldsShown,
|
|
4430
|
+
fieldNames: fieldNames,
|
|
4431
|
+
itemExpandedContent: itemExpandedContent,
|
|
4432
|
+
loading: loading,
|
|
4433
|
+
showMap: showMap,
|
|
4434
|
+
specialFeatures: specialFeatures
|
|
4435
|
+
};
|
|
4436
|
+
var mapProps = {
|
|
4437
|
+
mapDetails: mapDetails,
|
|
4438
|
+
markerConfigs: markerConfigs,
|
|
4439
|
+
placeMappings: placeMappings,
|
|
4440
|
+
clusterGridSize: 60,
|
|
4441
|
+
showMap: showMap
|
|
4442
|
+
};
|
|
4443
|
+
|
|
4444
|
+
// useEffect(() => {
|
|
4445
|
+
// if (selectedItem !== null) {
|
|
4446
|
+
// trackEvent("Map", "View Location", selectedItem[titlePropName]);
|
|
4447
|
+
// }
|
|
4448
|
+
// // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
4449
|
+
// }, []);
|
|
4450
|
+
var map = /*#__PURE__*/React.createElement(Map, mapProps);
|
|
4451
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
4452
|
+
className: "\n\t\t\t\t\t".concat(showMap == false ? "md:grid-rows-[100vh]" : "md:grid-rows-[50vh_50vh]", "\n\t\t\t\t\tmd:grid md:pt-4 overflow-hidden relative\n\t\t\t\t")
|
|
4453
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
4454
|
+
className: ""
|
|
4455
|
+
}, /*#__PURE__*/React.createElement(ItemsList, listProps)), /*#__PURE__*/React.createElement("div", null, showMap && map)), /*#__PURE__*/React.createElement("div", {
|
|
4456
|
+
className: "md:hidden"
|
|
4457
|
+
}, /*#__PURE__*/React.createElement(MapTabs, {
|
|
4458
|
+
showMap: showMap,
|
|
4459
|
+
list: /*#__PURE__*/React.createElement(ItemsList, listProps),
|
|
4460
|
+
map: !loading && showMap && map,
|
|
4461
|
+
filter: /*#__PURE__*/React.createElement(Filter, {
|
|
4462
|
+
showMap: showMap,
|
|
4463
|
+
className: "md:hidden"
|
|
4464
|
+
})
|
|
4465
|
+
})));
|
|
4466
|
+
};
|
|
4467
|
+
|
|
4468
|
+
var reactThingy = React;
|
|
4469
|
+
var SectionContext = reactThingy.createContext(null);
|
|
4470
|
+
|
|
4471
|
+
function Provider(_ref) {
|
|
4472
|
+
var children = _ref.children;
|
|
4473
|
+
return /*#__PURE__*/React.createElement(Provider$1, null, children);
|
|
4474
|
+
}
|
|
4475
|
+
|
|
4476
|
+
var SkipLink = function SkipLink(_ref) {
|
|
4477
|
+
var _ref$href = _ref.href,
|
|
4478
|
+
href = _ref$href === void 0 ? '#start-of-content' : _ref$href,
|
|
4479
|
+
className = _ref.className,
|
|
4480
|
+
_ref$children = _ref.children,
|
|
4481
|
+
children = _ref$children === void 0 ? 'Skip to content' : _ref$children;
|
|
4482
|
+
return /*#__PURE__*/React.createElement("a", {
|
|
4483
|
+
href: href,
|
|
4484
|
+
className: "\n\t\t\t\tsr-only focus:not-sr-only focus:absolute focus:py-2 focus:px-6 bg-gray-900 dark:bg-white text-white dark:text-gray-900 font-bold text-center transition-colors hover:bg-gray-700\n\t\t\t\t".concat(className !== null && className !== void 0 ? className : '', "\n\t\t\t")
|
|
4485
|
+
}, children);
|
|
4486
|
+
};
|
|
4487
|
+
|
|
4488
|
+
var RootLayout = function RootLayout(_ref) {
|
|
4489
|
+
var children = _ref.children;
|
|
4490
|
+
var _useState = useState(null),
|
|
4491
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
4492
|
+
currentSection = _useState2[0],
|
|
4493
|
+
setCurrentSection = _useState2[1];
|
|
4494
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
4495
|
+
id: "top",
|
|
4496
|
+
className: "relative"
|
|
4497
|
+
}, /*#__PURE__*/React.createElement(Provider, null, /*#__PURE__*/React.createElement(SectionContext.Provider, {
|
|
4498
|
+
value: {
|
|
4499
|
+
currentSection: currentSection,
|
|
4500
|
+
setCurrentSection: setCurrentSection
|
|
4501
|
+
}
|
|
4502
|
+
}, /*#__PURE__*/React.createElement(SkipLink, null), /*#__PURE__*/React.createElement("main", {
|
|
4503
|
+
id: "start-of-content"
|
|
4504
|
+
}, children))));
|
|
4505
|
+
};
|
|
4506
|
+
|
|
4507
|
+
var getMapConfig = /*#__PURE__*/function () {
|
|
4508
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
4509
|
+
var response;
|
|
4510
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
4511
|
+
while (1) switch (_context.prev = _context.next) {
|
|
4512
|
+
case 0:
|
|
4513
|
+
_context.prev = 0;
|
|
4514
|
+
_context.next = 3;
|
|
4515
|
+
return api.get("/MapConfig");
|
|
4516
|
+
case 3:
|
|
4517
|
+
response = _context.sent;
|
|
4518
|
+
return _context.abrupt("return", response);
|
|
4519
|
+
case 7:
|
|
4520
|
+
_context.prev = 7;
|
|
4521
|
+
_context.t0 = _context["catch"](0);
|
|
4522
|
+
console.error("Error retrieving map configuration:", _context.t0);
|
|
4523
|
+
throw _context.t0;
|
|
4524
|
+
case 11:
|
|
4525
|
+
case "end":
|
|
4526
|
+
return _context.stop();
|
|
4527
|
+
}
|
|
4528
|
+
}, _callee, null, [[0, 7]]);
|
|
4529
|
+
}));
|
|
4530
|
+
return function getMapConfig() {
|
|
4531
|
+
return _ref.apply(this, arguments);
|
|
4532
|
+
};
|
|
4533
|
+
}();
|
|
4534
|
+
|
|
4535
|
+
var libraries = ['places'];
|
|
4536
|
+
var HireControlMap = function HireControlMap(_ref) {
|
|
4537
|
+
var clientToken = _ref.clientToken;
|
|
4538
|
+
var _useState = useState(null),
|
|
4539
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
4540
|
+
siteConfig = _useState2[0],
|
|
4541
|
+
setSiteconfig = _useState2[1];
|
|
4542
|
+
useEffect(function () {
|
|
4543
|
+
setClientAuthKey(clientToken);
|
|
4544
|
+
var fetchSiteConfig = /*#__PURE__*/function () {
|
|
4545
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
4546
|
+
var configData;
|
|
4547
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
4548
|
+
while (1) switch (_context.prev = _context.next) {
|
|
4549
|
+
case 0:
|
|
4550
|
+
_context.prev = 0;
|
|
4551
|
+
_context.next = 3;
|
|
4552
|
+
return getMapConfig(clientToken);
|
|
4553
|
+
case 3:
|
|
4554
|
+
configData = _context.sent;
|
|
4555
|
+
setSiteconfig(configData);
|
|
4556
|
+
_context.next = 10;
|
|
4557
|
+
break;
|
|
4558
|
+
case 7:
|
|
4559
|
+
_context.prev = 7;
|
|
4560
|
+
_context.t0 = _context["catch"](0);
|
|
4561
|
+
console.error('Failed to fetch site configuration:', _context.t0);
|
|
4562
|
+
case 10:
|
|
4563
|
+
case "end":
|
|
4564
|
+
return _context.stop();
|
|
4565
|
+
}
|
|
4566
|
+
}, _callee, null, [[0, 7]]);
|
|
4567
|
+
}));
|
|
4568
|
+
return function fetchSiteConfig() {
|
|
4569
|
+
return _ref2.apply(this, arguments);
|
|
4570
|
+
};
|
|
4571
|
+
}();
|
|
4572
|
+
fetchSiteConfig();
|
|
4573
|
+
var handlePopState = function handlePopState(event) {
|
|
4574
|
+
window.location.reload();
|
|
4575
|
+
};
|
|
4576
|
+
window.addEventListener('popstate', handlePopState);
|
|
4577
|
+
return function () {
|
|
4578
|
+
window.removeEventListener('popstate', handlePopState);
|
|
4579
|
+
};
|
|
4580
|
+
}, [clientToken]);
|
|
4581
|
+
var _useLoadScript = useLoadScript({
|
|
4582
|
+
googleMapsApiKey: "AIzaSyAXPlfaoMCrmjNV1u-vFYdLBi7GkGeh4S4",
|
|
4583
|
+
libraries: libraries
|
|
4584
|
+
}),
|
|
4585
|
+
isLoaded = _useLoadScript.isLoaded;
|
|
4586
|
+
return /*#__PURE__*/React.createElement(BrowserRouter, null, /*#__PURE__*/React.createElement(RootLayout, null, isLoaded && siteConfig && /*#__PURE__*/React.createElement(HomeBody, {
|
|
4587
|
+
siteConfig: siteConfig
|
|
4588
|
+
})));
|
|
4589
|
+
};
|
|
4590
|
+
var HomeBody = function HomeBody(_ref3) {
|
|
4591
|
+
var _siteConfig$pointsOfI, _siteConfig$pointsOfI2;
|
|
4592
|
+
var siteConfig = _ref3.siteConfig;
|
|
4593
|
+
var resetFilters = false;
|
|
4594
|
+
return /*#__PURE__*/React.createElement(MapListProvider, {
|
|
4595
|
+
siteConfig: siteConfig,
|
|
4596
|
+
resetFilters: resetFilters
|
|
4597
|
+
}, /*#__PURE__*/React.createElement(MapProvider, {
|
|
4598
|
+
resetFilters: resetFilters
|
|
4599
|
+
}, /*#__PURE__*/React.createElement(PlacesProvider, {
|
|
4600
|
+
placeMappings: (_siteConfig$pointsOfI = siteConfig.pointsOfInterestConfig.placeMappings) !== null && _siteConfig$pointsOfI !== void 0 ? _siteConfig$pointsOfI : {},
|
|
4601
|
+
markerColors: {
|
|
4602
|
+
fillColor: siteConfig.colors.primary,
|
|
4603
|
+
strokeColor: siteConfig.colors.primaryDark,
|
|
4604
|
+
selectedFillColor: siteConfig.colors.secondary,
|
|
4605
|
+
selectedStrokeColor: siteConfig.colors.secondaryDark,
|
|
4606
|
+
placeMarkers: {
|
|
4607
|
+
colors: siteConfig.pointsOfInterestConfig.placeMarkerColors,
|
|
4608
|
+
size: siteConfig.pointsOfInterestConfig.placeMarkerSize
|
|
4609
|
+
}
|
|
4610
|
+
}
|
|
4611
|
+
}, /*#__PURE__*/React.createElement(PageHead, {
|
|
4612
|
+
title: ""
|
|
4613
|
+
}), /*#__PURE__*/React.createElement(Grid, {
|
|
4614
|
+
as: "section",
|
|
4615
|
+
id: "job-search-interface",
|
|
4616
|
+
columns: "md:grid-cols-[1fr_2.5fr] lg:grid-cols-[1fr_3.5fr]",
|
|
4617
|
+
gap: "gap-0",
|
|
4618
|
+
autoRows: false,
|
|
4619
|
+
className: "items-stretch h-screen min-h-[30rem] divide-x divide-uiAccent/20"
|
|
4620
|
+
}, /*#__PURE__*/React.createElement(Grid.Item, {
|
|
4621
|
+
className: "bg-gray-100"
|
|
4622
|
+
}, /*#__PURE__*/React.createElement(Filter, {
|
|
4623
|
+
showMap: siteConfig.showMap,
|
|
4624
|
+
className: "hidden md:block"
|
|
4625
|
+
})), /*#__PURE__*/React.createElement(MapList, {
|
|
4626
|
+
markerConfigs: {
|
|
4627
|
+
fillColor: siteConfig.colors.primary,
|
|
4628
|
+
strokeColor: siteConfig.colors.primaryDark,
|
|
4629
|
+
selectedFillColor: siteConfig.colors.secondary,
|
|
4630
|
+
selectedStrokeColor: siteConfig.colors.secondaryDark,
|
|
4631
|
+
placeMarkers: {
|
|
4632
|
+
colors: siteConfig.pointsOfInterestConfig.placeMarkerColors,
|
|
4633
|
+
size: siteConfig.pointsOfInterestConfig.placeMarkerSize
|
|
4634
|
+
}
|
|
4635
|
+
},
|
|
4636
|
+
showMap: siteConfig.showMap,
|
|
4637
|
+
fieldsShown: siteConfig.fieldsShown,
|
|
4638
|
+
specialFeatures: siteConfig.specialFeatures,
|
|
4639
|
+
fieldNames: siteConfig.fieldNames,
|
|
4640
|
+
placeMappings: (_siteConfig$pointsOfI2 = siteConfig.pointsOfInterestConfig.placeMappings) !== null && _siteConfig$pointsOfI2 !== void 0 ? _siteConfig$pointsOfI2 : {}
|
|
4641
|
+
})))));
|
|
4642
|
+
};
|
|
4643
|
+
|
|
4644
|
+
export { HireControlMap, HireControlMap as default };
|