PluginProbe
Image Hub – Free Images from Unsplash, Pixabay, Pexels, Openverse & Giphy / trunk
Image Hub – Free Images from Unsplash, Pixabay, Pexels, Openverse & Giphy vtrunk
1.2.0 trunk 1.0.11 1.0.8 1.0.9 1.1.0
image-hub / build / admin.js

admin.js in Image Hub – Free Images from Unsplash, Pixabay, Pexels, Openverse & Giphy trunk, at build/admin.js

2,415 lines 111.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /******/ (() => { // webpackBootstrap
2 /******/ var __webpack_modules__ = ({
3
4 /***/ 338:
5 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
6
7 "use strict";
8 var __webpack_unused_export__;
9
10
11 var m = __webpack_require__(795);
12 if (true) {
13 exports.H = m.createRoot;
14 __webpack_unused_export__ = m.hydrateRoot;
15 } else { var i; }
16
17
18 /***/ }),
19
20 /***/ 521:
21 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
22
23 var __webpack_unused_export__;
24 "use client"
25
26
27 function ___$insertStyle(css) {
28 if (!css || typeof window === 'undefined') {
29 return;
30 }
31 const style = document.createElement('style');
32 style.setAttribute('type', 'text/css');
33 style.innerHTML = css;
34 document.head.appendChild(style);
35 return css;
36 }
37
38 __webpack_unused_export__ = ({ value: true });
39
40 var React = __webpack_require__(609);
41
42 function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
43
44 var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
45
46 ___$insertStyle(".rfm-marquee-container {\n overflow-x: hidden;\n display: flex;\n flex-direction: row;\n position: relative;\n width: var(--width);\n transform: var(--transform);\n}\n.rfm-marquee-container:hover div {\n animation-play-state: var(--pause-on-hover);\n}\n.rfm-marquee-container:active div {\n animation-play-state: var(--pause-on-click);\n}\n\n.rfm-overlay {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n.rfm-overlay::before, .rfm-overlay::after {\n background: linear-gradient(to right, var(--gradient-color), rgba(255, 255, 255, 0));\n content: \"\";\n height: 100%;\n position: absolute;\n width: var(--gradient-width);\n z-index: 2;\n pointer-events: none;\n touch-action: none;\n}\n.rfm-overlay::after {\n right: 0;\n top: 0;\n transform: rotateZ(180deg);\n}\n.rfm-overlay::before {\n left: 0;\n top: 0;\n}\n\n.rfm-marquee {\n flex: 0 0 auto;\n min-width: var(--min-width);\n z-index: 1;\n display: flex;\n flex-direction: row;\n align-items: center;\n animation: scroll var(--duration) linear var(--delay) var(--iteration-count);\n animation-play-state: var(--play);\n animation-delay: var(--delay);\n animation-direction: var(--direction);\n}\n@keyframes scroll {\n 0% {\n transform: translateX(0%);\n }\n 100% {\n transform: translateX(-100%);\n }\n}\n\n.rfm-initial-child-container {\n flex: 0 0 auto;\n display: flex;\n min-width: auto;\n flex-direction: row;\n align-items: center;\n}\n\n.rfm-child {\n transform: var(--transform);\n}");
47
48 const Marquee = React.forwardRef(function Marquee({ style = {}, className = "", autoFill = false, play = true, pauseOnHover = false, pauseOnClick = false, direction = "left", speed = 50, delay = 0, loop = 0, gradient = false, gradientColor = "white", gradientWidth = 200, onFinish, onCycleComplete, onMount, children, }, ref) {
49 // React Hooks
50 const [containerWidth, setContainerWidth] = React.useState(0);
51 const [marqueeWidth, setMarqueeWidth] = React.useState(0);
52 const [multiplier, setMultiplier] = React.useState(1);
53 const [isMounted, setIsMounted] = React.useState(false);
54 const rootRef = React.useRef(null);
55 const containerRef = ref || rootRef;
56 const marqueeRef = React.useRef(null);
57 // Calculate width of container and marquee and set multiplier
58 const calculateWidth = React.useCallback(() => {
59 if (marqueeRef.current && containerRef.current) {
60 const containerRect = containerRef.current.getBoundingClientRect();
61 const marqueeRect = marqueeRef.current.getBoundingClientRect();
62 let containerWidth = containerRect.width;
63 let marqueeWidth = marqueeRect.width;
64 // Swap width and height if direction is up or down
65 if (direction === "up" || direction === "down") {
66 containerWidth = containerRect.height;
67 marqueeWidth = marqueeRect.height;
68 }
69 if (autoFill && containerWidth && marqueeWidth) {
70 setMultiplier(marqueeWidth < containerWidth
71 ? Math.ceil(containerWidth / marqueeWidth)
72 : 1);
73 }
74 else {
75 setMultiplier(1);
76 }
77 setContainerWidth(containerWidth);
78 setMarqueeWidth(marqueeWidth);
79 }
80 }, [autoFill, containerRef, direction]);
81 // Calculate width and multiplier on mount and on window resize
82 React.useEffect(() => {
83 if (!isMounted)
84 return;
85 calculateWidth();
86 if (marqueeRef.current && containerRef.current) {
87 const resizeObserver = new ResizeObserver(() => calculateWidth());
88 resizeObserver.observe(containerRef.current);
89 resizeObserver.observe(marqueeRef.current);
90 return () => {
91 if (!resizeObserver)
92 return;
93 resizeObserver.disconnect();
94 };
95 }
96 }, [calculateWidth, containerRef, isMounted]);
97 // Recalculate width when children change
98 React.useEffect(() => {
99 calculateWidth();
100 }, [calculateWidth, children]);
101 React.useEffect(() => {
102 setIsMounted(true);
103 }, []);
104 // Runs the onMount callback, if it is a function, when Marquee is mounted.
105 React.useEffect(() => {
106 if (typeof onMount === "function") {
107 onMount();
108 }
109 }, []);
110 // Animation duration
111 const duration = React.useMemo(() => {
112 if (autoFill) {
113 return (marqueeWidth * multiplier) / speed;
114 }
115 else {
116 return marqueeWidth < containerWidth
117 ? containerWidth / speed
118 : marqueeWidth / speed;
119 }
120 }, [autoFill, containerWidth, marqueeWidth, multiplier, speed]);
121 const containerStyle = React.useMemo(() => (Object.assign(Object.assign({}, style), { ["--pause-on-hover"]: !play || pauseOnHover ? "paused" : "running", ["--pause-on-click"]: !play || (pauseOnHover && !pauseOnClick) || pauseOnClick
122 ? "paused"
123 : "running", ["--width"]: direction === "up" || direction === "down" ? `100vh` : "100%", ["--transform"]: direction === "up"
124 ? "rotate(-90deg)"
125 : direction === "down"
126 ? "rotate(90deg)"
127 : "none" })), [style, play, pauseOnHover, pauseOnClick, direction]);
128 const gradientStyle = React.useMemo(() => ({
129 ["--gradient-color"]: gradientColor,
130 ["--gradient-width"]: typeof gradientWidth === "number"
131 ? `${gradientWidth}px`
132 : gradientWidth,
133 }), [gradientColor, gradientWidth]);
134 const marqueeStyle = React.useMemo(() => ({
135 ["--play"]: play ? "running" : "paused",
136 ["--direction"]: direction === "left" ? "normal" : "reverse",
137 ["--duration"]: `${duration}s`,
138 ["--delay"]: `${delay}s`,
139 ["--iteration-count"]: !!loop ? `${loop}` : "infinite",
140 ["--min-width"]: autoFill ? `auto` : "100%",
141 }), [play, direction, duration, delay, loop, autoFill]);
142 const childStyle = React.useMemo(() => ({
143 ["--transform"]: direction === "up"
144 ? "rotate(90deg)"
145 : direction === "down"
146 ? "rotate(-90deg)"
147 : "none",
148 }), [direction]);
149 // Render {multiplier} number of children
150 const multiplyChildren = React.useCallback((multiplier) => {
151 return [
152 ...Array(Number.isFinite(multiplier) && multiplier >= 0 ? multiplier : 0),
153 ].map((_, i) => (React__default['default'].createElement(React.Fragment, { key: i }, React.Children.map(children, (child) => {
154 return (React__default['default'].createElement("div", { style: childStyle, className: "rfm-child" }, child));
155 }))));
156 }, [childStyle, children]);
157 return !isMounted ? null : (React__default['default'].createElement("div", { ref: containerRef, style: containerStyle, className: "rfm-marquee-container " + className },
158 gradient && React__default['default'].createElement("div", { style: gradientStyle, className: "rfm-overlay" }),
159 React__default['default'].createElement("div", { className: "rfm-marquee", style: marqueeStyle, onAnimationIteration: onCycleComplete, onAnimationEnd: onFinish },
160 React__default['default'].createElement("div", { className: "rfm-initial-child-container", ref: marqueeRef }, React.Children.map(children, (child) => {
161 return (React__default['default'].createElement("div", { style: childStyle, className: "rfm-child" }, child));
162 })),
163 multiplyChildren(multiplier - 1)),
164 React__default['default'].createElement("div", { className: "rfm-marquee", style: marqueeStyle }, multiplyChildren(multiplier))));
165 });
166
167 exports.A = Marquee;
168 //# sourceMappingURL=index.js.map
169
170
171 /***/ }),
172
173 /***/ 609:
174 /***/ ((module) => {
175
176 "use strict";
177 module.exports = window["React"];
178
179 /***/ }),
180
181 /***/ 795:
182 /***/ ((module) => {
183
184 "use strict";
185 module.exports = window["ReactDOM"];
186
187 /***/ })
188
189 /******/ });
190 /************************************************************************/
191 /******/ // The module cache
192 /******/ var __webpack_module_cache__ = {};
193 /******/
194 /******/ // The require function
195 /******/ function __webpack_require__(moduleId) {
196 /******/ // Check if module is in cache
197 /******/ var cachedModule = __webpack_module_cache__[moduleId];
198 /******/ if (cachedModule !== undefined) {
199 /******/ return cachedModule.exports;
200 /******/ }
201 /******/ // Create a new module (and put it into the cache)
202 /******/ var module = __webpack_module_cache__[moduleId] = {
203 /******/ // no module.id needed
204 /******/ // no module.loaded needed
205 /******/ exports: {}
206 /******/ };
207 /******/
208 /******/ // Execute the module function
209 /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
210 /******/
211 /******/ // Return the exports of the module
212 /******/ return module.exports;
213 /******/ }
214 /******/
215 /************************************************************************/
216 /******/ /* webpack/runtime/compat get default export */
217 /******/ (() => {
218 /******/ // getDefaultExport function for compatibility with non-harmony modules
219 /******/ __webpack_require__.n = (module) => {
220 /******/ var getter = module && module.__esModule ?
221 /******/ () => (module['default']) :
222 /******/ () => (module);
223 /******/ __webpack_require__.d(getter, { a: getter });
224 /******/ return getter;
225 /******/ };
226 /******/ })();
227 /******/
228 /******/ /* webpack/runtime/define property getters */
229 /******/ (() => {
230 /******/ // define getter functions for harmony exports
231 /******/ __webpack_require__.d = (exports, definition) => {
232 /******/ for(var key in definition) {
233 /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
234 /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
235 /******/ }
236 /******/ }
237 /******/ };
238 /******/ })();
239 /******/
240 /******/ /* webpack/runtime/hasOwnProperty shorthand */
241 /******/ (() => {
242 /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
243 /******/ })();
244 /******/
245 /************************************************************************/
246 var __webpack_exports__ = {};
247 // This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
248 (() => {
249 "use strict";
250
251 // EXTERNAL MODULE: external "React"
252 var external_React_ = __webpack_require__(609);
253 var external_React_default = /*#__PURE__*/__webpack_require__.n(external_React_);
254 // EXTERNAL MODULE: ./node_modules/react-dom/client.js
255 var client = __webpack_require__(338);
256 ;// external ["wp","components"]
257 const external_wp_components_namespaceObject = window["wp"]["components"];
258 ;// external ["wp","element"]
259 const external_wp_element_namespaceObject = window["wp"]["element"];
260 ;// external ["wp","primitives"]
261 const external_wp_primitives_namespaceObject = window["wp"]["primitives"];
262 ;// external "ReactJSXRuntime"
263 const external_ReactJSXRuntime_namespaceObject = window["ReactJSXRuntime"];
264 ;// ./node_modules/@wordpress/icons/build-module/library/cog.js
265 /**
266 * WordPress dependencies
267 */
268
269
270 const cog = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
271 xmlns: "http://www.w3.org/2000/svg",
272 viewBox: "0 0 24 24",
273 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
274 fillRule: "evenodd",
275 d: "M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z",
276 clipRule: "evenodd"
277 })
278 });
279 /* harmony default export */ const library_cog = (cog);
280 //# sourceMappingURL=cog.js.map
281 ;// ./src/components/Logo.js
282 var _image_hub_data, _image_hub_data2;
283
284
285 var logoUrl = (_image_hub_data = image_hub_data) === null || _image_hub_data === void 0 ? void 0 : _image_hub_data.imageUrl;
286 var version = (_image_hub_data2 = image_hub_data) === null || _image_hub_data2 === void 0 ? void 0 : _image_hub_data2.version;
287 var Logo = function Logo() {
288 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
289 _ref$enableBrowseButt = _ref.enableBrowseButton,
290 enableBrowseButton = _ref$enableBrowseButt === void 0 ? false : _ref$enableBrowseButt,
291 _ref$enableSettingsBu = _ref.enableSettingsButton,
292 enableSettingsButton = _ref$enableSettingsBu === void 0 ? false : _ref$enableSettingsBu;
293 var handleRedirect = function handleRedirect() {
294 var _image_hub_data3;
295 var adminUrl = ((_image_hub_data3 = image_hub_data) === null || _image_hub_data3 === void 0 ? void 0 : _image_hub_data3.adminUrl) || "/wp-admin/";
296 window.location.assign("".concat(adminUrl, "upload.php?page=image-hub-media-tab"));
297 };
298 var handleRedirectSettings = function handleRedirectSettings() {
299 var _image_hub_data4;
300 var adminUrl = ((_image_hub_data4 = image_hub_data) === null || _image_hub_data4 === void 0 ? void 0 : _image_hub_data4.adminUrl) || "/wp-admin/";
301 window.location.assign("".concat(adminUrl, "options-general.php?page=image-hub-settings-page"));
302 };
303 return /*#__PURE__*/React.createElement("div", {
304 style: {
305 display: "flex",
306 justifyContent: "space-between",
307 paddingRight: "20px"
308 }
309 }, /*#__PURE__*/React.createElement("div", {
310 className: "image-hub-logo-container"
311 }, /*#__PURE__*/React.createElement("div", {
312 className: "image-hub-logo"
313 }, /*#__PURE__*/React.createElement("img", {
314 src: logoUrl,
315 alt: "Plugin Logo"
316 })), /*#__PURE__*/React.createElement("div", {
317 className: "image-hub-logo-text"
318 }, /*#__PURE__*/React.createElement("h1", null, "Image Hub"))), !!enableBrowseButton && /*#__PURE__*/React.createElement(external_wp_components_namespaceObject.Button, {
319 variant: "primary",
320 onClick: handleRedirect
321 }, "Browse Images"), !!enableSettingsButton && /*#__PURE__*/React.createElement(external_wp_components_namespaceObject.Button, {
322 icon: library_cog,
323 style: {
324 background: "white"
325 },
326 variant: "secondary",
327 onClick: handleRedirectSettings
328 }, "Settings"));
329 };
330 /* harmony default export */ const components_Logo = (Logo);
331 ;// external ["wp","i18n"]
332 const external_wp_i18n_namespaceObject = window["wp"]["i18n"];
333 ;// ./src/components/AppHeader.js
334 function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
335 function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
336 function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
337 function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
338 function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
339 function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
340
341
342 var AppHeader = function AppHeader() {
343 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
344 _ref$enableBrowseButt = _ref.enableBrowseButton,
345 enableBrowseButton = _ref$enableBrowseButt === void 0 ? false : _ref$enableBrowseButt,
346 _ref$enableSettingsBu = _ref.enableSettingsButton,
347 enableSettingsButton = _ref$enableSettingsBu === void 0 ? false : _ref$enableSettingsBu,
348 _ref$style = _ref.style,
349 style = _ref$style === void 0 ? {} : _ref$style;
350 return /*#__PURE__*/React.createElement("div", {
351 style: _objectSpread({
352 paddingTop: "20px",
353 paddingLeft: "20px"
354 }, style)
355 }, /*#__PURE__*/React.createElement(components_Logo, {
356 enableBrowseButton: enableBrowseButton,
357 enableSettingsButton: enableSettingsButton
358 }), /*#__PURE__*/React.createElement("p", {
359 style: {
360 marginBottom: 0
361 },
362 className: "image-hub-text-under-logo"
363 }, (0,external_wp_i18n_namespaceObject.__)("Search and insert images from", "image-hub"), " ", /*#__PURE__*/React.createElement("a", {
364 href: "https://unsplash.com",
365 target: "_blank",
366 className: "provider"
367 }, "Unsplash"), ",", " ", /*#__PURE__*/React.createElement("a", {
368 href: "https://openverse.org",
369 target: "_blank",
370 className: "provider"
371 }, "Openverse"), ",", " ", /*#__PURE__*/React.createElement("a", {
372 href: "https://pixabay.com",
373 target: "_blank",
374 className: "provider"
375 }, "Pixabay"), ",", " ", /*#__PURE__*/React.createElement("a", {
376 href: "https://giphy.com",
377 target: "_blank",
378 className: "provider"
379 }, "Giphy"), ",", " ", /*#__PURE__*/React.createElement("a", {
380 href: "https://pexels.com",
381 target: "_blank",
382 className: "provider"
383 }, "Pexels"), " ", (0,external_wp_i18n_namespaceObject.__)(" directly in WordPress. No need to visit external websites—find, preview, and")), /*#__PURE__*/React.createElement("p", {
384 style: {
385 marginTop: 0
386 },
387 className: "image-hub-text-under-logo"
388 }, (0,external_wp_i18n_namespaceObject.__)("download images straight from the media library or editor.")));
389 };
390 ;// ./node_modules/@wordpress/icons/build-module/library/external.js
391 /**
392 * WordPress dependencies
393 */
394
395
396 const external = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
397 xmlns: "http://www.w3.org/2000/svg",
398 viewBox: "0 0 24 24",
399 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
400 d: "M19.5 4.5h-7V6h4.44l-5.97 5.97 1.06 1.06L18 7.06v4.44h1.5v-7Zm-13 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-3H17v3a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h3V5.5h-3Z"
401 })
402 });
403 /* harmony default export */ const library_external = (external);
404 //# sourceMappingURL=external.js.map
405 ;// ./node_modules/@wordpress/icons/build-module/library/check.js
406 /**
407 * WordPress dependencies
408 */
409
410
411 const check = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
412 xmlns: "http://www.w3.org/2000/svg",
413 viewBox: "0 0 24 24",
414 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
415 d: "M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"
416 })
417 });
418 /* harmony default export */ const library_check = (check);
419 //# sourceMappingURL=check.js.map
420 ;// ./node_modules/@wordpress/icons/build-module/library/download.js
421 /**
422 * WordPress dependencies
423 */
424
425
426 const download = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
427 xmlns: "http://www.w3.org/2000/svg",
428 viewBox: "0 0 24 24",
429 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
430 d: "M18 11.3l-1-1.1-4 4V3h-1.5v11.3L7 10.2l-1 1.1 6.2 5.8 5.8-5.8zm.5 3.7v3.5h-13V15H4v5h16v-5h-1.5z"
431 })
432 });
433 /* harmony default export */ const library_download = (download);
434 //# sourceMappingURL=download.js.map
435 ;// ./node_modules/@wordpress/icons/build-module/library/close.js
436 /**
437 * WordPress dependencies
438 */
439
440
441 const close_close = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
442 xmlns: "http://www.w3.org/2000/svg",
443 viewBox: "0 0 24 24",
444 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
445 d: "m13.06 12 6.47-6.47-1.06-1.06L12 10.94 5.53 4.47 4.47 5.53 10.94 12l-6.47 6.47 1.06 1.06L12 13.06l6.47 6.47 1.06-1.06L13.06 12Z"
446 })
447 });
448 /* harmony default export */ const library_close = (close_close);
449 //# sourceMappingURL=close.js.map
450 ;// ./node_modules/react-responsive-masonry/es/Masonry/index.js
451 function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
452
453 function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
454
455 function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
456
457
458
459
460 var Masonry = /*#__PURE__*/function (_React$Component) {
461 _inheritsLoose(Masonry, _React$Component);
462
463 function Masonry() {
464 var _this;
465
466 _this = _React$Component.call(this) || this;
467 _this.state = {
468 columns: [],
469 childRefs: [],
470 hasDistributed: false
471 };
472 return _this;
473 }
474
475 var _proto = Masonry.prototype;
476
477 _proto.componentDidUpdate = function componentDidUpdate() {
478 if (!this.state.hasDistributed && !this.props.sequential) this.distributeChildren();
479 };
480
481 Masonry.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {
482 var children = props.children,
483 columnsCount = props.columnsCount;
484 var hasColumnsChanged = columnsCount !== state.columns.length;
485 if (state && children === state.children && !hasColumnsChanged) return null;
486 return _extends({}, Masonry.getEqualCountColumns(children, columnsCount), {
487 children: children,
488 hasDistributed: false
489 });
490 };
491
492 _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {
493 return nextProps.children !== this.state.children || nextProps.columnsCount !== this.props.columnsCount;
494 };
495
496 _proto.distributeChildren = function distributeChildren() {
497 var _this2 = this;
498
499 var _this$props = this.props,
500 children = _this$props.children,
501 columnsCount = _this$props.columnsCount;
502 var columnHeights = Array(columnsCount).fill(0);
503 var isReady = this.state.childRefs.every(function (ref) {
504 return ref.current.getBoundingClientRect().height;
505 });
506 if (!isReady) return;
507 var columns = Array.from({
508 length: columnsCount
509 }, function () {
510 return [];
511 });
512 var validIndex = 0;
513 external_React_default().Children.forEach(children, function (child) {
514 if (child && external_React_default().isValidElement(child)) {
515 // .current is undefined if ref was passed to a functional component without forwardRef
516 // now passing ref into a wrapper div so it should always be defined
517 var childHeight = _this2.state.childRefs[validIndex].current.getBoundingClientRect().height;
518
519 var minHeightColumnIndex = columnHeights.indexOf(Math.min.apply(Math, columnHeights));
520 columnHeights[minHeightColumnIndex] += childHeight;
521 columns[minHeightColumnIndex].push(child);
522 validIndex++;
523 }
524 });
525 this.setState(function (p) {
526 return _extends({}, p, {
527 columns: columns,
528 hasDistributed: true
529 });
530 });
531 };
532
533 Masonry.getEqualCountColumns = function getEqualCountColumns(children, columnsCount) {
534 var columns = Array.from({
535 length: columnsCount
536 }, function () {
537 return [];
538 });
539 var validIndex = 0;
540 var childRefs = [];
541 external_React_default().Children.forEach(children, function (child) {
542 if (child && external_React_default().isValidElement(child)) {
543 var ref = external_React_default().createRef();
544 childRefs.push(ref);
545 columns[validIndex % columnsCount].push( /*#__PURE__*/external_React_default().createElement("div", {
546 style: {
547 display: "flex",
548 justifyContent: "stretch"
549 },
550 key: validIndex,
551 ref: ref
552 }, child) // React.cloneElement(child, {ref}) // cannot attach refs to functional components without forwardRef
553 );
554 validIndex++;
555 }
556 });
557 return {
558 columns: columns,
559 childRefs: childRefs
560 };
561 };
562
563 _proto.renderColumns = function renderColumns() {
564 var _this$props2 = this.props,
565 gutter = _this$props2.gutter,
566 itemTag = _this$props2.itemTag,
567 itemStyle = _this$props2.itemStyle;
568 return this.state.columns.map(function (column, i) {
569 return external_React_default().createElement(itemTag, {
570 key: i,
571 style: _extends({
572 display: "flex",
573 flexDirection: "column",
574 justifyContent: "flex-start",
575 alignContent: "stretch",
576 flex: 1,
577 width: 0,
578 gap: gutter
579 }, itemStyle)
580 }, column.map(function (item) {
581 return item;
582 }));
583 });
584 };
585
586 _proto.render = function render() {
587 var _this$props3 = this.props,
588 gutter = _this$props3.gutter,
589 className = _this$props3.className,
590 style = _this$props3.style,
591 containerTag = _this$props3.containerTag;
592 return external_React_default().createElement(containerTag, {
593 style: _extends({
594 display: "flex",
595 flexDirection: "row",
596 justifyContent: "center",
597 alignContent: "stretch",
598 boxSizing: "border-box",
599 width: "100%",
600 gap: gutter
601 }, style),
602 className: className
603 }, this.renderColumns());
604 };
605
606 return Masonry;
607 }((external_React_default()).Component);
608
609 Masonry.propTypes = false ? 0 : {};
610 Masonry.defaultProps = {
611 columnsCount: 3,
612 gutter: "0",
613 className: null,
614 style: {},
615 containerTag: "div",
616 itemTag: "div",
617 itemStyle: {},
618 sequential: false
619 };
620 /* harmony default export */ const es_Masonry = (Masonry);
621 ;// ./node_modules/react-responsive-masonry/es/ResponsiveMasonry/index.js
622
623
624 var DEFAULT_COLUMNS_COUNT = 1;
625 var DEFAULT_GUTTER = "10px";
626 var useIsomorphicLayoutEffect = typeof window !== "undefined" ? external_React_.useLayoutEffect : external_React_.useEffect;
627
628 var useHasMounted = function useHasMounted() {
629 var _useState = (0,external_React_.useState)(false),
630 hasMounted = _useState[0],
631 setHasMounted = _useState[1];
632
633 useIsomorphicLayoutEffect(function () {
634 setHasMounted(true);
635 }, []);
636 return hasMounted;
637 };
638
639 var useWindowWidth = function useWindowWidth() {
640 var hasMounted = useHasMounted();
641
642 var _useState2 = (0,external_React_.useState)(typeof window !== "undefined" ? window.innerWidth : 0),
643 width = _useState2[0],
644 setWidth = _useState2[1];
645
646 var handleResize = (0,external_React_.useCallback)(function () {
647 if (!hasMounted) return;
648 setWidth(window.innerWidth);
649 }, [hasMounted]);
650 useIsomorphicLayoutEffect(function () {
651 if (hasMounted) {
652 window.addEventListener("resize", handleResize);
653 handleResize();
654 return function () {
655 return window.removeEventListener("resize", handleResize);
656 };
657 }
658 }, [hasMounted, handleResize]);
659 return width;
660 };
661
662 var MasonryResponsive = function MasonryResponsive(_ref) {
663 var _ref$columnsCountBrea = _ref.columnsCountBreakPoints,
664 columnsCountBreakPoints = _ref$columnsCountBrea === void 0 ? {
665 350: 1,
666 750: 2,
667 900: 3
668 } : _ref$columnsCountBrea,
669 _ref$gutterBreakPoint = _ref.gutterBreakPoints,
670 gutterBreakPoints = _ref$gutterBreakPoint === void 0 ? {} : _ref$gutterBreakPoint,
671 children = _ref.children,
672 _ref$className = _ref.className,
673 className = _ref$className === void 0 ? null : _ref$className,
674 _ref$style = _ref.style,
675 style = _ref$style === void 0 ? null : _ref$style;
676 var windowWidth = useWindowWidth();
677 var getResponsiveValue = (0,external_React_.useCallback)(function (breakPoints, defaultValue) {
678 var sortedBreakPoints = Object.keys(breakPoints).sort(function (a, b) {
679 return a - b;
680 });
681 var value = sortedBreakPoints.length > 0 ? breakPoints[sortedBreakPoints[0]] : defaultValue;
682 sortedBreakPoints.forEach(function (breakPoint) {
683 if (breakPoint < windowWidth) {
684 value = breakPoints[breakPoint];
685 }
686 });
687 return value;
688 }, [windowWidth]);
689 var columnsCount = (0,external_React_.useMemo)(function () {
690 return getResponsiveValue(columnsCountBreakPoints, DEFAULT_COLUMNS_COUNT);
691 }, [getResponsiveValue, columnsCountBreakPoints]);
692 var gutter = (0,external_React_.useMemo)(function () {
693 return getResponsiveValue(gutterBreakPoints, DEFAULT_GUTTER);
694 }, [getResponsiveValue, gutterBreakPoints]);
695 return /*#__PURE__*/external_React_default().createElement("div", {
696 className: className,
697 style: style
698 }, external_React_default().Children.map(children, function (child, index) {
699 return external_React_default().cloneElement(child, {
700 key: index,
701 columnsCount: columnsCount,
702 gutter: gutter
703 });
704 }));
705 };
706
707 MasonryResponsive.propTypes = false ? 0 : {};
708 /* harmony default export */ const ResponsiveMasonry = (MasonryResponsive);
709 ;// ./node_modules/react-responsive-masonry/es/index.js
710
711
712 /* harmony default export */ const es = (es_Masonry);
713
714 ;// ./src/context/useSettings.js
715
716 var __settings = image_hub_settings;
717 var getImageHubSettings = function getImageHubSettings() {
718 var imageHubSettings = (0,external_React_.useMemo)(function () {
719 return {
720 image_hub_api_keys_giphy_api_key: __settings.image_hub_api_keys_giphy_api_key,
721 image_hub_api_keys_openverse_client_id: __settings.image_hub_api_keys_openverse_client_id,
722 image_hub_api_keys_openverse_client_secret: __settings.image_hub_api_keys_openverse_client_secret,
723 image_hub_api_keys_pexels_api_key: __settings.image_hub_api_keys_pexels_api_key,
724 image_hub_api_keys_pixabay_api_key: __settings.image_hub_api_keys_pixabay_api_key,
725 image_hub_api_keys_unsplash_access_key: __settings.image_hub_api_keys_unsplash_access_key,
726 image_hub_enable_giphy: __settings.image_hub_enable_giphy === "1",
727 image_hub_enable_image_attribution: __settings.image_hub_enable_image_attribution === "1",
728 image_hub_enable_media_modal: __settings.image_hub_enable_media_modal === "1",
729 image_hub_enable_openverse: __settings.image_hub_enable_openverse === "1",
730 image_hub_enable_pexels: __settings.image_hub_enable_pexels === "1",
731 image_hub_enable_pixabay: __settings.image_hub_enable_pixabay === "1",
732 image_hub_enable_unsplash: __settings.image_hub_enable_unsplash === "1",
733 image_hub_use_default_keys: __settings.image_hub_use_default_keys === "1",
734 image_hub_max_image_height: parseInt(__settings.image_hub_max_image_height, 10),
735 image_hub_max_image_width: parseInt(__settings.image_hub_max_image_width, 10)
736 };
737 }, [__settings]);
738 var apiKeys = (0,external_React_.useMemo)(function () {
739 return {
740 giphy_api_key: __settings.image_hub_api_keys_giphy_api_key,
741 openverse_client_id: __settings.image_hub_api_keys_openverse_client_id,
742 openverse_client_secret: __settings.image_hub_api_keys_openverse_client_secret,
743 pexels_api_key: __settings.image_hub_api_keys_pexels_api_key,
744 pixabay_api_key: __settings.image_hub_api_keys_pixabay_api_key,
745 unsplash_access_key: __settings.image_hub_api_keys_unsplash_access_key,
746 image_hub_use_default_keys: __settings.image_hub_use_default_keys === "1"
747 };
748 }, [__settings]);
749 return {
750 imageHubSettings: imageHubSettings,
751 apiKeys: apiKeys,
752 isLoading: false
753 };
754 };
755 ;// ./src/helpers.js
756 /**
757 * Get API key(s) from WordPress settings based on provider name
758 *
759 * @param {string} [providerName] - The name of the provider (unsplash, pexels, giphy, pixabay, openverse)
760 * @returns {Promise<Object|string[]|false>} A promise that resolves to an object of API keys, an array of keys for a specific provider, or false if not found
761 */
762
763 var PROVIDERQUERY = {
764 PIXABAY: {
765 searchTerm: {
766 name: "q"
767 },
768 type: {
769 name: "type",
770 acc_values: ["all", "photo", "illustration", "vector"],
771 "default": "all"
772 },
773 category: {
774 name: "category",
775 acc_values: ["backgrounds", "fashion", "nature", "science", "education", "feelings", "health", "people", "religion", "places", "animals", "industry", "computer", "food", "sports", "transportation", "travel", "buildings", "business", "music"]
776 },
777 orientation: {
778 name: "orientation",
779 acc_values: ["all", "horizontal", "vertical"],
780 "default": "all"
781 },
782 color: {
783 name: "colors",
784 acc_values: ["grayscale", "transparent", "red", "orange", "yellow", "green", "turquoise", "blue", "lilac", "pink", "white", "gray", "black", "brown"]
785 },
786 min_height: {
787 name: "min_height",
788 "default": 0
789 },
790 min_width: {
791 name: "min_width",
792 "default": 0
793 }
794 },
795 PEXELS: {
796 searchTerm: {
797 name: "query"
798 },
799 orientation: {
800 name: "orientation",
801 acc_values: ["landscape", "portrait", "square"]
802 },
803 color: {
804 name: "color",
805 acc_values: ["red", "orange", "yellow", "green", "turquoise", "blue", "violet", "pink", "brown", "black", "gray", "white"]
806 },
807 size: {
808 name: "size",
809 acc_values: ["large", "medium", "small"]
810 }
811 },
812 GIPHY: {
813 searchTerm: {
814 name: "q"
815 }
816 },
817 OPENVERSE: {
818 searchTerm: {
819 name: "q"
820 },
821 extension: {
822 name: "extension",
823 acc_values: ["JPG", "JPEG", "PNG", "GIF"]
824 },
825 orientation: {
826 name: "aspect_ratio",
827 acc_values: ["square", "wide", "tall"]
828 },
829 size: {
830 name: "size",
831 acc_values: ["large", "medium", "small"]
832 },
833 category: {
834 name: "category",
835 acc_values: ["digitized_artwork", "illustration", "photograph"]
836 },
837 license_type: {
838 name: "license_type",
839 acc_values: ["all", "all-cc", "commercial", "modification"],
840 values_labels: ["All", "All CC", "Commercial", "Modification"]
841 },
842 license: {
843 name: "license",
844 acc_values: ["cc0", "by", "by-sa", "by-nd", "by-nc", "by-nc-sa", "by-nc-nd"],
845 values_labels: ["CC0", "CC BY", "CC BY-SA", "CC BY-ND", "CC BY-NC", "CC BY-NC-SA", "CC BY-NC-ND"]
846 }
847 },
848 UNSPLASH: {
849 searchTerm: {
850 name: "query"
851 },
852 orientation: {
853 name: "orientation",
854 acc_values: ["landscape", "portrait", "squarish"],
855 "default": "all"
856 },
857 color: {
858 name: "color",
859 acc_values: ["black_and_white", "black", "white", "yellow", "orange", "red", "purple", "magenta", "green", "teal", "blue"]
860 }
861 }
862 };
863 var UnsplashIconURL = image_hub_data.unsplashLogoUrl;
864 var OpenverseIconURL = image_hub_data.openverseLogoUrl;
865 var GiphyIconURL = image_hub_data.giphyLogoUrl;
866 var PexelsIconURL = image_hub_data.pexelsLogoUrl;
867 var PixabayIconURL = image_hub_data.pixabayLogoUrl;
868 var TransparentBG = image_hub_data.transparentBG;
869 var PROVIDERS = {
870 All: {
871 name: "All",
872 icon: null,
873 enabled: false
874 },
875 PEXELS: {
876 name: "pexels",
877 icon: PexelsIconURL,
878 enabled: false
879 },
880 UNSPLASH: {
881 name: "unsplash",
882 icon: UnsplashIconURL,
883 enabled: false
884 },
885 PIXABAY: {
886 name: "pixabay",
887 icon: PixabayIconURL,
888 enabled: false
889 },
890 OPENVERSE: {
891 name: "openverse",
892 icon: OpenverseIconURL,
893 enabled: false
894 },
895 GIPHY: {
896 name: "giphy",
897 icon: GiphyIconURL,
898 enabled: false
899 }
900 };
901 var ucfirst = function ucfirst(str) {
902 if (!str) return '';
903 return str.charAt(0).toUpperCase() + str.slice(1);
904 };
905 ;// ./src/context/ImageContext.js
906 function ImageContext_typeof(o) { "@babel/helpers - typeof"; return ImageContext_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, ImageContext_typeof(o); }
907 function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
908 function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
909 function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
910 function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
911 function ImageContext_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
912 function ImageContext_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ImageContext_ownKeys(Object(t), !0).forEach(function (r) { ImageContext_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ImageContext_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
913 function ImageContext_defineProperty(e, r, t) { return (r = ImageContext_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
914 function ImageContext_toPropertyKey(t) { var i = ImageContext_toPrimitive(t, "string"); return "symbol" == ImageContext_typeof(i) ? i : i + ""; }
915 function ImageContext_toPrimitive(t, r) { if ("object" != ImageContext_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != ImageContext_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
916 function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
917 function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
918 function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
919 function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
920 function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
921 function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
922
923
924
925 var server_url = image_hub_data.server_url;
926 var PER_PAGE = 30;
927 var defaultPagination = {
928 currentPage: 1,
929 totalPages: 1,
930 totalResults: 0,
931 hasNextPage: false,
932 nextPage: false
933 };
934 var ImageContext = (0,external_wp_element_namespaceObject.createContext)();
935 var ImageProvider = function ImageProvider(_ref) {
936 var children = _ref.children;
937 var _useState = (0,external_wp_element_namespaceObject.useState)([]),
938 _useState2 = _slicedToArray(_useState, 2),
939 images = _useState2[0],
940 setImages = _useState2[1];
941 var _useState3 = (0,external_wp_element_namespaceObject.useState)(""),
942 _useState4 = _slicedToArray(_useState3, 2),
943 searchTerm = _useState4[0],
944 setSearchTerm = _useState4[1];
945 var _useState5 = (0,external_wp_element_namespaceObject.useState)(""),
946 _useState6 = _slicedToArray(_useState5, 2),
947 lastSearchTerm = _useState6[0],
948 setLastSearchTerm = _useState6[1];
949 var _useState7 = (0,external_wp_element_namespaceObject.useState)("All"),
950 _useState8 = _slicedToArray(_useState7, 2),
951 provider = _useState8[0],
952 setProvider = _useState8[1]; // Set initial provider to "All"
953 var _useState9 = (0,external_wp_element_namespaceObject.useState)("All"),
954 _useState10 = _slicedToArray(_useState9, 2),
955 errors = _useState10[0],
956 setErrors = _useState10[1];
957 var _useState11 = (0,external_wp_element_namespaceObject.useState)({}),
958 _useState12 = _slicedToArray(_useState11, 2),
959 additionalQueryParams = _useState12[0],
960 setAdditionalQueryParams = _useState12[1];
961 var _useState13 = (0,external_wp_element_namespaceObject.useState)(defaultPagination),
962 _useState14 = _slicedToArray(_useState13, 2),
963 pagination = _useState14[0],
964 setPagination = _useState14[1];
965 var _useState15 = (0,external_wp_element_namespaceObject.useState)(true),
966 _useState16 = _slicedToArray(_useState15, 2),
967 isLoading = _useState16[0],
968 setIsLoading = _useState16[1];
969 var _getImageHubSettings = getImageHubSettings(),
970 imageHubSettings = _getImageHubSettings.imageHubSettings,
971 apiKeys = _getImageHubSettings.apiKeys;
972 var _useState17 = (0,external_wp_element_namespaceObject.useState)(false),
973 _useState18 = _slicedToArray(_useState17, 2),
974 refresh = _useState18[0],
975 setRefresh = _useState18[1];
976 (0,external_wp_element_namespaceObject.useEffect)(function () {
977 if (images.length) {
978 sessionStorage.setItem("image_hub_session", JSON.stringify({
979 images: images,
980 searchTerm: lastSearchTerm,
981 pagination: pagination,
982 provider: provider,
983 additionalQueryParams: additionalQueryParams
984 }));
985 }
986 }, [images, searchTerm, pagination, provider, additionalQueryParams, lastSearchTerm]);
987 (0,external_wp_element_namespaceObject.useEffect)(function () {
988 var saved = sessionStorage.getItem("image_hub_session");
989 if (saved) {
990 try {
991 //dont know yet if saving all images json is correct , but keeps history consistent
992 var parsed = JSON.parse(saved);
993 if (parsed.images) setImages(parsed.images);
994 if (parsed.searchTerm) {
995 setLastSearchTerm(parsed.searchTerm);
996 setSearchTerm(parsed.searchTerm);
997 }
998 if (parsed.provider) setProvider(parsed.provider);
999 if (parsed.additionalQueryParams) setAdditionalQueryParams(parsed.additionalQueryParams);
1000 if (parsed.pagination) setPagination(parsed.pagination);
1001 setIsLoading(false);
1002 } catch (e) {
1003 console.error("Failed to parse session storage:", e);
1004 }
1005 } else {
1006 fetchImages(searchTerm === null || searchTerm === void 0 ? void 0 : searchTerm.toLowerCase(), provider, 1, true);
1007 }
1008 }, []);
1009 var removeImage = function removeImage(id) {
1010 setImages(function (prevImgs) {
1011 return prevImgs.filter(function (x) {
1012 return x.id !== id;
1013 });
1014 });
1015 setPagination(function (prevPagination) {
1016 return ImageContext_objectSpread(ImageContext_objectSpread({}, prevPagination), {}, {
1017 totalResults: prevPagination.totalResults - 1
1018 });
1019 });
1020 };
1021 var updateQueryParams = function updateQueryParams(key, value) {
1022 setAdditionalQueryParams(function (prev) {
1023 var clonn = ImageContext_objectSpread({}, prev);
1024 if (value == "All" || value == "") {
1025 setRefresh(true);
1026 delete clonn[key];
1027 } else {
1028 clonn[key] = value;
1029 }
1030 return clonn;
1031 });
1032 };
1033
1034 // Function to fetch images from the API
1035 var fetchImages = function fetchImages() {
1036 var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : searchTerm;
1037 var selectedProvider = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : provider;
1038 var page = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : pagination.currentPage;
1039 var reset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
1040 var additional_query_params = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : additionalQueryParams;
1041 setIsLoading(true);
1042 if (reset) {
1043 setPagination(defaultPagination);
1044 setImages([]);
1045 }
1046 setLastSearchTerm(query);
1047 var enabledProviders = Object.keys(PROVIDERS).filter(function (key) {
1048 return key !== "All" && imageHubSettings["image_hub_enable_".concat(PROVIDERS[key].name)];
1049 });
1050 //due to tos
1051 var enabledProvidersWithoutGiphy = enabledProviders.filter(function (x) {
1052 return x != "GIPHY";
1053 });
1054 console.log({
1055 enabledProviders: enabledProviders,
1056 enabledProvidersWithoutGiphy: enabledProvidersWithoutGiphy
1057 });
1058 var providerParam = selectedProvider === "All" ? "&provider=".concat(enabledProvidersWithoutGiphy.map(function (p) {
1059 return PROVIDERS[p].name;
1060 }).join(",")) : "&provider=".concat(selectedProvider);
1061 var additionalParams = selectedProvider !== "All" ? Object.entries(additional_query_params).map(function (_ref2) {
1062 var _ref3 = _slicedToArray(_ref2, 2),
1063 key = _ref3[0],
1064 value = _ref3[1];
1065 return "&".concat(key === null || key === void 0 ? void 0 : key.toLowerCase(), "=").concat(encodeURIComponent(value === null || value === void 0 ? void 0 : value.toLowerCase()));
1066 }).join("") : "";
1067 var apiUrl = "".concat(server_url, "/?query=").concat(encodeURIComponent(query), "&page=").concat(page, "&per_page=").concat(PER_PAGE).concat(additionalParams).concat(providerParam);
1068 var headers = {};
1069 if (!apiKeys.image_hub_use_default_keys) {
1070 Object.entries(apiKeys || {}).forEach(function (_ref4) {
1071 var _ref5 = _slicedToArray(_ref4, 2),
1072 key = _ref5[0],
1073 value = _ref5[1];
1074 if (value) {
1075 var headerKey = key.replace(/_/g, "-"); // Convert underscores to hyphens
1076 headers[headerKey] = value;
1077 }
1078 });
1079 }
1080 return fetch(apiUrl, {
1081 method: "GET",
1082 headers: headers
1083 }).then(function (response) {
1084 return response.json();
1085 }).then(function (data) {
1086 if (reset) {
1087 setPagination(defaultPagination);
1088 setImages([]);
1089 }
1090 setImages(function (x) {
1091 return [].concat(_toConsumableArray(x), _toConsumableArray(data.images || []));
1092 });
1093 setPagination(data.pagination);
1094 setIsLoading(false);
1095 setErrors(data.errors);
1096 return data.images;
1097 })["catch"](function (error) {
1098 if (reset) {
1099 setPagination(defaultPagination);
1100 setImages([]);
1101 }
1102 setErrors({
1103 All: error.message
1104 });
1105 console.error("Error fetching images:", {
1106 error: error
1107 });
1108 setIsLoading(false);
1109 return [];
1110 });
1111 };
1112
1113 // Function to handle the search
1114 var handleSearch = debounce(function (param) {
1115 fetchImages(param !== null && param !== void 0 ? param : searchTerm, provider, 1, true);
1116 }, 500);
1117 (0,external_wp_element_namespaceObject.useEffect)(function () {
1118 if (Object.keys(additionalQueryParams).length > 0 || refresh) {
1119 refresh = false;
1120 handleSearch();
1121 }
1122 }, [additionalQueryParams]);
1123 var value = {
1124 errors: errors,
1125 lastSearchTerm: lastSearchTerm,
1126 images: images,
1127 searchTerm: searchTerm,
1128 setSearchTerm: setSearchTerm,
1129 provider: provider,
1130 setProvider: setProvider,
1131 fetchImages: fetchImages,
1132 handleSearch: handleSearch,
1133 pagination: pagination,
1134 isLoading: isLoading,
1135 additionalQueryParams: additionalQueryParams,
1136 updateQueryParams: updateQueryParams,
1137 removeImage: removeImage,
1138 setAdditionalQueryParams: setAdditionalQueryParams
1139 };
1140 return /*#__PURE__*/React.createElement(ImageContext.Provider, {
1141 value: value
1142 }, children);
1143 };
1144 var useImageContext = function useImageContext() {
1145 var context = (0,external_wp_element_namespaceObject.useContext)(ImageContext);
1146 if (context === undefined) {
1147 throw new Error("useImageContext must be used within an ImageProvider");
1148 }
1149 return context;
1150 };
1151 var timeoutId;
1152 var debounce = function debounce(func, delay) {
1153 return function () {
1154 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1155 args[_key] = arguments[_key];
1156 }
1157 // Clear previous timeout
1158 if (timeoutId) {
1159 clearTimeout(timeoutId);
1160 }
1161
1162 // Set a new timeout
1163 timeoutId = setTimeout(function () {
1164 func.apply(void 0, args);
1165 }, delay);
1166 };
1167 };
1168 ;// ./src/components/Loader.js
1169
1170
1171
1172 var DownloadProgress = function DownloadProgress(_ref) {
1173 var _ref$iconSize = _ref.iconSize,
1174 iconSize = _ref$iconSize === void 0 ? 24 : _ref$iconSize,
1175 _ref$fillColor = _ref.fillColor,
1176 fillColor = _ref$fillColor === void 0 ? 'white' : _ref$fillColor,
1177 _ref$text = _ref.text,
1178 text = _ref$text === void 0 ? 'Downloading...' : _ref$text,
1179 _ref$textColor = _ref.textColor,
1180 textColor = _ref$textColor === void 0 ? 'white' : _ref$textColor,
1181 _ref$progressValue = _ref.progressValue,
1182 progressValue = _ref$progressValue === void 0 ? 50 : _ref$progressValue,
1183 _ref$barBackgroundCol = _ref.barBackgroundColor,
1184 barBackgroundColor = _ref$barBackgroundCol === void 0 ? 'grey' : _ref$barBackgroundCol,
1185 _ref$barFillColor = _ref.barFillColor,
1186 barFillColor = _ref$barFillColor === void 0 ? 'white' : _ref$barFillColor,
1187 _ref$barHeight = _ref.barHeight,
1188 barHeight = _ref$barHeight === void 0 ? '3px' : _ref$barHeight,
1189 _ref$barRadius = _ref.barRadius,
1190 barRadius = _ref$barRadius === void 0 ? '5px' : _ref$barRadius;
1191 return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(external_wp_components_namespaceObject.Icon, {
1192 size: iconSize,
1193 fill: fillColor,
1194 icon: library_download
1195 }), /*#__PURE__*/React.createElement("div", {
1196 key: "loader-container",
1197 style: {
1198 color: textColor,
1199 marginTop: '10px',
1200 lineHeight: '100%',
1201 transition: 'color 0.3s ease'
1202 }
1203 }, text), /*#__PURE__*/React.createElement("progress", {
1204 value: progressValue,
1205 max: "100",
1206 style: {
1207 marginTop: '20px',
1208 width: '80%',
1209 height: barHeight,
1210 borderRadius: barRadius,
1211 backgroundColor: barBackgroundColor,
1212 transition: 'background-color 0.3s ease, height 0.3s ease'
1213 }
1214 }));
1215 };
1216 /* harmony default export */ const Loader = (DownloadProgress);
1217 ;// ./node_modules/@wordpress/icons/build-module/library/caution-filled.js
1218 /**
1219 * WordPress dependencies
1220 */
1221
1222
1223 const cautionFilled = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
1224 xmlns: "http://www.w3.org/2000/svg",
1225 viewBox: "0 0 24 24",
1226 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
1227 d: "M12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4ZM12.75 8V13H11.25V8H12.75ZM12.75 14.5V16H11.25V14.5H12.75Z"
1228 })
1229 });
1230 /* harmony default export */ const caution_filled = (cautionFilled);
1231 //# sourceMappingURL=caution-filled.js.map
1232 // EXTERNAL MODULE: ./node_modules/react-fast-marquee/dist/index.js
1233 var dist = __webpack_require__(521);
1234 ;// ./src/components/ImageGrid.js
1235 function ImageGrid_typeof(o) { "@babel/helpers - typeof"; return ImageGrid_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, ImageGrid_typeof(o); }
1236 function ImageGrid_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1237 function ImageGrid_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ImageGrid_ownKeys(Object(t), !0).forEach(function (r) { ImageGrid_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ImageGrid_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1238 function ImageGrid_defineProperty(e, r, t) { return (r = ImageGrid_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
1239 function ImageGrid_toPropertyKey(t) { var i = ImageGrid_toPrimitive(t, "string"); return "symbol" == ImageGrid_typeof(i) ? i : i + ""; }
1240 function ImageGrid_toPrimitive(t, r) { if ("object" != ImageGrid_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != ImageGrid_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1241 function ImageGrid_slicedToArray(r, e) { return ImageGrid_arrayWithHoles(r) || ImageGrid_iterableToArrayLimit(r, e) || ImageGrid_unsupportedIterableToArray(r, e) || ImageGrid_nonIterableRest(); }
1242 function ImageGrid_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
1243 function ImageGrid_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
1244 function ImageGrid_arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1245 function ImageGrid_toConsumableArray(r) { return ImageGrid_arrayWithoutHoles(r) || ImageGrid_iterableToArray(r) || ImageGrid_unsupportedIterableToArray(r) || ImageGrid_nonIterableSpread(); }
1246 function ImageGrid_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
1247 function ImageGrid_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return ImageGrid_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? ImageGrid_arrayLikeToArray(r, a) : void 0; } }
1248 function ImageGrid_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
1249 function ImageGrid_arrayWithoutHoles(r) { if (Array.isArray(r)) return ImageGrid_arrayLikeToArray(r); }
1250 function ImageGrid_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
1251
1252
1253
1254
1255
1256
1257
1258
1259 var ajaxUrl = image_hub_data.ajaxurl;
1260 var nonce = image_hub_data.nonce;
1261 es.getEqualCountColumns = function (children, columnsCount) {
1262 var columns = Array.from({
1263 length: columnsCount
1264 }, function () {
1265 return [];
1266 });
1267 var columnHeights = Array(columnsCount).fill(0);
1268 var childRefs = [];
1269 var containerWidth = window.innerWidth;
1270 var gutter = 0; // You can adjust this if needed
1271 var totalGutter = gutter * (columnsCount - 1);
1272 var columnWidth = (containerWidth - totalGutter) / columnsCount;
1273 var validIndex = 0;
1274 external_React_default().Children.forEach(children, function (child, idx) {
1275 if (child && /*#__PURE__*/external_React_default().isValidElement(child)) {
1276 var ref = /*#__PURE__*/external_React_default().createRef();
1277 childRefs.push(ref);
1278 var aspectRatio = child.props.aspectRatio || 1;
1279 var estimatedHeight = Math.floor(columnWidth / aspectRatio);
1280 var targetColumnIndex = columnHeights.indexOf(Math.min.apply(Math, ImageGrid_toConsumableArray(columnHeights)));
1281 columnHeights[targetColumnIndex] += estimatedHeight;
1282 columns[targetColumnIndex].push(/*#__PURE__*/external_React_default().createElement("div", {
1283 key: child.key || idx,
1284 style: {
1285 display: "flex",
1286 justifyContent: "stretch",
1287 maxHeight: "".concat(estimatedHeight, "px"),
1288 minHeight: "".concat(estimatedHeight, "px"),
1289 overflow: "hidden"
1290 }
1291 // key={validIndex}
1292 ,
1293 ref: ref
1294 }, child));
1295 validIndex++;
1296 }
1297 });
1298 return {
1299 columns: columns,
1300 childRefs: childRefs
1301 };
1302 };
1303 var ImageGrid = function ImageGrid(_ref) {
1304 var setModalImageUrl = _ref.setModalImageUrl,
1305 media = _ref.media;
1306 // Added 'media' prop
1307 var _useImageContext = useImageContext(),
1308 errors = _useImageContext.errors,
1309 images = _useImageContext.images,
1310 fetchImages = _useImageContext.fetchImages,
1311 pagination = _useImageContext.pagination,
1312 searchTerm = _useImageContext.searchTerm,
1313 provider = _useImageContext.provider,
1314 isLoading = _useImageContext.isLoading,
1315 removeImage = _useImageContext.removeImage;
1316 var currentPage = pagination.currentPage,
1317 hasNextPage = pagination.hasNextPage;
1318 var observer = (0,external_React_.useRef)();
1319 var _useState = (0,external_React_.useState)({}),
1320 _useState2 = ImageGrid_slicedToArray(_useState, 2),
1321 downloadedImages = _useState2[0],
1322 setDownloadedImages = _useState2[1];
1323 var _useState3 = (0,external_React_.useState)({}),
1324 _useState4 = ImageGrid_slicedToArray(_useState3, 2),
1325 downloadingImages = _useState4[0],
1326 setDownloadingImages = _useState4[1];
1327 var _useState5 = (0,external_React_.useState)({}),
1328 _useState6 = ImageGrid_slicedToArray(_useState5, 2),
1329 erroredImages = _useState6[0],
1330 setErroredImages = _useState6[1];
1331 var _useState7 = (0,external_React_.useState)([]),
1332 _useState8 = ImageGrid_slicedToArray(_useState7, 2),
1333 inLibrary = _useState8[0],
1334 setImagesInLibrary = _useState8[1];
1335 (0,external_React_.useEffect)(function () {
1336 setDownloadedImages([]);
1337 setDownloadingImages([]);
1338 }, [provider]);
1339 (0,external_React_.useEffect)(function () {
1340 fetch(image_hub_data.adminUrl.replace("/wp-admin", "") + "wp-json/wp/v2/media?&per_page=100&_fields=source_url").then(function (response) {
1341 return response.json();
1342 }).then(function (imagezs) {
1343 var _ref2;
1344 var uniqueFilenames = new Set();
1345 imagezs.forEach(function (url) {
1346 uniqueFilenames.add(url.source_url.split("/").pop().split(".")[0]);
1347 });
1348 if (!!((_ref2 = ImageGrid_toConsumableArray(uniqueFilenames)) !== null && _ref2 !== void 0 && _ref2.length)) setImagesInLibrary(ImageGrid_toConsumableArray(uniqueFilenames));
1349 })["catch"](function (error) {
1350 return console.error("Error fetching images:", error);
1351 });
1352 }, [downloadedImages]);
1353 var formattedImages = (images === null || images === void 0 ? void 0 : images.map(function (img, idx) {
1354 var _img$user;
1355 return {
1356 preview: img.thumbnailUrl,
1357 fullImage: img.url,
1358 still: (img === null || img === void 0 ? void 0 : img.still) || undefined,
1359 id: img.provider + "-" + img.id,
1360 external: img.external,
1361 provider: img.provider,
1362 user: img.user,
1363 about: img.about,
1364 height: img.height,
1365 aspectRatio: img.width / img.height,
1366 "user-profile": (_img$user = img.user) === null || _img$user === void 0 ? void 0 : _img$user.link,
1367 downloadCallback: img.downloadCallback || undefined
1368 };
1369 })) || [];
1370
1371 // const handleZoom = (photo) => {
1372 // setModalImageUrl?.(photo.fullImage);
1373 // };
1374
1375 var handleOpenExternal = function handleOpenExternal(photo) {
1376 var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "external";
1377 if (photo !== null && photo !== void 0 && photo[path]) {
1378 window.open(photo === null || photo === void 0 ? void 0 : photo[path], "_blank");
1379 }
1380 };
1381 var openMediaLibrary = function openMediaLibrary(attachmentId) {
1382 // Ensure wp.media exists
1383 var mediaModalEl = wp.media.frame.el;
1384 var mediaTab = mediaModalEl.querySelector("#menu-item-browse");
1385 if (mediaTab) {
1386 // Open the 'Media Library' tab.
1387 mediaTab.click();
1388 }
1389
1390 // Delay to allow for tab switching
1391 setTimeout(function () {
1392 if (wp.media.frame.content.get() !== null) {
1393 // Force a refresh of the mdeia modal content.
1394 wp.media.frame.content.get().collection._requery(true);
1395 }
1396
1397 // Select the attached that was just uploaded.
1398 var selection = wp.media.frame.state().get("selection");
1399 var selected = parseInt(attachmentId);
1400 selection.reset(selected ? [wp.media.attachment(selected)] : []);
1401 }, 100);
1402 };
1403 var handleDownload = function handleDownload(photo) {
1404 if (downloadedImages[photo.id]) return;
1405 setDownloadingImages(function (prev) {
1406 return ImageGrid_objectSpread(ImageGrid_objectSpread({}, prev), {}, ImageGrid_defineProperty({}, photo.id, 0));
1407 });
1408 var progress = 0;
1409 var progressInterval = setInterval(function () {
1410 var increment = progress < 30 ? 0.5 : progress < 70 ? 1 : 0.5;
1411 progress = Math.min(progress + increment, 90); // Cap at 90% until fetch completes
1412
1413 setDownloadingImages(function (prev) {
1414 return ImageGrid_objectSpread(ImageGrid_objectSpread({}, prev), {}, ImageGrid_defineProperty({}, photo.id, progress));
1415 });
1416 }, 50);
1417 fetch(ajaxUrl, {
1418 method: "POST",
1419 body: new URLSearchParams({
1420 action: "image_hub_download_image_to_library",
1421 image_url: photo.fullImage,
1422 nonce: nonce,
1423 name: photo.id,
1424 provider: photo.provider,
1425 link: photo.user.link,
1426 username: photo.user.name,
1427 title: photo.about.title,
1428 description: photo.about.description,
1429 alt: photo.about.alt,
1430 downloadImageCallbackUrl: photo.downloadCallback || ""
1431 })
1432 }).then(function (response) {
1433 return response.json();
1434 }).then(function (data) {
1435 clearInterval(progressInterval);
1436 if (data.success) {
1437 setDownloadingImages(function (prev) {
1438 return ImageGrid_objectSpread(ImageGrid_objectSpread({}, prev), {}, ImageGrid_defineProperty({}, photo.id, 100));
1439 });
1440 setTimeout(function () {
1441 var _data$data$attachment2;
1442 setDownloadingImages(function (prev) {
1443 return ImageGrid_objectSpread(ImageGrid_objectSpread({}, prev), {}, ImageGrid_defineProperty({}, photo.id, false));
1444 });
1445 setDownloadedImages(function (prev) {
1446 var _data$data$attachment;
1447 return ImageGrid_objectSpread(ImageGrid_objectSpread({}, prev), {}, ImageGrid_defineProperty({}, photo.id, (_data$data$attachment = data.data.attachment) === null || _data$data$attachment === void 0 ? void 0 : _data$data$attachment.id));
1448 });
1449 if (media) openMediaLibrary((_data$data$attachment2 = data.data.attachment) === null || _data$data$attachment2 === void 0 ? void 0 : _data$data$attachment2.id);
1450 }, 300);
1451 } else {
1452 setErroredImages(function (prev) {
1453 return ImageGrid_objectSpread(ImageGrid_objectSpread({}, prev), {}, ImageGrid_defineProperty({}, photo.id, true));
1454 });
1455 setDownloadingImages(function (prev) {
1456 return ImageGrid_objectSpread(ImageGrid_objectSpread({}, prev), {}, ImageGrid_defineProperty({}, photo.id, false));
1457 });
1458 }
1459 })["catch"](function (error) {
1460 clearInterval(progressInterval);
1461 setErroredImages(function (prev) {
1462 return ImageGrid_objectSpread(ImageGrid_objectSpread({}, prev), {}, ImageGrid_defineProperty({}, photo.id, true));
1463 });
1464 setDownloadingImages(function (prev) {
1465 return ImageGrid_objectSpread(ImageGrid_objectSpread({}, prev), {}, ImageGrid_defineProperty({}, photo.id, false));
1466 });
1467 console.error("Error downloading image:", error);
1468 });
1469 };
1470 var lastImageRef = (0,external_React_.useCallback)(function (node) {
1471 if (isLoading) return;
1472 if (observer.current) observer.current.disconnect();
1473 observer.current = new IntersectionObserver(function (entries) {
1474 if (entries[0].isIntersecting && hasNextPage) {
1475 fetchImages(searchTerm, provider, currentPage + 1);
1476 }
1477 });
1478 if (node) observer.current.observe(node);
1479 }, [isLoading, hasNextPage, searchTerm, provider, currentPage, fetchImages]);
1480 return /*#__PURE__*/external_React_default().createElement((external_React_default()).Fragment, null, formattedImages.length === 0 && !isLoading ? /*#__PURE__*/external_React_default().createElement((external_React_default()).Fragment, null, errors && errors != {} && !Object.values(errors).some(function (x) {
1481 return x === null || x === void 0 ? void 0 : x.toLowerCase().includes("uri too long");
1482 }) ? /*#__PURE__*/external_React_default().createElement(ErrorDisplay, {
1483 errors: errors
1484 }) : /*#__PURE__*/external_React_default().createElement(NoResultDisplay, null)) : /*#__PURE__*/external_React_default().createElement("div", {
1485 className: "image-hub-galery-container"
1486 }, /*#__PURE__*/external_React_default().createElement("div", null, /*#__PURE__*/external_React_default().createElement(ResponsiveMasonry, {
1487 columnsCountBreakPoints: {
1488 350: 1,
1489 480: 1,
1490 768: 2,
1491 1024: 3,
1492 1200: 4,
1493 1600: 6
1494 },
1495 gutterBreakpoints: {
1496 350: "8px",
1497 480: "10px",
1498 768: "12px",
1499 1024: "16px",
1500 1200: "20px",
1501 1600: "24px"
1502 }
1503 }, /*#__PURE__*/external_React_default().createElement(es, {
1504 columnsCount: 5,
1505 gutter: "5px",
1506 formattedImages: formattedImages
1507 }, formattedImages.map(function (photo, idx) {
1508 return /*#__PURE__*/external_React_default().createElement(PhotoItem, {
1509 key: photo.fullImage + photo.id,
1510 photo: photo,
1511 aspectRatio: photo.aspectRatio,
1512 removeImage: removeImage,
1513 downloadingImages: downloadingImages,
1514 downloadedImages: downloadedImages,
1515 handleOpenExternal: handleOpenExternal,
1516 inLibrary: inLibrary,
1517 media: media,
1518 handleDownload: handleDownload,
1519 erroredImages: erroredImages
1520 });
1521 })))), !isLoading && !hasNextPage && /*#__PURE__*/external_React_default().createElement("div", {
1522 className: "image-hub-gradient-banner"
1523 }, /*#__PURE__*/external_React_default().createElement("h2", null, (0,external_wp_i18n_namespaceObject.__)("These are all the images for the current search terms and filters", "image-hub"))), !isLoading && hasNextPage && /*#__PURE__*/external_React_default().createElement("div", {
1524 ref: lastImageRef,
1525 style: {
1526 height: "20px"
1527 }
1528 })));
1529 };
1530
1531
1532
1533 var hasCertainKey = function hasCertainKey(provider, data) {
1534 return Object.entries(data).some(function (_ref3) {
1535 var _ref4 = ImageGrid_slicedToArray(_ref3, 2),
1536 key = _ref4[0],
1537 value = _ref4[1];
1538 return key.startsWith("image_hub_api_keys_" + provider) && value;
1539 });
1540 };
1541 var ErrorDisplay = function ErrorDisplay(_ref5) {
1542 var errors = _ref5.errors;
1543 var _getImageHubSettings = getImageHubSettings(),
1544 imageHubSettings = _getImageHubSettings.imageHubSettings;
1545 var _useImageContext2 = useImageContext(),
1546 provider = _useImageContext2.provider;
1547 var hasPersonalApiKey = hasCertainKey(provider == "all" ? "giphy" : provider, imageHubSettings);
1548 var errorMessage = "";
1549 var errorProvider = provider;
1550 if (provider === "All" && errors && ImageGrid_typeof(errors) === "object") {
1551 var firstErrorEntry = Object.entries(errors).find(function (_ref6) {
1552 var _ref7 = ImageGrid_slicedToArray(_ref6, 2),
1553 key = _ref7[0],
1554 value = _ref7[1];
1555 return value;
1556 });
1557 if (firstErrorEntry) {
1558 errorProvider = firstErrorEntry[0];
1559 errorMessage = firstErrorEntry[1];
1560 }
1561 } else if (errors && errors[provider]) {
1562 errorMessage = errors[provider];
1563 }
1564 return /*#__PURE__*/external_React_default().createElement("div", {
1565 className: "image-hub-error-card"
1566 }, /*#__PURE__*/external_React_default().createElement("div", {
1567 style: {
1568 display: "flex",
1569 flexDirection: "column",
1570 alignItems: "center",
1571 justifyContent: "center"
1572 }
1573 }, /*#__PURE__*/external_React_default().createElement(external_wp_components_namespaceObject.Icon, {
1574 fill: "#cc1818",
1575 size: 36,
1576 icon: caution_filled
1577 }), /*#__PURE__*/external_React_default().createElement("div", {
1578 style: {
1579 fontSize: "16px",
1580 color: "#cc1818",
1581 fontWeight: 700
1582 }
1583 }, (0,external_wp_i18n_namespaceObject.__)("Image Library Error", "image-hub")), /*#__PURE__*/external_React_default().createElement("div", {
1584 style: {
1585 fontSize: "13px",
1586 marginTop: "10px",
1587 textWrap: "wrap",
1588 textAlign: "center",
1589 justifyContent: "center"
1590 }
1591 }, (0,external_wp_i18n_namespaceObject.__)("We couldn’t fetch images from the library right now. This may be due to a temporary issue with the external image source. Please try again later.", "image-hub")), errorMessage && /*#__PURE__*/external_React_default().createElement("div", {
1592 style: {
1593 fontSize: "16px",
1594 marginTop: "10px"
1595 }
1596 }, errorMessage.replace("401:Unauthorized", "Invalid ApiKey"))));
1597 };
1598 var NoResultDisplay = function NoResultDisplay() {
1599 return /*#__PURE__*/external_React_default().createElement("div", {
1600 className: "image-hub-error-card"
1601 }, /*#__PURE__*/external_React_default().createElement("div", {
1602 style: {
1603 display: "flex",
1604 flexDirection: "column",
1605 alignItems: "center",
1606 justifyContent: "center"
1607 }
1608 }, /*#__PURE__*/external_React_default().createElement(external_wp_components_namespaceObject.Icon, {
1609 fill: "#FFB200",
1610 size: 36,
1611 icon: caution_filled
1612 }), /*#__PURE__*/external_React_default().createElement("div", {
1613 style: {
1614 fontSize: "16px",
1615 color: "#FFB200",
1616 fontWeight: 700
1617 }
1618 }, (0,external_wp_i18n_namespaceObject.__)("No results found", "image-hub")), /*#__PURE__*/external_React_default().createElement("div", {
1619 style: {
1620 fontSize: "13px",
1621 marginTop: "10px",
1622 textWrap: "wrap",
1623 textAlign: "center",
1624 justifyContent: "center"
1625 }
1626 }, (0,external_wp_i18n_namespaceObject.__)("We could not find any images for your search term. This may be due to a temporary issue or the search term might be too specific", "image-hub"))));
1627 };
1628 /* harmony default export */ const components_ImageGrid = (ImageGrid);
1629 var PhotoItem = /*#__PURE__*/external_React_default().forwardRef(function (_ref8, ref) {
1630 var _photo$id, _photo$id3;
1631 var photo = _ref8.photo,
1632 removeImage = _ref8.removeImage,
1633 downloadingImages = _ref8.downloadingImages,
1634 downloadedImages = _ref8.downloadedImages,
1635 handleOpenExternal = _ref8.handleOpenExternal,
1636 inLibrary = _ref8.inLibrary,
1637 media = _ref8.media,
1638 handleDownload = _ref8.handleDownload,
1639 erroredImages = _ref8.erroredImages;
1640 var hoverTimeout;
1641 var _useState9 = (0,external_React_.useState)(false),
1642 _useState10 = ImageGrid_slicedToArray(_useState9, 2),
1643 hovered = _useState10[0],
1644 setHovered = _useState10[1];
1645 return /*#__PURE__*/external_React_default().createElement("div", {
1646 ref: ref,
1647 className: "image-hub-image-container image-hub-image-container-hidden " + photo.id,
1648 key: photo.fullImage + photo.id,
1649 onMouseEnter: function onMouseEnter(e) {
1650 var _e$target;
1651 setHovered(true);
1652 e.preventDefault();
1653 e.stopPropagation();
1654 if (photo.provider !== PROVIDERS.GIPHY.name) return;
1655 var className = ".image-hub-image".concat(downloadingImages[photo.id] || downloadedImages[photo.id] ? ".image-hub-downloading" : "");
1656 var comp = e === null || e === void 0 || (_e$target = e.target) === null || _e$target === void 0 || (_e$target = _e$target.parentElement) === null || _e$target === void 0 ? void 0 : _e$target.querySelector(className);
1657 if (comp) {
1658 comp.src = photo.preview;
1659 clearTimeout(hoverTimeout);
1660 hoverTimeout = setTimeout(function () {
1661 comp.src = photo.still;
1662 }, 1500);
1663 }
1664 },
1665 onMouseLeave: function onMouseLeave(e) {
1666 var _e$target2;
1667 setHovered(false);
1668 e.preventDefault();
1669 e.stopPropagation();
1670 if (photo.provider !== PROVIDERS.GIPHY.name) return;
1671 var className = ".image-hub-image".concat(downloadingImages[photo.id] || downloadedImages[photo.id] ? ".image-hub-downloading" : "");
1672 var comp = e === null || e === void 0 || (_e$target2 = e.target) === null || _e$target2 === void 0 || (_e$target2 = _e$target2.parentElement) === null || _e$target2 === void 0 ? void 0 : _e$target2.querySelector(className);
1673 if (comp) {
1674 clearTimeout(hoverTimeout);
1675 comp.src = photo.still;
1676 }
1677 }
1678 }, /*#__PURE__*/external_React_default().createElement("img", {
1679 //if needed
1680 // style={{ background: `url(${TransparentBG})`,backgroundSize:"cover" }}
1681 style: {
1682 aspectRatio: photo.aspectRatio
1683 },
1684 src: photo.still || photo.preview,
1685 alt: "",
1686 onLoad: function onLoad(e) {
1687 e.target.parentElement.classList.remove("image-hub-image-container-hidden");
1688 // e.target.style.padding=0
1689 },
1690 onError: function onError(e) {
1691 if (e.target.src == photo.fullImage) {
1692 e.target.remove();
1693 removeImage(photo.id);
1694 } else {
1695 e.target.src = photo.fullImage;
1696 }
1697 },
1698 className: "image-hub-image ".concat(downloadingImages[photo.id] || downloadedImages[photo.id] ? "image-hub-downloading" : "")
1699 }), !downloadedImages[photo.id] && !downloadingImages[photo.id] && /*#__PURE__*/external_React_default().createElement("div", {
1700 className: "image-hub-image-overlay"
1701 }, /*#__PURE__*/external_React_default().createElement(external_wp_components_namespaceObject.Tooltip, {
1702 delay: 0,
1703 text: (0,external_wp_i18n_namespaceObject.__)("View on ".concat(ucfirst(photo.provider)), "image-hub")
1704 }, /*#__PURE__*/external_React_default().createElement("div", {
1705 className: "image-hub-zoom-btn",
1706 onClick: function onClick() {
1707 return handleOpenExternal(photo);
1708 }
1709 }, /*#__PURE__*/external_React_default().createElement(external_wp_components_namespaceObject.Icon, {
1710 fill: "white",
1711 icon: library_external
1712 }))), /*#__PURE__*/external_React_default().createElement(external_wp_components_namespaceObject.Tooltip, {
1713 key: 1,
1714 delay: 0,
1715 text: (0,external_wp_i18n_namespaceObject.__)("Get to know ", "image-hub") + " " + photo.user.name
1716 }, /*#__PURE__*/external_React_default().createElement("div", {
1717 className: "image-hub-credits-avatar",
1718 onClick: function onClick() {
1719 return handleOpenExternal(photo, "user-profile");
1720 }
1721 }, photo.user.profile_image ? /*#__PURE__*/external_React_default().createElement("img", {
1722 className: "image-hub-credits-avatar-image",
1723 src: photo.user.profile_image
1724 }) : /*#__PURE__*/external_React_default().createElement("img", {
1725 className: "image-hub-credits-avatar-image",
1726 style: {
1727 objectFit: "contain"
1728 },
1729 src: PROVIDERS[photo.provider.toUpperCase()].icon
1730 }), hovered && /*#__PURE__*/external_React_default().createElement(dist/* default */.A, {
1731 delay: 0.5,
1732 speed: 10,
1733 style: {
1734 overflowY: "hidden"
1735 },
1736 play: (photo.user.name ? "".concat(photo.user.name, " (").concat(photo.provider, ")") : photo.provider).length > 25
1737 }, photo.user.name ? "".concat(photo.user.name, " (").concat(ucfirst(photo.provider), ")") : ucfirst(photo.provider), " "))), /*#__PURE__*/external_React_default().createElement(external_wp_components_namespaceObject.Tooltip, {
1738 key: 2,
1739 delay: 0,
1740 text: inLibrary !== null && inLibrary !== void 0 && inLibrary.includes((_photo$id = photo.id) === null || _photo$id === void 0 ? void 0 : _photo$id.toString()) ? (0,external_wp_i18n_namespaceObject.__)("Already downloaded", "image-hub") : (0,external_wp_i18n_namespaceObject.__)("Download", "image-hub")
1741 }, /*#__PURE__*/external_React_default().createElement("div", {
1742 className: "image-hub-download-btn",
1743 onClick: function onClick() {
1744 var _photo$id2;
1745 if (inLibrary !== null && inLibrary !== void 0 && inLibrary.includes((_photo$id2 = photo.id) === null || _photo$id2 === void 0 ? void 0 : _photo$id2.toString())) return;
1746 if (media) {
1747 handleDownload(photo);
1748 } else {
1749 handleDownload(photo);
1750 }
1751 }
1752 }, /*#__PURE__*/external_React_default().createElement("div", null, inLibrary !== null && inLibrary !== void 0 && inLibrary.includes((_photo$id3 = photo.id) === null || _photo$id3 === void 0 ? void 0 : _photo$id3.toString()) ? /*#__PURE__*/external_React_default().createElement("div", {
1753 key: "ttt1",
1754 className: "image-hub-circle-icon",
1755 style: {
1756 width: "16px",
1757 height: "16px"
1758 }
1759 }, /*#__PURE__*/external_React_default().createElement(external_wp_components_namespaceObject.Icon, {
1760 size: 16,
1761 fill: "white",
1762 icon: library_check
1763 })) : /*#__PURE__*/external_React_default().createElement(external_wp_components_namespaceObject.Icon, {
1764 key: "ttt1",
1765 fill: "white",
1766 icon: library_download
1767 }))))), downloadedImages[photo.id] && /*#__PURE__*/external_React_default().createElement("div", {
1768 className: "image-hub-image-download-overlay"
1769 }, /*#__PURE__*/external_React_default().createElement("div", {
1770 className: "image-hub-circle-icon"
1771 }, /*#__PURE__*/external_React_default().createElement(external_wp_components_namespaceObject.Icon, {
1772 size: 24,
1773 fill: "white",
1774 icon: library_check
1775 })), /*#__PURE__*/external_React_default().createElement("div", {
1776 style: {
1777 color: "white",
1778 marginTop: "10px",
1779 lineHeight: "100%"
1780 }
1781 }, (0,external_wp_i18n_namespaceObject.__)("Downloaded to Media Gallery", "image-hub")), /*#__PURE__*/external_React_default().createElement(external_wp_components_namespaceObject.Button, {
1782 style: {
1783 marginTop: "20px"
1784 },
1785 variant: "primary",
1786 onClick: function onClick() {
1787 window.location.href = image_hub_data.adminUrl + "upload.php";
1788 }
1789 }, (0,external_wp_i18n_namespaceObject.__)("View Image", "image-hub"))), /*#__PURE__*/external_React_default().createElement("div", {
1790 style: {
1791 maxHeight: "100%",
1792 overflow: "hidden"
1793 }
1794 }, downloadingImages[photo.id] && /*#__PURE__*/external_React_default().createElement("div", {
1795 className: "image-hub-image-download-overlay"
1796 }, /*#__PURE__*/external_React_default().createElement(Loader, {
1797 progressValue: downloadingImages[photo.id]
1798 }))), erroredImages[photo.id] && /*#__PURE__*/external_React_default().createElement("div", {
1799 className: "image-hub-image-download-overlay"
1800 }, /*#__PURE__*/external_React_default().createElement("div", {
1801 className: "image-hub-image-download-overlay"
1802 }, /*#__PURE__*/external_React_default().createElement("div", {
1803 className: "image-hub-circle-icon",
1804 style: {
1805 background: "red",
1806 width: "30px",
1807 height: "32px"
1808 }
1809 }, /*#__PURE__*/external_React_default().createElement(external_wp_components_namespaceObject.Icon, {
1810 size: 24,
1811 fill: "white",
1812 icon: library_close
1813 })), /*#__PURE__*/external_React_default().createElement("div", {
1814 style: {
1815 color: "white",
1816 marginTop: "10px",
1817 lineHeight: "100%"
1818 }
1819 }, (0,external_wp_i18n_namespaceObject.__)("Image could not be downloaded!", "image-hub")))));
1820 });
1821 ;// ./src/components/CustomToolbarButton.js
1822 var _excluded = ["selected", "label", "icon"];
1823 function CustomToolbarButton_extends() { return CustomToolbarButton_extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, CustomToolbarButton_extends.apply(null, arguments); }
1824 function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
1825 function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
1826
1827
1828
1829 // Unforwarded version
1830 var UnforwardedCustomToolbarButton = function UnforwardedCustomToolbarButton(_ref, ref) {
1831 var selected = _ref.selected,
1832 label = _ref.label,
1833 icon = _ref.icon,
1834 props = _objectWithoutProperties(_ref, _excluded);
1835 return /*#__PURE__*/external_React_default().createElement(external_wp_components_namespaceObject.ToolbarButton, CustomToolbarButton_extends({
1836 ref: ref,
1837 key: label,
1838 className: selected ? "image-hub-custom-toolbar-button-selected" : "image-hub-custom-toolbar-button",
1839 variant: "text"
1840 }, props), icon ? /*#__PURE__*/external_React_default().createElement("img", {
1841 height: 16,
1842 width: 16,
1843 style: {
1844 marginRight: ".5em"
1845 },
1846 src: icon,
1847 alt: ""
1848 }) : null, label);
1849 };
1850
1851 // Export forwarded version using the unforwarded component
1852 var CustomToolbarButton = /*#__PURE__*/(0,external_React_.forwardRef)(UnforwardedCustomToolbarButton);
1853 ;// ./src/components/CustomNumberInput.js
1854 function CustomNumberInput_typeof(o) { "@babel/helpers - typeof"; return CustomNumberInput_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, CustomNumberInput_typeof(o); }
1855 var CustomNumberInput_excluded = ["value", "setValue", "label"];
1856 function CustomNumberInput_extends() { return CustomNumberInput_extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, CustomNumberInput_extends.apply(null, arguments); }
1857 function CustomNumberInput_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1858 function CustomNumberInput_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? CustomNumberInput_ownKeys(Object(t), !0).forEach(function (r) { CustomNumberInput_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : CustomNumberInput_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1859 function CustomNumberInput_defineProperty(e, r, t) { return (r = CustomNumberInput_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
1860 function CustomNumberInput_toPropertyKey(t) { var i = CustomNumberInput_toPrimitive(t, "string"); return "symbol" == CustomNumberInput_typeof(i) ? i : i + ""; }
1861 function CustomNumberInput_toPrimitive(t, r) { if ("object" != CustomNumberInput_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != CustomNumberInput_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1862 function CustomNumberInput_objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = CustomNumberInput_objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
1863 function CustomNumberInput_objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
1864
1865
1866
1867 var ENABLE_CLEAR_BTN = false;
1868 var CustomNumberControl = function CustomNumberControl(_ref) {
1869 var value = _ref.value,
1870 setValue = _ref.setValue,
1871 label = _ref.label,
1872 props = CustomNumberInput_objectWithoutProperties(_ref, CustomNumberInput_excluded);
1873 var handleClear = function handleClear(e) {
1874 e.stopPropagation();
1875 setValue(0);
1876 };
1877 return /*#__PURE__*/external_React_default().createElement("div", {
1878 style: {
1879 position: "relative"
1880 }
1881 }, /*#__PURE__*/external_React_default().createElement(external_wp_components_namespaceObject.__experimentalNumberControl, CustomNumberInput_extends({
1882 value: value == 0 ? null : value,
1883 __next40pxDefaultSize: true,
1884 __nextHasNoMarginBottom: true,
1885 label: label,
1886 onChange: setValue,
1887 showArrows: false,
1888 adornment: /*#__PURE__*/external_React_default().createElement("span", {
1889 style: {
1890 color: "blue"
1891 }
1892 }, "PX"),
1893 isShiftStepEnabled: true,
1894 shiftStep: 10,
1895 style: CustomNumberInput_objectSpread({
1896 background: "transparent"
1897 }, props === null || props === void 0 ? void 0 : props.style),
1898 suffix: /*#__PURE__*/external_React_default().createElement("div", {
1899 style: {
1900 display: "flex",
1901 alignItems: "center",
1902 position: "relative",
1903 width: ENABLE_CLEAR_BTN ? "43px" : "23px"
1904 }
1905 }, value > 0 && ENABLE_CLEAR_BTN && /*#__PURE__*/external_React_default().createElement("button", {
1906 onClick: handleClear,
1907 style: {
1908 border: "none",
1909 background: "transparent",
1910 cursor: "pointer",
1911 padding: "0",
1912 display: "flex",
1913 alignItems: "center",
1914 justifyContent: "center",
1915 color: "#757575",
1916 width: "16px",
1917 height: "16px",
1918 position: "absolute",
1919 left: "0"
1920 },
1921 "aria-label": "Clear value"
1922 }, /*#__PURE__*/external_React_default().createElement(external_wp_components_namespaceObject.Icon, {
1923 icon: "dismiss",
1924 size: 16
1925 })), /*#__PURE__*/external_React_default().createElement("div", {
1926 style: {
1927 marginRight: "10px",
1928 color: "#3858E9",
1929 fontSize: "16px!important",
1930 position: "absolute",
1931 right: "0",
1932 paddingBottom: ".3em"
1933 }
1934 }, "px"))
1935 }, props)));
1936 };
1937 ;// ./src/components/QueryFilters.js
1938 function QueryFilters_toConsumableArray(r) { return QueryFilters_arrayWithoutHoles(r) || QueryFilters_iterableToArray(r) || QueryFilters_unsupportedIterableToArray(r) || QueryFilters_nonIterableSpread(); }
1939 function QueryFilters_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
1940 function QueryFilters_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
1941 function QueryFilters_arrayWithoutHoles(r) { if (Array.isArray(r)) return QueryFilters_arrayLikeToArray(r); }
1942 function QueryFilters_slicedToArray(r, e) { return QueryFilters_arrayWithHoles(r) || QueryFilters_iterableToArrayLimit(r, e) || QueryFilters_unsupportedIterableToArray(r, e) || QueryFilters_nonIterableRest(); }
1943 function QueryFilters_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
1944 function QueryFilters_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return QueryFilters_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? QueryFilters_arrayLikeToArray(r, a) : void 0; } }
1945 function QueryFilters_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
1946 function QueryFilters_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
1947 function QueryFilters_arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1948
1949
1950
1951
1952
1953 var QueryFilters = function QueryFilters() {
1954 var _useImageContext = useImageContext(),
1955 _provider = _useImageContext.provider,
1956 updateQueryParams = _useImageContext.updateQueryParams,
1957 additionalQueryParams = _useImageContext.additionalQueryParams;
1958 var provider = _provider.toUpperCase();
1959
1960 // Don't show filters for 'All' provider or if provider doesn't exist in PROVIDERQUERY
1961 if (provider === "All" || !PROVIDERQUERY[provider]) {
1962 return null;
1963 }
1964 var currentProviderParams = PROVIDERQUERY[provider];
1965
1966 // Filter out the searchTerm parameter as it's handled separately
1967 var filterParams = Object.entries(currentProviderParams).filter(function (_ref) {
1968 var _ref2 = QueryFilters_slicedToArray(_ref, 1),
1969 key = _ref2[0];
1970 return key !== "searchTerm";
1971 });
1972 return /*#__PURE__*/React.createElement(React.Fragment, null, !!filterParams.length && /*#__PURE__*/React.createElement("div", {
1973 className: "image-hub-filters"
1974 }, filterParams.map(function (_ref3) {
1975 var _ref4 = QueryFilters_slicedToArray(_ref3, 2),
1976 paramKey = _ref4[0],
1977 paramConfig = _ref4[1];
1978 return /*#__PURE__*/React.createElement("div", {
1979 key: paramKey
1980 }, paramConfig.acc_values ? /*#__PURE__*/React.createElement(external_wp_components_namespaceObject.SelectControl, {
1981 key: paramKey + "-select-control-" + _provider,
1982 style: {
1983 minWidth: "180px"
1984 },
1985 __next40pxDefaultSize: true,
1986 __nextHasNoMarginBottom: true,
1987 label: paramKey.replaceAll("_", " "),
1988 value: (additionalQueryParams === null || additionalQueryParams === void 0 ? void 0 : additionalQueryParams[paramConfig === null || paramConfig === void 0 ? void 0 : paramConfig.name]) || (paramConfig === null || paramConfig === void 0 ? void 0 : paramConfig["default"]),
1989 onChange: function onChange(value) {
1990 return updateQueryParams(paramKey, value);
1991 },
1992 options: [!paramConfig.acc_values.some(function (acv) {
1993 return acv.toLowerCase() == "all";
1994 }) ? {
1995 label: (0,external_wp_i18n_namespaceObject.__)('All', 'image-hub'),
1996 value: ""
1997 } : null].concat(QueryFilters_toConsumableArray(paramConfig.acc_values.map(function (value, idx) {
1998 var _paramConfig$values_l;
1999 return {
2000 label: (paramConfig === null || paramConfig === void 0 || (_paramConfig$values_l = paramConfig.values_labels) === null || _paramConfig$values_l === void 0 ? void 0 : _paramConfig$values_l[idx]) || value.charAt(0).toUpperCase() + value.slice(1),
2001 value: value
2002 };
2003 }))).filter(function (x) {
2004 return !!x;
2005 })
2006 }) : paramConfig.type === "string" ? /*#__PURE__*/React.createElement(external_wp_components_namespaceObject.TextControl, {
2007 key: paramKey + "-text-control",
2008 __next40pxDefaultSize: true,
2009 __nextHasNoMarginBottom: true,
2010 value: (additionalQueryParams === null || additionalQueryParams === void 0 ? void 0 : additionalQueryParams[paramConfig === null || paramConfig === void 0 ? void 0 : paramConfig.name]) || (paramConfig === null || paramConfig === void 0 ? void 0 : paramConfig["default"]),
2011 placeholder: "...",
2012 onChange: function onChange(value) {
2013 return updateQueryParams(paramConfig.name, value);
2014 },
2015 label: paramKey.replaceAll("_", " ")
2016 }) : /*#__PURE__*/React.createElement(CustomNumberControl, {
2017 key: paramKey + "-custom-number-control",
2018 value: (additionalQueryParams === null || additionalQueryParams === void 0 ? void 0 : additionalQueryParams[paramConfig === null || paramConfig === void 0 ? void 0 : paramConfig.name]) || (paramConfig === null || paramConfig === void 0 ? void 0 : paramConfig["default"]),
2019 onChange: function onChange(value) {
2020 return updateQueryParams(paramConfig.name, value);
2021 },
2022 label: paramKey.toUpperCase().replaceAll("_", " ")
2023 }));
2024 })));
2025 };
2026 /* harmony default export */ const components_QueryFilters = (QueryFilters);
2027 ;// ./src/components/SearchButton.js
2028 function SearchButton_slicedToArray(r, e) { return SearchButton_arrayWithHoles(r) || SearchButton_iterableToArrayLimit(r, e) || SearchButton_unsupportedIterableToArray(r, e) || SearchButton_nonIterableRest(); }
2029 function SearchButton_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
2030 function SearchButton_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return SearchButton_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? SearchButton_arrayLikeToArray(r, a) : void 0; } }
2031 function SearchButton_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
2032 function SearchButton_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
2033 function SearchButton_arrayWithHoles(r) { if (Array.isArray(r)) return r; }
2034
2035
2036 var CustomSearchButton = function CustomSearchButton(_ref) {
2037 var value = _ref.value,
2038 onChange = _ref.onChange,
2039 onSubmit = _ref.onSubmit,
2040 onClear = _ref.onClear,
2041 onBlur = _ref.onBlur;
2042 var _useState = (0,external_React_.useState)(value || ''),
2043 _useState2 = SearchButton_slicedToArray(_useState, 2),
2044 searchTerm = _useState2[0],
2045 setSearchTerm = _useState2[1];
2046 var _useState3 = (0,external_React_.useState)("transparent"),
2047 _useState4 = SearchButton_slicedToArray(_useState3, 2),
2048 borderColor = _useState4[0],
2049 setBorderColor = _useState4[1];
2050 var _useState5 = (0,external_React_.useState)(""),
2051 _useState6 = SearchButton_slicedToArray(_useState5, 2),
2052 inputClass = _useState6[0],
2053 setInputClass = _useState6[1];
2054 (0,external_React_.useEffect)(function () {
2055 setSearchTerm(value);
2056 }, [value]);
2057 var handleChange = function handleChange(e) {
2058 var trimmedValue = e.target.value;
2059 setSearchTerm(trimmedValue);
2060 if (onChange) {
2061 onChange(trimmedValue);
2062 }
2063 };
2064 var handleSubmit = function handleSubmit() {
2065 var trimmed = searchTerm.trim();
2066 if (trimmed.length === 0) {
2067 if (onChange) onChange(""); // Optional: Clear parent too
2068 setBorderColor("red");
2069 setInputClass("__error");
2070 setTimeout(function () {
2071 setBorderColor("transparent");
2072 setInputClass("");
2073 }, 300);
2074 } else if (onSubmit) {
2075 onSubmit(trimmed);
2076 }
2077 };
2078 var handleClear = function handleClear() {
2079 setSearchTerm('');
2080 if (onClear) {
2081 onClear();
2082 }
2083 if (onSubmit) {
2084 onSubmit('');
2085 }
2086 };
2087 var handleKeyPress = function handleKeyPress(e) {
2088 if (e.key === 'Enter') {
2089 e.preventDefault();
2090 handleSubmit();
2091 }
2092 };
2093 var containerStyles = {
2094 display: 'flex',
2095 justifyContent: 'center',
2096 alignItems: 'center',
2097 width: '100%'
2098 };
2099 var wrapperStyles = {
2100 position: 'relative',
2101 width: '100%'
2102 };
2103 var inputStyles = {
2104 width: '100%',
2105 height: '40px',
2106 padding: '0px 36px 0px 12px',
2107 border: "1px solid ".concat(borderColor),
2108 borderRadius: '2px',
2109 backgroundColor: '#f3f4f6',
2110 outline: 'none'
2111 };
2112 var buttonStyles = {
2113 position: 'absolute',
2114 right: '8px',
2115 top: '50%',
2116 transform: 'translateY(-50%)',
2117 border: 'none',
2118 background: 'none',
2119 cursor: 'pointer',
2120 color: '#6b7280',
2121 display: 'flex',
2122 alignItems: 'center',
2123 justifyContent: 'center',
2124 padding: '0'
2125 };
2126 return /*#__PURE__*/React.createElement("div", {
2127 className: "image-hub-search-control " + inputClass,
2128 style: containerStyles
2129 }, /*#__PURE__*/React.createElement("div", {
2130 style: wrapperStyles
2131 }, /*#__PURE__*/React.createElement("input", {
2132 type: "text",
2133 value: searchTerm,
2134 onChange: handleChange,
2135 onKeyPress: handleKeyPress,
2136 style: inputStyles,
2137 onBlur: onBlur,
2138 maxLength: 100,
2139 placeholder: "Search..."
2140 }), /*#__PURE__*/React.createElement("button", {
2141 onClick: searchTerm ? handleClear : handleSubmit,
2142 style: buttonStyles,
2143 "aria-label": searchTerm ? "Clear search" : "Search"
2144 }, /*#__PURE__*/React.createElement(external_wp_components_namespaceObject.Icon, {
2145 icon: searchTerm ? "no-alt" : "search",
2146 size: 20
2147 }))));
2148 };
2149 ;// ./src/components/ProvidersAndFilters.js
2150 function ProvidersAndFilters_slicedToArray(r, e) { return ProvidersAndFilters_arrayWithHoles(r) || ProvidersAndFilters_iterableToArrayLimit(r, e) || ProvidersAndFilters_unsupportedIterableToArray(r, e) || ProvidersAndFilters_nonIterableRest(); }
2151 function ProvidersAndFilters_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
2152 function ProvidersAndFilters_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return ProvidersAndFilters_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? ProvidersAndFilters_arrayLikeToArray(r, a) : void 0; } }
2153 function ProvidersAndFilters_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
2154 function ProvidersAndFilters_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
2155 function ProvidersAndFilters_arrayWithHoles(r) { if (Array.isArray(r)) return r; }
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165 var ProvidersAndFilters = function ProvidersAndFilters(_ref) {
2166 var _ref$media = _ref.media,
2167 media = _ref$media === void 0 ? false : _ref$media;
2168 var _useImageContext = useImageContext(),
2169 lastSearchTerm = _useImageContext.lastSearchTerm,
2170 searchTerm = _useImageContext.searchTerm,
2171 setSearchTerm = _useImageContext.setSearchTerm,
2172 images = _useImageContext.images,
2173 provider = _useImageContext.provider,
2174 setProvider = _useImageContext.setProvider,
2175 fetchImages = _useImageContext.fetchImages,
2176 handleSearch = _useImageContext.handleSearch,
2177 pagination = _useImageContext.pagination,
2178 isLoading = _useImageContext.isLoading,
2179 setAdditionalQueryParams = _useImageContext.setAdditionalQueryParams;
2180 var _getImageHubSettings = getImageHubSettings(),
2181 imageHubSettings = _getImageHubSettings.imageHubSettings;
2182 var _useState = (0,external_React_.useState)({
2183 left: 20,
2184 width: 101
2185 }),
2186 _useState2 = ProvidersAndFilters_slicedToArray(_useState, 2),
2187 underlineStyle = _useState2[0],
2188 setUnderlineStyle = _useState2[1];
2189 var toolbarRef = (0,external_React_.useRef)(null);
2190 var buttonRefs = (0,external_React_.useRef)({});
2191 (0,external_React_.useLayoutEffect)(function () {
2192 if (!provider || !toolbarRef.current) return;
2193 var selectedButton = buttonRefs.current[provider.toLowerCase()];
2194 if (selectedButton && toolbarRef.current) {
2195 var buttonRect = selectedButton.getBoundingClientRect();
2196 var toolbarRect = toolbarRef.current.getBoundingClientRect();
2197 setUnderlineStyle({
2198 left: buttonRect.left - toolbarRect.left,
2199 width: buttonRect.width
2200 });
2201 }
2202 var resizeObserver = new ResizeObserver(function () {
2203 if (selectedButton && toolbarRef.current) {
2204 var _buttonRect = selectedButton.getBoundingClientRect();
2205 var _toolbarRect = toolbarRef.current.getBoundingClientRect();
2206 setUnderlineStyle({
2207 left: _buttonRect.left - _toolbarRect.left,
2208 width: _buttonRect.width
2209 });
2210 }
2211 });
2212 resizeObserver.observe(toolbarRef.current);
2213 return function () {
2214 resizeObserver.disconnect();
2215 };
2216 }, [provider, isLoading]);
2217 (0,external_React_.useEffect)(function () {
2218 var _Object$values$filter;
2219 Object.entries(imageHubSettings).forEach(function (_ref2) {
2220 var _ref3 = ProvidersAndFilters_slicedToArray(_ref2, 2),
2221 key = _ref3[0],
2222 value = _ref3[1];
2223 if (key.includes("image_hub_enable_")) {
2224 var providerKey = key.replace("image_hub_enable_", "").toUpperCase();
2225 if (PROVIDERS !== null && PROVIDERS !== void 0 && PROVIDERS[providerKey]) {
2226 PROVIDERS[providerKey].enabled = value;
2227 }
2228 }
2229 });
2230 PROVIDERS.All.enabled = Object.values(PROVIDERS).filter(function (x) {
2231 return x.name !== "All" && x.enabled;
2232 }).length !== 1;
2233 setProvider(((_Object$values$filter = Object.values(PROVIDERS).filter(function (x) {
2234 return x.enabled;
2235 })[0]) === null || _Object$values$filter === void 0 ? void 0 : _Object$values$filter.name) || "");
2236 }, [imageHubSettings]);
2237 return /*#__PURE__*/React.createElement("div", {
2238 className: "image-hub-toolbar-sticky"
2239 }, /*#__PURE__*/React.createElement(external_wp_components_namespaceObject.ToolbarGroup, {
2240 className: media ? "image-hub-toolbar image-hub-toolbar-white" : "image-hub-toolbar"
2241 }, /*#__PURE__*/React.createElement("div", {
2242 ref: toolbarRef
2243 }, Object.keys(PROVIDERS).map(function (prov) {
2244 var _prov$charAt, _prov$slice;
2245 if (!PROVIDERS[prov].enabled) return null;
2246 return /*#__PURE__*/React.createElement(CustomToolbarButton, {
2247 key: prov,
2248 ref: function ref(el) {
2249 return buttonRefs.current[PROVIDERS[prov].name.toLowerCase()] = el;
2250 },
2251 selected: (prov === null || prov === void 0 ? void 0 : prov.toLowerCase()) == (provider === null || provider === void 0 ? void 0 : provider.toLowerCase()),
2252 icon: PROVIDERS[prov].icon ? PROVIDERS[prov].icon : undefined,
2253 onClick: function onClick() {
2254 setProvider(PROVIDERS[prov].name);
2255 setAdditionalQueryParams({});
2256 setTimeout(function () {
2257 fetchImages(searchTerm === null || searchTerm === void 0 ? void 0 : searchTerm.toLowerCase(), PROVIDERS[prov].name, 1, true, {});
2258 }, 400);
2259 },
2260 label: prov == "All" ? "All Libraries" : ((_prov$charAt = prov.charAt(0)) === null || _prov$charAt === void 0 ? void 0 : _prov$charAt.toUpperCase()) + ((_prov$slice = prov.slice(1)) === null || _prov$slice === void 0 ? void 0 : _prov$slice.toLowerCase())
2261 });
2262 }), provider == "giphy" && /*#__PURE__*/React.createElement("a", {
2263 href: "https://giphy.com/",
2264 target: "_blank",
2265 className: "image-hub-giphy-attribution"
2266 }, /*#__PURE__*/React.createElement("img", {
2267 src: image_hub_data.giphyAttrUrl
2268 })), /*#__PURE__*/React.createElement("div", {
2269 style: {
2270 position: "absolute",
2271 left: 0,
2272 background: "#d3d3d3",
2273 width: "100%",
2274 height: "2px",
2275 bottom: 0
2276 }
2277 }, /*#__PURE__*/React.createElement("div", {
2278 className: "image-hub-floating-underline",
2279 style: {
2280 left: "".concat(underlineStyle.left, "px"),
2281 width: "".concat(underlineStyle.width, "px")
2282 }
2283 })))), /*#__PURE__*/React.createElement(external_wp_components_namespaceObject.ToolbarGroup, {
2284 className: "image-hub-toolabar-query"
2285 }, /*#__PURE__*/React.createElement("div", {
2286 style: {
2287 display: "flex",
2288 flexWrap: "wrap",
2289 justifyContent: "end",
2290 alignItems: "end",
2291 gap: "10px",
2292 width: "100%"
2293 // height: "65px"
2294 }
2295 }, /*#__PURE__*/React.createElement("div", {
2296 style: {
2297 minWidth: provider == PROVIDERS.UNSPLASH.name && !lastSearchTerm || ["All", "giphy"].includes(provider) ? "100%" : "250px"
2298 }
2299 }, /*#__PURE__*/React.createElement(CustomSearchButton, {
2300 value: searchTerm || "",
2301 onSubmit: function onSubmit(val) {
2302 setSearchTerm(val);
2303 handleSearch(val);
2304 },
2305 onChange: function onChange(val) {
2306 setSearchTerm(val);
2307 },
2308 onBlur: function onBlur() {
2309 if (searchTerm.replaceAll(" ", "") != lastSearchTerm.replaceAll(" ", "")) {
2310 handleSearch();
2311 }
2312 },
2313 onClear: function onClear() {
2314 setAdditionalQueryParams({});
2315 }
2316 })), provider == PROVIDERS.UNSPLASH.name && !lastSearchTerm ? "" : /*#__PURE__*/React.createElement(components_QueryFilters, {
2317 media: media
2318 })), !isLoading && searchTerm && searchTerm.replace(/\s+/g, "").length > 0 && lastSearchTerm.toLowerCase() == searchTerm.toLowerCase() && /*#__PURE__*/React.createElement("p", {
2319 style: {
2320 color: "rgb(152, 151, 157)",
2321 margin: "0.5em 0"
2322 }
2323 }, localStorage.getItem("imageHubDevMode") == "true" && /*#__PURE__*/React.createElement("span", {
2324 style: {
2325 color: "red"
2326 }
2327 }, images.length, "/"), /*#__PURE__*/React.createElement("strong", {
2328 style: {
2329 color: "black"
2330 }
2331 }, pagination.totalResults || (0,external_wp_i18n_namespaceObject.__)("No results", "image-hub")), (0,external_wp_i18n_namespaceObject.__)(" image(s) found for ", "image-hub"), /*#__PURE__*/React.createElement("strong", {
2332 style: {
2333 color: "black"
2334 }
2335 }, lastSearchTerm))), isLoading && /*#__PURE__*/React.createElement("div", {
2336 className: "image-hub-progress-bar"
2337 }, /*#__PURE__*/React.createElement("div", {
2338 className: "image-hub-progress-bar-inner"
2339 })));
2340 };
2341 /* harmony default export */ const components_ProvidersAndFilters = (ProvidersAndFilters);
2342 ;// ./src/AdminApp.js
2343 function AdminApp_slicedToArray(r, e) { return AdminApp_arrayWithHoles(r) || AdminApp_iterableToArrayLimit(r, e) || AdminApp_unsupportedIterableToArray(r, e) || AdminApp_nonIterableRest(); }
2344 function AdminApp_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
2345 function AdminApp_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return AdminApp_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? AdminApp_arrayLikeToArray(r, a) : void 0; } }
2346 function AdminApp_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
2347 function AdminApp_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
2348 function AdminApp_arrayWithHoles(r) { if (Array.isArray(r)) return r; }
2349
2350
2351
2352
2353
2354
2355 var App = function App() {
2356 var _useState = (0,external_wp_element_namespaceObject.useState)(null),
2357 _useState2 = AdminApp_slicedToArray(_useState, 2),
2358 modalImageUrl = _useState2[0],
2359 setModalImageUrl = _useState2[1];
2360 var closeModal = function closeModal() {
2361 setModalImageUrl(null);
2362 };
2363 return /*#__PURE__*/React.createElement("div", {
2364 className: "image-hub-app-container"
2365 }, /*#__PURE__*/React.createElement(AppHeader, {
2366 enableBrowseButton: false,
2367 enableSettingsButton: true
2368 }), /*#__PURE__*/React.createElement(components_ProvidersAndFilters, null), /*#__PURE__*/React.createElement(components_ImageGrid, {
2369 setModalImageUrl: setModalImageUrl
2370 }), !!modalImageUrl && /*#__PURE__*/React.createElement(external_wp_components_namespaceObject.Modal, {
2371 className: "image-hub-modal",
2372 title: (0,external_wp_i18n_namespaceObject.__)('View full image', 'image-hub'),
2373 onRequestClose: closeModal
2374 }, /*#__PURE__*/React.createElement("div", {
2375 style: {
2376 display: "flex",
2377 flexDirection: "column",
2378 width: "100%",
2379 height: "100%"
2380 }
2381 }, /*#__PURE__*/React.createElement("img", {
2382 style: {
2383 objectFit: "contain",
2384 height: "100%",
2385 width: "100%"
2386 },
2387 src: modalImageUrl,
2388 alt: "Full size"
2389 }), /*#__PURE__*/React.createElement("a", {
2390 href: modalImageUrl,
2391 style: {
2392 width: "fit-content"
2393 },
2394 target: "_blank"
2395 }, (0,external_wp_i18n_namespaceObject.__)('Open image in new tab', 'image-hub')))));
2396 };
2397 /* harmony default export */ const AdminApp = (App);
2398 ;// ./src/admin.js
2399
2400
2401
2402
2403 document.addEventListener('DOMContentLoaded', function () {
2404 var container = document.getElementById('image-hub-root');
2405 if (container) {
2406 var root = (0,client/* createRoot */.H)(container);
2407 root.render(/*#__PURE__*/external_React_default().createElement((external_React_default()).StrictMode, null, /*#__PURE__*/external_React_default().createElement(ImageProvider, null, /*#__PURE__*/external_React_default().createElement(AdminApp, null))));
2408 }
2409 });
2410 })();
2411
2412 /******/ })()
2413 ;
2414 //# sourceMappingURL=admin.js.map
2415