PluginProbe
Gutenberg / 23.1.0
Gutenberg v23.1.0
23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 12.6.0 7.4.0 All 402 releases
gutenberg / build / scripts / edit-widgets / index.js

index.js in Gutenberg 23.1.0, at build/scripts/edit-widgets/index.js

4,597 lines 176.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 var wp;
2 (wp ||= {}).editWidgets = (() => {
3 var __create = Object.create;
4 var __defProp = Object.defineProperty;
5 var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6 var __getOwnPropNames = Object.getOwnPropertyNames;
7 var __getProtoOf = Object.getPrototypeOf;
8 var __hasOwnProp = Object.prototype.hasOwnProperty;
9 var __commonJS = (cb, mod) => function __require() {
10 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
11 };
12 var __export = (target, all) => {
13 for (var name2 in all)
14 __defProp(target, name2, { get: all[name2], enumerable: true });
15 };
16 var __copyProps = (to, from, except, desc) => {
17 if (from && typeof from === "object" || typeof from === "function") {
18 for (let key of __getOwnPropNames(from))
19 if (!__hasOwnProp.call(to, key) && key !== except)
20 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21 }
22 return to;
23 };
24 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25 // If the importer is in node compatibility mode or this is not an ESM
26 // file that has been converted to a CommonJS file using a Babel-
27 // compatible transform (i.e. "__esModule" has not been set), then set
28 // "default" to the CommonJS "module.exports" for node compatibility.
29 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
30 mod
31 ));
32 var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
33
34 // package-external:@wordpress/blocks
35 var require_blocks = __commonJS({
36 "package-external:@wordpress/blocks"(exports, module) {
37 module.exports = window.wp.blocks;
38 }
39 });
40
41 // package-external:@wordpress/data
42 var require_data = __commonJS({
43 "package-external:@wordpress/data"(exports, module) {
44 module.exports = window.wp.data;
45 }
46 });
47
48 // package-external:@wordpress/deprecated
49 var require_deprecated = __commonJS({
50 "package-external:@wordpress/deprecated"(exports, module) {
51 module.exports = window.wp.deprecated;
52 }
53 });
54
55 // package-external:@wordpress/element
56 var require_element = __commonJS({
57 "package-external:@wordpress/element"(exports, module) {
58 module.exports = window.wp.element;
59 }
60 });
61
62 // package-external:@wordpress/block-library
63 var require_block_library = __commonJS({
64 "package-external:@wordpress/block-library"(exports, module) {
65 module.exports = window.wp.blockLibrary;
66 }
67 });
68
69 // package-external:@wordpress/core-data
70 var require_core_data = __commonJS({
71 "package-external:@wordpress/core-data"(exports, module) {
72 module.exports = window.wp.coreData;
73 }
74 });
75
76 // package-external:@wordpress/widgets
77 var require_widgets = __commonJS({
78 "package-external:@wordpress/widgets"(exports, module) {
79 module.exports = window.wp.widgets;
80 }
81 });
82
83 // package-external:@wordpress/preferences
84 var require_preferences = __commonJS({
85 "package-external:@wordpress/preferences"(exports, module) {
86 module.exports = window.wp.preferences;
87 }
88 });
89
90 // package-external:@wordpress/api-fetch
91 var require_api_fetch = __commonJS({
92 "package-external:@wordpress/api-fetch"(exports, module) {
93 module.exports = window.wp.apiFetch;
94 }
95 });
96
97 // package-external:@wordpress/i18n
98 var require_i18n = __commonJS({
99 "package-external:@wordpress/i18n"(exports, module) {
100 module.exports = window.wp.i18n;
101 }
102 });
103
104 // package-external:@wordpress/notices
105 var require_notices = __commonJS({
106 "package-external:@wordpress/notices"(exports, module) {
107 module.exports = window.wp.notices;
108 }
109 });
110
111 // package-external:@wordpress/components
112 var require_components = __commonJS({
113 "package-external:@wordpress/components"(exports, module) {
114 module.exports = window.wp.components;
115 }
116 });
117
118 // package-external:@wordpress/primitives
119 var require_primitives = __commonJS({
120 "package-external:@wordpress/primitives"(exports, module) {
121 module.exports = window.wp.primitives;
122 }
123 });
124
125 // vendor-external:react/jsx-runtime
126 var require_jsx_runtime = __commonJS({
127 "vendor-external:react/jsx-runtime"(exports, module) {
128 module.exports = window.ReactJSXRuntime;
129 }
130 });
131
132 // package-external:@wordpress/viewport
133 var require_viewport = __commonJS({
134 "package-external:@wordpress/viewport"(exports, module) {
135 module.exports = window.wp.viewport;
136 }
137 });
138
139 // package-external:@wordpress/compose
140 var require_compose = __commonJS({
141 "package-external:@wordpress/compose"(exports, module) {
142 module.exports = window.wp.compose;
143 }
144 });
145
146 // package-external:@wordpress/plugins
147 var require_plugins = __commonJS({
148 "package-external:@wordpress/plugins"(exports, module) {
149 module.exports = window.wp.plugins;
150 }
151 });
152
153 // vendor-external:react
154 var require_react = __commonJS({
155 "vendor-external:react"(exports, module) {
156 module.exports = window.React;
157 }
158 });
159
160 // package-external:@wordpress/private-apis
161 var require_private_apis = __commonJS({
162 "package-external:@wordpress/private-apis"(exports, module) {
163 module.exports = window.wp.privateApis;
164 }
165 });
166
167 // package-external:@wordpress/block-editor
168 var require_block_editor = __commonJS({
169 "package-external:@wordpress/block-editor"(exports, module) {
170 module.exports = window.wp.blockEditor;
171 }
172 });
173
174 // package-external:@wordpress/hooks
175 var require_hooks = __commonJS({
176 "package-external:@wordpress/hooks"(exports, module) {
177 module.exports = window.wp.hooks;
178 }
179 });
180
181 // package-external:@wordpress/media-utils
182 var require_media_utils = __commonJS({
183 "package-external:@wordpress/media-utils"(exports, module) {
184 module.exports = window.wp.mediaUtils;
185 }
186 });
187
188 // package-external:@wordpress/patterns
189 var require_patterns = __commonJS({
190 "package-external:@wordpress/patterns"(exports, module) {
191 module.exports = window.wp.patterns;
192 }
193 });
194
195 // package-external:@wordpress/keyboard-shortcuts
196 var require_keyboard_shortcuts = __commonJS({
197 "package-external:@wordpress/keyboard-shortcuts"(exports, module) {
198 module.exports = window.wp.keyboardShortcuts;
199 }
200 });
201
202 // package-external:@wordpress/keycodes
203 var require_keycodes = __commonJS({
204 "package-external:@wordpress/keycodes"(exports, module) {
205 module.exports = window.wp.keycodes;
206 }
207 });
208
209 // package-external:@wordpress/url
210 var require_url = __commonJS({
211 "package-external:@wordpress/url"(exports, module) {
212 module.exports = window.wp.url;
213 }
214 });
215
216 // package-external:@wordpress/dom
217 var require_dom = __commonJS({
218 "package-external:@wordpress/dom"(exports, module) {
219 module.exports = window.wp.dom;
220 }
221 });
222
223 // packages/edit-widgets/build-module/index.mjs
224 var index_exports = {};
225 __export(index_exports, {
226 initialize: () => initialize,
227 initializeEditor: () => initializeEditor,
228 reinitializeEditor: () => reinitializeEditor,
229 store: () => store2
230 });
231 var import_blocks3 = __toESM(require_blocks(), 1);
232 var import_data32 = __toESM(require_data(), 1);
233 var import_deprecated6 = __toESM(require_deprecated(), 1);
234 var import_element26 = __toESM(require_element(), 1);
235 var import_block_library2 = __toESM(require_block_library(), 1);
236 var import_core_data12 = __toESM(require_core_data(), 1);
237 var import_widgets5 = __toESM(require_widgets(), 1);
238 var import_preferences10 = __toESM(require_preferences(), 1);
239
240 // packages/edit-widgets/build-module/store/index.mjs
241 var import_api_fetch = __toESM(require_api_fetch(), 1);
242 var import_data8 = __toESM(require_data(), 1);
243
244 // packages/edit-widgets/build-module/store/reducer.mjs
245 var import_data = __toESM(require_data(), 1);
246 function widgetAreasOpenState(state = {}, action) {
247 const { type } = action;
248 switch (type) {
249 case "SET_WIDGET_AREAS_OPEN_STATE": {
250 return action.widgetAreasOpenState;
251 }
252 case "SET_IS_WIDGET_AREA_OPEN": {
253 const { clientId, isOpen } = action;
254 return {
255 ...state,
256 [clientId]: isOpen
257 };
258 }
259 default: {
260 return state;
261 }
262 }
263 }
264 function blockInserterPanel(state = false, action) {
265 switch (action.type) {
266 case "SET_IS_LIST_VIEW_OPENED":
267 return action.isOpen ? false : state;
268 case "SET_IS_INSERTER_OPENED":
269 return action.value;
270 }
271 return state;
272 }
273 function listViewPanel(state = false, action) {
274 switch (action.type) {
275 case "SET_IS_INSERTER_OPENED":
276 return action.value ? false : state;
277 case "SET_IS_LIST_VIEW_OPENED":
278 return action.isOpen;
279 }
280 return state;
281 }
282 function listViewToggleRef(state = { current: null }) {
283 return state;
284 }
285 function inserterSidebarToggleRef(state = { current: null }) {
286 return state;
287 }
288 function widgetSavingLock(state = {}, action) {
289 switch (action.type) {
290 case "LOCK_WIDGET_SAVING":
291 return { ...state, [action.lockName]: true };
292 case "UNLOCK_WIDGET_SAVING": {
293 const { [action.lockName]: removedLockName, ...restState } = state;
294 return restState;
295 }
296 }
297 return state;
298 }
299 var reducer_default = (0, import_data.combineReducers)({
300 blockInserterPanel,
301 inserterSidebarToggleRef,
302 listViewPanel,
303 listViewToggleRef,
304 widgetAreasOpenState,
305 widgetSavingLock
306 });
307
308 // packages/edit-widgets/build-module/store/resolvers.mjs
309 var resolvers_exports = {};
310 __export(resolvers_exports, {
311 getWidgetAreas: () => getWidgetAreas,
312 getWidgets: () => getWidgets
313 });
314 var import_blocks2 = __toESM(require_blocks(), 1);
315 var import_core_data2 = __toESM(require_core_data(), 1);
316
317 // packages/edit-widgets/build-module/store/actions.mjs
318 var actions_exports2 = {};
319 __export(actions_exports2, {
320 closeGeneralSidebar: () => closeGeneralSidebar,
321 lockWidgetSaving: () => lockWidgetSaving,
322 moveBlockToWidgetArea: () => moveBlockToWidgetArea,
323 persistStubPost: () => persistStubPost,
324 saveEditedWidgetAreas: () => saveEditedWidgetAreas,
325 saveWidgetArea: () => saveWidgetArea,
326 saveWidgetAreas: () => saveWidgetAreas,
327 setIsInserterOpened: () => setIsInserterOpened,
328 setIsListViewOpened: () => setIsListViewOpened,
329 setIsWidgetAreaOpen: () => setIsWidgetAreaOpen,
330 setWidgetAreasOpenState: () => setWidgetAreasOpenState,
331 setWidgetIdForClientId: () => setWidgetIdForClientId,
332 unlockWidgetSaving: () => unlockWidgetSaving
333 });
334 var import_i18n3 = __toESM(require_i18n(), 1);
335 var import_notices = __toESM(require_notices(), 1);
336
337 // node_modules/clsx/dist/clsx.mjs
338 function r(e) {
339 var t, f, n = "";
340 if ("string" == typeof e || "number" == typeof e) n += e;
341 else if ("object" == typeof e) if (Array.isArray(e)) {
342 var o = e.length;
343 for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
344 } else for (f in e) e[f] && (n && (n += " "), n += f);
345 return n;
346 }
347 function clsx() {
348 for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
349 return n;
350 }
351 var clsx_default = clsx;
352
353 // packages/interface/build-module/components/complementary-area/index.mjs
354 var import_components5 = __toESM(require_components(), 1);
355 var import_data6 = __toESM(require_data(), 1);
356 var import_i18n = __toESM(require_i18n(), 1);
357
358 // packages/icons/build-module/library/block-default.mjs
359 var import_primitives = __toESM(require_primitives(), 1);
360 var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
361 var block_default_default = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.Path, { d: "M19 8h-1V6h-5v2h-2V6H6v2H5c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2zm.5 10c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5v-8c0-.3.2-.5.5-.5h14c.3 0 .5.2.5.5v8z" }) });
362
363 // packages/icons/build-module/library/check.mjs
364 var import_primitives2 = __toESM(require_primitives(), 1);
365 var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
366 var check_default = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.Path, { d: "M16.5 7.5 10 13.9l-2.5-2.4-1 1 3.5 3.6 7.5-7.6z" }) });
367
368 // packages/icons/build-module/library/close-small.mjs
369 var import_primitives3 = __toESM(require_primitives(), 1);
370 var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);
371 var close_small_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.Path, { d: "M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z" }) });
372
373 // packages/icons/build-module/library/drawer-left.mjs
374 var import_primitives4 = __toESM(require_primitives(), 1);
375 var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1);
376 var drawer_left_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM8.5 18.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h2.5v13zm10-.5c0 .3-.2.5-.5.5h-8v-13h8c.3 0 .5.2.5.5v12z" }) });
377
378 // packages/icons/build-module/library/drawer-right.mjs
379 var import_primitives5 = __toESM(require_primitives(), 1);
380 var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1);
381 var drawer_right_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-4 14.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h8v13zm4.5-.5c0 .3-.2.5-.5.5h-2.5v-13H18c.3 0 .5.2.5.5v12z" }) });
382
383 // packages/icons/build-module/library/external.mjs
384 var import_primitives6 = __toESM(require_primitives(), 1);
385 var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1);
386 var external_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.Path, { 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" }) });
387
388 // packages/icons/build-module/library/list-view.mjs
389 var import_primitives7 = __toESM(require_primitives(), 1);
390 var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);
391 var list_view_default = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.Path, { d: "M3 6h11v1.5H3V6Zm3.5 5.5h11V13h-11v-1.5ZM21 17H10v1.5h11V17Z" }) });
392
393 // packages/icons/build-module/library/more-vertical.mjs
394 var import_primitives8 = __toESM(require_primitives(), 1);
395 var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
396 var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.Path, { d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" }) });
397
398 // packages/icons/build-module/library/plus.mjs
399 var import_primitives9 = __toESM(require_primitives(), 1);
400 var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1);
401 var plus_default = /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.Path, { d: "M11 12.5V17.5H12.5V12.5H17.5V11H12.5V6H11V11H6V12.5H11Z" }) });
402
403 // packages/icons/build-module/library/redo.mjs
404 var import_primitives10 = __toESM(require_primitives(), 1);
405 var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);
406 var redo_default = /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.Path, { d: "M15.6 6.5l-1.1 1 2.9 3.3H8c-.9 0-1.7.3-2.3.9-1.4 1.5-1.4 4.2-1.4 5.6v.2h1.5v-.3c0-1.1 0-3.5 1-4.5.3-.3.7-.5 1.3-.5h9.2L14.5 15l1.1 1.1 4.6-4.6-4.6-5z" }) });
407
408 // packages/icons/build-module/library/star-empty.mjs
409 var import_primitives11 = __toESM(require_primitives(), 1);
410 var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
411 var star_empty_default = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M9.706 8.646a.25.25 0 01-.188.137l-4.626.672a.25.25 0 00-.139.427l3.348 3.262a.25.25 0 01.072.222l-.79 4.607a.25.25 0 00.362.264l4.138-2.176a.25.25 0 01.233 0l4.137 2.175a.25.25 0 00.363-.263l-.79-4.607a.25.25 0 01.072-.222l3.347-3.262a.25.25 0 00-.139-.427l-4.626-.672a.25.25 0 01-.188-.137l-2.069-4.192a.25.25 0 00-.448 0L9.706 8.646zM12 7.39l-.948 1.921a1.75 1.75 0 01-1.317.957l-2.12.308 1.534 1.495c.412.402.6.982.503 1.55l-.362 2.11 1.896-.997a1.75 1.75 0 011.629 0l1.895.997-.362-2.11a1.75 1.75 0 01.504-1.55l1.533-1.495-2.12-.308a1.75 1.75 0 01-1.317-.957L12 7.39z" }) });
412
413 // packages/icons/build-module/library/star-filled.mjs
414 var import_primitives12 = __toESM(require_primitives(), 1);
415 var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
416 var star_filled_default = /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.Path, { d: "M11.776 4.454a.25.25 0 01.448 0l2.069 4.192a.25.25 0 00.188.137l4.626.672a.25.25 0 01.139.426l-3.348 3.263a.25.25 0 00-.072.222l.79 4.607a.25.25 0 01-.362.263l-4.138-2.175a.25.25 0 00-.232 0l-4.138 2.175a.25.25 0 01-.363-.263l.79-4.607a.25.25 0 00-.071-.222L4.754 9.881a.25.25 0 01.139-.426l4.626-.672a.25.25 0 00.188-.137l2.069-4.192z" }) });
417
418 // packages/icons/build-module/library/undo.mjs
419 var import_primitives13 = __toESM(require_primitives(), 1);
420 var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
421 var undo_default = /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.Path, { d: "M18.3 11.7c-.6-.6-1.4-.9-2.3-.9H6.7l2.9-3.3-1.1-1-4.5 5L8.5 16l1-1-2.7-2.7H16c.5 0 .9.2 1.3.5 1 1 1 3.4 1 4.5v.3h1.5v-.2c0-1.5 0-4.3-1.5-5.7z" }) });
422
423 // packages/interface/build-module/components/complementary-area/index.mjs
424 var import_element2 = __toESM(require_element(), 1);
425 var import_viewport = __toESM(require_viewport(), 1);
426 var import_preferences3 = __toESM(require_preferences(), 1);
427 var import_compose = __toESM(require_compose(), 1);
428 var import_plugins2 = __toESM(require_plugins(), 1);
429
430 // packages/interface/build-module/components/complementary-area-toggle/index.mjs
431 var import_components = __toESM(require_components(), 1);
432 var import_data5 = __toESM(require_data(), 1);
433 var import_plugins = __toESM(require_plugins(), 1);
434
435 // packages/interface/build-module/store/index.mjs
436 var import_data4 = __toESM(require_data(), 1);
437
438 // packages/interface/build-module/store/actions.mjs
439 var actions_exports = {};
440 __export(actions_exports, {
441 closeModal: () => closeModal,
442 disableComplementaryArea: () => disableComplementaryArea,
443 enableComplementaryArea: () => enableComplementaryArea,
444 openModal: () => openModal,
445 pinItem: () => pinItem,
446 setDefaultComplementaryArea: () => setDefaultComplementaryArea,
447 setFeatureDefaults: () => setFeatureDefaults,
448 setFeatureValue: () => setFeatureValue,
449 toggleFeature: () => toggleFeature,
450 unpinItem: () => unpinItem
451 });
452 var import_deprecated2 = __toESM(require_deprecated(), 1);
453 var import_preferences = __toESM(require_preferences(), 1);
454
455 // packages/interface/build-module/store/deprecated.mjs
456 var import_deprecated = __toESM(require_deprecated(), 1);
457 function normalizeComplementaryAreaScope(scope) {
458 if (["core/edit-post", "core/edit-site"].includes(scope)) {
459 (0, import_deprecated.default)(`${scope} interface scope`, {
460 alternative: "core interface scope",
461 hint: "core/edit-post and core/edit-site are merging.",
462 version: "6.6"
463 });
464 return "core";
465 }
466 return scope;
467 }
468 function normalizeComplementaryAreaName(scope, name2) {
469 if (scope === "core" && name2 === "edit-site/template") {
470 (0, import_deprecated.default)(`edit-site/template sidebar`, {
471 alternative: "edit-post/document",
472 version: "6.6"
473 });
474 return "edit-post/document";
475 }
476 if (scope === "core" && name2 === "edit-site/block-inspector") {
477 (0, import_deprecated.default)(`edit-site/block-inspector sidebar`, {
478 alternative: "edit-post/block",
479 version: "6.6"
480 });
481 return "edit-post/block";
482 }
483 return name2;
484 }
485
486 // packages/interface/build-module/store/actions.mjs
487 var setDefaultComplementaryArea = (scope, area) => {
488 scope = normalizeComplementaryAreaScope(scope);
489 area = normalizeComplementaryAreaName(scope, area);
490 return {
491 type: "SET_DEFAULT_COMPLEMENTARY_AREA",
492 scope,
493 area
494 };
495 };
496 var enableComplementaryArea = (scope, area) => ({ registry, dispatch: dispatch2 }) => {
497 if (!area) {
498 return;
499 }
500 scope = normalizeComplementaryAreaScope(scope);
501 area = normalizeComplementaryAreaName(scope, area);
502 const isComplementaryAreaVisible = registry.select(import_preferences.store).get(scope, "isComplementaryAreaVisible");
503 if (!isComplementaryAreaVisible) {
504 registry.dispatch(import_preferences.store).set(scope, "isComplementaryAreaVisible", true);
505 }
506 dispatch2({
507 type: "ENABLE_COMPLEMENTARY_AREA",
508 scope,
509 area
510 });
511 };
512 var disableComplementaryArea = (scope) => ({ registry }) => {
513 scope = normalizeComplementaryAreaScope(scope);
514 const isComplementaryAreaVisible = registry.select(import_preferences.store).get(scope, "isComplementaryAreaVisible");
515 if (isComplementaryAreaVisible) {
516 registry.dispatch(import_preferences.store).set(scope, "isComplementaryAreaVisible", false);
517 }
518 };
519 var pinItem = (scope, item) => ({ registry }) => {
520 if (!item) {
521 return;
522 }
523 scope = normalizeComplementaryAreaScope(scope);
524 item = normalizeComplementaryAreaName(scope, item);
525 const pinnedItems = registry.select(import_preferences.store).get(scope, "pinnedItems");
526 if (pinnedItems?.[item] === true) {
527 return;
528 }
529 registry.dispatch(import_preferences.store).set(scope, "pinnedItems", {
530 ...pinnedItems,
531 [item]: true
532 });
533 };
534 var unpinItem = (scope, item) => ({ registry }) => {
535 if (!item) {
536 return;
537 }
538 scope = normalizeComplementaryAreaScope(scope);
539 item = normalizeComplementaryAreaName(scope, item);
540 const pinnedItems = registry.select(import_preferences.store).get(scope, "pinnedItems");
541 registry.dispatch(import_preferences.store).set(scope, "pinnedItems", {
542 ...pinnedItems,
543 [item]: false
544 });
545 };
546 function toggleFeature(scope, featureName) {
547 return function({ registry }) {
548 (0, import_deprecated2.default)(`dispatch( 'core/interface' ).toggleFeature`, {
549 since: "6.0",
550 alternative: `dispatch( 'core/preferences' ).toggle`
551 });
552 registry.dispatch(import_preferences.store).toggle(scope, featureName);
553 };
554 }
555 function setFeatureValue(scope, featureName, value) {
556 return function({ registry }) {
557 (0, import_deprecated2.default)(`dispatch( 'core/interface' ).setFeatureValue`, {
558 since: "6.0",
559 alternative: `dispatch( 'core/preferences' ).set`
560 });
561 registry.dispatch(import_preferences.store).set(scope, featureName, !!value);
562 };
563 }
564 function setFeatureDefaults(scope, defaults) {
565 return function({ registry }) {
566 (0, import_deprecated2.default)(`dispatch( 'core/interface' ).setFeatureDefaults`, {
567 since: "6.0",
568 alternative: `dispatch( 'core/preferences' ).setDefaults`
569 });
570 registry.dispatch(import_preferences.store).setDefaults(scope, defaults);
571 };
572 }
573 function openModal(name2) {
574 return {
575 type: "OPEN_MODAL",
576 name: name2
577 };
578 }
579 function closeModal() {
580 return {
581 type: "CLOSE_MODAL"
582 };
583 }
584
585 // packages/interface/build-module/store/selectors.mjs
586 var selectors_exports = {};
587 __export(selectors_exports, {
588 getActiveComplementaryArea: () => getActiveComplementaryArea,
589 isComplementaryAreaLoading: () => isComplementaryAreaLoading,
590 isFeatureActive: () => isFeatureActive,
591 isItemPinned: () => isItemPinned,
592 isModalActive: () => isModalActive
593 });
594 var import_data2 = __toESM(require_data(), 1);
595 var import_deprecated4 = __toESM(require_deprecated(), 1);
596 var import_preferences2 = __toESM(require_preferences(), 1);
597 var getActiveComplementaryArea = (0, import_data2.createRegistrySelector)(
598 (select) => (state, scope) => {
599 scope = normalizeComplementaryAreaScope(scope);
600 const isComplementaryAreaVisible = select(import_preferences2.store).get(
601 scope,
602 "isComplementaryAreaVisible"
603 );
604 if (isComplementaryAreaVisible === void 0) {
605 return void 0;
606 }
607 if (isComplementaryAreaVisible === false) {
608 return null;
609 }
610 return state?.complementaryAreas?.[scope];
611 }
612 );
613 var isComplementaryAreaLoading = (0, import_data2.createRegistrySelector)(
614 (select) => (state, scope) => {
615 scope = normalizeComplementaryAreaScope(scope);
616 const isVisible = select(import_preferences2.store).get(
617 scope,
618 "isComplementaryAreaVisible"
619 );
620 const identifier = state?.complementaryAreas?.[scope];
621 return isVisible && identifier === void 0;
622 }
623 );
624 var isItemPinned = (0, import_data2.createRegistrySelector)(
625 (select) => (state, scope, item) => {
626 scope = normalizeComplementaryAreaScope(scope);
627 item = normalizeComplementaryAreaName(scope, item);
628 const pinnedItems = select(import_preferences2.store).get(
629 scope,
630 "pinnedItems"
631 );
632 return pinnedItems?.[item] ?? true;
633 }
634 );
635 var isFeatureActive = (0, import_data2.createRegistrySelector)(
636 (select) => (state, scope, featureName) => {
637 (0, import_deprecated4.default)(
638 `select( 'core/interface' ).isFeatureActive( scope, featureName )`,
639 {
640 since: "6.0",
641 alternative: `select( 'core/preferences' ).get( scope, featureName )`
642 }
643 );
644 return !!select(import_preferences2.store).get(scope, featureName);
645 }
646 );
647 function isModalActive(state, modalName) {
648 return state.activeModal === modalName;
649 }
650
651 // packages/interface/build-module/store/reducer.mjs
652 var import_data3 = __toESM(require_data(), 1);
653 function complementaryAreas(state = {}, action) {
654 switch (action.type) {
655 case "SET_DEFAULT_COMPLEMENTARY_AREA": {
656 const { scope, area } = action;
657 if (state[scope]) {
658 return state;
659 }
660 return {
661 ...state,
662 [scope]: area
663 };
664 }
665 case "ENABLE_COMPLEMENTARY_AREA": {
666 const { scope, area } = action;
667 return {
668 ...state,
669 [scope]: area
670 };
671 }
672 }
673 return state;
674 }
675 function activeModal(state = null, action) {
676 switch (action.type) {
677 case "OPEN_MODAL":
678 return action.name;
679 case "CLOSE_MODAL":
680 return null;
681 }
682 return state;
683 }
684 var reducer_default2 = (0, import_data3.combineReducers)({
685 complementaryAreas,
686 activeModal
687 });
688
689 // packages/interface/build-module/store/constants.mjs
690 var STORE_NAME = "core/interface";
691
692 // packages/interface/build-module/store/index.mjs
693 var store = (0, import_data4.createReduxStore)(STORE_NAME, {
694 reducer: reducer_default2,
695 actions: actions_exports,
696 selectors: selectors_exports
697 });
698 (0, import_data4.register)(store);
699
700 // packages/interface/build-module/components/complementary-area-toggle/index.mjs
701 var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
702 function roleSupportsCheckedState(role) {
703 return [
704 "checkbox",
705 "option",
706 "radio",
707 "switch",
708 "menuitemcheckbox",
709 "menuitemradio",
710 "treeitem"
711 ].includes(role);
712 }
713 function ComplementaryAreaToggle({
714 as = import_components.Button,
715 scope,
716 identifier: identifierProp,
717 icon: iconProp,
718 selectedIcon,
719 name: name2,
720 shortcut,
721 ...props
722 }) {
723 const ComponentToUse = as;
724 const context = (0, import_plugins.usePluginContext)();
725 const icon = iconProp || context.icon;
726 const identifier = identifierProp || `${context.name}/${name2}`;
727 const isSelected = (0, import_data5.useSelect)(
728 (select) => select(store).getActiveComplementaryArea(scope) === identifier,
729 [identifier, scope]
730 );
731 const { enableComplementaryArea: enableComplementaryArea2, disableComplementaryArea: disableComplementaryArea2 } = (0, import_data5.useDispatch)(store);
732 return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
733 ComponentToUse,
734 {
735 icon: selectedIcon && isSelected ? selectedIcon : icon,
736 "aria-controls": identifier.replace("/", ":"),
737 "aria-checked": roleSupportsCheckedState(props.role) ? isSelected : void 0,
738 onClick: () => {
739 if (isSelected) {
740 disableComplementaryArea2(scope);
741 } else {
742 enableComplementaryArea2(scope, identifier);
743 }
744 },
745 shortcut,
746 ...props
747 }
748 );
749 }
750
751 // packages/interface/build-module/components/complementary-area-header/index.mjs
752 var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);
753 var ComplementaryAreaHeader = ({
754 children,
755 className,
756 toggleButtonProps
757 }) => {
758 const toggleButton = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ComplementaryAreaToggle, { icon: close_small_default, ...toggleButtonProps });
759 return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
760 "div",
761 {
762 className: clsx_default(
763 "components-panel__header",
764 "interface-complementary-area-header",
765 className
766 ),
767 tabIndex: -1,
768 children: [
769 children,
770 toggleButton
771 ]
772 }
773 );
774 };
775 var complementary_area_header_default = ComplementaryAreaHeader;
776
777 // packages/interface/build-module/components/complementary-area-more-menu-item/index.mjs
778 var import_components3 = __toESM(require_components(), 1);
779
780 // packages/interface/build-module/components/action-item/index.mjs
781 var import_components2 = __toESM(require_components(), 1);
782 var import_element = __toESM(require_element(), 1);
783 var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1);
784 var noop = () => {
785 };
786 function ActionItemSlot({
787 name: name2,
788 as: Component2 = import_components2.MenuGroup,
789 fillProps = {},
790 bubblesVirtually,
791 ...props
792 }) {
793 return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
794 import_components2.Slot,
795 {
796 name: name2,
797 bubblesVirtually,
798 fillProps,
799 children: (fills) => {
800 if (!import_element.Children.toArray(fills).length) {
801 return null;
802 }
803 const initializedByPlugins = [];
804 import_element.Children.forEach(
805 fills,
806 ({
807 props: { __unstableExplicitMenuItem, __unstableTarget }
808 }) => {
809 if (__unstableTarget && __unstableExplicitMenuItem) {
810 initializedByPlugins.push(__unstableTarget);
811 }
812 }
813 );
814 const children = import_element.Children.map(fills, (child) => {
815 if (!child.props.__unstableExplicitMenuItem && initializedByPlugins.includes(
816 child.props.__unstableTarget
817 )) {
818 return null;
819 }
820 return child;
821 });
822 return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Component2, { ...props, children });
823 }
824 }
825 );
826 }
827 function ActionItem({ name: name2, as: Component2 = import_components2.Button, onClick, ...props }) {
828 return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_components2.Fill, { name: name2, children: ({ onClick: fpOnClick }) => {
829 return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
830 Component2,
831 {
832 onClick: onClick || fpOnClick ? (...args) => {
833 (onClick || noop)(...args);
834 (fpOnClick || noop)(...args);
835 } : void 0,
836 ...props
837 }
838 );
839 } });
840 }
841 ActionItem.Slot = ActionItemSlot;
842 var action_item_default = ActionItem;
843
844 // packages/interface/build-module/components/complementary-area-more-menu-item/index.mjs
845 var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1);
846 var PluginsMenuItem = ({
847 // Menu item is marked with unstable prop for backward compatibility.
848 // They are removed so they don't leak to DOM elements.
849 // @see https://github.com/WordPress/gutenberg/issues/14457
850 __unstableExplicitMenuItem,
851 __unstableTarget,
852 ...restProps
853 }) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_components3.MenuItem, { ...restProps });
854 function ComplementaryAreaMoreMenuItem({
855 scope,
856 target,
857 __unstableExplicitMenuItem,
858 ...props
859 }) {
860 return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
861 ComplementaryAreaToggle,
862 {
863 as: (toggleProps) => {
864 return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
865 action_item_default,
866 {
867 __unstableExplicitMenuItem,
868 __unstableTarget: `${scope}/${target}`,
869 as: PluginsMenuItem,
870 name: `${scope}/plugin-more-menu`,
871 ...toggleProps
872 }
873 );
874 },
875 role: "menuitemcheckbox",
876 selectedIcon: check_default,
877 name: target,
878 scope,
879 ...props
880 }
881 );
882 }
883
884 // packages/interface/build-module/components/pinned-items/index.mjs
885 var import_components4 = __toESM(require_components(), 1);
886 var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1);
887 function PinnedItems({ scope, ...props }) {
888 return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_components4.Fill, { name: `PinnedItems/${scope}`, ...props });
889 }
890 function PinnedItemsSlot({ scope, className, ...props }) {
891 return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_components4.Slot, { name: `PinnedItems/${scope}`, ...props, children: (fills) => fills?.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
892 "div",
893 {
894 className: clsx_default(
895 className,
896 "interface-pinned-items"
897 ),
898 children: fills
899 }
900 ) });
901 }
902 PinnedItems.Slot = PinnedItemsSlot;
903 var pinned_items_default = PinnedItems;
904
905 // packages/interface/build-module/components/complementary-area/index.mjs
906 var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1);
907 var ANIMATION_DURATION = 0.3;
908 function ComplementaryAreaSlot({ scope, ...props }) {
909 return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_components5.Slot, { name: `ComplementaryArea/${scope}`, ...props });
910 }
911 var SIDEBAR_WIDTH = 280;
912 var variants = {
913 open: { width: SIDEBAR_WIDTH },
914 closed: { width: 0 },
915 mobileOpen: { width: "100vw" }
916 };
917 function ComplementaryAreaFill({
918 activeArea,
919 isActive,
920 scope,
921 children,
922 className,
923 id
924 }) {
925 const disableMotion = (0, import_compose.useReducedMotion)();
926 const isMobileViewport = (0, import_compose.useViewportMatch)("medium", "<");
927 const previousActiveArea = (0, import_compose.usePrevious)(activeArea);
928 const previousIsActive = (0, import_compose.usePrevious)(isActive);
929 const [, setState] = (0, import_element2.useState)({});
930 (0, import_element2.useEffect)(() => {
931 setState({});
932 }, [isActive]);
933 const transition = {
934 type: "tween",
935 duration: disableMotion || isMobileViewport || !!previousActiveArea && !!activeArea && activeArea !== previousActiveArea ? 0 : ANIMATION_DURATION,
936 ease: [0.6, 0, 0.4, 1]
937 };
938 return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_components5.Fill, { name: `ComplementaryArea/${scope}`, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_components5.__unstableAnimatePresence, { initial: false, children: (previousIsActive || isActive) && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
939 import_components5.__unstableMotion.div,
940 {
941 variants,
942 initial: "closed",
943 animate: isMobileViewport ? "mobileOpen" : "open",
944 exit: "closed",
945 transition,
946 className: "interface-complementary-area__fill",
947 children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
948 "div",
949 {
950 id,
951 className,
952 style: {
953 width: isMobileViewport ? "100vw" : SIDEBAR_WIDTH
954 },
955 children
956 }
957 )
958 }
959 ) }) });
960 }
961 function useAdjustComplementaryListener(scope, identifier, activeArea, isActive, isSmall) {
962 const previousIsSmallRef = (0, import_element2.useRef)(false);
963 const shouldOpenWhenNotSmallRef = (0, import_element2.useRef)(false);
964 const { enableComplementaryArea: enableComplementaryArea2, disableComplementaryArea: disableComplementaryArea2 } = (0, import_data6.useDispatch)(store);
965 (0, import_element2.useEffect)(() => {
966 if (isActive && isSmall && !previousIsSmallRef.current) {
967 disableComplementaryArea2(scope);
968 shouldOpenWhenNotSmallRef.current = true;
969 } else if (
970 // If there is a flag indicating the complementary area should be
971 // enabled when we go from small to big window size and we are going
972 // from a small to big window size.
973 shouldOpenWhenNotSmallRef.current && !isSmall && previousIsSmallRef.current
974 ) {
975 shouldOpenWhenNotSmallRef.current = false;
976 enableComplementaryArea2(scope, identifier);
977 } else if (
978 // If the flag is indicating the current complementary should be
979 // reopened but another complementary area becomes active, remove
980 // the flag.
981 shouldOpenWhenNotSmallRef.current && activeArea && activeArea !== identifier
982 ) {
983 shouldOpenWhenNotSmallRef.current = false;
984 }
985 if (isSmall !== previousIsSmallRef.current) {
986 previousIsSmallRef.current = isSmall;
987 }
988 }, [
989 isActive,
990 isSmall,
991 scope,
992 identifier,
993 activeArea,
994 disableComplementaryArea2,
995 enableComplementaryArea2
996 ]);
997 }
998 function ComplementaryArea({
999 children,
1000 className,
1001 closeLabel = (0, import_i18n.__)("Close plugin"),
1002 identifier: identifierProp,
1003 header,
1004 headerClassName,
1005 icon: iconProp,
1006 isPinnable = true,
1007 panelClassName,
1008 scope,
1009 name: name2,
1010 title,
1011 toggleShortcut,
1012 isActiveByDefault
1013 }) {
1014 const context = (0, import_plugins2.usePluginContext)();
1015 const icon = iconProp || context.icon;
1016 const identifier = identifierProp || `${context.name}/${name2}`;
1017 const [isReady, setIsReady] = (0, import_element2.useState)(false);
1018 const {
1019 isLoading,
1020 isActive,
1021 isPinned,
1022 activeArea,
1023 isSmall,
1024 isLarge,
1025 showIconLabels
1026 } = (0, import_data6.useSelect)(
1027 (select) => {
1028 const {
1029 getActiveComplementaryArea: getActiveComplementaryArea2,
1030 isComplementaryAreaLoading: isComplementaryAreaLoading2,
1031 isItemPinned: isItemPinned2
1032 } = select(store);
1033 const { get } = select(import_preferences3.store);
1034 const _activeArea = getActiveComplementaryArea2(scope);
1035 return {
1036 isLoading: isComplementaryAreaLoading2(scope),
1037 isActive: _activeArea === identifier,
1038 isPinned: isItemPinned2(scope, identifier),
1039 activeArea: _activeArea,
1040 isSmall: select(import_viewport.store).isViewportMatch("< medium"),
1041 isLarge: select(import_viewport.store).isViewportMatch("large"),
1042 showIconLabels: get("core", "showIconLabels")
1043 };
1044 },
1045 [identifier, scope]
1046 );
1047 const isMobileViewport = (0, import_compose.useViewportMatch)("medium", "<");
1048 useAdjustComplementaryListener(
1049 scope,
1050 identifier,
1051 activeArea,
1052 isActive,
1053 isSmall
1054 );
1055 const {
1056 enableComplementaryArea: enableComplementaryArea2,
1057 disableComplementaryArea: disableComplementaryArea2,
1058 pinItem: pinItem2,
1059 unpinItem: unpinItem2
1060 } = (0, import_data6.useDispatch)(store);
1061 (0, import_element2.useEffect)(() => {
1062 if (isActiveByDefault && activeArea === void 0 && !isSmall) {
1063 enableComplementaryArea2(scope, identifier);
1064 } else if (activeArea === void 0 && isSmall) {
1065 disableComplementaryArea2(scope, identifier);
1066 }
1067 setIsReady(true);
1068 }, [
1069 activeArea,
1070 isActiveByDefault,
1071 scope,
1072 identifier,
1073 isSmall,
1074 enableComplementaryArea2,
1075 disableComplementaryArea2
1076 ]);
1077 if (!isReady) {
1078 return;
1079 }
1080 return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
1081 isPinnable && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(pinned_items_default, { scope, children: isPinned && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1082 ComplementaryAreaToggle,
1083 {
1084 scope,
1085 identifier,
1086 isPressed: isActive && (!showIconLabels || isLarge),
1087 "aria-expanded": isActive,
1088 "aria-disabled": isLoading,
1089 label: title,
1090 icon: showIconLabels ? check_default : icon,
1091 showTooltip: !showIconLabels,
1092 variant: showIconLabels ? "tertiary" : void 0,
1093 size: "compact",
1094 shortcut: toggleShortcut
1095 }
1096 ) }),
1097 name2 && isPinnable && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1098 ComplementaryAreaMoreMenuItem,
1099 {
1100 target: name2,
1101 scope,
1102 icon,
1103 identifier,
1104 children: title
1105 }
1106 ),
1107 /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1108 ComplementaryAreaFill,
1109 {
1110 activeArea,
1111 isActive,
1112 className: clsx_default("interface-complementary-area", className),
1113 scope,
1114 id: identifier.replace("/", ":"),
1115 children: [
1116 /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1117 complementary_area_header_default,
1118 {
1119 className: headerClassName,
1120 closeLabel,
1121 onClose: () => disableComplementaryArea2(scope),
1122 toggleButtonProps: {
1123 label: closeLabel,
1124 size: "compact",
1125 shortcut: toggleShortcut,
1126 scope,
1127 identifier
1128 },
1129 children: header || /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
1130 /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("h2", { className: "interface-complementary-area-header__title", children: title }),
1131 isPinnable && !isMobileViewport && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1132 import_components5.Button,
1133 {
1134 className: "interface-complementary-area__pin-unpin-item",
1135 icon: isPinned ? star_filled_default : star_empty_default,
1136 label: isPinned ? (0, import_i18n.__)("Unpin from toolbar") : (0, import_i18n.__)("Pin to toolbar"),
1137 onClick: () => (isPinned ? unpinItem2 : pinItem2)(
1138 scope,
1139 identifier
1140 ),
1141 isPressed: isPinned,
1142 "aria-expanded": isPinned,
1143 size: "compact"
1144 }
1145 )
1146 ] })
1147 }
1148 ),
1149 /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_components5.Panel, { className: panelClassName, children })
1150 ]
1151 }
1152 )
1153 ] });
1154 }
1155 ComplementaryArea.Slot = ComplementaryAreaSlot;
1156 var complementary_area_default = ComplementaryArea;
1157
1158 // node_modules/@base-ui/utils/esm/useRefWithInit.js
1159 var React = __toESM(require_react(), 1);
1160 var UNINITIALIZED = {};
1161 function useRefWithInit(init, initArg) {
1162 const ref = React.useRef(UNINITIALIZED);
1163 if (ref.current === UNINITIALIZED) {
1164 ref.current = init(initArg);
1165 }
1166 return ref;
1167 }
1168
1169 // node_modules/@base-ui/utils/esm/warn.js
1170 var set;
1171 if (true) {
1172 set = /* @__PURE__ */ new Set();
1173 }
1174 function warn(...messages) {
1175 if (true) {
1176 const messageKey = messages.join(" ");
1177 if (!set.has(messageKey)) {
1178 set.add(messageKey);
1179 console.warn(`Base UI: ${messageKey}`);
1180 }
1181 }
1182 }
1183
1184 // node_modules/@base-ui/react/esm/internals/useRenderElement.js
1185 var React4 = __toESM(require_react(), 1);
1186
1187 // node_modules/@base-ui/utils/esm/useMergedRefs.js
1188 function useMergedRefs(a, b, c, d) {
1189 const forkRef = useRefWithInit(createForkRef).current;
1190 if (didChange(forkRef, a, b, c, d)) {
1191 update(forkRef, [a, b, c, d]);
1192 }
1193 return forkRef.callback;
1194 }
1195 function useMergedRefsN(refs) {
1196 const forkRef = useRefWithInit(createForkRef).current;
1197 if (didChangeN(forkRef, refs)) {
1198 update(forkRef, refs);
1199 }
1200 return forkRef.callback;
1201 }
1202 function createForkRef() {
1203 return {
1204 callback: null,
1205 cleanup: null,
1206 refs: []
1207 };
1208 }
1209 function didChange(forkRef, a, b, c, d) {
1210 return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c || forkRef.refs[3] !== d;
1211 }
1212 function didChangeN(forkRef, newRefs) {
1213 return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index) => ref !== newRefs[index]);
1214 }
1215 function update(forkRef, refs) {
1216 forkRef.refs = refs;
1217 if (refs.every((ref) => ref == null)) {
1218 forkRef.callback = null;
1219 return;
1220 }
1221 forkRef.callback = (instance) => {
1222 if (forkRef.cleanup) {
1223 forkRef.cleanup();
1224 forkRef.cleanup = null;
1225 }
1226 if (instance != null) {
1227 const cleanupCallbacks = Array(refs.length).fill(null);
1228 for (let i = 0; i < refs.length; i += 1) {
1229 const ref = refs[i];
1230 if (ref == null) {
1231 continue;
1232 }
1233 switch (typeof ref) {
1234 case "function": {
1235 const refCleanup = ref(instance);
1236 if (typeof refCleanup === "function") {
1237 cleanupCallbacks[i] = refCleanup;
1238 }
1239 break;
1240 }
1241 case "object": {
1242 ref.current = instance;
1243 break;
1244 }
1245 default:
1246 }
1247 }
1248 forkRef.cleanup = () => {
1249 for (let i = 0; i < refs.length; i += 1) {
1250 const ref = refs[i];
1251 if (ref == null) {
1252 continue;
1253 }
1254 switch (typeof ref) {
1255 case "function": {
1256 const cleanupCallback = cleanupCallbacks[i];
1257 if (typeof cleanupCallback === "function") {
1258 cleanupCallback();
1259 } else {
1260 ref(null);
1261 }
1262 break;
1263 }
1264 case "object": {
1265 ref.current = null;
1266 break;
1267 }
1268 default:
1269 }
1270 }
1271 };
1272 }
1273 };
1274 }
1275
1276 // node_modules/@base-ui/utils/esm/getReactElementRef.js
1277 var React3 = __toESM(require_react(), 1);
1278
1279 // node_modules/@base-ui/utils/esm/reactVersion.js
1280 var React2 = __toESM(require_react(), 1);
1281 var majorVersion = parseInt(React2.version, 10);
1282 function isReactVersionAtLeast(reactVersionToCheck) {
1283 return majorVersion >= reactVersionToCheck;
1284 }
1285
1286 // node_modules/@base-ui/utils/esm/getReactElementRef.js
1287 function getReactElementRef(element) {
1288 if (!/* @__PURE__ */ React3.isValidElement(element)) {
1289 return null;
1290 }
1291 const reactElement = element;
1292 const propsWithRef = reactElement.props;
1293 return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null;
1294 }
1295
1296 // node_modules/@base-ui/utils/esm/mergeObjects.js
1297 function mergeObjects(a, b) {
1298 if (a && !b) {
1299 return a;
1300 }
1301 if (!a && b) {
1302 return b;
1303 }
1304 if (a || b) {
1305 return {
1306 ...a,
1307 ...b
1308 };
1309 }
1310 return void 0;
1311 }
1312
1313 // node_modules/@base-ui/utils/esm/empty.js
1314 var EMPTY_ARRAY = Object.freeze([]);
1315 var EMPTY_OBJECT = Object.freeze({});
1316
1317 // node_modules/@base-ui/react/esm/internals/getStateAttributesProps.js
1318 function getStateAttributesProps(state, customMapping) {
1319 const props = {};
1320 for (const key in state) {
1321 const value = state[key];
1322 if (customMapping?.hasOwnProperty(key)) {
1323 const customProps = customMapping[key](value);
1324 if (customProps != null) {
1325 Object.assign(props, customProps);
1326 }
1327 continue;
1328 }
1329 if (value === true) {
1330 props[`data-${key.toLowerCase()}`] = "";
1331 } else if (value) {
1332 props[`data-${key.toLowerCase()}`] = value.toString();
1333 }
1334 }
1335 return props;
1336 }
1337
1338 // node_modules/@base-ui/react/esm/utils/resolveClassName.js
1339 function resolveClassName(className, state) {
1340 return typeof className === "function" ? className(state) : className;
1341 }
1342
1343 // node_modules/@base-ui/react/esm/utils/resolveStyle.js
1344 function resolveStyle(style, state) {
1345 return typeof style === "function" ? style(state) : style;
1346 }
1347
1348 // node_modules/@base-ui/react/esm/merge-props/mergeProps.js
1349 var EMPTY_PROPS = {};
1350 function mergeProps(a, b, c, d, e) {
1351 if (!c && !d && !e && !a) {
1352 return createInitialMergedProps(b);
1353 }
1354 let merged = createInitialMergedProps(a);
1355 if (b) {
1356 merged = mergeInto(merged, b);
1357 }
1358 if (c) {
1359 merged = mergeInto(merged, c);
1360 }
1361 if (d) {
1362 merged = mergeInto(merged, d);
1363 }
1364 if (e) {
1365 merged = mergeInto(merged, e);
1366 }
1367 return merged;
1368 }
1369 function mergePropsN(props) {
1370 if (props.length === 0) {
1371 return EMPTY_PROPS;
1372 }
1373 if (props.length === 1) {
1374 return createInitialMergedProps(props[0]);
1375 }
1376 let merged = createInitialMergedProps(props[0]);
1377 for (let i = 1; i < props.length; i += 1) {
1378 merged = mergeInto(merged, props[i]);
1379 }
1380 return merged;
1381 }
1382 function createInitialMergedProps(inputProps) {
1383 if (isPropsGetter(inputProps)) {
1384 return {
1385 ...resolvePropsGetter(inputProps, EMPTY_PROPS)
1386 };
1387 }
1388 return copyInitialProps(inputProps);
1389 }
1390 function mergeInto(merged, inputProps) {
1391 if (isPropsGetter(inputProps)) {
1392 return resolvePropsGetter(inputProps, merged);
1393 }
1394 return mutablyMergeInto(merged, inputProps);
1395 }
1396 function copyInitialProps(inputProps) {
1397 const copiedProps = {
1398 ...inputProps
1399 };
1400 for (const propName in copiedProps) {
1401 const propValue = copiedProps[propName];
1402 if (isEventHandler(propName, propValue)) {
1403 copiedProps[propName] = wrapEventHandler(propValue);
1404 }
1405 }
1406 return copiedProps;
1407 }
1408 function mutablyMergeInto(mergedProps, externalProps) {
1409 if (!externalProps) {
1410 return mergedProps;
1411 }
1412 for (const propName in externalProps) {
1413 const externalPropValue = externalProps[propName];
1414 switch (propName) {
1415 case "style": {
1416 mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue);
1417 break;
1418 }
1419 case "className": {
1420 mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue);
1421 break;
1422 }
1423 default: {
1424 if (isEventHandler(propName, externalPropValue)) {
1425 mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue);
1426 } else {
1427 mergedProps[propName] = externalPropValue;
1428 }
1429 }
1430 }
1431 }
1432 return mergedProps;
1433 }
1434 function isEventHandler(key, value) {
1435 const code0 = key.charCodeAt(0);
1436 const code1 = key.charCodeAt(1);
1437 const code2 = key.charCodeAt(2);
1438 return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined");
1439 }
1440 function isPropsGetter(inputProps) {
1441 return typeof inputProps === "function";
1442 }
1443 function resolvePropsGetter(inputProps, previousProps) {
1444 if (isPropsGetter(inputProps)) {
1445 return inputProps(previousProps);
1446 }
1447 return inputProps ?? EMPTY_PROPS;
1448 }
1449 function mergeEventHandlers(ourHandler, theirHandler) {
1450 if (!theirHandler) {
1451 return ourHandler;
1452 }
1453 if (!ourHandler) {
1454 return wrapEventHandler(theirHandler);
1455 }
1456 return (...args) => {
1457 const event = args[0];
1458 if (isSyntheticEvent(event)) {
1459 const baseUIEvent = event;
1460 makeEventPreventable(baseUIEvent);
1461 const result2 = theirHandler(...args);
1462 if (!baseUIEvent.baseUIHandlerPrevented) {
1463 ourHandler?.(...args);
1464 }
1465 return result2;
1466 }
1467 const result = theirHandler(...args);
1468 ourHandler?.(...args);
1469 return result;
1470 };
1471 }
1472 function wrapEventHandler(handler) {
1473 if (!handler) {
1474 return handler;
1475 }
1476 return (...args) => {
1477 const event = args[0];
1478 if (isSyntheticEvent(event)) {
1479 makeEventPreventable(event);
1480 }
1481 return handler(...args);
1482 };
1483 }
1484 function makeEventPreventable(event) {
1485 event.preventBaseUIHandler = () => {
1486 event.baseUIHandlerPrevented = true;
1487 };
1488 return event;
1489 }
1490 function mergeClassNames(ourClassName, theirClassName) {
1491 if (theirClassName) {
1492 if (ourClassName) {
1493 return theirClassName + " " + ourClassName;
1494 }
1495 return theirClassName;
1496 }
1497 return ourClassName;
1498 }
1499 function isSyntheticEvent(event) {
1500 return event != null && typeof event === "object" && "nativeEvent" in event;
1501 }
1502
1503 // node_modules/@base-ui/react/esm/internals/useRenderElement.js
1504 var import_react = __toESM(require_react(), 1);
1505 function useRenderElement(element, componentProps, params = {}) {
1506 const renderProp = componentProps.render;
1507 const outProps = useRenderElementProps(componentProps, params);
1508 if (params.enabled === false) {
1509 return null;
1510 }
1511 const state = params.state ?? EMPTY_OBJECT;
1512 return evaluateRenderProp(element, renderProp, outProps, state);
1513 }
1514 function useRenderElementProps(componentProps, params = {}) {
1515 const {
1516 className: classNameProp,
1517 style: styleProp,
1518 render: renderProp
1519 } = componentProps;
1520 const {
1521 state = EMPTY_OBJECT,
1522 ref,
1523 props,
1524 stateAttributesMapping,
1525 enabled = true
1526 } = params;
1527 const className = enabled ? resolveClassName(classNameProp, state) : void 0;
1528 const style = enabled ? resolveStyle(styleProp, state) : void 0;
1529 const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping) : EMPTY_OBJECT;
1530 const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0;
1531 const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT;
1532 if (typeof document !== "undefined") {
1533 if (!enabled) {
1534 useMergedRefs(null, null);
1535 } else if (Array.isArray(ref)) {
1536 outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]);
1537 } else {
1538 outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref);
1539 }
1540 }
1541 if (!enabled) {
1542 return EMPTY_OBJECT;
1543 }
1544 if (className !== void 0) {
1545 outProps.className = mergeClassNames(outProps.className, className);
1546 }
1547 if (style !== void 0) {
1548 outProps.style = mergeObjects(outProps.style, style);
1549 }
1550 return outProps;
1551 }
1552 function resolveRenderFunctionProps(props) {
1553 if (Array.isArray(props)) {
1554 return mergePropsN(props);
1555 }
1556 return mergeProps(void 0, props);
1557 }
1558 var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy");
1559 var COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/;
1560 var LOWERCASE_CHARACTER_PATTERN = /[a-z]/;
1561 function evaluateRenderProp(element, render, props, state) {
1562 if (render) {
1563 if (typeof render === "function") {
1564 if (true) {
1565 warnIfRenderPropLooksLikeComponent(render);
1566 }
1567 return render(props, state);
1568 }
1569 const mergedProps = mergeProps(props, render.props);
1570 mergedProps.ref = props.ref;
1571 let newElement = render;
1572 if (newElement?.$$typeof === REACT_LAZY_TYPE) {
1573 const children = React4.Children.toArray(render);
1574 newElement = children[0];
1575 }
1576 if (true) {
1577 if (!/* @__PURE__ */ React4.isValidElement(newElement)) {
1578 throw new Error(["Base UI: The `render` prop was provided an invalid React element as `React.isValidElement(render)` is `false`.", "A valid React element must be provided to the `render` prop because it is cloned with props to replace the default element.", "https://base-ui.com/r/invalid-render-prop"].join("\n"));
1579 }
1580 }
1581 return /* @__PURE__ */ React4.cloneElement(newElement, mergedProps);
1582 }
1583 if (element) {
1584 if (typeof element === "string") {
1585 return renderTag(element, props);
1586 }
1587 }
1588 throw new Error(true ? "Base UI: Render element or function are not defined." : formatErrorMessage_default(8));
1589 }
1590 function warnIfRenderPropLooksLikeComponent(renderFn) {
1591 const functionName = renderFn.name;
1592 if (functionName.length === 0) {
1593 return;
1594 }
1595 if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) {
1596 return;
1597 }
1598 if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) {
1599 return;
1600 }
1601 warn(`The \`render\` prop received a function named \`${functionName}\` that starts with an uppercase letter.`, "This usually means a React component was passed directly as `render={Component}`.", "Base UI calls `render` as a plain function, which can break the Rules of Hooks during reconciliation.", "If this is an intentional render callback, rename it to start with a lowercase letter.", "Use `render={<Component />}` or `render={(props) => <Component {...props} />}` instead.", "https://base-ui.com/r/invalid-render-prop");
1602 }
1603 function renderTag(Tag, props) {
1604 if (Tag === "button") {
1605 return /* @__PURE__ */ (0, import_react.createElement)("button", {
1606 type: "button",
1607 ...props,
1608 key: props.key
1609 });
1610 }
1611 if (Tag === "img") {
1612 return /* @__PURE__ */ (0, import_react.createElement)("img", {
1613 alt: "",
1614 ...props,
1615 key: props.key
1616 });
1617 }
1618 return /* @__PURE__ */ React4.createElement(Tag, props);
1619 }
1620
1621 // node_modules/@base-ui/react/esm/use-render/useRender.js
1622 function useRender(params) {
1623 return useRenderElement(params.defaultTagName ?? "div", params, params);
1624 }
1625
1626 // packages/ui/build-module/visually-hidden/visually-hidden.mjs
1627 var import_element3 = __toESM(require_element(), 1);
1628 if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='c46e8cb841']")) {
1629 const style = document.createElement("style");
1630 style.setAttribute("data-wp-hash", "c46e8cb841");
1631 style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{.f37b9e2e191ebd66__visually-hidden{word-wrap:normal;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal}}"));
1632 document.head.appendChild(style);
1633 }
1634 var style_default = { "visually-hidden": "f37b9e2e191ebd66__visually-hidden" };
1635 var VisuallyHidden = (0, import_element3.forwardRef)(
1636 function VisuallyHidden2({ render, ...restProps }, ref) {
1637 const element = useRender({
1638 render,
1639 ref,
1640 props: mergeProps(
1641 { className: style_default["visually-hidden"] },
1642 restProps,
1643 {
1644 // @ts-expect-error Arbitrary data-* attributes aren't indexable on the typed div props. Kept hardcoded so consumers can't change or remove it.
1645 "data-visually-hidden": ""
1646 }
1647 )
1648 });
1649 return element;
1650 }
1651 );
1652
1653 // packages/admin-ui/build-module/navigable-region/index.mjs
1654 var import_element4 = __toESM(require_element(), 1);
1655 var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1);
1656 var NavigableRegion = (0, import_element4.forwardRef)(
1657 ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => {
1658 return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1659 Tag,
1660 {
1661 ref,
1662 className: clsx_default("admin-ui-navigable-region", className),
1663 "aria-label": ariaLabel,
1664 role: "region",
1665 tabIndex: "-1",
1666 ...props,
1667 children
1668 }
1669 );
1670 }
1671 );
1672 NavigableRegion.displayName = "NavigableRegion";
1673 var navigable_region_default = NavigableRegion;
1674
1675 // packages/interface/build-module/components/interface-skeleton/index.mjs
1676 var import_element5 = __toESM(require_element(), 1);
1677 var import_components6 = __toESM(require_components(), 1);
1678 var import_i18n2 = __toESM(require_i18n(), 1);
1679 var import_compose2 = __toESM(require_compose(), 1);
1680 var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1);
1681 var ANIMATION_DURATION2 = 0.25;
1682 var commonTransition = {
1683 type: "tween",
1684 duration: ANIMATION_DURATION2,
1685 ease: [0.6, 0, 0.4, 1]
1686 };
1687 function useHTMLClass(className) {
1688 (0, import_element5.useEffect)(() => {
1689 const element = document && document.querySelector(`html:not(.${className})`);
1690 if (!element) {
1691 return;
1692 }
1693 element.classList.toggle(className);
1694 return () => {
1695 element.classList.toggle(className);
1696 };
1697 }, [className]);
1698 }
1699 var headerVariants = {
1700 hidden: { opacity: 1, marginTop: -60 },
1701 visible: { opacity: 1, marginTop: 0 },
1702 distractionFreeHover: {
1703 opacity: 1,
1704 marginTop: 0,
1705 transition: {
1706 ...commonTransition,
1707 delay: 0.2,
1708 delayChildren: 0.2
1709 }
1710 },
1711 distractionFreeHidden: {
1712 opacity: 0,
1713 marginTop: -60
1714 },
1715 distractionFreeDisabled: {
1716 opacity: 0,
1717 marginTop: 0,
1718 transition: {
1719 ...commonTransition,
1720 delay: 0.8,
1721 delayChildren: 0.8
1722 }
1723 }
1724 };
1725 function InterfaceSkeleton({
1726 isDistractionFree,
1727 footer,
1728 header,
1729 editorNotices,
1730 sidebar,
1731 secondarySidebar,
1732 content,
1733 actions,
1734 labels,
1735 className
1736 }, ref) {
1737 const [secondarySidebarResizeListener, secondarySidebarSize] = (0, import_compose2.useResizeObserver)();
1738 const isMobileViewport = (0, import_compose2.useViewportMatch)("medium", "<");
1739 const disableMotion = (0, import_compose2.useReducedMotion)();
1740 const defaultTransition = {
1741 type: "tween",
1742 duration: disableMotion ? 0 : ANIMATION_DURATION2,
1743 ease: [0.6, 0, 0.4, 1]
1744 };
1745 useHTMLClass("interface-interface-skeleton__html-container");
1746 const defaultLabels = {
1747 /* translators: accessibility text for the top bar landmark region. */
1748 header: (0, import_i18n2._x)("Header", "header landmark area"),
1749 /* translators: accessibility text for the content landmark region. */
1750 body: (0, import_i18n2.__)("Content"),
1751 /* translators: accessibility text for the secondary sidebar landmark region. */
1752 secondarySidebar: (0, import_i18n2.__)("Block Library"),
1753 /* translators: accessibility text for the settings landmark region. */
1754 sidebar: (0, import_i18n2._x)("Settings", "settings landmark area"),
1755 /* translators: accessibility text for the publish landmark region. */
1756 actions: (0, import_i18n2.__)("Publish"),
1757 /* translators: accessibility text for the footer landmark region. */
1758 footer: (0, import_i18n2.__)("Footer")
1759 };
1760 const mergedLabels = { ...defaultLabels, ...labels };
1761 return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
1762 "div",
1763 {
1764 ref,
1765 className: clsx_default(
1766 className,
1767 "interface-interface-skeleton",
1768 !!footer && "has-footer"
1769 ),
1770 children: [
1771 /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "interface-interface-skeleton__editor", children: [
1772 /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_components6.__unstableAnimatePresence, { initial: false, children: !!header && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1773 navigable_region_default,
1774 {
1775 as: import_components6.__unstableMotion.div,
1776 className: "interface-interface-skeleton__header",
1777 ariaLabel: mergedLabels.header,
1778 initial: isDistractionFree && !isMobileViewport ? "distractionFreeHidden" : "hidden",
1779 whileHover: isDistractionFree && !isMobileViewport ? "distractionFreeHover" : "visible",
1780 animate: isDistractionFree && !isMobileViewport ? "distractionFreeDisabled" : "visible",
1781 exit: isDistractionFree && !isMobileViewport ? "distractionFreeHidden" : "hidden",
1782 variants: headerVariants,
1783 transition: defaultTransition,
1784 children: header
1785 }
1786 ) }),
1787 isDistractionFree && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "interface-interface-skeleton__header", children: editorNotices }),
1788 /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "interface-interface-skeleton__body", children: [
1789 /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_components6.__unstableAnimatePresence, { initial: false, children: !!secondarySidebar && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1790 navigable_region_default,
1791 {
1792 className: "interface-interface-skeleton__secondary-sidebar",
1793 ariaLabel: mergedLabels.secondarySidebar,
1794 as: import_components6.__unstableMotion.div,
1795 initial: "closed",
1796 animate: "open",
1797 exit: "closed",
1798 variants: {
1799 open: { width: secondarySidebarSize.width },
1800 closed: { width: 0 }
1801 },
1802 transition: defaultTransition,
1803 children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
1804 import_components6.__unstableMotion.div,
1805 {
1806 style: {
1807 position: "absolute",
1808 width: isMobileViewport ? "100vw" : "fit-content",
1809 height: "100%",
1810 left: 0
1811 },
1812 variants: {
1813 open: { x: 0 },
1814 closed: { x: "-100%" }
1815 },
1816 transition: defaultTransition,
1817 children: [
1818 secondarySidebarResizeListener,
1819 secondarySidebar
1820 ]
1821 }
1822 )
1823 }
1824 ) }),
1825 /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1826 navigable_region_default,
1827 {
1828 className: "interface-interface-skeleton__content",
1829 ariaLabel: mergedLabels.body,
1830 children: content
1831 }
1832 ),
1833 !!sidebar && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1834 navigable_region_default,
1835 {
1836 className: "interface-interface-skeleton__sidebar",
1837 ariaLabel: mergedLabels.sidebar,
1838 children: sidebar
1839 }
1840 ),
1841 !!actions && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1842 navigable_region_default,
1843 {
1844 className: "interface-interface-skeleton__actions",
1845 ariaLabel: mergedLabels.actions,
1846 children: actions
1847 }
1848 )
1849 ] })
1850 ] }),
1851 !!footer && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1852 navigable_region_default,
1853 {
1854 className: "interface-interface-skeleton__footer",
1855 ariaLabel: mergedLabels.footer,
1856 children: footer
1857 }
1858 )
1859 ]
1860 }
1861 );
1862 }
1863 var interface_skeleton_default = (0, import_element5.forwardRef)(InterfaceSkeleton);
1864
1865 // packages/edit-widgets/build-module/store/actions.mjs
1866 var import_widgets2 = __toESM(require_widgets(), 1);
1867 var import_core_data = __toESM(require_core_data(), 1);
1868 var import_block_editor = __toESM(require_block_editor(), 1);
1869
1870 // packages/edit-widgets/build-module/store/transformers.mjs
1871 var import_blocks = __toESM(require_blocks(), 1);
1872 var import_widgets = __toESM(require_widgets(), 1);
1873 function transformWidgetToBlock(widget) {
1874 if (widget.id_base === "block") {
1875 const parsedBlocks = (0, import_blocks.parse)(widget.instance.raw.content, {
1876 __unstableSkipAutop: true
1877 });
1878 if (!parsedBlocks.length) {
1879 return (0, import_widgets.addWidgetIdToBlock)(
1880 (0, import_blocks.createBlock)("core/paragraph", {}, []),
1881 widget.id
1882 );
1883 }
1884 return (0, import_widgets.addWidgetIdToBlock)(parsedBlocks[0], widget.id);
1885 }
1886 let attributes;
1887 if (widget._embedded.about[0].is_multi) {
1888 attributes = {
1889 idBase: widget.id_base,
1890 instance: widget.instance
1891 };
1892 } else {
1893 attributes = {
1894 id: widget.id
1895 };
1896 }
1897 return (0, import_widgets.addWidgetIdToBlock)(
1898 (0, import_blocks.createBlock)("core/legacy-widget", attributes, []),
1899 widget.id
1900 );
1901 }
1902 function transformBlockToWidget(block, relatedWidget = {}) {
1903 let widget;
1904 const isValidLegacyWidgetBlock = block.name === "core/legacy-widget" && (block.attributes.id || block.attributes.instance);
1905 if (isValidLegacyWidgetBlock) {
1906 widget = {
1907 ...relatedWidget,
1908 id: block.attributes.id ?? relatedWidget.id,
1909 id_base: block.attributes.idBase ?? relatedWidget.id_base,
1910 instance: block.attributes.instance ?? relatedWidget.instance
1911 };
1912 } else {
1913 widget = {
1914 ...relatedWidget,
1915 id_base: "block",
1916 instance: {
1917 raw: {
1918 content: (0, import_blocks.serialize)(block)
1919 }
1920 }
1921 };
1922 }
1923 delete widget.rendered;
1924 delete widget.rendered_form;
1925 return widget;
1926 }
1927
1928 // packages/edit-widgets/build-module/store/utils.mjs
1929 var KIND = "root";
1930 var WIDGET_AREA_ENTITY_TYPE = "sidebar";
1931 var POST_TYPE = "postType";
1932 var buildWidgetAreaPostId = (widgetAreaId) => `widget-area-${widgetAreaId}`;
1933 var buildWidgetAreasPostId = () => `widget-areas`;
1934 function buildWidgetAreasQuery() {
1935 return {
1936 per_page: -1
1937 };
1938 }
1939 function buildWidgetsQuery() {
1940 return {
1941 per_page: -1,
1942 _embed: "about"
1943 };
1944 }
1945 var createStubPost = (id, blocks) => ({
1946 id,
1947 slug: id,
1948 status: "draft",
1949 type: "page",
1950 blocks,
1951 meta: {
1952 widgetAreaId: id
1953 }
1954 });
1955
1956 // packages/edit-widgets/build-module/store/constants.mjs
1957 var STORE_NAME2 = "core/edit-widgets";
1958
1959 // packages/edit-widgets/build-module/store/actions.mjs
1960 var persistStubPost = (id, blocks) => ({ registry }) => {
1961 const stubPost = createStubPost(id, blocks);
1962 registry.dispatch(import_core_data.store).receiveEntityRecords(
1963 KIND,
1964 POST_TYPE,
1965 stubPost,
1966 { id: stubPost.id },
1967 false
1968 );
1969 return stubPost;
1970 };
1971 var saveEditedWidgetAreas = () => async ({ select, dispatch: dispatch2, registry }) => {
1972 const editedWidgetAreas = select.getEditedWidgetAreas();
1973 if (!editedWidgetAreas?.length) {
1974 return;
1975 }
1976 try {
1977 await dispatch2.saveWidgetAreas(editedWidgetAreas);
1978 registry.dispatch(import_notices.store).createSuccessNotice((0, import_i18n3.__)("Widgets saved."), {
1979 type: "snackbar"
1980 });
1981 } catch (e) {
1982 registry.dispatch(import_notices.store).createErrorNotice(
1983 /* translators: %s: The error message. */
1984 (0, import_i18n3.sprintf)((0, import_i18n3.__)("There was an error. %s"), e.message),
1985 {
1986 type: "snackbar"
1987 }
1988 );
1989 }
1990 };
1991 var saveWidgetAreas = (widgetAreas) => async ({ dispatch: dispatch2, registry }) => {
1992 try {
1993 for (const widgetArea of widgetAreas) {
1994 await dispatch2.saveWidgetArea(widgetArea.id);
1995 }
1996 } finally {
1997 await registry.dispatch(import_core_data.store).finishResolution(
1998 "getEntityRecord",
1999 KIND,
2000 WIDGET_AREA_ENTITY_TYPE,
2001 buildWidgetAreasQuery()
2002 );
2003 }
2004 };
2005 var saveWidgetArea = (widgetAreaId) => async ({ dispatch: dispatch2, select, registry }) => {
2006 const widgets = select.getWidgets();
2007 const post = registry.select(import_core_data.store).getEditedEntityRecord(
2008 KIND,
2009 POST_TYPE,
2010 buildWidgetAreaPostId(widgetAreaId)
2011 );
2012 const areaWidgets = Object.values(widgets).filter(
2013 ({ sidebar }) => sidebar === widgetAreaId
2014 );
2015 const usedReferenceWidgets = [];
2016 const widgetsBlocks = post.blocks.filter((block) => {
2017 const { id } = block.attributes;
2018 if (block.name === "core/legacy-widget" && id) {
2019 if (usedReferenceWidgets.includes(id)) {
2020 return false;
2021 }
2022 usedReferenceWidgets.push(id);
2023 }
2024 return true;
2025 });
2026 const deletedWidgets = [];
2027 for (const widget of areaWidgets) {
2028 const widgetsNewArea = select.getWidgetAreaForWidgetId(widget.id);
2029 if (!widgetsNewArea) {
2030 deletedWidgets.push(widget);
2031 }
2032 }
2033 const batchMeta = [];
2034 const batchTasks = [];
2035 const sidebarWidgetsIds = [];
2036 for (let i = 0; i < widgetsBlocks.length; i++) {
2037 const block = widgetsBlocks[i];
2038 const widgetId = (0, import_widgets2.getWidgetIdFromBlock)(block);
2039 const oldWidget = widgets[widgetId];
2040 const widget = transformBlockToWidget(block, oldWidget);
2041 sidebarWidgetsIds.push(widgetId);
2042 if (oldWidget) {
2043 registry.dispatch(import_core_data.store).editEntityRecord(
2044 "root",
2045 "widget",
2046 widgetId,
2047 {
2048 ...widget,
2049 sidebar: widgetAreaId
2050 },
2051 { undoIgnore: true }
2052 );
2053 const hasEdits = registry.select(import_core_data.store).hasEditsForEntityRecord("root", "widget", widgetId);
2054 if (!hasEdits) {
2055 continue;
2056 }
2057 batchTasks.push(
2058 ({ saveEditedEntityRecord }) => saveEditedEntityRecord("root", "widget", widgetId)
2059 );
2060 } else {
2061 batchTasks.push(
2062 ({ saveEntityRecord }) => saveEntityRecord("root", "widget", {
2063 ...widget,
2064 sidebar: widgetAreaId
2065 })
2066 );
2067 }
2068 batchMeta.push({
2069 block,
2070 position: i,
2071 clientId: block.clientId
2072 });
2073 }
2074 for (const widget of deletedWidgets) {
2075 batchTasks.push(
2076 ({ deleteEntityRecord }) => deleteEntityRecord("root", "widget", widget.id, {
2077 force: true
2078 })
2079 );
2080 }
2081 const records = await registry.dispatch(import_core_data.store).__experimentalBatch(batchTasks);
2082 const preservedRecords = records.filter(
2083 (record) => !record.hasOwnProperty("deleted")
2084 );
2085 const failedWidgetNames = [];
2086 for (let i = 0; i < preservedRecords.length; i++) {
2087 const widget = preservedRecords[i];
2088 const { block, position } = batchMeta[i];
2089 post.blocks[position].attributes.__internalWidgetId = widget.id;
2090 const error = registry.select(import_core_data.store).getLastEntitySaveError("root", "widget", widget.id);
2091 if (error) {
2092 failedWidgetNames.push(block.attributes?.name || block?.name);
2093 }
2094 if (!sidebarWidgetsIds[position]) {
2095 sidebarWidgetsIds[position] = widget.id;
2096 }
2097 }
2098 if (failedWidgetNames.length) {
2099 throw new Error(
2100 (0, import_i18n3.sprintf)(
2101 /* translators: %s: List of widget names */
2102 (0, import_i18n3.__)("Could not save the following widgets: %s."),
2103 failedWidgetNames.join(", ")
2104 )
2105 );
2106 }
2107 registry.dispatch(import_core_data.store).editEntityRecord(
2108 KIND,
2109 WIDGET_AREA_ENTITY_TYPE,
2110 widgetAreaId,
2111 {
2112 widgets: sidebarWidgetsIds
2113 },
2114 { undoIgnore: true }
2115 );
2116 dispatch2(trySaveWidgetArea(widgetAreaId));
2117 registry.dispatch(import_core_data.store).receiveEntityRecords(KIND, POST_TYPE, post, void 0);
2118 };
2119 var trySaveWidgetArea = (widgetAreaId) => ({ registry }) => {
2120 registry.dispatch(import_core_data.store).saveEditedEntityRecord(
2121 KIND,
2122 WIDGET_AREA_ENTITY_TYPE,
2123 widgetAreaId,
2124 {
2125 throwOnError: true
2126 }
2127 );
2128 };
2129 function setWidgetIdForClientId(clientId, widgetId) {
2130 return {
2131 type: "SET_WIDGET_ID_FOR_CLIENT_ID",
2132 clientId,
2133 widgetId
2134 };
2135 }
2136 function setWidgetAreasOpenState(widgetAreasOpenState2) {
2137 return {
2138 type: "SET_WIDGET_AREAS_OPEN_STATE",
2139 widgetAreasOpenState: widgetAreasOpenState2
2140 };
2141 }
2142 function setIsWidgetAreaOpen(clientId, isOpen) {
2143 return {
2144 type: "SET_IS_WIDGET_AREA_OPEN",
2145 clientId,
2146 isOpen
2147 };
2148 }
2149 function setIsInserterOpened(value) {
2150 return {
2151 type: "SET_IS_INSERTER_OPENED",
2152 value
2153 };
2154 }
2155 function setIsListViewOpened(isOpen) {
2156 return {
2157 type: "SET_IS_LIST_VIEW_OPENED",
2158 isOpen
2159 };
2160 }
2161 var closeGeneralSidebar = () => ({ registry }) => {
2162 registry.dispatch(store).disableComplementaryArea(STORE_NAME2);
2163 };
2164 var moveBlockToWidgetArea = (clientId, widgetAreaId) => async ({ dispatch: dispatch2, select, registry }) => {
2165 const sourceRootClientId = registry.select(import_block_editor.store).getBlockRootClientId(clientId);
2166 const widgetAreas = registry.select(import_block_editor.store).getBlocks();
2167 const destinationWidgetAreaBlock = widgetAreas.find(
2168 ({ attributes }) => attributes.id === widgetAreaId
2169 );
2170 const destinationRootClientId = destinationWidgetAreaBlock.clientId;
2171 const destinationInnerBlocksClientIds = registry.select(import_block_editor.store).getBlockOrder(destinationRootClientId);
2172 const destinationIndex = destinationInnerBlocksClientIds.length;
2173 const isDestinationWidgetAreaOpen = select.getIsWidgetAreaOpen(
2174 destinationRootClientId
2175 );
2176 if (!isDestinationWidgetAreaOpen) {
2177 dispatch2.setIsWidgetAreaOpen(destinationRootClientId, true);
2178 }
2179 registry.dispatch(import_block_editor.store).moveBlocksToPosition(
2180 [clientId],
2181 sourceRootClientId,
2182 destinationRootClientId,
2183 destinationIndex
2184 );
2185 };
2186 function unlockWidgetSaving(lockName) {
2187 return {
2188 type: "UNLOCK_WIDGET_SAVING",
2189 lockName
2190 };
2191 }
2192 function lockWidgetSaving(lockName) {
2193 return {
2194 type: "LOCK_WIDGET_SAVING",
2195 lockName
2196 };
2197 }
2198
2199 // packages/edit-widgets/build-module/store/resolvers.mjs
2200 var getWidgetAreas = () => async ({ dispatch: dispatch2, registry }) => {
2201 const query = buildWidgetAreasQuery();
2202 const widgetAreas = await registry.resolveSelect(import_core_data2.store).getEntityRecords(KIND, WIDGET_AREA_ENTITY_TYPE, query);
2203 const widgetAreaBlocks = [];
2204 const sortedWidgetAreas = widgetAreas.sort((a, b) => {
2205 if (a.id === "wp_inactive_widgets") {
2206 return 1;
2207 }
2208 if (b.id === "wp_inactive_widgets") {
2209 return -1;
2210 }
2211 return 0;
2212 });
2213 for (const widgetArea of sortedWidgetAreas) {
2214 widgetAreaBlocks.push(
2215 (0, import_blocks2.createBlock)("core/widget-area", {
2216 id: widgetArea.id,
2217 name: widgetArea.name
2218 })
2219 );
2220 if (!widgetArea.widgets.length) {
2221 dispatch2(
2222 persistStubPost(
2223 buildWidgetAreaPostId(widgetArea.id),
2224 []
2225 )
2226 );
2227 }
2228 }
2229 const widgetAreasOpenState2 = {};
2230 widgetAreaBlocks.forEach((widgetAreaBlock, index) => {
2231 widgetAreasOpenState2[widgetAreaBlock.clientId] = index === 0;
2232 });
2233 dispatch2(setWidgetAreasOpenState(widgetAreasOpenState2));
2234 dispatch2(
2235 persistStubPost(buildWidgetAreasPostId(), widgetAreaBlocks)
2236 );
2237 };
2238 var getWidgets = () => async ({ dispatch: dispatch2, registry }) => {
2239 const query = buildWidgetsQuery();
2240 const widgets = await registry.resolveSelect(import_core_data2.store).getEntityRecords("root", "widget", query);
2241 const groupedBySidebar = {};
2242 for (const widget of widgets) {
2243 const block = transformWidgetToBlock(widget);
2244 groupedBySidebar[widget.sidebar] = groupedBySidebar[widget.sidebar] || [];
2245 groupedBySidebar[widget.sidebar].push(block);
2246 }
2247 for (const sidebarId in groupedBySidebar) {
2248 if (groupedBySidebar.hasOwnProperty(sidebarId)) {
2249 dispatch2(
2250 persistStubPost(
2251 buildWidgetAreaPostId(sidebarId),
2252 groupedBySidebar[sidebarId]
2253 )
2254 );
2255 }
2256 }
2257 };
2258
2259 // packages/edit-widgets/build-module/store/selectors.mjs
2260 var selectors_exports2 = {};
2261 __export(selectors_exports2, {
2262 __experimentalGetInsertionPoint: () => __experimentalGetInsertionPoint,
2263 canInsertBlockInWidgetArea: () => canInsertBlockInWidgetArea,
2264 getEditedWidgetAreas: () => getEditedWidgetAreas,
2265 getIsWidgetAreaOpen: () => getIsWidgetAreaOpen,
2266 getParentWidgetAreaBlock: () => getParentWidgetAreaBlock,
2267 getReferenceWidgetBlocks: () => getReferenceWidgetBlocks,
2268 getWidget: () => getWidget,
2269 getWidgetAreaForWidgetId: () => getWidgetAreaForWidgetId,
2270 getWidgetAreas: () => getWidgetAreas2,
2271 getWidgets: () => getWidgets2,
2272 isInserterOpened: () => isInserterOpened,
2273 isListViewOpened: () => isListViewOpened,
2274 isSavingWidgetAreas: () => isSavingWidgetAreas,
2275 isWidgetSavingLocked: () => isWidgetSavingLocked
2276 });
2277 var import_data7 = __toESM(require_data(), 1);
2278 var import_widgets3 = __toESM(require_widgets(), 1);
2279 var import_core_data3 = __toESM(require_core_data(), 1);
2280 var import_block_editor2 = __toESM(require_block_editor(), 1);
2281 var EMPTY_INSERTION_POINT = {
2282 rootClientId: void 0,
2283 insertionIndex: void 0
2284 };
2285 var getWidgets2 = (0, import_data7.createRegistrySelector)(
2286 (select) => (0, import_data7.createSelector)(
2287 () => {
2288 const widgets = select(import_core_data3.store).getEntityRecords(
2289 "root",
2290 "widget",
2291 buildWidgetsQuery()
2292 );
2293 return (
2294 // Key widgets by their ID.
2295 widgets?.reduce(
2296 (allWidgets, widget) => ({
2297 ...allWidgets,
2298 [widget.id]: widget
2299 }),
2300 {}
2301 ) ?? {}
2302 );
2303 },
2304 () => [
2305 select(import_core_data3.store).getEntityRecords(
2306 "root",
2307 "widget",
2308 buildWidgetsQuery()
2309 )
2310 ]
2311 )
2312 );
2313 var getWidget = (0, import_data7.createRegistrySelector)(
2314 (select) => (state, id) => {
2315 const widgets = select(STORE_NAME2).getWidgets();
2316 return widgets[id];
2317 }
2318 );
2319 var getWidgetAreas2 = (0, import_data7.createRegistrySelector)((select) => () => {
2320 const query = buildWidgetAreasQuery();
2321 return select(import_core_data3.store).getEntityRecords(
2322 KIND,
2323 WIDGET_AREA_ENTITY_TYPE,
2324 query
2325 );
2326 });
2327 var getWidgetAreaForWidgetId = (0, import_data7.createRegistrySelector)(
2328 (select) => (state, widgetId) => {
2329 const widgetAreas = select(STORE_NAME2).getWidgetAreas();
2330 return widgetAreas.find((widgetArea) => {
2331 const post = select(import_core_data3.store).getEditedEntityRecord(
2332 KIND,
2333 POST_TYPE,
2334 buildWidgetAreaPostId(widgetArea.id)
2335 );
2336 const blockWidgetIds = post.blocks.map(
2337 (block) => (0, import_widgets3.getWidgetIdFromBlock)(block)
2338 );
2339 return blockWidgetIds.includes(widgetId);
2340 });
2341 }
2342 );
2343 var getParentWidgetAreaBlock = (0, import_data7.createRegistrySelector)(
2344 (select) => (state, clientId) => {
2345 const { getBlock, getBlockName, getBlockParents } = select(import_block_editor2.store);
2346 const blockParents = getBlockParents(clientId);
2347 const widgetAreaClientId = blockParents.find(
2348 (parentClientId) => getBlockName(parentClientId) === "core/widget-area"
2349 );
2350 return getBlock(widgetAreaClientId);
2351 }
2352 );
2353 var getEditedWidgetAreas = (0, import_data7.createRegistrySelector)(
2354 (select) => (state, ids) => {
2355 let widgetAreas = select(STORE_NAME2).getWidgetAreas();
2356 if (!widgetAreas) {
2357 return [];
2358 }
2359 if (ids) {
2360 widgetAreas = widgetAreas.filter(
2361 ({ id }) => ids.includes(id)
2362 );
2363 }
2364 return widgetAreas.filter(
2365 ({ id }) => select(import_core_data3.store).hasEditsForEntityRecord(
2366 KIND,
2367 POST_TYPE,
2368 buildWidgetAreaPostId(id)
2369 )
2370 ).map(
2371 ({ id }) => select(import_core_data3.store).getEditedEntityRecord(
2372 KIND,
2373 WIDGET_AREA_ENTITY_TYPE,
2374 id
2375 )
2376 );
2377 }
2378 );
2379 var getReferenceWidgetBlocks = (0, import_data7.createRegistrySelector)(
2380 (select) => (state, referenceWidgetName = null) => {
2381 const results = [];
2382 const widgetAreas = select(STORE_NAME2).getWidgetAreas();
2383 for (const _widgetArea of widgetAreas) {
2384 const post = select(import_core_data3.store).getEditedEntityRecord(
2385 KIND,
2386 POST_TYPE,
2387 buildWidgetAreaPostId(_widgetArea.id)
2388 );
2389 for (const block of post.blocks) {
2390 if (block.name === "core/legacy-widget" && (!referenceWidgetName || block.attributes?.referenceWidgetName === referenceWidgetName)) {
2391 results.push(block);
2392 }
2393 }
2394 }
2395 return results;
2396 }
2397 );
2398 var isSavingWidgetAreas = (0, import_data7.createRegistrySelector)((select) => () => {
2399 const widgetAreasIds = select(STORE_NAME2).getWidgetAreas()?.map(({ id }) => id);
2400 if (!widgetAreasIds) {
2401 return false;
2402 }
2403 for (const id of widgetAreasIds) {
2404 const isSaving = select(import_core_data3.store).isSavingEntityRecord(
2405 KIND,
2406 WIDGET_AREA_ENTITY_TYPE,
2407 id
2408 );
2409 if (isSaving) {
2410 return true;
2411 }
2412 }
2413 const widgetIds = [
2414 ...Object.keys(select(STORE_NAME2).getWidgets()),
2415 void 0
2416 // account for new widgets without an ID
2417 ];
2418 for (const id of widgetIds) {
2419 const isSaving = select(import_core_data3.store).isSavingEntityRecord(
2420 "root",
2421 "widget",
2422 id
2423 );
2424 if (isSaving) {
2425 return true;
2426 }
2427 }
2428 return false;
2429 });
2430 var getIsWidgetAreaOpen = (state, clientId) => {
2431 const { widgetAreasOpenState: widgetAreasOpenState2 } = state;
2432 return !!widgetAreasOpenState2[clientId];
2433 };
2434 function isInserterOpened(state) {
2435 return !!state.blockInserterPanel;
2436 }
2437 function __experimentalGetInsertionPoint(state) {
2438 if (typeof state.blockInserterPanel === "boolean") {
2439 return EMPTY_INSERTION_POINT;
2440 }
2441 return state.blockInserterPanel;
2442 }
2443 var canInsertBlockInWidgetArea = (0, import_data7.createRegistrySelector)(
2444 (select) => (state, blockName) => {
2445 const widgetAreas = select(import_block_editor2.store).getBlocks();
2446 const [firstWidgetArea] = widgetAreas;
2447 return select(import_block_editor2.store).canInsertBlockType(
2448 blockName,
2449 firstWidgetArea.clientId
2450 );
2451 }
2452 );
2453 function isListViewOpened(state) {
2454 return state.listViewPanel;
2455 }
2456 function isWidgetSavingLocked(state) {
2457 return Object.keys(state.widgetSavingLock).length > 0;
2458 }
2459
2460 // packages/edit-widgets/build-module/store/private-selectors.mjs
2461 var private_selectors_exports = {};
2462 __export(private_selectors_exports, {
2463 getInserterSidebarToggleRef: () => getInserterSidebarToggleRef,
2464 getListViewToggleRef: () => getListViewToggleRef
2465 });
2466 function getListViewToggleRef(state) {
2467 return state.listViewToggleRef;
2468 }
2469 function getInserterSidebarToggleRef(state) {
2470 return state.inserterSidebarToggleRef;
2471 }
2472
2473 // packages/edit-widgets/build-module/lock-unlock.mjs
2474 var import_private_apis = __toESM(require_private_apis(), 1);
2475 var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
2476 "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
2477 "@wordpress/edit-widgets"
2478 );
2479
2480 // packages/edit-widgets/build-module/store/index.mjs
2481 var storeConfig = {
2482 reducer: reducer_default,
2483 selectors: selectors_exports2,
2484 resolvers: resolvers_exports,
2485 actions: actions_exports2
2486 };
2487 var store2 = (0, import_data8.createReduxStore)(STORE_NAME2, storeConfig);
2488 (0, import_data8.register)(store2);
2489 import_api_fetch.default.use(function(options, next) {
2490 if (options.path?.indexOf("/wp/v2/types/widget-area") === 0) {
2491 return Promise.resolve({});
2492 }
2493 return next(options);
2494 });
2495 unlock(store2).registerPrivateSelectors(private_selectors_exports);
2496
2497 // packages/edit-widgets/build-module/filters/move-to-widget-area.mjs
2498 var import_block_editor3 = __toESM(require_block_editor(), 1);
2499 var import_compose3 = __toESM(require_compose(), 1);
2500 var import_data9 = __toESM(require_data(), 1);
2501 var import_hooks = __toESM(require_hooks(), 1);
2502 var import_widgets4 = __toESM(require_widgets(), 1);
2503 var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1);
2504 var withMoveToWidgetAreaToolbarItem = (0, import_compose3.createHigherOrderComponent)(
2505 (BlockEdit) => (props) => {
2506 const { clientId, name: blockName } = props;
2507 const { widgetAreas, currentWidgetAreaId, canInsertBlockInWidgetArea: canInsertBlockInWidgetArea2 } = (0, import_data9.useSelect)(
2508 (select) => {
2509 if (blockName === "core/widget-area") {
2510 return {};
2511 }
2512 const selectors = select(store2);
2513 const widgetAreaBlock = selectors.getParentWidgetAreaBlock(clientId);
2514 return {
2515 widgetAreas: selectors.getWidgetAreas(),
2516 currentWidgetAreaId: widgetAreaBlock?.attributes?.id,
2517 canInsertBlockInWidgetArea: selectors.canInsertBlockInWidgetArea(blockName)
2518 };
2519 },
2520 [clientId, blockName]
2521 );
2522 const { moveBlockToWidgetArea: moveBlockToWidgetArea2 } = (0, import_data9.useDispatch)(store2);
2523 const hasMultipleWidgetAreas = widgetAreas?.length > 1;
2524 const isMoveToWidgetAreaVisible = blockName !== "core/widget-area" && hasMultipleWidgetAreas && canInsertBlockInWidgetArea2;
2525 return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
2526 /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(BlockEdit, { ...props }, "edit"),
2527 isMoveToWidgetAreaVisible && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_block_editor3.BlockControls, { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2528 import_widgets4.MoveToWidgetArea,
2529 {
2530 widgetAreas,
2531 currentWidgetAreaId,
2532 onSelect: (widgetAreaId) => {
2533 moveBlockToWidgetArea2(
2534 props.clientId,
2535 widgetAreaId
2536 );
2537 }
2538 }
2539 ) })
2540 ] });
2541 },
2542 "withMoveToWidgetAreaToolbarItem"
2543 );
2544 (0, import_hooks.addFilter)(
2545 "editor.BlockEdit",
2546 "core/edit-widgets/block-edit",
2547 withMoveToWidgetAreaToolbarItem
2548 );
2549
2550 // packages/edit-widgets/build-module/filters/replace-media-upload.mjs
2551 var import_hooks2 = __toESM(require_hooks(), 1);
2552 var import_media_utils = __toESM(require_media_utils(), 1);
2553 var replaceMediaUpload = () => import_media_utils.MediaUpload;
2554 (0, import_hooks2.addFilter)(
2555 "editor.MediaUpload",
2556 "core/edit-widgets/replace-media-upload",
2557 replaceMediaUpload
2558 );
2559
2560 // packages/edit-widgets/build-module/blocks/widget-area/index.mjs
2561 var widget_area_exports = {};
2562 __export(widget_area_exports, {
2563 metadata: () => block_default,
2564 name: () => name,
2565 settings: () => settings
2566 });
2567 var import_i18n4 = __toESM(require_i18n(), 1);
2568
2569 // packages/edit-widgets/build-module/blocks/widget-area/block.json
2570 var block_default = {
2571 $schema: "https://schemas.wp.org/trunk/block.json",
2572 apiVersion: 3,
2573 name: "core/widget-area",
2574 title: "Widget Area",
2575 category: "widgets",
2576 attributes: {
2577 id: {
2578 type: "string"
2579 },
2580 name: {
2581 type: "string"
2582 }
2583 },
2584 supports: {
2585 html: false,
2586 inserter: false,
2587 customClassName: false,
2588 reusable: false,
2589 renaming: false,
2590 visibility: false,
2591 __experimentalToolbar: false,
2592 __experimentalParentSelector: false,
2593 __experimentalDisableBlockOverlay: true
2594 },
2595 editorStyle: "wp-block-widget-area-editor",
2596 style: "wp-block-widget-area"
2597 };
2598
2599 // packages/edit-widgets/build-module/blocks/widget-area/edit/index.mjs
2600 var import_element8 = __toESM(require_element(), 1);
2601 var import_data10 = __toESM(require_data(), 1);
2602 var import_core_data5 = __toESM(require_core_data(), 1);
2603 var import_components7 = __toESM(require_components(), 1);
2604 var import_block_editor5 = __toESM(require_block_editor(), 1);
2605
2606 // packages/edit-widgets/build-module/blocks/widget-area/edit/inner-blocks.mjs
2607 var import_core_data4 = __toESM(require_core_data(), 1);
2608 var import_block_editor4 = __toESM(require_block_editor(), 1);
2609 var import_element7 = __toESM(require_element(), 1);
2610
2611 // packages/edit-widgets/build-module/blocks/widget-area/edit/use-is-dragging-within.mjs
2612 var import_element6 = __toESM(require_element(), 1);
2613 var useIsDraggingWithin = (elementRef) => {
2614 const [isDraggingWithin, setIsDraggingWithin] = (0, import_element6.useState)(false);
2615 (0, import_element6.useEffect)(() => {
2616 const { ownerDocument } = elementRef.current;
2617 function handleDragStart(event) {
2618 handleDragEnter(event);
2619 }
2620 function handleDragEnd() {
2621 setIsDraggingWithin(false);
2622 }
2623 function handleDragEnter(event) {
2624 if (elementRef.current.contains(event.target)) {
2625 setIsDraggingWithin(true);
2626 } else {
2627 setIsDraggingWithin(false);
2628 }
2629 }
2630 ownerDocument.addEventListener("dragstart", handleDragStart);
2631 ownerDocument.addEventListener("dragend", handleDragEnd);
2632 ownerDocument.addEventListener("dragenter", handleDragEnter);
2633 return () => {
2634 ownerDocument.removeEventListener("dragstart", handleDragStart);
2635 ownerDocument.removeEventListener("dragend", handleDragEnd);
2636 ownerDocument.removeEventListener("dragenter", handleDragEnter);
2637 };
2638 }, []);
2639 return isDraggingWithin;
2640 };
2641 var use_is_dragging_within_default = useIsDraggingWithin;
2642
2643 // packages/edit-widgets/build-module/blocks/widget-area/edit/inner-blocks.mjs
2644 var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1);
2645 function WidgetAreaInnerBlocks({ id }) {
2646 const [blocks, onInput, onChange] = (0, import_core_data4.useEntityBlockEditor)(
2647 "root",
2648 "postType"
2649 );
2650 const innerBlocksRef = (0, import_element7.useRef)();
2651 const isDraggingWithinInnerBlocks = use_is_dragging_within_default(innerBlocksRef);
2652 const shouldHighlightDropZone = isDraggingWithinInnerBlocks;
2653 const innerBlocksProps = (0, import_block_editor4.useInnerBlocksProps)(
2654 { ref: innerBlocksRef },
2655 {
2656 value: blocks,
2657 onInput,
2658 onChange,
2659 templateLock: false,
2660 renderAppender: import_block_editor4.InnerBlocks.ButtonBlockAppender
2661 }
2662 );
2663 return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2664 "div",
2665 {
2666 "data-widget-area-id": id,
2667 className: clsx_default(
2668 "wp-block-widget-area__inner-blocks block-editor-inner-blocks editor-styles-wrapper",
2669 {
2670 "wp-block-widget-area__highlight-drop-zone": shouldHighlightDropZone
2671 }
2672 ),
2673 children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { ...innerBlocksProps })
2674 }
2675 );
2676 }
2677
2678 // packages/edit-widgets/build-module/blocks/widget-area/edit/index.mjs
2679 var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1);
2680 function WidgetAreaEdit({
2681 clientId,
2682 attributes: { id, name: name2 }
2683 }) {
2684 const isOpen = (0, import_data10.useSelect)(
2685 (select) => select(store2).getIsWidgetAreaOpen(clientId),
2686 [clientId]
2687 );
2688 const { setIsWidgetAreaOpen: setIsWidgetAreaOpen2 } = (0, import_data10.useDispatch)(store2);
2689 const wrapper = (0, import_element8.useRef)();
2690 const setOpen = (0, import_element8.useCallback)(
2691 (openState) => setIsWidgetAreaOpen2(clientId, openState),
2692 [clientId]
2693 );
2694 const isDragging = useIsDragging(wrapper);
2695 const isDraggingWithin = use_is_dragging_within_default(wrapper);
2696 const [openedWhileDragging, setOpenedWhileDragging] = (0, import_element8.useState)(false);
2697 (0, import_element8.useEffect)(() => {
2698 if (!isDragging) {
2699 setOpenedWhileDragging(false);
2700 return;
2701 }
2702 if (isDraggingWithin && !isOpen) {
2703 setOpen(true);
2704 setOpenedWhileDragging(true);
2705 } else if (!isDraggingWithin && isOpen && openedWhileDragging) {
2706 setOpen(false);
2707 }
2708 }, [isOpen, isDragging, isDraggingWithin, openedWhileDragging]);
2709 const blockProps = (0, import_block_editor5.useBlockProps)();
2710 return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { ...blockProps, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_components7.Panel, { ref: wrapper, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2711 import_components7.PanelBody,
2712 {
2713 title: name2,
2714 opened: isOpen,
2715 onToggle: () => {
2716 setIsWidgetAreaOpen2(clientId, !isOpen);
2717 },
2718 scrollAfterOpen: !isDragging,
2719 children: ({ opened }) => (
2720 // This is required to ensure LegacyWidget blocks are not
2721 // unmounted when the panel is collapsed. Unmounting legacy
2722 // widgets may have unintended consequences (e.g. TinyMCE
2723 // not being properly reinitialized)
2724 /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2725 import_components7.__unstableDisclosureContent,
2726 {
2727 className: "wp-block-widget-area__panel-body-content",
2728 visible: opened,
2729 children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2730 import_core_data5.EntityProvider,
2731 {
2732 kind: "root",
2733 type: "postType",
2734 id: `widget-area-${id}`,
2735 children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(WidgetAreaInnerBlocks, { id })
2736 }
2737 )
2738 }
2739 )
2740 )
2741 }
2742 ) }) });
2743 }
2744 var useIsDragging = (elementRef) => {
2745 const [isDragging, setIsDragging] = (0, import_element8.useState)(false);
2746 (0, import_element8.useEffect)(() => {
2747 const { ownerDocument } = elementRef.current;
2748 function handleDragStart() {
2749 setIsDragging(true);
2750 }
2751 function handleDragEnd() {
2752 setIsDragging(false);
2753 }
2754 ownerDocument.addEventListener("dragstart", handleDragStart);
2755 ownerDocument.addEventListener("dragend", handleDragEnd);
2756 return () => {
2757 ownerDocument.removeEventListener("dragstart", handleDragStart);
2758 ownerDocument.removeEventListener("dragend", handleDragEnd);
2759 };
2760 }, []);
2761 return isDragging;
2762 };
2763
2764 // packages/edit-widgets/build-module/blocks/widget-area/index.mjs
2765 var { name } = block_default;
2766 var settings = {
2767 title: (0, import_i18n4.__)("Widget Area"),
2768 description: (0, import_i18n4.__)("A widget area container."),
2769 __experimentalLabel: ({ name: label }) => label,
2770 edit: WidgetAreaEdit
2771 };
2772
2773 // packages/edit-widgets/build-module/components/layout/index.mjs
2774 var import_i18n21 = __toESM(require_i18n(), 1);
2775 var import_data31 = __toESM(require_data(), 1);
2776 var import_plugins3 = __toESM(require_plugins(), 1);
2777 var import_notices4 = __toESM(require_notices(), 1);
2778 var import_components22 = __toESM(require_components(), 1);
2779
2780 // packages/edit-widgets/build-module/components/error-boundary/index.mjs
2781 var import_element9 = __toESM(require_element(), 1);
2782 var import_i18n5 = __toESM(require_i18n(), 1);
2783 var import_components8 = __toESM(require_components(), 1);
2784 var import_block_editor6 = __toESM(require_block_editor(), 1);
2785 var import_compose4 = __toESM(require_compose(), 1);
2786 var import_hooks3 = __toESM(require_hooks(), 1);
2787 var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1);
2788 function CopyButton({ text, children }) {
2789 const ref = (0, import_compose4.useCopyToClipboard)(text);
2790 return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_components8.Button, { __next40pxDefaultSize: true, variant: "secondary", ref, children });
2791 }
2792 function ErrorBoundaryWarning({ message, error }) {
2793 const actions = [
2794 /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(CopyButton, { text: error.stack, children: (0, import_i18n5.__)("Copy Error") }, "copy-error")
2795 ];
2796 return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_block_editor6.Warning, { className: "edit-widgets-error-boundary", actions, children: message });
2797 }
2798 var ErrorBoundary = class extends import_element9.Component {
2799 constructor() {
2800 super(...arguments);
2801 this.state = {
2802 error: null
2803 };
2804 }
2805 componentDidCatch(error) {
2806 (0, import_hooks3.doAction)("editor.ErrorBoundary.errorLogged", error);
2807 }
2808 static getDerivedStateFromError(error) {
2809 return { error };
2810 }
2811 render() {
2812 if (!this.state.error) {
2813 return this.props.children;
2814 }
2815 return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2816 ErrorBoundaryWarning,
2817 {
2818 message: (0, import_i18n5.__)(
2819 "The editor has encountered an unexpected error."
2820 ),
2821 error: this.state.error
2822 }
2823 );
2824 }
2825 };
2826
2827 // packages/edit-widgets/build-module/components/widget-areas-block-editor-provider/index.mjs
2828 var import_components9 = __toESM(require_components(), 1);
2829 var import_compose5 = __toESM(require_compose(), 1);
2830 var import_media_utils2 = __toESM(require_media_utils(), 1);
2831 var import_data13 = __toESM(require_data(), 1);
2832 var import_core_data8 = __toESM(require_core_data(), 1);
2833 var import_element11 = __toESM(require_element(), 1);
2834 var import_block_editor8 = __toESM(require_block_editor(), 1);
2835 var import_patterns = __toESM(require_patterns(), 1);
2836 var import_preferences4 = __toESM(require_preferences(), 1);
2837 var import_block_library = __toESM(require_block_library(), 1);
2838
2839 // packages/edit-widgets/build-module/components/keyboard-shortcuts/index.mjs
2840 var import_element10 = __toESM(require_element(), 1);
2841 var import_keyboard_shortcuts = __toESM(require_keyboard_shortcuts(), 1);
2842 var import_keycodes = __toESM(require_keycodes(), 1);
2843 var import_data11 = __toESM(require_data(), 1);
2844 var import_i18n6 = __toESM(require_i18n(), 1);
2845 var import_core_data6 = __toESM(require_core_data(), 1);
2846 function KeyboardShortcuts() {
2847 const { redo, undo } = (0, import_data11.useDispatch)(import_core_data6.store);
2848 const { saveEditedWidgetAreas: saveEditedWidgetAreas2 } = (0, import_data11.useDispatch)(store2);
2849 (0, import_keyboard_shortcuts.useShortcut)("core/edit-widgets/undo", (event) => {
2850 undo();
2851 event.preventDefault();
2852 });
2853 (0, import_keyboard_shortcuts.useShortcut)("core/edit-widgets/redo", (event) => {
2854 redo();
2855 event.preventDefault();
2856 });
2857 (0, import_keyboard_shortcuts.useShortcut)("core/edit-widgets/save", (event) => {
2858 event.preventDefault();
2859 saveEditedWidgetAreas2();
2860 });
2861 return null;
2862 }
2863 function KeyboardShortcutsRegister() {
2864 const { registerShortcut } = (0, import_data11.useDispatch)(import_keyboard_shortcuts.store);
2865 (0, import_element10.useEffect)(() => {
2866 registerShortcut({
2867 name: "core/edit-widgets/undo",
2868 category: "global",
2869 description: (0, import_i18n6.__)("Undo your last changes."),
2870 keyCombination: {
2871 modifier: "primary",
2872 character: "z"
2873 }
2874 });
2875 registerShortcut({
2876 name: "core/edit-widgets/redo",
2877 category: "global",
2878 description: (0, import_i18n6.__)("Redo your last undo."),
2879 keyCombination: {
2880 modifier: "primaryShift",
2881 character: "z"
2882 },
2883 // Disable on Apple OS because it conflicts with the browser's
2884 // history shortcut. It's a fine alias for both Windows and Linux.
2885 // Since there's no conflict for Ctrl+Shift+Z on both Windows and
2886 // Linux, we keep it as the default for consistency.
2887 aliases: (0, import_keycodes.isAppleOS)() ? [] : [
2888 {
2889 modifier: "primary",
2890 character: "y"
2891 }
2892 ]
2893 });
2894 registerShortcut({
2895 name: "core/edit-widgets/save",
2896 category: "global",
2897 description: (0, import_i18n6.__)("Save your changes."),
2898 keyCombination: {
2899 modifier: "primary",
2900 character: "s"
2901 }
2902 });
2903 registerShortcut({
2904 name: "core/edit-widgets/keyboard-shortcuts",
2905 category: "main",
2906 description: (0, import_i18n6.__)("Display these keyboard shortcuts."),
2907 keyCombination: {
2908 modifier: "access",
2909 character: "h"
2910 }
2911 });
2912 registerShortcut({
2913 name: "core/edit-widgets/next-region",
2914 category: "global",
2915 description: (0, import_i18n6.__)("Navigate to the next part of the editor."),
2916 keyCombination: {
2917 modifier: "ctrl",
2918 character: "`"
2919 },
2920 aliases: [
2921 {
2922 modifier: "access",
2923 character: "n"
2924 }
2925 ]
2926 });
2927 registerShortcut({
2928 name: "core/edit-widgets/previous-region",
2929 category: "global",
2930 description: (0, import_i18n6.__)("Navigate to the previous part of the editor."),
2931 keyCombination: {
2932 modifier: "ctrlShift",
2933 character: "`"
2934 },
2935 aliases: [
2936 {
2937 modifier: "access",
2938 character: "p"
2939 },
2940 {
2941 modifier: "ctrlShift",
2942 character: "~"
2943 }
2944 ]
2945 });
2946 }, [registerShortcut]);
2947 return null;
2948 }
2949 KeyboardShortcuts.Register = KeyboardShortcutsRegister;
2950 var keyboard_shortcuts_default = KeyboardShortcuts;
2951
2952 // packages/edit-widgets/build-module/hooks/use-last-selected-widget-area.mjs
2953 var import_data12 = __toESM(require_data(), 1);
2954 var import_block_editor7 = __toESM(require_block_editor(), 1);
2955 var import_core_data7 = __toESM(require_core_data(), 1);
2956 var useLastSelectedWidgetArea = () => (0, import_data12.useSelect)((select) => {
2957 const { getBlockSelectionEnd, getBlockName } = select(import_block_editor7.store);
2958 const selectionEndClientId = getBlockSelectionEnd();
2959 if (getBlockName(selectionEndClientId) === "core/widget-area") {
2960 return selectionEndClientId;
2961 }
2962 const { getParentWidgetAreaBlock: getParentWidgetAreaBlock2 } = select(store2);
2963 const widgetAreaBlock = getParentWidgetAreaBlock2(selectionEndClientId);
2964 const widgetAreaBlockClientId = widgetAreaBlock?.clientId;
2965 if (widgetAreaBlockClientId) {
2966 return widgetAreaBlockClientId;
2967 }
2968 const { getEntityRecord } = select(import_core_data7.store);
2969 const widgetAreasPost = getEntityRecord(
2970 KIND,
2971 POST_TYPE,
2972 buildWidgetAreasPostId()
2973 );
2974 return widgetAreasPost?.blocks[0]?.clientId;
2975 }, []);
2976 var use_last_selected_widget_area_default = useLastSelectedWidgetArea;
2977
2978 // packages/edit-widgets/build-module/constants.mjs
2979 var ALLOW_REUSABLE_BLOCKS = false;
2980 var ENABLE_EXPERIMENTAL_FSE_BLOCKS = false;
2981
2982 // packages/edit-widgets/build-module/components/widget-areas-block-editor-provider/index.mjs
2983 var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1);
2984 var { ExperimentalBlockEditorProvider } = unlock(import_block_editor8.privateApis);
2985 var { PatternsMenuItems } = unlock(import_patterns.privateApis);
2986 var { BlockKeyboardShortcuts } = unlock(import_block_library.privateApis);
2987 var EMPTY_ARRAY2 = [];
2988 function WidgetAreasBlockEditorProvider({
2989 blockEditorSettings,
2990 children,
2991 ...props
2992 }) {
2993 const isLargeViewport = (0, import_compose5.useViewportMatch)("medium");
2994 const {
2995 hasUploadPermissions,
2996 reusableBlocks,
2997 isFixedToolbarActive,
2998 keepCaretInsideBlock,
2999 pageOnFront,
3000 pageForPosts
3001 } = (0, import_data13.useSelect)((select) => {
3002 const { canUser, getEntityRecord, getEntityRecords } = select(import_core_data8.store);
3003 const siteSettings = canUser("read", {
3004 kind: "root",
3005 name: "site"
3006 }) ? getEntityRecord("root", "site") : void 0;
3007 return {
3008 hasUploadPermissions: canUser("create", {
3009 kind: "postType",
3010 name: "attachment"
3011 }) ?? true,
3012 reusableBlocks: ALLOW_REUSABLE_BLOCKS ? getEntityRecords("postType", "wp_block") : EMPTY_ARRAY2,
3013 isFixedToolbarActive: !!select(import_preferences4.store).get(
3014 "core/edit-widgets",
3015 "fixedToolbar"
3016 ),
3017 keepCaretInsideBlock: !!select(import_preferences4.store).get(
3018 "core/edit-widgets",
3019 "keepCaretInsideBlock"
3020 ),
3021 pageOnFront: siteSettings?.page_on_front,
3022 pageForPosts: siteSettings?.page_for_posts
3023 };
3024 }, []);
3025 const { setIsInserterOpened: setIsInserterOpened2 } = (0, import_data13.useDispatch)(store2);
3026 const settings2 = (0, import_element11.useMemo)(() => {
3027 let mediaUploadBlockEditor;
3028 if (hasUploadPermissions) {
3029 mediaUploadBlockEditor = ({ onError, ...argumentsObject }) => {
3030 (0, import_media_utils2.uploadMedia)({
3031 wpAllowedMimeTypes: blockEditorSettings.allowedMimeTypes,
3032 onError: ({ message }) => onError(message),
3033 ...argumentsObject
3034 });
3035 };
3036 }
3037 return {
3038 ...blockEditorSettings,
3039 __experimentalReusableBlocks: reusableBlocks,
3040 hasFixedToolbar: isFixedToolbarActive || !isLargeViewport,
3041 keepCaretInsideBlock,
3042 mediaUpload: mediaUploadBlockEditor,
3043 templateLock: "all",
3044 __experimentalSetIsInserterOpened: setIsInserterOpened2,
3045 pageOnFront,
3046 pageForPosts,
3047 editorTool: "edit"
3048 };
3049 }, [
3050 hasUploadPermissions,
3051 blockEditorSettings,
3052 isFixedToolbarActive,
3053 isLargeViewport,
3054 keepCaretInsideBlock,
3055 reusableBlocks,
3056 setIsInserterOpened2,
3057 pageOnFront,
3058 pageForPosts
3059 ]);
3060 const widgetAreaId = use_last_selected_widget_area_default();
3061 const [blocks, onInput, onChange] = (0, import_core_data8.useEntityBlockEditor)(
3062 KIND,
3063 POST_TYPE,
3064 { id: buildWidgetAreasPostId() }
3065 );
3066 return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_components9.SlotFillProvider, { children: [
3067 /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(keyboard_shortcuts_default.Register, {}),
3068 /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(BlockKeyboardShortcuts, {}),
3069 /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
3070 ExperimentalBlockEditorProvider,
3071 {
3072 value: blocks,
3073 onInput,
3074 onChange,
3075 settings: settings2,
3076 useSubRegistry: false,
3077 ...props,
3078 children: [
3079 children,
3080 /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(PatternsMenuItems, { rootClientId: widgetAreaId })
3081 ]
3082 }
3083 )
3084 ] });
3085 }
3086
3087 // packages/edit-widgets/build-module/components/sidebar/index.mjs
3088 var import_element13 = __toESM(require_element(), 1);
3089 var import_i18n8 = __toESM(require_i18n(), 1);
3090 var import_block_editor10 = __toESM(require_block_editor(), 1);
3091 var import_components11 = __toESM(require_components(), 1);
3092 var import_data15 = __toESM(require_data(), 1);
3093
3094 // packages/edit-widgets/build-module/components/sidebar/widget-areas.mjs
3095 var import_data14 = __toESM(require_data(), 1);
3096 var import_element12 = __toESM(require_element(), 1);
3097 var import_block_editor9 = __toESM(require_block_editor(), 1);
3098 var import_components10 = __toESM(require_components(), 1);
3099 var import_i18n7 = __toESM(require_i18n(), 1);
3100 var import_url = __toESM(require_url(), 1);
3101 var import_dom = __toESM(require_dom(), 1);
3102 var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1);
3103 function WidgetAreas({ selectedWidgetAreaId }) {
3104 const widgetAreas = (0, import_data14.useSelect)(
3105 (select) => select(store2).getWidgetAreas(),
3106 []
3107 );
3108 const selectedWidgetArea = (0, import_element12.useMemo)(
3109 () => selectedWidgetAreaId && widgetAreas?.find(
3110 (widgetArea) => widgetArea.id === selectedWidgetAreaId
3111 ),
3112 [selectedWidgetAreaId, widgetAreas]
3113 );
3114 let description;
3115 if (!selectedWidgetArea) {
3116 description = (0, import_i18n7.__)(
3117 // eslint-disable-next-line no-restricted-syntax -- 'sidebar' is a common web design term for layouts
3118 "Widget Areas are global parts in your site\u2019s layout that can accept blocks. These vary by theme, but are typically parts like your Sidebar or Footer."
3119 );
3120 } else if (selectedWidgetAreaId === "wp_inactive_widgets") {
3121 description = (0, import_i18n7.__)(
3122 "Blocks in this Widget Area will not be displayed in your site."
3123 );
3124 } else {
3125 description = selectedWidgetArea.description;
3126 }
3127 return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "edit-widgets-widget-areas", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "edit-widgets-widget-areas__top-container", children: [
3128 /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_block_editor9.BlockIcon, { icon: block_default_default }),
3129 /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { children: [
3130 /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3131 "p",
3132 {
3133 dangerouslySetInnerHTML: {
3134 __html: (0, import_dom.safeHTML)(description)
3135 }
3136 }
3137 ),
3138 widgetAreas?.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { children: (0, import_i18n7.__)(
3139 "Your theme does not contain any Widget Areas."
3140 ) }),
3141 !selectedWidgetArea && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3142 import_components10.Button,
3143 {
3144 __next40pxDefaultSize: true,
3145 href: (0, import_url.addQueryArgs)("customize.php", {
3146 "autofocus[panel]": "widgets",
3147 return: window.location.pathname
3148 }),
3149 variant: "tertiary",
3150 children: (0, import_i18n7.__)("Manage with live preview")
3151 }
3152 )
3153 ] })
3154 ] }) });
3155 }
3156
3157 // packages/edit-widgets/build-module/components/sidebar/index.mjs
3158 var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
3159 var SIDEBAR_ACTIVE_BY_DEFAULT = import_element13.Platform.select({
3160 web: true,
3161 native: false
3162 });
3163 var BLOCK_INSPECTOR_IDENTIFIER = "edit-widgets/block-inspector";
3164 var WIDGET_AREAS_IDENTIFIER = "edit-widgets/block-areas";
3165 var { Tabs } = unlock(import_components11.privateApis);
3166 function SidebarHeader({ selectedWidgetAreaBlock }) {
3167 return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Tabs.TabList, { children: [
3168 /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Tabs.Tab, { tabId: WIDGET_AREAS_IDENTIFIER, children: selectedWidgetAreaBlock ? selectedWidgetAreaBlock.attributes.name : (0, import_i18n8.__)("Widget Areas") }),
3169 /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Tabs.Tab, { tabId: BLOCK_INSPECTOR_IDENTIFIER, children: (0, import_i18n8.__)("Block") })
3170 ] });
3171 }
3172 function SidebarContent({
3173 hasSelectedNonAreaBlock,
3174 currentArea,
3175 isGeneralSidebarOpen,
3176 selectedWidgetAreaBlock
3177 }) {
3178 const { enableComplementaryArea: enableComplementaryArea2 } = (0, import_data15.useDispatch)(store);
3179 (0, import_element13.useEffect)(() => {
3180 if (hasSelectedNonAreaBlock && currentArea === WIDGET_AREAS_IDENTIFIER && isGeneralSidebarOpen) {
3181 enableComplementaryArea2(
3182 "core/edit-widgets",
3183 BLOCK_INSPECTOR_IDENTIFIER
3184 );
3185 }
3186 if (!hasSelectedNonAreaBlock && currentArea === BLOCK_INSPECTOR_IDENTIFIER && isGeneralSidebarOpen) {
3187 enableComplementaryArea2(
3188 "core/edit-widgets",
3189 WIDGET_AREAS_IDENTIFIER
3190 );
3191 }
3192 }, [hasSelectedNonAreaBlock, enableComplementaryArea2]);
3193 const tabsContextValue = (0, import_element13.useContext)(Tabs.Context);
3194 return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3195 complementary_area_default,
3196 {
3197 className: "edit-widgets-sidebar",
3198 header: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Tabs.Context.Provider, { value: tabsContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3199 SidebarHeader,
3200 {
3201 selectedWidgetAreaBlock
3202 }
3203 ) }),
3204 headerClassName: "edit-widgets-sidebar__panel-tabs",
3205 title: (0, import_i18n8.__)("Settings"),
3206 closeLabel: (0, import_i18n8.__)("Close Settings"),
3207 scope: "core/edit-widgets",
3208 identifier: currentArea,
3209 icon: (0, import_i18n8.isRTL)() ? drawer_left_default : drawer_right_default,
3210 isActiveByDefault: SIDEBAR_ACTIVE_BY_DEFAULT,
3211 children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Tabs.Context.Provider, { value: tabsContextValue, children: [
3212 /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3213 Tabs.TabPanel,
3214 {
3215 tabId: WIDGET_AREAS_IDENTIFIER,
3216 focusable: false,
3217 children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3218 WidgetAreas,
3219 {
3220 selectedWidgetAreaId: selectedWidgetAreaBlock?.attributes.id
3221 }
3222 )
3223 }
3224 ),
3225 /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3226 Tabs.TabPanel,
3227 {
3228 tabId: BLOCK_INSPECTOR_IDENTIFIER,
3229 focusable: false,
3230 children: hasSelectedNonAreaBlock ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_block_editor10.BlockInspector, {}) : (
3231 // Pretend that Widget Areas are part of the UI by not
3232 // showing the Block Inspector when one is selected.
3233 /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "block-editor-block-inspector__no-blocks", children: (0, import_i18n8.__)("No block selected.") })
3234 )
3235 }
3236 )
3237 ] })
3238 }
3239 );
3240 }
3241 function Sidebar() {
3242 const {
3243 currentArea,
3244 hasSelectedNonAreaBlock,
3245 isGeneralSidebarOpen,
3246 selectedWidgetAreaBlock
3247 } = (0, import_data15.useSelect)((select) => {
3248 const { getSelectedBlock, getBlock, getBlockParentsByBlockName } = select(import_block_editor10.store);
3249 const { getActiveComplementaryArea: getActiveComplementaryArea2 } = select(store);
3250 const selectedBlock = getSelectedBlock();
3251 const activeArea = getActiveComplementaryArea2(store2.name);
3252 let currentSelection = activeArea;
3253 if (!currentSelection) {
3254 if (selectedBlock) {
3255 currentSelection = BLOCK_INSPECTOR_IDENTIFIER;
3256 } else {
3257 currentSelection = WIDGET_AREAS_IDENTIFIER;
3258 }
3259 }
3260 let widgetAreaBlock;
3261 if (selectedBlock) {
3262 if (selectedBlock.name === "core/widget-area") {
3263 widgetAreaBlock = selectedBlock;
3264 } else {
3265 widgetAreaBlock = getBlock(
3266 getBlockParentsByBlockName(
3267 selectedBlock.clientId,
3268 "core/widget-area"
3269 )[0]
3270 );
3271 }
3272 }
3273 return {
3274 currentArea: currentSelection,
3275 hasSelectedNonAreaBlock: !!(selectedBlock && selectedBlock.name !== "core/widget-area"),
3276 isGeneralSidebarOpen: !!activeArea,
3277 selectedWidgetAreaBlock: widgetAreaBlock
3278 };
3279 }, []);
3280 const { enableComplementaryArea: enableComplementaryArea2 } = (0, import_data15.useDispatch)(store);
3281 const onTabSelect = (0, import_element13.useCallback)(
3282 (newSelectedTabId) => {
3283 if (!!newSelectedTabId) {
3284 enableComplementaryArea2(
3285 store2.name,
3286 newSelectedTabId
3287 );
3288 }
3289 },
3290 [enableComplementaryArea2]
3291 );
3292 return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3293 Tabs,
3294 {
3295 selectedTabId: isGeneralSidebarOpen ? currentArea : null,
3296 onSelect: onTabSelect,
3297 selectOnMove: false,
3298 children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3299 SidebarContent,
3300 {
3301 hasSelectedNonAreaBlock,
3302 currentArea,
3303 isGeneralSidebarOpen,
3304 selectedWidgetAreaBlock
3305 }
3306 )
3307 }
3308 );
3309 }
3310
3311 // packages/edit-widgets/build-module/components/layout/interface.mjs
3312 var import_compose12 = __toESM(require_compose(), 1);
3313 var import_block_editor17 = __toESM(require_block_editor(), 1);
3314 var import_element23 = __toESM(require_element(), 1);
3315 var import_data28 = __toESM(require_data(), 1);
3316 var import_i18n18 = __toESM(require_i18n(), 1);
3317 var import_preferences8 = __toESM(require_preferences(), 1);
3318
3319 // packages/edit-widgets/build-module/components/header/index.mjs
3320 var import_block_editor12 = __toESM(require_block_editor(), 1);
3321 var import_data22 = __toESM(require_data(), 1);
3322 var import_element19 = __toESM(require_element(), 1);
3323 var import_i18n16 = __toESM(require_i18n(), 1);
3324 var import_components19 = __toESM(require_components(), 1);
3325 var import_compose8 = __toESM(require_compose(), 1);
3326 var import_preferences6 = __toESM(require_preferences(), 1);
3327
3328 // packages/edit-widgets/build-module/components/header/document-tools/index.mjs
3329 var import_data18 = __toESM(require_data(), 1);
3330 var import_i18n11 = __toESM(require_i18n(), 1);
3331 var import_components14 = __toESM(require_components(), 1);
3332 var import_block_editor11 = __toESM(require_block_editor(), 1);
3333 var import_element16 = __toESM(require_element(), 1);
3334 var import_compose6 = __toESM(require_compose(), 1);
3335
3336 // packages/edit-widgets/build-module/components/header/undo-redo/undo.mjs
3337 var import_i18n9 = __toESM(require_i18n(), 1);
3338 var import_components12 = __toESM(require_components(), 1);
3339 var import_data16 = __toESM(require_data(), 1);
3340 var import_keycodes2 = __toESM(require_keycodes(), 1);
3341 var import_core_data9 = __toESM(require_core_data(), 1);
3342 var import_element14 = __toESM(require_element(), 1);
3343 var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
3344 function UndoButton(props, ref) {
3345 const hasUndo = (0, import_data16.useSelect)(
3346 (select) => select(import_core_data9.store).hasUndo(),
3347 []
3348 );
3349 const { undo } = (0, import_data16.useDispatch)(import_core_data9.store);
3350 return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
3351 import_components12.Button,
3352 {
3353 ...props,
3354 ref,
3355 icon: !(0, import_i18n9.isRTL)() ? undo_default : redo_default,
3356 label: (0, import_i18n9.__)("Undo"),
3357 shortcut: import_keycodes2.displayShortcut.primary("z"),
3358 "aria-disabled": !hasUndo,
3359 onClick: hasUndo ? undo : void 0,
3360 size: "compact"
3361 }
3362 );
3363 }
3364 var undo_default2 = (0, import_element14.forwardRef)(UndoButton);
3365
3366 // packages/edit-widgets/build-module/components/header/undo-redo/redo.mjs
3367 var import_i18n10 = __toESM(require_i18n(), 1);
3368 var import_components13 = __toESM(require_components(), 1);
3369 var import_data17 = __toESM(require_data(), 1);
3370 var import_keycodes3 = __toESM(require_keycodes(), 1);
3371 var import_core_data10 = __toESM(require_core_data(), 1);
3372 var import_element15 = __toESM(require_element(), 1);
3373 var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1);
3374 function RedoButton(props, ref) {
3375 const shortcut = (0, import_keycodes3.isAppleOS)() ? import_keycodes3.displayShortcut.primaryShift("z") : import_keycodes3.displayShortcut.primary("y");
3376 const hasRedo = (0, import_data17.useSelect)(
3377 (select) => select(import_core_data10.store).hasRedo(),
3378 []
3379 );
3380 const { redo } = (0, import_data17.useDispatch)(import_core_data10.store);
3381 return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
3382 import_components13.Button,
3383 {
3384 ...props,
3385 ref,
3386 icon: !(0, import_i18n10.isRTL)() ? redo_default : undo_default,
3387 label: (0, import_i18n10.__)("Redo"),
3388 shortcut,
3389 "aria-disabled": !hasRedo,
3390 onClick: hasRedo ? redo : void 0,
3391 size: "compact"
3392 }
3393 );
3394 }
3395 var redo_default2 = (0, import_element15.forwardRef)(RedoButton);
3396
3397 // packages/edit-widgets/build-module/components/header/document-tools/index.mjs
3398 var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1);
3399 function DocumentTools() {
3400 const isMediumViewport = (0, import_compose6.useViewportMatch)("medium");
3401 const {
3402 isInserterOpen,
3403 isListViewOpen,
3404 inserterSidebarToggleRef: inserterSidebarToggleRef2,
3405 listViewToggleRef: listViewToggleRef2
3406 } = (0, import_data18.useSelect)((select) => {
3407 const {
3408 isInserterOpened: isInserterOpened2,
3409 getInserterSidebarToggleRef: getInserterSidebarToggleRef2,
3410 isListViewOpened: isListViewOpened2,
3411 getListViewToggleRef: getListViewToggleRef2
3412 } = unlock(select(store2));
3413 return {
3414 isInserterOpen: isInserterOpened2(),
3415 isListViewOpen: isListViewOpened2(),
3416 inserterSidebarToggleRef: getInserterSidebarToggleRef2(),
3417 listViewToggleRef: getListViewToggleRef2()
3418 };
3419 }, []);
3420 const { setIsInserterOpened: setIsInserterOpened2, setIsListViewOpened: setIsListViewOpened2 } = (0, import_data18.useDispatch)(store2);
3421 const toggleListView = (0, import_element16.useCallback)(
3422 () => setIsListViewOpened2(!isListViewOpen),
3423 [setIsListViewOpened2, isListViewOpen]
3424 );
3425 const toggleInserterSidebar = (0, import_element16.useCallback)(
3426 () => setIsInserterOpened2(!isInserterOpen),
3427 [setIsInserterOpened2, isInserterOpen]
3428 );
3429 return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
3430 import_block_editor11.NavigableToolbar,
3431 {
3432 className: "edit-widgets-header-toolbar",
3433 "aria-label": (0, import_i18n11.__)("Document tools"),
3434 variant: "unstyled",
3435 children: [
3436 /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3437 import_components14.ToolbarItem,
3438 {
3439 ref: inserterSidebarToggleRef2,
3440 as: import_components14.Button,
3441 className: "edit-widgets-header-toolbar__inserter-toggle",
3442 variant: "primary",
3443 isPressed: isInserterOpen,
3444 onMouseDown: (event) => {
3445 event.preventDefault();
3446 },
3447 onClick: toggleInserterSidebar,
3448 icon: plus_default,
3449 label: (0, import_i18n11._x)(
3450 "Block Inserter",
3451 "Generic label for block inserter button"
3452 ),
3453 size: "compact"
3454 }
3455 ),
3456 isMediumViewport && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [
3457 /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components14.ToolbarItem, { as: undo_default2 }),
3458 /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components14.ToolbarItem, { as: redo_default2 }),
3459 /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3460 import_components14.ToolbarItem,
3461 {
3462 as: import_components14.Button,
3463 className: "edit-widgets-header-toolbar__list-view-toggle",
3464 icon: list_view_default,
3465 isPressed: isListViewOpen,
3466 label: (0, import_i18n11.__)("List View"),
3467 onClick: toggleListView,
3468 ref: listViewToggleRef2,
3469 size: "compact"
3470 }
3471 )
3472 ] })
3473 ]
3474 }
3475 );
3476 }
3477 var document_tools_default = DocumentTools;
3478
3479 // packages/edit-widgets/build-module/components/save-button/index.mjs
3480 var import_components15 = __toESM(require_components(), 1);
3481 var import_i18n12 = __toESM(require_i18n(), 1);
3482 var import_data19 = __toESM(require_data(), 1);
3483 var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1);
3484 function SaveButton() {
3485 const { hasEditedWidgetAreaIds, isSaving, isWidgetSaveLocked } = (0, import_data19.useSelect)(
3486 (select) => {
3487 const {
3488 getEditedWidgetAreas: getEditedWidgetAreas2,
3489 isSavingWidgetAreas: isSavingWidgetAreas2,
3490 isWidgetSavingLocked: isWidgetSavingLocked2
3491 } = select(store2);
3492 return {
3493 hasEditedWidgetAreaIds: getEditedWidgetAreas2()?.length > 0,
3494 isSaving: isSavingWidgetAreas2(),
3495 isWidgetSaveLocked: isWidgetSavingLocked2()
3496 };
3497 },
3498 []
3499 );
3500 const { saveEditedWidgetAreas: saveEditedWidgetAreas2 } = (0, import_data19.useDispatch)(store2);
3501 const isDisabled = isWidgetSaveLocked || isSaving || !hasEditedWidgetAreaIds;
3502 return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3503 import_components15.Button,
3504 {
3505 variant: "primary",
3506 isBusy: isSaving,
3507 "aria-disabled": isDisabled,
3508 onClick: isDisabled ? void 0 : saveEditedWidgetAreas2,
3509 size: "compact",
3510 children: isSaving ? (0, import_i18n12.__)("Saving\u2026") : (0, import_i18n12.__)("Update")
3511 }
3512 );
3513 }
3514 var save_button_default = SaveButton;
3515
3516 // packages/edit-widgets/build-module/components/more-menu/index.mjs
3517 var import_components18 = __toESM(require_components(), 1);
3518 var import_element18 = __toESM(require_element(), 1);
3519 var import_i18n15 = __toESM(require_i18n(), 1);
3520 var import_preferences5 = __toESM(require_preferences(), 1);
3521 var import_keycodes5 = __toESM(require_keycodes(), 1);
3522 var import_keyboard_shortcuts5 = __toESM(require_keyboard_shortcuts(), 1);
3523 var import_compose7 = __toESM(require_compose(), 1);
3524
3525 // packages/edit-widgets/build-module/components/keyboard-shortcut-help-modal/index.mjs
3526 var import_components16 = __toESM(require_components(), 1);
3527 var import_i18n14 = __toESM(require_i18n(), 1);
3528 var import_keyboard_shortcuts4 = __toESM(require_keyboard_shortcuts(), 1);
3529 var import_data21 = __toESM(require_data(), 1);
3530
3531 // packages/edit-widgets/build-module/components/keyboard-shortcut-help-modal/config.mjs
3532 var import_i18n13 = __toESM(require_i18n(), 1);
3533 var textFormattingShortcuts = [
3534 {
3535 keyCombination: { modifier: "primary", character: "b" },
3536 description: (0, import_i18n13.__)("Make the selected text bold.")
3537 },
3538 {
3539 keyCombination: { modifier: "primary", character: "i" },
3540 description: (0, import_i18n13.__)("Make the selected text italic.")
3541 },
3542 {
3543 keyCombination: { modifier: "primary", character: "k" },
3544 description: (0, import_i18n13.__)("Convert the selected text into a link.")
3545 },
3546 {
3547 keyCombination: { modifier: "primaryShift", character: "k" },
3548 description: (0, import_i18n13.__)("Remove a link.")
3549 },
3550 {
3551 keyCombination: { character: "[[" },
3552 description: (0, import_i18n13.__)("Insert a link to a post or page.")
3553 },
3554 {
3555 keyCombination: { modifier: "primary", character: "u" },
3556 description: (0, import_i18n13.__)("Underline the selected text.")
3557 },
3558 {
3559 keyCombination: { modifier: "access", character: "d" },
3560 description: (0, import_i18n13.__)("Strikethrough the selected text.")
3561 },
3562 {
3563 keyCombination: { modifier: "access", character: "x" },
3564 description: (0, import_i18n13.__)("Make the selected text inline code.")
3565 },
3566 {
3567 keyCombination: {
3568 modifier: "access",
3569 character: "0"
3570 },
3571 aliases: [
3572 {
3573 modifier: "access",
3574 character: "7"
3575 }
3576 ],
3577 description: (0, import_i18n13.__)("Convert the current heading to a paragraph.")
3578 },
3579 {
3580 keyCombination: { modifier: "access", character: "1-6" },
3581 description: (0, import_i18n13.__)(
3582 "Convert the current paragraph or heading to a heading of level 1 to 6."
3583 )
3584 },
3585 {
3586 keyCombination: { modifier: "primaryShift", character: "SPACE" },
3587 description: (0, import_i18n13.__)("Add non breaking space.")
3588 }
3589 ];
3590
3591 // packages/edit-widgets/build-module/components/keyboard-shortcut-help-modal/shortcut.mjs
3592 var import_element17 = __toESM(require_element(), 1);
3593 var import_keycodes4 = __toESM(require_keycodes(), 1);
3594 var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1);
3595 function KeyCombination({ keyCombination, forceAriaLabel }) {
3596 const shortcut = keyCombination.modifier ? import_keycodes4.displayShortcutList[keyCombination.modifier](
3597 keyCombination.character
3598 ) : keyCombination.character;
3599 const ariaLabel = keyCombination.modifier ? import_keycodes4.shortcutAriaLabel[keyCombination.modifier](
3600 keyCombination.character
3601 ) : keyCombination.character;
3602 const shortcuts = Array.isArray(shortcut) ? shortcut : [shortcut];
3603 return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3604 "kbd",
3605 {
3606 className: "edit-widgets-keyboard-shortcut-help-modal__shortcut-key-combination",
3607 "aria-label": forceAriaLabel || ariaLabel,
3608 children: shortcuts.map((character, index) => {
3609 if (character === "+") {
3610 return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_element17.Fragment, { children: character }, index);
3611 }
3612 return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3613 "kbd",
3614 {
3615 className: "edit-widgets-keyboard-shortcut-help-modal__shortcut-key",
3616 children: character
3617 },
3618 index
3619 );
3620 })
3621 }
3622 );
3623 }
3624 function Shortcut({ description, keyCombination, aliases = [], ariaLabel }) {
3625 return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
3626 /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "edit-widgets-keyboard-shortcut-help-modal__shortcut-description", children: description }),
3627 /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "edit-widgets-keyboard-shortcut-help-modal__shortcut-term", children: [
3628 /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3629 KeyCombination,
3630 {
3631 keyCombination,
3632 forceAriaLabel: ariaLabel
3633 }
3634 ),
3635 aliases.map((alias, index) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3636 KeyCombination,
3637 {
3638 keyCombination: alias,
3639 forceAriaLabel: ariaLabel
3640 },
3641 index
3642 ))
3643 ] })
3644 ] });
3645 }
3646 var shortcut_default = Shortcut;
3647
3648 // packages/edit-widgets/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.mjs
3649 var import_data20 = __toESM(require_data(), 1);
3650 var import_keyboard_shortcuts3 = __toESM(require_keyboard_shortcuts(), 1);
3651 var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1);
3652 function DynamicShortcut({ name: name2 }) {
3653 const { keyCombination, description, aliases } = (0, import_data20.useSelect)(
3654 (select) => {
3655 const {
3656 getShortcutKeyCombination,
3657 getShortcutDescription,
3658 getShortcutAliases
3659 } = select(import_keyboard_shortcuts3.store);
3660 return {
3661 keyCombination: getShortcutKeyCombination(name2),
3662 aliases: getShortcutAliases(name2),
3663 description: getShortcutDescription(name2)
3664 };
3665 },
3666 [name2]
3667 );
3668 if (!keyCombination) {
3669 return null;
3670 }
3671 return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3672 shortcut_default,
3673 {
3674 keyCombination,
3675 description,
3676 aliases
3677 }
3678 );
3679 }
3680 var dynamic_shortcut_default = DynamicShortcut;
3681
3682 // packages/edit-widgets/build-module/components/keyboard-shortcut-help-modal/index.mjs
3683 var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1);
3684 var ShortcutList = ({ shortcuts }) => (
3685 /*
3686 * Disable reason: The `list` ARIA role is redundant but
3687 * Safari+VoiceOver won't announce the list otherwise.
3688 */
3689 /* eslint-disable jsx-a11y/no-redundant-roles */
3690 /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3691 "ul",
3692 {
3693 className: "edit-widgets-keyboard-shortcut-help-modal__shortcut-list",
3694 role: "list",
3695 children: shortcuts.map((shortcut, index) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3696 "li",
3697 {
3698 className: "edit-widgets-keyboard-shortcut-help-modal__shortcut",
3699 children: typeof shortcut === "string" ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(dynamic_shortcut_default, { name: shortcut }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(shortcut_default, { ...shortcut })
3700 },
3701 index
3702 ))
3703 }
3704 )
3705 );
3706 var ShortcutSection = ({ title, shortcuts, className }) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
3707 "section",
3708 {
3709 className: clsx_default(
3710 "edit-widgets-keyboard-shortcut-help-modal__section",
3711 className
3712 ),
3713 children: [
3714 !!title && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("h2", { className: "edit-widgets-keyboard-shortcut-help-modal__section-title", children: title }),
3715 /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ShortcutList, { shortcuts })
3716 ]
3717 }
3718 );
3719 var ShortcutCategorySection = ({
3720 title,
3721 categoryName,
3722 additionalShortcuts = []
3723 }) => {
3724 const categoryShortcuts = (0, import_data21.useSelect)(
3725 (select) => {
3726 return select(import_keyboard_shortcuts4.store).getCategoryShortcuts(
3727 categoryName
3728 );
3729 },
3730 [categoryName]
3731 );
3732 return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3733 ShortcutSection,
3734 {
3735 title,
3736 shortcuts: categoryShortcuts.concat(additionalShortcuts)
3737 }
3738 );
3739 };
3740 function KeyboardShortcutHelpModal({
3741 isModalActive: isModalActive2,
3742 toggleModal
3743 }) {
3744 (0, import_keyboard_shortcuts4.useShortcut)("core/edit-widgets/keyboard-shortcuts", toggleModal, {
3745 bindGlobal: true
3746 });
3747 if (!isModalActive2) {
3748 return null;
3749 }
3750 return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
3751 import_components16.Modal,
3752 {
3753 className: "edit-widgets-keyboard-shortcut-help-modal",
3754 title: (0, import_i18n14.__)("Keyboard shortcuts"),
3755 onRequestClose: toggleModal,
3756 children: [
3757 /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3758 ShortcutSection,
3759 {
3760 className: "edit-widgets-keyboard-shortcut-help-modal__main-shortcuts",
3761 shortcuts: ["core/edit-widgets/keyboard-shortcuts"]
3762 }
3763 ),
3764 /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3765 ShortcutCategorySection,
3766 {
3767 title: (0, import_i18n14.__)("Global shortcuts"),
3768 categoryName: "global"
3769 }
3770 ),
3771 /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3772 ShortcutCategorySection,
3773 {
3774 title: (0, import_i18n14.__)("Selection shortcuts"),
3775 categoryName: "selection"
3776 }
3777 ),
3778 /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3779 ShortcutCategorySection,
3780 {
3781 title: (0, import_i18n14.__)("Block shortcuts"),
3782 categoryName: "block",
3783 additionalShortcuts: [
3784 {
3785 keyCombination: { character: "/" },
3786 description: (0, import_i18n14.__)(
3787 "Change the block type after adding a new paragraph."
3788 ),
3789 /* translators: The forward-slash character. e.g. '/'. */
3790 ariaLabel: (0, import_i18n14.__)("Forward-slash")
3791 }
3792 ]
3793 }
3794 ),
3795 /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3796 ShortcutSection,
3797 {
3798 title: (0, import_i18n14.__)("Text formatting"),
3799 shortcuts: textFormattingShortcuts
3800 }
3801 ),
3802 /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3803 ShortcutCategorySection,
3804 {
3805 title: (0, import_i18n14.__)("List View shortcuts"),
3806 categoryName: "list-view"
3807 }
3808 )
3809 ]
3810 }
3811 );
3812 }
3813
3814 // packages/edit-widgets/build-module/components/more-menu/tools-more-menu-group.mjs
3815 var import_components17 = __toESM(require_components(), 1);
3816 var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1);
3817 var { Fill: ToolsMoreMenuGroup, Slot: Slot4 } = (0, import_components17.createSlotFill)(
3818 "EditWidgetsToolsMoreMenuGroup"
3819 );
3820 ToolsMoreMenuGroup.Slot = ({ fillProps }) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Slot4, { fillProps, children: (fills) => fills.length > 0 && fills });
3821 var tools_more_menu_group_default = ToolsMoreMenuGroup;
3822
3823 // packages/edit-widgets/build-module/components/more-menu/index.mjs
3824 var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1);
3825 function MoreMenu() {
3826 const [
3827 isKeyboardShortcutsModalActive,
3828 setIsKeyboardShortcutsModalVisible
3829 ] = (0, import_element18.useState)(false);
3830 const toggleKeyboardShortcutsModal = () => setIsKeyboardShortcutsModalVisible(!isKeyboardShortcutsModalActive);
3831 (0, import_keyboard_shortcuts5.useShortcut)(
3832 "core/edit-widgets/keyboard-shortcuts",
3833 toggleKeyboardShortcutsModal
3834 );
3835 const isLargeViewport = (0, import_compose7.useViewportMatch)("medium");
3836 return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
3837 /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3838 import_components18.DropdownMenu,
3839 {
3840 icon: more_vertical_default,
3841 label: (0, import_i18n15.__)("Options"),
3842 popoverProps: {
3843 placement: "bottom-end",
3844 className: "more-menu-dropdown__content"
3845 },
3846 toggleProps: {
3847 tooltipPosition: "bottom",
3848 size: "compact"
3849 },
3850 children: (onClose) => /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
3851 isLargeViewport && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components18.MenuGroup, { label: (0, import_i18n15._x)("View", "noun"), children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3852 import_preferences5.PreferenceToggleMenuItem,
3853 {
3854 scope: "core/edit-widgets",
3855 name: "fixedToolbar",
3856 label: (0, import_i18n15.__)("Top toolbar"),
3857 info: (0, import_i18n15.__)(
3858 "Access all block and document tools in a single place"
3859 ),
3860 messageActivated: (0, import_i18n15.__)(
3861 "Top toolbar activated"
3862 ),
3863 messageDeactivated: (0, import_i18n15.__)(
3864 "Top toolbar deactivated"
3865 )
3866 }
3867 ) }),
3868 /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_components18.MenuGroup, { label: (0, import_i18n15.__)("Tools"), children: [
3869 /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3870 import_components18.MenuItem,
3871 {
3872 onClick: () => {
3873 setIsKeyboardShortcutsModalVisible(true);
3874 },
3875 shortcut: import_keycodes5.displayShortcut.access("h"),
3876 children: (0, import_i18n15.__)("Keyboard shortcuts")
3877 }
3878 ),
3879 /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3880 import_preferences5.PreferenceToggleMenuItem,
3881 {
3882 scope: "core/edit-widgets",
3883 name: "welcomeGuide",
3884 label: (0, import_i18n15.__)("Welcome Guide")
3885 }
3886 ),
3887 /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
3888 import_components18.MenuItem,
3889 {
3890 role: "menuitem",
3891 icon: external_default,
3892 href: (0, import_i18n15.__)(
3893 "https://wordpress.org/documentation/article/block-based-widgets-editor/"
3894 ),
3895 target: "_blank",
3896 rel: "noopener",
3897 children: [
3898 (0, import_i18n15.__)("Help"),
3899 /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(VisuallyHidden, {
3900 render: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", {}),
3901 /* translators: accessibility text */
3902 children: (0, import_i18n15.__)("(opens in a new tab)")
3903 })
3904 ]
3905 }
3906 ),
3907 /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3908 tools_more_menu_group_default.Slot,
3909 {
3910 fillProps: { onClose }
3911 }
3912 )
3913 ] }),
3914 /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_components18.MenuGroup, { label: (0, import_i18n15.__)("Preferences"), children: [
3915 /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3916 import_preferences5.PreferenceToggleMenuItem,
3917 {
3918 scope: "core/edit-widgets",
3919 name: "keepCaretInsideBlock",
3920 label: (0, import_i18n15.__)(
3921 "Contain text cursor inside block"
3922 ),
3923 info: (0, import_i18n15.__)(
3924 "Aids screen readers by stopping text caret from leaving blocks."
3925 ),
3926 messageActivated: (0, import_i18n15.__)(
3927 "Contain text cursor inside block activated"
3928 ),
3929 messageDeactivated: (0, import_i18n15.__)(
3930 "Contain text cursor inside block deactivated"
3931 )
3932 }
3933 ),
3934 /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3935 import_preferences5.PreferenceToggleMenuItem,
3936 {
3937 scope: "core/edit-widgets",
3938 name: "themeStyles",
3939 info: (0, import_i18n15.__)(
3940 "Make the editor look like your theme."
3941 ),
3942 label: (0, import_i18n15.__)("Use theme styles")
3943 }
3944 ),
3945 isLargeViewport && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3946 import_preferences5.PreferenceToggleMenuItem,
3947 {
3948 scope: "core/edit-widgets",
3949 name: "showBlockBreadcrumbs",
3950 label: (0, import_i18n15.__)("Display block breadcrumbs"),
3951 info: (0, import_i18n15.__)(
3952 "Shows block breadcrumbs at the bottom of the editor."
3953 ),
3954 messageActivated: (0, import_i18n15.__)(
3955 "Display block breadcrumbs activated"
3956 ),
3957 messageDeactivated: (0, import_i18n15.__)(
3958 "Display block breadcrumbs deactivated"
3959 )
3960 }
3961 )
3962 ] })
3963 ] })
3964 }
3965 ),
3966 /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3967 KeyboardShortcutHelpModal,
3968 {
3969 isModalActive: isKeyboardShortcutsModalActive,
3970 toggleModal: toggleKeyboardShortcutsModal
3971 }
3972 )
3973 ] });
3974 }
3975
3976 // packages/edit-widgets/build-module/components/header/index.mjs
3977 var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1);
3978 function Header() {
3979 const isLargeViewport = (0, import_compose8.useViewportMatch)("medium");
3980 const blockToolbarRef = (0, import_element19.useRef)();
3981 const { hasFixedToolbar } = (0, import_data22.useSelect)(
3982 (select) => ({
3983 hasFixedToolbar: !!select(import_preferences6.store).get(
3984 "core/edit-widgets",
3985 "fixedToolbar"
3986 )
3987 }),
3988 []
3989 );
3990 return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_jsx_runtime38.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "edit-widgets-header", children: [
3991 /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "edit-widgets-header__navigable-toolbar-wrapper", children: [
3992 isLargeViewport && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("h1", { className: "edit-widgets-header__title", children: (0, import_i18n16.__)("Widgets") }),
3993 !isLargeViewport && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3994 VisuallyHidden,
3995 {
3996 className: "edit-widgets-header__title",
3997 render: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("h1", {}),
3998 children: (0, import_i18n16.__)("Widgets")
3999 }
4000 ),
4001 /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(document_tools_default, {}),
4002 hasFixedToolbar && isLargeViewport && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
4003 /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "selected-block-tools-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_block_editor12.BlockToolbar, { hideDragHandle: true }) }),
4004 /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4005 import_components19.Popover.Slot,
4006 {
4007 ref: blockToolbarRef,
4008 name: "block-toolbar"
4009 }
4010 )
4011 ] })
4012 ] }),
4013 /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "edit-widgets-header__actions", children: [
4014 /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(pinned_items_default.Slot, { scope: "core/edit-widgets" }),
4015 /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(save_button_default, {}),
4016 /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(MoreMenu, {})
4017 ] })
4018 ] }) });
4019 }
4020 var header_default = Header;
4021
4022 // packages/edit-widgets/build-module/components/widget-areas-block-editor-content/index.mjs
4023 var import_block_editor13 = __toESM(require_block_editor(), 1);
4024 var import_compose9 = __toESM(require_compose(), 1);
4025 var import_data23 = __toESM(require_data(), 1);
4026 var import_element20 = __toESM(require_element(), 1);
4027 var import_preferences7 = __toESM(require_preferences(), 1);
4028
4029 // packages/edit-widgets/build-module/components/notices/index.mjs
4030 var import_notices2 = __toESM(require_notices(), 1);
4031 var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1);
4032 function Notices() {
4033 return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_jsx_runtime39.Fragment, { children: [
4034 /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
4035 import_notices2.InlineNotices,
4036 {
4037 pinnedNoticesClassName: "edit-widgets-notices__pinned",
4038 dismissibleNoticesClassName: "edit-widgets-notices__dismissible"
4039 }
4040 ),
4041 /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_notices2.SnackbarNotices, { className: "edit-widgets-notices__snackbar" })
4042 ] });
4043 }
4044 var notices_default = Notices;
4045
4046 // packages/edit-widgets/build-module/components/widget-areas-block-editor-content/index.mjs
4047 var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1);
4048 function WidgetAreasBlockEditorContent({
4049 blockEditorSettings
4050 }) {
4051 const hasThemeStyles = (0, import_data23.useSelect)(
4052 (select) => !!select(import_preferences7.store).get(
4053 "core/edit-widgets",
4054 "themeStyles"
4055 ),
4056 []
4057 );
4058 const isLargeViewport = (0, import_compose9.useViewportMatch)("medium");
4059 const styles = (0, import_element20.useMemo)(() => {
4060 return hasThemeStyles ? blockEditorSettings.styles : [];
4061 }, [blockEditorSettings, hasThemeStyles]);
4062 return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "edit-widgets-block-editor", children: [
4063 /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(notices_default, {}),
4064 !isLargeViewport && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_block_editor13.BlockToolbar, { hideDragHandle: true }),
4065 /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_block_editor13.BlockTools, { children: [
4066 /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(keyboard_shortcuts_default, {}),
4067 /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
4068 import_block_editor13.__unstableEditorStyles,
4069 {
4070 styles,
4071 scope: ":where(.editor-styles-wrapper)"
4072 }
4073 ),
4074 /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_block_editor13.BlockSelectionClearer, { children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_block_editor13.WritingFlow, { children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_block_editor13.BlockList, { className: "edit-widgets-main-block-list" }) }) })
4075 ] })
4076 ] });
4077 }
4078
4079 // packages/edit-widgets/build-module/components/secondary-sidebar/index.mjs
4080 var import_data27 = __toESM(require_data(), 1);
4081
4082 // packages/edit-widgets/build-module/components/secondary-sidebar/inserter-sidebar.mjs
4083 var import_block_editor15 = __toESM(require_block_editor(), 1);
4084 var import_compose10 = __toESM(require_compose(), 1);
4085 var import_element21 = __toESM(require_element(), 1);
4086 var import_data25 = __toESM(require_data(), 1);
4087
4088 // packages/edit-widgets/build-module/hooks/use-widget-library-insertion-point.mjs
4089 var import_data24 = __toESM(require_data(), 1);
4090 var import_block_editor14 = __toESM(require_block_editor(), 1);
4091 var import_core_data11 = __toESM(require_core_data(), 1);
4092 var useWidgetLibraryInsertionPoint = () => {
4093 const firstRootId = (0, import_data24.useSelect)((select) => {
4094 const { getEntityRecord } = select(import_core_data11.store);
4095 const widgetAreasPost = getEntityRecord(
4096 KIND,
4097 POST_TYPE,
4098 buildWidgetAreasPostId()
4099 );
4100 return widgetAreasPost?.blocks[0]?.clientId;
4101 }, []);
4102 return (0, import_data24.useSelect)(
4103 (select) => {
4104 const {
4105 getBlockRootClientId,
4106 getBlockSelectionEnd,
4107 getBlockOrder,
4108 getBlockIndex
4109 } = select(import_block_editor14.store);
4110 const insertionPoint = select(store2).__experimentalGetInsertionPoint();
4111 if (insertionPoint.rootClientId) {
4112 return insertionPoint;
4113 }
4114 const clientId = getBlockSelectionEnd() || firstRootId;
4115 const rootClientId = getBlockRootClientId(clientId);
4116 if (clientId && rootClientId === "") {
4117 return {
4118 rootClientId: clientId,
4119 insertionIndex: getBlockOrder(clientId).length
4120 };
4121 }
4122 return {
4123 rootClientId,
4124 insertionIndex: getBlockIndex(clientId) + 1
4125 };
4126 },
4127 [firstRootId]
4128 );
4129 };
4130 var use_widget_library_insertion_point_default = useWidgetLibraryInsertionPoint;
4131
4132 // packages/edit-widgets/build-module/components/secondary-sidebar/inserter-sidebar.mjs
4133 var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1);
4134 function InserterSidebar() {
4135 const isMobileViewport = (0, import_compose10.useViewportMatch)("medium", "<");
4136 const { rootClientId, insertionIndex } = use_widget_library_insertion_point_default();
4137 const { setIsInserterOpened: setIsInserterOpened2 } = (0, import_data25.useDispatch)(store2);
4138 const closeInserter = (0, import_element21.useCallback)(() => {
4139 return setIsInserterOpened2(false);
4140 }, [setIsInserterOpened2]);
4141 const libraryRef = (0, import_element21.useRef)();
4142 return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "edit-widgets-layout__inserter-panel", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "edit-widgets-layout__inserter-panel-content", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
4143 import_block_editor15.__experimentalLibrary,
4144 {
4145 showInserterHelpPanel: true,
4146 shouldFocusBlock: isMobileViewport,
4147 rootClientId,
4148 __experimentalInsertionIndex: insertionIndex,
4149 ref: libraryRef,
4150 onClose: closeInserter
4151 }
4152 ) }) });
4153 }
4154
4155 // packages/edit-widgets/build-module/components/secondary-sidebar/list-view-sidebar.mjs
4156 var import_block_editor16 = __toESM(require_block_editor(), 1);
4157 var import_components20 = __toESM(require_components(), 1);
4158 var import_compose11 = __toESM(require_compose(), 1);
4159 var import_data26 = __toESM(require_data(), 1);
4160 var import_element22 = __toESM(require_element(), 1);
4161 var import_i18n17 = __toESM(require_i18n(), 1);
4162 var import_keycodes6 = __toESM(require_keycodes(), 1);
4163 var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1);
4164 function ListViewSidebar() {
4165 const { setIsListViewOpened: setIsListViewOpened2 } = (0, import_data26.useDispatch)(store2);
4166 const { getListViewToggleRef: getListViewToggleRef2 } = unlock((0, import_data26.useSelect)(store2));
4167 const [dropZoneElement, setDropZoneElement] = (0, import_element22.useState)(null);
4168 const focusOnMountRef = (0, import_compose11.useFocusOnMount)("firstElement");
4169 const closeListView = (0, import_element22.useCallback)(() => {
4170 setIsListViewOpened2(false);
4171 getListViewToggleRef2().current?.focus();
4172 }, [getListViewToggleRef2, setIsListViewOpened2]);
4173 const closeOnEscape = (0, import_element22.useCallback)(
4174 (event) => {
4175 if (event.keyCode === import_keycodes6.ESCAPE && !event.defaultPrevented) {
4176 event.preventDefault();
4177 closeListView();
4178 }
4179 },
4180 [closeListView]
4181 );
4182 return (
4183 // eslint-disable-next-line jsx-a11y/no-static-element-interactions
4184 /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
4185 "div",
4186 {
4187 className: "edit-widgets-editor__list-view-panel",
4188 onKeyDown: closeOnEscape,
4189 children: [
4190 /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "edit-widgets-editor__list-view-panel-header", children: [
4191 /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("strong", { children: (0, import_i18n17.__)("List View") }),
4192 /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
4193 import_components20.Button,
4194 {
4195 icon: close_small_default,
4196 label: (0, import_i18n17.__)("Close"),
4197 onClick: closeListView,
4198 size: "compact"
4199 }
4200 )
4201 ] }),
4202 /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
4203 "div",
4204 {
4205 className: "edit-widgets-editor__list-view-panel-content",
4206 ref: (0, import_compose11.useMergeRefs)([focusOnMountRef, setDropZoneElement]),
4207 children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_block_editor16.__experimentalListView, { dropZoneElement })
4208 }
4209 )
4210 ]
4211 }
4212 )
4213 );
4214 }
4215
4216 // packages/edit-widgets/build-module/components/secondary-sidebar/index.mjs
4217 var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1);
4218 function SecondarySidebar() {
4219 const { isInserterOpen, isListViewOpen } = (0, import_data27.useSelect)((select) => {
4220 const { isInserterOpened: isInserterOpened2, isListViewOpened: isListViewOpened2 } = select(store2);
4221 return {
4222 isInserterOpen: isInserterOpened2(),
4223 isListViewOpen: isListViewOpened2()
4224 };
4225 }, []);
4226 if (isInserterOpen) {
4227 return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(InserterSidebar, {});
4228 }
4229 if (isListViewOpen) {
4230 return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ListViewSidebar, {});
4231 }
4232 return null;
4233 }
4234
4235 // packages/edit-widgets/build-module/components/layout/interface.mjs
4236 var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1);
4237 var interfaceLabels = {
4238 /* translators: accessibility text for the widgets screen top bar landmark region. */
4239 header: (0, import_i18n18.__)("Widgets top bar"),
4240 /* translators: accessibility text for the widgets screen content landmark region. */
4241 body: (0, import_i18n18.__)("Widgets and blocks"),
4242 /* translators: accessibility text for the widgets screen settings landmark region. */
4243 sidebar: (0, import_i18n18.__)("Widgets settings"),
4244 /* translators: accessibility text for the widgets screen footer landmark region. */
4245 footer: (0, import_i18n18.__)("Widgets footer")
4246 };
4247 function Interface({ blockEditorSettings }) {
4248 const isMobileViewport = (0, import_compose12.useViewportMatch)("medium", "<");
4249 const isHugeViewport = (0, import_compose12.useViewportMatch)("huge", ">=");
4250 const { setIsInserterOpened: setIsInserterOpened2, setIsListViewOpened: setIsListViewOpened2, closeGeneralSidebar: closeGeneralSidebar2 } = (0, import_data28.useDispatch)(store2);
4251 const {
4252 hasBlockBreadCrumbsEnabled,
4253 hasSidebarEnabled,
4254 isInserterOpened: isInserterOpened2,
4255 isListViewOpened: isListViewOpened2
4256 } = (0, import_data28.useSelect)(
4257 (select) => ({
4258 hasSidebarEnabled: !!select(
4259 store
4260 ).getActiveComplementaryArea(store2.name),
4261 isInserterOpened: !!select(store2).isInserterOpened(),
4262 isListViewOpened: !!select(store2).isListViewOpened(),
4263 hasBlockBreadCrumbsEnabled: !!select(import_preferences8.store).get(
4264 "core/edit-widgets",
4265 "showBlockBreadcrumbs"
4266 )
4267 }),
4268 []
4269 );
4270 (0, import_element23.useEffect)(() => {
4271 if (hasSidebarEnabled && !isHugeViewport) {
4272 setIsInserterOpened2(false);
4273 setIsListViewOpened2(false);
4274 }
4275 }, [hasSidebarEnabled, isHugeViewport]);
4276 (0, import_element23.useEffect)(() => {
4277 if ((isInserterOpened2 || isListViewOpened2) && !isHugeViewport) {
4278 closeGeneralSidebar2();
4279 }
4280 }, [isInserterOpened2, isListViewOpened2, isHugeViewport]);
4281 const secondarySidebarLabel = isListViewOpened2 ? (0, import_i18n18.__)("List View") : (0, import_i18n18.__)("Block Library");
4282 const hasSecondarySidebar = isListViewOpened2 || isInserterOpened2;
4283 return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
4284 interface_skeleton_default,
4285 {
4286 labels: {
4287 ...interfaceLabels,
4288 secondarySidebar: secondarySidebarLabel
4289 },
4290 header: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(header_default, {}),
4291 secondarySidebar: hasSecondarySidebar && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SecondarySidebar, {}),
4292 sidebar: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(complementary_area_default.Slot, { scope: "core/edit-widgets" }),
4293 content: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_jsx_runtime44.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
4294 WidgetAreasBlockEditorContent,
4295 {
4296 blockEditorSettings
4297 }
4298 ) }),
4299 footer: hasBlockBreadCrumbsEnabled && !isMobileViewport && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "edit-widgets-layout__footer", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_block_editor17.BlockBreadcrumb, { rootLabelText: (0, import_i18n18.__)("Widgets") }) })
4300 }
4301 );
4302 }
4303 var interface_default = Interface;
4304
4305 // packages/edit-widgets/build-module/components/layout/unsaved-changes-warning.mjs
4306 var import_i18n19 = __toESM(require_i18n(), 1);
4307 var import_element24 = __toESM(require_element(), 1);
4308 var import_data29 = __toESM(require_data(), 1);
4309 function UnsavedChangesWarning() {
4310 const isDirty = (0, import_data29.useSelect)((select) => {
4311 const { getEditedWidgetAreas: getEditedWidgetAreas2 } = select(store2);
4312 const editedWidgetAreas = getEditedWidgetAreas2();
4313 return editedWidgetAreas?.length > 0;
4314 }, []);
4315 (0, import_element24.useEffect)(() => {
4316 const warnIfUnsavedChanges = (event) => {
4317 if (isDirty) {
4318 event.returnValue = (0, import_i18n19.__)(
4319 "You have unsaved changes. If you proceed, they will be lost."
4320 );
4321 return event.returnValue;
4322 }
4323 };
4324 window.addEventListener("beforeunload", warnIfUnsavedChanges);
4325 return () => {
4326 window.removeEventListener("beforeunload", warnIfUnsavedChanges);
4327 };
4328 }, [isDirty]);
4329 return null;
4330 }
4331
4332 // packages/edit-widgets/build-module/components/welcome-guide/index.mjs
4333 var import_data30 = __toESM(require_data(), 1);
4334 var import_components21 = __toESM(require_components(), 1);
4335 var import_i18n20 = __toESM(require_i18n(), 1);
4336 var import_element25 = __toESM(require_element(), 1);
4337 var import_preferences9 = __toESM(require_preferences(), 1);
4338 var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1);
4339 function WelcomeGuide() {
4340 const isActive = (0, import_data30.useSelect)(
4341 (select) => !!select(import_preferences9.store).get(
4342 "core/edit-widgets",
4343 "welcomeGuide"
4344 ),
4345 []
4346 );
4347 const { toggle } = (0, import_data30.useDispatch)(import_preferences9.store);
4348 const widgetAreas = (0, import_data30.useSelect)(
4349 (select) => select(store2).getWidgetAreas({ per_page: -1 }),
4350 []
4351 );
4352 if (!isActive) {
4353 return null;
4354 }
4355 const isEntirelyBlockWidgets = widgetAreas?.every(
4356 (widgetArea) => widgetArea.id === "wp_inactive_widgets" || widgetArea.widgets.every(
4357 (widgetId) => widgetId.startsWith("block-")
4358 )
4359 );
4360 const numWidgetAreas = widgetAreas?.filter(
4361 (widgetArea) => widgetArea.id !== "wp_inactive_widgets"
4362 ).length ?? 0;
4363 return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4364 import_components21.Guide,
4365 {
4366 className: "edit-widgets-welcome-guide",
4367 contentLabel: (0, import_i18n20.__)("Welcome to block Widgets"),
4368 finishButtonText: (0, import_i18n20.__)("Get started"),
4369 onFinish: () => toggle("core/edit-widgets", "welcomeGuide"),
4370 pages: [
4371 {
4372 image: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4373 WelcomeGuideImage,
4374 {
4375 nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-canvas.svg",
4376 animatedSrc: "https://s.w.org/images/block-editor/welcome-canvas.gif"
4377 }
4378 ),
4379 content: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_jsx_runtime45.Fragment, { children: [
4380 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("h1", { className: "edit-widgets-welcome-guide__heading", children: (0, import_i18n20.__)("Welcome to block Widgets") }),
4381 isEntirelyBlockWidgets ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { className: "edit-widgets-welcome-guide__text", children: (0, import_i18n20.sprintf)(
4382 // Translators: %s: Number of block areas in the current theme.
4383 (0, import_i18n20._n)(
4384 "Your theme provides %s \u201Cblock\u201D area for you to add and edit content.\xA0Try adding a search bar, social icons, or other types of blocks here and see how they\u2019ll look on your site.",
4385 "Your theme provides %s different \u201Cblock\u201D areas for you to add and edit content.\xA0Try adding a search bar, social icons, or other types of blocks here and see how they\u2019ll look on your site.",
4386 numWidgetAreas
4387 ),
4388 numWidgetAreas
4389 ) }) }) : /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_jsx_runtime45.Fragment, { children: [
4390 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { className: "edit-widgets-welcome-guide__text", children: (0, import_i18n20.__)(
4391 "You can now add any block to your site\u2019s widget areas. Don\u2019t worry, all of your favorite widgets still work flawlessly."
4392 ) }),
4393 /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("p", { className: "edit-widgets-welcome-guide__text", children: [
4394 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("strong", { children: (0, import_i18n20.__)(
4395 "Want to stick with the old widgets?"
4396 ) }),
4397 " ",
4398 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4399 import_components21.ExternalLink,
4400 {
4401 href: (0, import_i18n20.__)(
4402 "https://wordpress.org/plugins/classic-widgets/"
4403 ),
4404 children: (0, import_i18n20.__)(
4405 "Get the Classic Widgets plugin."
4406 )
4407 }
4408 )
4409 ] })
4410 ] })
4411 ] })
4412 },
4413 {
4414 image: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4415 WelcomeGuideImage,
4416 {
4417 nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-editor.svg",
4418 animatedSrc: "https://s.w.org/images/block-editor/welcome-editor.gif"
4419 }
4420 ),
4421 content: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_jsx_runtime45.Fragment, { children: [
4422 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("h1", { className: "edit-widgets-welcome-guide__heading", children: (0, import_i18n20.__)("Customize each block") }),
4423 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { className: "edit-widgets-welcome-guide__text", children: (0, import_i18n20.__)(
4424 "Each block comes with its own set of controls for changing things like color, width, and alignment. These will show and hide automatically when you have a block selected."
4425 ) })
4426 ] })
4427 },
4428 {
4429 image: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4430 WelcomeGuideImage,
4431 {
4432 nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-library.svg",
4433 animatedSrc: "https://s.w.org/images/block-editor/welcome-library.gif"
4434 }
4435 ),
4436 content: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_jsx_runtime45.Fragment, { children: [
4437 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("h1", { className: "edit-widgets-welcome-guide__heading", children: (0, import_i18n20.__)("Explore all blocks") }),
4438 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { className: "edit-widgets-welcome-guide__text", children: (0, import_element25.createInterpolateElement)(
4439 (0, import_i18n20.__)(
4440 "All of the blocks available to you live in the block library. You\u2019ll find it wherever you see the <InserterIconImage /> icon."
4441 ),
4442 {
4443 InserterIconImage: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4444 "img",
4445 {
4446 className: "edit-widgets-welcome-guide__inserter-icon",
4447 alt: (0, import_i18n20.__)("inserter"),
4448 src: "data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='18' height='18' rx='2' fill='%231E1E1E'/%3E%3Cpath d='M9.22727 4V14M4 8.77273H14' stroke='white' stroke-width='1.5'/%3E%3C/svg%3E%0A"
4449 }
4450 )
4451 }
4452 ) })
4453 ] })
4454 },
4455 {
4456 image: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4457 WelcomeGuideImage,
4458 {
4459 nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-documentation.svg",
4460 animatedSrc: "https://s.w.org/images/block-editor/welcome-documentation.gif"
4461 }
4462 ),
4463 content: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_jsx_runtime45.Fragment, { children: [
4464 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("h1", { className: "edit-widgets-welcome-guide__heading", children: (0, import_i18n20.__)("Learn more") }),
4465 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { className: "edit-widgets-welcome-guide__text", children: (0, import_element25.createInterpolateElement)(
4466 (0, import_i18n20.__)(
4467 "New to the block editor? Want to learn more about using it? <a>Here's a detailed guide.</a>"
4468 ),
4469 {
4470 a: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4471 import_components21.ExternalLink,
4472 {
4473 href: (0, import_i18n20.__)(
4474 "https://wordpress.org/documentation/article/wordpress-block-editor/"
4475 )
4476 }
4477 )
4478 }
4479 ) })
4480 ] })
4481 }
4482 ]
4483 }
4484 );
4485 }
4486 function WelcomeGuideImage({ nonAnimatedSrc, animatedSrc }) {
4487 return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("picture", { className: "edit-widgets-welcome-guide__image", children: [
4488 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4489 "source",
4490 {
4491 srcSet: nonAnimatedSrc,
4492 media: "(prefers-reduced-motion: reduce)"
4493 }
4494 ),
4495 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("img", { src: animatedSrc, width: "312", height: "240", alt: "" })
4496 ] });
4497 }
4498
4499 // packages/edit-widgets/build-module/components/layout/index.mjs
4500 var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1);
4501 function Layout({ blockEditorSettings }) {
4502 const { createErrorNotice } = (0, import_data31.useDispatch)(import_notices4.store);
4503 function onPluginAreaError(name2) {
4504 createErrorNotice(
4505 (0, import_i18n21.sprintf)(
4506 /* translators: %s: plugin name */
4507 (0, import_i18n21.__)(
4508 'The "%s" plugin has encountered an error and cannot be rendered.'
4509 ),
4510 name2
4511 )
4512 );
4513 }
4514 const navigateRegionsProps = (0, import_components22.__unstableUseNavigateRegions)();
4515 return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ErrorBoundary, { children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
4516 "div",
4517 {
4518 className: navigateRegionsProps.className,
4519 ...navigateRegionsProps,
4520 ref: navigateRegionsProps.ref,
4521 children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
4522 WidgetAreasBlockEditorProvider,
4523 {
4524 blockEditorSettings,
4525 children: [
4526 /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(interface_default, { blockEditorSettings }),
4527 /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Sidebar, {}),
4528 /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_plugins3.PluginArea, { onError: onPluginAreaError }),
4529 /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(UnsavedChangesWarning, {}),
4530 /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(WelcomeGuide, {})
4531 ]
4532 }
4533 )
4534 }
4535 ) });
4536 }
4537 var layout_default = Layout;
4538
4539 // packages/edit-widgets/build-module/index.mjs
4540 var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1);
4541 var disabledBlocks = [
4542 "core/more",
4543 "core/freeform",
4544 "core/template-part",
4545 ...ALLOW_REUSABLE_BLOCKS ? [] : ["core/block"]
4546 ];
4547 function initializeEditor(id, settings2) {
4548 const target = document.getElementById(id);
4549 const root = (0, import_element26.createRoot)(target);
4550 const coreBlocks = (0, import_block_library2.__experimentalGetCoreBlocks)().filter((block) => {
4551 return !(disabledBlocks.includes(block.name) || block.name.startsWith("core/post") || block.name.startsWith("core/query") || block.name.startsWith("core/site") || block.name.startsWith("core/navigation") || block.name.startsWith("core/term"));
4552 });
4553 (0, import_data32.dispatch)(import_preferences10.store).setDefaults("core/edit-widgets", {
4554 fixedToolbar: false,
4555 welcomeGuide: true,
4556 showBlockBreadcrumbs: true,
4557 themeStyles: true
4558 });
4559 (0, import_data32.dispatch)(import_blocks3.store).reapplyBlockTypeFilters();
4560 (0, import_block_library2.registerCoreBlocks)(coreBlocks);
4561 (0, import_widgets5.registerLegacyWidgetBlock)();
4562 if (true) {
4563 (0, import_block_library2.__experimentalRegisterExperimentalCoreBlocks)({
4564 enableFSEBlocks: ENABLE_EXPERIMENTAL_FSE_BLOCKS
4565 });
4566 }
4567 (0, import_widgets5.registerLegacyWidgetVariations)(settings2);
4568 registerBlock(widget_area_exports);
4569 (0, import_widgets5.registerWidgetGroupBlock)();
4570 settings2.__experimentalFetchLinkSuggestions = (search, searchOptions) => (0, import_core_data12.__experimentalFetchLinkSuggestions)(search, searchOptions, settings2);
4571 (0, import_blocks3.setFreeformContentHandlerName)("core/html");
4572 root.render(
4573 /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_element26.StrictMode, { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(layout_default, { blockEditorSettings: settings2 }) })
4574 );
4575 return root;
4576 }
4577 var initialize = initializeEditor;
4578 function reinitializeEditor() {
4579 (0, import_deprecated6.default)("wp.editWidgets.reinitializeEditor", {
4580 since: "6.2",
4581 version: "6.3"
4582 });
4583 }
4584 var registerBlock = (block) => {
4585 if (!block) {
4586 return;
4587 }
4588 const { metadata, settings: settings2, name: name2 } = block;
4589 if (metadata) {
4590 (0, import_blocks3.unstable__bootstrapServerSideBlockDefinitions)({ [name2]: metadata });
4591 }
4592 (0, import_blocks3.registerBlockType)(name2, settings2);
4593 };
4594 return __toCommonJS(index_exports);
4595 })();
4596 //# sourceMappingURL=index.js.map
4597