PluginProbe
PatternsWP – Gutenberg Block Patterns & Page Templates Library / 1.1.0
PatternsWP – Gutenberg Block Patterns & Page Templates Library v1.1.0
1.1.0 trunk 1.0.0 1.0.1 1.0.10 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9
← All changes | build/patternswp-editor.js +1 -1640 1.0.41.1.0 View file →
@@ -1,1640 +1 @@
1 -/******/ (() => { // webpackBootstrap
2 -/******/ var __webpack_modules__ = ({
3 -
4 -/***/ "./node_modules/@wordpress/icons/build-module/icon/index.js":
5 -/*!******************************************************************!*\
6 - !*** ./node_modules/@wordpress/icons/build-module/icon/index.js ***!
7 - \******************************************************************/
8 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9 -
10 -"use strict";
11 -__webpack_require__.r(__webpack_exports__);
12 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13 -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
14 -/* harmony export */ });
15 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
16 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
17 -/**
18 - * WordPress dependencies
19 - */
20 -
21 -/** @typedef {{icon: JSX.Element, size?: number} & import('@wordpress/primitives').SVGProps} IconProps */
22 -
23 -/**
24 - * Return an SVG icon.
25 - *
26 - * @param {IconProps} props icon is the SVG component to render
27 - * size is a number specifiying the icon size in pixels
28 - * Other props will be passed to wrapped SVG component
29 - *
30 - * @return {JSX.Element} Icon component
31 - */
32 -
33 -function Icon(_ref) {
34 - let {
35 - icon,
36 - size = 24,
37 - ...props
38 - } = _ref;
39 - return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(icon, {
40 - width: size,
41 - height: size,
42 - ...props
43 - });
44 -}
45 -
46 -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Icon);
47 -//# sourceMappingURL=index.js.map
48 -
49 -/***/ }),
50 -
51 -/***/ "./node_modules/@wordpress/icons/build-module/library/block-default.js":
52 -/*!*****************************************************************************!*\
53 - !*** ./node_modules/@wordpress/icons/build-module/library/block-default.js ***!
54 - \*****************************************************************************/
55 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56 -
57 -"use strict";
58 -__webpack_require__.r(__webpack_exports__);
59 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
60 -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
61 -/* harmony export */ });
62 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
63 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
64 -/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/primitives */ "@wordpress/primitives");
65 -/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
66 -
67 -
68 -/**
69 - * WordPress dependencies
70 - */
71 -
72 -const blockDefault = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__.SVG, {
73 - xmlns: "http://www.w3.org/2000/svg",
74 - viewBox: "0 0 24 24"
75 -}, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__.Path, {
76 - 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"
77 -}));
78 -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (blockDefault);
79 -//# sourceMappingURL=block-default.js.map
80 -
81 -/***/ }),
82 -
83 -/***/ "./node_modules/@wordpress/icons/build-module/library/category.js":
84 -/*!************************************************************************!*\
85 - !*** ./node_modules/@wordpress/icons/build-module/library/category.js ***!
86 - \************************************************************************/
87 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
88 -
89 -"use strict";
90 -__webpack_require__.r(__webpack_exports__);
91 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
92 -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
93 -/* harmony export */ });
94 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
95 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
96 -/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/primitives */ "@wordpress/primitives");
97 -/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
98 -
99 -
100 -/**
101 - * WordPress dependencies
102 - */
103 -
104 -const category = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__.SVG, {
105 - viewBox: "0 0 24 24",
106 - xmlns: "http://www.w3.org/2000/svg"
107 -}, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__.Path, {
108 - d: "M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z",
109 - fillRule: "evenodd",
110 - clipRule: "evenodd"
111 -}));
112 -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (category);
113 -//# sourceMappingURL=category.js.map
114 -
115 -/***/ }),
116 -
117 -/***/ "./node_modules/@wordpress/icons/build-module/library/check.js":
118 -/*!*********************************************************************!*\
119 - !*** ./node_modules/@wordpress/icons/build-module/library/check.js ***!
120 - \*********************************************************************/
121 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
122 -
123 -"use strict";
124 -__webpack_require__.r(__webpack_exports__);
125 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
126 -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
127 -/* harmony export */ });
128 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
129 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
130 -/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/primitives */ "@wordpress/primitives");
131 -/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
132 -
133 -
134 -/**
135 - * WordPress dependencies
136 - */
137 -
138 -const check = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__.SVG, {
139 - xmlns: "http://www.w3.org/2000/svg",
140 - viewBox: "0 0 24 24"
141 -}, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__.Path, {
142 - d: "M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"
143 -}));
144 -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (check);
145 -//# sourceMappingURL=check.js.map
146 -
147 -/***/ }),
148 -
149 -/***/ "./node_modules/@wordpress/icons/build-module/library/stretch-full-width.js":
150 -/*!**********************************************************************************!*\
151 - !*** ./node_modules/@wordpress/icons/build-module/library/stretch-full-width.js ***!
152 - \**********************************************************************************/
153 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
154 -
155 -"use strict";
156 -__webpack_require__.r(__webpack_exports__);
157 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
158 -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
159 -/* harmony export */ });
160 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
161 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
162 -/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/primitives */ "@wordpress/primitives");
163 -/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
164 -
165 -
166 -/**
167 - * WordPress dependencies
168 - */
169 -
170 -const stretchFullWidth = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__.SVG, {
171 - xmlns: "http://www.w3.org/2000/svg",
172 - viewBox: "0 0 24 24"
173 -}, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__.Path, {
174 - d: "M5 4v11h14V4H5zm3 15.8h8v-1.5H8v1.5z"
175 -}));
176 -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (stretchFullWidth);
177 -//# sourceMappingURL=stretch-full-width.js.map
178 -
179 -/***/ }),
180 -
181 -/***/ "./src/core-components/inserter-listbox/context.js":
182 -/*!*********************************************************!*\
183 - !*** ./src/core-components/inserter-listbox/context.js ***!
184 - \*********************************************************/
185 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
186 -
187 -"use strict";
188 -__webpack_require__.r(__webpack_exports__);
189 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
190 -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
191 -/* harmony export */ });
192 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
193 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
194 -/**
195 - * WordPress dependencies
196 - */
197 -
198 -const InserterListboxContext = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createContext)();
199 -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (InserterListboxContext);
200 -
201 -/***/ }),
202 -
203 -/***/ "./src/core-components/inserter-listbox/index.js":
204 -/*!*******************************************************!*\
205 - !*** ./src/core-components/inserter-listbox/index.js ***!
206 - \*******************************************************/
207 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
208 -
209 -"use strict";
210 -__webpack_require__.r(__webpack_exports__);
211 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
212 -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
213 -/* harmony export */ });
214 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
215 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
216 -/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
217 -/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__);
218 -/* harmony import */ var _context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./context */ "./src/core-components/inserter-listbox/context.js");
219 -
220 -/**
221 - * WordPress dependencies
222 - */
223 - // eslint-disable-line
224 -
225 -/**
226 - * Internal dependencies
227 - */
228 -
229 -function InserterListbox({
230 - children
231 -}) {
232 - const compositeState = (0,_wordpress_components__WEBPACK_IMPORTED_MODULE_1__.__unstableUseCompositeState)({
233 - shift: true,
234 - wrap: 'horizontal'
235 - });
236 - return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_context__WEBPACK_IMPORTED_MODULE_2__["default"].Provider, {
237 - value: compositeState
238 - }, children);
239 -}
240 -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (InserterListbox);
241 -
242 -/***/ }),
243 -
244 -/***/ "./src/core-components/no-results.js":
245 -/*!*******************************************!*\
246 - !*** ./src/core-components/no-results.js ***!
247 - \*******************************************/
248 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
249 -
250 -"use strict";
251 -__webpack_require__.r(__webpack_exports__);
252 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
253 -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
254 -/* harmony export */ });
255 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
256 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
257 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
258 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
259 -/* harmony import */ var _wordpress_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/icons */ "./node_modules/@wordpress/icons/build-module/icon/index.js");
260 -/* harmony import */ var _wordpress_icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/icons */ "./node_modules/@wordpress/icons/build-module/library/block-default.js");
261 -
262 -/**
263 - * WordPress dependencies
264 - */
265 -
266 -
267 -function InserterNoResults({
268 - icon,
269 - label
270 -}) {
271 - return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
272 - className: "patternswp-inserter__no-results"
273 - }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_icons__WEBPACK_IMPORTED_MODULE_2__["default"], {
274 - className: "patternswp-inserter__no-results-icon",
275 - icon: icon ? icon : _wordpress_icons__WEBPACK_IMPORTED_MODULE_3__["default"]
276 - }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", null, label ? label : (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('No results found.', 'patternswp'))));
277 -}
278 -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (InserterNoResults);
279 -
280 -/***/ }),
281 -
282 -/***/ "./src/core-hooks/use-insertion-point.js":
283 -/*!***********************************************!*\
284 - !*** ./src/core-hooks/use-insertion-point.js ***!
285 - \***********************************************/
286 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
287 -
288 -"use strict";
289 -__webpack_require__.r(__webpack_exports__);
290 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
291 -/* harmony export */ "default": () => (/* binding */ useInsertionPoint)
292 -/* harmony export */ });
293 -/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash */ "lodash");
294 -/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_0__);
295 -/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/data */ "@wordpress/data");
296 -/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_data__WEBPACK_IMPORTED_MODULE_1__);
297 -/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks");
298 -/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__);
299 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
300 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
301 -/* harmony import */ var _wordpress_a11y__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/a11y */ "@wordpress/a11y");
302 -/* harmony import */ var _wordpress_a11y__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_a11y__WEBPACK_IMPORTED_MODULE_4__);
303 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
304 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__);
305 -/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @wordpress/block-editor */ "@wordpress/block-editor");
306 -/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_6__);
307 -/**
308 - * External dependencies
309 - */
310 -
311 -
312 -/**
313 - * WordPress dependencies
314 - */
315 -
316 -
317 -
318 -
319 -
320 -
321 -
322 -/**
323 - * @typedef WPInserterConfig
324 - * @property {string=} rootClientId If set, insertion will be into the block with this ID.
325 - * @property {number=} insertionIndex If set, insertion will be into this explicit position.
326 - * @property {string=} clientId If set, insertion will be after the block with this ID.
327 - * @property {boolean=} isAppender Whether the inserter is an appender or not.
328 - * @property {Function=} onSelect Called after insertion.
329 - */
330 -
331 -/**
332 - * Returns the insertion point state given the inserter config.
333 - *
334 - * @param {WPInserterConfig} config Inserter Config.
335 - * @return {Array} Insertion Point State (rootClientID, onInsertBlocks and onToggle).
336 - */
337 -function useInsertionPoint({
338 - rootClientId = '',
339 - insertionIndex,
340 - clientId,
341 - isAppender,
342 - onSelect,
343 - shouldFocusBlock = true
344 -}) {
345 - const {
346 - getSelectedBlock
347 - } = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_1__.useSelect)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_6__.store);
348 - const {
349 - destinationRootClientId,
350 - destinationIndex
351 - } = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_1__.useSelect)(select => {
352 - const {
353 - getSelectedBlockClientId,
354 - getBlockRootClientId,
355 - getBlockIndex,
356 - getBlockOrder
357 - } = select(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_6__.store);
358 - const selectedBlockClientId = getSelectedBlockClientId();
359 - let _destinationRootClientId = rootClientId;
360 - let _destinationIndex;
361 - if (insertionIndex !== undefined) {
362 - // Insert into a specific index.
363 - _destinationIndex = insertionIndex;
364 - } else if (clientId) {
365 - // Insert after a specific client ID.
366 - _destinationIndex = getBlockIndex(clientId, _destinationRootClientId);
367 - } else if (!isAppender && selectedBlockClientId) {
368 - _destinationRootClientId = getBlockRootClientId(selectedBlockClientId);
369 - _destinationIndex = getBlockIndex(selectedBlockClientId, _destinationRootClientId) + 1;
370 - } else {
371 - // Insert at the end of the list.
372 - _destinationIndex = getBlockOrder(_destinationRootClientId).length;
373 - }
374 - return {
375 - destinationRootClientId: _destinationRootClientId,
376 - destinationIndex: _destinationIndex
377 - };
378 - }, [rootClientId, insertionIndex, clientId, isAppender]);
379 - const {
380 - replaceBlocks,
381 - insertBlocks,
382 - showInsertionPoint,
383 - hideInsertionPoint
384 - } = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_1__.useDispatch)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_6__.store);
385 - const onInsertBlocks = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_5__.useCallback)((blocks, meta, shouldForceFocusBlock = false) => {
386 - const selectedBlock = getSelectedBlock();
387 - if (!isAppender && selectedBlock && (0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__.isUnmodifiedDefaultBlock)(selectedBlock)) {
388 - replaceBlocks(selectedBlock.clientId, blocks, null, shouldFocusBlock || shouldForceFocusBlock ? 0 : null, meta);
389 - } else {
390 - insertBlocks(blocks, destinationIndex, destinationRootClientId, true, shouldFocusBlock || shouldForceFocusBlock ? 0 : null, meta);
391 - }
392 - const message = (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.sprintf)(
393 - // translators: %d: the name of the block that has been added
394 - (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__._n)('%d block added.', '%d blocks added.', (0,lodash__WEBPACK_IMPORTED_MODULE_0__.castArray)(blocks).length), (0,lodash__WEBPACK_IMPORTED_MODULE_0__.castArray)(blocks).length);
395 - (0,_wordpress_a11y__WEBPACK_IMPORTED_MODULE_4__.speak)(message);
396 - if (onSelect) {
397 - onSelect();
398 - }
399 - }, [isAppender, getSelectedBlock, replaceBlocks, insertBlocks, destinationRootClientId, destinationIndex, onSelect, shouldFocusBlock]);
400 - const onToggleInsertionPoint = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_5__.useCallback)(show => {
401 - if (show) {
402 - showInsertionPoint(destinationRootClientId, destinationIndex);
403 - } else {
404 - hideInsertionPoint();
405 - }
406 - }, [showInsertionPoint, hideInsertionPoint, destinationRootClientId, destinationIndex]);
407 - return [destinationRootClientId, onInsertBlocks, onToggleInsertionPoint];
408 -}
409 -
410 -/***/ }),
411 -
412 -/***/ "./src/core-hooks/use-patterns-state.js":
413 -/*!**********************************************!*\
414 - !*** ./src/core-hooks/use-patterns-state.js ***!
415 - \**********************************************/
416 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
417 -
418 -"use strict";
419 -__webpack_require__.r(__webpack_exports__);
420 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
421 -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
422 -/* harmony export */ });
423 -/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash */ "lodash");
424 -/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_0__);
425 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
426 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
427 -/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks");
428 -/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__);
429 -/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/data */ "@wordpress/data");
430 -/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_data__WEBPACK_IMPORTED_MODULE_3__);
431 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
432 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__);
433 -/* harmony import */ var _wordpress_notices__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/notices */ "@wordpress/notices");
434 -/* harmony import */ var _wordpress_notices__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_notices__WEBPACK_IMPORTED_MODULE_5__);
435 -/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @wordpress/block-editor */ "@wordpress/block-editor");
436 -/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_6__);
437 -/**
438 - * External dependencies
439 - */
440 -
441 -
442 -/**
443 - * WordPress dependencies
444 - */
445 -
446 -
447 -
448 -
449 -
450 -
451 -
452 -/**
453 - * Retrieves the block patterns inserter state.
454 - *
455 - * @param {Function} onInsert function called when inserter a list of blocks.
456 - * @param {string=} rootClientId Insertion's root client ID.
457 - *
458 - * @return {Array} Returns the patterns state. (patterns, categories, onSelect handler)
459 - */
460 -const usePatternsState = (onInsert, rootClientId) => {
461 - const {
462 - patterns,
463 - patternCategories,
464 - patternCategoryTypes
465 - } = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_3__.useSelect)(select => {
466 - var _categoryTypes$patter;
467 - const {
468 - __experimentalGetAllowedPatterns,
469 - getSettings
470 - } = select(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_6__.store);
471 -
472 - // Fetch any register pattern category types with the custom REST
473 - // API endpoint. Eventually replace with core functionality.
474 - const {
475 - getEntityRecord
476 - } = select('core');
477 - const categoryTypes = getEntityRecord('patternswp/v1', 'patternCategoryTypes');
478 - return {
479 - patterns: __experimentalGetAllowedPatterns(rootClientId),
480 - patternCategories: getSettings().__experimentalBlockPatternCategories,
481 - patternCategoryTypes: (_categoryTypes$patter = categoryTypes?.patternCategoryTypes) !== null && _categoryTypes$patter !== void 0 ? _categoryTypes$patter : 'fetching'
482 - // This is new functionality and will need to ultimately be added to the
483 - // Gutenberg Patterns API. Category Types allow theme/plugin developers to
484 - // group pattern categories together in the new Pattern Explorer.
485 - // patternCategoryTypes: getSettings().__experimentalBlockPatternCategoryTypes,
486 - };
487 - }, [rootClientId]);
488 - const {
489 - createSuccessNotice
490 - } = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_3__.useDispatch)(_wordpress_notices__WEBPACK_IMPORTED_MODULE_5__.store);
491 - const onClickPattern = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.useCallback)((pattern, blocks) => {
492 - onInsert((0,lodash__WEBPACK_IMPORTED_MODULE_0__.map)(blocks, block => (0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__.cloneBlock)(block)), pattern.name);
493 - createSuccessNotice((0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.sprintf)( /* translators: %s: block pattern title. */
494 - (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)('Block pattern "%s" inserted.', 'patternswp'), pattern.title), {
495 - type: 'snackbar'
496 - });
497 - }, []);
498 - return [patterns, patternCategories, patternCategoryTypes, onClickPattern];
499 -};
500 -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (usePatternsState);
501 -
502 -/***/ }),
503 -
504 -/***/ "./src/pattern-explorer.js":
505 -/*!*********************************!*\
506 - !*** ./src/pattern-explorer.js ***!
507 - \*********************************/
508 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
509 -
510 -"use strict";
511 -__webpack_require__.r(__webpack_exports__);
512 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
513 -/* harmony export */ "default": () => (/* binding */ PatternExplorer)
514 -/* harmony export */ });
515 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
516 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
517 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
518 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
519 -/* harmony import */ var _sidebar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sidebar */ "./src/sidebar.js");
520 -/* harmony import */ var _preview__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./preview */ "./src/preview/index.js");
521 -
522 -/**
523 - * WordPress dependencies
524 - */
525 -
526 -
527 -/**
528 - * Internal dependencies
529 - */
530 -
531 -
532 -
533 -/**
534 - * Render the block pattern inserter.
535 - *
536 - * @since 0.1.0
537 - * @param {Object} props All the props passed to this function
538 - * @return {string} Return the rendered JSX
539 - */
540 -function PatternExplorer(props) {
541 - const {
542 - allPatterns,
543 - initialCategory,
544 - patternCategories,
545 - patternCategoryTypes
546 - } = props;
547 - const [selectedCategory, setSelectedCategory] = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.useState)(initialCategory?.name);
548 - const [searchValue, setSearchValue] = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.useState)('');
549 - return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
550 - className: "patternswp"
551 - }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_sidebar__WEBPACK_IMPORTED_MODULE_2__["default"], {
552 - patternCategories: patternCategories,
553 - patternCategoryTypes: patternCategoryTypes,
554 - selectedCategory: selectedCategory,
555 - setSelectedCategory: setSelectedCategory,
556 - searchValue: searchValue,
557 - setSearchValue: setSearchValue
558 - }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_preview__WEBPACK_IMPORTED_MODULE_3__["default"], {
559 - allPatterns: allPatterns,
560 - patternCategories: patternCategories,
561 - selectedCategory: selectedCategory,
562 - searchValue: searchValue,
563 - onRequestClose: props.onRequestClose
564 - }));
565 -}
566 -
567 -/***/ }),
568 -
569 -/***/ "./src/preview/header.js":
570 -/*!*******************************!*\
571 - !*** ./src/preview/header.js ***!
572 - \*******************************/
573 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
574 -
575 -"use strict";
576 -__webpack_require__.r(__webpack_exports__);
577 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
578 -/* harmony export */ "default": () => (/* binding */ PreviewHeader)
579 -/* harmony export */ });
580 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
581 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
582 -/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
583 -/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
584 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
585 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__);
586 -/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
587 -/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_3__);
588 -/* harmony import */ var _wordpress_icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/icons */ "./node_modules/@wordpress/icons/build-module/library/check.js");
589 -/* harmony import */ var _wordpress_icons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/icons */ "./node_modules/@wordpress/icons/build-module/library/stretch-full-width.js");
590 -/* harmony import */ var _wordpress_icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @wordpress/icons */ "./node_modules/@wordpress/icons/build-module/library/category.js");
591 -
592 -/**
593 - * External dependencies
594 - */
595 -
596 -
597 -/**
598 - * WordPress dependencies
599 - */
600 -
601 -
602 -
603 -
604 -/**
605 - * Renders the block pattern preview header.
606 - *
607 - * @since 0.1.0
608 - * @param {Object} props All the props passed to this function
609 - * @return {string} Return the rendered JSX
610 - */
611 -function PreviewHeader(props) {
612 - const {
613 - viewportWidth,
614 - setViewportWidth,
615 - isGrid,
616 - setIsGrid,
617 - shownPatterns,
618 - searchValue,
619 - isLoading
620 - } = props;
621 - const widths = [{
622 - label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Desktop', 'patternswp'),
623 - slug: 'desktop',
624 - value: 1300,
625 - active: viewportWidth === 1300
626 - }, {
627 - label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Tablet', 'patternswp'),
628 - slug: 'tablet',
629 - value: 778,
630 - active: viewportWidth === 778
631 - }, {
632 - label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Mobile', 'patternswp'),
633 - slug: 'mobile',
634 - value: 358,
635 - active: viewportWidth === 358
636 - }];
637 - function toggleWidths(width) {
638 - if (!width.active) {
639 - setViewportWidth(width.value);
640 - }
641 - }
642 - const baseClassName = 'patternswp__preview-header';
643 - return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
644 - className: baseClassName
645 - }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
646 - className: `${baseClassName}__search-results`
647 - }, isLoading && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_3__.Spinner, null), searchValue && searchValue.length > 1 && (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.sprintf)(
648 - // translators: %1$d: Number of patterns. %2$s: The search input.
649 - (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__._n)('%1$d search result for "%2$s"', '%1$d search results for "%2$s"', shownPatterns.length, 'patternswp'), shownPatterns.length, searchValue)), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
650 - className: `${baseClassName}__controls`
651 - }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_3__.DropdownMenu, {
652 - icon: '',
653 - text: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Preview', 'patternswp'),
654 - className: "viewport-toggle",
655 - toggleProps: {
656 - isTertiary: true
657 - },
658 - popoverProps: {
659 - focusOnMount: 'container',
660 - position: 'bottom left'
661 - }
662 - }, () => (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_3__.MenuGroup, null, widths.map(width => (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_3__.MenuItem, {
663 - key: width.slug,
664 - className: classnames__WEBPACK_IMPORTED_MODULE_1___default()({
665 - disabled: !width.active
666 - }),
667 - icon: width.active ? _wordpress_icons__WEBPACK_IMPORTED_MODULE_4__["default"] : '',
668 - onClick: () => toggleWidths(width)
669 - }, width.label)))), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_3__.Button, {
670 - label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Individual Pattern', 'patternswp'),
671 - icon: _wordpress_icons__WEBPACK_IMPORTED_MODULE_5__["default"],
672 - isPressed: !isGrid,
673 - onClick: () => setIsGrid(!isGrid)
674 - }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_3__.Button, {
675 - label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Grid View', 'patternswp'),
676 - icon: _wordpress_icons__WEBPACK_IMPORTED_MODULE_6__["default"],
677 - isPressed: isGrid,
678 - onClick: () => setIsGrid(!isGrid)
679 - })));
680 -}
681 -
682 -/***/ }),
683 -
684 -/***/ "./src/preview/index.js":
685 -/*!******************************!*\
686 - !*** ./src/preview/index.js ***!
687 - \******************************/
688 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
689 -
690 -"use strict";
691 -__webpack_require__.r(__webpack_exports__);
692 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
693 -/* harmony export */ "default": () => (/* binding */ PatternExplorerPreview)
694 -/* harmony export */ });
695 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
696 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
697 -/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash */ "lodash");
698 -/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_1__);
699 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
700 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__);
701 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
702 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_3__);
703 -/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/compose */ "@wordpress/compose");
704 -/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_compose__WEBPACK_IMPORTED_MODULE_4__);
705 -/* harmony import */ var _wordpress_a11y__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/a11y */ "@wordpress/a11y");
706 -/* harmony import */ var _wordpress_a11y__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_a11y__WEBPACK_IMPORTED_MODULE_5__);
707 -/* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./header */ "./src/preview/header.js");
708 -/* harmony import */ var _pattern_list__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./pattern-list */ "./src/preview/pattern-list.js");
709 -
710 -/**
711 - * External dependencies
712 - */
713 -
714 -
715 -/**
716 - * WordPress dependencies
717 - */
718 -
719 -
720 -
721 -
722 -
723 -/**
724 - * Internal dependencies
725 - */
726 -
727 -
728 -const INITIAL_INSERTER_RESULTS = 3;
729 -
730 -/**
731 - * Renders the grid of block pattern previews.
732 - *
733 - * @since 0.1.0
734 - * @param {Object} props All the props passed to this function
735 - * @return {string} Return the rendered JSX
736 - */
737 -function PatternExplorerPreview(props) {
738 - const {
739 - allPatterns,
740 - patternCategories,
741 - selectedCategory,
742 - searchValue
743 - } = props;
744 - const [viewportWidth, setViewportWidth] = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)(1300);
745 - const [isGrid, setIsGrid] = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)(true);
746 - const debouncedSpeak = (0,_wordpress_compose__WEBPACK_IMPORTED_MODULE_4__.useDebounce)(_wordpress_a11y__WEBPACK_IMPORTED_MODULE_5__.speak, 500);
747 - const registeredPatternCategories = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useMemo)(() => patternCategories.map(patternCategory => patternCategory.name), [patternCategories]);
748 - const filteredPatterns = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useMemo)(() => {
749 - let results = [];
750 -
751 - // Only start searching after the user has typed 2+ letters.
752 - const isSearching = searchValue && searchValue.length > 1;
753 - if (isSearching) {
754 - results = allPatterns.filter(pattern => {
755 - const input = searchValue.toLowerCase();
756 - const title = pattern.title.toLowerCase();
757 -
758 - // First check if the title matches.
759 - if (title.includes(input)) {
760 - return true;
761 - }
762 -
763 - // Then check if any keywords match.
764 - if (pattern?.keywords && Array.isArray(pattern.keywords)) {
765 - const keywordMatches = pattern.keywords.filter(keyword => typeof keyword === 'string' && keyword.includes(input));
766 - return !(0,lodash__WEBPACK_IMPORTED_MODULE_1__.isEmpty)(keywordMatches);
767 - }
768 - return false;
769 - }).filter(pattern => {
770 - // Only include patterns with categories starting with 'patternswp-'
771 - return pattern.categories?.some(category => category.startsWith('patternswp-'));
772 - });
773 - } else {
774 - // Filter patterns based on the selected category.
775 - if (selectedCategory === 'all') {
776 - results = allPatterns.filter(pattern => {
777 - return pattern.categories && pattern.categories.some(category => category.startsWith('patternswp-'));
778 - });
779 - } else if (selectedCategory === 'uncategorized') {
780 - results = allPatterns.filter(pattern => !pattern.categories || pattern.categories.length === 0);
781 - } else {
782 - results = allPatterns.filter(pattern => pattern.categories?.includes(selectedCategory));
783 - }
784 - }
785 - return results;
786 - }, [searchValue, selectedCategory, allPatterns]);
787 - const shownPatterns = (0,_wordpress_compose__WEBPACK_IMPORTED_MODULE_4__.useAsyncList)(filteredPatterns, {
788 - step: INITIAL_INSERTER_RESULTS
789 - });
790 -
791 - // Are patterns still being loaded?
792 - const isLoading = shownPatterns.length < filteredPatterns.length;
793 -
794 - // Announce search results on change and only when loading is finished.
795 - // TODO: This needs work, not updating when search field is cleared.
796 - (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useEffect)(() => {
797 - if (!searchValue || isLoading) {
798 - return;
799 - }
800 - const count = filteredPatterns.length;
801 - const resultsFoundMessage = (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.sprintf)( /* translators: %d: number of patterns found. */
802 - (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__._n)('%d pattern found.', '%d patterns found.', count, 'patternswp'), count);
803 - debouncedSpeak(resultsFoundMessage);
804 - }, [searchValue, debouncedSpeak]);
805 - const baseClassName = 'patternswp__preview';
806 - return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
807 - className: baseClassName
808 - }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_header__WEBPACK_IMPORTED_MODULE_6__["default"], {
809 - viewportWidth: viewportWidth,
810 - setViewportWidth: setViewportWidth,
811 - isGrid: isGrid,
812 - setIsGrid: setIsGrid,
813 - shownPatterns: shownPatterns,
814 - searchValue: searchValue,
815 - isLoading: isLoading
816 - }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_pattern_list__WEBPACK_IMPORTED_MODULE_7__["default"], {
817 - viewportWidth: viewportWidth,
818 - isGrid: isGrid,
819 - shownPatterns: shownPatterns,
820 - searchValue: searchValue,
821 - isLoading: isLoading,
822 - onRequestClose: props.onRequestClose
823 - }));
824 -}
825 -
826 -/***/ }),
827 -
828 -/***/ "./src/preview/pattern-list.js":
829 -/*!*************************************!*\
830 - !*** ./src/preview/pattern-list.js ***!
831 - \*************************************/
832 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
833 -
834 -"use strict";
835 -__webpack_require__.r(__webpack_exports__);
836 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
837 -/* harmony export */ "default": () => (/* binding */ PreviewPatternList)
838 -/* harmony export */ });
839 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
840 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
841 -/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
842 -/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
843 -/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash */ "lodash");
844 -/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_2__);
845 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
846 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
847 -/* harmony import */ var _wordpress_icons__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @wordpress/icons */ "./node_modules/@wordpress/icons/build-module/library/category.js");
848 -/* harmony import */ var _wordpress_icons__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @wordpress/icons */ "./node_modules/@wordpress/icons/build-module/library/stretch-full-width.js");
849 -/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
850 -/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__);
851 -/* harmony import */ var _core_components_no_results__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./../core-components/no-results */ "./src/core-components/no-results.js");
852 -/* harmony import */ var _core_components_inserter_listbox__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./../core-components/inserter-listbox */ "./src/core-components/inserter-listbox/index.js");
853 -/* harmony import */ var _core_hooks_use_insertion_point__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../core-hooks/use-insertion-point */ "./src/core-hooks/use-insertion-point.js");
854 -/* harmony import */ var _pattern__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./pattern */ "./src/preview/pattern.js");
855 -
856 -/**
857 - * External dependencies
858 - */
859 -
860 -
861 -
862 -/**
863 - * WordPress dependencies
864 - */
865 -
866 -
867 -
868 -/**
869 - * Internal dependencies
870 - */
871 -
872 -
873 -
874 -
875 -
876 -/**
877 - * Renders the grid of block pattern previews.
878 - *
879 - * @since 0.1.0
880 - * @param {Object} props All the props passed to this function
881 - * @return {string} Return the rendered JSX
882 - */
883 -function PreviewPatternList(props) {
884 - const {
885 - isGrid,
886 - isLoading,
887 - searchValue,
888 - shownPatterns,
889 - viewportWidth
890 - } = props;
891 - const [destinationRootClientId, onInsertBlocks] = (0,_core_hooks_use_insertion_point__WEBPACK_IMPORTED_MODULE_7__["default"])({
892 - // eslint-disable-line
893 - shouldFocusBlock: true
894 - });
895 - const isError = (0,lodash__WEBPACK_IMPORTED_MODULE_2__.isEmpty)(shownPatterns) && !searchValue && !isLoading;
896 - const noSearchResults = (0,lodash__WEBPACK_IMPORTED_MODULE_2__.isEmpty)(shownPatterns) && searchValue;
897 - const hasPatterns = !isError && !noSearchResults;
898 - const noPatternsMessage = !hasPatterns && noSearchResults ? (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('No search results found.', 'patternswp') : (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('No patterns were found for this category.', 'patternswp');
899 - const composite = (0,_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.__unstableUseCompositeState)();
900 - const baseClassName = 'patternswp__preview-pattern-list';
901 - return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_core_components_inserter_listbox__WEBPACK_IMPORTED_MODULE_6__["default"], null, !hasPatterns && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_core_components_no_results__WEBPACK_IMPORTED_MODULE_5__["default"], {
902 - icon: isGrid ? _wordpress_icons__WEBPACK_IMPORTED_MODULE_9__["default"] : _wordpress_icons__WEBPACK_IMPORTED_MODULE_10__["default"],
903 - label: noPatternsMessage
904 - }), hasPatterns && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.__unstableComposite, {
905 - ...composite,
906 - role: "listbox",
907 - className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(baseClassName, {
908 - 'is-grid': isGrid,
909 - 'is-loading': isLoading,
910 - // TODO this needs reworking.
911 - 'preview-tablet': viewportWidth === 778,
912 - 'preview-mobile': viewportWidth === 358
913 - }),
914 - "aria-label": (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Patterns', 'patternswp')
915 - }, shownPatterns.map(pattern => (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_pattern__WEBPACK_IMPORTED_MODULE_8__["default"], {
916 - key: pattern.name,
917 - pattern: pattern,
918 - onInsertPattern: onInsertBlocks,
919 - viewportWidth: viewportWidth,
920 - composite: composite,
921 - onRequestClose: props.onRequestClose
922 - }))));
923 -}
924 -
925 -/***/ }),
926 -
927 -/***/ "./src/preview/pattern.js":
928 -/*!********************************!*\
929 - !*** ./src/preview/pattern.js ***!
930 - \********************************/
931 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
932 -
933 -"use strict";
934 -__webpack_require__.r(__webpack_exports__);
935 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
936 -/* harmony export */ "default": () => (/* binding */ Pattern)
937 -/* harmony export */ });
938 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
939 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
940 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
941 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
942 -/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
943 -/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__);
944 -/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/block-editor */ "@wordpress/block-editor");
945 -/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__);
946 -/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks");
947 -/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_4__);
948 -/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/compose */ "@wordpress/compose");
949 -/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_compose__WEBPACK_IMPORTED_MODULE_5__);
950 -/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @wordpress/data */ "@wordpress/data");
951 -/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_wordpress_data__WEBPACK_IMPORTED_MODULE_6__);
952 -
953 -/**
954 - * WordPress dependencies
955 - */
956 -
957 -
958 -
959 -
960 -
961 -
962 -
963 -/**
964 - * Renders the block pattern 'card'.
965 - *
966 - * @since 0.1.0
967 - * @param {Object} props All the props passed to this function
968 - * @return {string} Return the rendered JSX
969 - */
970 -function Pattern(props) {
971 - const {
972 - pattern,
973 - onInsertPattern,
974 - viewportWidth,
975 - composite,
976 - isBlock,
977 - clientId
978 - } = props;
979 - const {
980 - title,
981 - categories = [],
982 - blocks
983 - } = pattern; // eslint-disable-line
984 - const {
985 - createSuccessNotice
986 - } = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_6__.useDispatch)('core/notices');
987 - const instanceId = (0,_wordpress_compose__WEBPACK_IMPORTED_MODULE_5__.useInstanceId)(Pattern);
988 - const descriptionId = `preview-pattern-card__info-description-${instanceId}`;
989 - function insertPattern() {
990 - onInsertPattern(blocks.map(block => (0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_4__.cloneBlock)(block)));
991 -
992 - // If the inserter was rendered from a block, we need to remove that
993 - // original block.
994 - if (isBlock) {
995 - (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_6__.dispatch)('core/block-editor').removeBlock(clientId);
996 - }
997 - createSuccessNotice((0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.sprintf)(
998 - // Translators: Name of the pattern being inserted.
999 - (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Block pattern "%s" inserted.', 'patternswp'), pattern.title), {
1000 - type: 'snackbar'
1001 - });
1002 - props.onRequestClose();
1003 - }
1004 - const baseClassName = 'patternswp__preview-pattern-list__item';
1005 - return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
1006 - className: baseClassName,
1007 - "aria-label": pattern.title,
1008 - "aria-describedby": pattern?.description ? descriptionId : undefined
1009 - }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.__unstableCompositeItem, {
1010 - role: "option",
1011 - as: "div",
1012 - ...composite,
1013 - className: `${baseClassName}-preview`,
1014 - onClick: insertPattern
1015 - }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.BlockPreview, {
1016 - blocks: blocks,
1017 - viewportWidth: viewportWidth
1018 - })), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
1019 - className: `${baseClassName}-actions`
1020 - }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
1021 - className: `${baseClassName}-title`
1022 - }, title), !!pattern.description && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.VisuallyHidden, {
1023 - id: descriptionId
1024 - }, pattern.description), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.Button, {
1025 - isSecondary: true,
1026 - onClick: insertPattern
1027 - }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Add Pattern', 'patternswp'))));
1028 -}
1029 -
1030 -/***/ }),
1031 -
1032 -/***/ "./src/sidebar.js":
1033 -/*!************************!*\
1034 - !*** ./src/sidebar.js ***!
1035 - \************************/
1036 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1037 -
1038 -"use strict";
1039 -__webpack_require__.r(__webpack_exports__);
1040 -/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1041 -/* harmony export */ "default": () => (/* binding */ PatternExplorerSidebar)
1042 -/* harmony export */ });
1043 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1044 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1045 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
1046 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
1047 -/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
1048 -/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__);
1049 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
1050 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_3__);
1051 -
1052 -/**
1053 - * WordPress dependencies
1054 - */
1055 -
1056 -
1057 -
1058 -
1059 -/**
1060 - * Renders the block pattern category sidebar control.
1061 - *
1062 - * @since 0.1.0
1063 - * @param {Object} props All the props passed to this function
1064 - * @return {string} Return the rendered JSX
1065 - */
1066 -function PatternExplorerSidebar(props) {
1067 - const {
1068 - patternCategories,
1069 - patternCategoryTypes,
1070 - selectedCategory,
1071 - setSelectedCategory,
1072 - searchValue,
1073 - setSearchValue
1074 - } = props;
1075 - function onClickCategory(category) {
1076 - setSelectedCategory(category);
1077 - setSearchValue('');
1078 - }
1079 - const registeredCategoryTypes = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useMemo)(() => patternCategoryTypes.map(patternCategoryType => patternCategoryType.name), [patternCategoryTypes]);
1080 - const baseClassName = 'patternswp__sidebar';
1081 - return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
1082 - className: baseClassName
1083 - }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
1084 - className: `${baseClassName}__search`
1085 - }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.SearchControl, {
1086 - value: searchValue,
1087 - onChange: setSearchValue,
1088 - label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Search patterns', 'patternswp')
1089 - })), patternCategoryTypes.map(categoryType => {
1090 - const categoriesOfType = patternCategories.filter(category => {
1091 - // If the selected category is uncategorized, return all
1092 - // pattern categories without assigned category types.
1093 - if (categoryType.name === 'uncategorized') {
1094 - return !category?.categoryTypes || category.categoryTypes.every(type => !registeredCategoryTypes.includes(type));
1095 - }
1096 - return category.categoryTypes?.includes(categoryType.name);
1097 - });
1098 -
1099 - // If there are no categories in the current type, bail.
1100 - if (!categoriesOfType.length) {
1101 - return null;
1102 - }
1103 - return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
1104 - key: categoryType,
1105 - className: `${baseClassName}__category-type`
1106 - }, categoryType?.hideLabelFromVision ? (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.VisuallyHidden, {
1107 - as: "h2"
1108 - }, categoryType.label) : (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("h2", {
1109 - className: `${baseClassName}__category-type__title`
1110 - }, categoryType.label), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
1111 - className: `${baseClassName}__category-type__categories`
1112 - }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.MenuGroup, {
1113 - className: `${baseClassName}__categories-list`
1114 - }, categoriesOfType.map(category => {
1115 - return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.MenuItem, {
1116 - key: category.name,
1117 - label: category.label,
1118 - className: `${baseClassName}__categories-list__item`,
1119 - isPressed: !searchValue && category.name === selectedCategory,
1120 - onClick: () => onClickCategory(category.name)
1121 - }, category.label);
1122 - }))));
1123 - }));
1124 -}
1125 -
1126 -/***/ }),
1127 -
1128 -/***/ "react":
1129 -/*!************************!*\
1130 - !*** external "React" ***!
1131 - \************************/
1132 -/***/ ((module) => {
1133 -
1134 -"use strict";
1135 -module.exports = window["React"];
1136 -
1137 -/***/ }),
1138 -
1139 -/***/ "lodash":
1140 -/*!*************************!*\
1141 - !*** external "lodash" ***!
1142 - \*************************/
1143 -/***/ ((module) => {
1144 -
1145 -"use strict";
1146 -module.exports = window["lodash"];
1147 -
1148 -/***/ }),
1149 -
1150 -/***/ "@wordpress/a11y":
1151 -/*!******************************!*\
1152 - !*** external ["wp","a11y"] ***!
1153 - \******************************/
1154 -/***/ ((module) => {
1155 -
1156 -"use strict";
1157 -module.exports = window["wp"]["a11y"];
1158 -
1159 -/***/ }),
1160 -
1161 -/***/ "@wordpress/block-editor":
1162 -/*!*************************************!*\
1163 - !*** external ["wp","blockEditor"] ***!
1164 - \*************************************/
1165 -/***/ ((module) => {
1166 -
1167 -"use strict";
1168 -module.exports = window["wp"]["blockEditor"];
1169 -
1170 -/***/ }),
1171 -
1172 -/***/ "@wordpress/blocks":
1173 -/*!********************************!*\
1174 - !*** external ["wp","blocks"] ***!
1175 - \********************************/
1176 -/***/ ((module) => {
1177 -
1178 -"use strict";
1179 -module.exports = window["wp"]["blocks"];
1180 -
1181 -/***/ }),
1182 -
1183 -/***/ "@wordpress/components":
1184 -/*!************************************!*\
1185 - !*** external ["wp","components"] ***!
1186 - \************************************/
1187 -/***/ ((module) => {
1188 -
1189 -"use strict";
1190 -module.exports = window["wp"]["components"];
1191 -
1192 -/***/ }),
1193 -
1194 -/***/ "@wordpress/compose":
1195 -/*!*********************************!*\
1196 - !*** external ["wp","compose"] ***!
1197 - \*********************************/
1198 -/***/ ((module) => {
1199 -
1200 -"use strict";
1201 -module.exports = window["wp"]["compose"];
1202 -
1203 -/***/ }),
1204 -
1205 -/***/ "@wordpress/data":
1206 -/*!******************************!*\
1207 - !*** external ["wp","data"] ***!
1208 - \******************************/
1209 -/***/ ((module) => {
1210 -
1211 -"use strict";
1212 -module.exports = window["wp"]["data"];
1213 -
1214 -/***/ }),
1215 -
1216 -/***/ "@wordpress/element":
1217 -/*!*********************************!*\
1218 - !*** external ["wp","element"] ***!
1219 - \*********************************/
1220 -/***/ ((module) => {
1221 -
1222 -"use strict";
1223 -module.exports = window["wp"]["element"];
1224 -
1225 -/***/ }),
1226 -
1227 -/***/ "@wordpress/i18n":
1228 -/*!******************************!*\
1229 - !*** external ["wp","i18n"] ***!
1230 - \******************************/
1231 -/***/ ((module) => {
1232 -
1233 -"use strict";
1234 -module.exports = window["wp"]["i18n"];
1235 -
1236 -/***/ }),
1237 -
1238 -/***/ "@wordpress/notices":
1239 -/*!*********************************!*\
1240 - !*** external ["wp","notices"] ***!
1241 - \*********************************/
1242 -/***/ ((module) => {
1243 -
1244 -"use strict";
1245 -module.exports = window["wp"]["notices"];
1246 -
1247 -/***/ }),
1248 -
1249 -/***/ "@wordpress/primitives":
1250 -/*!************************************!*\
1251 - !*** external ["wp","primitives"] ***!
1252 - \************************************/
1253 -/***/ ((module) => {
1254 -
1255 -"use strict";
1256 -module.exports = window["wp"]["primitives"];
1257 -
1258 -/***/ }),
1259 -
1260 -/***/ "./node_modules/classnames/index.js":
1261 -/*!******************************************!*\
1262 - !*** ./node_modules/classnames/index.js ***!
1263 - \******************************************/
1264 -/***/ ((module, exports) => {
1265 -
1266 -var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
1267 - Copyright (c) 2018 Jed Watson.
1268 - Licensed under the MIT License (MIT), see
1269 - http://jedwatson.github.io/classnames
1270 -*/
1271 -/* global define */
1272 -
1273 -(function () {
1274 - 'use strict';
1275 -
1276 - var hasOwn = {}.hasOwnProperty;
1277 -
1278 - function classNames () {
1279 - var classes = '';
1280 -
1281 - for (var i = 0; i < arguments.length; i++) {
1282 - var arg = arguments[i];
1283 - if (arg) {
1284 - classes = appendClass(classes, parseValue(arg));
1285 - }
1286 - }
1287 -
1288 - return classes;
1289 - }
1290 -
1291 - function parseValue (arg) {
1292 - if (typeof arg === 'string' || typeof arg === 'number') {
1293 - return arg;
1294 - }
1295 -
1296 - if (typeof arg !== 'object') {
1297 - return '';
1298 - }
1299 -
1300 - if (Array.isArray(arg)) {
1301 - return classNames.apply(null, arg);
1302 - }
1303 -
1304 - if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {
1305 - return arg.toString();
1306 - }
1307 -
1308 - var classes = '';
1309 -
1310 - for (var key in arg) {
1311 - if (hasOwn.call(arg, key) && arg[key]) {
1312 - classes = appendClass(classes, key);
1313 - }
1314 - }
1315 -
1316 - return classes;
1317 - }
1318 -
1319 - function appendClass (value, newClass) {
1320 - if (!newClass) {
1321 - return value;
1322 - }
1323 -
1324 - if (value) {
1325 - return value + ' ' + newClass;
1326 - }
1327 -
1328 - return value + newClass;
1329 - }
1330 -
1331 - if ( true && module.exports) {
1332 - classNames.default = classNames;
1333 - module.exports = classNames;
1334 - } else if (true) {
1335 - // register as 'classnames', consistent with npm package name
1336 - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
1337 - return classNames;
1338 - }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
1339 - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1340 - } else {}
1341 -}());
1342 -
1343 -
1344 -/***/ })
1345 -
1346 -/******/ });
1347 -/************************************************************************/
1348 -/******/ // The module cache
1349 -/******/ var __webpack_module_cache__ = {};
1350 -/******/
1351 -/******/ // The require function
1352 -/******/ function __webpack_require__(moduleId) {
1353 -/******/ // Check if module is in cache
1354 -/******/ var cachedModule = __webpack_module_cache__[moduleId];
1355 -/******/ if (cachedModule !== undefined) {
1356 -/******/ return cachedModule.exports;
1357 -/******/ }
1358 -/******/ // Create a new module (and put it into the cache)
1359 -/******/ var module = __webpack_module_cache__[moduleId] = {
1360 -/******/ // no module.id needed
1361 -/******/ // no module.loaded needed
1362 -/******/ exports: {}
1363 -/******/ };
1364 -/******/
1365 -/******/ // Execute the module function
1366 -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
1367 -/******/
1368 -/******/ // Return the exports of the module
1369 -/******/ return module.exports;
1370 -/******/ }
1371 -/******/
1372 -/************************************************************************/
1373 -/******/ /* webpack/runtime/compat get default export */
1374 -/******/ (() => {
1375 -/******/ // getDefaultExport function for compatibility with non-harmony modules
1376 -/******/ __webpack_require__.n = (module) => {
1377 -/******/ var getter = module && module.__esModule ?
1378 -/******/ () => (module['default']) :
1379 -/******/ () => (module);
1380 -/******/ __webpack_require__.d(getter, { a: getter });
1381 -/******/ return getter;
1382 -/******/ };
1383 -/******/ })();
1384 -/******/
1385 -/******/ /* webpack/runtime/define property getters */
1386 -/******/ (() => {
1387 -/******/ // define getter functions for harmony exports
1388 -/******/ __webpack_require__.d = (exports, definition) => {
1389 -/******/ for(var key in definition) {
1390 -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
1391 -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
1392 -/******/ }
1393 -/******/ }
1394 -/******/ };
1395 -/******/ })();
1396 -/******/
1397 -/******/ /* webpack/runtime/hasOwnProperty shorthand */
1398 -/******/ (() => {
1399 -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
1400 -/******/ })();
1401 -/******/
1402 -/******/ /* webpack/runtime/make namespace object */
1403 -/******/ (() => {
1404 -/******/ // define __esModule on exports
1405 -/******/ __webpack_require__.r = (exports) => {
1406 -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
1407 -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1408 -/******/ }
1409 -/******/ Object.defineProperty(exports, '__esModule', { value: true });
1410 -/******/ };
1411 -/******/ })();
1412 -/******/
1413 -/************************************************************************/
1414 -var __webpack_exports__ = {};
1415 -// This entry need to be wrapped in an IIFE because it need to be in strict mode.
1416 -(() => {
1417 -"use strict";
1418 -/*!**********************!*\
1419 - !*** ./src/index.js ***!
1420 - \**********************/
1421 -__webpack_require__.r(__webpack_exports__);
1422 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1423 -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1424 -/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash */ "lodash");
1425 -/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_1__);
1426 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
1427 -/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__);
1428 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
1429 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_3__);
1430 -/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/data */ "@wordpress/data");
1431 -/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_data__WEBPACK_IMPORTED_MODULE_4__);
1432 -/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
1433 -/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_5__);
1434 -/* harmony import */ var _pattern_explorer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pattern-explorer */ "./src/pattern-explorer.js");
1435 -/* harmony import */ var _core_hooks_use_patterns_state__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./core-hooks/use-patterns-state */ "./src/core-hooks/use-patterns-state.js");
1436 -
1437 -/**
1438 - * External dependencies.
1439 - */
1440 -
1441 -
1442 -/**
1443 - * WordPress dependencies.
1444 - */
1445 -
1446 -
1447 -
1448 -
1449 -
1450 -/**
1451 - * Internal dependencies
1452 - */
1453 -
1454 -
1455 -
1456 -/**
1457 - * Render the header toolbar button and the accompanying pattern explorer modal.
1458 - *
1459 - * @since 0.1.0
1460 - * @return {string} Return the rendered JSX for the Pattern Explorer Button
1461 - */
1462 -function HeaderToolbarButton() {
1463 - const [isModalOpen, setIsModalOpen] = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)(false);
1464 - const [allPatterns, allCategories, allCategoryTypes] = (0,_core_hooks_use_patterns_state__WEBPACK_IMPORTED_MODULE_7__["default"])();
1465 - const fetchedCategoryTypes = allCategoryTypes === 'fetching' ? [] : allCategoryTypes;
1466 -
1467 - // Check if a pattern category has an assigned pattern category type.
1468 - const hasRegisteredCategoryType = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useCallback)(category => {
1469 - if (!category.categoryTypes || !category.categoryTypes.length) {
1470 - return false;
1471 - }
1472 - return category.categoryTypes.some(type => fetchedCategoryTypes.some(categoryType => categoryType.name === type));
1473 - }, [fetchedCategoryTypes]);
1474 - const onCloseModal = () => {
1475 - setIsModalOpen(false);
1476 - };
1477 -
1478 - // Remove any categories without patterns and not in selected categories.
1479 - const populatedCategories = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useMemo)(() => {
1480 - const filteredCategories = allCategories.filter(category => category.name.startsWith('patternswp-'));
1481 -
1482 - // Create labels dynamically for categories
1483 - const categorizedLabels = filteredCategories.map(category => ({
1484 - ...category,
1485 - label: category.name.replace('patternswp-', '').replace(/-/g, ' ').replace(/\b\w/g, char => char.toUpperCase())
1486 - }));
1487 -
1488 - // Add the "All" option
1489 - const allOption = {
1490 - name: 'all',
1491 - label: 'All'
1492 - };
1493 - return [allOption, ...categorizedLabels];
1494 - }, [allCategories]);
1495 -
1496 - // Remove any pattern category type without populated pattern categories.
1497 - const populatedCategoryTypes = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useMemo)(() => {
1498 - const categoryTypes = fetchedCategoryTypes.filter(type => populatedCategories.some(category => category.categoryTypes?.includes(type.name)));
1499 -
1500 - // If there are categories without types, create the Uncategorized type.
1501 - if (populatedCategories.some(category => !hasRegisteredCategoryType(category)) && !categoryTypes.find(type => type.name === 'uncategorized')) {
1502 - categoryTypes.unshift({
1503 - name: 'uncategorized',
1504 - label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Uncategorized', 'patternswp'),
1505 - hideLabelFromVision: true
1506 - });
1507 - }
1508 - return categoryTypes;
1509 - }, [populatedCategories, fetchedCategoryTypes]);
1510 -
1511 - // Could expand on this in the future, i.e. allow for a configurable
1512 - // initial category. For now the initial category is the first category in
1513 - // the first category type.
1514 - const initialCategory = populatedCategories[0];
1515 -
1516 - // If there are no patterns, do not display the pattern explorer button.
1517 - if ((0,lodash__WEBPACK_IMPORTED_MODULE_1__.isEmpty)(allPatterns)) {
1518 - return null;
1519 - }
1520 - (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useEffect)(() => {
1521 - const observerCallback = mutationsList => {
1522 - for (const mutation of mutationsList) {
1523 - if (mutation.type === 'childList' && mutation.addedNodes.length) {
1524 - document.querySelectorAll('.components-dropdown.block-editor-inserter').forEach(dropdown => {
1525 - addButton(dropdown);
1526 - });
1527 - }
1528 - }
1529 - };
1530 - const observer = new MutationObserver(observerCallback);
1531 - observer.observe(document.body, {
1532 - subtree: true,
1533 - childList: true
1534 - });
1535 - const addButton = $dropdown => {
1536 - if (!$dropdown.querySelector('.patternswp-appender-button')) {
1537 - const $appenderButton = document.createElement('button');
1538 - $appenderButton.type = 'button';
1539 - $appenderButton.setAttribute('aria-haspopup', 'true');
1540 - $appenderButton.className = 'components-button block-editor-inserter__toggle has-icon patternswp-appender-button';
1541 - $appenderButton.innerHTML = `<svg width="20" height="20" viewBox="0 0 25 37" fill="#ffffff" xmlns="http://www.w3.org/2000/svg">
1542 - <mask id="mask0_671_1966" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="18" width="9" height="19" fill="#ffffff" ><path d="M0 18.3303H8.23816V36.3607H0V18.3303Z" fill="#ffffff"/></mask>
1543 - <g mask="url(#mask0_671_1966)"><path fill-rule="evenodd" clip-rule="evenodd" d="M0.625738 32.0853L8.04102 36.3602V18.5413L-0.000976562 23.1771V31.7244L0.625738 32.0853Z" fill="#ffffff"/></g>
1544 - <mask id="mask1_671_1966" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="10" y="9" width="15" height="18"><path d="M10.1934 9.198H24.1297V26.5898H10.1934V9.198Z" fill="#ffffff"/></mask>
1545 - <g mask="url(#mask1_671_1966)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.2178 17.2857V26.5548L16.0824 23.1758L24.1278 18.54V9.26831L16.0824 13.9041L10.2178 17.2857Z" fill="#ffffff"/></g>
1546 - <mask id="mask2_671_1966" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="16" y="4" width="9" height="10"><path d="M16.0645 4.63403H24.1311V13.9821H16.0645V4.63403Z" fill="#ffffff"/></mask>
1547 - <g mask="url(#mask2_671_1966)"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.083 13.9058L24.1284 9.26999L16.083 4.63672V13.9058Z" fill="#ffffff"/></g>
1548 - <mask id="mask3_671_1966" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="17" height="14">
1549 - <path d="M0 0H16.2819V13.9813H0V0Z" fill="#ffffff"/></mask><g mask="url(#mask3_671_1966)"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.04102 9.2691L16.083 4.63582L8.04102 0L-0.000976562 4.63582V13.9049L8.04102 9.2691Z" fill="#ffffff"/></g>
1550 - </svg>`;
1551 - $appenderButton.style.marginLeft = '8px';
1552 - $dropdown.appendChild($appenderButton);
1553 - $dropdown.style.display = 'flex';
1554 - $dropdown.style.gap = '5px';
1555 - $appenderButton.addEventListener('click', () => {
1556 - setIsModalOpen(true);
1557 - });
1558 - }
1559 - };
1560 - const checkButtonPresence = () => {
1561 - const dropdowns = document.querySelectorAll('iframe[name="editor-canvas"]').forEach(iframe => {
1562 - const $dropdown = iframe.contentDocument.querySelector('.components-dropdown.block-editor-inserter');
1563 - if ($dropdown) {
1564 - addButton($dropdown);
1565 - }
1566 - });
1567 - setTimeout(checkButtonPresence, 200);
1568 - };
1569 - checkButtonPresence();
1570 - return () => {
1571 - observer.disconnect();
1572 - };
1573 - }, []);
1574 - return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_5__.Button, {
1575 - className: "components-button is-button is-primary patternswp-button" // Add custom classes for styling
1576 - ,
1577 - onClick: () => setIsModalOpen(true)
1578 - }, "PatternsWP Library"), isModalOpen && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_5__.Modal, {
1579 - title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('PatternsWP', 'patternswp'),
1580 - closeLabel: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Close', 'patternswp'),
1581 - onRequestClose: onCloseModal,
1582 - className: "patternswp__modal",
1583 - isFullScreen: true
1584 - }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_pattern_explorer__WEBPACK_IMPORTED_MODULE_6__["default"], {
1585 - allPatterns: allPatterns,
1586 - initialCategory: initialCategory,
1587 - patternCategories: populatedCategories,
1588 - patternCategoryTypes: populatedCategoryTypes,
1589 - categoryTypes: true,
1590 - onRequestClose: onCloseModal
1591 - })));
1592 -}
1593 -
1594 -/**
1595 - * Add the header toolbar button to the block editor.
1596 - */
1597 -(0,_wordpress_data__WEBPACK_IMPORTED_MODULE_4__.subscribe)(() => {
1598 - const inserter = document.querySelector('#patternswp');
1599 -
1600 - // If the inserter already exists, bail.
1601 - if (inserter) {
1602 - return;
1603 - }
1604 - wp.domReady(() => {
1605 - const toolbar = document.querySelector('.edit-post-header-toolbar');
1606 -
1607 - // If no toolbar can be found at all, bail.
1608 - if (!toolbar) {
1609 - return;
1610 - }
1611 - const buttonContainer = document.createElement('div');
1612 - buttonContainer.id = 'patternswp';
1613 - toolbar.appendChild(buttonContainer);
1614 - (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.render)((0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(HeaderToolbarButton, null), document.getElementById('patternswp'));
1615 - });
1616 -});
1617 -
1618 -/**
1619 - * (Experimental) Add support for the pattern category type setting.
1620 - *
1621 - * @param {Array} settings All editor settings
1622 - * @since 0.2.0
1623 - */
1624 -
1625 -/**
1626 - * Add our custom entities for retrieving external data in the Block Editor.
1627 - *
1628 - * @since 0.2.0
1629 - */
1630 -(0,_wordpress_data__WEBPACK_IMPORTED_MODULE_4__.dispatch)('core').addEntities([{
1631 - label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Pattern Category Types', 'patternswp'),
1632 - kind: 'patternswp/v1',
1633 - name: 'patternCategoryTypes',
1634 - baseURL: '/patternswp/v1/pattern-category-types'
1635 -}]);
1636 -})();
1637 -
1638 -/******/ })()
1639 -;
1640 -//# sourceMappingURL=patternswp-editor.js.map
1 +(()=>{var e={942(e,t){var a;!function(){"use strict";var r={}.hasOwnProperty;function n(){for(var e="",t=0;t<arguments.length;t++){var a=arguments[t];a&&(e=s(e,l(a)))}return e}function l(e){if("string"==typeof e||"number"==typeof e)return e;if("object"!=typeof e)return"";if(Array.isArray(e))return n.apply(null,e);if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]"))return e.toString();var t="";for(var a in e)r.call(e,a)&&e[a]&&(t=s(t,a));return t}function s(e,t){return t?e?e+" "+t:e+t:e}e.exports?(n.default=n,e.exports=n):void 0===(a=(function(){return n}).apply(t,[]))||(e.exports=a)}()}},t={};function a(r){var n=t[r];if(void 0!==n)return n.exports;var l=t[r]={exports:{}};return e[r](l,l.exports,a),l.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";let e=window.React,t=window.lodash,r=window.wp.i18n,n=window.wp.element,l=window.wp.data,s=window.wp.components;function o(t){let{patternCategories:a,patternCategoryTypes:l,selectedCategory:o,setSelectedCategory:i,searchValue:c,setSearchValue:$,isLicenseActive:p}=t,d=(0,n.useMemo)(()=>l.map(e=>e.name),[l]),u="patternswp__sidebar";return(0,e.createElement)("div",{className:u},(0,e.createElement)("div",{className:`${u}__search`},(0,e.createElement)(s.SearchControl,{value:c,onChange:$,label:(0,r.__)("Search patterns","patternswp")})),l.map(t=>{let n=a.filter(e=>"uncategorized"===t.name?!e?.categoryTypes||e.categoryTypes.every(e=>!d.includes(e)):e.categoryTypes?.includes(t.name));return n.length?(0,e.createElement)("div",{key:t.name,className:`${u}__category-type`},t?.hideLabelFromVision?(0,e.createElement)(s.VisuallyHidden,{as:"h2"},t.label):(0,e.createElement)("h2",{className:`${u}__category-type__title`},t.label),(0,e.createElement)("div",{className:`${u}__category-type__categories`},(0,e.createElement)(s.MenuGroup,{className:`${u}__categories-list`},n.map(t=>(0,e.createElement)("div",{key:t.name,className:`${u}__category-item`},(0,e.createElement)(s.MenuItem,{label:t.label,className:`${u}__categories-list__item`,isPressed:!c&&t.name===o,onClick(){var e;i(e=t.name),$("")}},t.label)))),!p&&(0,e.createElement)("div",{className:`${u}__category-item__button-container`},(0,e.createElement)("a",{href:"https://thepatternswp.com/pricing?utm_source=free_plugin&utm_medium=patterns_library_modal&utm_campaign=sidebar_button",target:"_blank",rel:"noopener noreferrer",onClick:()=>console.log("Link clicked for",category.name),className:`${u}__category-item__a`},(0,e.createElement)(s.Button,{isSecondary:!0,className:`${u}__category-item__button`},(0,r.__)("Upgrade to Pro","patternswp")))))):null}))}let i=window.wp.compose,c=window.wp.a11y;var $=a(942),p=a.n($);let d=window.wp.primitives,u=(0,n.createElement)(d.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,n.createElement)(d.Path,{d:"M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"})),m=(0,n.createElement)(d.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,n.createElement)(d.Path,{d:"M5 4v11h14V4H5zm3 15.8h8v-1.5H8v1.5z"})),_=(0,n.createElement)(d.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},(0,n.createElement)(d.Path,{d:"M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z",fillRule:"evenodd",clipRule:"evenodd"}));function f(t){let{viewportWidth:a,setViewportWidth:n,isGrid:l,setIsGrid:o,shownPatterns:i,searchValue:c,isLoading:$}=t,d=[{label:(0,r.__)("Desktop","patternswp"),slug:"desktop",value:1300,active:1300===a},{label:(0,r.__)("Tablet","patternswp"),slug:"tablet",value:778,active:778===a},{label:(0,r.__)("Mobile","patternswp"),slug:"mobile",value:358,active:358===a}],f="patternswp__preview-header";return(0,e.createElement)("div",{className:f},(0,e.createElement)("div",{className:`${f}__search-results`},$&&(0,e.createElement)(s.Spinner,null),c&&c.length>1&&(0,r.sprintf)((0,r._n)('%1$d search result for "%2$s"','%1$d search results for "%2$s"',i.length,"patternswp"),i.length,c)),(0,e.createElement)("div",{className:`${f}__controls`},(0,e.createElement)(s.DropdownMenu,{icon:"",text:(0,r.__)("Preview","patternswp"),className:"viewport-toggle",toggleProps:{isTertiary:!0},popoverProps:{focusOnMount:"container",position:"bottom left"}},()=>(0,e.createElement)(s.MenuGroup,null,d.map(t=>(0,e.createElement)(s.MenuItem,{key:t.slug,className:p()({disabled:!t.active}),icon:t.active?u:"",onClick(){var e;(e=t).active||n(e.value)}},t.label)))),(0,e.createElement)(s.Button,{label:(0,r.__)("Individual Pattern","patternswp"),icon:m,isPressed:!l,onClick:()=>o(!l)}),(0,e.createElement)(s.Button,{label:(0,r.__)("Grid View","patternswp"),icon:_,isPressed:l,onClick:()=>o(!l)})))}let h=function(e){let{icon:t,size:a=24,...r}=e;return(0,n.cloneElement)(t,{width:a,height:a,...r})},g=(0,n.createElement)(d.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,n.createElement)(d.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"})),v=function({icon:t,label:a}){return(0,e.createElement)("div",{className:"patternswp-inserter__no-results"},(0,e.createElement)("div",null,(0,e.createElement)(h,{className:"patternswp-inserter__no-results-icon",icon:t||g}),(0,e.createElement)("p",null,a||(0,r.__)("No results found.","patternswp"))))},w=(0,n.createContext)(),y=function({children:t}){let a=(0,s.__unstableUseCompositeState)({shift:!0,wrap:"horizontal"});return(0,e.createElement)(w.Provider,{value:a},t)},b=window.wp.blocks,k=window.wp.blockEditor;function E(t){let{pattern:a,onInsertPattern:n,viewportWidth:o,composite:c,isBlock:$,clientId:p}=t,d=decodeURIComponent(escape(atob(a.content))),u=(0,b.parse)(d),{createSuccessNotice:m}=(0,l.useDispatch)("core/notices"),_=`preview-pattern-card__info-description-${(0,i.useInstanceId)(E)}`;function f(){n(u.map(e=>(0,b.cloneBlock)(e))),$&&(0,l.dispatch)("core/block-editor").removeBlock(p),m((0,r.sprintf)((0,r.__)('Block pattern "%s" inserted.',"patternswp"),a.title),{type:"snackbar"}),t.onRequestClose()}let h="patternswp__preview-pattern-list__item";return(0,e.createElement)("div",{className:`${h}${"pro"===a.type?" patternswp_pro_hover":""}`,"aria-label":a.title,"aria-describedby":a?.description?_:void 0},(0,e.createElement)(s.__unstableCompositeItem,{role:"option",as:"div",...c,className:`${h}-preview`,onClick:"pro"===a.type?null:f,disabled:"pro"===a.type},(0,e.createElement)(k.BlockPreview,{blocks:u,viewportWidth:o})),(0,e.createElement)("div",{className:`${h}-actions`},(0,e.createElement)("div",{className:`${h}-title`},a.title),!!a.description&&(0,e.createElement)(s.VisuallyHidden,{id:_},a.description),(0,e.createElement)(s.Button,{isSecondary:!0,onClick:f,disabled:"pro"===a.type},"pro"===a.type?(0,e.createElement)("a",{href:"https://thepatternswp.com/pricing?utm_source=free_plugin&utm_medium=patterns_library_modal&utm_campaign=patterns_lock",target:"_blank",rel:"noopener noreferrer",className:"patternswp__pro-pattern-link"},(0,e.createElement)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,e.createElement)("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M5 9V7C5 5.67392 5.52678 4.40215 6.46447 3.46447C7.40215 2.52678 8.67392 2 10 2C11.3261 2 12.5979 2.52678 13.5355 3.46447C14.4732 4.40215 15 5.67392 15 7V9C15.5304 9 16.0391 9.21071 16.4142 9.58579C16.7893 9.96086 17 10.4696 17 11V16C17 16.5304 16.7893 17.0391 16.4142 17.4142C16.0391 17.7893 15.5304 18 15 18H5C4.46957 18 3.96086 17.7893 3.58579 17.4142C3.21071 17.0391 3 16.5304 3 16V11C3 10.4696 3.21071 9.96086 3.58579 9.58579C3.96086 9.21071 4.46957 9 5 9ZM13 7V9H7V7C7 6.20435 7.31607 5.44129 7.87868 4.87868C8.44129 4.31607 9.20435 4 10 4C10.7957 4 11.5587 4.31607 12.1213 4.87868C12.6839 5.44129 13 6.20435 13 7Z",fill:"#818181"}))):(0,r.__)("Add Pattern","patternswp"))))}function C(a){let{isGrid:o,isLoading:i,searchValue:$,shownPatterns:d,viewportWidth:u}=a,[f,h]=function({rootClientId:e="",insertionIndex:a,clientId:s,isAppender:o,onSelect:i,shouldFocusBlock:$=!0}){let{getSelectedBlock:p}=(0,l.useSelect)(k.store),{destinationRootClientId:d,destinationIndex:u}=(0,l.useSelect)(t=>{let{getSelectedBlockClientId:r,getBlockRootClientId:n,getBlockIndex:l,getBlockOrder:i}=t(k.store),c=r(),$,p=e;return void 0!==a?$=a:s?$=l(s,p):!o&&c?(p=n(c),$=l(c,p)+1):$=i(p).length,{destinationRootClientId:p,destinationIndex:$}},[e,a,s,o]),{replaceBlocks:m,insertBlocks:_,showInsertionPoint:f,hideInsertionPoint:h}=(0,l.useDispatch)(k.store),g=(0,n.useCallback)((e,a,n=!1)=>{let l=p();!o&&l&&(0,b.isUnmodifiedDefaultBlock)(l)?m(l.clientId,e,null,$||n?0:null,a):_(e,u,d,!0,$||n?0:null,a);let s=(0,r.sprintf)((0,r._n)("%d block added.","%d blocks added.",(0,t.castArray)(e).length),(0,t.castArray)(e).length);(0,c.speak)(s),i&&i()},[o,p,m,_,d,u,i,$]),v=(0,n.useCallback)(e=>{e?f(d,u):h()},[f,h,d,u]);return[d,g,v]}({shouldFocusBlock:!0}),g=(0,t.isEmpty)(d)&&!$&&!i,w=(0,t.isEmpty)(d)&&$,C=!g&&!w,S=!C&&w?(0,r.__)("No search results found.","patternswp"):(0,r.__)("No patterns were found for this category.","patternswp"),V=(0,s.__unstableUseCompositeState)();return(0,e.createElement)(y,null,!C&&(0,e.createElement)(v,{icon:o?_:m,label:S}),C&&(0,e.createElement)(s.__unstableComposite,{...V,role:"listbox",className:p()("patternswp__preview-pattern-list",{"is-grid":o,"is-loading":i,"preview-tablet":778===u,"preview-mobile":358===u}),"aria-label":(0,r.__)("Patterns","patternswp")},d.map(t=>(0,e.createElement)(E,{key:t.name,pattern:t,onInsertPattern:h,viewportWidth:u,composite:V,onRequestClose:a.onRequestClose}))))}let S=window.wp.notices,V=(e,t,a)=>{let[s,o]=(0,n.useState)([]),[i]=(0,n.useState)(0),c=window.patternsWpData.patternCategories||[],$=window.patternsWpData.patternCategoryTypes||[],p=window.patternsWpData.patternsNonce||[],[d,u]=(0,n.useState)(2),[]=(0,n.useState)(""),[m,_]=(0,n.useState)(!0),[f,h]=(0,n.useState)(!1),{createSuccessNotice:g,createErrorNotice:v}=(0,l.useDispatch)(S.store),w=(0,n.useRef)(null),y=(0,n.useCallback)(async()=>{if(null!=a&&((t||a)&&0==i&&(d=1,u(2)),console.log(d),""!==t&&(a=""),""!==a&&(t=""),!f||""!=t)){h(!0);try{let e="all"===a?"":a,n=await fetch(window.ajaxurl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"fetch_patterns",page:d,patternsPerPage:15,search:t,category:e,nonce:p})}),l=n.headers.get("Content-Type");if(l&&l.includes("text/html"))return console.error("Received HTML response instead of JSON:",await n.text()),void v((0,r.__)("Failed to load patterns. Please try again later.","patternswp"),{type:"error"});let s=await n.json();s.success&&Array.isArray(s.data)?(o(e=>{if((t||a)&&0===i)return s.data;let r=new Set(e.map(e=>e.content)),n=s.data.filter(e=>!r.has(e.content));return[...e,...n]}),f||1!=i||u(e=>e+1),_(15===s.data.length)):console.error("Expected an array of patterns but got:",s)}catch(c){console.error("Error fetching patterns:",c),v((0,r.__)("Failed to load more patterns.","patternswp"),{type:"error"})}finally{h(!1)}}},[v,m,f,t,a]),k=(0,n.useCallback)((t,a)=>{e(a.map(e=>(0,b.cloneBlock)(e)),t.name),g((0,r.sprintf)((0,r.__)('Block pattern "%s" inserted.',"patternswp"),t.title),{type:"snackbar"})},[g,e]);return(0,n.useEffect)(()=>{y(i=0)},[t,a]),(0,n.useEffect)(()=>{let e=()=>{let e=document.querySelector(".components-modal__content");if(!e)return;let{clientHeight:t,scrollTop:a,scrollHeight:r}=e;t+a>=r-800&&m&&!f&&y(i=1)},t=document.querySelector(".components-modal__content");return t&&t.addEventListener("scroll",e),()=>{t&&t.removeEventListener("scroll",e)}},[y,m,f]),[s,c,$,k,w,m,f]};function N(t){let{selectedCategory:a,searchValue:l,onRequestClose:s}=t,[o,$]=(0,n.useState)(1300),[p,d]=(0,n.useState)(!0),u=(0,i.useDebounce)(c.speak,500),[m=[],,,_,h,,g]=V([],l,a),v=(0,n.useMemo)(()=>m,[m]);return(0,n.useEffect)(()=>{if(g)return;let e=v.length,t=(0,r.sprintf)((0,r._n)("%d pattern found.","%d patterns found.",e,"patternswp"),e);u(t)},[l,u,v.length,g]),(0,e.createElement)("div",{className:"patternswp__preview",ref:h},(0,e.createElement)(f,{viewportWidth:o,setViewportWidth:$,isGrid:p,setIsGrid:d,shownPatterns:v,searchValue:l,isLoading:g}),(0,e.createElement)(C,{viewportWidth:o,isGrid:p,shownPatterns:v,searchValue:l,isLoading:g,onRequestClose:s,onClickPattern:_}),g&&(0,e.createElement)("div",{className:"patternswp__loader"},"Loading..."))}function P({allPatterns:t,initialCategory:a,patternCategories:r,patternCategoryTypes:l,isLicenseActive:s,onRequestClose:i}){let[c,$]=(0,n.useState)(""),[p,d]=(0,n.useState)("all");return(0,e.createElement)("div",{className:"patternswp"},(0,e.createElement)(o,{patternCategories:r,patternCategoryTypes:l,selectedCategory:p,setSelectedCategory:d,searchValue:c,setSearchValue:$,isLicenseActive:s}),(0,e.createElement)(N,{allPatterns:t,patternCategories:r,selectedCategory:p,searchValue:c,onRequestClose:i}))}function x(){let[t,a]=(0,n.useState)(!1),[l,o,i]=V(),c="fetching"===i?[]:i,$=patternsWpData.isLicenseActive,p=(0,n.useCallback)(e=>!(!e.categoryTypes||!e.categoryTypes.length)&&e.categoryTypes.some(e=>c.some(t=>t.name===e)),[c]),d=()=>{a(!1)},u=(0,n.useMemo)(()=>[{name:"all",label:"All"},...o.filter(e=>e.name.startsWith("patternswp-")).map(e=>({...e,label:e.name.replace("patternswp-","").replace(/-/g," ").replace(/\b\w/g,e=>e.toUpperCase())}))],[o]),m=(0,n.useMemo)(()=>{let e=c.filter(e=>u.some(t=>t.categoryTypes?.includes(e.name)));return u.some(e=>!p(e))&&!e.find(e=>"uncategorized"===e.name)&&e.unshift({name:"uncategorized",label:(0,r.__)("Uncategorized","patternswp"),hideLabelFromVision:!0}),e},[u,c]),_=u[0];return(0,n.useEffect)(()=>{let e=new MutationObserver(e=>{for(let a of e)"childList"===a.type&&a.addedNodes.length&&document.querySelectorAll(".components-dropdown.block-editor-inserter").forEach(e=>{t(e)})});e.observe(document.body,{subtree:!0,childList:!0});let t=e=>{if(!e.querySelector(".patternswp-appender-button")){let t=document.createElement("button");t.type="button",t.setAttribute("aria-haspopup","true"),t.className="components-button block-editor-inserter__toggle has-icon patternswp-appender-button",t.innerHTML='<svg width="20" height="20" viewBox="0 0 25 37" fill="#ffffff" xmlns="http://www.w3.org/2000/svg">\n <mask id="mask0_671_1966" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="18" width="9" height="19" fill="#ffffff" ><path d="M0 18.3303H8.23816V36.3607H0V18.3303Z" fill="#ffffff"/></mask>\n <g mask="url(#mask0_671_1966)"><path fill-rule="evenodd" clip-rule="evenodd" d="M0.625738 32.0853L8.04102 36.3602V18.5413L-0.000976562 23.1771V31.7244L0.625738 32.0853Z" fill="#ffffff"/></g>\n <mask id="mask1_671_1966" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="10" y="9" width="15" height="18"><path d="M10.1934 9.198H24.1297V26.5898H10.1934V9.198Z" fill="#ffffff"/></mask>\n <g mask="url(#mask1_671_1966)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.2178 17.2857V26.5548L16.0824 23.1758L24.1278 18.54V9.26831L16.0824 13.9041L10.2178 17.2857Z" fill="#ffffff"/></g>\n <mask id="mask2_671_1966" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="16" y="4" width="9" height="10"><path d="M16.0645 4.63403H24.1311V13.9821H16.0645V4.63403Z" fill="#ffffff"/></mask>\n <g mask="url(#mask2_671_1966)"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.083 13.9058L24.1284 9.26999L16.083 4.63672V13.9058Z" fill="#ffffff"/></g>\n <mask id="mask3_671_1966" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="17" height="14">\n <path d="M0 0H16.2819V13.9813H0V0Z" fill="#ffffff"/></mask><g mask="url(#mask3_671_1966)"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.04102 9.2691L16.083 4.63582L8.04102 0L-0.000976562 4.63582V13.9049L8.04102 9.2691Z" fill="#ffffff"/></g>\n </svg>',t.style.marginLeft="8px",e.appendChild(t),e.style.display="flex",e.style.gap="5px",t.addEventListener("click",()=>{a(!0)})}},r=()=>{document.querySelectorAll('iframe[name="editor-canvas"]').forEach(e=>{let a=e.contentDocument.querySelector(".components-dropdown.block-editor-inserter");a&&t(a)}),setTimeout(r,200)};return r(),()=>{e.disconnect()}},[]),(0,e.createElement)(e.Fragment,null,(0,e.createElement)(s.Button,{className:"components-button is-button is-primary patternswp-button",onClick:()=>a(!0)},"PatternsWP Library"),t&&(0,e.createElement)(s.Modal,{id:"patternswp__modal",title:(0,r.__)("PatternsWP","patternswp"),closeLabel:(0,r.__)("Close","patternswp"),onRequestClose:d,className:"patternswp__modal",isFullScreen:!0},(0,e.createElement)(P,{allPatterns:l,initialCategory:_,patternCategories:u,patternCategoryTypes:m,onRequestClose:d,isLicenseActive:$})))}(0,l.subscribe)(()=>{document.querySelector("#patternswp")||wp.domReady(()=>{let t=document.querySelector(".edit-post-header-toolbar");if(!t)return;let a=document.createElement("div");a.id="patternswp",t.appendChild(a),(0,n.render)((0,e.createElement)(x,null),document.getElementById("patternswp"))})})})()})();