| @@ -1,3323 +1 @@ | ||
| 1 | -/******/ (function() { // webpackBootstrap | |
| 2 | -/******/ var __webpack_modules__ = ({ | |
| 3 | - | |
| 4 | -/***/ 4184: | |
| 5 | -/***/ (function(module, exports) { | |
| 6 | - | |
| 7 | -var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! | |
| 8 | - Copyright (c) 2018 Jed Watson. | |
| 9 | - Licensed under the MIT License (MIT), see | |
| 10 | - http://jedwatson.github.io/classnames | |
| 11 | -*/ | |
| 12 | -/* global define */ | |
| 13 | - | |
| 14 | -(function () { | |
| 15 | - 'use strict'; | |
| 16 | - | |
| 17 | - var hasOwn = {}.hasOwnProperty; | |
| 18 | - | |
| 19 | - function classNames() { | |
| 20 | - var classes = []; | |
| 21 | - | |
| 22 | - for (var i = 0; i < arguments.length; i++) { | |
| 23 | - var arg = arguments[i]; | |
| 24 | - if (!arg) continue; | |
| 25 | - | |
| 26 | - var argType = typeof arg; | |
| 27 | - | |
| 28 | - if (argType === 'string' || argType === 'number') { | |
| 29 | - classes.push(arg); | |
| 30 | - } else if (Array.isArray(arg)) { | |
| 31 | - if (arg.length) { | |
| 32 | - var inner = classNames.apply(null, arg); | |
| 33 | - if (inner) { | |
| 34 | - classes.push(inner); | |
| 35 | - } | |
| 36 | - } | |
| 37 | - } else if (argType === 'object') { | |
| 38 | - if (arg.toString === Object.prototype.toString) { | |
| 39 | - for (var key in arg) { | |
| 40 | - if (hasOwn.call(arg, key) && arg[key]) { | |
| 41 | - classes.push(key); | |
| 42 | - } | |
| 43 | - } | |
| 44 | - } else { | |
| 45 | - classes.push(arg.toString()); | |
| 46 | - } | |
| 47 | - } | |
| 48 | - } | |
| 49 | - | |
| 50 | - return classes.join(' '); | |
| 51 | - } | |
| 52 | - | |
| 53 | - if ( true && module.exports) { | |
| 54 | - classNames.default = classNames; | |
| 55 | - module.exports = classNames; | |
| 56 | - } else if (true) { | |
| 57 | - // register as 'classnames', consistent with npm package name | |
| 58 | - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { | |
| 59 | - return classNames; | |
| 60 | - }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), | |
| 61 | - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); | |
| 62 | - } else {} | |
| 63 | -}()); | |
| 64 | - | |
| 65 | - | |
| 66 | -/***/ }) | |
| 67 | - | |
| 68 | -/******/ }); | |
| 69 | -/************************************************************************/ | |
| 70 | -/******/ // The module cache | |
| 71 | -/******/ var __webpack_module_cache__ = {}; | |
| 72 | -/******/ | |
| 73 | -/******/ // The require function | |
| 74 | -/******/ function __webpack_require__(moduleId) { | |
| 75 | -/******/ // Check if module is in cache | |
| 76 | -/******/ var cachedModule = __webpack_module_cache__[moduleId]; | |
| 77 | -/******/ if (cachedModule !== undefined) { | |
| 78 | -/******/ return cachedModule.exports; | |
| 79 | -/******/ } | |
| 80 | -/******/ // Create a new module (and put it into the cache) | |
| 81 | -/******/ var module = __webpack_module_cache__[moduleId] = { | |
| 82 | -/******/ // no module.id needed | |
| 83 | -/******/ // no module.loaded needed | |
| 84 | -/******/ exports: {} | |
| 85 | -/******/ }; | |
| 86 | -/******/ | |
| 87 | -/******/ // Execute the module function | |
| 88 | -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); | |
| 89 | -/******/ | |
| 90 | -/******/ // Return the exports of the module | |
| 91 | -/******/ return module.exports; | |
| 92 | -/******/ } | |
| 93 | -/******/ | |
| 94 | -/************************************************************************/ | |
| 95 | -/******/ /* webpack/runtime/compat get default export */ | |
| 96 | -/******/ !function() { | |
| 97 | -/******/ // getDefaultExport function for compatibility with non-harmony modules | |
| 98 | -/******/ __webpack_require__.n = function(module) { | |
| 99 | -/******/ var getter = module && module.__esModule ? | |
| 100 | -/******/ function() { return module['default']; } : | |
| 101 | -/******/ function() { return module; }; | |
| 102 | -/******/ __webpack_require__.d(getter, { a: getter }); | |
| 103 | -/******/ return getter; | |
| 104 | -/******/ }; | |
| 105 | -/******/ }(); | |
| 106 | -/******/ | |
| 107 | -/******/ /* webpack/runtime/define property getters */ | |
| 108 | -/******/ !function() { | |
| 109 | -/******/ // define getter functions for harmony exports | |
| 110 | -/******/ __webpack_require__.d = function(exports, definition) { | |
| 111 | -/******/ for(var key in definition) { | |
| 112 | -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { | |
| 113 | -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); | |
| 114 | -/******/ } | |
| 115 | -/******/ } | |
| 116 | -/******/ }; | |
| 117 | -/******/ }(); | |
| 118 | -/******/ | |
| 119 | -/******/ /* webpack/runtime/hasOwnProperty shorthand */ | |
| 120 | -/******/ !function() { | |
| 121 | -/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } | |
| 122 | -/******/ }(); | |
| 123 | -/******/ | |
| 124 | -/******/ /* webpack/runtime/make namespace object */ | |
| 125 | -/******/ !function() { | |
| 126 | -/******/ // define __esModule on exports | |
| 127 | -/******/ __webpack_require__.r = function(exports) { | |
| 128 | -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { | |
| 129 | -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); | |
| 130 | -/******/ } | |
| 131 | -/******/ Object.defineProperty(exports, '__esModule', { value: true }); | |
| 132 | -/******/ }; | |
| 133 | -/******/ }(); | |
| 134 | -/******/ | |
| 135 | -/************************************************************************/ | |
| 136 | -var __webpack_exports__ = {}; | |
| 137 | -// This entry need to be wrapped in an IIFE because it need to be in strict mode. | |
| 138 | -!function() { | |
| 139 | -"use strict"; | |
| 140 | -// ESM COMPAT FLAG | |
| 141 | -__webpack_require__.r(__webpack_exports__); | |
| 142 | - | |
| 143 | -// EXPORTS | |
| 144 | -__webpack_require__.d(__webpack_exports__, { | |
| 145 | - "initialize": function() { return /* binding */ initialize; } | |
| 146 | -}); | |
| 147 | - | |
| 148 | -// NAMESPACE OBJECT: ./packages/interface/build-module/store/actions.js | |
| 149 | -var actions_namespaceObject = {}; | |
| 150 | -__webpack_require__.r(actions_namespaceObject); | |
| 151 | -__webpack_require__.d(actions_namespaceObject, { | |
| 152 | - "disableComplementaryArea": function() { return disableComplementaryArea; }, | |
| 153 | - "enableComplementaryArea": function() { return enableComplementaryArea; }, | |
| 154 | - "pinItem": function() { return pinItem; }, | |
| 155 | - "setFeatureDefaults": function() { return setFeatureDefaults; }, | |
| 156 | - "setFeatureValue": function() { return setFeatureValue; }, | |
| 157 | - "toggleFeature": function() { return toggleFeature; }, | |
| 158 | - "unpinItem": function() { return unpinItem; } | |
| 159 | -}); | |
| 160 | - | |
| 161 | -// NAMESPACE OBJECT: ./packages/interface/build-module/store/selectors.js | |
| 162 | -var selectors_namespaceObject = {}; | |
| 163 | -__webpack_require__.r(selectors_namespaceObject); | |
| 164 | -__webpack_require__.d(selectors_namespaceObject, { | |
| 165 | - "getActiveComplementaryArea": function() { return getActiveComplementaryArea; }, | |
| 166 | - "isFeatureActive": function() { return isFeatureActive; }, | |
| 167 | - "isItemPinned": function() { return isItemPinned; } | |
| 168 | -}); | |
| 169 | - | |
| 170 | -// NAMESPACE OBJECT: ./packages/customize-widgets/build-module/store/selectors.js | |
| 171 | -var store_selectors_namespaceObject = {}; | |
| 172 | -__webpack_require__.r(store_selectors_namespaceObject); | |
| 173 | -__webpack_require__.d(store_selectors_namespaceObject, { | |
| 174 | - "__experimentalGetInsertionPoint": function() { return __experimentalGetInsertionPoint; }, | |
| 175 | - "isInserterOpened": function() { return isInserterOpened; } | |
| 176 | -}); | |
| 177 | - | |
| 178 | -// NAMESPACE OBJECT: ./packages/customize-widgets/build-module/store/actions.js | |
| 179 | -var store_actions_namespaceObject = {}; | |
| 180 | -__webpack_require__.r(store_actions_namespaceObject); | |
| 181 | -__webpack_require__.d(store_actions_namespaceObject, { | |
| 182 | - "setIsInserterOpened": function() { return setIsInserterOpened; } | |
| 183 | -}); | |
| 184 | - | |
| 185 | -;// CONCATENATED MODULE: external ["wp","element"] | |
| 186 | -var external_wp_element_namespaceObject = window["wp"]["element"]; | |
| 187 | -;// CONCATENATED MODULE: external ["wp","blockLibrary"] | |
| 188 | -var external_wp_blockLibrary_namespaceObject = window["wp"]["blockLibrary"]; | |
| 189 | -;// CONCATENATED MODULE: external ["wp","widgets"] | |
| 190 | -var external_wp_widgets_namespaceObject = window["wp"]["widgets"]; | |
| 191 | -;// CONCATENATED MODULE: external ["wp","blocks"] | |
| 192 | -var external_wp_blocks_namespaceObject = window["wp"]["blocks"]; | |
| 193 | -;// CONCATENATED MODULE: external ["wp","data"] | |
| 194 | -var external_wp_data_namespaceObject = window["wp"]["data"]; | |
| 195 | -// EXTERNAL MODULE: ./node_modules/classnames/index.js | |
| 196 | -var classnames = __webpack_require__(4184); | |
| 197 | -var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames); | |
| 198 | -;// CONCATENATED MODULE: external ["wp","components"] | |
| 199 | -var external_wp_components_namespaceObject = window["wp"]["components"]; | |
| 200 | -;// CONCATENATED MODULE: external ["wp","i18n"] | |
| 201 | -var external_wp_i18n_namespaceObject = window["wp"]["i18n"]; | |
| 202 | -;// CONCATENATED MODULE: external ["wp","primitives"] | |
| 203 | -var external_wp_primitives_namespaceObject = window["wp"]["primitives"]; | |
| 204 | -;// CONCATENATED MODULE: ./packages/icons/build-module/library/more-vertical.js | |
| 205 | - | |
| 206 | - | |
| 207 | -/** | |
| 208 | - * WordPress dependencies | |
| 209 | - */ | |
| 210 | - | |
| 211 | -const moreVertical = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { | |
| 212 | - xmlns: "http://www.w3.org/2000/svg", | |
| 213 | - viewBox: "0 0 24 24" | |
| 214 | -}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { | |
| 215 | - d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" | |
| 216 | -})); | |
| 217 | -/* harmony default export */ var more_vertical = (moreVertical); | |
| 218 | -//# sourceMappingURL=more-vertical.js.map | |
| 219 | -;// CONCATENATED MODULE: ./packages/interface/build-module/components/more-menu-dropdown/index.js | |
| 220 | - | |
| 221 | - | |
| 222 | -/** | |
| 223 | - * External dependencies | |
| 224 | - */ | |
| 225 | - | |
| 226 | -/** | |
| 227 | - * WordPress dependencies | |
| 228 | - */ | |
| 229 | - | |
| 230 | - | |
| 231 | - | |
| 232 | - | |
| 233 | -function MoreMenuDropdown(_ref) { | |
| 234 | - let { | |
| 235 | - as: DropdownComponent = external_wp_components_namespaceObject.DropdownMenu, | |
| 236 | - className, | |
| 237 | - | |
| 238 | - /* translators: button label text should, if possible, be under 16 characters. */ | |
| 239 | - label = (0,external_wp_i18n_namespaceObject.__)('Options'), | |
| 240 | - popoverProps, | |
| 241 | - toggleProps, | |
| 242 | - children | |
| 243 | - } = _ref; | |
| 244 | - return (0,external_wp_element_namespaceObject.createElement)(DropdownComponent, { | |
| 245 | - className: classnames_default()('interface-more-menu-dropdown', className), | |
| 246 | - icon: more_vertical, | |
| 247 | - label: label, | |
| 248 | - popoverProps: { | |
| 249 | - position: 'bottom left', | |
| 250 | - ...popoverProps, | |
| 251 | - className: classnames_default()('interface-more-menu-dropdown__content', popoverProps === null || popoverProps === void 0 ? void 0 : popoverProps.className) | |
| 252 | - }, | |
| 253 | - toggleProps: { | |
| 254 | - tooltipPosition: 'bottom', | |
| 255 | - ...toggleProps | |
| 256 | - } | |
| 257 | - }, onClose => children(onClose)); | |
| 258 | -} | |
| 259 | -//# sourceMappingURL=index.js.map | |
| 260 | -;// CONCATENATED MODULE: ./packages/icons/build-module/library/check.js | |
| 261 | - | |
| 262 | - | |
| 263 | -/** | |
| 264 | - * WordPress dependencies | |
| 265 | - */ | |
| 266 | - | |
| 267 | -const check = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { | |
| 268 | - xmlns: "http://www.w3.org/2000/svg", | |
| 269 | - viewBox: "0 0 24 24" | |
| 270 | -}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { | |
| 271 | - d: "M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z" | |
| 272 | -})); | |
| 273 | -/* harmony default export */ var library_check = (check); | |
| 274 | -//# sourceMappingURL=check.js.map | |
| 275 | -;// CONCATENATED MODULE: external ["wp","a11y"] | |
| 276 | -var external_wp_a11y_namespaceObject = window["wp"]["a11y"]; | |
| 277 | -;// CONCATENATED MODULE: external "lodash" | |
| 278 | -var external_lodash_namespaceObject = window["lodash"]; | |
| 279 | -;// CONCATENATED MODULE: ./packages/interface/build-module/store/reducer.js | |
| 280 | -/** | |
| 281 | - * External dependencies | |
| 282 | - */ | |
| 283 | - | |
| 284 | -/** | |
| 285 | - * WordPress dependencies | |
| 286 | - */ | |
| 287 | - | |
| 288 | - | |
| 289 | -/** | |
| 290 | - * Reducer to keep tract of the active area per scope. | |
| 291 | - * | |
| 292 | - * @param {boolean} state Previous state. | |
| 293 | - * @param {Object} action Action object. | |
| 294 | - * @param {string} action.type Action type. | |
| 295 | - * @param {string} action.itemType Type of item. | |
| 296 | - * @param {string} action.scope Item scope. | |
| 297 | - * @param {string} action.item Item name. | |
| 298 | - * | |
| 299 | - * @return {Object} Updated state. | |
| 300 | - */ | |
| 301 | - | |
| 302 | -function singleEnableItems() { | |
| 303 | - let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | |
| 304 | - let { | |
| 305 | - type, | |
| 306 | - itemType, | |
| 307 | - scope, | |
| 308 | - item | |
| 309 | - } = arguments.length > 1 ? arguments[1] : undefined; | |
| 310 | - | |
| 311 | - if (type !== 'SET_SINGLE_ENABLE_ITEM' || !itemType || !scope) { | |
| 312 | - return state; | |
| 313 | - } | |
| 314 | - | |
| 315 | - return { ...state, | |
| 316 | - [itemType]: { ...state[itemType], | |
| 317 | - [scope]: item || null | |
| 318 | - } | |
| 319 | - }; | |
| 320 | -} | |
| 321 | -/** | |
| 322 | - * Reducer keeping track of the "pinned" items per scope. | |
| 323 | - * | |
| 324 | - * @param {boolean} state Previous state. | |
| 325 | - * @param {Object} action Action object. | |
| 326 | - * @param {string} action.type Action type. | |
| 327 | - * @param {string} action.itemType Type of item. | |
| 328 | - * @param {string} action.scope Item scope. | |
| 329 | - * @param {string} action.item Item name. | |
| 330 | - * @param {boolean} action.isEnable Whether the item is pinned. | |
| 331 | - * | |
| 332 | - * @return {Object} Updated state. | |
| 333 | - */ | |
| 334 | - | |
| 335 | -function multipleEnableItems() { | |
| 336 | - let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | |
| 337 | - let { | |
| 338 | - type, | |
| 339 | - itemType, | |
| 340 | - scope, | |
| 341 | - item, | |
| 342 | - isEnable | |
| 343 | - } = arguments.length > 1 ? arguments[1] : undefined; | |
| 344 | - | |
| 345 | - if (type !== 'SET_MULTIPLE_ENABLE_ITEM' || !itemType || !scope || !item || (0,external_lodash_namespaceObject.get)(state, [itemType, scope, item]) === isEnable) { | |
| 346 | - return state; | |
| 347 | - } | |
| 348 | - | |
| 349 | - const currentTypeState = state[itemType] || {}; | |
| 350 | - const currentScopeState = currentTypeState[scope] || {}; | |
| 351 | - return { ...state, | |
| 352 | - [itemType]: { ...currentTypeState, | |
| 353 | - [scope]: { ...currentScopeState, | |
| 354 | - [item]: isEnable || false | |
| 355 | - } | |
| 356 | - } | |
| 357 | - }; | |
| 358 | -} | |
| 359 | -/** | |
| 360 | - * Reducer returning the defaults for user preferences. | |
| 361 | - * | |
| 362 | - * This is kept intentionally separate from the preferences | |
| 363 | - * themselves so that defaults are not persisted. | |
| 364 | - * | |
| 365 | - * @param {Object} state Current state. | |
| 366 | - * @param {Object} action Dispatched action. | |
| 367 | - * | |
| 368 | - * @return {Object} Updated state. | |
| 369 | - */ | |
| 370 | - | |
| 371 | -const preferenceDefaults = (0,external_wp_data_namespaceObject.combineReducers)({ | |
| 372 | - features() { | |
| 373 | - let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | |
| 374 | - let action = arguments.length > 1 ? arguments[1] : undefined; | |
| 375 | - | |
| 376 | - if (action.type === 'SET_FEATURE_DEFAULTS') { | |
| 377 | - const { | |
| 378 | - scope, | |
| 379 | - defaults | |
| 380 | - } = action; | |
| 381 | - return { ...state, | |
| 382 | - [scope]: { ...state[scope], | |
| 383 | - ...defaults | |
| 384 | - } | |
| 385 | - }; | |
| 386 | - } | |
| 387 | - | |
| 388 | - return state; | |
| 389 | - } | |
| 390 | - | |
| 391 | -}); | |
| 392 | -/** | |
| 393 | - * Reducer returning the user preferences. | |
| 394 | - * | |
| 395 | - * @param {Object} state Current state. | |
| 396 | - * @param {Object} action Dispatched action. | |
| 397 | - * | |
| 398 | - * @return {Object} Updated state. | |
| 399 | - */ | |
| 400 | - | |
| 401 | -const preferences = (0,external_wp_data_namespaceObject.combineReducers)({ | |
| 402 | - features() { | |
| 403 | - let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | |
| 404 | - let action = arguments.length > 1 ? arguments[1] : undefined; | |
| 405 | - | |
| 406 | - if (action.type === 'SET_FEATURE_VALUE') { | |
| 407 | - const { | |
| 408 | - scope, | |
| 409 | - featureName, | |
| 410 | - value | |
| 411 | - } = action; | |
| 412 | - return { ...state, | |
| 413 | - [scope]: { ...state[scope], | |
| 414 | - [featureName]: value | |
| 415 | - } | |
| 416 | - }; | |
| 417 | - } | |
| 418 | - | |
| 419 | - return state; | |
| 420 | - } | |
| 421 | - | |
| 422 | -}); | |
| 423 | -const enableItems = (0,external_wp_data_namespaceObject.combineReducers)({ | |
| 424 | - singleEnableItems, | |
| 425 | - multipleEnableItems | |
| 426 | -}); | |
| 427 | -/* harmony default export */ var reducer = ((0,external_wp_data_namespaceObject.combineReducers)({ | |
| 428 | - enableItems, | |
| 429 | - preferenceDefaults, | |
| 430 | - preferences | |
| 431 | -})); | |
| 432 | -//# sourceMappingURL=reducer.js.map | |
| 433 | -;// CONCATENATED MODULE: ./packages/interface/build-module/store/actions.js | |
| 434 | -/** | |
| 435 | - * Returns an action object used in signalling that an active area should be changed. | |
| 436 | - * | |
| 437 | - * @param {string} itemType Type of item. | |
| 438 | - * @param {string} scope Item scope. | |
| 439 | - * @param {string} item Item identifier. | |
| 440 | - * | |
| 441 | - * @return {Object} Action object. | |
| 442 | - */ | |
| 443 | -function setSingleEnableItem(itemType, scope, item) { | |
| 444 | - return { | |
| 445 | - type: 'SET_SINGLE_ENABLE_ITEM', | |
| 446 | - itemType, | |
| 447 | - scope, | |
| 448 | - item | |
| 449 | - }; | |
| 450 | -} | |
| 451 | -/** | |
| 452 | - * Returns an action object used in signalling that a complementary item should be enabled. | |
| 453 | - * | |
| 454 | - * @param {string} scope Complementary area scope. | |
| 455 | - * @param {string} area Area identifier. | |
| 456 | - * | |
| 457 | - * @return {Object} Action object. | |
| 458 | - */ | |
| 459 | - | |
| 460 | - | |
| 461 | -function enableComplementaryArea(scope, area) { | |
| 462 | - return setSingleEnableItem('complementaryArea', scope, area); | |
| 463 | -} | |
| 464 | -/** | |
| 465 | - * Returns an action object used in signalling that the complementary area of a given scope should be disabled. | |
| 466 | - * | |
| 467 | - * @param {string} scope Complementary area scope. | |
| 468 | - * | |
| 469 | - * @return {Object} Action object. | |
| 470 | - */ | |
| 471 | - | |
| 472 | -function disableComplementaryArea(scope) { | |
| 473 | - return setSingleEnableItem('complementaryArea', scope, undefined); | |
| 474 | -} | |
| 475 | -/** | |
| 476 | - * Returns an action object to make an area enabled/disabled. | |
| 477 | - * | |
| 478 | - * @param {string} itemType Type of item. | |
| 479 | - * @param {string} scope Item scope. | |
| 480 | - * @param {string} item Item identifier. | |
| 481 | - * @param {boolean} isEnable Boolean indicating if an area should be pinned or not. | |
| 482 | - * | |
| 483 | - * @return {Object} Action object. | |
| 484 | - */ | |
| 485 | - | |
| 486 | -function setMultipleEnableItem(itemType, scope, item, isEnable) { | |
| 487 | - return { | |
| 488 | - type: 'SET_MULTIPLE_ENABLE_ITEM', | |
| 489 | - itemType, | |
| 490 | - scope, | |
| 491 | - item, | |
| 492 | - isEnable | |
| 493 | - }; | |
| 494 | -} | |
| 495 | -/** | |
| 496 | - * Returns an action object used in signalling that an item should be pinned. | |
| 497 | - * | |
| 498 | - * @param {string} scope Item scope. | |
| 499 | - * @param {string} itemId Item identifier. | |
| 500 | - * | |
| 501 | - * @return {Object} Action object. | |
| 502 | - */ | |
| 503 | - | |
| 504 | - | |
| 505 | -function pinItem(scope, itemId) { | |
| 506 | - return setMultipleEnableItem('pinnedItems', scope, itemId, true); | |
| 507 | -} | |
| 508 | -/** | |
| 509 | - * Returns an action object used in signalling that an item should be unpinned. | |
| 510 | - * | |
| 511 | - * @param {string} scope Item scope. | |
| 512 | - * @param {string} itemId Item identifier. | |
| 513 | - * | |
| 514 | - * @return {Object} Action object. | |
| 515 | - */ | |
| 516 | - | |
| 517 | -function unpinItem(scope, itemId) { | |
| 518 | - return setMultipleEnableItem('pinnedItems', scope, itemId, false); | |
| 519 | -} | |
| 520 | -/** | |
| 521 | - * Returns an action object used in signalling that a feature should be toggled. | |
| 522 | - * | |
| 523 | - * @param {string} scope The feature scope (e.g. core/edit-post). | |
| 524 | - * @param {string} featureName The feature name. | |
| 525 | - */ | |
| 526 | - | |
| 527 | -function toggleFeature(scope, featureName) { | |
| 528 | - return function (_ref) { | |
| 529 | - let { | |
| 530 | - select, | |
| 531 | - dispatch | |
| 532 | - } = _ref; | |
| 533 | - const currentValue = select.isFeatureActive(scope, featureName); | |
| 534 | - dispatch.setFeatureValue(scope, featureName, !currentValue); | |
| 535 | - }; | |
| 536 | -} | |
| 537 | -/** | |
| 538 | - * Returns an action object used in signalling that a feature should be set to | |
| 539 | - * a true or false value | |
| 540 | - * | |
| 541 | - * @param {string} scope The feature scope (e.g. core/edit-post). | |
| 542 | - * @param {string} featureName The feature name. | |
| 543 | - * @param {boolean} value The value to set. | |
| 544 | - * | |
| 545 | - * @return {Object} Action object. | |
| 546 | - */ | |
| 547 | - | |
| 548 | -function setFeatureValue(scope, featureName, value) { | |
| 549 | - return { | |
| 550 | - type: 'SET_FEATURE_VALUE', | |
| 551 | - scope, | |
| 552 | - featureName, | |
| 553 | - value: !!value | |
| 554 | - }; | |
| 555 | -} | |
| 556 | -/** | |
| 557 | - * Returns an action object used in signalling that defaults should be set for features. | |
| 558 | - * | |
| 559 | - * @param {string} scope The feature scope (e.g. core/edit-post). | |
| 560 | - * @param {Object<string, boolean>} defaults A key/value map of feature names to values. | |
| 561 | - * | |
| 562 | - * @return {Object} Action object. | |
| 563 | - */ | |
| 564 | - | |
| 565 | -function setFeatureDefaults(scope, defaults) { | |
| 566 | - return { | |
| 567 | - type: 'SET_FEATURE_DEFAULTS', | |
| 568 | - scope, | |
| 569 | - defaults | |
| 570 | - }; | |
| 571 | -} | |
| 572 | -//# sourceMappingURL=actions.js.map | |
| 573 | -;// CONCATENATED MODULE: ./packages/interface/build-module/store/selectors.js | |
| 574 | -/** | |
| 575 | - * External dependencies | |
| 576 | - */ | |
| 577 | - | |
| 578 | -/** | |
| 579 | - * Returns the item that is enabled in a given scope. | |
| 580 | - * | |
| 581 | - * @param {Object} state Global application state. | |
| 582 | - * @param {string} itemType Type of item. | |
| 583 | - * @param {string} scope Item scope. | |
| 584 | - * | |
| 585 | - * @return {?string|null} The item that is enabled in the passed scope and type. | |
| 586 | - */ | |
| 587 | - | |
| 588 | -function getSingleEnableItem(state, itemType, scope) { | |
| 589 | - return (0,external_lodash_namespaceObject.get)(state.enableItems.singleEnableItems, [itemType, scope]); | |
| 590 | -} | |
| 591 | -/** | |
| 592 | - * Returns the complementary area that is active in a given scope. | |
| 593 | - * | |
| 594 | - * @param {Object} state Global application state. | |
| 595 | - * @param {string} scope Item scope. | |
| 596 | - * | |
| 597 | - * @return {string} The complementary area that is active in the given scope. | |
| 598 | - */ | |
| 599 | - | |
| 600 | - | |
| 601 | -function getActiveComplementaryArea(state, scope) { | |
| 602 | - return getSingleEnableItem(state, 'complementaryArea', scope); | |
| 603 | -} | |
| 604 | -/** | |
| 605 | - * Returns a boolean indicating if an item is enabled or not in a given scope. | |
| 606 | - * | |
| 607 | - * @param {Object} state Global application state. | |
| 608 | - * @param {string} itemType Type of item. | |
| 609 | - * @param {string} scope Scope. | |
| 610 | - * @param {string} item Item to check. | |
| 611 | - * | |
| 612 | - * @return {boolean|undefined} True if the item is enabled, false otherwise if the item is explicitly disabled, and undefined if there is no information for that item. | |
| 613 | - */ | |
| 614 | - | |
| 615 | -function isMultipleEnabledItemEnabled(state, itemType, scope, item) { | |
| 616 | - return (0,external_lodash_namespaceObject.get)(state.enableItems.multipleEnableItems, [itemType, scope, item]); | |
| 617 | -} | |
| 618 | -/** | |
| 619 | - * Returns a boolean indicating if an item is pinned or not. | |
| 620 | - * | |
| 621 | - * @param {Object} state Global application state. | |
| 622 | - * @param {string} scope Scope. | |
| 623 | - * @param {string} item Item to check. | |
| 624 | - * | |
| 625 | - * @return {boolean} True if the item is pinned and false otherwise. | |
| 626 | - */ | |
| 627 | - | |
| 628 | - | |
| 629 | -function isItemPinned(state, scope, item) { | |
| 630 | - return isMultipleEnabledItemEnabled(state, 'pinnedItems', scope, item) !== false; | |
| 631 | -} | |
| 632 | -/** | |
| 633 | - * Returns a boolean indicating whether a feature is active for a particular | |
| 634 | - * scope. | |
| 635 | - * | |
| 636 | - * @param {Object} state The store state. | |
| 637 | - * @param {string} scope The scope of the feature (e.g. core/edit-post). | |
| 638 | - * @param {string} featureName The name of the feature. | |
| 639 | - * | |
| 640 | - * @return {boolean} Is the feature enabled? | |
| 641 | - */ | |
| 642 | - | |
| 643 | -function isFeatureActive(state, scope, featureName) { | |
| 644 | - var _state$preferences$fe, _state$preferenceDefa; | |
| 645 | - | |
| 646 | - const featureValue = (_state$preferences$fe = state.preferences.features[scope]) === null || _state$preferences$fe === void 0 ? void 0 : _state$preferences$fe[featureName]; | |
| 647 | - const defaultedFeatureValue = featureValue !== undefined ? featureValue : (_state$preferenceDefa = state.preferenceDefaults.features[scope]) === null || _state$preferenceDefa === void 0 ? void 0 : _state$preferenceDefa[featureName]; | |
| 648 | - return !!defaultedFeatureValue; | |
| 649 | -} | |
| 650 | -//# sourceMappingURL=selectors.js.map | |
| 651 | -;// CONCATENATED MODULE: ./packages/interface/build-module/store/constants.js | |
| 652 | -/** | |
| 653 | - * The identifier for the data store. | |
| 654 | - * | |
| 655 | - * @type {string} | |
| 656 | - */ | |
| 657 | -const STORE_NAME = 'core/interface'; | |
| 658 | -//# sourceMappingURL=constants.js.map | |
| 659 | -;// CONCATENATED MODULE: ./packages/interface/build-module/store/index.js | |
| 660 | -/** | |
| 661 | - * WordPress dependencies | |
| 662 | - */ | |
| 663 | - | |
| 664 | -/** | |
| 665 | - * Internal dependencies | |
| 666 | - */ | |
| 667 | - | |
| 668 | - | |
| 669 | - | |
| 670 | - | |
| 671 | - | |
| 672 | -/** | |
| 673 | - * Store definition for the interface namespace. | |
| 674 | - * | |
| 675 | - * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore | |
| 676 | - * | |
| 677 | - * @type {Object} | |
| 678 | - */ | |
| 679 | - | |
| 680 | -const store = (0,external_wp_data_namespaceObject.createReduxStore)(STORE_NAME, { | |
| 681 | - reducer: reducer, | |
| 682 | - actions: actions_namespaceObject, | |
| 683 | - selectors: selectors_namespaceObject, | |
| 684 | - persist: ['enableItems', 'preferences'], | |
| 685 | - __experimentalUseThunks: true | |
| 686 | -}); // Once we build a more generic persistence plugin that works across types of stores | |
| 687 | -// we'd be able to replace this with a register call. | |
| 688 | - | |
| 689 | -(0,external_wp_data_namespaceObject.registerStore)(STORE_NAME, { | |
| 690 | - reducer: reducer, | |
| 691 | - actions: actions_namespaceObject, | |
| 692 | - selectors: selectors_namespaceObject, | |
| 693 | - persist: ['enableItems', 'preferences'], | |
| 694 | - __experimentalUseThunks: true | |
| 695 | -}); | |
| 696 | -//# sourceMappingURL=index.js.map | |
| 697 | -;// CONCATENATED MODULE: ./packages/interface/build-module/components/more-menu-feature-toggle/index.js | |
| 698 | - | |
| 699 | - | |
| 700 | -/** | |
| 701 | - * WordPress dependencies | |
| 702 | - */ | |
| 703 | - | |
| 704 | - | |
| 705 | - | |
| 706 | - | |
| 707 | - | |
| 708 | -/** | |
| 709 | - * Internal dependencies | |
| 710 | - */ | |
| 711 | - | |
| 712 | - | |
| 713 | -function MoreMenuFeatureToggle(_ref) { | |
| 714 | - let { | |
| 715 | - scope, | |
| 716 | - label, | |
| 717 | - info, | |
| 718 | - messageActivated, | |
| 719 | - messageDeactivated, | |
| 720 | - shortcut, | |
| 721 | - feature | |
| 722 | - } = _ref; | |
| 723 | - const isActive = (0,external_wp_data_namespaceObject.useSelect)(select => select(store).isFeatureActive(scope, feature), [feature]); | |
| 724 | - const { | |
| 725 | - toggleFeature | |
| 726 | - } = (0,external_wp_data_namespaceObject.useDispatch)(store); | |
| 727 | - | |
| 728 | - const speakMessage = () => { | |
| 729 | - if (isActive) { | |
| 730 | - (0,external_wp_a11y_namespaceObject.speak)(messageDeactivated || (0,external_wp_i18n_namespaceObject.__)('Feature deactivated')); | |
| 731 | - } else { | |
| 732 | - (0,external_wp_a11y_namespaceObject.speak)(messageActivated || (0,external_wp_i18n_namespaceObject.__)('Feature activated')); | |
| 733 | - } | |
| 734 | - }; | |
| 735 | - | |
| 736 | - return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, { | |
| 737 | - icon: isActive && library_check, | |
| 738 | - isSelected: isActive, | |
| 739 | - onClick: () => { | |
| 740 | - toggleFeature(scope, feature); | |
| 741 | - speakMessage(); | |
| 742 | - }, | |
| 743 | - role: "menuitemcheckbox", | |
| 744 | - info: info, | |
| 745 | - shortcut: shortcut | |
| 746 | - }, label); | |
| 747 | -} | |
| 748 | -//# sourceMappingURL=index.js.map | |
| 749 | -;// CONCATENATED MODULE: ./packages/interface/build-module/components/index.js | |
| 750 | - | |
| 751 | - | |
| 752 | - | |
| 753 | - | |
| 754 | - | |
| 755 | - | |
| 756 | - | |
| 757 | - | |
| 758 | -//# sourceMappingURL=index.js.map | |
| 759 | -;// CONCATENATED MODULE: ./packages/interface/build-module/index.js | |
| 760 | - | |
| 761 | - | |
| 762 | -//# sourceMappingURL=index.js.map | |
| 763 | -;// CONCATENATED MODULE: external ["wp","keyboardShortcuts"] | |
| 764 | -var external_wp_keyboardShortcuts_namespaceObject = window["wp"]["keyboardShortcuts"]; | |
| 765 | -;// CONCATENATED MODULE: external ["wp","blockEditor"] | |
| 766 | -var external_wp_blockEditor_namespaceObject = window["wp"]["blockEditor"]; | |
| 767 | -;// CONCATENATED MODULE: external ["wp","compose"] | |
| 768 | -var external_wp_compose_namespaceObject = window["wp"]["compose"]; | |
| 769 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/error-boundary/index.js | |
| 770 | - | |
| 771 | - | |
| 772 | -/** | |
| 773 | - * WordPress dependencies | |
| 774 | - */ | |
| 775 | - | |
| 776 | - | |
| 777 | - | |
| 778 | - | |
| 779 | - | |
| 780 | - | |
| 781 | -function CopyButton(_ref) { | |
| 782 | - let { | |
| 783 | - text, | |
| 784 | - children | |
| 785 | - } = _ref; | |
| 786 | - const ref = (0,external_wp_compose_namespaceObject.useCopyToClipboard)(text); | |
| 787 | - return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { | |
| 788 | - variant: "secondary", | |
| 789 | - ref: ref | |
| 790 | - }, children); | |
| 791 | -} | |
| 792 | - | |
| 793 | -class ErrorBoundary extends external_wp_element_namespaceObject.Component { | |
| 794 | - constructor() { | |
| 795 | - super(...arguments); | |
| 796 | - this.state = { | |
| 797 | - error: null | |
| 798 | - }; | |
| 799 | - } | |
| 800 | - | |
| 801 | - componentDidCatch(error) { | |
| 802 | - this.setState({ | |
| 803 | - error | |
| 804 | - }); | |
| 805 | - } | |
| 806 | - | |
| 807 | - render() { | |
| 808 | - const { | |
| 809 | - error | |
| 810 | - } = this.state; | |
| 811 | - | |
| 812 | - if (!error) { | |
| 813 | - return this.props.children; | |
| 814 | - } | |
| 815 | - | |
| 816 | - return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.Warning, { | |
| 817 | - className: "customize-widgets-error-boundary", | |
| 818 | - actions: [(0,external_wp_element_namespaceObject.createElement)(CopyButton, { | |
| 819 | - key: "copy-error", | |
| 820 | - text: error.stack | |
| 821 | - }, (0,external_wp_i18n_namespaceObject.__)('Copy Error'))] | |
| 822 | - }, (0,external_wp_i18n_namespaceObject.__)('The editor has encountered an unexpected error.')); | |
| 823 | - } | |
| 824 | - | |
| 825 | -} | |
| 826 | -//# sourceMappingURL=index.js.map | |
| 827 | -;// CONCATENATED MODULE: external ["wp","coreData"] | |
| 828 | -var external_wp_coreData_namespaceObject = window["wp"]["coreData"]; | |
| 829 | -;// CONCATENATED MODULE: external ["wp","mediaUtils"] | |
| 830 | -var external_wp_mediaUtils_namespaceObject = window["wp"]["mediaUtils"]; | |
| 831 | -;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js | |
| 832 | -function _extends() { | |
| 833 | - _extends = Object.assign || function (target) { | |
| 834 | - for (var i = 1; i < arguments.length; i++) { | |
| 835 | - var source = arguments[i]; | |
| 836 | - | |
| 837 | - for (var key in source) { | |
| 838 | - if (Object.prototype.hasOwnProperty.call(source, key)) { | |
| 839 | - target[key] = source[key]; | |
| 840 | - } | |
| 841 | - } | |
| 842 | - } | |
| 843 | - | |
| 844 | - return target; | |
| 845 | - }; | |
| 846 | - | |
| 847 | - return _extends.apply(this, arguments); | |
| 848 | -} | |
| 849 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/block-inspector-button/index.js | |
| 850 | - | |
| 851 | - | |
| 852 | - | |
| 853 | -/** | |
| 854 | - * WordPress dependencies | |
| 855 | - */ | |
| 856 | - | |
| 857 | - | |
| 858 | - | |
| 859 | - | |
| 860 | - | |
| 861 | - | |
| 862 | -function BlockInspectorButton(_ref) { | |
| 863 | - let { | |
| 864 | - inspector, | |
| 865 | - closeMenu, | |
| 866 | - ...props | |
| 867 | - } = _ref; | |
| 868 | - const selectedBlockClientId = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getSelectedBlockClientId(), []); | |
| 869 | - const selectedBlock = (0,external_wp_element_namespaceObject.useMemo)(() => document.getElementById(`block-${selectedBlockClientId}`), [selectedBlockClientId]); | |
| 870 | - return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, _extends({ | |
| 871 | - onClick: () => { | |
| 872 | - // Open the inspector. | |
| 873 | - inspector.open({ | |
| 874 | - returnFocusWhenClose: selectedBlock | |
| 875 | - }); // Then close the dropdown menu. | |
| 876 | - | |
| 877 | - closeMenu(); | |
| 878 | - } | |
| 879 | - }, props), (0,external_wp_i18n_namespaceObject.__)('Show more settings')); | |
| 880 | -} | |
| 881 | - | |
| 882 | -/* harmony default export */ var block_inspector_button = (BlockInspectorButton); | |
| 883 | -//# sourceMappingURL=index.js.map | |
| 884 | -;// CONCATENATED MODULE: external ["wp","keycodes"] | |
| 885 | -var external_wp_keycodes_namespaceObject = window["wp"]["keycodes"]; | |
| 886 | -;// CONCATENATED MODULE: ./packages/icons/build-module/library/undo.js | |
| 887 | - | |
| 888 | - | |
| 889 | -/** | |
| 890 | - * WordPress dependencies | |
| 891 | - */ | |
| 892 | - | |
| 893 | -const undo = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { | |
| 894 | - xmlns: "http://www.w3.org/2000/svg", | |
| 895 | - viewBox: "0 0 24 24" | |
| 896 | -}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { | |
| 897 | - d: "M18.3 11.7c-.6-.6-1.4-.9-2.3-.9H6.7l2.9-3.3-1.1-1-4.5 5L8.5 16l1-1-2.7-2.7H16c.5 0 .9.2 1.3.5 1 1 1 3.4 1 4.5v.3h1.5v-.2c0-1.5 0-4.3-1.5-5.7z" | |
| 898 | -})); | |
| 899 | -/* harmony default export */ var library_undo = (undo); | |
| 900 | -//# sourceMappingURL=undo.js.map | |
| 901 | -;// CONCATENATED MODULE: ./packages/icons/build-module/library/redo.js | |
| 902 | - | |
| 903 | - | |
| 904 | -/** | |
| 905 | - * WordPress dependencies | |
| 906 | - */ | |
| 907 | - | |
| 908 | -const redo = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { | |
| 909 | - xmlns: "http://www.w3.org/2000/svg", | |
| 910 | - viewBox: "0 0 24 24" | |
| 911 | -}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { | |
| 912 | - d: "M15.6 6.5l-1.1 1 2.9 3.3H8c-.9 0-1.7.3-2.3.9-1.4 1.5-1.4 4.2-1.4 5.6v.2h1.5v-.3c0-1.1 0-3.5 1-4.5.3-.3.7-.5 1.3-.5h9.2L14.5 15l1.1 1.1 4.6-4.6-4.6-5z" | |
| 913 | -})); | |
| 914 | -/* harmony default export */ var library_redo = (redo); | |
| 915 | -//# sourceMappingURL=redo.js.map | |
| 916 | -;// CONCATENATED MODULE: ./packages/icons/build-module/library/plus.js | |
| 917 | - | |
| 918 | - | |
| 919 | -/** | |
| 920 | - * WordPress dependencies | |
| 921 | - */ | |
| 922 | - | |
| 923 | -const plus = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { | |
| 924 | - xmlns: "http://www.w3.org/2000/svg", | |
| 925 | - viewBox: "0 0 24 24" | |
| 926 | -}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { | |
| 927 | - d: "M18 11.2h-5.2V6h-1.6v5.2H6v1.6h5.2V18h1.6v-5.2H18z" | |
| 928 | -})); | |
| 929 | -/* harmony default export */ var library_plus = (plus); | |
| 930 | -//# sourceMappingURL=plus.js.map | |
| 931 | -;// CONCATENATED MODULE: ./packages/icons/build-module/library/close-small.js | |
| 932 | - | |
| 933 | - | |
| 934 | -/** | |
| 935 | - * WordPress dependencies | |
| 936 | - */ | |
| 937 | - | |
| 938 | -const closeSmall = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { | |
| 939 | - xmlns: "http://www.w3.org/2000/svg", | |
| 940 | - viewBox: "0 0 24 24" | |
| 941 | -}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { | |
| 942 | - d: "M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z" | |
| 943 | -})); | |
| 944 | -/* harmony default export */ var close_small = (closeSmall); | |
| 945 | -//# sourceMappingURL=close-small.js.map | |
| 946 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/store/reducer.js | |
| 947 | -/** | |
| 948 | - * WordPress dependencies | |
| 949 | - */ | |
| 950 | - | |
| 951 | -/** | |
| 952 | - * Reducer tracking whether the inserter is open. | |
| 953 | - * | |
| 954 | - * @param {boolean|Object} state | |
| 955 | - * @param {Object} action | |
| 956 | - */ | |
| 957 | - | |
| 958 | -function blockInserterPanel() { | |
| 959 | - let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; | |
| 960 | - let action = arguments.length > 1 ? arguments[1] : undefined; | |
| 961 | - | |
| 962 | - switch (action.type) { | |
| 963 | - case 'SET_IS_INSERTER_OPENED': | |
| 964 | - return action.value; | |
| 965 | - } | |
| 966 | - | |
| 967 | - return state; | |
| 968 | -} | |
| 969 | - | |
| 970 | -/* harmony default export */ var store_reducer = ((0,external_wp_data_namespaceObject.combineReducers)({ | |
| 971 | - blockInserterPanel | |
| 972 | -})); | |
| 973 | -//# sourceMappingURL=reducer.js.map | |
| 974 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/store/selectors.js | |
| 975 | -/** | |
| 976 | - * Returns true if the inserter is opened. | |
| 977 | - * | |
| 978 | - * @param {Object} state Global application state. | |
| 979 | - * | |
| 980 | - * @return {boolean} Whether the inserter is opened. | |
| 981 | - */ | |
| 982 | -function isInserterOpened(state) { | |
| 983 | - return !!state.blockInserterPanel; | |
| 984 | -} | |
| 985 | -/** | |
| 986 | - * Get the insertion point for the inserter. | |
| 987 | - * | |
| 988 | - * @param {Object} state Global application state. | |
| 989 | - * | |
| 990 | - * @return {Object} The root client ID and index to insert at. | |
| 991 | - */ | |
| 992 | - | |
| 993 | -function __experimentalGetInsertionPoint(state) { | |
| 994 | - const { | |
| 995 | - rootClientId, | |
| 996 | - insertionIndex | |
| 997 | - } = state.blockInserterPanel; | |
| 998 | - return { | |
| 999 | - rootClientId, | |
| 1000 | - insertionIndex | |
| 1001 | - }; | |
| 1002 | -} | |
| 1003 | -//# sourceMappingURL=selectors.js.map | |
| 1004 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/store/actions.js | |
| 1005 | -/** | |
| 1006 | - * Returns an action object used to open/close the inserter. | |
| 1007 | - * | |
| 1008 | - * @param {boolean|Object} value Whether the inserter should be | |
| 1009 | - * opened (true) or closed (false). | |
| 1010 | - * To specify an insertion point, | |
| 1011 | - * use an object. | |
| 1012 | - * @param {string} value.rootClientId The root client ID to insert at. | |
| 1013 | - * @param {number} value.insertionIndex The index to insert at. | |
| 1014 | - * | |
| 1015 | - * @return {Object} Action object. | |
| 1016 | - */ | |
| 1017 | -function setIsInserterOpened(value) { | |
| 1018 | - return { | |
| 1019 | - type: 'SET_IS_INSERTER_OPENED', | |
| 1020 | - value | |
| 1021 | - }; | |
| 1022 | -} | |
| 1023 | -//# sourceMappingURL=actions.js.map | |
| 1024 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/store/constants.js | |
| 1025 | -/** | |
| 1026 | - * Module Constants | |
| 1027 | - */ | |
| 1028 | -const constants_STORE_NAME = 'core/customize-widgets'; | |
| 1029 | -//# sourceMappingURL=constants.js.map | |
| 1030 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/store/index.js | |
| 1031 | -/** | |
| 1032 | - * WordPress dependencies | |
| 1033 | - */ | |
| 1034 | - | |
| 1035 | -/** | |
| 1036 | - * Internal dependencies | |
| 1037 | - */ | |
| 1038 | - | |
| 1039 | - | |
| 1040 | - | |
| 1041 | - | |
| 1042 | - | |
| 1043 | -/** | |
| 1044 | - * Block editor data store configuration. | |
| 1045 | - * | |
| 1046 | - * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#registerStore | |
| 1047 | - * | |
| 1048 | - * @type {Object} | |
| 1049 | - */ | |
| 1050 | - | |
| 1051 | -const storeConfig = { | |
| 1052 | - reducer: store_reducer, | |
| 1053 | - selectors: store_selectors_namespaceObject, | |
| 1054 | - actions: store_actions_namespaceObject | |
| 1055 | -}; | |
| 1056 | -/** | |
| 1057 | - * Store definition for the edit widgets namespace. | |
| 1058 | - * | |
| 1059 | - * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore | |
| 1060 | - * | |
| 1061 | - * @type {Object} | |
| 1062 | - */ | |
| 1063 | - | |
| 1064 | -const store_store = (0,external_wp_data_namespaceObject.createReduxStore)(constants_STORE_NAME, storeConfig); // Once we build a more generic persistence plugin that works across types of stores | |
| 1065 | -// we'd be able to replace this with a register call. | |
| 1066 | - | |
| 1067 | -(0,external_wp_data_namespaceObject.registerStore)(constants_STORE_NAME, storeConfig); | |
| 1068 | -//# sourceMappingURL=index.js.map | |
| 1069 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/inserter/index.js | |
| 1070 | - | |
| 1071 | - | |
| 1072 | -/** | |
| 1073 | - * WordPress dependencies | |
| 1074 | - */ | |
| 1075 | - | |
| 1076 | - | |
| 1077 | - | |
| 1078 | - | |
| 1079 | - | |
| 1080 | - | |
| 1081 | -/** | |
| 1082 | - * Internal dependencies | |
| 1083 | - */ | |
| 1084 | - | |
| 1085 | - | |
| 1086 | - | |
| 1087 | -function Inserter(_ref) { | |
| 1088 | - let { | |
| 1089 | - setIsOpened | |
| 1090 | - } = _ref; | |
| 1091 | - const inserterTitleId = (0,external_wp_compose_namespaceObject.useInstanceId)(Inserter, 'customize-widget-layout__inserter-panel-title'); | |
| 1092 | - const insertionPoint = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).__experimentalGetInsertionPoint(), []); | |
| 1093 | - return (0,external_wp_element_namespaceObject.createElement)("div", { | |
| 1094 | - className: "customize-widgets-layout__inserter-panel", | |
| 1095 | - "aria-labelledby": inserterTitleId | |
| 1096 | - }, (0,external_wp_element_namespaceObject.createElement)("div", { | |
| 1097 | - className: "customize-widgets-layout__inserter-panel-header" | |
| 1098 | - }, (0,external_wp_element_namespaceObject.createElement)("h2", { | |
| 1099 | - id: inserterTitleId, | |
| 1100 | - className: "customize-widgets-layout__inserter-panel-header-title" | |
| 1101 | - }, (0,external_wp_i18n_namespaceObject.__)('Add a block')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { | |
| 1102 | - className: "customize-widgets-layout__inserter-panel-header-close-button", | |
| 1103 | - icon: close_small, | |
| 1104 | - onClick: () => setIsOpened(false), | |
| 1105 | - "aria-label": (0,external_wp_i18n_namespaceObject.__)('Close inserter') | |
| 1106 | - })), (0,external_wp_element_namespaceObject.createElement)("div", { | |
| 1107 | - className: "customize-widgets-layout__inserter-panel-content" | |
| 1108 | - }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalLibrary, { | |
| 1109 | - rootClientId: insertionPoint.rootClientId, | |
| 1110 | - __experimentalInsertionIndex: insertionPoint.insertionIndex, | |
| 1111 | - showInserterHelpPanel: true, | |
| 1112 | - onSelect: () => setIsOpened(false) | |
| 1113 | - }))); | |
| 1114 | -} | |
| 1115 | - | |
| 1116 | -/* harmony default export */ var components_inserter = (Inserter); | |
| 1117 | -//# sourceMappingURL=index.js.map | |
| 1118 | -;// CONCATENATED MODULE: ./packages/icons/build-module/library/external.js | |
| 1119 | - | |
| 1120 | - | |
| 1121 | -/** | |
| 1122 | - * WordPress dependencies | |
| 1123 | - */ | |
| 1124 | - | |
| 1125 | -const external = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, { | |
| 1126 | - xmlns: "http://www.w3.org/2000/svg", | |
| 1127 | - viewBox: "0 0 24 24" | |
| 1128 | -}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, { | |
| 1129 | - d: "M18.2 17c0 .7-.6 1.2-1.2 1.2H7c-.7 0-1.2-.6-1.2-1.2V7c0-.7.6-1.2 1.2-1.2h3.2V4.2H7C5.5 4.2 4.2 5.5 4.2 7v10c0 1.5 1.2 2.8 2.8 2.8h10c1.5 0 2.8-1.2 2.8-2.8v-3.6h-1.5V17zM14.9 3v1.5h3.7l-6.4 6.4 1.1 1.1 6.4-6.4v3.7h1.5V3h-6.3z" | |
| 1130 | -})); | |
| 1131 | -/* harmony default export */ var library_external = (external); | |
| 1132 | -//# sourceMappingURL=external.js.map | |
| 1133 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/keyboard-shortcut-help-modal/config.js | |
| 1134 | -/** | |
| 1135 | - * WordPress dependencies | |
| 1136 | - */ | |
| 1137 | - | |
| 1138 | -const textFormattingShortcuts = [{ | |
| 1139 | - keyCombination: { | |
| 1140 | - modifier: 'primary', | |
| 1141 | - character: 'b' | |
| 1142 | - }, | |
| 1143 | - description: (0,external_wp_i18n_namespaceObject.__)('Make the selected text bold.') | |
| 1144 | -}, { | |
| 1145 | - keyCombination: { | |
| 1146 | - modifier: 'primary', | |
| 1147 | - character: 'i' | |
| 1148 | - }, | |
| 1149 | - description: (0,external_wp_i18n_namespaceObject.__)('Make the selected text italic.') | |
| 1150 | -}, { | |
| 1151 | - keyCombination: { | |
| 1152 | - modifier: 'primary', | |
| 1153 | - character: 'k' | |
| 1154 | - }, | |
| 1155 | - description: (0,external_wp_i18n_namespaceObject.__)('Convert the selected text into a link.') | |
| 1156 | -}, { | |
| 1157 | - keyCombination: { | |
| 1158 | - modifier: 'primaryShift', | |
| 1159 | - character: 'k' | |
| 1160 | - }, | |
| 1161 | - description: (0,external_wp_i18n_namespaceObject.__)('Remove a link.') | |
| 1162 | -}, { | |
| 1163 | - keyCombination: { | |
| 1164 | - modifier: 'primary', | |
| 1165 | - character: 'u' | |
| 1166 | - }, | |
| 1167 | - description: (0,external_wp_i18n_namespaceObject.__)('Underline the selected text.') | |
| 1168 | -}]; | |
| 1169 | -//# sourceMappingURL=config.js.map | |
| 1170 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/keyboard-shortcut-help-modal/shortcut.js | |
| 1171 | - | |
| 1172 | - | |
| 1173 | -/** | |
| 1174 | - * External dependencies | |
| 1175 | - */ | |
| 1176 | - | |
| 1177 | -/** | |
| 1178 | - * WordPress dependencies | |
| 1179 | - */ | |
| 1180 | - | |
| 1181 | - | |
| 1182 | - | |
| 1183 | - | |
| 1184 | -function KeyCombination(_ref) { | |
| 1185 | - let { | |
| 1186 | - keyCombination, | |
| 1187 | - forceAriaLabel | |
| 1188 | - } = _ref; | |
| 1189 | - const shortcut = keyCombination.modifier ? external_wp_keycodes_namespaceObject.displayShortcutList[keyCombination.modifier](keyCombination.character) : keyCombination.character; | |
| 1190 | - const ariaLabel = keyCombination.modifier ? external_wp_keycodes_namespaceObject.shortcutAriaLabel[keyCombination.modifier](keyCombination.character) : keyCombination.character; | |
| 1191 | - return (0,external_wp_element_namespaceObject.createElement)("kbd", { | |
| 1192 | - className: "customize-widgets-keyboard-shortcut-help-modal__shortcut-key-combination", | |
| 1193 | - "aria-label": forceAriaLabel || ariaLabel | |
| 1194 | - }, (0,external_lodash_namespaceObject.castArray)(shortcut).map((character, index) => { | |
| 1195 | - if (character === '+') { | |
| 1196 | - return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, { | |
| 1197 | - key: index | |
| 1198 | - }, character); | |
| 1199 | - } | |
| 1200 | - | |
| 1201 | - return (0,external_wp_element_namespaceObject.createElement)("kbd", { | |
| 1202 | - key: index, | |
| 1203 | - className: "customize-widgets-keyboard-shortcut-help-modal__shortcut-key" | |
| 1204 | - }, character); | |
| 1205 | - })); | |
| 1206 | -} | |
| 1207 | - | |
| 1208 | -function Shortcut(_ref2) { | |
| 1209 | - let { | |
| 1210 | - description, | |
| 1211 | - keyCombination, | |
| 1212 | - aliases = [], | |
| 1213 | - ariaLabel | |
| 1214 | - } = _ref2; | |
| 1215 | - return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("div", { | |
| 1216 | - className: "customize-widgets-keyboard-shortcut-help-modal__shortcut-description" | |
| 1217 | - }, description), (0,external_wp_element_namespaceObject.createElement)("div", { | |
| 1218 | - className: "customize-widgets-keyboard-shortcut-help-modal__shortcut-term" | |
| 1219 | - }, (0,external_wp_element_namespaceObject.createElement)(KeyCombination, { | |
| 1220 | - keyCombination: keyCombination, | |
| 1221 | - forceAriaLabel: ariaLabel | |
| 1222 | - }), aliases.map((alias, index) => (0,external_wp_element_namespaceObject.createElement)(KeyCombination, { | |
| 1223 | - keyCombination: alias, | |
| 1224 | - forceAriaLabel: ariaLabel, | |
| 1225 | - key: index | |
| 1226 | - })))); | |
| 1227 | -} | |
| 1228 | - | |
| 1229 | -/* harmony default export */ var keyboard_shortcut_help_modal_shortcut = (Shortcut); | |
| 1230 | -//# sourceMappingURL=shortcut.js.map | |
| 1231 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.js | |
| 1232 | - | |
| 1233 | - | |
| 1234 | -/** | |
| 1235 | - * WordPress dependencies | |
| 1236 | - */ | |
| 1237 | - | |
| 1238 | - | |
| 1239 | -/** | |
| 1240 | - * Internal dependencies | |
| 1241 | - */ | |
| 1242 | - | |
| 1243 | - | |
| 1244 | - | |
| 1245 | -function DynamicShortcut(_ref) { | |
| 1246 | - let { | |
| 1247 | - name | |
| 1248 | - } = _ref; | |
| 1249 | - const { | |
| 1250 | - keyCombination, | |
| 1251 | - description, | |
| 1252 | - aliases | |
| 1253 | - } = (0,external_wp_data_namespaceObject.useSelect)(select => { | |
| 1254 | - const { | |
| 1255 | - getShortcutKeyCombination, | |
| 1256 | - getShortcutDescription, | |
| 1257 | - getShortcutAliases | |
| 1258 | - } = select(external_wp_keyboardShortcuts_namespaceObject.store); | |
| 1259 | - return { | |
| 1260 | - keyCombination: getShortcutKeyCombination(name), | |
| 1261 | - aliases: getShortcutAliases(name), | |
| 1262 | - description: getShortcutDescription(name) | |
| 1263 | - }; | |
| 1264 | - }, [name]); | |
| 1265 | - | |
| 1266 | - if (!keyCombination) { | |
| 1267 | - return null; | |
| 1268 | - } | |
| 1269 | - | |
| 1270 | - return (0,external_wp_element_namespaceObject.createElement)(keyboard_shortcut_help_modal_shortcut, { | |
| 1271 | - keyCombination: keyCombination, | |
| 1272 | - description: description, | |
| 1273 | - aliases: aliases | |
| 1274 | - }); | |
| 1275 | -} | |
| 1276 | - | |
| 1277 | -/* harmony default export */ var dynamic_shortcut = (DynamicShortcut); | |
| 1278 | -//# sourceMappingURL=dynamic-shortcut.js.map | |
| 1279 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/keyboard-shortcut-help-modal/index.js | |
| 1280 | - | |
| 1281 | - | |
| 1282 | -/** | |
| 1283 | - * External dependencies | |
| 1284 | - */ | |
| 1285 | - | |
| 1286 | - | |
| 1287 | -/** | |
| 1288 | - * WordPress dependencies | |
| 1289 | - */ | |
| 1290 | - | |
| 1291 | - | |
| 1292 | - | |
| 1293 | - | |
| 1294 | - | |
| 1295 | -/** | |
| 1296 | - * Internal dependencies | |
| 1297 | - */ | |
| 1298 | - | |
| 1299 | - | |
| 1300 | - | |
| 1301 | - | |
| 1302 | - | |
| 1303 | -const ShortcutList = _ref => { | |
| 1304 | - let { | |
| 1305 | - shortcuts | |
| 1306 | - } = _ref; | |
| 1307 | - return ( | |
| 1308 | - /* | |
| 1309 | - * Disable reason: The `list` ARIA role is redundant but | |
| 1310 | - * Safari+VoiceOver won't announce the list otherwise. | |
| 1311 | - */ | |
| 1312 | - | |
| 1313 | - /* eslint-disable jsx-a11y/no-redundant-roles */ | |
| 1314 | - (0,external_wp_element_namespaceObject.createElement)("ul", { | |
| 1315 | - className: "customize-widgets-keyboard-shortcut-help-modal__shortcut-list", | |
| 1316 | - role: "list" | |
| 1317 | - }, shortcuts.map((shortcut, index) => (0,external_wp_element_namespaceObject.createElement)("li", { | |
| 1318 | - className: "customize-widgets-keyboard-shortcut-help-modal__shortcut", | |
| 1319 | - key: index | |
| 1320 | - }, (0,external_lodash_namespaceObject.isString)(shortcut) ? (0,external_wp_element_namespaceObject.createElement)(dynamic_shortcut, { | |
| 1321 | - name: shortcut | |
| 1322 | - }) : (0,external_wp_element_namespaceObject.createElement)(keyboard_shortcut_help_modal_shortcut, shortcut)))) | |
| 1323 | - /* eslint-enable jsx-a11y/no-redundant-roles */ | |
| 1324 | - | |
| 1325 | - ); | |
| 1326 | -}; | |
| 1327 | - | |
| 1328 | -const ShortcutSection = _ref2 => { | |
| 1329 | - let { | |
| 1330 | - title, | |
| 1331 | - shortcuts, | |
| 1332 | - className | |
| 1333 | - } = _ref2; | |
| 1334 | - return (0,external_wp_element_namespaceObject.createElement)("section", { | |
| 1335 | - className: classnames_default()('customize-widgets-keyboard-shortcut-help-modal__section', className) | |
| 1336 | - }, !!title && (0,external_wp_element_namespaceObject.createElement)("h2", { | |
| 1337 | - className: "customize-widgets-keyboard-shortcut-help-modal__section-title" | |
| 1338 | - }, title), (0,external_wp_element_namespaceObject.createElement)(ShortcutList, { | |
| 1339 | - shortcuts: shortcuts | |
| 1340 | - })); | |
| 1341 | -}; | |
| 1342 | - | |
| 1343 | -const ShortcutCategorySection = _ref3 => { | |
| 1344 | - let { | |
| 1345 | - title, | |
| 1346 | - categoryName, | |
| 1347 | - additionalShortcuts = [] | |
| 1348 | - } = _ref3; | |
| 1349 | - const categoryShortcuts = (0,external_wp_data_namespaceObject.useSelect)(select => { | |
| 1350 | - return select(external_wp_keyboardShortcuts_namespaceObject.store).getCategoryShortcuts(categoryName); | |
| 1351 | - }, [categoryName]); | |
| 1352 | - return (0,external_wp_element_namespaceObject.createElement)(ShortcutSection, { | |
| 1353 | - title: title, | |
| 1354 | - shortcuts: categoryShortcuts.concat(additionalShortcuts) | |
| 1355 | - }); | |
| 1356 | -}; | |
| 1357 | - | |
| 1358 | -function KeyboardShortcutHelpModal(_ref4) { | |
| 1359 | - let { | |
| 1360 | - isModalActive, | |
| 1361 | - toggleModal | |
| 1362 | - } = _ref4; | |
| 1363 | - const { | |
| 1364 | - registerShortcut | |
| 1365 | - } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_keyboardShortcuts_namespaceObject.store); | |
| 1366 | - registerShortcut({ | |
| 1367 | - name: 'core/customize-widgets/keyboard-shortcuts', | |
| 1368 | - category: 'main', | |
| 1369 | - description: (0,external_wp_i18n_namespaceObject.__)('Display these keyboard shortcuts.'), | |
| 1370 | - keyCombination: { | |
| 1371 | - modifier: 'access', | |
| 1372 | - character: 'h' | |
| 1373 | - } | |
| 1374 | - }); | |
| 1375 | - (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/customize-widgets/keyboard-shortcuts', toggleModal); | |
| 1376 | - | |
| 1377 | - if (!isModalActive) { | |
| 1378 | - return null; | |
| 1379 | - } | |
| 1380 | - | |
| 1381 | - return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Modal, { | |
| 1382 | - className: "customize-widgets-keyboard-shortcut-help-modal", | |
| 1383 | - title: (0,external_wp_i18n_namespaceObject.__)('Keyboard shortcuts'), | |
| 1384 | - closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close'), | |
| 1385 | - onRequestClose: toggleModal | |
| 1386 | - }, (0,external_wp_element_namespaceObject.createElement)(ShortcutSection, { | |
| 1387 | - className: "customize-widgets-keyboard-shortcut-help-modal__main-shortcuts", | |
| 1388 | - shortcuts: ['core/customize-widgets/keyboard-shortcuts'] | |
| 1389 | - }), (0,external_wp_element_namespaceObject.createElement)(ShortcutCategorySection, { | |
| 1390 | - title: (0,external_wp_i18n_namespaceObject.__)('Global shortcuts'), | |
| 1391 | - categoryName: "global" | |
| 1392 | - }), (0,external_wp_element_namespaceObject.createElement)(ShortcutCategorySection, { | |
| 1393 | - title: (0,external_wp_i18n_namespaceObject.__)('Selection shortcuts'), | |
| 1394 | - categoryName: "selection" | |
| 1395 | - }), (0,external_wp_element_namespaceObject.createElement)(ShortcutCategorySection, { | |
| 1396 | - title: (0,external_wp_i18n_namespaceObject.__)('Block shortcuts'), | |
| 1397 | - categoryName: "block", | |
| 1398 | - additionalShortcuts: [{ | |
| 1399 | - keyCombination: { | |
| 1400 | - character: '/' | |
| 1401 | - }, | |
| 1402 | - description: (0,external_wp_i18n_namespaceObject.__)('Change the block type after adding a new paragraph.'), | |
| 1403 | - | |
| 1404 | - /* translators: The forward-slash character. e.g. '/'. */ | |
| 1405 | - ariaLabel: (0,external_wp_i18n_namespaceObject.__)('Forward-slash') | |
| 1406 | - }] | |
| 1407 | - }), (0,external_wp_element_namespaceObject.createElement)(ShortcutSection, { | |
| 1408 | - title: (0,external_wp_i18n_namespaceObject.__)('Text formatting'), | |
| 1409 | - shortcuts: textFormattingShortcuts | |
| 1410 | - })); | |
| 1411 | -} | |
| 1412 | -//# sourceMappingURL=index.js.map | |
| 1413 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/more-menu/index.js | |
| 1414 | - | |
| 1415 | - | |
| 1416 | -/** | |
| 1417 | - * WordPress dependencies | |
| 1418 | - */ | |
| 1419 | - | |
| 1420 | - | |
| 1421 | - | |
| 1422 | - | |
| 1423 | - | |
| 1424 | - | |
| 1425 | - | |
| 1426 | -/** | |
| 1427 | - * Internal dependencies | |
| 1428 | - */ | |
| 1429 | - | |
| 1430 | - | |
| 1431 | -const POPOVER_PROPS = { | |
| 1432 | - className: 'customize-widgets-more-menu__content' | |
| 1433 | -}; | |
| 1434 | -function MoreMenu() { | |
| 1435 | - const [isKeyboardShortcutsModalActive, setIsKeyboardShortcutsModalVisible] = (0,external_wp_element_namespaceObject.useState)(false); | |
| 1436 | - | |
| 1437 | - const toggleKeyboardShortcutsModal = () => setIsKeyboardShortcutsModalVisible(!isKeyboardShortcutsModalActive); | |
| 1438 | - | |
| 1439 | - (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/customize-widgets/keyboard-shortcuts', toggleKeyboardShortcutsModal); | |
| 1440 | - return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(MoreMenuDropdown, { | |
| 1441 | - as: external_wp_components_namespaceObject.ToolbarDropdownMenu, | |
| 1442 | - className: "customize-widgets-more-menu", | |
| 1443 | - popoverProps: POPOVER_PROPS | |
| 1444 | - }, () => (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, { | |
| 1445 | - label: (0,external_wp_i18n_namespaceObject._x)('View', 'noun') | |
| 1446 | - }, (0,external_wp_element_namespaceObject.createElement)(MoreMenuFeatureToggle, { | |
| 1447 | - scope: "core/customize-widgets", | |
| 1448 | - feature: "fixedToolbar", | |
| 1449 | - label: (0,external_wp_i18n_namespaceObject.__)('Top toolbar'), | |
| 1450 | - info: (0,external_wp_i18n_namespaceObject.__)('Access all block and document tools in a single place'), | |
| 1451 | - messageActivated: (0,external_wp_i18n_namespaceObject.__)('Top toolbar activated'), | |
| 1452 | - messageDeactivated: (0,external_wp_i18n_namespaceObject.__)('Top toolbar deactivated') | |
| 1453 | - })), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, { | |
| 1454 | - label: (0,external_wp_i18n_namespaceObject.__)('Tools') | |
| 1455 | - }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, { | |
| 1456 | - onClick: () => { | |
| 1457 | - setIsKeyboardShortcutsModalVisible(true); | |
| 1458 | - }, | |
| 1459 | - shortcut: external_wp_keycodes_namespaceObject.displayShortcut.access('h') | |
| 1460 | - }, (0,external_wp_i18n_namespaceObject.__)('Keyboard shortcuts')), (0,external_wp_element_namespaceObject.createElement)(MoreMenuFeatureToggle, { | |
| 1461 | - scope: "core/customize-widgets", | |
| 1462 | - feature: "welcomeGuide", | |
| 1463 | - label: (0,external_wp_i18n_namespaceObject.__)('Welcome Guide') | |
| 1464 | - }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, { | |
| 1465 | - role: "menuitem", | |
| 1466 | - icon: library_external, | |
| 1467 | - href: (0,external_wp_i18n_namespaceObject.__)('https://wordpress.org/support/article/block-based-widgets-editor/'), | |
| 1468 | - target: "_blank", | |
| 1469 | - rel: "noopener noreferrer" | |
| 1470 | - }, (0,external_wp_i18n_namespaceObject.__)('Help'), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, { | |
| 1471 | - as: "span" | |
| 1472 | - }, | |
| 1473 | - /* translators: accessibility text */ | |
| 1474 | - (0,external_wp_i18n_namespaceObject.__)('(opens in a new tab)')))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuGroup, { | |
| 1475 | - label: (0,external_wp_i18n_namespaceObject.__)('Preferences') | |
| 1476 | - }, (0,external_wp_element_namespaceObject.createElement)(MoreMenuFeatureToggle, { | |
| 1477 | - scope: "core/customize-widgets", | |
| 1478 | - feature: "keepCaretInsideBlock", | |
| 1479 | - label: (0,external_wp_i18n_namespaceObject.__)('Contain text cursor inside block'), | |
| 1480 | - info: (0,external_wp_i18n_namespaceObject.__)('Aids screen readers by stopping text caret from leaving blocks.'), | |
| 1481 | - messageActivated: (0,external_wp_i18n_namespaceObject.__)('Contain text cursor inside block activated'), | |
| 1482 | - messageDeactivated: (0,external_wp_i18n_namespaceObject.__)('Contain text cursor inside block deactivated') | |
| 1483 | - })))), (0,external_wp_element_namespaceObject.createElement)(KeyboardShortcutHelpModal, { | |
| 1484 | - isModalActive: isKeyboardShortcutsModalActive, | |
| 1485 | - toggleModal: toggleKeyboardShortcutsModal | |
| 1486 | - })); | |
| 1487 | -} | |
| 1488 | -//# sourceMappingURL=index.js.map | |
| 1489 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/header/index.js | |
| 1490 | - | |
| 1491 | - | |
| 1492 | -/** | |
| 1493 | - * External dependencies | |
| 1494 | - */ | |
| 1495 | - | |
| 1496 | -/** | |
| 1497 | - * WordPress dependencies | |
| 1498 | - */ | |
| 1499 | - | |
| 1500 | - | |
| 1501 | - | |
| 1502 | - | |
| 1503 | - | |
| 1504 | - | |
| 1505 | - | |
| 1506 | -/** | |
| 1507 | - * Internal dependencies | |
| 1508 | - */ | |
| 1509 | - | |
| 1510 | - | |
| 1511 | - | |
| 1512 | - | |
| 1513 | -function Header(_ref) { | |
| 1514 | - let { | |
| 1515 | - sidebar, | |
| 1516 | - inserter, | |
| 1517 | - isInserterOpened, | |
| 1518 | - setIsInserterOpened, | |
| 1519 | - isFixedToolbarActive | |
| 1520 | - } = _ref; | |
| 1521 | - const [[hasUndo, hasRedo], setUndoRedo] = (0,external_wp_element_namespaceObject.useState)([sidebar.hasUndo(), sidebar.hasRedo()]); | |
| 1522 | - (0,external_wp_element_namespaceObject.useEffect)(() => { | |
| 1523 | - return sidebar.subscribeHistory(() => { | |
| 1524 | - setUndoRedo([sidebar.hasUndo(), sidebar.hasRedo()]); | |
| 1525 | - }); | |
| 1526 | - }, [sidebar]); | |
| 1527 | - return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("div", { | |
| 1528 | - className: classnames_default()('customize-widgets-header', { | |
| 1529 | - 'is-fixed-toolbar-active': isFixedToolbarActive | |
| 1530 | - }) | |
| 1531 | - }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.NavigableToolbar, { | |
| 1532 | - className: "customize-widgets-header-toolbar", | |
| 1533 | - "aria-label": (0,external_wp_i18n_namespaceObject.__)('Document tools') | |
| 1534 | - }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ToolbarButton, { | |
| 1535 | - icon: !(0,external_wp_i18n_namespaceObject.isRTL)() ? library_undo : library_redo | |
| 1536 | - /* translators: button label text should, if possible, be under 16 characters. */ | |
| 1537 | - , | |
| 1538 | - label: (0,external_wp_i18n_namespaceObject.__)('Undo'), | |
| 1539 | - shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primary('z') // If there are no undo levels we don't want to actually disable this | |
| 1540 | - // button, because it will remove focus for keyboard users. | |
| 1541 | - // See: https://github.com/WordPress/gutenberg/issues/3486 | |
| 1542 | - , | |
| 1543 | - "aria-disabled": !hasUndo, | |
| 1544 | - onClick: sidebar.undo, | |
| 1545 | - className: "customize-widgets-editor-history-button undo-button" | |
| 1546 | - }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ToolbarButton, { | |
| 1547 | - icon: !(0,external_wp_i18n_namespaceObject.isRTL)() ? library_redo : library_undo | |
| 1548 | - /* translators: button label text should, if possible, be under 16 characters. */ | |
| 1549 | - , | |
| 1550 | - label: (0,external_wp_i18n_namespaceObject.__)('Redo'), | |
| 1551 | - shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primaryShift('z') // If there are no undo levels we don't want to actually disable this | |
| 1552 | - // button, because it will remove focus for keyboard users. | |
| 1553 | - // See: https://github.com/WordPress/gutenberg/issues/3486 | |
| 1554 | - , | |
| 1555 | - "aria-disabled": !hasRedo, | |
| 1556 | - onClick: sidebar.redo, | |
| 1557 | - className: "customize-widgets-editor-history-button redo-button" | |
| 1558 | - }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ToolbarButton, { | |
| 1559 | - className: "customize-widgets-header-toolbar__inserter-toggle", | |
| 1560 | - isPressed: isInserterOpened, | |
| 1561 | - variant: "primary", | |
| 1562 | - icon: library_plus, | |
| 1563 | - label: (0,external_wp_i18n_namespaceObject._x)('Add block', 'Generic label for block inserter button'), | |
| 1564 | - onClick: () => { | |
| 1565 | - setIsInserterOpened(isOpen => !isOpen); | |
| 1566 | - } | |
| 1567 | - }), (0,external_wp_element_namespaceObject.createElement)(MoreMenu, null))), (0,external_wp_element_namespaceObject.createPortal)((0,external_wp_element_namespaceObject.createElement)(components_inserter, { | |
| 1568 | - setIsOpened: setIsInserterOpened | |
| 1569 | - }), inserter.contentContainer[0])); | |
| 1570 | -} | |
| 1571 | - | |
| 1572 | -/* harmony default export */ var header = (Header); | |
| 1573 | -//# sourceMappingURL=index.js.map | |
| 1574 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/inserter/use-inserter.js | |
| 1575 | -/** | |
| 1576 | - * WordPress dependencies | |
| 1577 | - */ | |
| 1578 | - | |
| 1579 | - | |
| 1580 | -/** | |
| 1581 | - * Internal dependencies | |
| 1582 | - */ | |
| 1583 | - | |
| 1584 | - | |
| 1585 | -function useInserter(inserter) { | |
| 1586 | - const isInserterOpened = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).isInserterOpened(), []); | |
| 1587 | - const { | |
| 1588 | - setIsInserterOpened | |
| 1589 | - } = (0,external_wp_data_namespaceObject.useDispatch)(store_store); | |
| 1590 | - (0,external_wp_element_namespaceObject.useEffect)(() => { | |
| 1591 | - if (isInserterOpened) { | |
| 1592 | - inserter.open(); | |
| 1593 | - } else { | |
| 1594 | - inserter.close(); | |
| 1595 | - } | |
| 1596 | - }, [inserter, isInserterOpened]); | |
| 1597 | - return [isInserterOpened, (0,external_wp_element_namespaceObject.useCallback)(updater => { | |
| 1598 | - let isOpen = updater; | |
| 1599 | - | |
| 1600 | - if (typeof updater === 'function') { | |
| 1601 | - isOpen = updater((0,external_wp_data_namespaceObject.select)(store_store).isInserterOpened()); | |
| 1602 | - } | |
| 1603 | - | |
| 1604 | - setIsInserterOpened(isOpen); | |
| 1605 | - }, [setIsInserterOpened])]; | |
| 1606 | -} | |
| 1607 | -//# sourceMappingURL=use-inserter.js.map | |
| 1608 | -;// CONCATENATED MODULE: external ["wp","isShallowEqual"] | |
| 1609 | -var external_wp_isShallowEqual_namespaceObject = window["wp"]["isShallowEqual"]; | |
| 1610 | -var external_wp_isShallowEqual_default = /*#__PURE__*/__webpack_require__.n(external_wp_isShallowEqual_namespaceObject); | |
| 1611 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/utils.js | |
| 1612 | -// @ts-check | |
| 1613 | - | |
| 1614 | -/** | |
| 1615 | - * WordPress dependencies | |
| 1616 | - */ | |
| 1617 | - | |
| 1618 | - | |
| 1619 | -/** | |
| 1620 | - * External dependencies | |
| 1621 | - */ | |
| 1622 | - | |
| 1623 | - | |
| 1624 | -/** | |
| 1625 | - * Convert settingId to widgetId. | |
| 1626 | - * | |
| 1627 | - * @param {string} settingId The setting id. | |
| 1628 | - * @return {string} The widget id. | |
| 1629 | - */ | |
| 1630 | - | |
| 1631 | -function settingIdToWidgetId(settingId) { | |
| 1632 | - const matches = settingId.match(/^widget_(.+)(?:\[(\d+)\])$/); | |
| 1633 | - | |
| 1634 | - if (matches) { | |
| 1635 | - const idBase = matches[1]; | |
| 1636 | - const number = parseInt(matches[2], 10); | |
| 1637 | - return `${idBase}-${number}`; | |
| 1638 | - } | |
| 1639 | - | |
| 1640 | - return settingId; | |
| 1641 | -} | |
| 1642 | -/** | |
| 1643 | - * Transform a block to a customizable widget. | |
| 1644 | - * | |
| 1645 | - * @param {WPBlock} block The block to be transformed from. | |
| 1646 | - * @param {Object} existingWidget The widget to be extended from. | |
| 1647 | - * @return {Object} The transformed widget. | |
| 1648 | - */ | |
| 1649 | - | |
| 1650 | -function blockToWidget(block) { | |
| 1651 | - let existingWidget = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; | |
| 1652 | - let widget; | |
| 1653 | - const isValidLegacyWidgetBlock = block.name === 'core/legacy-widget' && (block.attributes.id || block.attributes.instance); | |
| 1654 | - | |
| 1655 | - if (isValidLegacyWidgetBlock) { | |
| 1656 | - if (block.attributes.id) { | |
| 1657 | - // Widget that does not extend WP_Widget. | |
| 1658 | - widget = { | |
| 1659 | - id: block.attributes.id | |
| 1660 | - }; | |
| 1661 | - } else { | |
| 1662 | - const { | |
| 1663 | - encoded, | |
| 1664 | - hash, | |
| 1665 | - raw, | |
| 1666 | - ...rest | |
| 1667 | - } = block.attributes.instance; // Widget that extends WP_Widget. | |
| 1668 | - | |
| 1669 | - widget = { | |
| 1670 | - idBase: block.attributes.idBase, | |
| 1671 | - instance: { ...(existingWidget === null || existingWidget === void 0 ? void 0 : existingWidget.instance), | |
| 1672 | - // Required only for the customizer. | |
| 1673 | - is_widget_customizer_js_value: true, | |
| 1674 | - encoded_serialized_instance: encoded, | |
| 1675 | - instance_hash_key: hash, | |
| 1676 | - raw_instance: raw, | |
| 1677 | - ...rest | |
| 1678 | - } | |
| 1679 | - }; | |
| 1680 | - } | |
| 1681 | - } else { | |
| 1682 | - const instance = { | |
| 1683 | - content: (0,external_wp_blocks_namespaceObject.serialize)(block) | |
| 1684 | - }; | |
| 1685 | - widget = { | |
| 1686 | - idBase: 'block', | |
| 1687 | - widgetClass: 'WP_Widget_Block', | |
| 1688 | - instance: { | |
| 1689 | - raw_instance: instance | |
| 1690 | - } | |
| 1691 | - }; | |
| 1692 | - } | |
| 1693 | - | |
| 1694 | - return { ...(0,external_lodash_namespaceObject.omit)(existingWidget, ['form', 'rendered']), | |
| 1695 | - ...widget | |
| 1696 | - }; | |
| 1697 | -} | |
| 1698 | -/** | |
| 1699 | - * Transform a widget to a block. | |
| 1700 | - * | |
| 1701 | - * @param {Object} widget The widget to be transformed from. | |
| 1702 | - * @param {string} widget.id The widget id. | |
| 1703 | - * @param {string} widget.idBase The id base of the widget. | |
| 1704 | - * @param {number} widget.number The number/index of the widget. | |
| 1705 | - * @param {Object} widget.instance The instance of the widget. | |
| 1706 | - * @return {WPBlock} The transformed block. | |
| 1707 | - */ | |
| 1708 | - | |
| 1709 | -function widgetToBlock(_ref) { | |
| 1710 | - let { | |
| 1711 | - id, | |
| 1712 | - idBase, | |
| 1713 | - number, | |
| 1714 | - instance | |
| 1715 | - } = _ref; | |
| 1716 | - let block; | |
| 1717 | - const { | |
| 1718 | - encoded_serialized_instance: encoded, | |
| 1719 | - instance_hash_key: hash, | |
| 1720 | - raw_instance: raw, | |
| 1721 | - ...rest | |
| 1722 | - } = instance; | |
| 1723 | - | |
| 1724 | - if (idBase === 'block') { | |
| 1725 | - const parsedBlocks = (0,external_wp_blocks_namespaceObject.parse)(raw.content); | |
| 1726 | - block = parsedBlocks.length ? parsedBlocks[0] : (0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', {}); | |
| 1727 | - } else if (number) { | |
| 1728 | - // Widget that extends WP_Widget. | |
| 1729 | - block = (0,external_wp_blocks_namespaceObject.createBlock)('core/legacy-widget', { | |
| 1730 | - idBase, | |
| 1731 | - instance: { | |
| 1732 | - encoded, | |
| 1733 | - hash, | |
| 1734 | - raw, | |
| 1735 | - ...rest | |
| 1736 | - } | |
| 1737 | - }); | |
| 1738 | - } else { | |
| 1739 | - // Widget that does not extend WP_Widget. | |
| 1740 | - block = (0,external_wp_blocks_namespaceObject.createBlock)('core/legacy-widget', { | |
| 1741 | - id | |
| 1742 | - }); | |
| 1743 | - } | |
| 1744 | - | |
| 1745 | - return (0,external_wp_widgets_namespaceObject.addWidgetIdToBlock)(block, id); | |
| 1746 | -} | |
| 1747 | -//# sourceMappingURL=utils.js.map | |
| 1748 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/sidebar-block-editor/use-sidebar-block-editor.js | |
| 1749 | -/** | |
| 1750 | - * External dependencies | |
| 1751 | - */ | |
| 1752 | - | |
| 1753 | -/** | |
| 1754 | - * WordPress dependencies | |
| 1755 | - */ | |
| 1756 | - | |
| 1757 | - | |
| 1758 | - | |
| 1759 | - | |
| 1760 | -/** | |
| 1761 | - * Internal dependencies | |
| 1762 | - */ | |
| 1763 | - | |
| 1764 | - | |
| 1765 | - | |
| 1766 | -function widgetsToBlocks(widgets) { | |
| 1767 | - return widgets.map(widget => widgetToBlock(widget)); | |
| 1768 | -} | |
| 1769 | - | |
| 1770 | -function useSidebarBlockEditor(sidebar) { | |
| 1771 | - const [blocks, setBlocks] = (0,external_wp_element_namespaceObject.useState)(() => widgetsToBlocks(sidebar.getWidgets())); | |
| 1772 | - (0,external_wp_element_namespaceObject.useEffect)(() => { | |
| 1773 | - return sidebar.subscribe((prevWidgets, nextWidgets) => { | |
| 1774 | - setBlocks(prevBlocks => { | |
| 1775 | - const prevWidgetsMap = new Map(prevWidgets.map(widget => [widget.id, widget])); | |
| 1776 | - const prevBlocksMap = new Map(prevBlocks.map(block => [(0,external_wp_widgets_namespaceObject.getWidgetIdFromBlock)(block), block])); | |
| 1777 | - const nextBlocks = nextWidgets.map(nextWidget => { | |
| 1778 | - const prevWidget = prevWidgetsMap.get(nextWidget.id); // Bail out updates. | |
| 1779 | - | |
| 1780 | - if (prevWidget && prevWidget === nextWidget) { | |
| 1781 | - return prevBlocksMap.get(nextWidget.id); | |
| 1782 | - } | |
| 1783 | - | |
| 1784 | - return widgetToBlock(nextWidget); | |
| 1785 | - }); // Bail out updates. | |
| 1786 | - | |
| 1787 | - if (external_wp_isShallowEqual_default()(prevBlocks, nextBlocks)) { | |
| 1788 | - return prevBlocks; | |
| 1789 | - } | |
| 1790 | - | |
| 1791 | - return nextBlocks; | |
| 1792 | - }); | |
| 1793 | - }); | |
| 1794 | - }, [sidebar]); | |
| 1795 | - const onChangeBlocks = (0,external_wp_element_namespaceObject.useCallback)(nextBlocks => { | |
| 1796 | - setBlocks(prevBlocks => { | |
| 1797 | - if (external_wp_isShallowEqual_default()(prevBlocks, nextBlocks)) { | |
| 1798 | - return prevBlocks; | |
| 1799 | - } | |
| 1800 | - | |
| 1801 | - const prevBlocksMap = new Map(prevBlocks.map(block => [(0,external_wp_widgets_namespaceObject.getWidgetIdFromBlock)(block), block])); | |
| 1802 | - const nextWidgets = nextBlocks.map(nextBlock => { | |
| 1803 | - const widgetId = (0,external_wp_widgets_namespaceObject.getWidgetIdFromBlock)(nextBlock); // Update existing widgets. | |
| 1804 | - | |
| 1805 | - if (widgetId && prevBlocksMap.has(widgetId)) { | |
| 1806 | - const prevBlock = prevBlocksMap.get(widgetId); | |
| 1807 | - const prevWidget = sidebar.getWidget(widgetId); // Bail out updates by returning the previous widgets. | |
| 1808 | - // Deep equality is necessary until the block editor's internals changes. | |
| 1809 | - | |
| 1810 | - if ((0,external_lodash_namespaceObject.isEqual)(nextBlock, prevBlock) && prevWidget) { | |
| 1811 | - return prevWidget; | |
| 1812 | - } | |
| 1813 | - | |
| 1814 | - return blockToWidget(nextBlock, prevWidget); | |
| 1815 | - } // Add a new widget. | |
| 1816 | - | |
| 1817 | - | |
| 1818 | - return blockToWidget(nextBlock); | |
| 1819 | - }); // Bail out updates if the updated widgets are the same. | |
| 1820 | - | |
| 1821 | - if (external_wp_isShallowEqual_default()(sidebar.getWidgets(), nextWidgets)) { | |
| 1822 | - return prevBlocks; | |
| 1823 | - } | |
| 1824 | - | |
| 1825 | - const addedWidgetIds = sidebar.setWidgets(nextWidgets); | |
| 1826 | - return nextBlocks.reduce((updatedNextBlocks, nextBlock, index) => { | |
| 1827 | - const addedWidgetId = addedWidgetIds[index]; | |
| 1828 | - | |
| 1829 | - if (addedWidgetId !== null) { | |
| 1830 | - // Only create a new instance if necessary to prevent | |
| 1831 | - // the whole editor from re-rendering on every edit. | |
| 1832 | - if (updatedNextBlocks === nextBlocks) { | |
| 1833 | - updatedNextBlocks = nextBlocks.slice(); | |
| 1834 | - } | |
| 1835 | - | |
| 1836 | - updatedNextBlocks[index] = (0,external_wp_widgets_namespaceObject.addWidgetIdToBlock)(nextBlock, addedWidgetId); | |
| 1837 | - } | |
| 1838 | - | |
| 1839 | - return updatedNextBlocks; | |
| 1840 | - }, nextBlocks); | |
| 1841 | - }); | |
| 1842 | - }, [sidebar]); | |
| 1843 | - return [blocks, onChangeBlocks, onChangeBlocks]; | |
| 1844 | -} | |
| 1845 | -//# sourceMappingURL=use-sidebar-block-editor.js.map | |
| 1846 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/focus-control/index.js | |
| 1847 | - | |
| 1848 | - | |
| 1849 | -/** | |
| 1850 | - * WordPress dependencies | |
| 1851 | - */ | |
| 1852 | - | |
| 1853 | -/** | |
| 1854 | - * Internal dependencies | |
| 1855 | - */ | |
| 1856 | - | |
| 1857 | - | |
| 1858 | -const FocusControlContext = (0,external_wp_element_namespaceObject.createContext)(); | |
| 1859 | -function FocusControl(_ref) { | |
| 1860 | - let { | |
| 1861 | - api, | |
| 1862 | - sidebarControls, | |
| 1863 | - children | |
| 1864 | - } = _ref; | |
| 1865 | - const [focusedWidgetIdRef, setFocusedWidgetIdRef] = (0,external_wp_element_namespaceObject.useState)({ | |
| 1866 | - current: null | |
| 1867 | - }); | |
| 1868 | - const focusWidget = (0,external_wp_element_namespaceObject.useCallback)(widgetId => { | |
| 1869 | - for (const sidebarControl of sidebarControls) { | |
| 1870 | - const widgets = sidebarControl.setting.get(); | |
| 1871 | - | |
| 1872 | - if (widgets.includes(widgetId)) { | |
| 1873 | - sidebarControl.sectionInstance.expand({ | |
| 1874 | - // Schedule it after the complete callback so that | |
| 1875 | - // it won't be overridden by the "Back" button focus. | |
| 1876 | - completeCallback() { | |
| 1877 | - // Create a "ref-like" object every time to ensure | |
| 1878 | - // the same widget id can also triggers the focus control. | |
| 1879 | - setFocusedWidgetIdRef({ | |
| 1880 | - current: widgetId | |
| 1881 | - }); | |
| 1882 | - } | |
| 1883 | - | |
| 1884 | - }); | |
| 1885 | - break; | |
| 1886 | - } | |
| 1887 | - } | |
| 1888 | - }, [sidebarControls]); | |
| 1889 | - (0,external_wp_element_namespaceObject.useEffect)(() => { | |
| 1890 | - function handleFocus(settingId) { | |
| 1891 | - const widgetId = settingIdToWidgetId(settingId); | |
| 1892 | - focusWidget(widgetId); | |
| 1893 | - } | |
| 1894 | - | |
| 1895 | - function handleReady() { | |
| 1896 | - api.previewer.preview.bind('focus-control-for-setting', handleFocus); | |
| 1897 | - } | |
| 1898 | - | |
| 1899 | - api.previewer.bind('ready', handleReady); | |
| 1900 | - return () => { | |
| 1901 | - api.previewer.unbind('ready', handleReady); | |
| 1902 | - api.previewer.preview.unbind('focus-control-for-setting', handleFocus); | |
| 1903 | - }; | |
| 1904 | - }, [api, focusWidget]); | |
| 1905 | - const context = (0,external_wp_element_namespaceObject.useMemo)(() => [focusedWidgetIdRef, focusWidget], [focusedWidgetIdRef, focusWidget]); | |
| 1906 | - return (0,external_wp_element_namespaceObject.createElement)(FocusControlContext.Provider, { | |
| 1907 | - value: context | |
| 1908 | - }, children); | |
| 1909 | -} | |
| 1910 | -const useFocusControl = () => (0,external_wp_element_namespaceObject.useContext)(FocusControlContext); | |
| 1911 | -//# sourceMappingURL=index.js.map | |
| 1912 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/focus-control/use-blocks-focus-control.js | |
| 1913 | -/** | |
| 1914 | - * WordPress dependencies | |
| 1915 | - */ | |
| 1916 | - | |
| 1917 | - | |
| 1918 | - | |
| 1919 | - | |
| 1920 | -/** | |
| 1921 | - * Internal dependencies | |
| 1922 | - */ | |
| 1923 | - | |
| 1924 | - | |
| 1925 | -function useBlocksFocusControl(blocks) { | |
| 1926 | - const { | |
| 1927 | - selectBlock | |
| 1928 | - } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); | |
| 1929 | - const [focusedWidgetIdRef] = useFocusControl(); | |
| 1930 | - const blocksRef = (0,external_wp_element_namespaceObject.useRef)(blocks); | |
| 1931 | - (0,external_wp_element_namespaceObject.useEffect)(() => { | |
| 1932 | - blocksRef.current = blocks; | |
| 1933 | - }, [blocks]); | |
| 1934 | - (0,external_wp_element_namespaceObject.useEffect)(() => { | |
| 1935 | - if (focusedWidgetIdRef.current) { | |
| 1936 | - const focusedBlock = blocksRef.current.find(block => (0,external_wp_widgets_namespaceObject.getWidgetIdFromBlock)(block) === focusedWidgetIdRef.current); | |
| 1937 | - | |
| 1938 | - if (focusedBlock) { | |
| 1939 | - selectBlock(focusedBlock.clientId); // If the block is already being selected, the DOM node won't | |
| 1940 | - // get focused again automatically. | |
| 1941 | - // We select the DOM and focus it manually here. | |
| 1942 | - | |
| 1943 | - const blockNode = document.querySelector(`[data-block="${focusedBlock.clientId}"]`); | |
| 1944 | - blockNode === null || blockNode === void 0 ? void 0 : blockNode.focus(); | |
| 1945 | - } | |
| 1946 | - } | |
| 1947 | - }, [focusedWidgetIdRef, selectBlock]); | |
| 1948 | -} | |
| 1949 | -//# sourceMappingURL=use-blocks-focus-control.js.map | |
| 1950 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/sidebar-block-editor/sidebar-editor-provider.js | |
| 1951 | - | |
| 1952 | - | |
| 1953 | -/** | |
| 1954 | - * WordPress dependencies | |
| 1955 | - */ | |
| 1956 | - | |
| 1957 | -/** | |
| 1958 | - * Internal dependencies | |
| 1959 | - */ | |
| 1960 | - | |
| 1961 | - | |
| 1962 | - | |
| 1963 | -function SidebarEditorProvider(_ref) { | |
| 1964 | - let { | |
| 1965 | - sidebar, | |
| 1966 | - settings, | |
| 1967 | - children | |
| 1968 | - } = _ref; | |
| 1969 | - const [blocks, onInput, onChange] = useSidebarBlockEditor(sidebar); | |
| 1970 | - useBlocksFocusControl(blocks); | |
| 1971 | - return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockEditorProvider, { | |
| 1972 | - value: blocks, | |
| 1973 | - onInput: onInput, | |
| 1974 | - onChange: onChange, | |
| 1975 | - settings: settings, | |
| 1976 | - useSubRegistry: false | |
| 1977 | - }, children); | |
| 1978 | -} | |
| 1979 | -//# sourceMappingURL=sidebar-editor-provider.js.map | |
| 1980 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/welcome-guide/index.js | |
| 1981 | - | |
| 1982 | - | |
| 1983 | -/** | |
| 1984 | - * WordPress dependencies | |
| 1985 | - */ | |
| 1986 | - | |
| 1987 | - | |
| 1988 | - | |
| 1989 | - | |
| 1990 | -function WelcomeGuide(_ref) { | |
| 1991 | - let { | |
| 1992 | - sidebar | |
| 1993 | - } = _ref; | |
| 1994 | - const { | |
| 1995 | - toggleFeature | |
| 1996 | - } = (0,external_wp_data_namespaceObject.useDispatch)(store); | |
| 1997 | - const isEntirelyBlockWidgets = sidebar.getWidgets().every(widget => widget.id.startsWith('block-')); | |
| 1998 | - return (0,external_wp_element_namespaceObject.createElement)("div", { | |
| 1999 | - className: "customize-widgets-welcome-guide" | |
| 2000 | - }, (0,external_wp_element_namespaceObject.createElement)("div", { | |
| 2001 | - className: "customize-widgets-welcome-guide__image__wrapper" | |
| 2002 | - }, (0,external_wp_element_namespaceObject.createElement)("picture", null, (0,external_wp_element_namespaceObject.createElement)("source", { | |
| 2003 | - srcSet: "https://s.w.org/images/block-editor/welcome-editor.svg", | |
| 2004 | - media: "(prefers-reduced-motion: reduce)" | |
| 2005 | - }), (0,external_wp_element_namespaceObject.createElement)("img", { | |
| 2006 | - className: "customize-widgets-welcome-guide__image", | |
| 2007 | - src: "https://s.w.org/images/block-editor/welcome-editor.gif", | |
| 2008 | - width: "312", | |
| 2009 | - height: "240", | |
| 2010 | - alt: "" | |
| 2011 | - }))), (0,external_wp_element_namespaceObject.createElement)("h1", { | |
| 2012 | - className: "customize-widgets-welcome-guide__heading" | |
| 2013 | - }, (0,external_wp_i18n_namespaceObject.__)('Welcome to block Widgets')), (0,external_wp_element_namespaceObject.createElement)("p", { | |
| 2014 | - className: "customize-widgets-welcome-guide__text" | |
| 2015 | - }, isEntirelyBlockWidgets ? (0,external_wp_i18n_namespaceObject.__)('Your theme provides different “block” areas for you to add and edit content. Try adding a search bar, social icons, or other types of blocks here and see how they’ll look on your site.') : (0,external_wp_i18n_namespaceObject.__)('You can now add any block to your site’s widget areas. Don’t worry, all of your favorite widgets still work flawlessly.')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { | |
| 2016 | - className: "customize-widgets-welcome-guide__button", | |
| 2017 | - variant: "primary", | |
| 2018 | - onClick: () => toggleFeature('core/customize-widgets', 'welcomeGuide') | |
| 2019 | - }, (0,external_wp_i18n_namespaceObject.__)('Got it')), (0,external_wp_element_namespaceObject.createElement)("hr", { | |
| 2020 | - className: "customize-widgets-welcome-guide__separator" | |
| 2021 | - }), !isEntirelyBlockWidgets && (0,external_wp_element_namespaceObject.createElement)("p", { | |
| 2022 | - className: "customize-widgets-welcome-guide__more-info" | |
| 2023 | - }, (0,external_wp_i18n_namespaceObject.__)('Want to stick with the old widgets?'), (0,external_wp_element_namespaceObject.createElement)("br", null), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ExternalLink, { | |
| 2024 | - href: (0,external_wp_i18n_namespaceObject.__)('https://wordpress.org/plugins/classic-widgets/') | |
| 2025 | - }, (0,external_wp_i18n_namespaceObject.__)('Get the Classic Widgets plugin.'))), (0,external_wp_element_namespaceObject.createElement)("p", { | |
| 2026 | - className: "customize-widgets-welcome-guide__more-info" | |
| 2027 | - }, (0,external_wp_i18n_namespaceObject.__)('New to the block editor?'), (0,external_wp_element_namespaceObject.createElement)("br", null), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ExternalLink, { | |
| 2028 | - href: (0,external_wp_i18n_namespaceObject.__)('https://wordpress.org/support/article/wordpress-editor/') | |
| 2029 | - }, (0,external_wp_i18n_namespaceObject.__)("Here's a detailed guide.")))); | |
| 2030 | -} | |
| 2031 | -//# sourceMappingURL=index.js.map | |
| 2032 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/keyboard-shortcuts/index.js | |
| 2033 | -/** | |
| 2034 | - * WordPress dependencies | |
| 2035 | - */ | |
| 2036 | - | |
| 2037 | - | |
| 2038 | - | |
| 2039 | - | |
| 2040 | - | |
| 2041 | -function KeyboardShortcuts(_ref) { | |
| 2042 | - let { | |
| 2043 | - undo, | |
| 2044 | - redo, | |
| 2045 | - save | |
| 2046 | - } = _ref; | |
| 2047 | - (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/customize-widgets/undo', event => { | |
| 2048 | - undo(); | |
| 2049 | - event.preventDefault(); | |
| 2050 | - }); | |
| 2051 | - (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/customize-widgets/redo', event => { | |
| 2052 | - redo(); | |
| 2053 | - event.preventDefault(); | |
| 2054 | - }); | |
| 2055 | - (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/customize-widgets/save', event => { | |
| 2056 | - event.preventDefault(); | |
| 2057 | - save(); | |
| 2058 | - }); | |
| 2059 | - return null; | |
| 2060 | -} | |
| 2061 | - | |
| 2062 | -function KeyboardShortcutsRegister() { | |
| 2063 | - const { | |
| 2064 | - registerShortcut, | |
| 2065 | - unregisterShortcut | |
| 2066 | - } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_keyboardShortcuts_namespaceObject.store); | |
| 2067 | - (0,external_wp_element_namespaceObject.useEffect)(() => { | |
| 2068 | - registerShortcut({ | |
| 2069 | - name: 'core/customize-widgets/undo', | |
| 2070 | - category: 'global', | |
| 2071 | - description: (0,external_wp_i18n_namespaceObject.__)('Undo your last changes.'), | |
| 2072 | - keyCombination: { | |
| 2073 | - modifier: 'primary', | |
| 2074 | - character: 'z' | |
| 2075 | - } | |
| 2076 | - }); | |
| 2077 | - registerShortcut({ | |
| 2078 | - name: 'core/customize-widgets/redo', | |
| 2079 | - category: 'global', | |
| 2080 | - description: (0,external_wp_i18n_namespaceObject.__)('Redo your last undo.'), | |
| 2081 | - keyCombination: { | |
| 2082 | - modifier: 'primaryShift', | |
| 2083 | - character: 'z' | |
| 2084 | - } | |
| 2085 | - }); | |
| 2086 | - registerShortcut({ | |
| 2087 | - name: 'core/customize-widgets/save', | |
| 2088 | - category: 'global', | |
| 2089 | - description: (0,external_wp_i18n_namespaceObject.__)('Save your changes.'), | |
| 2090 | - keyCombination: { | |
| 2091 | - modifier: 'primary', | |
| 2092 | - character: 's' | |
| 2093 | - } | |
| 2094 | - }); | |
| 2095 | - return () => { | |
| 2096 | - unregisterShortcut('core/customize-widgets/undo'); | |
| 2097 | - unregisterShortcut('core/customize-widgets/redo'); | |
| 2098 | - unregisterShortcut('core/customize-widgets/save'); | |
| 2099 | - }; | |
| 2100 | - }, [registerShortcut]); | |
| 2101 | - return null; | |
| 2102 | -} | |
| 2103 | - | |
| 2104 | -KeyboardShortcuts.Register = KeyboardShortcutsRegister; | |
| 2105 | -/* harmony default export */ var keyboard_shortcuts = (KeyboardShortcuts); | |
| 2106 | -//# sourceMappingURL=index.js.map | |
| 2107 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/block-appender/index.js | |
| 2108 | - | |
| 2109 | - | |
| 2110 | - | |
| 2111 | -/** | |
| 2112 | - * WordPress dependencies | |
| 2113 | - */ | |
| 2114 | - | |
| 2115 | - | |
| 2116 | - | |
| 2117 | -function BlockAppender(props) { | |
| 2118 | - const ref = (0,external_wp_element_namespaceObject.useRef)(); | |
| 2119 | - const isBlocksListEmpty = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getBlockCount() === 0); // Move the focus to the block appender to prevent focus from | |
| 2120 | - // being lost when emptying the widget area. | |
| 2121 | - | |
| 2122 | - (0,external_wp_element_namespaceObject.useEffect)(() => { | |
| 2123 | - if (isBlocksListEmpty && ref.current) { | |
| 2124 | - const { | |
| 2125 | - ownerDocument | |
| 2126 | - } = ref.current; | |
| 2127 | - | |
| 2128 | - if (!ownerDocument.activeElement || ownerDocument.activeElement === ownerDocument.body) { | |
| 2129 | - ref.current.focus(); | |
| 2130 | - } | |
| 2131 | - } | |
| 2132 | - }, [isBlocksListEmpty]); | |
| 2133 | - return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.ButtonBlockAppender, _extends({}, props, { | |
| 2134 | - ref: ref | |
| 2135 | - })); | |
| 2136 | -} | |
| 2137 | -//# sourceMappingURL=index.js.map | |
| 2138 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/sidebar-block-editor/index.js | |
| 2139 | - | |
| 2140 | - | |
| 2141 | -/** | |
| 2142 | - * External dependencies | |
| 2143 | - */ | |
| 2144 | - | |
| 2145 | -/** | |
| 2146 | - * WordPress dependencies | |
| 2147 | - */ | |
| 2148 | - | |
| 2149 | - | |
| 2150 | - | |
| 2151 | - | |
| 2152 | - | |
| 2153 | - | |
| 2154 | - | |
| 2155 | -/** | |
| 2156 | - * Internal dependencies | |
| 2157 | - */ | |
| 2158 | - | |
| 2159 | - | |
| 2160 | - | |
| 2161 | - | |
| 2162 | - | |
| 2163 | - | |
| 2164 | - | |
| 2165 | - | |
| 2166 | -function SidebarBlockEditor(_ref) { | |
| 2167 | - let { | |
| 2168 | - blockEditorSettings, | |
| 2169 | - sidebar, | |
| 2170 | - inserter, | |
| 2171 | - inspector | |
| 2172 | - } = _ref; | |
| 2173 | - const [isInserterOpened, setIsInserterOpened] = useInserter(inserter); | |
| 2174 | - const { | |
| 2175 | - hasUploadPermissions, | |
| 2176 | - isFixedToolbarActive, | |
| 2177 | - keepCaretInsideBlock, | |
| 2178 | - isWelcomeGuideActive | |
| 2179 | - } = (0,external_wp_data_namespaceObject.useSelect)(select => { | |
| 2180 | - const { | |
| 2181 | - isFeatureActive | |
| 2182 | - } = select(store); | |
| 2183 | - return { | |
| 2184 | - hasUploadPermissions: (0,external_lodash_namespaceObject.defaultTo)(select(external_wp_coreData_namespaceObject.store).canUser('create', 'media'), true), | |
| 2185 | - isFixedToolbarActive: isFeatureActive('core/customize-widgets', 'fixedToolbar'), | |
| 2186 | - keepCaretInsideBlock: isFeatureActive('core/customize-widgets', 'keepCaretInsideBlock'), | |
| 2187 | - isWelcomeGuideActive: isFeatureActive('core/customize-widgets', 'welcomeGuide') | |
| 2188 | - }; | |
| 2189 | - }, []); | |
| 2190 | - const settings = (0,external_wp_element_namespaceObject.useMemo)(() => { | |
| 2191 | - let mediaUploadBlockEditor; | |
| 2192 | - | |
| 2193 | - if (hasUploadPermissions) { | |
| 2194 | - mediaUploadBlockEditor = _ref2 => { | |
| 2195 | - let { | |
| 2196 | - onError, | |
| 2197 | - ...argumentsObject | |
| 2198 | - } = _ref2; | |
| 2199 | - (0,external_wp_mediaUtils_namespaceObject.uploadMedia)({ | |
| 2200 | - wpAllowedMimeTypes: blockEditorSettings.allowedMimeTypes, | |
| 2201 | - onError: _ref3 => { | |
| 2202 | - let { | |
| 2203 | - message | |
| 2204 | - } = _ref3; | |
| 2205 | - return onError(message); | |
| 2206 | - }, | |
| 2207 | - ...argumentsObject | |
| 2208 | - }); | |
| 2209 | - }; | |
| 2210 | - } | |
| 2211 | - | |
| 2212 | - return { ...blockEditorSettings, | |
| 2213 | - __experimentalSetIsInserterOpened: setIsInserterOpened, | |
| 2214 | - mediaUpload: mediaUploadBlockEditor, | |
| 2215 | - hasFixedToolbar: isFixedToolbarActive, | |
| 2216 | - keepCaretInsideBlock, | |
| 2217 | - __unstableHasCustomAppender: true | |
| 2218 | - }; | |
| 2219 | - }, [hasUploadPermissions, blockEditorSettings, isFixedToolbarActive, keepCaretInsideBlock, setIsInserterOpened]); | |
| 2220 | - | |
| 2221 | - if (isWelcomeGuideActive) { | |
| 2222 | - return (0,external_wp_element_namespaceObject.createElement)(WelcomeGuide, { | |
| 2223 | - sidebar: sidebar | |
| 2224 | - }); | |
| 2225 | - } | |
| 2226 | - | |
| 2227 | - return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockEditorKeyboardShortcuts.Register, null), (0,external_wp_element_namespaceObject.createElement)(keyboard_shortcuts.Register, null), (0,external_wp_element_namespaceObject.createElement)(SidebarEditorProvider, { | |
| 2228 | - sidebar: sidebar, | |
| 2229 | - settings: settings | |
| 2230 | - }, (0,external_wp_element_namespaceObject.createElement)(keyboard_shortcuts, { | |
| 2231 | - undo: sidebar.undo, | |
| 2232 | - redo: sidebar.redo, | |
| 2233 | - save: sidebar.save | |
| 2234 | - }), (0,external_wp_element_namespaceObject.createElement)(header, { | |
| 2235 | - sidebar: sidebar, | |
| 2236 | - inserter: inserter, | |
| 2237 | - isInserterOpened: isInserterOpened, | |
| 2238 | - setIsInserterOpened: setIsInserterOpened, | |
| 2239 | - isFixedToolbarActive: isFixedToolbarActive | |
| 2240 | - }), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.CopyHandler, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockTools, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableEditorStyles, { | |
| 2241 | - styles: settings.defaultEditorStyles | |
| 2242 | - }), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockSelectionClearer, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.WritingFlow, { | |
| 2243 | - className: "editor-styles-wrapper" | |
| 2244 | - }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.ObserveTyping, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockList, { | |
| 2245 | - renderAppender: BlockAppender | |
| 2246 | - })))))), (0,external_wp_element_namespaceObject.createPortal)( // This is a temporary hack to prevent button component inside <BlockInspector> | |
| 2247 | - // from submitting form when type="button" is not specified. | |
| 2248 | - (0,external_wp_element_namespaceObject.createElement)("form", { | |
| 2249 | - onSubmit: event => event.preventDefault() | |
| 2250 | - }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockInspector, null)), inspector.contentContainer[0])), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableBlockSettingsMenuFirstItem, null, _ref4 => { | |
| 2251 | - let { | |
| 2252 | - onClose | |
| 2253 | - } = _ref4; | |
| 2254 | - return (0,external_wp_element_namespaceObject.createElement)(block_inspector_button, { | |
| 2255 | - inspector: inspector, | |
| 2256 | - closeMenu: onClose | |
| 2257 | - }); | |
| 2258 | - })); | |
| 2259 | -} | |
| 2260 | -//# sourceMappingURL=index.js.map | |
| 2261 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/sidebar-controls/index.js | |
| 2262 | - | |
| 2263 | - | |
| 2264 | -/** | |
| 2265 | - * WordPress dependencies | |
| 2266 | - */ | |
| 2267 | - | |
| 2268 | -const SidebarControlsContext = (0,external_wp_element_namespaceObject.createContext)(); | |
| 2269 | -function SidebarControls(_ref) { | |
| 2270 | - let { | |
| 2271 | - sidebarControls, | |
| 2272 | - activeSidebarControl, | |
| 2273 | - children | |
| 2274 | - } = _ref; | |
| 2275 | - const context = (0,external_wp_element_namespaceObject.useMemo)(() => ({ | |
| 2276 | - sidebarControls, | |
| 2277 | - activeSidebarControl | |
| 2278 | - }), [sidebarControls, activeSidebarControl]); | |
| 2279 | - return (0,external_wp_element_namespaceObject.createElement)(SidebarControlsContext.Provider, { | |
| 2280 | - value: context | |
| 2281 | - }, children); | |
| 2282 | -} | |
| 2283 | -function useSidebarControls() { | |
| 2284 | - const { | |
| 2285 | - sidebarControls | |
| 2286 | - } = (0,external_wp_element_namespaceObject.useContext)(SidebarControlsContext); | |
| 2287 | - return sidebarControls; | |
| 2288 | -} | |
| 2289 | -function useActiveSidebarControl() { | |
| 2290 | - const { | |
| 2291 | - activeSidebarControl | |
| 2292 | - } = (0,external_wp_element_namespaceObject.useContext)(SidebarControlsContext); | |
| 2293 | - return activeSidebarControl; | |
| 2294 | -} | |
| 2295 | -//# sourceMappingURL=index.js.map | |
| 2296 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/customize-widgets/use-clear-selected-block.js | |
| 2297 | -/** | |
| 2298 | - * WordPress dependencies | |
| 2299 | - */ | |
| 2300 | - | |
| 2301 | - | |
| 2302 | - | |
| 2303 | -/** | |
| 2304 | - * We can't just use <BlockSelectionClearer> because the customizer has | |
| 2305 | - * many root nodes rather than just one in the post editor. | |
| 2306 | - * We need to listen to the focus events in all those roots, and also in | |
| 2307 | - * the preview iframe. | |
| 2308 | - * This hook will clear the selected block when focusing outside the editor, | |
| 2309 | - * with a few exceptions: | |
| 2310 | - * 1. Focusing on popovers. | |
| 2311 | - * 2. Focusing on the inspector. | |
| 2312 | - * 3. Focusing on any modals/dialogs. | |
| 2313 | - * These cases are normally triggered by user interactions from the editor, | |
| 2314 | - * not by explicitly focusing outside the editor, hence no need for clearing. | |
| 2315 | - * | |
| 2316 | - * @param {Object} sidebarControl The sidebar control instance. | |
| 2317 | - * @param {Object} popoverRef The ref object of the popover node container. | |
| 2318 | - */ | |
| 2319 | - | |
| 2320 | -function useClearSelectedBlock(sidebarControl, popoverRef) { | |
| 2321 | - const { | |
| 2322 | - hasSelectedBlock, | |
| 2323 | - hasMultiSelection | |
| 2324 | - } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); | |
| 2325 | - const { | |
| 2326 | - clearSelectedBlock | |
| 2327 | - } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); | |
| 2328 | - (0,external_wp_element_namespaceObject.useEffect)(() => { | |
| 2329 | - if (popoverRef.current && sidebarControl) { | |
| 2330 | - const inspector = sidebarControl.inspector; | |
| 2331 | - const container = sidebarControl.container[0]; | |
| 2332 | - const ownerDocument = container.ownerDocument; | |
| 2333 | - const ownerWindow = ownerDocument.defaultView; | |
| 2334 | - | |
| 2335 | - function handleClearSelectedBlock(element) { | |
| 2336 | - if ( // 1. Make sure there are blocks being selected. | |
| 2337 | - (hasSelectedBlock() || hasMultiSelection()) && // 2. The element should exist in the DOM (not deleted). | |
| 2338 | - element && ownerDocument.contains(element) && // 3. It should also not exist in the container, the popover, nor the dialog. | |
| 2339 | - !container.contains(element) && !popoverRef.current.contains(element) && !element.closest('[role="dialog"]') && // 4. The inspector should not be opened. | |
| 2340 | - !inspector.expanded()) { | |
| 2341 | - clearSelectedBlock(); | |
| 2342 | - } | |
| 2343 | - } // Handle mouse down in the same document. | |
| 2344 | - | |
| 2345 | - | |
| 2346 | - function handleMouseDown(event) { | |
| 2347 | - handleClearSelectedBlock(event.target); | |
| 2348 | - } // Handle focusing outside the current document, like to iframes. | |
| 2349 | - | |
| 2350 | - | |
| 2351 | - function handleBlur() { | |
| 2352 | - handleClearSelectedBlock(ownerDocument.activeElement); | |
| 2353 | - } | |
| 2354 | - | |
| 2355 | - ownerDocument.addEventListener('mousedown', handleMouseDown); | |
| 2356 | - ownerWindow.addEventListener('blur', handleBlur); | |
| 2357 | - return () => { | |
| 2358 | - ownerDocument.removeEventListener('mousedown', handleMouseDown); | |
| 2359 | - ownerWindow.removeEventListener('blur', handleBlur); | |
| 2360 | - }; | |
| 2361 | - } | |
| 2362 | - }, [popoverRef, sidebarControl, hasSelectedBlock, hasMultiSelection, clearSelectedBlock]); | |
| 2363 | -} | |
| 2364 | -//# sourceMappingURL=use-clear-selected-block.js.map | |
| 2365 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/customize-widgets/index.js | |
| 2366 | - | |
| 2367 | - | |
| 2368 | -/** | |
| 2369 | - * WordPress dependencies | |
| 2370 | - */ | |
| 2371 | - | |
| 2372 | - | |
| 2373 | - | |
| 2374 | -/** | |
| 2375 | - * Internal dependencies | |
| 2376 | - */ | |
| 2377 | - | |
| 2378 | - | |
| 2379 | - | |
| 2380 | - | |
| 2381 | - | |
| 2382 | - | |
| 2383 | -function CustomizeWidgets(_ref) { | |
| 2384 | - let { | |
| 2385 | - api, | |
| 2386 | - sidebarControls, | |
| 2387 | - blockEditorSettings | |
| 2388 | - } = _ref; | |
| 2389 | - const [activeSidebarControl, setActiveSidebarControl] = (0,external_wp_element_namespaceObject.useState)(null); | |
| 2390 | - const parentContainer = document.getElementById('customize-theme-controls'); | |
| 2391 | - const popoverRef = (0,external_wp_element_namespaceObject.useRef)(); | |
| 2392 | - useClearSelectedBlock(activeSidebarControl, popoverRef); | |
| 2393 | - (0,external_wp_element_namespaceObject.useEffect)(() => { | |
| 2394 | - const unsubscribers = sidebarControls.map(sidebarControl => sidebarControl.subscribe(expanded => { | |
| 2395 | - if (expanded) { | |
| 2396 | - setActiveSidebarControl(sidebarControl); | |
| 2397 | - } | |
| 2398 | - })); | |
| 2399 | - return () => { | |
| 2400 | - unsubscribers.forEach(unsubscriber => unsubscriber()); | |
| 2401 | - }; | |
| 2402 | - }, [sidebarControls]); | |
| 2403 | - const activeSidebar = activeSidebarControl && (0,external_wp_element_namespaceObject.createPortal)((0,external_wp_element_namespaceObject.createElement)(ErrorBoundary, null, (0,external_wp_element_namespaceObject.createElement)(SidebarBlockEditor, { | |
| 2404 | - key: activeSidebarControl.id, | |
| 2405 | - blockEditorSettings: blockEditorSettings, | |
| 2406 | - sidebar: activeSidebarControl.sidebarAdapter, | |
| 2407 | - inserter: activeSidebarControl.inserter, | |
| 2408 | - inspector: activeSidebarControl.inspector | |
| 2409 | - })), activeSidebarControl.container[0]); // We have to portal this to the parent of both the editor and the inspector, | |
| 2410 | - // so that the popovers will appear above both of them. | |
| 2411 | - | |
| 2412 | - const popover = parentContainer && (0,external_wp_element_namespaceObject.createPortal)((0,external_wp_element_namespaceObject.createElement)("div", { | |
| 2413 | - className: "customize-widgets-popover", | |
| 2414 | - ref: popoverRef | |
| 2415 | - }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Popover.Slot, null)), parentContainer); | |
| 2416 | - return (0,external_wp_element_namespaceObject.createElement)(external_wp_keyboardShortcuts_namespaceObject.ShortcutProvider, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.SlotFillProvider, null, (0,external_wp_element_namespaceObject.createElement)(SidebarControls, { | |
| 2417 | - sidebarControls: sidebarControls, | |
| 2418 | - activeSidebarControl: activeSidebarControl | |
| 2419 | - }, (0,external_wp_element_namespaceObject.createElement)(FocusControl, { | |
| 2420 | - api: api, | |
| 2421 | - sidebarControls: sidebarControls | |
| 2422 | - }, activeSidebar, popover)))); | |
| 2423 | -} | |
| 2424 | -//# sourceMappingURL=index.js.map | |
| 2425 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/controls/inspector-section.js | |
| 2426 | -function getInspectorSection() { | |
| 2427 | - const { | |
| 2428 | - wp: { | |
| 2429 | - customize | |
| 2430 | - } | |
| 2431 | - } = window; | |
| 2432 | - return class InspectorSection extends customize.Section { | |
| 2433 | - constructor(id, options) { | |
| 2434 | - super(id, options); | |
| 2435 | - this.parentSection = options.parentSection; | |
| 2436 | - this.returnFocusWhenClose = null; | |
| 2437 | - this._isOpen = false; | |
| 2438 | - } | |
| 2439 | - | |
| 2440 | - get isOpen() { | |
| 2441 | - return this._isOpen; | |
| 2442 | - } | |
| 2443 | - | |
| 2444 | - set isOpen(value) { | |
| 2445 | - this._isOpen = value; | |
| 2446 | - this.triggerActiveCallbacks(); | |
| 2447 | - } | |
| 2448 | - | |
| 2449 | - ready() { | |
| 2450 | - this.contentContainer[0].classList.add('customize-widgets-layout__inspector'); | |
| 2451 | - } | |
| 2452 | - | |
| 2453 | - isContextuallyActive() { | |
| 2454 | - return this.isOpen; | |
| 2455 | - } | |
| 2456 | - | |
| 2457 | - onChangeExpanded(expanded, args) { | |
| 2458 | - super.onChangeExpanded(expanded, args); | |
| 2459 | - | |
| 2460 | - if (this.parentSection && !args.unchanged) { | |
| 2461 | - if (expanded) { | |
| 2462 | - this.parentSection.collapse({ | |
| 2463 | - manualTransition: true | |
| 2464 | - }); | |
| 2465 | - } else { | |
| 2466 | - this.parentSection.expand({ | |
| 2467 | - manualTransition: true, | |
| 2468 | - completeCallback: () => { | |
| 2469 | - // Return focus after finishing the transition. | |
| 2470 | - if (this.returnFocusWhenClose && !this.contentContainer[0].contains(this.returnFocusWhenClose)) { | |
| 2471 | - this.returnFocusWhenClose.focus(); | |
| 2472 | - } | |
| 2473 | - } | |
| 2474 | - }); | |
| 2475 | - } | |
| 2476 | - } | |
| 2477 | - } | |
| 2478 | - | |
| 2479 | - open() { | |
| 2480 | - let { | |
| 2481 | - returnFocusWhenClose | |
| 2482 | - } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | |
| 2483 | - this.isOpen = true; | |
| 2484 | - this.returnFocusWhenClose = returnFocusWhenClose; | |
| 2485 | - this.expand({ | |
| 2486 | - allowMultiple: true | |
| 2487 | - }); | |
| 2488 | - } | |
| 2489 | - | |
| 2490 | - close() { | |
| 2491 | - this.collapse({ | |
| 2492 | - allowMultiple: true | |
| 2493 | - }); | |
| 2494 | - } | |
| 2495 | - | |
| 2496 | - collapse(options) { | |
| 2497 | - // Overridden collapse() function. Mostly call the parent collapse(), but also | |
| 2498 | - // move our .isOpen to false. | |
| 2499 | - // Initially, I tried tracking this with onChangeExpanded(), but it doesn't work | |
| 2500 | - // because the block settings sidebar is a layer "on top of" the G editor sidebar. | |
| 2501 | - // | |
| 2502 | - // For example, when closing the block settings sidebar, the G | |
| 2503 | - // editor sidebar would display, and onChangeExpanded in | |
| 2504 | - // inspector-section would run with expanded=true, but I want | |
| 2505 | - // isOpen to be false when the block settings is closed. | |
| 2506 | - this.isOpen = false; | |
| 2507 | - super.collapse(options); | |
| 2508 | - } | |
| 2509 | - | |
| 2510 | - triggerActiveCallbacks() { | |
| 2511 | - // Manually fire the callbacks associated with moving this.active | |
| 2512 | - // from false to true. "active" is always true for this section, | |
| 2513 | - // and "isContextuallyActive" reflects if the block settings | |
| 2514 | - // sidebar is currently visible, that is, it has replaced the main | |
| 2515 | - // Gutenberg view. | |
| 2516 | - // The WP customizer only checks ".isContextuallyActive()" when | |
| 2517 | - // ".active" changes values. But our ".active" never changes value. | |
| 2518 | - // The WP customizer never foresaw a section being used a way we | |
| 2519 | - // fit the block settings sidebar into a section. By manually | |
| 2520 | - // triggering the "this.active" callbacks, we force the WP | |
| 2521 | - // customizer to query our .isContextuallyActive() function and | |
| 2522 | - // update its view of our status. | |
| 2523 | - this.active.callbacks.fireWith(this.active, [false, true]); | |
| 2524 | - } | |
| 2525 | - | |
| 2526 | - }; | |
| 2527 | -} | |
| 2528 | -//# sourceMappingURL=inspector-section.js.map | |
| 2529 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/controls/sidebar-section.js | |
| 2530 | -/** | |
| 2531 | - * WordPress dependencies | |
| 2532 | - */ | |
| 2533 | - | |
| 2534 | -/** | |
| 2535 | - * Internal dependencies | |
| 2536 | - */ | |
| 2537 | - | |
| 2538 | - | |
| 2539 | - | |
| 2540 | -const getInspectorSectionId = sidebarId => `widgets-inspector-${sidebarId}`; | |
| 2541 | - | |
| 2542 | -function getSidebarSection() { | |
| 2543 | - const { | |
| 2544 | - wp: { | |
| 2545 | - customize | |
| 2546 | - } | |
| 2547 | - } = window; | |
| 2548 | - return class SidebarSection extends customize.Section { | |
| 2549 | - ready() { | |
| 2550 | - const InspectorSection = getInspectorSection(); | |
| 2551 | - this.inspector = new InspectorSection(getInspectorSectionId(this.id), { | |
| 2552 | - title: (0,external_wp_i18n_namespaceObject.__)('Block Settings'), | |
| 2553 | - parentSection: this, | |
| 2554 | - customizeAction: [(0,external_wp_i18n_namespaceObject.__)('Customizing'), (0,external_wp_i18n_namespaceObject.__)('Widgets'), this.params.title].join(' ▸ ') | |
| 2555 | - }); | |
| 2556 | - customize.section.add(this.inspector); | |
| 2557 | - this.contentContainer[0].classList.add('customize-widgets__sidebar-section'); | |
| 2558 | - } | |
| 2559 | - | |
| 2560 | - hasSubSectionOpened() { | |
| 2561 | - return this.inspector.expanded(); | |
| 2562 | - } | |
| 2563 | - | |
| 2564 | - onChangeExpanded(expanded, _args) { | |
| 2565 | - const controls = this.controls(); | |
| 2566 | - const args = { ..._args, | |
| 2567 | - | |
| 2568 | - completeCallback() { | |
| 2569 | - var _args$completeCallbac; | |
| 2570 | - | |
| 2571 | - controls.forEach(control => { | |
| 2572 | - var _control$onChangeSect; | |
| 2573 | - | |
| 2574 | - (_control$onChangeSect = control.onChangeSectionExpanded) === null || _control$onChangeSect === void 0 ? void 0 : _control$onChangeSect.call(control, expanded, args); | |
| 2575 | - }); | |
| 2576 | - (_args$completeCallbac = _args.completeCallback) === null || _args$completeCallbac === void 0 ? void 0 : _args$completeCallbac.call(_args); | |
| 2577 | - } | |
| 2578 | - | |
| 2579 | - }; | |
| 2580 | - | |
| 2581 | - if (args.manualTransition) { | |
| 2582 | - if (expanded) { | |
| 2583 | - this.contentContainer.addClass(['busy', 'open']); | |
| 2584 | - this.contentContainer.removeClass('is-sub-section-open'); | |
| 2585 | - this.contentContainer.closest('.wp-full-overlay').addClass('section-open'); | |
| 2586 | - this.contentContainer.one('transitionend', () => { | |
| 2587 | - this.contentContainer.removeClass('busy'); | |
| 2588 | - args.completeCallback(); | |
| 2589 | - }); | |
| 2590 | - } else { | |
| 2591 | - this.contentContainer.addClass(['busy', 'is-sub-section-open']); | |
| 2592 | - this.contentContainer.closest('.wp-full-overlay').addClass('section-open'); | |
| 2593 | - this.contentContainer.removeClass('open'); | |
| 2594 | - this.contentContainer.one('transitionend', () => { | |
| 2595 | - this.contentContainer.removeClass('busy'); | |
| 2596 | - args.completeCallback(); | |
| 2597 | - }); | |
| 2598 | - } | |
| 2599 | - } else { | |
| 2600 | - super.onChangeExpanded(expanded, args); | |
| 2601 | - } | |
| 2602 | - } | |
| 2603 | - | |
| 2604 | - }; | |
| 2605 | -} | |
| 2606 | -//# sourceMappingURL=sidebar-section.js.map | |
| 2607 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/components/sidebar-block-editor/sidebar-adapter.js | |
| 2608 | -/** | |
| 2609 | - * Internal dependencies | |
| 2610 | - */ | |
| 2611 | - | |
| 2612 | -const { | |
| 2613 | - wp | |
| 2614 | -} = window; | |
| 2615 | - | |
| 2616 | -function parseWidgetId(widgetId) { | |
| 2617 | - const matches = widgetId.match(/^(.+)-(\d+)$/); | |
| 2618 | - | |
| 2619 | - if (matches) { | |
| 2620 | - return { | |
| 2621 | - idBase: matches[1], | |
| 2622 | - number: parseInt(matches[2], 10) | |
| 2623 | - }; | |
| 2624 | - } // Likely an old single widget. | |
| 2625 | - | |
| 2626 | - | |
| 2627 | - return { | |
| 2628 | - idBase: widgetId | |
| 2629 | - }; | |
| 2630 | -} | |
| 2631 | - | |
| 2632 | -function widgetIdToSettingId(widgetId) { | |
| 2633 | - const { | |
| 2634 | - idBase, | |
| 2635 | - number | |
| 2636 | - } = parseWidgetId(widgetId); | |
| 2637 | - | |
| 2638 | - if (number) { | |
| 2639 | - return `widget_${idBase}[${number}]`; | |
| 2640 | - } | |
| 2641 | - | |
| 2642 | - return `widget_${idBase}`; | |
| 2643 | -} | |
| 2644 | -/** | |
| 2645 | - * This is a custom debounce function to call different callbacks depending on | |
| 2646 | - * whether it's the _leading_ call or not. | |
| 2647 | - * | |
| 2648 | - * @param {Function} leading The callback that gets called first. | |
| 2649 | - * @param {Function} callback The callback that gets called after the first time. | |
| 2650 | - * @param {number} timeout The debounced time in milliseconds. | |
| 2651 | - * @return {Function} The debounced function. | |
| 2652 | - */ | |
| 2653 | - | |
| 2654 | - | |
| 2655 | -function debounce(leading, callback, timeout) { | |
| 2656 | - let isLeading = false; | |
| 2657 | - let timerID; | |
| 2658 | - | |
| 2659 | - function debounced() { | |
| 2660 | - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { | |
| 2661 | - args[_key] = arguments[_key]; | |
| 2662 | - } | |
| 2663 | - | |
| 2664 | - const result = (isLeading ? callback : leading).apply(this, args); | |
| 2665 | - isLeading = true; | |
| 2666 | - clearTimeout(timerID); | |
| 2667 | - timerID = setTimeout(() => { | |
| 2668 | - isLeading = false; | |
| 2669 | - }, timeout); | |
| 2670 | - return result; | |
| 2671 | - } | |
| 2672 | - | |
| 2673 | - debounced.cancel = () => { | |
| 2674 | - isLeading = false; | |
| 2675 | - clearTimeout(timerID); | |
| 2676 | - }; | |
| 2677 | - | |
| 2678 | - return debounced; | |
| 2679 | -} | |
| 2680 | - | |
| 2681 | -class SidebarAdapter { | |
| 2682 | - constructor(setting, api) { | |
| 2683 | - this.setting = setting; | |
| 2684 | - this.api = api; | |
| 2685 | - this.locked = false; | |
| 2686 | - this.widgetsCache = new WeakMap(); | |
| 2687 | - this.subscribers = new Set(); | |
| 2688 | - this.history = [this._getWidgetIds().map(widgetId => this.getWidget(widgetId))]; | |
| 2689 | - this.historyIndex = 0; | |
| 2690 | - this.historySubscribers = new Set(); // Debounce the input for 1 second. | |
| 2691 | - | |
| 2692 | - this._debounceSetHistory = debounce(this._pushHistory, this._replaceHistory, 1000); | |
| 2693 | - this.setting.bind(this._handleSettingChange.bind(this)); | |
| 2694 | - this.api.bind('change', this._handleAllSettingsChange.bind(this)); | |
| 2695 | - this.undo = this.undo.bind(this); | |
| 2696 | - this.redo = this.redo.bind(this); | |
| 2697 | - this.save = this.save.bind(this); | |
| 2698 | - } | |
| 2699 | - | |
| 2700 | - subscribe(callback) { | |
| 2701 | - this.subscribers.add(callback); | |
| 2702 | - return () => { | |
| 2703 | - this.subscribers.delete(callback); | |
| 2704 | - }; | |
| 2705 | - } | |
| 2706 | - | |
| 2707 | - getWidgets() { | |
| 2708 | - return this.history[this.historyIndex]; | |
| 2709 | - } | |
| 2710 | - | |
| 2711 | - _emit() { | |
| 2712 | - for (const callback of this.subscribers) { | |
| 2713 | - callback(...arguments); | |
| 2714 | - } | |
| 2715 | - } | |
| 2716 | - | |
| 2717 | - _getWidgetIds() { | |
| 2718 | - return this.setting.get(); | |
| 2719 | - } | |
| 2720 | - | |
| 2721 | - _pushHistory() { | |
| 2722 | - this.history = [...this.history.slice(0, this.historyIndex + 1), this._getWidgetIds().map(widgetId => this.getWidget(widgetId))]; | |
| 2723 | - this.historyIndex += 1; | |
| 2724 | - this.historySubscribers.forEach(listener => listener()); | |
| 2725 | - } | |
| 2726 | - | |
| 2727 | - _replaceHistory() { | |
| 2728 | - this.history[this.historyIndex] = this._getWidgetIds().map(widgetId => this.getWidget(widgetId)); | |
| 2729 | - } | |
| 2730 | - | |
| 2731 | - _handleSettingChange() { | |
| 2732 | - if (this.locked) { | |
| 2733 | - return; | |
| 2734 | - } | |
| 2735 | - | |
| 2736 | - const prevWidgets = this.getWidgets(); | |
| 2737 | - | |
| 2738 | - this._pushHistory(); | |
| 2739 | - | |
| 2740 | - this._emit(prevWidgets, this.getWidgets()); | |
| 2741 | - } | |
| 2742 | - | |
| 2743 | - _handleAllSettingsChange(setting) { | |
| 2744 | - if (this.locked) { | |
| 2745 | - return; | |
| 2746 | - } | |
| 2747 | - | |
| 2748 | - if (!setting.id.startsWith('widget_')) { | |
| 2749 | - return; | |
| 2750 | - } | |
| 2751 | - | |
| 2752 | - const widgetId = settingIdToWidgetId(setting.id); | |
| 2753 | - | |
| 2754 | - if (!this.setting.get().includes(widgetId)) { | |
| 2755 | - return; | |
| 2756 | - } | |
| 2757 | - | |
| 2758 | - const prevWidgets = this.getWidgets(); | |
| 2759 | - | |
| 2760 | - this._pushHistory(); | |
| 2761 | - | |
| 2762 | - this._emit(prevWidgets, this.getWidgets()); | |
| 2763 | - } | |
| 2764 | - | |
| 2765 | - _createWidget(widget) { | |
| 2766 | - const widgetModel = wp.customize.Widgets.availableWidgets.findWhere({ | |
| 2767 | - id_base: widget.idBase | |
| 2768 | - }); | |
| 2769 | - let number = widget.number; | |
| 2770 | - | |
| 2771 | - if (widgetModel.get('is_multi') && !number) { | |
| 2772 | - widgetModel.set('multi_number', widgetModel.get('multi_number') + 1); | |
| 2773 | - number = widgetModel.get('multi_number'); | |
| 2774 | - } | |
| 2775 | - | |
| 2776 | - const settingId = number ? `widget_${widget.idBase}[${number}]` : `widget_${widget.idBase}`; | |
| 2777 | - const settingArgs = { | |
| 2778 | - transport: wp.customize.Widgets.data.selectiveRefreshableWidgets[widgetModel.get('id_base')] ? 'postMessage' : 'refresh', | |
| 2779 | - previewer: this.setting.previewer | |
| 2780 | - }; | |
| 2781 | - const setting = this.api.create(settingId, settingId, '', settingArgs); | |
| 2782 | - setting.set(widget.instance); | |
| 2783 | - const widgetId = settingIdToWidgetId(settingId); | |
| 2784 | - return widgetId; | |
| 2785 | - } | |
| 2786 | - | |
| 2787 | - _removeWidget(widget) { | |
| 2788 | - const settingId = widgetIdToSettingId(widget.id); | |
| 2789 | - const setting = this.api(settingId); | |
| 2790 | - | |
| 2791 | - if (setting) { | |
| 2792 | - const instance = setting.get(); | |
| 2793 | - this.widgetsCache.delete(instance); | |
| 2794 | - } | |
| 2795 | - | |
| 2796 | - this.api.remove(settingId); | |
| 2797 | - } | |
| 2798 | - | |
| 2799 | - _updateWidget(widget) { | |
| 2800 | - const prevWidget = this.getWidget(widget.id); // Bail out update if nothing changed. | |
| 2801 | - | |
| 2802 | - if (prevWidget === widget) { | |
| 2803 | - return widget.id; | |
| 2804 | - } // Update existing setting if only the widget's instance changed. | |
| 2805 | - | |
| 2806 | - | |
| 2807 | - if (prevWidget.idBase && widget.idBase && prevWidget.idBase === widget.idBase) { | |
| 2808 | - const settingId = widgetIdToSettingId(widget.id); | |
| 2809 | - this.api(settingId).set(widget.instance); | |
| 2810 | - return widget.id; | |
| 2811 | - } // Otherwise delete and re-create. | |
| 2812 | - | |
| 2813 | - | |
| 2814 | - this._removeWidget(widget); | |
| 2815 | - | |
| 2816 | - return this._createWidget(widget); | |
| 2817 | - } | |
| 2818 | - | |
| 2819 | - getWidget(widgetId) { | |
| 2820 | - if (!widgetId) { | |
| 2821 | - return null; | |
| 2822 | - } | |
| 2823 | - | |
| 2824 | - const { | |
| 2825 | - idBase, | |
| 2826 | - number | |
| 2827 | - } = parseWidgetId(widgetId); | |
| 2828 | - const settingId = widgetIdToSettingId(widgetId); | |
| 2829 | - const setting = this.api(settingId); | |
| 2830 | - | |
| 2831 | - if (!setting) { | |
| 2832 | - return null; | |
| 2833 | - } | |
| 2834 | - | |
| 2835 | - const instance = setting.get(); | |
| 2836 | - | |
| 2837 | - if (this.widgetsCache.has(instance)) { | |
| 2838 | - return this.widgetsCache.get(instance); | |
| 2839 | - } | |
| 2840 | - | |
| 2841 | - const widget = { | |
| 2842 | - id: widgetId, | |
| 2843 | - idBase, | |
| 2844 | - number, | |
| 2845 | - instance | |
| 2846 | - }; | |
| 2847 | - this.widgetsCache.set(instance, widget); | |
| 2848 | - return widget; | |
| 2849 | - } | |
| 2850 | - | |
| 2851 | - _updateWidgets(nextWidgets) { | |
| 2852 | - this.locked = true; | |
| 2853 | - const addedWidgetIds = []; | |
| 2854 | - const nextWidgetIds = nextWidgets.map(nextWidget => { | |
| 2855 | - if (nextWidget.id && this.getWidget(nextWidget.id)) { | |
| 2856 | - addedWidgetIds.push(null); | |
| 2857 | - return this._updateWidget(nextWidget); | |
| 2858 | - } | |
| 2859 | - | |
| 2860 | - const widgetId = this._createWidget(nextWidget); | |
| 2861 | - | |
| 2862 | - addedWidgetIds.push(widgetId); | |
| 2863 | - return widgetId; | |
| 2864 | - }); | |
| 2865 | - const deletedWidgets = this.getWidgets().filter(widget => !nextWidgetIds.includes(widget.id)); | |
| 2866 | - deletedWidgets.forEach(widget => this._removeWidget(widget)); | |
| 2867 | - this.setting.set(nextWidgetIds); | |
| 2868 | - this.locked = false; | |
| 2869 | - return addedWidgetIds; | |
| 2870 | - } | |
| 2871 | - | |
| 2872 | - setWidgets(nextWidgets) { | |
| 2873 | - const addedWidgetIds = this._updateWidgets(nextWidgets); | |
| 2874 | - | |
| 2875 | - this._debounceSetHistory(); | |
| 2876 | - | |
| 2877 | - return addedWidgetIds; | |
| 2878 | - } | |
| 2879 | - /** | |
| 2880 | - * Undo/Redo related features | |
| 2881 | - */ | |
| 2882 | - | |
| 2883 | - | |
| 2884 | - hasUndo() { | |
| 2885 | - return this.historyIndex > 0; | |
| 2886 | - } | |
| 2887 | - | |
| 2888 | - hasRedo() { | |
| 2889 | - return this.historyIndex < this.history.length - 1; | |
| 2890 | - } | |
| 2891 | - | |
| 2892 | - _seek(historyIndex) { | |
| 2893 | - const currentWidgets = this.getWidgets(); | |
| 2894 | - this.historyIndex = historyIndex; | |
| 2895 | - const widgets = this.history[this.historyIndex]; | |
| 2896 | - | |
| 2897 | - this._updateWidgets(widgets); | |
| 2898 | - | |
| 2899 | - this._emit(currentWidgets, this.getWidgets()); | |
| 2900 | - | |
| 2901 | - this.historySubscribers.forEach(listener => listener()); | |
| 2902 | - | |
| 2903 | - this._debounceSetHistory.cancel(); | |
| 2904 | - } | |
| 2905 | - | |
| 2906 | - undo() { | |
| 2907 | - if (!this.hasUndo()) { | |
| 2908 | - return; | |
| 2909 | - } | |
| 2910 | - | |
| 2911 | - this._seek(this.historyIndex - 1); | |
| 2912 | - } | |
| 2913 | - | |
| 2914 | - redo() { | |
| 2915 | - if (!this.hasRedo()) { | |
| 2916 | - return; | |
| 2917 | - } | |
| 2918 | - | |
| 2919 | - this._seek(this.historyIndex + 1); | |
| 2920 | - } | |
| 2921 | - | |
| 2922 | - subscribeHistory(listener) { | |
| 2923 | - this.historySubscribers.add(listener); | |
| 2924 | - return () => { | |
| 2925 | - this.historySubscribers.delete(listener); | |
| 2926 | - }; | |
| 2927 | - } | |
| 2928 | - | |
| 2929 | - save() { | |
| 2930 | - this.api.previewer.save(); | |
| 2931 | - } | |
| 2932 | - | |
| 2933 | -} | |
| 2934 | -//# sourceMappingURL=sidebar-adapter.js.map | |
| 2935 | -;// CONCATENATED MODULE: external ["wp","dom"] | |
| 2936 | -var external_wp_dom_namespaceObject = window["wp"]["dom"]; | |
| 2937 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/controls/inserter-outer-section.js | |
| 2938 | -/** | |
| 2939 | - * WordPress dependencies | |
| 2940 | - */ | |
| 2941 | - | |
| 2942 | - | |
| 2943 | - | |
| 2944 | -/** | |
| 2945 | - * Internal dependencies | |
| 2946 | - */ | |
| 2947 | - | |
| 2948 | - | |
| 2949 | -function getInserterOuterSection() { | |
| 2950 | - const { | |
| 2951 | - wp: { | |
| 2952 | - customize | |
| 2953 | - } | |
| 2954 | - } = window; | |
| 2955 | - const OuterSection = customize.OuterSection; // Override the OuterSection class to handle multiple outer sections. | |
| 2956 | - // It closes all the other outer sections whenever one is opened. | |
| 2957 | - // The result is that at most one outer section can be opened at the same time. | |
| 2958 | - | |
| 2959 | - customize.OuterSection = class extends OuterSection { | |
| 2960 | - onChangeExpanded(expanded, args) { | |
| 2961 | - if (expanded) { | |
| 2962 | - customize.section.each(section => { | |
| 2963 | - if (section.params.type === 'outer' && section.id !== this.id) { | |
| 2964 | - if (section.expanded()) { | |
| 2965 | - section.collapse(); | |
| 2966 | - } | |
| 2967 | - } | |
| 2968 | - }); | |
| 2969 | - } | |
| 2970 | - | |
| 2971 | - return super.onChangeExpanded(expanded, args); | |
| 2972 | - } | |
| 2973 | - | |
| 2974 | - }; // Handle constructor so that "params.type" can be correctly pointed to "outer". | |
| 2975 | - | |
| 2976 | - customize.sectionConstructor.outer = customize.OuterSection; | |
| 2977 | - return class InserterOuterSection extends customize.OuterSection { | |
| 2978 | - constructor() { | |
| 2979 | - super(...arguments); // This is necessary since we're creating a new class which is not identical to the original OuterSection. | |
| 2980 | - // @See https://github.com/WordPress/wordpress-develop/blob/42b05c397c50d9dc244083eff52991413909d4bd/src/js/_enqueues/wp/customize/controls.js#L1427-L1436 | |
| 2981 | - | |
| 2982 | - this.params.type = 'outer'; | |
| 2983 | - this.activeElementBeforeExpanded = null; | |
| 2984 | - const ownerWindow = this.contentContainer[0].ownerDocument.defaultView; // Handle closing the inserter when pressing the Escape key. | |
| 2985 | - | |
| 2986 | - ownerWindow.addEventListener('keydown', event => { | |
| 2987 | - if (this.expanded() && (event.keyCode === external_wp_keycodes_namespaceObject.ESCAPE || event.code === 'Escape') && !event.defaultPrevented) { | |
| 2988 | - event.preventDefault(); | |
| 2989 | - event.stopPropagation(); | |
| 2990 | - (0,external_wp_data_namespaceObject.dispatch)(store_store).setIsInserterOpened(false); | |
| 2991 | - } | |
| 2992 | - }, // Use capture mode to make this run before other event listeners. | |
| 2993 | - true); | |
| 2994 | - this.contentContainer.addClass('widgets-inserter'); // Set a flag if the state is being changed from open() or close(). | |
| 2995 | - // Don't propagate the event if it's an internal action to prevent infinite loop. | |
| 2996 | - | |
| 2997 | - this.isFromInternalAction = false; | |
| 2998 | - this.expanded.bind(() => { | |
| 2999 | - if (!this.isFromInternalAction) { | |
| 3000 | - // Propagate the event to React to sync the state. | |
| 3001 | - (0,external_wp_data_namespaceObject.dispatch)(store_store).setIsInserterOpened(this.expanded()); | |
| 3002 | - } | |
| 3003 | - | |
| 3004 | - this.isFromInternalAction = false; | |
| 3005 | - }); | |
| 3006 | - } | |
| 3007 | - | |
| 3008 | - open() { | |
| 3009 | - if (!this.expanded()) { | |
| 3010 | - const contentContainer = this.contentContainer[0]; | |
| 3011 | - this.activeElementBeforeExpanded = contentContainer.ownerDocument.activeElement; | |
| 3012 | - this.isFromInternalAction = true; | |
| 3013 | - this.expand({ | |
| 3014 | - completeCallback() { | |
| 3015 | - // We have to do this in a "completeCallback" or else the elements will not yet be visible/tabbable. | |
| 3016 | - // The first one should be the close button, | |
| 3017 | - // we want to skip it and choose the second one instead, which is the search box. | |
| 3018 | - const searchBox = external_wp_dom_namespaceObject.focus.tabbable.find(contentContainer)[1]; | |
| 3019 | - | |
| 3020 | - if (searchBox) { | |
| 3021 | - searchBox.focus(); | |
| 3022 | - } | |
| 3023 | - } | |
| 3024 | - | |
| 3025 | - }); | |
| 3026 | - } | |
| 3027 | - } | |
| 3028 | - | |
| 3029 | - close() { | |
| 3030 | - if (this.expanded()) { | |
| 3031 | - const contentContainer = this.contentContainer[0]; | |
| 3032 | - const activeElement = contentContainer.ownerDocument.activeElement; | |
| 3033 | - this.isFromInternalAction = true; | |
| 3034 | - this.collapse({ | |
| 3035 | - completeCallback() { | |
| 3036 | - // Return back the focus when closing the inserter. | |
| 3037 | - // Only do this if the active element which triggers the action is inside the inserter, | |
| 3038 | - // (the close button for instance). In that case the focus will be lost. | |
| 3039 | - // Otherwise, we don't hijack the focus when the user is focusing on other elements | |
| 3040 | - // (like the quick inserter). | |
| 3041 | - if (contentContainer.contains(activeElement)) { | |
| 3042 | - // Return back the focus when closing the inserter. | |
| 3043 | - if (this.activeElementBeforeExpanded) { | |
| 3044 | - this.activeElementBeforeExpanded.focus(); | |
| 3045 | - } | |
| 3046 | - } | |
| 3047 | - } | |
| 3048 | - | |
| 3049 | - }); | |
| 3050 | - } | |
| 3051 | - } | |
| 3052 | - | |
| 3053 | - }; | |
| 3054 | -} | |
| 3055 | -//# sourceMappingURL=inserter-outer-section.js.map | |
| 3056 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/controls/sidebar-control.js | |
| 3057 | -/** | |
| 3058 | - * WordPress dependencies | |
| 3059 | - */ | |
| 3060 | - | |
| 3061 | -/** | |
| 3062 | - * Internal dependencies | |
| 3063 | - */ | |
| 3064 | - | |
| 3065 | - | |
| 3066 | - | |
| 3067 | - | |
| 3068 | - | |
| 3069 | -const getInserterId = controlId => `widgets-inserter-${controlId}`; | |
| 3070 | - | |
| 3071 | -function getSidebarControl() { | |
| 3072 | - const { | |
| 3073 | - wp: { | |
| 3074 | - customize | |
| 3075 | - } | |
| 3076 | - } = window; | |
| 3077 | - return class SidebarControl extends customize.Control { | |
| 3078 | - constructor() { | |
| 3079 | - super(...arguments); | |
| 3080 | - this.subscribers = new Set(); | |
| 3081 | - } | |
| 3082 | - | |
| 3083 | - ready() { | |
| 3084 | - const InserterOuterSection = getInserterOuterSection(); | |
| 3085 | - this.inserter = new InserterOuterSection(getInserterId(this.id), {}); | |
| 3086 | - customize.section.add(this.inserter); | |
| 3087 | - this.sectionInstance = customize.section(this.section()); | |
| 3088 | - this.inspector = this.sectionInstance.inspector; | |
| 3089 | - this.sidebarAdapter = new SidebarAdapter(this.setting, customize); | |
| 3090 | - } | |
| 3091 | - | |
| 3092 | - subscribe(callback) { | |
| 3093 | - this.subscribers.add(callback); | |
| 3094 | - return () => { | |
| 3095 | - this.subscribers.delete(callback); | |
| 3096 | - }; | |
| 3097 | - } | |
| 3098 | - | |
| 3099 | - onChangeSectionExpanded(expanded, args) { | |
| 3100 | - if (!args.unchanged) { | |
| 3101 | - // Close the inserter when the section collapses. | |
| 3102 | - if (!expanded) { | |
| 3103 | - (0,external_wp_data_namespaceObject.dispatch)(store_store).setIsInserterOpened(false); | |
| 3104 | - } | |
| 3105 | - | |
| 3106 | - this.subscribers.forEach(subscriber => subscriber(expanded, args)); | |
| 3107 | - } | |
| 3108 | - } | |
| 3109 | - | |
| 3110 | - }; | |
| 3111 | -} | |
| 3112 | -//# sourceMappingURL=sidebar-control.js.map | |
| 3113 | -;// CONCATENATED MODULE: external ["wp","hooks"] | |
| 3114 | -var external_wp_hooks_namespaceObject = window["wp"]["hooks"]; | |
| 3115 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/filters/move-to-sidebar.js | |
| 3116 | - | |
| 3117 | - | |
| 3118 | -/** | |
| 3119 | - * External dependencies | |
| 3120 | - */ | |
| 3121 | - | |
| 3122 | -/** | |
| 3123 | - * WordPress dependencies | |
| 3124 | - */ | |
| 3125 | - | |
| 3126 | - | |
| 3127 | - | |
| 3128 | - | |
| 3129 | - | |
| 3130 | - | |
| 3131 | -/** | |
| 3132 | - * Internal dependencies | |
| 3133 | - */ | |
| 3134 | - | |
| 3135 | - | |
| 3136 | - | |
| 3137 | - | |
| 3138 | -const withMoveToSidebarToolbarItem = (0,external_wp_compose_namespaceObject.createHigherOrderComponent)(BlockEdit => props => { | |
| 3139 | - let widgetId = (0,external_wp_widgets_namespaceObject.getWidgetIdFromBlock)(props); | |
| 3140 | - const sidebarControls = useSidebarControls(); | |
| 3141 | - const activeSidebarControl = useActiveSidebarControl(); | |
| 3142 | - const hasMultipleSidebars = (sidebarControls === null || sidebarControls === void 0 ? void 0 : sidebarControls.length) > 1; | |
| 3143 | - const blockName = props.name; | |
| 3144 | - const clientId = props.clientId; | |
| 3145 | - const canInsertBlockInSidebar = (0,external_wp_data_namespaceObject.useSelect)(select => { | |
| 3146 | - // Use an empty string to represent the root block list, which | |
| 3147 | - // in the customizer editor represents a sidebar/widget area. | |
| 3148 | - return select(external_wp_blockEditor_namespaceObject.store).canInsertBlockType(blockName, ''); | |
| 3149 | - }, [blockName]); | |
| 3150 | - const block = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getBlock(clientId), [clientId]); | |
| 3151 | - const { | |
| 3152 | - removeBlock | |
| 3153 | - } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); | |
| 3154 | - const [, focusWidget] = useFocusControl(); | |
| 3155 | - | |
| 3156 | - function moveToSidebar(sidebarControlId) { | |
| 3157 | - const newSidebarControl = sidebarControls.find(sidebarControl => sidebarControl.id === sidebarControlId); | |
| 3158 | - | |
| 3159 | - if (widgetId) { | |
| 3160 | - /** | |
| 3161 | - * If there's a widgetId, move it to the other sidebar. | |
| 3162 | - */ | |
| 3163 | - const oldSetting = activeSidebarControl.setting; | |
| 3164 | - const newSetting = newSidebarControl.setting; | |
| 3165 | - oldSetting((0,external_lodash_namespaceObject.without)(oldSetting(), widgetId)); | |
| 3166 | - newSetting([...newSetting(), widgetId]); | |
| 3167 | - } else { | |
| 3168 | - /** | |
| 3169 | - * If there isn't a widgetId, it's most likely a inner block. | |
| 3170 | - * First, remove the block in the original sidebar, | |
| 3171 | - * then, create a new widget in the new sidebar and get back its widgetId. | |
| 3172 | - */ | |
| 3173 | - const sidebarAdapter = newSidebarControl.sidebarAdapter; | |
| 3174 | - removeBlock(clientId); | |
| 3175 | - const addedWidgetIds = sidebarAdapter.setWidgets([...sidebarAdapter.getWidgets(), blockToWidget(block)]); // The last non-null id is the added widget's id. | |
| 3176 | - | |
| 3177 | - widgetId = addedWidgetIds.reverse().find(id => !!id); | |
| 3178 | - } // Move focus to the moved widget and expand the sidebar. | |
| 3179 | - | |
| 3180 | - | |
| 3181 | - focusWidget(widgetId); | |
| 3182 | - } | |
| 3183 | - | |
| 3184 | - return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(BlockEdit, props), hasMultipleSidebars && canInsertBlockInSidebar && (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockControls, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_widgets_namespaceObject.MoveToWidgetArea, { | |
| 3185 | - widgetAreas: sidebarControls.map(sidebarControl => ({ | |
| 3186 | - id: sidebarControl.id, | |
| 3187 | - name: sidebarControl.params.label, | |
| 3188 | - description: sidebarControl.params.description | |
| 3189 | - })), | |
| 3190 | - currentWidgetAreaId: activeSidebarControl === null || activeSidebarControl === void 0 ? void 0 : activeSidebarControl.id, | |
| 3191 | - onSelect: moveToSidebar | |
| 3192 | - }))); | |
| 3193 | -}, 'withMoveToSidebarToolbarItem'); | |
| 3194 | -(0,external_wp_hooks_namespaceObject.addFilter)('editor.BlockEdit', 'core/customize-widgets/block-edit', withMoveToSidebarToolbarItem); | |
| 3195 | -//# sourceMappingURL=move-to-sidebar.js.map | |
| 3196 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/filters/replace-media-upload.js | |
| 3197 | -/** | |
| 3198 | - * WordPress dependencies | |
| 3199 | - */ | |
| 3200 | - | |
| 3201 | - | |
| 3202 | - | |
| 3203 | -const replaceMediaUpload = () => external_wp_mediaUtils_namespaceObject.MediaUpload; | |
| 3204 | - | |
| 3205 | -(0,external_wp_hooks_namespaceObject.addFilter)('editor.MediaUpload', 'core/edit-widgets/replace-media-upload', replaceMediaUpload); | |
| 3206 | -//# sourceMappingURL=replace-media-upload.js.map | |
| 3207 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/filters/wide-widget-display.js | |
| 3208 | - | |
| 3209 | - | |
| 3210 | - | |
| 3211 | -/** | |
| 3212 | - * WordPress dependencies | |
| 3213 | - */ | |
| 3214 | - | |
| 3215 | - | |
| 3216 | -const { | |
| 3217 | - wp: wide_widget_display_wp | |
| 3218 | -} = window; | |
| 3219 | -const withWideWidgetDisplay = (0,external_wp_compose_namespaceObject.createHigherOrderComponent)(BlockEdit => props => { | |
| 3220 | - var _wp$customize$Widgets, _wp$customize$Widgets2; | |
| 3221 | - | |
| 3222 | - const { | |
| 3223 | - idBase | |
| 3224 | - } = props.attributes; | |
| 3225 | - const isWide = (_wp$customize$Widgets = (_wp$customize$Widgets2 = wide_widget_display_wp.customize.Widgets.data.availableWidgets.find(widget => widget.id_base === idBase)) === null || _wp$customize$Widgets2 === void 0 ? void 0 : _wp$customize$Widgets2.is_wide) !== null && _wp$customize$Widgets !== void 0 ? _wp$customize$Widgets : false; | |
| 3226 | - return (0,external_wp_element_namespaceObject.createElement)(BlockEdit, _extends({}, props, { | |
| 3227 | - isWide: isWide | |
| 3228 | - })); | |
| 3229 | -}, 'withWideWidgetDisplay'); | |
| 3230 | -(0,external_wp_hooks_namespaceObject.addFilter)('editor.BlockEdit', 'core/customize-widgets/wide-widget-display', withWideWidgetDisplay); | |
| 3231 | -//# sourceMappingURL=wide-widget-display.js.map | |
| 3232 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/filters/index.js | |
| 3233 | -/** | |
| 3234 | - * Internal dependencies | |
| 3235 | - */ | |
| 3236 | - | |
| 3237 | - | |
| 3238 | - | |
| 3239 | -//# sourceMappingURL=index.js.map | |
| 3240 | -;// CONCATENATED MODULE: ./packages/customize-widgets/build-module/index.js | |
| 3241 | - | |
| 3242 | - | |
| 3243 | -/** | |
| 3244 | - * WordPress dependencies | |
| 3245 | - */ | |
| 3246 | - | |
| 3247 | - | |
| 3248 | - | |
| 3249 | - | |
| 3250 | - | |
| 3251 | - | |
| 3252 | -/** | |
| 3253 | - * Internal dependencies | |
| 3254 | - */ | |
| 3255 | - | |
| 3256 | - | |
| 3257 | - | |
| 3258 | - | |
| 3259 | - | |
| 3260 | -const { | |
| 3261 | - wp: build_module_wp | |
| 3262 | -} = window; | |
| 3263 | -const DISABLED_BLOCKS = ['core/more', 'core/block', 'core/freeform', 'core/template-part']; | |
| 3264 | -const ENABLE_EXPERIMENTAL_FSE_BLOCKS = false; | |
| 3265 | -/** | |
| 3266 | - * Initializes the widgets block editor in the customizer. | |
| 3267 | - * | |
| 3268 | - * @param {string} editorName The editor name. | |
| 3269 | - * @param {Object} blockEditorSettings Block editor settings. | |
| 3270 | - */ | |
| 3271 | - | |
| 3272 | -function initialize(editorName, blockEditorSettings) { | |
| 3273 | - (0,external_wp_data_namespaceObject.dispatch)(store).setFeatureDefaults('core/customize-widgets', { | |
| 3274 | - fixedToolbar: false, | |
| 3275 | - welcomeGuide: true | |
| 3276 | - }); | |
| 3277 | - | |
| 3278 | - (0,external_wp_data_namespaceObject.dispatch)(external_wp_blocks_namespaceObject.store).__experimentalReapplyBlockTypeFilters(); | |
| 3279 | - | |
| 3280 | - const coreBlocks = (0,external_wp_blockLibrary_namespaceObject.__experimentalGetCoreBlocks)().filter(block => { | |
| 3281 | - return !(DISABLED_BLOCKS.includes(block.name) || block.name.startsWith('core/post') || block.name.startsWith('core/query') || block.name.startsWith('core/site') || block.name.startsWith('core/navigation')); | |
| 3282 | - }); | |
| 3283 | - | |
| 3284 | - (0,external_wp_blockLibrary_namespaceObject.registerCoreBlocks)(coreBlocks); | |
| 3285 | - (0,external_wp_widgets_namespaceObject.registerLegacyWidgetBlock)(); | |
| 3286 | - | |
| 3287 | - if (true) { | |
| 3288 | - (0,external_wp_blockLibrary_namespaceObject.__experimentalRegisterExperimentalCoreBlocks)({ | |
| 3289 | - enableFSEBlocks: ENABLE_EXPERIMENTAL_FSE_BLOCKS | |
| 3290 | - }); | |
| 3291 | - } | |
| 3292 | - | |
| 3293 | - (0,external_wp_widgets_namespaceObject.registerLegacyWidgetVariations)(blockEditorSettings); | |
| 3294 | - (0,external_wp_widgets_namespaceObject.registerWidgetGroupBlock)(); // As we are unregistering `core/freeform` to avoid the Classic block, we must | |
| 3295 | - // replace it with something as the default freeform content handler. Failure to | |
| 3296 | - // do this will result in errors in the default block parser. | |
| 3297 | - // see: https://github.com/WordPress/gutenberg/issues/33097 | |
| 3298 | - | |
| 3299 | - (0,external_wp_blocks_namespaceObject.setFreeformContentHandlerName)('core/html'); | |
| 3300 | - const SidebarControl = getSidebarControl(blockEditorSettings); | |
| 3301 | - build_module_wp.customize.sectionConstructor.sidebar = getSidebarSection(); | |
| 3302 | - build_module_wp.customize.controlConstructor.sidebar_block_editor = SidebarControl; | |
| 3303 | - const container = document.createElement('div'); | |
| 3304 | - document.body.appendChild(container); | |
| 3305 | - build_module_wp.customize.bind('ready', () => { | |
| 3306 | - const sidebarControls = []; | |
| 3307 | - build_module_wp.customize.control.each(control => { | |
| 3308 | - if (control instanceof SidebarControl) { | |
| 3309 | - sidebarControls.push(control); | |
| 3310 | - } | |
| 3311 | - }); | |
| 3312 | - (0,external_wp_element_namespaceObject.render)((0,external_wp_element_namespaceObject.createElement)(CustomizeWidgets, { | |
| 3313 | - api: build_module_wp.customize, | |
| 3314 | - sidebarControls: sidebarControls, | |
| 3315 | - blockEditorSettings: blockEditorSettings | |
| 3316 | - }), container); | |
| 3317 | - }); | |
| 3318 | -} | |
| 3319 | -//# sourceMappingURL=index.js.map | |
| 3320 | -}(); | |
| 3321 | -(window.wp = window.wp || {}).customizeWidgets = __webpack_exports__; | |
| 3322 | -/******/ })() | |
| 3323 | -; | |
| 1 | +window.wp=window.wp||{},window.wp.customizeWidgets=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=548)}({0:function(e,t){e.exports=window.wp.element},11:function(e,t){e.exports=window.wp.blocks},15:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(24),i=n(42),o=n(30);function a(e){return function(e){if(Array.isArray(e))return Object(r.a)(e)}(e)||Object(i.a)(e)||Object(o.a)(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},2:function(e,t){e.exports=window.lodash},24:function(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,"a",(function(){return r}))},28:function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}n.d(t,"a",(function(){return r}))},29:function(e,t,n){"use strict";function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function i(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}n.d(t,"a",(function(){return i}))},3:function(e,t){e.exports=window.wp.components},30:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(24);function i(e,t){if(e){if("string"==typeof e)return Object(r.a)(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Object(r.a)(e,t):void 0}}},39:function(e,t,n){"use strict";function r(e){if(Array.isArray(e))return e}n.d(t,"a",(function(){return r}))},40:function(e,t,n){"use strict";function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}n.d(t,"a",(function(){return r}))},42:function(e,t,n){"use strict";function r(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}n.d(t,"a",(function(){return r}))},5:function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,"a",(function(){return r}))},548:function(e,t,n){"use strict";n.r(t),n.d(t,"initialize",(function(){return A}));var r=n(0),i=n(11),o=n(77),a=n(8),c=n(6),u=n(3),s=n(15),l=n(5),d=n(2);function f(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return b(e,void 0);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?b(e,void 0):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){c=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function v(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?g(Object(n),!0).forEach((function(t){Object(l.a)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function y(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("core/legacy-widget"===e.name){var r=!!e.attributes.referenceWidgetName;t=r?{id:e.attributes.referenceWidgetName,instance:e.attributes.instance}:{widgetClass:e.attributes.widgetClass,idBase:e.attributes.idBase,instance:e.attributes.instance}}else t={idBase:"block",widgetClass:"WP_Widget_Block",instance:{content:Object(i.serialize)(e)}};return v(v({},Object(d.omit)(n,["form","rendered"])),t)}function h(e){var t,n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("WP_Widget_Block"===e.widgetClass){var o=Object(i.parse)(e.instance.content);n=o.length?o[0]:Object(i.createBlock)("core/paragraph",{})}else{var a={name:e.name,form:e.form,instance:e.instance,idBase:e.idBase,number:e.number},c=!e.widgetClass;c?a.referenceWidgetName=e.id:a.widgetClass=e.widgetClass,n=Object(i.createBlock)("core/legacy-widget",a,[])}return v(v({},n),{},{clientId:null!==(t=null==r?void 0:r.clientId)&&void 0!==t?t:n.clientId})}function m(e){var t=function(e){var t=Object(r.useState)((function(){return function(e){var t,n={blocks:[],widgetIds:{}},r=f(e.getWidgetIds());try{for(r.s();!(t=r.n()).done;){var i=t.value,o=h(e.getWidget(i));n.blocks.push(o),n.widgetIds[o.clientId]=i}}catch(e){r.e(e)}finally{r.f()}return n}(e)})),n=Object(a.a)(t,2),i=n[0],o=n[1],c=Object(r.useRef)(!1);Object(r.useEffect)((function(){var t=function(t){if(!c.current)switch(t.type){case"widgetAdded":var n=t.widgetId,r=y(e.getWidget(n));o((function(e){return{blocks:[].concat(Object(s.a)(e.blocks),[r]),widgetIds:v(v({},e.widgetIds),{},Object(l.a)({},r.clientId,n))}}));break;case"widgetRemoved":var a=t.widgetId,u=Object(d.invert)(i.widgetIds)[a];o((function(e){return{blocks:e.blocks.filter((function(e){return e.clientId!==u})),widgetIds:Object(d.omit)(e.widgetIds,u)}}));break;case"widgetChanged":var f=t.widgetId,b=Object(d.invert)(i.widgetIds)[f],g=i.blocks.find((function(e){return e.clientId===b})),m=h(e.getWidget(f),g);o((function(e){return v(v({},e),{},{blocks:e.blocks.map((function(e){return e.clientId===b?m:e}))})}));break;case"widgetsReordered":var p=t.widgetIds,w=Object(d.invert)(i.widgetIds),O=Object(d.keyBy)(i.blocks,"clientId");o((function(e){return v(v({},e),{},{blocks:p.map((function(e){return O[w[e]]}))})}))}};return e.subscribe(t),function(){return e.unsubscribe(t)}}),[e]);var u=Object(r.useCallback)((function(t){c.current=!0;var n,r=i.widgetIds,a=Object(d.keyBy)(i.blocks,"clientId"),u={},s=f(t);try{for(s.s();!(n=s.n()).done;){var l=n.value;if(l.clientId in a){var b=a[l.clientId];if(!Object(d.isEqual)(b,l)){var g=i.widgetIds[l.clientId],h=y(l,e.getWidget(g));e.updateWidget(h)}}else{var m=y(l),p=e.addWidget(m);r===i.widgetIds&&(r=v({},i.widgetIds)),r[l.clientId]=p}u[l.clientId]=!0}}catch(e){s.e(e)}finally{s.f()}var w,O=f(i.blocks);try{for(O.s();!(w=O.n()).done;){var j=w.value;if(!u[j.clientId]){var I=i.widgetIds[j.clientId];e.removeWidget(I)}}}catch(e){O.e(e)}finally{O.f()}if(t.length===i.blocks.length&&!Object(d.isEqual)(t.map((function(e){return e.clientId})),i.blocks.map((function(e){return e.clientId})))){var k=t.map((function(e){var t=e.clientId;return i.widgetIds[t]}));e.setWidgetIds(k)}o((function(e){return v(v({},e),{},{blocks:t,widgetIds:r})})),c.current=!1}),[i,e]);return[i.blocks,u,u]}(e.sidebar),n=Object(a.a)(t,3),i=n[0],o=n[1],b=n[2];return Object(r.createElement)(u.SlotFillProvider,null,Object(r.createElement)(u.DropZoneProvider,null,Object(r.createElement)(u.FocusReturnProvider,null,Object(r.createElement)(c.BlockEditorProvider,{value:i,onInput:o,onChange:b},Object(r.createElement)(c.BlockSelectionClearer,null,Object(r.createElement)(c.WritingFlow,null,Object(r.createElement)(c.ObserveTyping,null,Object(r.createElement)(c.BlockList,null))))))))}var p=n(28),w=n(29);function O(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return j(e,void 0);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?j(e,void 0):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){c=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw o}}}}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var I=window.wp;function k(e){var t=e.match(/^(.+)-(\d+)$/);return t?{idBase:t[1],number:parseInt(t[2],10)}:{idBase:e}}function S(e){var t=k(e),n=t.idBase,r=t.number;return r?"widget_".concat(n,"[").concat(r,"]"):"widget_".concat(n)}function _(e){var t=function(e){var t=e.match(/^widget_(.+)(?:\[(\d+)\])$/);return t?{idBase:t[1],number:parseInt(t[2],10)}:{idBase:e}}(e),n=t.idBase,r=t.number;return r?"".concat(n,"-").concat(r):n}var W=function(){function e(t,n){Object(p.a)(this,e),this.setting=t,this.allSettings=n,this.subscribers=new Set,this._handleSettingChange=this._handleSettingChange.bind(this),this._handleAllSettingsChange=this._handleAllSettingsChange.bind(this)}return Object(w.a)(e,[{key:"subscribe",value:function(e){this.subscribers.size||(this.setting.bind(this._handleSettingChange),this.allSettings.bind("change",this._handleAllSettingsChange)),this.subscribers.add(e)}},{key:"unsubscribe",value:function(e){this.subscribers.delete(e),this.subscribers.size||(this.setting.unbind(this._handleSettingChange),this.allSettings.unbind("change",this._handleAllSettingsChange))}},{key:"trigger",value:function(e){var t,n=O(this.subscribers);try{for(n.s();!(t=n.n()).done;)(0,t.value)(e)}catch(e){n.e(e)}finally{n.f()}}},{key:"_handleSettingChange",value:function(e,t){var n,r=Object(d.difference)(e,t),i=Object(d.difference)(t,e),o=O(r);try{for(o.s();!(n=o.n()).done;){var a=n.value;this.trigger({type:"widgetAdded",widgetId:a})}}catch(e){o.e(e)}finally{o.f()}var c,u=O(r);try{for(u.s();!(c=u.n()).done;){var s=c.value;this.trigger({type:"widgetRemoved",widgetId:s})}}catch(e){u.e(e)}finally{u.f()}Object(d.isEqual)(r,i)||this.trigger({type:"widgetsReordered",newWidgetIds:e})}},{key:"_handleAllSettingsChange",value:function(e){if(e.id.startsWith("widget_")){var t=_(e.id);this.setting.get().includes(t)&&this.trigger({type:"widgetChanged",widgetId:t})}}},{key:"getWidgetIds",value:function(){return this.setting.get()}},{key:"setWidgetIds",value:function(e){this.setting.set(e)}},{key:"getWidget",value:function(e){var t=k(e),n=t.idBase,r=t.number,i=S(e);return{id:e,idBase:n,number:r,instance:this.allSettings(i).get()}}},{key:"addWidget",value:function(e){var t=I.customize.Widgets.availableWidgets.findWhere({id_base:e.idBase}),n=e.number;t.get("is_multi")&&!n&&(t.set("multi_number",t.get("multi_number")+1),n=t.get("multi_number"));var r=n?"widget_".concat(e.idBase,"[").concat(n,"]"):"widget_".concat(e.idBase),i={transport:I.customize.Widgets.data.selectiveRefreshableWidgets[t.get("id_base")]?"postMessage":"refresh",previewer:this.setting.previewer};this.allSettings.create(r,r,"",i).set({});var o=this.setting.get(),a=_(r);return this.setting.set([].concat(Object(s.a)(o),[a])),a}},{key:"updateWidget",value:function(e){var t=S(e.id);this.allSettings(t).set(e.instance)}},{key:"removeWidget",value:function(e){var t=this.setting.get();this.setting.set(Object(d.without)(t,e))}}]),e}(),C=window.wp,B=window.wp;function A(){var e=Object(o.__experimentalGetCoreBlocks)().filter((function(e){return!["core/more"].includes(e.name)}));Object(o.registerCoreBlocks)(e),Object(o.__experimentalRegisterExperimentalCoreBlocks)(),Object(i.registerBlockType)("core/legacy-widget",{title:"Legacy Widget",attributes:{widgetClass:{type:"string"},referenceWidgetName:{type:"string"},name:{type:"string"},idBase:{type:"string"},number:{type:"number"},instance:{type:"object"}},edit:function(e){var t=e.attributes;return Object(r.createElement)("div",null,JSON.stringify(t))}}),B.customize.controlConstructor.sidebar_block_editor=C.customize.Control.extend({ready:function(){Object(r.render)(Object(r.createElement)(m,{sidebar:new W(this.setting,C.customize)}),this.container[0])}})}B.domReady(A)},6:function(e,t){e.exports=window.wp.blockEditor},77:function(e,t){e.exports=window.wp.blockLibrary},8:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(39),i=n(30),o=n(40);function a(e,t){return Object(r.a)(e)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],_n=!0,r=!1,i=void 0;try{for(var o,a=e[Symbol.iterator]();!(_n=(o=a.next()).done)&&(n.push(o.value),!t||n.length!==t);_n=!0);}catch(e){r=!0,i=e}finally{try{_n||null==a.return||a.return()}finally{if(r)throw i}}return n}}(e,t)||Object(i.a)(e,t)||Object(o.a)()}}}); | |