Making WordPress.org

Changeset 10983


Ignore:
Timestamp:
05/17/2021 06:57:24 PM (3 years ago)
Author:
ryelle
Message:

Pattern Directory: Sync with git WordPress/pattern-directory@4325f4c27e58232cc4a5553bad65ba258947742f

Location:
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns
Files:
9 added
1 deleted
22 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/build/index.asset.php

    r10952 r10983  
    1 <?php return array('dependencies' => array('react', 'wp-a11y', 'wp-components', 'wp-compose', 'wp-data', 'wp-data-controls', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-polyfill', 'wp-primitives', 'wp-url', 'wp-viewport'), 'version' => '6cc4550be1812ff312e84305d20a109c');
     1<?php return array('dependencies' => array('react', 'wp-a11y', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-data-controls', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-polyfill', 'wp-primitives', 'wp-url', 'wp-viewport'), 'version' => '0e8288553698a27b213d838c559a648a');
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/build/index.js

    r10952 r10983  
    8787/******/ ({
    8888
    89 /***/ "../../../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js":
    90 /*!*************************************************************************************************************!*\
    91   !*** /Users/ryelle/Projects/Work/pattern-directory/node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***!
    92   \*************************************************************************************************************/
    93 /*! no static exports found */
    94 /***/ (function(module, exports) {
    95 
    96 function _arrayLikeToArray(arr, len) {
    97   if (len == null || len > arr.length) len = arr.length;
    98 
    99   for (var i = 0, arr2 = new Array(len); i < len; i++) {
    100     arr2[i] = arr[i];
    101   }
    102 
    103   return arr2;
    104 }
    105 
    106 module.exports = _arrayLikeToArray;
    107 
    108 /***/ }),
    109 
    110 /***/ "../../../../node_modules/@babel/runtime/helpers/arrayWithHoles.js":
    111 /*!***********************************************************************************************************!*\
    112   !*** /Users/ryelle/Projects/Work/pattern-directory/node_modules/@babel/runtime/helpers/arrayWithHoles.js ***!
    113   \***********************************************************************************************************/
    114 /*! no static exports found */
    115 /***/ (function(module, exports) {
    116 
    117 function _arrayWithHoles(arr) {
    118   if (Array.isArray(arr)) return arr;
    119 }
    120 
    121 module.exports = _arrayWithHoles;
    122 
    123 /***/ }),
    124 
    125 /***/ "../../../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js":
    126 /*!**************************************************************************************************************!*\
    127   !*** /Users/ryelle/Projects/Work/pattern-directory/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***!
    128   \**************************************************************************************************************/
    129 /*! no static exports found */
    130 /***/ (function(module, exports, __webpack_require__) {
    131 
    132 var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray */ "../../../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js");
    133 
    134 function _arrayWithoutHoles(arr) {
    135   if (Array.isArray(arr)) return arrayLikeToArray(arr);
    136 }
    137 
    138 module.exports = _arrayWithoutHoles;
    139 
    140 /***/ }),
    141 
    142 /***/ "../../../../node_modules/@babel/runtime/helpers/defineProperty.js":
    143 /*!***********************************************************************************************************!*\
    144   !*** /Users/ryelle/Projects/Work/pattern-directory/node_modules/@babel/runtime/helpers/defineProperty.js ***!
    145   \***********************************************************************************************************/
    146 /*! no static exports found */
    147 /***/ (function(module, exports) {
    148 
    149 function _defineProperty(obj, key, value) {
    150   if (key in obj) {
    151     Object.defineProperty(obj, key, {
    152       value: value,
    153       enumerable: true,
    154       configurable: true,
    155       writable: true
    156     });
    157   } else {
    158     obj[key] = value;
    159   }
    160 
    161   return obj;
    162 }
    163 
    164 module.exports = _defineProperty;
    165 
    166 /***/ }),
    167 
    16889/***/ "../../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js":
    16990/*!***************************************************************************************************************!*\
     
    250171  return target;
    251172}
    252 
    253 /***/ }),
    254 
    255 /***/ "../../../../node_modules/@babel/runtime/helpers/extends.js":
    256 /*!****************************************************************************************************!*\
    257   !*** /Users/ryelle/Projects/Work/pattern-directory/node_modules/@babel/runtime/helpers/extends.js ***!
    258   \****************************************************************************************************/
    259 /*! no static exports found */
    260 /***/ (function(module, exports) {
    261 
    262 function _extends() {
    263   module.exports = _extends = Object.assign || function (target) {
    264     for (var i = 1; i < arguments.length; i++) {
    265       var source = arguments[i];
    266 
    267       for (var key in source) {
    268         if (Object.prototype.hasOwnProperty.call(source, key)) {
    269           target[key] = source[key];
    270         }
    271       }
    272     }
    273 
    274     return target;
    275   };
    276 
    277   return _extends.apply(this, arguments);
    278 }
    279 
    280 module.exports = _extends;
    281 
    282 /***/ }),
    283 
    284 /***/ "../../../../node_modules/@babel/runtime/helpers/iterableToArray.js":
    285 /*!************************************************************************************************************!*\
    286   !*** /Users/ryelle/Projects/Work/pattern-directory/node_modules/@babel/runtime/helpers/iterableToArray.js ***!
    287   \************************************************************************************************************/
    288 /*! no static exports found */
    289 /***/ (function(module, exports) {
    290 
    291 function _iterableToArray(iter) {
    292   if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
    293 }
    294 
    295 module.exports = _iterableToArray;
    296 
    297 /***/ }),
    298 
    299 /***/ "../../../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js":
    300 /*!*****************************************************************************************************************!*\
    301   !*** /Users/ryelle/Projects/Work/pattern-directory/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***!
    302   \*****************************************************************************************************************/
    303 /*! no static exports found */
    304 /***/ (function(module, exports) {
    305 
    306 function _iterableToArrayLimit(arr, i) {
    307   if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
    308   var _arr = [];
    309   var _n = true;
    310   var _d = false;
    311   var _e = undefined;
    312 
    313   try {
    314     for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
    315       _arr.push(_s.value);
    316 
    317       if (i && _arr.length === i) break;
    318     }
    319   } catch (err) {
    320     _d = true;
    321     _e = err;
    322   } finally {
    323     try {
    324       if (!_n && _i["return"] != null) _i["return"]();
    325     } finally {
    326       if (_d) throw _e;
    327     }
    328   }
    329 
    330   return _arr;
    331 }
    332 
    333 module.exports = _iterableToArrayLimit;
    334 
    335 /***/ }),
    336 
    337 /***/ "../../../../node_modules/@babel/runtime/helpers/nonIterableRest.js":
    338 /*!************************************************************************************************************!*\
    339   !*** /Users/ryelle/Projects/Work/pattern-directory/node_modules/@babel/runtime/helpers/nonIterableRest.js ***!
    340   \************************************************************************************************************/
    341 /*! no static exports found */
    342 /***/ (function(module, exports) {
    343 
    344 function _nonIterableRest() {
    345   throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    346 }
    347 
    348 module.exports = _nonIterableRest;
    349 
    350 /***/ }),
    351 
    352 /***/ "../../../../node_modules/@babel/runtime/helpers/nonIterableSpread.js":
    353 /*!**************************************************************************************************************!*\
    354   !*** /Users/ryelle/Projects/Work/pattern-directory/node_modules/@babel/runtime/helpers/nonIterableSpread.js ***!
    355   \**************************************************************************************************************/
    356 /*! no static exports found */
    357 /***/ (function(module, exports) {
    358 
    359 function _nonIterableSpread() {
    360   throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    361 }
    362 
    363 module.exports = _nonIterableSpread;
    364 
    365 /***/ }),
    366 
    367 /***/ "../../../../node_modules/@babel/runtime/helpers/objectWithoutProperties.js":
    368 /*!********************************************************************************************************************!*\
    369   !*** /Users/ryelle/Projects/Work/pattern-directory/node_modules/@babel/runtime/helpers/objectWithoutProperties.js ***!
    370   \********************************************************************************************************************/
    371 /*! no static exports found */
    372 /***/ (function(module, exports, __webpack_require__) {
    373 
    374 var objectWithoutPropertiesLoose = __webpack_require__(/*! ./objectWithoutPropertiesLoose */ "../../../../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js");
    375 
    376 function _objectWithoutProperties(source, excluded) {
    377   if (source == null) return {};
    378   var target = objectWithoutPropertiesLoose(source, excluded);
    379   var key, i;
    380 
    381   if (Object.getOwnPropertySymbols) {
    382     var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
    383 
    384     for (i = 0; i < sourceSymbolKeys.length; i++) {
    385       key = sourceSymbolKeys[i];
    386       if (excluded.indexOf(key) >= 0) continue;
    387       if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
    388       target[key] = source[key];
    389     }
    390   }
    391 
    392   return target;
    393 }
    394 
    395 module.exports = _objectWithoutProperties;
    396 
    397 /***/ }),
    398 
    399 /***/ "../../../../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js":
    400 /*!*************************************************************************************************************************!*\
    401   !*** /Users/ryelle/Projects/Work/pattern-directory/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js ***!
    402   \*************************************************************************************************************************/
    403 /*! no static exports found */
    404 /***/ (function(module, exports) {
    405 
    406 function _objectWithoutPropertiesLoose(source, excluded) {
    407   if (source == null) return {};
    408   var target = {};
    409   var sourceKeys = Object.keys(source);
    410   var key, i;
    411 
    412   for (i = 0; i < sourceKeys.length; i++) {
    413     key = sourceKeys[i];
    414     if (excluded.indexOf(key) >= 0) continue;
    415     target[key] = source[key];
    416   }
    417 
    418   return target;
    419 }
    420 
    421 module.exports = _objectWithoutPropertiesLoose;
    422 
    423 /***/ }),
    424 
    425 /***/ "../../../../node_modules/@babel/runtime/helpers/slicedToArray.js":
    426 /*!**********************************************************************************************************!*\
    427   !*** /Users/ryelle/Projects/Work/pattern-directory/node_modules/@babel/runtime/helpers/slicedToArray.js ***!
    428   \**********************************************************************************************************/
    429 /*! no static exports found */
    430 /***/ (function(module, exports, __webpack_require__) {
    431 
    432 var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles */ "../../../../node_modules/@babel/runtime/helpers/arrayWithHoles.js");
    433 
    434 var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit */ "../../../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js");
    435 
    436 var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray */ "../../../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js");
    437 
    438 var nonIterableRest = __webpack_require__(/*! ./nonIterableRest */ "../../../../node_modules/@babel/runtime/helpers/nonIterableRest.js");
    439 
    440 function _slicedToArray(arr, i) {
    441   return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
    442 }
    443 
    444 module.exports = _slicedToArray;
    445 
    446 /***/ }),
    447 
    448 /***/ "../../../../node_modules/@babel/runtime/helpers/toConsumableArray.js":
    449 /*!**************************************************************************************************************!*\
    450   !*** /Users/ryelle/Projects/Work/pattern-directory/node_modules/@babel/runtime/helpers/toConsumableArray.js ***!
    451   \**************************************************************************************************************/
    452 /*! no static exports found */
    453 /***/ (function(module, exports, __webpack_require__) {
    454 
    455 var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles */ "../../../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js");
    456 
    457 var iterableToArray = __webpack_require__(/*! ./iterableToArray */ "../../../../node_modules/@babel/runtime/helpers/iterableToArray.js");
    458 
    459 var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray */ "../../../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js");
    460 
    461 var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread */ "../../../../node_modules/@babel/runtime/helpers/nonIterableSpread.js");
    462 
    463 function _toConsumableArray(arr) {
    464   return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
    465 }
    466 
    467 module.exports = _toConsumableArray;
    468 
    469 /***/ }),
    470 
    471 /***/ "../../../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js":
    472 /*!***********************************************************************************************************************!*\
    473   !*** /Users/ryelle/Projects/Work/pattern-directory/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***!
    474   \***********************************************************************************************************************/
    475 /*! no static exports found */
    476 /***/ (function(module, exports, __webpack_require__) {
    477 
    478 var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray */ "../../../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js");
    479 
    480 function _unsupportedIterableToArray(o, minLen) {
    481   if (!o) return;
    482   if (typeof o === "string") return arrayLikeToArray(o, minLen);
    483   var n = Object.prototype.toString.call(o).slice(8, -1);
    484   if (n === "Object" && o.constructor) n = o.constructor.name;
    485   if (n === "Map" || n === "Set") return Array.from(o);
    486   if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
    487 }
    488 
    489 module.exports = _unsupportedIterableToArray;
    490173
    491174/***/ }),
     
    76947377/* harmony default export */ __webpack_exports__["default"] = (wordpress);
    76957378//# sourceMappingURL=wordpress.js.map
     7379
     7380/***/ }),
     7381
     7382/***/ "../../../../node_modules/classnames/index.js":
     7383/*!**************************************************************************************!*\
     7384  !*** /Users/ryelle/Projects/Work/pattern-directory/node_modules/classnames/index.js ***!
     7385  \**************************************************************************************/
     7386/*! no static exports found */
     7387/***/ (function(module, exports, __webpack_require__) {
     7388
     7389var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
     7390  Copyright (c) 2017 Jed Watson.
     7391  Licensed under the MIT License (MIT), see
     7392  http://jedwatson.github.io/classnames
     7393*/
     7394/* global define */
     7395
     7396(function () {
     7397    'use strict';
     7398
     7399    var hasOwn = {}.hasOwnProperty;
     7400
     7401    function classNames () {
     7402        var classes = [];
     7403
     7404        for (var i = 0; i < arguments.length; i++) {
     7405            var arg = arguments[i];
     7406            if (!arg) continue;
     7407
     7408            var argType = typeof arg;
     7409
     7410            if (argType === 'string' || argType === 'number') {
     7411                classes.push(arg);
     7412            } else if (Array.isArray(arg) && arg.length) {
     7413                var inner = classNames.apply(null, arg);
     7414                if (inner) {
     7415                    classes.push(inner);
     7416                }
     7417            } else if (argType === 'object') {
     7418                for (var key in arg) {
     7419                    if (hasOwn.call(arg, key) && arg[key]) {
     7420                        classes.push(key);
     7421                    }
     7422                }
     7423            }
     7424        }
     7425
     7426        return classes.join(' ');
     7427    }
     7428
     7429    if ( true && module.exports) {
     7430        classNames.default = classNames;
     7431        module.exports = classNames;
     7432    } else if (true) {
     7433        // register as 'classnames', consistent with npm package name
     7434        !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
     7435            return classNames;
     7436        }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
     7437                __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
     7438    } else {}
     7439}());
     7440
     7441
     7442/***/ }),
     7443
     7444/***/ "./node_modules/@babel/runtime/helpers/arrayLikeToArray.js":
     7445/*!*****************************************************************!*\
     7446  !*** ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***!
     7447  \*****************************************************************/
     7448/*! no static exports found */
     7449/***/ (function(module, exports) {
     7450
     7451function _arrayLikeToArray(arr, len) {
     7452  if (len == null || len > arr.length) len = arr.length;
     7453
     7454  for (var i = 0, arr2 = new Array(len); i < len; i++) {
     7455    arr2[i] = arr[i];
     7456  }
     7457
     7458  return arr2;
     7459}
     7460
     7461module.exports = _arrayLikeToArray;
     7462module.exports["default"] = module.exports, module.exports.__esModule = true;
     7463
     7464/***/ }),
     7465
     7466/***/ "./node_modules/@babel/runtime/helpers/arrayWithHoles.js":
     7467/*!***************************************************************!*\
     7468  !*** ./node_modules/@babel/runtime/helpers/arrayWithHoles.js ***!
     7469  \***************************************************************/
     7470/*! no static exports found */
     7471/***/ (function(module, exports) {
     7472
     7473function _arrayWithHoles(arr) {
     7474  if (Array.isArray(arr)) return arr;
     7475}
     7476
     7477module.exports = _arrayWithHoles;
     7478module.exports["default"] = module.exports, module.exports.__esModule = true;
     7479
     7480/***/ }),
     7481
     7482/***/ "./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js":
     7483/*!******************************************************************!*\
     7484  !*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***!
     7485  \******************************************************************/
     7486/*! no static exports found */
     7487/***/ (function(module, exports, __webpack_require__) {
     7488
     7489var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "./node_modules/@babel/runtime/helpers/arrayLikeToArray.js");
     7490
     7491function _arrayWithoutHoles(arr) {
     7492  if (Array.isArray(arr)) return arrayLikeToArray(arr);
     7493}
     7494
     7495module.exports = _arrayWithoutHoles;
     7496module.exports["default"] = module.exports, module.exports.__esModule = true;
     7497
     7498/***/ }),
     7499
     7500/***/ "./node_modules/@babel/runtime/helpers/defineProperty.js":
     7501/*!***************************************************************!*\
     7502  !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***!
     7503  \***************************************************************/
     7504/*! no static exports found */
     7505/***/ (function(module, exports) {
     7506
     7507function _defineProperty(obj, key, value) {
     7508  if (key in obj) {
     7509    Object.defineProperty(obj, key, {
     7510      value: value,
     7511      enumerable: true,
     7512      configurable: true,
     7513      writable: true
     7514    });
     7515  } else {
     7516    obj[key] = value;
     7517  }
     7518
     7519  return obj;
     7520}
     7521
     7522module.exports = _defineProperty;
     7523module.exports["default"] = module.exports, module.exports.__esModule = true;
     7524
     7525/***/ }),
     7526
     7527/***/ "./node_modules/@babel/runtime/helpers/extends.js":
     7528/*!********************************************************!*\
     7529  !*** ./node_modules/@babel/runtime/helpers/extends.js ***!
     7530  \********************************************************/
     7531/*! no static exports found */
     7532/***/ (function(module, exports) {
     7533
     7534function _extends() {
     7535  module.exports = _extends = Object.assign || function (target) {
     7536    for (var i = 1; i < arguments.length; i++) {
     7537      var source = arguments[i];
     7538
     7539      for (var key in source) {
     7540        if (Object.prototype.hasOwnProperty.call(source, key)) {
     7541          target[key] = source[key];
     7542        }
     7543      }
     7544    }
     7545
     7546    return target;
     7547  };
     7548
     7549  module.exports["default"] = module.exports, module.exports.__esModule = true;
     7550  return _extends.apply(this, arguments);
     7551}
     7552
     7553module.exports = _extends;
     7554module.exports["default"] = module.exports, module.exports.__esModule = true;
     7555
     7556/***/ }),
     7557
     7558/***/ "./node_modules/@babel/runtime/helpers/iterableToArray.js":
     7559/*!****************************************************************!*\
     7560  !*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***!
     7561  \****************************************************************/
     7562/*! no static exports found */
     7563/***/ (function(module, exports) {
     7564
     7565function _iterableToArray(iter) {
     7566  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
     7567}
     7568
     7569module.exports = _iterableToArray;
     7570module.exports["default"] = module.exports, module.exports.__esModule = true;
     7571
     7572/***/ }),
     7573
     7574/***/ "./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js":
     7575/*!*********************************************************************!*\
     7576  !*** ./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***!
     7577  \*********************************************************************/
     7578/*! no static exports found */
     7579/***/ (function(module, exports) {
     7580
     7581function _iterableToArrayLimit(arr, i) {
     7582  var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]);
     7583
     7584  if (_i == null) return;
     7585  var _arr = [];
     7586  var _n = true;
     7587  var _d = false;
     7588
     7589  var _s, _e;
     7590
     7591  try {
     7592    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
     7593      _arr.push(_s.value);
     7594
     7595      if (i && _arr.length === i) break;
     7596    }
     7597  } catch (err) {
     7598    _d = true;
     7599    _e = err;
     7600  } finally {
     7601    try {
     7602      if (!_n && _i["return"] != null) _i["return"]();
     7603    } finally {
     7604      if (_d) throw _e;
     7605    }
     7606  }
     7607
     7608  return _arr;
     7609}
     7610
     7611module.exports = _iterableToArrayLimit;
     7612module.exports["default"] = module.exports, module.exports.__esModule = true;
     7613
     7614/***/ }),
     7615
     7616/***/ "./node_modules/@babel/runtime/helpers/nonIterableRest.js":
     7617/*!****************************************************************!*\
     7618  !*** ./node_modules/@babel/runtime/helpers/nonIterableRest.js ***!
     7619  \****************************************************************/
     7620/*! no static exports found */
     7621/***/ (function(module, exports) {
     7622
     7623function _nonIterableRest() {
     7624  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
     7625}
     7626
     7627module.exports = _nonIterableRest;
     7628module.exports["default"] = module.exports, module.exports.__esModule = true;
     7629
     7630/***/ }),
     7631
     7632/***/ "./node_modules/@babel/runtime/helpers/nonIterableSpread.js":
     7633/*!******************************************************************!*\
     7634  !*** ./node_modules/@babel/runtime/helpers/nonIterableSpread.js ***!
     7635  \******************************************************************/
     7636/*! no static exports found */
     7637/***/ (function(module, exports) {
     7638
     7639function _nonIterableSpread() {
     7640  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
     7641}
     7642
     7643module.exports = _nonIterableSpread;
     7644module.exports["default"] = module.exports, module.exports.__esModule = true;
     7645
     7646/***/ }),
     7647
     7648/***/ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js":
     7649/*!************************************************************************!*\
     7650  !*** ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js ***!
     7651  \************************************************************************/
     7652/*! no static exports found */
     7653/***/ (function(module, exports, __webpack_require__) {
     7654
     7655var objectWithoutPropertiesLoose = __webpack_require__(/*! ./objectWithoutPropertiesLoose.js */ "./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js");
     7656
     7657function _objectWithoutProperties(source, excluded) {
     7658  if (source == null) return {};
     7659  var target = objectWithoutPropertiesLoose(source, excluded);
     7660  var key, i;
     7661
     7662  if (Object.getOwnPropertySymbols) {
     7663    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
     7664
     7665    for (i = 0; i < sourceSymbolKeys.length; i++) {
     7666      key = sourceSymbolKeys[i];
     7667      if (excluded.indexOf(key) >= 0) continue;
     7668      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
     7669      target[key] = source[key];
     7670    }
     7671  }
     7672
     7673  return target;
     7674}
     7675
     7676module.exports = _objectWithoutProperties;
     7677module.exports["default"] = module.exports, module.exports.__esModule = true;
     7678
     7679/***/ }),
     7680
     7681/***/ "./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js":
     7682/*!*****************************************************************************!*\
     7683  !*** ./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js ***!
     7684  \*****************************************************************************/
     7685/*! no static exports found */
     7686/***/ (function(module, exports) {
     7687
     7688function _objectWithoutPropertiesLoose(source, excluded) {
     7689  if (source == null) return {};
     7690  var target = {};
     7691  var sourceKeys = Object.keys(source);
     7692  var key, i;
     7693
     7694  for (i = 0; i < sourceKeys.length; i++) {
     7695    key = sourceKeys[i];
     7696    if (excluded.indexOf(key) >= 0) continue;
     7697    target[key] = source[key];
     7698  }
     7699
     7700  return target;
     7701}
     7702
     7703module.exports = _objectWithoutPropertiesLoose;
     7704module.exports["default"] = module.exports, module.exports.__esModule = true;
     7705
     7706/***/ }),
     7707
     7708/***/ "./node_modules/@babel/runtime/helpers/slicedToArray.js":
     7709/*!**************************************************************!*\
     7710  !*** ./node_modules/@babel/runtime/helpers/slicedToArray.js ***!
     7711  \**************************************************************/
     7712/*! no static exports found */
     7713/***/ (function(module, exports, __webpack_require__) {
     7714
     7715var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ "./node_modules/@babel/runtime/helpers/arrayWithHoles.js");
     7716
     7717var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ "./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js");
     7718
     7719var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js");
     7720
     7721var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ "./node_modules/@babel/runtime/helpers/nonIterableRest.js");
     7722
     7723function _slicedToArray(arr, i) {
     7724  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
     7725}
     7726
     7727module.exports = _slicedToArray;
     7728module.exports["default"] = module.exports, module.exports.__esModule = true;
     7729
     7730/***/ }),
     7731
     7732/***/ "./node_modules/@babel/runtime/helpers/toConsumableArray.js":
     7733/*!******************************************************************!*\
     7734  !*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***!
     7735  \******************************************************************/
     7736/*! no static exports found */
     7737/***/ (function(module, exports, __webpack_require__) {
     7738
     7739var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ "./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js");
     7740
     7741var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ "./node_modules/@babel/runtime/helpers/iterableToArray.js");
     7742
     7743var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js");
     7744
     7745var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ "./node_modules/@babel/runtime/helpers/nonIterableSpread.js");
     7746
     7747function _toConsumableArray(arr) {
     7748  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
     7749}
     7750
     7751module.exports = _toConsumableArray;
     7752module.exports["default"] = module.exports, module.exports.__esModule = true;
     7753
     7754/***/ }),
     7755
     7756/***/ "./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js":
     7757/*!***************************************************************************!*\
     7758  !*** ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***!
     7759  \***************************************************************************/
     7760/*! no static exports found */
     7761/***/ (function(module, exports, __webpack_require__) {
     7762
     7763var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "./node_modules/@babel/runtime/helpers/arrayLikeToArray.js");
     7764
     7765function _unsupportedIterableToArray(o, minLen) {
     7766  if (!o) return;
     7767  if (typeof o === "string") return arrayLikeToArray(o, minLen);
     7768  var n = Object.prototype.toString.call(o).slice(8, -1);
     7769  if (n === "Object" && o.constructor) n = o.constructor.name;
     7770  if (n === "Map" || n === "Set") return Array.from(o);
     7771  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
     7772}
     7773
     7774module.exports = _unsupportedIterableToArray;
     7775module.exports["default"] = module.exports, module.exports.__esModule = true;
    76967776
    76977777/***/ }),
     
    1059610676/***/ }),
    1059710677
    10598 /***/ "./src/components/add-to-favorite-button/index.js":
    10599 /*!********************************************************!*\
    10600   !*** ./src/components/add-to-favorite-button/index.js ***!
    10601   \********************************************************/
    10602 /*! exports provided: default */
    10603 /***/ (function(module, __webpack_exports__, __webpack_require__) {
    10604 
    10605 "use strict";
    10606 __webpack_require__.r(__webpack_exports__);
    10607 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
    10608 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
    10609 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
    10610 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
    10611 
    10612 
    10613 /**
    10614  * External dependencies
    10615  */
    10616 
    10617 
    10618 var AddToFavoriteButton = function AddToFavoriteButton() {
    10619   return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("button", {
    10620     className: "button"
    10621   }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__["__"])('Add to favorites', 'wporg-patterns'));
    10622 };
    10623 
    10624 /* harmony default export */ __webpack_exports__["default"] = (AddToFavoriteButton);
    10625 
    10626 /***/ }),
    10627 
    1062810678/***/ "./src/components/category-context-bar/index.js":
    1062910679/*!******************************************************!*\
     
    1063510685"use strict";
    1063610686__webpack_require__.r(__webpack_exports__);
    10637 /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../../../../node_modules/@babel/runtime/helpers/slicedToArray.js");
     10687/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "./node_modules/@babel/runtime/helpers/slicedToArray.js");
    1063810688/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);
    1063910689/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     
    1083610886
    1083710887
    10838 
    10839 var updateIndicatorLocation = function updateIndicatorLocation(container, _ref) {
    10840   var top = _ref.top,
    10841       left = _ref.left,
    10842       width = _ref.width,
    10843       height = _ref.height;
    10844 
    10845   if (!container) {
    10846     return;
    10847   }
    10848 
    10849   container.style.backgroundPositionX = "".concat(left, "px");
    10850   container.style.backgroundSize = "".concat(width, "px ").concat(top + height, "px");
    10851 };
    10852 
    10853 var DefaultMenu = function DefaultMenu(_ref2) {
    10854   var path = _ref2.path,
    10855       options = _ref2.options,
    10856       onClick = _ref2.onClick,
    10857       isLoading = _ref2.isLoading;
    10858   var containerRef = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["useRef"])(null);
    10859   var activeRef = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["useRef"])(null);
    10860   Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["useEffect"])(function () {
    10861     if (!containerRef || !containerRef.current || !activeRef || !activeRef.current) {
    10862       return;
    10863     }
    10864 
    10865     updateIndicatorLocation(containerRef.current, {
    10866       top: activeRef.current.offsetTop,
    10867       left: activeRef.current.offsetLeft,
    10868       width: activeRef.current.offsetWidth,
    10869       height: activeRef.current.offsetHeight
    10870     });
    10871   });
     10888var DefaultMenu = function DefaultMenu(_ref) {
     10889  var path = _ref.path,
     10890      options = _ref.options,
     10891      onClick = _ref.onClick,
     10892      isLoading = _ref.isLoading;
    1087210893
    1087310894  if (!isLoading && !options.length) {
     
    1087610897
    1087710898  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("ul", {
    10878     className: "category-menu ".concat(isLoading ? 'category-menu--is-loading' : '', " "),
    10879     ref: containerRef
     10899    className: "category-menu ".concat(isLoading ? 'category-menu--is-loading' : '', " ")
    1088010900  }, options.map(function (i) {
    10881     var isActive = path === i.value;
    1088210901    return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("li", {
    1088310902      key: i.value
    1088410903    }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("a", {
    10885       className: isActive ? 'category-menu--is-active' : '',
     10904      className: path === i.value ? 'category-menu--is-active' : '',
    1088610905      href: i.value,
    10887       ref: isActive ? activeRef : null,
    1088810906      onClick: onClick
    1088910907    }, i.label));
     
    1093410952"use strict";
    1093510953__webpack_require__.r(__webpack_exports__);
    10936 /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../../../../node_modules/@babel/runtime/helpers/slicedToArray.js");
     10954/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "./node_modules/@babel/runtime/helpers/slicedToArray.js");
    1093710955/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);
    1093810956/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     
    1111511133/***/ }),
    1111611134
     11135/***/ "./src/components/favorite-button/index.js":
     11136/*!*************************************************!*\
     11137  !*** ./src/components/favorite-button/index.js ***!
     11138  \*************************************************/
     11139/*! exports provided: default */
     11140/***/ (function(module, __webpack_exports__, __webpack_require__) {
     11141
     11142"use strict";
     11143__webpack_require__.r(__webpack_exports__);
     11144/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     11145/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
     11146/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ "../../../../node_modules/classnames/index.js");
     11147/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
     11148/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     11149/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__);
     11150/* harmony import */ var _wordpress_core_data__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/core-data */ "@wordpress/core-data");
     11151/* harmony import */ var _wordpress_core_data__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_core_data__WEBPACK_IMPORTED_MODULE_3__);
     11152/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/data */ "@wordpress/data");
     11153/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_data__WEBPACK_IMPORTED_MODULE_4__);
     11154/* harmony import */ var _icons_heart_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../icons/heart-outline */ "./src/components/icons/heart-outline.js");
     11155/* harmony import */ var _icons_heart_filled__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons/heart-filled */ "./src/components/icons/heart-filled.js");
     11156/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../store */ "./src/store/index.js");
     11157
     11158
     11159/**
     11160 * External dependencies
     11161 */
     11162
     11163/**
     11164 * WordPress dependencies
     11165 */
     11166
     11167
     11168
     11169
     11170
     11171/**
     11172 * Internal dependencies
     11173 */
     11174
     11175
     11176
     11177
     11178
     11179var FavoriteButton = function FavoriteButton(_ref) {
     11180  var _ref$showLabel = _ref.showLabel,
     11181      showLabel = _ref$showLabel === void 0 ? true : _ref$showLabel,
     11182      patternId = _ref.patternId;
     11183
     11184  var _useSelect = Object(_wordpress_data__WEBPACK_IMPORTED_MODULE_4__["useSelect"])(function (select) {
     11185    // Fetch favorites so that the state is synced.
     11186    select(_store__WEBPACK_IMPORTED_MODULE_7__["store"]).getFavorites();
     11187    return {
     11188      // canUser defaults to adding `/wp/v2/` prefix, so we need to backtrack up the path.
     11189      hasPermission: !!select(_wordpress_core_data__WEBPACK_IMPORTED_MODULE_3__["store"]).canUser('create', '../../wporg/v1/pattern-favorites'),
     11190      isFavorite: select(_store__WEBPACK_IMPORTED_MODULE_7__["store"]).isFavorite(patternId)
     11191    };
     11192  }),
     11193      hasPermission = _useSelect.hasPermission,
     11194      isFavorite = _useSelect.isFavorite;
     11195
     11196  var _useDispatch = Object(_wordpress_data__WEBPACK_IMPORTED_MODULE_4__["useDispatch"])(_store__WEBPACK_IMPORTED_MODULE_7__["store"]),
     11197      addFavorite = _useDispatch.addFavorite,
     11198      removeFavorite = _useDispatch.removeFavorite;
     11199
     11200  var onClick = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["useCallback"])(function () {
     11201    if (isFavorite) {
     11202      removeFavorite(patternId);
     11203    } else {
     11204      addFavorite(patternId);
     11205    }
     11206  }, [isFavorite]);
     11207
     11208  if (!hasPermission) {
     11209    return null;
     11210  }
     11211
     11212  var buttonClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()('button button-link pattern__favorite-button', {
     11213    'is-favorited': isFavorite,
     11214    'has-label': showLabel
     11215  });
     11216  var labelClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()({
     11217    'screen-reader-text': !showLabel
     11218  });
     11219  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("button", {
     11220    className: buttonClasses,
     11221    onClick: onClick
     11222  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_icons_heart_filled__WEBPACK_IMPORTED_MODULE_6__["default"], {
     11223    className: "pattern__favorite-filled"
     11224  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_icons_heart_outline__WEBPACK_IMPORTED_MODULE_5__["default"], {
     11225    className: "pattern__favorite-outline"
     11226  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
     11227    className: labelClasses
     11228  }, isFavorite ? Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__["__"])('Remove from favorites', 'wporg-patterns') : Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__["__"])('Add to favorites', 'wporg-patterns')));
     11229};
     11230
     11231/* harmony default export */ __webpack_exports__["default"] = (FavoriteButton);
     11232
     11233/***/ }),
     11234
    1111711235/***/ "./src/components/icons/heart-filled.js":
    1111811236/*!**********************************************!*\
     
    1112411242"use strict";
    1112511243__webpack_require__.r(__webpack_exports__);
    11126 /* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../../node_modules/@babel/runtime/helpers/extends.js");
     11244/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js");
    1112711245/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__);
    1112811246/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     
    1115811276"use strict";
    1115911277__webpack_require__.r(__webpack_exports__);
    11160 /* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../../node_modules/@babel/runtime/helpers/extends.js");
     11278/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js");
    1116111279/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__);
    1116211280/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     
    1119211310"use strict";
    1119311311__webpack_require__.r(__webpack_exports__);
    11194 /* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../../node_modules/@babel/runtime/helpers/extends.js");
     11312/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js");
    1119511313/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__);
    11196 /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../../../../node_modules/@babel/runtime/helpers/slicedToArray.js");
     11314/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "./node_modules/@babel/runtime/helpers/slicedToArray.js");
    1119711315/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__);
    11198 /* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../../../../node_modules/@babel/runtime/helpers/objectWithoutProperties.js");
     11316/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js");
    1119911317/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__);
    1120011318/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     
    1167711795"use strict";
    1167811796__webpack_require__.r(__webpack_exports__);
    11679 /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../../../../node_modules/@babel/runtime/helpers/slicedToArray.js");
     11797/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "./node_modules/@babel/runtime/helpers/slicedToArray.js");
    1168011798/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);
    1168111799/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
    1168211800/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
    1168311801/* harmony import */ var _copy_pattern_button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../copy-pattern-button */ "./src/components/copy-pattern-button/index.js");
    11684 /* harmony import */ var _add_to_favorite_button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../add-to-favorite-button */ "./src/components/add-to-favorite-button/index.js");
     11802/* harmony import */ var _favorite_button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../favorite-button */ "./src/components/favorite-button/index.js");
    1168511803/* harmony import */ var _copy_success_message__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./copy-success-message */ "./src/components/pattern-preview-actions/copy-success-message.js");
    1168611804/* harmony import */ var _copy_guide__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./copy-guide */ "./src/components/pattern-preview-actions/copy-guide.js");
     
    1170111819
    1170211820
    11703 var PatternPreviewActions = function PatternPreviewActions() {
     11821var PatternPreviewActions = function PatternPreviewActions(_ref) {
     11822  var patternId = _ref.patternId;
     11823
    1170411824  var _useState = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["useState"])(false),
    1170511825      _useState2 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_useState, 2),
     
    1171611836      return setShowSuccess(true);
    1171711837    }
    11718   }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_add_to_favorite_button__WEBPACK_IMPORTED_MODULE_3__["default"], null), showSuccess && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_copy_success_message__WEBPACK_IMPORTED_MODULE_4__["default"], {
     11838  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_favorite_button__WEBPACK_IMPORTED_MODULE_3__["default"], {
     11839    patternId: patternId
     11840  }), showSuccess && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_copy_success_message__WEBPACK_IMPORTED_MODULE_4__["default"], {
    1171911841    onClick: function onClick() {
    1172011842      return setShowGuide(true);
     
    1178211904"use strict";
    1178311905__webpack_require__.r(__webpack_exports__);
    11784 /* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../../node_modules/@babel/runtime/helpers/extends.js");
     11906/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js");
    1178511907/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__);
    11786 /* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../../../../node_modules/@babel/runtime/helpers/objectWithoutProperties.js");
     11908/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js");
    1178711909/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__);
    1178811910/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     
    1185611978"use strict";
    1185711979__webpack_require__.r(__webpack_exports__);
    11858 /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../../../../node_modules/@babel/runtime/helpers/slicedToArray.js");
     11980/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "./node_modules/@babel/runtime/helpers/slicedToArray.js");
    1185911981/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);
    1186011982/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     
    1194012062"use strict";
    1194112063__webpack_require__.r(__webpack_exports__);
    11942 /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../../../../node_modules/@babel/runtime/helpers/slicedToArray.js");
     12064/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "./node_modules/@babel/runtime/helpers/slicedToArray.js");
    1194312065/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);
    1194412066/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     
    1202912151"use strict";
    1203012152__webpack_require__.r(__webpack_exports__);
    12031 /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../../../../node_modules/@babel/runtime/helpers/slicedToArray.js");
     12153/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "./node_modules/@babel/runtime/helpers/slicedToArray.js");
    1203212154/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);
    1203312155/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     
    1203912161/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
    1204012162/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__);
    12041 /* harmony import */ var _icons_heart_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../icons/heart-outline */ "./src/components/icons/heart-outline.js");
    12042 /* harmony import */ var _icons_heart_filled__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons/heart-filled */ "./src/components/icons/heart-filled.js");
    12043 /* harmony import */ var _canvas__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./canvas */ "./src/components/pattern-thumbnail/canvas.js");
    12044 /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
     12163/* harmony import */ var _favorite_button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../favorite-button */ "./src/components/favorite-button/index.js");
     12164/* harmony import */ var _canvas__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./canvas */ "./src/components/pattern-thumbnail/canvas.js");
     12165/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
    1204512166
    1204612167
     
    1205612177 * Internal dependencies
    1205712178 */
    12058 
    1205912179
    1206012180
     
    1206512185  var pattern = _ref.pattern;
    1206612186
    12067   // @todo Implement a real favoriting process.
    12068   var _useState = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["useState"])(Math.random() < 0.3),
     12187  var _useState = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["useState"])(false),
    1206912188      _useState2 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_useState, 2),
    12070       isFavorite = _useState2[0],
    12071       setFavorite = _useState2[1];
    12072 
    12073   var _useState3 = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["useState"])(false),
    12074       _useState4 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_useState3, 2),
    12075       copied = _useState4[0],
    12076       setCopied = _useState4[1];
     12189      copied = _useState2[0],
     12190      setCopied = _useState2[1];
    1207712191
    1207812192  var handleCopy = function handleCopy() {
    12079     var result = Object(_utils__WEBPACK_IMPORTED_MODULE_8__["copyToClipboard"])(pattern.pattern_content);
     12193    var result = Object(_utils__WEBPACK_IMPORTED_MODULE_7__["copyToClipboard"])(pattern.pattern_content);
    1208012194    setCopied(result);
    1208112195  };
     
    1210312217  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("span", {
    1210412218    className: "screen-reader-text"
    12105   }, pattern.title.rendered), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__["Disabled"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_canvas__WEBPACK_IMPORTED_MODULE_7__["default"], {
     12219  }, pattern.title.rendered), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__["Disabled"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_canvas__WEBPACK_IMPORTED_MODULE_6__["default"], {
    1210612220    className: "pattern-grid__preview",
    1210712221    html: pattern.content.rendered
     
    1211012224  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("h2", {
    1211112225    className: "pattern-grid__title"
    12112   }, pattern.title.rendered), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__["Tooltip"], {
    12113     text: isFavorite ? Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Remove pattern from favorites', 'wporg-patterns') : Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Favorite pattern', 'wporg-patterns')
    12114   }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("button", {
    12115     className: 'button button-link pattern__favorite-button' + (isFavorite ? ' is-favorited' : ''),
    12116     onClick: function onClick() {
    12117       return setFavorite(!isFavorite);
    12118     }
    12119   }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_icons_heart_filled__WEBPACK_IMPORTED_MODULE_6__["default"], {
    12120     className: "pattern__favorite-filled"
    12121   }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_icons_heart_outline__WEBPACK_IMPORTED_MODULE_5__["default"], {
    12122     className: "pattern__favorite-outline"
    12123   }))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__["Button"], {
     12226  }, pattern.title.rendered), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_favorite_button__WEBPACK_IMPORTED_MODULE_5__["default"], {
     12227    showLabel: false,
     12228    patternId: pattern.id
     12229  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__["Button"], {
    1212412230    className: "pattern__copy-button is-small",
    1212512231    isPrimary: true,
     
    1217412280"use strict";
    1217512281__webpack_require__.r(__webpack_exports__);
    12176 /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../../../../node_modules/@babel/runtime/helpers/defineProperty.js");
     12282/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
    1217712283/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
    1217812284/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     
    1225012356/***/ }),
    1225112357
     12358/***/ "./src/components/report-pattern-button/index.js":
     12359/*!*******************************************************!*\
     12360  !*** ./src/components/report-pattern-button/index.js ***!
     12361  \*******************************************************/
     12362/*! exports provided: default */
     12363/***/ (function(module, __webpack_exports__, __webpack_require__) {
     12364
     12365"use strict";
     12366__webpack_require__.r(__webpack_exports__);
     12367/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "./node_modules/@babel/runtime/helpers/slicedToArray.js");
     12368/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);
     12369/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     12370/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
     12371/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
     12372/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__);
     12373/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     12374/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
     12375/* harmony import */ var _wordpress_icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/icons */ "../../../../node_modules/@wordpress/icons/build-module/index.js");
     12376/* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/url */ "@wordpress/url");
     12377/* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_url__WEBPACK_IMPORTED_MODULE_5__);
     12378/* harmony import */ var _report_pattern_modal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../report-pattern-modal */ "./src/components/report-pattern-modal/index.js");
     12379
     12380
     12381
     12382/**
     12383 * WordPress dependencies
     12384 */
     12385
     12386
     12387
     12388
     12389
     12390/**
     12391 * Internal dependencies
     12392 */
     12393
     12394
     12395
     12396var ReportPatternButton = function ReportPatternButton(_ref) {
     12397  var postId = _ref.postId,
     12398      loggedIn = _ref.loggedIn,
     12399      userHasReported = _ref.userHasReported;
     12400
     12401  var _useState = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["useState"])(false),
     12402      _useState2 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_useState, 2),
     12403      showModal = _useState2[0],
     12404      setShowModal = _useState2[1];
     12405
     12406  var _useState3 = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["useState"])(false),
     12407      _useState4 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_useState3, 2),
     12408      hasSubmitted = _useState4[0],
     12409      setHasSubmitted = _useState4[1];
     12410
     12411  var alreadySubmitted = userHasReported || hasSubmitted;
     12412
     12413  if (alreadySubmitted) {
     12414    return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("p", {
     12415      className: "pattern-report-button__copy"
     12416    }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_icons__WEBPACK_IMPORTED_MODULE_4__["Icon"], {
     12417      icon: _wordpress_icons__WEBPACK_IMPORTED_MODULE_4__["check"]
     12418    }), Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])("You've reported this pattern", 'wporg-patterns'));
     12419  }
     12420
     12421  if (!loggedIn) {
     12422    return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("p", {
     12423      className: "pattern-report-button__copy"
     12424    }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("a", {
     12425      href: Object(_wordpress_url__WEBPACK_IMPORTED_MODULE_5__["addQueryArgs"])('/wp-login.php', {
     12426        redirect_to: window.location.pathname
     12427      })
     12428    }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Login to report this pattern', 'wporg-patterns')));
     12429  }
     12430
     12431  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["Fragment"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["Button"], {
     12432    className: "pattern-report-button",
     12433    isLink: true,
     12434    onClick: function onClick() {
     12435      return setShowModal(true);
     12436    }
     12437  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Report this pattern', 'wporg-patterns')), showModal && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_report_pattern_modal__WEBPACK_IMPORTED_MODULE_6__["default"], {
     12438    postId: postId,
     12439    onClose: function onClose(submitted) {
     12440      setShowModal(false);
     12441      setHasSubmitted(submitted);
     12442    }
     12443  }));
     12444};
     12445
     12446/* harmony default export */ __webpack_exports__["default"] = (ReportPatternButton);
     12447
     12448/***/ }),
     12449
     12450/***/ "./src/components/report-pattern-modal/index.js":
     12451/*!******************************************************!*\
     12452  !*** ./src/components/report-pattern-modal/index.js ***!
     12453  \******************************************************/
     12454/*! exports provided: default */
     12455/***/ (function(module, __webpack_exports__, __webpack_require__) {
     12456
     12457"use strict";
     12458__webpack_require__.r(__webpack_exports__);
     12459/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "./node_modules/@babel/runtime/helpers/slicedToArray.js");
     12460/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);
     12461/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     12462/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
     12463/* harmony import */ var _wordpress_a11y__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/a11y */ "@wordpress/a11y");
     12464/* harmony import */ var _wordpress_a11y__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_a11y__WEBPACK_IMPORTED_MODULE_2__);
     12465/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     12466/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
     12467/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
     12468/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__);
     12469/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/data */ "@wordpress/data");
     12470/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_data__WEBPACK_IMPORTED_MODULE_5__);
     12471/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @wordpress/api-fetch */ "@wordpress/api-fetch");
     12472/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_6__);
     12473/* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @wordpress/url */ "@wordpress/url");
     12474/* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_wordpress_url__WEBPACK_IMPORTED_MODULE_7__);
     12475/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../store */ "./src/store/index.js");
     12476
     12477
     12478
     12479/**
     12480 * WordPress dependencies
     12481 */
     12482
     12483
     12484
     12485
     12486
     12487
     12488
     12489/**
     12490 * Internal dependencies
     12491 */
     12492
     12493
     12494
     12495var reducer = function reducer(state, action) {
     12496  switch (action.status) {
     12497    case 'submitting':
     12498      return {
     12499        isSubmitting: true
     12500      };
     12501
     12502    case 'submitted':
     12503      return {
     12504        isSubmitted: true
     12505      };
     12506
     12507    case 'error':
     12508      return {
     12509        hasError: true,
     12510        message: action.message
     12511      };
     12512
     12513    default:
     12514      return {};
     12515  }
     12516};
     12517
     12518var ReportPatternModal = function ReportPatternModal(_ref) {
     12519  var postId = _ref.postId,
     12520      onClose = _ref.onClose;
     12521
     12522  var _useReducer = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["useReducer"])(reducer, {}),
     12523      _useReducer2 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_useReducer, 2),
     12524      state = _useReducer2[0],
     12525      dispatch = _useReducer2[1];
     12526
     12527  var _useState = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["useState"])(''),
     12528      _useState2 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_useState, 2),
     12529      selectedOption = _useState2[0],
     12530      setOption = _useState2[1];
     12531
     12532  var _useState3 = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["useState"])(''),
     12533      _useState4 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_useState3, 2),
     12534      details = _useState4[0],
     12535      setDetails = _useState4[1];
     12536
     12537  var container = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["useRef"])();
     12538
     12539  var submittedText = Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Your report has been submitted.', 'wporg-patterns');
     12540
     12541  var _useSelect = Object(_wordpress_data__WEBPACK_IMPORTED_MODULE_5__["useSelect"])(function (select) {
     12542    var _select = select(_store__WEBPACK_IMPORTED_MODULE_8__["store"]),
     12543        getPatternFlagReasons = _select.getPatternFlagReasons,
     12544        isLoadingPatternFlagReasons = _select.isLoadingPatternFlagReasons;
     12545
     12546    var reasons = getPatternFlagReasons() || [];
     12547    return {
     12548      isLoading: isLoadingPatternFlagReasons(),
     12549      mappedReasons: reasons.sort(function (a, b) {
     12550        return a.id - b.id;
     12551      }).map(function (i) {
     12552        // We need to convert id to string to make the RadioControl match the selected item.
     12553        return {
     12554          label: i.name,
     12555          value: i.id.toString()
     12556        };
     12557      })
     12558    };
     12559  }),
     12560      isLoading = _useSelect.isLoading,
     12561      mappedReasons = _useSelect.mappedReasons;
     12562
     12563  var handleSubmit = function handleSubmit(event) {
     12564    event.preventDefault();
     12565
     12566    if (!selectedOption || !details.length || state.isSubmitted || state.isSubmitting) {
     12567      return;
     12568    }
     12569
     12570    dispatch({
     12571      status: 'submitting'
     12572    });
     12573    _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_6___default()({
     12574      path: Object(_wordpress_url__WEBPACK_IMPORTED_MODULE_7__["addQueryArgs"])('/wp/v2/wporg-pattern-flag'),
     12575      method: 'POST',
     12576      data: {
     12577        parent: postId,
     12578        'wporg-pattern-flag-reason': selectedOption,
     12579        excerpt: details
     12580      }
     12581    }).then(function () {
     12582      dispatch({
     12583        status: 'submitted'
     12584      });
     12585      Object(_wordpress_a11y__WEBPACK_IMPORTED_MODULE_2__["speak"])(submittedText);
     12586      container.current.closest('[role="dialog"]').focus();
     12587    }).catch(function (err) {
     12588      dispatch({
     12589        status: 'error',
     12590        message: err.message
     12591      });
     12592      Object(_wordpress_a11y__WEBPACK_IMPORTED_MODULE_2__["speak"])(Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["sprintf"])(
     12593      /* translators: %s: Error message. */
     12594      Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Error: %s', 'wporg-patterns'), err.message));
     12595    });
     12596  };
     12597
     12598  var handleClose = function handleClose() {
     12599    onClose(state.isSubmitted);
     12600  };
     12601
     12602  var renderView = function renderView() {
     12603    if (isLoading) {
     12604      return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__["Spinner"], null);
     12605    }
     12606
     12607    if (state.isSubmitted) {
     12608      return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("p", {
     12609        className: "pattern-report-modal__copy"
     12610      }, submittedText);
     12611    }
     12612
     12613    return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("form", {
     12614      onSubmit: handleSubmit
     12615    }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__["RadioControl"], {
     12616      className: "pattern-report-modal__radio",
     12617      label: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Please choose a reason:', 'wporg-patterns'),
     12618      selected: selectedOption,
     12619      options: mappedReasons,
     12620      onChange: setOption,
     12621      required: true
     12622    }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__["TextareaControl"], {
     12623      label: "Please provide details (required)",
     12624      value: details,
     12625      onChange: setDetails,
     12626      required: true
     12627    }), state.hasError && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("div", {
     12628      className: "notice notice-large notice-alt notice-error"
     12629    }, state.message), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("div", {
     12630      className: "pattern-report-modal__actions"
     12631    }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__["Button"], {
     12632      isSecondary: true,
     12633      onClick: handleClose
     12634    }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Cancel', 'wporg-patterns')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__["Button"], {
     12635      type: "submit",
     12636      isBusy: state.isSubmitting,
     12637      isPrimary: true
     12638    }, state.isSubmitting ? Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Submitting …', 'wporg-patterns') : Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Report', 'wporg-patterns'))));
     12639  };
     12640
     12641  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__["Modal"], {
     12642    className: "pattern-report-modal ".concat(!state.isSubmitted ? 'pattern-report-modal__has-fixed-height' : ''),
     12643    title: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Report this pattern', 'wporg-patterns'),
     12644    onRequestClose: handleClose
     12645  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("div", {
     12646    ref: container
     12647  }, renderView()));
     12648};
     12649
     12650/* harmony default export */ __webpack_exports__["default"] = (ReportPatternModal);
     12651
     12652/***/ }),
     12653
    1225212654/***/ "./src/hooks/index.js":
    1225312655/*!****************************!*\
     
    1227912681/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RouteProvider", function() { return RouteProvider; });
    1228012682/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useRoute", function() { return useRoute; });
    12281 /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../../../../node_modules/@babel/runtime/helpers/defineProperty.js");
     12683/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
    1228212684/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
    12283 /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../../../../node_modules/@babel/runtime/helpers/slicedToArray.js");
     12685/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "./node_modules/@babel/runtime/helpers/slicedToArray.js");
    1228412686/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__);
    1228512687/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     
    1239312795/* harmony import */ var _components_pattern_preview__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/pattern-preview */ "./src/components/pattern-preview/index.js");
    1239412796/* harmony import */ var _components_pattern_preview_actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/pattern-preview-actions */ "./src/components/pattern-preview-actions/index.js");
    12395 /* harmony import */ var _components_patterns__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/patterns */ "./src/components/patterns/index.js");
     12797/* harmony import */ var _components_report_pattern_button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/report-pattern-button */ "./src/components/report-pattern-button/index.js");
     12798/* harmony import */ var _components_patterns__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/patterns */ "./src/components/patterns/index.js");
    1239612799
    1239712800
     
    1240312806 * Internal dependencies
    1240412807 */
     12808
    1240512809
    1240612810
     
    1243012834
    1243112835if (gridContainer) {
    12432   Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["render"])(Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_components_patterns__WEBPACK_IMPORTED_MODULE_3__["default"], null), gridContainer);
     12836  Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["render"])(Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_components_patterns__WEBPACK_IMPORTED_MODULE_4__["default"], null), gridContainer);
    1243312837} // Load the pattern preview actions
    1243412838
     
    1243712841
    1243812842if (patternActionsContainer) {
    12439   Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["render"])(Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_components_pattern_preview_actions__WEBPACK_IMPORTED_MODULE_2__["default"], null), patternActionsContainer);
     12843  Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["render"])(Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_components_pattern_preview_actions__WEBPACK_IMPORTED_MODULE_2__["default"], {
     12844    patternId: Number(patternActionsContainer.dataset.id)
     12845  }), patternActionsContainer);
     12846} // Load report button
     12847
     12848
     12849var patternReportContainer = document.getElementById('pattern-report');
     12850
     12851if (patternReportContainer) {
     12852  var _patternReportContain = patternReportContainer.dataset,
     12853      loggedIn = _patternReportContain.loggedIn,
     12854      postId = _patternReportContain.postId,
     12855      userHasReported = _patternReportContain.userHasReported;
     12856  Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["render"])(Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_components_report_pattern_button__WEBPACK_IMPORTED_MODULE_3__["default"], {
     12857    userHasReported: userHasReported === 'true',
     12858    loggedIn: loggedIn === 'true',
     12859    postId: postId
     12860  }), patternReportContainer);
    1244012861}
    1244112862
     
    1244612867  !*** ./src/store/actions.js ***!
    1244712868  \******************************/
    12448 /*! exports provided: fetchPatterns, loadPatterns, setCurrentQuery, fetchCategories, loadCategories */
     12869/*! exports provided: fetchPatterns, loadPatterns, setCurrentQuery, fetchCategories, loadCategories, fetchPatternFlagReasons, loadPatternFlagReasons, loadFavorites, addFavorite, removeFavorite */
    1244912870/***/ (function(module, __webpack_exports__, __webpack_require__) {
    1245012871
     
    1245612877/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fetchCategories", function() { return fetchCategories; });
    1245712878/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadCategories", function() { return loadCategories; });
     12879/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fetchPatternFlagReasons", function() { return fetchPatternFlagReasons; });
     12880/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadPatternFlagReasons", function() { return loadPatternFlagReasons; });
     12881/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadFavorites", function() { return loadFavorites; });
     12882/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addFavorite", function() { return addFavorite; });
     12883/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeFavorite", function() { return removeFavorite; });
     12884/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "@babel/runtime/regenerator");
     12885/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);
     12886/* harmony import */ var _wordpress_data_controls__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/data-controls */ "@wordpress/data-controls");
     12887/* harmony import */ var _wordpress_data_controls__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_1__);
     12888
     12889
     12890var _marked = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(addFavorite),
     12891    _marked2 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(removeFavorite);
     12892
     12893/**
     12894 * WordPress dependencies
     12895 */
     12896
    1245812897/**
    1245912898 * Get the action object signalling that patterns have been requested.
     
    1246312902 * @return {Object} Action object.
    1246412903 */
     12904
    1246512905function fetchPatterns(query) {
    1246612906  return {
     
    1252212962  };
    1252312963}
     12964/**
     12965 * Get the action object signalling that pattern flag reasons have been requested.
     12966 *
     12967 * @return {Object} Action object.
     12968 */
     12969
     12970function fetchPatternFlagReasons() {
     12971  return {
     12972    type: 'FETCH_PATTERN_FLAG_REASONS'
     12973  };
     12974}
     12975/**
     12976 * Get the action object signalling that pattern flag reasons have been loaded.
     12977 *
     12978 * @param {Array} reasons A list of reasons.
     12979 * @return {Object} Action object.
     12980 */
     12981
     12982function loadPatternFlagReasons(reasons) {
     12983  return {
     12984    type: 'LOAD_PATTERN_FLAG_REASONS',
     12985    reasons: reasons
     12986  };
     12987}
     12988/**
     12989 * Get the action object signalling that the favorites list has been loaded.
     12990 *
     12991 * @param {number[]} patternIds A list of pattern IDs.
     12992 *
     12993 * @return {Object} Action object.
     12994 */
     12995
     12996function loadFavorites(patternIds) {
     12997  return {
     12998    type: 'LOAD_FAVORITES',
     12999    patternIds: patternIds
     13000  };
     13001}
     13002/**
     13003 * Get the action object to favorite a pattern.
     13004 *
     13005 * @param {number} patternId The pattern to favorite.
     13006 *
     13007 * @return {Object} Action object.
     13008 */
     13009
     13010function addFavorite(patternId) {
     13011  var success;
     13012  return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function addFavorite$(_context) {
     13013    while (1) {
     13014      switch (_context.prev = _context.next) {
     13015        case 0:
     13016          _context.next = 2;
     13017          return Object(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_1__["apiFetch"])({
     13018            path: '/wporg/v1/pattern-favorites',
     13019            method: 'POST',
     13020            data: {
     13021              id: patternId
     13022            }
     13023          });
     13024
     13025        case 2:
     13026          success = _context.sent;
     13027
     13028          if (!(success === true)) {
     13029            _context.next = 5;
     13030            break;
     13031          }
     13032
     13033          return _context.abrupt("return", {
     13034            type: 'ADD_FAVORITE',
     13035            patternId: patternId
     13036          });
     13037
     13038        case 5:
     13039        case "end":
     13040          return _context.stop();
     13041      }
     13042    }
     13043  }, _marked);
     13044}
     13045/**
     13046 * Get the action object to unfavorite a pattern.
     13047 *
     13048 * @param {number} patternId The pattern to unfavorite.
     13049 *
     13050 * @return {Object} Action object.
     13051 */
     13052
     13053function removeFavorite(patternId) {
     13054  var success;
     13055  return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function removeFavorite$(_context2) {
     13056    while (1) {
     13057      switch (_context2.prev = _context2.next) {
     13058        case 0:
     13059          _context2.next = 2;
     13060          return Object(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_1__["apiFetch"])({
     13061            path: '/wporg/v1/pattern-favorites',
     13062            method: 'DELETE',
     13063            data: {
     13064              id: patternId
     13065            }
     13066          });
     13067
     13068        case 2:
     13069          success = _context2.sent;
     13070
     13071          if (!(success === true)) {
     13072            _context2.next = 5;
     13073            break;
     13074          }
     13075
     13076          return _context2.abrupt("return", {
     13077            type: 'REMOVE_FAVORITE',
     13078            patternId: patternId
     13079          });
     13080
     13081        case 5:
     13082        case "end":
     13083          return _context2.stop();
     13084      }
     13085    }
     13086  }, _marked2);
     13087}
    1252413088
    1252513089/***/ }),
     
    1253913103/* harmony import */ var _wordpress_data_controls__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/data-controls */ "@wordpress/data-controls");
    1254013104/* harmony import */ var _wordpress_data_controls__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_1__);
    12541 /* harmony import */ var _reducer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reducer */ "./src/store/reducer.js");
    12542 /* harmony import */ var _selectors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./selectors */ "./src/store/selectors.js");
    12543 /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./actions */ "./src/store/actions.js");
    12544 /* harmony import */ var _resolvers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./resolvers */ "./src/store/resolvers.js");
     13105/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./actions */ "./src/store/actions.js");
     13106/* harmony import */ var _reducer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./reducer */ "./src/store/reducer.js");
     13107/* harmony import */ var _resolvers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./resolvers */ "./src/store/resolvers.js");
     13108/* harmony import */ var _selectors__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./selectors */ "./src/store/selectors.js");
    1254513109/**
    1254613110 * WordPress dependencies
     
    1257013134
    1257113135var store = Object(_wordpress_data__WEBPACK_IMPORTED_MODULE_0__["createReduxStore"])(STORE_NAME, {
    12572   reducer: _reducer__WEBPACK_IMPORTED_MODULE_2__["default"],
    12573   selectors: _selectors__WEBPACK_IMPORTED_MODULE_3__,
    12574   actions: _actions__WEBPACK_IMPORTED_MODULE_4__,
     13136  reducer: _reducer__WEBPACK_IMPORTED_MODULE_3__["default"],
     13137  selectors: _selectors__WEBPACK_IMPORTED_MODULE_5__,
     13138  actions: _actions__WEBPACK_IMPORTED_MODULE_2__,
    1257513139  controls: _wordpress_data_controls__WEBPACK_IMPORTED_MODULE_1__["controls"],
    12576   resolvers: _resolvers__WEBPACK_IMPORTED_MODULE_5__
     13140  resolvers: _resolvers__WEBPACK_IMPORTED_MODULE_4__
    1257713141});
    1257813142Object(_wordpress_data__WEBPACK_IMPORTED_MODULE_0__["register"])(store);
     
    1258413148  !*** ./src/store/reducer.js ***!
    1258513149  \******************************/
    12586 /*! exports provided: patterns, categories, currentQuery, default */
     13150/*! exports provided: patterns, categories, currentQuery, patternFlagReasons, favorites, default */
    1258713151/***/ (function(module, __webpack_exports__, __webpack_require__) {
    1258813152
     
    1259213156/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "categories", function() { return categories; });
    1259313157/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "currentQuery", function() { return currentQuery; });
    12594 /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../../../../node_modules/@babel/runtime/helpers/defineProperty.js");
    12595 /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
    12596 /* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../../../../node_modules/@babel/runtime/helpers/toConsumableArray.js");
    12597 /* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__);
     13158/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "patternFlagReasons", function() { return patternFlagReasons; });
     13159/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "favorites", function() { return favorites; });
     13160/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "./node_modules/@babel/runtime/helpers/toConsumableArray.js");
     13161/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);
     13162/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
     13163/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);
    1259813164/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/data */ "@wordpress/data");
    1259913165/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_data__WEBPACK_IMPORTED_MODULE_2__);
     
    1260413170function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
    1260513171
    12606 function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
     13172function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
    1260713173
    1260813174/**
     
    1263113197  };
    1263213198}
    12633 /**
    12634  * Reducer to track categories.
    12635  *
    12636  * @param {Object} state Current state.
    12637  * @param {Object} action Dispatched action.
    12638  * @return {Object} Updated state.
    12639  */
    12640 
    12641 function categories() {
    12642   var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
    12643   var action = arguments.length > 1 ? arguments[1] : undefined;
    12644 
    12645   switch (action.type) {
    12646     case 'FETCH_CATEGORIES':
    12647       return null;
    12648     // Indicates the query is in progress
    12649 
    12650     case 'LOAD_CATEGORIES':
    12651       // Sort the categories alphabetically.
    12652       // See: https://github.com/WordPress/pattern-directory/pull/76#issuecomment-818330872
    12653       var sorted = (action.categories || []).sort(function (a, b) {
    12654         return a.name.localeCompare(b.name);
    12655       });
    12656       return [Object(_utils__WEBPACK_IMPORTED_MODULE_3__["getAllCategory"])()].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(sorted));
    12657   }
    12658 
    12659   return state;
    12660 }
    12661 /**
    12662  * Reducer to track the current query.
    12663  *
    12664  * @param {Object} state Current state.
    12665  * @param {Object} action Dispatched action.
    12666  * @return {Object} Updated state.
    12667  */
    12668 
    12669 function currentQuery() {
    12670   var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
    12671   var action = arguments.length > 1 ? arguments[1] : undefined;
    12672 
    12673   switch (action.type) {
    12674     case 'SET_CURRENT_QUERY':
    12675       return action.query;
    12676   }
    12677 
    12678   return state;
    12679 }
    1268013199
    1268113200function byId() {
     
    1268313202  var action = arguments.length > 1 ? arguments[1] : undefined;
    1268413203  var patternsById = (action.patterns || []).reduce(function (acc, cur) {
    12685     return _objectSpread(_objectSpread({}, acc), {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()({}, cur.id, cur));
     13204    return _objectSpread(_objectSpread({}, acc), {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()({}, cur.id, cur));
    1268613205  }, {});
    1268713206
     
    1270513224  switch (action.type) {
    1270613225    case 'LOAD_BLOCK_PATTERNS':
    12707       return _objectSpread(_objectSpread({}, state), {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()({}, action.query, [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(state[action.query] || []), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(patternIds))));
     13226      return _objectSpread(_objectSpread({}, state), {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()({}, action.query, [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(state[action.query] || []), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(patternIds))));
    1270813227
    1270913228    default:
     
    1271113230  }
    1271213231}
    12713 
     13232/**
     13233 * Reducer to track categories.
     13234 *
     13235 * @param {Object} state Current state.
     13236 * @param {Object} action Dispatched action.
     13237 * @return {Object} Updated state.
     13238 */
     13239
     13240
     13241function categories() {
     13242  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
     13243  var action = arguments.length > 1 ? arguments[1] : undefined;
     13244
     13245  switch (action.type) {
     13246    case 'FETCH_CATEGORIES':
     13247      return null;
     13248    // Indicates the query is in progress
     13249
     13250    case 'LOAD_CATEGORIES':
     13251      // Sort the categories alphabetically.
     13252      // See: https://github.com/WordPress/pattern-directory/pull/76#issuecomment-818330872
     13253      var sorted = (action.categories || []).sort(function (a, b) {
     13254        return a.name.localeCompare(b.name);
     13255      });
     13256      return [Object(_utils__WEBPACK_IMPORTED_MODULE_3__["getAllCategory"])()].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(sorted));
     13257  }
     13258
     13259  return state;
     13260}
     13261/**
     13262 * Reducer to track the current query.
     13263 *
     13264 * @param {Object} state Current state.
     13265 * @param {Object} action Dispatched action.
     13266 * @return {Object} Updated state.
     13267 */
     13268
     13269function currentQuery() {
     13270  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
     13271  var action = arguments.length > 1 ? arguments[1] : undefined;
     13272
     13273  switch (action.type) {
     13274    case 'SET_CURRENT_QUERY':
     13275      return action.query;
     13276  }
     13277
     13278  return state;
     13279}
     13280/**
     13281 * Reducer to track pattern flag reasons.
     13282 *
     13283 * @param {Object} state Current state.
     13284 * @param {Object} action Dispatched action.
     13285 * @return {Object} Updated state.
     13286 */
     13287
     13288function patternFlagReasons() {
     13289  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
     13290  var action = arguments.length > 1 ? arguments[1] : undefined;
     13291
     13292  switch (action.type) {
     13293    case 'FETCH_PATTERN_FLAG_REASONS':
     13294      return null;
     13295
     13296    case 'LOAD_PATTERN_FLAG_REASONS':
     13297      return _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(action.reasons);
     13298
     13299    default:
     13300      return state;
     13301  }
     13302}
     13303/**
     13304 * Reducer to track the user's favorites.
     13305 *
     13306 * @param {Object} state Current state.
     13307 * @param {Object} action Dispatched action.
     13308 * @return {Object} Updated state.
     13309 */
     13310
     13311function favorites() {
     13312  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
     13313  var action = arguments.length > 1 ? arguments[1] : undefined;
     13314  var patternId = action.patternId;
     13315
     13316  switch (action.type) {
     13317    case 'LOAD_FAVORITES':
     13318      return action.patternIds;
     13319
     13320    case 'ADD_FAVORITE':
     13321      return state.includes(patternId) ? state : [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(state), [patternId]);
     13322
     13323    case 'REMOVE_FAVORITE':
     13324      return state.filter(function (id) {
     13325        return id !== patternId;
     13326      });
     13327  }
     13328
     13329  return state;
     13330}
    1271413331/* harmony default export */ __webpack_exports__["default"] = (Object(_wordpress_data__WEBPACK_IMPORTED_MODULE_2__["combineReducers"])({
    1271513332  patterns: patterns,
    1271613333  categories: categories,
    12717   currentQuery: currentQuery // favorites,
    12718 
     13334  currentQuery: currentQuery,
     13335  patternFlagReasons: patternFlagReasons,
     13336  favorites: favorites
    1271913337}));
    1272013338
     
    1272513343  !*** ./src/store/resolvers.js ***!
    1272613344  \********************************/
    12727 /*! exports provided: getPatternsByQuery, getCategories */
     13345/*! exports provided: getPatternsByQuery, getCategories, getPatternFlagReasons, getFavorites */
    1272813346/***/ (function(module, __webpack_exports__, __webpack_require__) {
    1272913347
     
    1273213350/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getPatternsByQuery", function() { return getPatternsByQuery; });
    1273313351/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getCategories", function() { return getCategories; });
     13352/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getPatternFlagReasons", function() { return getPatternFlagReasons; });
     13353/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getFavorites", function() { return getFavorites; });
    1273413354/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "@babel/runtime/regenerator");
    1273513355/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);
     
    1274313363
    1274413364var _marked = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(getPatternsByQuery),
    12745     _marked2 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(getCategories);
     13365    _marked2 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(getCategories),
     13366    _marked3 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(getPatternFlagReasons),
     13367    _marked4 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(getFavorites);
    1274613368
    1274713369/**
     
    1282913451  }, _marked2, null, [[0, 10]]);
    1283013452}
     13453function getPatternFlagReasons() {
     13454  var results;
     13455  return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function getPatternFlagReasons$(_context3) {
     13456    while (1) {
     13457      switch (_context3.prev = _context3.next) {
     13458        case 0:
     13459          _context3.prev = 0;
     13460          _context3.next = 3;
     13461          return Object(_actions__WEBPACK_IMPORTED_MODULE_3__["fetchPatternFlagReasons"])();
     13462
     13463        case 3:
     13464          _context3.next = 5;
     13465          return Object(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_2__["apiFetch"])({
     13466            path: Object(_wordpress_url__WEBPACK_IMPORTED_MODULE_1__["addQueryArgs"])('/wp/v2/wporg-pattern-flag-reason')
     13467          });
     13468
     13469        case 5:
     13470          results = _context3.sent;
     13471          _context3.next = 8;
     13472          return Object(_actions__WEBPACK_IMPORTED_MODULE_3__["loadPatternFlagReasons"])(results);
     13473
     13474        case 8:
     13475          _context3.next = 12;
     13476          break;
     13477
     13478        case 10:
     13479          _context3.prev = 10;
     13480          _context3.t0 = _context3["catch"](0);
     13481
     13482        case 12:
     13483        case "end":
     13484          return _context3.stop();
     13485      }
     13486    }
     13487  }, _marked3, null, [[0, 10]]);
     13488}
     13489function getFavorites() {
     13490  var results;
     13491  return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function getFavorites$(_context4) {
     13492    while (1) {
     13493      switch (_context4.prev = _context4.next) {
     13494        case 0:
     13495          _context4.prev = 0;
     13496          _context4.next = 3;
     13497          return Object(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_2__["apiFetch"])({
     13498            path: '/wporg/v1/pattern-favorites'
     13499          });
     13500
     13501        case 3:
     13502          results = _context4.sent;
     13503          _context4.next = 6;
     13504          return Object(_actions__WEBPACK_IMPORTED_MODULE_3__["loadFavorites"])(results);
     13505
     13506        case 6:
     13507          _context4.next = 10;
     13508          break;
     13509
     13510        case 8:
     13511          _context4.prev = 8;
     13512          _context4.t0 = _context4["catch"](0);
     13513
     13514        case 10:
     13515        case "end":
     13516          return _context4.stop();
     13517      }
     13518    }
     13519  }, _marked4, null, [[0, 8]]);
     13520}
    1283113521
    1283213522/***/ }),
     
    1283613526  !*** ./src/store/selectors.js ***!
    1283713527  \********************************/
    12838 /*! exports provided: isLoadingPatternsByQuery, getPatterns, getPatternsByQuery, getPattern, getCurrentQuery, isLoadingCategories, hasLoadedCategories, getCategories, getCategoryBySlug */
     13528/*! exports provided: isLoadingPatternsByQuery, getPatterns, getPatternsByQuery, getPattern, getCurrentQuery, isLoadingCategories, hasLoadedCategories, getCategories, getCategoryBySlug, getPatternFlagReasons, isLoadingPatternFlagReasons, getFavorites, isFavorite */
    1283913529/***/ (function(module, __webpack_exports__, __webpack_require__) {
    1284013530
     
    1285013540/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getCategories", function() { return getCategories; });
    1285113541/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getCategoryBySlug", function() { return getCategoryBySlug; });
    12852 /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../../../../node_modules/@babel/runtime/helpers/slicedToArray.js");
     13542/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getPatternFlagReasons", function() { return getPatternFlagReasons; });
     13543/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isLoadingPatternFlagReasons", function() { return isLoadingPatternFlagReasons; });
     13544/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getFavorites", function() { return getFavorites; });
     13545/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFavorite", function() { return isFavorite; });
     13546/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "./node_modules/@babel/runtime/helpers/slicedToArray.js");
    1285313547/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);
    1285413548/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ "./src/store/utils.js");
     
    1297613670  return cat;
    1297713671}
     13672/**
     13673 * Get pattern flag reasons.
     13674 *
     13675 * @param {Object} state Global application state.
     13676 *
     13677 * @return {Array} A list of pattern flag reasons.
     13678 */
     13679
     13680function getPatternFlagReasons(state) {
     13681  return state.patternFlagReasons;
     13682}
     13683/**
     13684 * Check if pattern flag reasons are loading.
     13685 *
     13686 * @param {Object} state Global application state.
     13687 *
     13688 * @return {Array} A list of pattern flag reasons.
     13689 */
     13690
     13691function isLoadingPatternFlagReasons(state) {
     13692  return state.patternFlagReasons === null;
     13693}
     13694/**
     13695 * Get the list of favorites.
     13696 *
     13697 * @param {Object} state Global application state.
     13698 *
     13699 * @return {number[]} A list of favorite pattern IDs.
     13700 */
     13701
     13702function getFavorites(state) {
     13703  return state.favorites;
     13704}
     13705/**
     13706 * Check if a pattern ID is in the list of favorites.
     13707 *
     13708 * @param {Object} state Global application state.
     13709 * @param {number} patternId The pattern to check.
     13710 *
     13711 * @return {number[]} A list of favorite pattern IDs.
     13712 */
     13713
     13714function isFavorite(state, patternId) {
     13715  return state.favorites.includes(patternId);
     13716}
    1297813717
    1297913718/***/ }),
     
    1299013729/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getQueryString", function() { return getQueryString; });
    1299113730/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAllCategory", function() { return getAllCategory; });
    12992 /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../../../../node_modules/@babel/runtime/helpers/defineProperty.js");
     13731/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
    1299313732/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
    1299413733/* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/url */ "@wordpress/url");
     
    1321013949/***/ }),
    1321113950
     13951/***/ "@wordpress/api-fetch":
     13952/*!**********************************!*\
     13953  !*** external ["wp","apiFetch"] ***!
     13954  \**********************************/
     13955/*! no static exports found */
     13956/***/ (function(module, exports) {
     13957
     13958(function() { module.exports = window["wp"]["apiFetch"]; }());
     13959
     13960/***/ }),
     13961
    1321213962/***/ "@wordpress/components":
    1321313963/*!************************************!*\
     
    1323213982/***/ }),
    1323313983
     13984/***/ "@wordpress/core-data":
     13985/*!**********************************!*\
     13986  !*** external ["wp","coreData"] ***!
     13987  \**********************************/
     13988/*! no static exports found */
     13989/***/ (function(module, exports) {
     13990
     13991(function() { module.exports = window["wp"]["coreData"]; }());
     13992
     13993/***/ }),
     13994
    1323413995/***/ "@wordpress/data":
    1323513996/*!******************************!*\
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/css/components/_category-menu.scss

    r10924 r10983  
    33    padding: 0;
    44    position: relative;
    5 
    6     background: linear-gradient(180deg, hsla(0, 0%, 100%, 0) 94%, $color__wp-blue 0);
    7     background-repeat: no-repeat;
    8     background-size: 0;
    9     background-position-x: 0;
    10     transition: all 75ms ease-out;
    11     min-height: 45px;
    125
    136    li {
     
    1912    a {
    2013        display: block;
    21         padding: $gutter-default / 2;
     14        padding: $gutter-default / 3 $gutter-default / 2;
    2215        color: $color-gray-600;
    2316        font-size: 0.875rem;
     
    3225
    3326    li &--is-active {
    34         color: $color-black;
     27        color: $color-white;
     28        background: $color__wp-blue;
     29        border-radius: 2px;
     30
     31        &:hover,
     32        &:focus {
     33            color: $color-white;
     34        }
    3535    }
    3636
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/css/components/_components.scss

    r10882 r10983  
    3131@import "pattern-grid";
    3232@import "pattern-preview";
     33@import "pattern-report-button";
     34@import "pattern-report-modal";
    3335@import "pattern";
    3436@import "search-form";
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/css/components/_favorite-button.scss

    r10882 r10983  
    7474        }
    7575    }
     76
     77    &[disabled] {
     78        background: transparent !important;
     79        text-shadow: none !important;
     80        color: $color-gray-400 !important;
     81    }
    7682}
    7783
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/css/components/_pattern.scss

    r10924 r10983  
    2929    .pattern-actions {
    3030        display: flex;
    31         align-items: stretch;
     31        justify-content: flex-start;
     32        align-items: center;
    3233        flex-wrap: wrap;
     34        gap: 0.5em 2em;
    3335
    34         button + button {
    35             margin-left: 2em;
     36        button {
     37            margin: 0;
     38        }
     39
     40        @media (max-width: $breakpoint-mobile) {
     41            justify-content: center;
    3642        }
    3743    }
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/css/style.css

    r10924 r10983  
    1 @charset "UTF-8";[class*=col-]{margin:inherit}.row{display:flex;flex-direction:row;flex-wrap:wrap}@media (max-width:768px){.row{flex-direction:column;flex-wrap:nowrap}}.row.gutters>.row{margin-left:-2%}@media (max-width:768px){.row.gutters>.row{margin-left:0}}.row.gutters>.row>[class*=col-]{margin-left:2%}@media (max-width:768px){.row.gutters>.row>[class*=col-]{margin-left:0}}.row.around{justify-content:space-around}.row.between{justify-content:space-between}.row.auto .col{flex-grow:1}.col-1{width:8.3333333333%}.offset-1{margin-left:8.3333333333%}.col-2{width:16.6666666667%}.offset-2{margin-left:16.6666666667%}.col-3{width:25%}.offset-3{margin-left:25%}.col-4{width:33.3333333333%}.offset-4{margin-left:33.3333333333%}.col-5{width:41.6666666667%}.offset-5{margin-left:41.6666666667%}.col-6{width:50%}.offset-6{margin-left:50%}.col-7{width:58.3333333333%}.offset-7{margin-left:58.3333333333%}.col-8{width:66.6666666667%}.offset-8{margin-left:66.6666666667%}.col-9{width:75%}.offset-9{margin-left:75%}.col-10{width:83.3333333333%}.offset-10{margin-left:83.3333333333%}.col-11{width:91.6666666667%}.offset-11{margin-left:91.6666666667%}.col-12{width:100%}.offset-12{margin-left:100%}.gutters>.col-1{width:6.33333%}.gutters>.col-1:nth-child(n+13){margin-top:2%}.gutters>.offset-1{margin-left:10.33333%!important}.gutters>.col-2{width:14.66667%}.gutters>.col-2:nth-child(n+7){margin-top:2%}.gutters>.offset-2{margin-left:18.66667%!important}.gutters>.col-3{width:23%}.gutters>.col-3:nth-child(n+5){margin-top:2%}.gutters>.offset-3{margin-left:27%!important}.gutters>.col-4{width:31.33333%}.gutters>.col-4:nth-child(n+4){margin-top:2%}.gutters>.offset-4{margin-left:35.33333%!important}.gutters>.col-5{width:39.66667%}.gutters>.offset-5{margin-left:43.66667%!important}.gutters>.col-6{width:48%}.gutters>.col-6:nth-child(n+3){margin-top:2%}.gutters>.offset-6{margin-left:52%!important}.gutters>.col-7{width:56.33333%}.gutters>.offset-7{margin-left:60.33333%!important}.gutters>.col-8{width:64.66667%}.gutters>.offset-8{margin-left:68.66667%!important}.gutters>.col-9{width:73%}.gutters>.offset-9{margin-left:77%!important}.gutters>.col-10{width:81.33333%}.gutters>.offset-10{margin-left:85.33333%!important}.gutters>.col-11{width:89.66667%}.gutters>.offset-11{margin-left:93.66667%!important}.gutters>.col-12{width:98%}.gutters>.offset-12{margin-left:102%!important}@media (max-width:768px){[class*=" offset-"],[class^=offset-]{margin-left:0}}.first{order:-1}.last{order:1}@media (max-width:768px){.row [class*=col-]{margin-left:0;width:100%}.row.gutters [class*=col-]{margin-bottom:16px}.first-sm{order:-1}.last-sm{order:1}}.gutters .column.push-left,.push-left{margin-right:auto}.gutters .column.push-right,.push-right{margin-left:auto}.gutters .column.push-center,.push-center{margin-left:auto;margin-right:auto}.gutters .column.push-middle,.push-middle{margin-top:auto;margin-bottom:auto}.push-bottom{margin-top:auto}@media (max-width:768px){.gutters .column.push-left-sm,.push-left-sm{margin-left:0}.gutters .column.push-center-sm,.push-center-sm{margin-left:auto;margin-right:auto}.push-top-sm{margin-top:0}}.align-middle{align-items:center}.align-right{justify-content:flex-end}.align-center{justify-content:center}@media (max-width:768px){.align-left-sm{justify-content:flex-start}}.float-right{float:right}.float-left{float:left}@media (max-width:768px){.float-left,.float-right{float:none}}.fixed{position:fixed;top:0;left:0;z-index:100;width:100%}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}optgroup{font-weight:700}table{border-spacing:0}td,th{padding:0}p{margin:1rem 0}cite,dfn,em,i{font-style:italic}blockquote{margin:0 1.5rem}address{margin:0 0 1.5rem}pre{background:#eee;font-family:Courier\ 10 Pitch,Courier,monospace;font-size:.9375rem;line-height:1.6;margin-bottom:1.6rem;max-width:100%;overflow:auto;padding:1.6rem}code,kbd,tt,var{font-family:Monaco,Consolas,Andale Mono,DejaVu Sans Mono,monospace;font-size:.9375rem}abbr,acronym{border-bottom:1px dotted #666;cursor:help}ins,mark{background:#fff9c0;text-decoration:none}big{font-size:125%}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{background:#fff}blockquote,q{quotes:"" ""}blockquote:after,blockquote:before,q:after,q:before{content:""}blockquote{border-left:2px solid #767676;color:#767676;margin:1rem 0;padding-left:.8rem}blockquote cite{font-size:.8rem}figure{margin:0}hr{background-color:#eee;border:0;height:2px;margin:5rem auto}img{height:auto;max-width:100%}h1,h2,h3,h4,h5,h6{font-family:Open Sans,sans-serif;clear:both;line-height:1.5;margin:2rem 0 1rem}.h1,h1{font-size:2.44140625rem}.h1,.h2,h1,h2{font-weight:300}.h2,h2{font-size:1.953125rem}.h3,h3{font-size:1.5625rem;font-weight:400}.h4,h4{font-size:1.25rem;color:#32373c;font-weight:600;padding:0}.h5,h5{font-size:1rem;letter-spacing:.01rem}.h5,.h6,h5,h6{font-weight:600;text-transform:uppercase}.h6,h6{font-size:.8rem;letter-spacing:.8px}a{color:#0073aa;text-decoration:none}a:active,a:focus,a:hover{text-decoration:underline}a:focus{outline:thin dotted}a:active,a:hover{outline:0}li>a,p a{text-decoration:underline}li>a:hover,p a:hover{color:#d54e21}ol,ul{margin:0 0 1.5em 1.5em;padding:0}ul{list-style:square}ol{list-style:decimal}ol.unmarked-list,ul.unmarked-list{list-style:none;padding-left:0}li>ol,li>ul{margin-bottom:0}dt{font-weight:700}dd{margin:0 1.5em 1.5em}table{border:1px solid #eee;border-collapse:collapse;font-size:.8rem;margin:0 0 1rem;padding:0;width:100%}table thead{background:#32373c;color:#fff}table td,table th{border:1px solid #eee;font-weight:400;margin:0;padding:.4rem;text-align:left;vertical-align:top}table tbody tr:nth-child(2n){background:#f7f7f7}html{font-size:100%}body,button,input,select,textarea{color:#32373c;font-family:Open Sans,sans-serif;font-size:100%;line-height:1.5}@media screen and (min-width:737px){html{font-size:1.125rem}}.custom-select{display:inline-block;box-sizing:border-box;padding:.5rem 2rem .5rem .8rem;width:auto;font-size:1em;line-height:1.3;border:1px solid #6c7782;box-shadow:none;border-radius:.5em;-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:transparent;background-image:url('data:image/svg+xml;charset=US-ASCII,%3Csvg width="14" height="8" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="M2 0L7 5L12 0L14 1L7 8L0 1L2 0Z" fill="%23555D66"/%3E%3C/svg%3E%0A');background-repeat:no-repeat;background-position:right .7em top 50%;background-size:.65em auto}.custom-select::-ms-expand{display:none}.custom-select:focus{box-shadow:0 0 1px 3px rgba(59,153,252,.7);box-shadow:0 0 0 3px -moz-mac-focusring;color:#222;outline:none}.custom-select option{font-weight:400}html{font-size:1rem}@media screen and (min-width:737px){html{font-size:1rem}}.screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!important;width:1px}.screen-reader-text:focus{background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;color:#21759b;display:block;font-size:.875rem;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}.site-content[tabindex="-1"]:focus{outline:0}.no-js .hide-if-no-js{display:none}.alignleft{display:inline;float:left;margin-right:1.5em}.alignright{display:inline;float:right;margin-left:1.5em}.aligncenter{clear:both;display:block;margin-left:auto;margin-right:auto}@media screen and (max-width:480px){.alignleft,.alignright{display:block;float:none;margin-left:auto;margin-right:auto}}.button,.button-primary,.button-secondary,.plugin-upload-form .button-primary{border:1px solid;border-radius:3px;box-sizing:border-box;cursor:pointer;display:inline-block;font-size:.8rem;height:1.5625rem;line-height:1;margin:0;padding:0 .8rem;text-decoration:none;white-space:nowrap;-webkit-appearance:none}button::-moz-focus-inner,input[type=button]::-moz-focus-inner,input[type=reset]::-moz-focus-inner,input[type=submit]::-moz-focus-inner{border:0;padding:0}.button-group.button-xl .button,.button.button-xl{font-size:1rem;height:2.44140625rem;line-height:1;padding:0 1.5rem}.button-group.button-large .button,.button.button-large{height:1.953125rem;line-height:1;padding:0 1rem}.button-group.button-small .button,.button.button-small{font-size:.64rem;height:1.25rem;line-height:1;padding:0 .5rem}a.button,a.button-primary,a.button-secondary{line-height:1.5625rem}.button-group.button-large a.button,a.button.button-large{line-height:1.953125rem}.button-group.button-xl a.button,a.button.button-xl{line-height:2.44140625rem}.button-group.button-small a.button,a.button.button-small{line-height:1.25rem}.button:active,.button:focus{outline:none}.button.hidden{display:none}input[type=reset],input[type=reset]:active,input[type=reset]:focus,input[type=reset]:hover{background:none;border:none;box-shadow:none;padding:0 2px 1px;width:auto}.button,.button-secondary,.button:visited{background:#f7f7f7;border-color:#ccc;box-shadow:0 1px 0 #ccc;color:#555;vertical-align:top}p .button{vertical-align:baseline}.button-secondary:focus,.button-secondary:hover,.button.focus,.button.hover,.button:focus,.button:hover{background:#fafafa;border-color:#999;color:#23282d}.button-link:focus,.button-secondary:focus,.button.focus,.button:focus{border-color:#5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.button-secondary:active,.button.active,.button.active:hover,.button:active{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.button.active:focus{border-color:#5b9dd9;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8)}.button-disabled,.button-secondary.disabled,.button-secondary:disabled,.button-secondary[disabled],.button.disabled,.button:disabled,.button[disabled]{background:#f7f7f7!important;border-color:#ddd!important;box-shadow:none!important;color:#a0a5aa!important;cursor:default;text-shadow:0 1px 0 #fff!important;transform:none!important}.button-link,input[type=submit].button-link{background:none;border:0;border-radius:0;box-shadow:none;cursor:pointer;margin:0;outline:none;padding:0}.button-link:focus{outline:1px solid #5b9dd9}.button-primary,.download-button,.plugin-upload-form .button-primary{text-decoration:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.button-primary,.button-primary:visited,.download-button,.download-button:visited,.plugin-upload-form .button-primary,.plugin-upload-form .button-primary:visited{background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff}.button-primary.focus,.button-primary.hover,.button-primary:focus,.button-primary:hover,.download-button.focus,.download-button.hover,.download-button:focus,.download-button:hover,.plugin-upload-form .button-primary.focus,.plugin-upload-form .button-primary.hover,.plugin-upload-form .button-primary:focus,.plugin-upload-form .button-primary:hover{background:#008ec2;border-color:#006799;box-shadow:0 1px 0 #006799;color:#fff}.button-primary.focus,.button-primary:focus,.download-button.focus,.download-button:focus,.plugin-upload-form .button-primary.focus,.plugin-upload-form .button-primary:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.button-primary.active,.button-primary.active:focus,.button-primary.active:hover,.button-primary:active,.download-button.active,.download-button.active:focus,.download-button.active:hover,.download-button:active,.plugin-upload-form .button-primary.active,.plugin-upload-form .button-primary.active:focus,.plugin-upload-form .button-primary.active:hover,.plugin-upload-form .button-primary:active{background:#0073aa;border-color:#006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.button-primary.disabled,.button-primary:disabled,.button-primary[disabled],.download-button.disabled,.download-button:disabled,.download-button[disabled],.plugin-upload-form .button-primary.disabled,.plugin-upload-form .button-primary:disabled,.plugin-upload-form .button-primary[disabled]{background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;color:#66c6e4!important;cursor:default;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.button-primary.button.button-hero,.download-button.button.button-hero,.plugin-upload-form .button-primary.button.button-hero{box-shadow:0 2px 0 #006799}.button-primary.button.button-hero.active,.button-primary.button.button-hero.active:focus,.button-primary.button.button-hero.active:hover,.button-primary.button.button-hero:active,.download-button.button.button-hero.active,.download-button.button.button-hero.active:focus,.download-button.button.button-hero.active:hover,.download-button.button.button-hero:active,.plugin-upload-form .button-primary.button.button-hero.active,.plugin-upload-form .button-primary.button.button-hero.active:focus,.plugin-upload-form .button-primary.button.button-hero.active:hover,.plugin-upload-form .button-primary.button.button-hero:active{box-shadow:inset 0 3px 0 #006799}.button-primary-disabled{background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;color:#66c6e4!important;cursor:default;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.button-group{display:inline-block;font-size:0;position:relative;vertical-align:middle;white-space:nowrap}.button-group>.button{border-radius:0;display:inline-block;margin-right:-1px;z-index:10}.button-group>.button-primary{z-index:100}.button-group>.button:hover{z-index:20}.button-group>.button:first-child{border-radius:3px 0 0 3px}.button-group>.button:last-child{border-radius:0 3px 3px 0}.button-group>.button:focus{position:relative;z-index:1}@media screen and (max-width:737px){.button,.button.button-large,.button.button-small,.plugin-upload-form .button-primary{font-size:14px;height:auto;line-height:normal;margin-bottom:4px;padding:6px 14px;vertical-align:middle}}.clear:after,.clear:before,.comment-content:after,.comment-content:before,.entry-content:after,.entry-content:before,.home-below:after,.home-below:before,.site-content:after,.site-content:before,.site-footer:after,.site-footer:before,.site-header:after,.site-header:before{content:"";display:table;table-layout:fixed}.clear:after,.comment-content:after,.entry-content:after,.home-below:after,.site-content:after,.site-footer:after,.site-header:after{clear:both}p.subheading{color:#82878c;font-weight:300;margin:-.4rem auto 2rem;text-align:center}p.intro,p.subheading{font-size:1.25rem}p.aside{font-size:.8rem}p.note{font-size:.64rem;letter-spacing:.01rem;max-width:18.1898940355rem}input,textarea{box-sizing:border-box}input[type=checkbox],input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=radio],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{background-color:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);color:#32373c;outline:none;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=email],input[type=url]{direction:ltr}input[type=number]{height:28px;line-height:inherit}input[type=checkbox],input[type=radio]{background:#fff;border:1px solid #b4b9be;box-shadow:inset 0 1px 2px rgba(0,0,0,.1);clear:none;color:#555;cursor:pointer;display:inline-block;height:16px;line-height:0;margin:-4px 4px 0 0;min-width:16px;outline:0;padding:0!important;text-align:center;transition:border-color .05s ease-in-out;vertical-align:middle;width:16px;-webkit-appearance:none}input[type=checkbox]:checked:before,input[type=radio]:checked:before{display:inline-block;float:left;font:normal 21px/1 dashicons;vertical-align:middle;width:16px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}input[type=checkbox]:checked:before{color:#1e8cbe;content:"";margin:-3px 0 0 -4px}input[type=radio]{border-radius:50%;line-height:10px;margin-right:4px}input[type=radio]:checked+label:before{color:#82878c}input[type=radio]:checked:before{background-color:#1e8cbe;border-radius:50px;content:"•";font-size:24px;height:6px;line-height:16px;margin:4px;text-indent:-9999px;width:6px}input[type=reset]:active,input[type=reset]:hover{color:#00a0d2}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{border-radius:0;font-size:14px;padding:3px 5px}textarea{line-height:1.4;overflow:auto;padding:2px 6px;resize:vertical}textarea.code{line-height:1.4;padding:4px 6px 1px}label{cursor:pointer;vertical-align:middle}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:hsla(0,0%,100%,.5);border-color:hsla(0,0%,87.1%,.75);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:none;box-shadow:none}input.large-text,textarea.large-text{width:99%}input.regular-text{width:25em}input.small-text{padding:1px 6px;width:50px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;padding:6px 10px}input[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}input[type=checkbox]{-webkit-appearance:none;padding:10px}input[type=checkbox]:checked:before{font:normal 30px/1 dashicons;margin:-3px -5px}input[type=checkbox],input[type=radio]{height:25px;width:25px}input[type=radio]:checked:before{vertical-align:middle;width:9px;height:9px;margin:7px;line-height:16px}input,textarea{font-size:16px}input[type=number].small-text,input[type=password].small-text,input[type=search].small-text,input[type=text].small-text{width:auto;max-width:55px;display:inline;padding:3px 6px;margin:0 3px}input.regular-text{width:100%}label{font-size:14px}fieldset label{display:block}}a.button:active,a.button:focus,a.button:hover{text-decoration:none}.notice{background:#fff;border-left:4px solid #fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:1em 0;padding:1px 12px}.notice p{font-size:.8rem;margin:.5em 0;padding:2px}.notice.notice-alt{box-shadow:none}.notice.notice-large{padding:10px 20px}.notice.notice-success{border-left-color:#46b450}.notice.notice-success.notice-alt{background-color:#ecf7ed}.notice.notice-warning{border-left-color:#ffb900}.notice.notice-warning.notice-alt{background-color:#fff8e5}.notice.notice-error{border-left-color:#dc3232}.notice.notice-error.notice-alt{background-color:#fbeaea}.notice.notice-info{border-left-color:#00a0d2}.notice.notice-info.notice-alt{background-color:#e5f5fa}.error-404 .page-content,.error-404 .page-title{text-align:center}.error-404 .page-content .logo-swing{height:10rem;margin:6rem auto;position:relative;text-align:center;width:10rem}.error-404 .page-content .logo-swing .wp-logo{left:0;max-width:none;position:absolute;top:0;width:10rem}@keyframes hinge{10%{width:180px;height:180px;transform:rotate(0deg)}15%{width:185px;height:185px;transform:rotate(0deg)}20%{width:180px;height:180px;transform:rotate(5deg)}40%{transform-origin:top left;animation-timing-function:ease-in-out}60%{transform:rotate(40deg);transform-origin:top left;animation-timing-function:ease-in-out}40%,80%{transform:rotate(60deg);transform-origin:top left;animation-timing-function:ease-in-out;opacity:1}to{transform:translate3d(0,700px,0);opacity:0}}.hinge{animation-duration:2s;animation-name:hinge}.comments-area{margin-top:5em}.comments-area>:last-child{margin-bottom:0}.comments-area .comment-list+.comment-respond{border-top:1px solid #eaeaea}.comments-area .comment-list+.comment-respond,.comments-area .comment-navigation+.comment-respond{padding-top:1.6em}.comments-area .comments-title{margin-bottom:1.3333em}.comments-area .comment-list{list-style:none;margin:0}.comments-area .comment-list .pingback,.comments-area .comment-list .trackback,.comments-area .comment-list article{border-top:1px solid #eaeaea;padding:1.6em 0}.comments-area .comment-list article:not(:only-child){padding-bottom:0}.comments-area .comment-list article+.comment-respond{padding-bottom:1.6em}.comments-area .comment-list .children{list-style:none;margin:0}.comments-area .comment-list .children>li{padding-left:.8em}.comments-area .comment-list .alt{background:none}.comments-area .comment-author{color:#999;margin-bottom:.4em}.comments-area .comment-author .avatar{float:left;height:24px;margin-right:.8em;width:24px}.comments-area .comment-metadata,.comments-area .pingback .edit-link{color:#999;line-height:1.5}.comments-area .comment-metadata a,.comments-area .pingback .edit-link a{color:#777}.comments-area .comment-metadata{font-size:.8rem;margin-bottom:1.6em}.comments-area .comment-metadata .edit-link,.comments-area .pingback .edit-link{margin-left:1em}.comments-area .pingback .edit-link:before{top:5px}.comments-area .comment-content ol,.comments-area .comment-content ul{margin:0 0 1.6em 1.3333em}.comments-area .comment-content>:last-child,.comments-area .comment-content li>ol,.comments-area .comment-content li>ul{margin-bottom:0}.comments-area .comment-content .reply{font-size:12px}.comments-area .comment-content .reply a{border:1px solid #eaeaea;color:#707070;display:inline-block;font-weight:700;line-height:1;margin-top:2em;padding:.4167em .8333em;text-transform:uppercase}.comments-area .comment-content .reply a:focus,.comments-area .comment-content .reply a:hover{border-color:#333;color:#333;outline:0}.comments-area .comment-reply-title a{font-weight:inherit}.comments-area .comment-form label{font-size:.8rem;font-weight:700;display:block;letter-spacing:.04em;line-height:1.5}.comments-area .comment-form input[type=email],.comments-area .comment-form input[type=text],.comments-area .comment-form input[type=url],.comments-area .comment-form textarea{width:100%}.comments-area .comment-awaiting-moderation,.comments-area .comment-notes,.comments-area .form-allowed-tags,.comments-area .logged-in-as{font-size:1rem;line-height:1.5;margin-bottom:2em}.comments-area .no-comments{border-top:1px solid #eaeaea;color:#999;font-weight:700;padding-top:1.6em}.comments-area .comment-navigation+.no-comments{border-top:0}.comments-area .form-allowed-tags code{font-family:Inconsolata,monospace}.comments-area .form-submit{margin-bottom:0}.comments-area .required{color:#c0392b}.entry-content{hyphens:auto;word-wrap:break-word}.entry-content>p:first-child{margin-top:0}.entry-content [class*=col-]~h1,.entry-content [class*=col-]~h2,.entry-content [class*=col-]~h3,.entry-content [class*=col-]~h4,.entry-content [class*=col-]~h5,.entry-content [class*=col-]~h6{clear:none}.entry-header{position:relative}.entry-header .sticky-post{color:#999;font-size:.8rem;font-style:italic;position:absolute;top:-.8rem}.entry-meta{color:#999;font-size:.8rem;margin-bottom:1rem}.entry-meta a{color:#777}.entry-meta>span{margin-right:1rem}.entry-meta>span :last-of-type{margin:0}.entry-meta .byline,.entry-meta .updated:not(.published),.sticky .entry-meta .posted-on{display:none}.group-blog .entry-meta .byline,.single .entry-meta .byline{display:inline}.entry-summary{hyphens:auto;word-wrap:break-word}body:not(.single):not(.search) .site-main .post{margin-bottom:3.0517578125rem;max-width:40em}.gallery{margin-bottom:1.5rem}.gallery .gallery-item{display:inline-block;margin:0;text-align:center;vertical-align:top;width:100%}.gallery.gallery-columns-2 .gallery-item{max-width:50%}.gallery.gallery-columns-3 .gallery-item{max-width:33.33%}.gallery.gallery-columns-4 .gallery-item{max-width:25%}.gallery.gallery-columns-5 .gallery-item{max-width:20%}.gallery.gallery-columns-6 .gallery-item{max-width:16.66%}.gallery.gallery-columns-7 .gallery-item{max-width:14.28%}.gallery.gallery-columns-8 .gallery-item{max-width:12.5%}.gallery.gallery-columns-9 .gallery-item{max-width:11.11%}.gallery .gallery-caption{display:block}.main-navigation{background:#0073aa;clear:both;left:0;position:absolute;top:60px;width:100%}.main-navigation ul{display:none;list-style:none;margin:0;padding-left:0}.main-navigation ul ul{box-shadow:0 3px 3px rgba(0,0,0,.2);float:left;left:-999em;position:absolute;top:1.5em;z-index:99999}.main-navigation ul ul ul{left:-999em;top:0}.main-navigation ul ul li.focus>ul,.main-navigation ul ul li:hover>ul{left:100%}.main-navigation ul ul a{width:200px}.main-navigation ul li.focus>ul,.main-navigation ul li:hover>ul{left:auto}.main-navigation li{border-top:1px solid hsla(0,0%,100%,.2);padding:1rem}.main-navigation a{color:hsla(0,0%,100%,.8);display:block;font-size:.8rem;text-decoration:none}.main-navigation a.active,.main-navigation a:hover{color:#fff}@media screen and (min-width:737px){.main-navigation a.active{border-bottom:1px solid}}.main-navigation.toggled{z-index:1}.main-navigation.toggled ul{display:block}.menu-toggle{background:transparent;border:none;color:#fff;height:3.5rem;position:absolute;right:1rem;top:-58px;width:3.5rem}.toggled .menu-toggle:before{content:""}@media screen and (min-width:737px){.menu-toggle{display:none}.main-navigation{float:right;position:static;width:auto}.main-navigation.toggled{padding:1px 0}.main-navigation ul{display:inline-block;font-size:0}.main-navigation ul li{border:0;display:inline-block;font-size:1rem;margin-right:1rem;padding:0}.main-navigation ul li:last-of-type{margin-right:0}}.comment-content .wp-smiley,.entry-content .wp-smiley,.page-content .wp-smiley{border:none;margin-bottom:0;margin-top:0;padding:0}embed,iframe,object{max-width:100%}body.page .gutters .col-12{width:100%}body.page .entry-header{background:#0073aa;padding:1rem 0}body.page .entry-header .entry-title{color:#fff;font-size:1.5625rem;font-weight:300;line-height:1;margin:0 auto;padding:0 1.5625rem}body.page .entry-header.home{padding:1.5625rem 1.143rem;text-align:center}@media screen and (min-width:737px){body.page .site-header+.site-main .entry-title{padding:initial}}body.page .entry-content,body.page .entry-footer{margin:0 auto;max-width:960px;padding:3.0517578125rem 1.5625rem}.post-navigation{margin:5em auto;padding:0}.post-navigation a{border-bottom:1px solid #eaeaea;color:#444;display:block;font-weight:600;padding:11px 0 12px;text-transform:none;width:100%}.post-navigation a:hover{color:#21759b}.post-navigation .nav-links{border-top:1px solid #eaeaea;hyphens:auto;word-wrap:break-word}.post-navigation .meta-nav{color:#777;display:block;font-size:13px;line-height:2;text-transform:uppercase}.post-navigation .nav-next{text-align:right}.pagination .nav-links{text-align:center}.pagination .nav-links .page-numbers{background-color:#f9f9f9;cursor:hand;display:inline-block;min-width:2em;padding:8px}.pagination .nav-links .page-numbers.dots,.pagination .nav-links .page-numbers.next,.pagination .nav-links .page-numbers.prev{background:none;font-size:.9em;width:auto}.pagination .nav-links .page-numbers.dots{cursor:inherit}@media screen and (max-width:737px){.pagination .nav-links .page-numbers.next,.pagination .nav-links .page-numbers.prev{font-size:0;min-width:0;padding:0}.pagination .nav-links .page-numbers.next:after,.pagination .nav-links .page-numbers.prev:before{background-color:#f9f9f9;display:inline-block;font-size:1rem;line-height:1.5;min-width:2em;padding:8px}.pagination .nav-links .page-numbers.prev:before{content:"‹"}.pagination .nav-links .page-numbers.next:after{content:"›"}}.pagination .nav-links span.page-numbers{background-color:#f7f7f7;font-weight:700}.search-form .search-field{line-height:normal;margin:0;padding:4px 5px;vertical-align:text-bottom}body.search .gutters .col-12{width:100%}body.search .site-main{margin:0 auto;max-width:960px;padding:0 1.5625rem 3.0517578125rem}.site-content{max-width:960px;padding:0 1.5625rem}@media screen and (min-width:737px){.site-content{padding:0 10px 3.0517578125rem}}@media screen and (max-width:737px){.site-content .site-main{float:none;margin:0;width:auto}}.home .site-content,.page .site-content,.site-content.page{margin:auto;max-width:none;padding:0}.site-content .page-title{font-size:1.25rem;font-weight:400}.site-content .no-results{margin:0 auto 3.0517578125rem;max-width:40em;padding:0 2rem}.site-description{color:hsla(0,0%,100%,.8);font-size:1.25rem;font-weight:300;margin:-.4rem auto 2rem;text-align:center}.site-header{background:#0073aa;padding:1rem 0;position:relative}.site-header .site-branding{margin:0 auto;max-width:960px;padding:0 1.5625rem}@media screen and (min-width:737px){.site-header .site-branding{padding:0 10px}}.site-header.home{padding:1.5625rem 1.143rem;text-align:center}.site-title{display:inline-block;font-size:1.5625rem;font-weight:300;line-height:1;margin:0 2rem 0 0;max-width:none}.site-title a{color:#fff;font-weight:300}.site-title a:active,.site-title a:focus,.site-title a:hover{text-decoration:none}.site-header.home .site-title{display:inherit;font-size:3.8146972656rem;margin:2rem 0 1rem}.widget-area{font-size:.8rem}@media screen and (min-width:480px) and (max-width:768px){.widget-area{display:flex}.widget-area .widget{width:48%}}#wporg-footer{background-color:#f7f7f7;border-top:1px solid #dfdfdf;padding:22px 14px 65px}#wporg-footer,#wporg-footer .wrapper{clear:both;margin:0 auto;overflow:auto}#wporg-footer .wrapper{max-width:930px}#wporg-footer ul{float:left;margin-bottom:20px;margin-left:24px;overflow:auto;padding-left:0;width:135px}@media screen and (min-width:960px){#wporg-footer ul:first-child{margin-left:0}}#wporg-footer ul li{color:#bbb;font-size:14px;list-style-type:none;margin-bottom:1px}#wporg-footer ul li a{text-decoration:none;text-decoration-skip-ink:none}#wporg-footer ul li a:hover{color:#0073aa;text-decoration:underline}#wporg-footer .cip{clear:both;color:#ccc;float:none;font-size:.8rem;letter-spacing:.3em;margin:35px auto 0;text-align:center;text-transform:uppercase}#wporg-footer .cip.cip-image{background:url(//s.w.org/style/images/codeispoetry.png?1=) 50% no-repeat;background-size:190px 15px;height:15px;text-indent:-9999px;width:190px}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:1.5dppx),only screen and (min-resolution:144dpi){#wporg-footer .cip.cip-image{background-image:url(//s.w.org/style/images/codeispoetry-2x.png?1=)}}@media screen and (min-width:561px) and (max-width:959px){#wporg-footer .wrapper{max-width:600px}#wporg-footer ul{margin-left:2%;width:32%}#wporg-footer ul:nth-child(3n+1){margin-left:0}#wporg-footer ul:nth-child(4n){clear:both}}@media screen and (max-width:560px){#wporg-footer .wrapper{max-width:360px}#wporg-footer ul{margin-left:4%;width:48%}#wporg-footer ul:nth-child(odd){margin-left:0;clear:both}}#wporg-header{background:#23282d;height:140px;position:relative;text-align:center;width:100%}#wporg-header .wrapper{margin:0 auto;max-width:960px}#wporg-header h1{display:inline-block;margin:auto;width:303px}#wporg-header h1 a{background:url(//s.w.org/style/images/wporg-logo.svg?3=) 0 no-repeat;background-size:290px 46px;display:block;height:88px;text-indent:-9999px}#wporg-header h2.rosetta{clear:none;color:#dfdfdf;font-family:Georgia,Times New Roman,serif;font-size:30px;margin:0 0 0 60px}#wporg-header h2.rosetta a{border-bottom:none;color:#dfdfdf;display:block;height:52px;line-height:22px;padding:0}#wporg-header h2.rosetta a:hover{text-decoration:none}#wporg-header #wporg-header-menu{background:#23282d;left:-75%;list-style:none;margin:0;max-width:75%;min-width:200px;position:absolute;text-align:left;top:100%;transition:left .3s;z-index:100000}#wporg-header #wporg-header-menu.toggled{left:0}#wporg-header ul li{list-style-type:none;position:relative}#wporg-header ul li a{color:#eee;display:block;font-family:Open Sans,Helvetica,Arial,Liberation Sans,sans-serif;font-size:13px;font-weight:600;height:34px;line-height:34px;margin:0 4px;padding:10px 30px;text-decoration:none}#wporg-header ul li a.subcurrent{font-weight:700}@media (max-width:768px){#wporg-header ul li a{height:auto}}#wporg-header ul li.current-menu-item a,#wporg-header ul li.current_page_parent a,#wporg-header ul li a.current,#wporg-header ul li a:hover{color:#00a0d2}#wporg-header ul li#download,#wporg-header ul li.download{float:right;height:34px;margin-right:14px;overflow:hidden;padding:0 0 34px}@media screen and (max-width:767px){#wporg-header ul li#download,#wporg-header ul li.download{display:block;float:none;margin:10px 20px 20px;padding-bottom:0;height:auto}#wporg-header ul li#download a,#wporg-header ul li.download a{padding:4px 10px;text-align:center}}#wporg-header ul li#download a,#wporg-header ul li.download a{margin:0;padding:0 16px}#wporg-header ul li#download a:hover,#wporg-header ul li.download a:hover{color:#eee}#wporg-header ul li#download.current,#wporg-header ul li#download.current-menu-item,#wporg-header ul li#download .uparrow,#wporg-header ul li.download.current,#wporg-header ul li.download.current-menu-item,#wporg-header ul li.download .uparrow{display:none}#wporg-header ul li .nav-submenu{clip:rect(1px,1px,1px,1px);height:1px;left:-2px;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;z-index:99999}#wporg-header ul li .nav-submenu li a{display:inline-block;height:24px;line-height:24px;margin:0;white-space:nowrap}@media screen and (min-width:768px){#wporg-header #head-search{float:right;margin-right:14px;padding-top:30px}}#wporg-header #head-search form{border-bottom:1px solid #3f3f3f;display:inline-block;margin-left:60px;width:288px}#wporg-header #head-search form input.text{background:#191e23;border:0;border-radius:0;box-sizing:content-box;color:#b4b9be;float:left;font-family:Open Sans,sans-serif;font-size:12px;height:24px;margin:0;outline:none;padding:3px;vertical-align:top;width:256px}#wporg-header #head-search form input.text::-moz-placeholder{color:#eee}@media screen and (max-width:480px){#wporg-header #head-search form input.text{width:216px}}#wporg-header #head-search form .button{background:#191e23 url(//s.w.org/wp-includes/images/admin-bar-sprite.png?d=20120831) no-repeat 2px 5px;border:none;border-radius:0;box-shadow:none;float:left;height:30px;margin:0;padding:0;text-shadow:none!important;width:26px}@media screen and (max-width:480px){#wporg-header #head-search form{width:248px}}@media screen and (min-width:480px){#wporg-header #head-search form{margin-left:0}}@media screen and (min-width:768px){#wporg-header{height:120px;text-align:inherit}#wporg-header h1{float:left;padding-left:10px}#wporg-header h2.rosetta{float:left;margin-left:0;padding:36px 27px 0}#wporg-header #headline h2{text-rendering:optimizeLegibility}#wporg-header #wporg-header-menu{float:left;height:46px;list-style:none;margin:-15px 0 0;max-width:inherit;min-width:0;padding:0;position:static;width:100%}#wporg-header ul li{float:left;position:relative}#wporg-header ul li a{height:46px;padding:0 6px}#wporg-header ul li a.current~.uparrow{border-bottom:9px solid #f7f7f7;border-left:9px solid transparent;border-right:9px solid transparent;height:0;margin:-8px auto 0;width:0}#wporg-header ul li.current-menu-item:after,#wporg-header ul li.current_page_parent:after{border-bottom:9px solid #f7f7f7;border-left:9px solid transparent;border-right:9px solid transparent;content:"";height:0;left:50%;margin:-8px 0 0 -9px;position:absolute;width:0}#wporg-header ul li .nav-submenu:hover~.uparrow,#wporg-header ul li:hover .nav-submenu~.uparrow{border-bottom:9px solid #32373c;border-left:9px solid transparent;border-right:9px solid transparent;height:0;margin:-10px auto 0;width:0}#wporg-header ul li .nav-submenu{background:#32373c;border:1px solid #32373c;border-top:0;margin-top:-1px;min-width:0}#wporg-header ul li .nav-submenu li{float:none}#wporg-header ul li .nav-submenu li a{height:34px;line-height:34px}#wporg-header .nav-menu .focus>ul,#wporg-header .nav-menu ul li:hover>ul,#wporg-header ul.nav-menu .focus>ul,#wporg-header ul.nav-menu li:hover>ul{clip:inherit;height:inherit;overflow:inherit;width:inherit}#wporg-header ul li.current-menu-item:after,#wporg-header ul li.current_page_parent:after,#wporg-header ul li a.current~.uparrow{border-bottom-color:#0073aa}}.page-download #wporg-header #download,.page-parent-download #wporg-header #download{display:none}#mobile-menu-button{background:none;border:none;box-shadow:none;display:block;float:left;font-family:dashicons;font-size:16px;font-style:normal;font-weight:400;left:10px;line-height:1;padding:1px;position:absolute;text-align:center;text-decoration:inherit;text-shadow:none;top:75px;transition:color .1s ease-in;vertical-align:top;-webkit-font-smoothing:antialiased}#mobile-menu-button:before{border:none;box-sizing:border-box;color:#888;content:"";display:inline-block;float:left;font:normal 50px/1 Dashicons;margin:0;outline:none;padding:3px;text-decoration:none;vertical-align:middle;-webkit-font-smoothing:antialiased}@media screen and (min-width:768px){#mobile-menu-button{display:none}}#download-mobile{background:#f7f7f7;border-bottom:1px solid #ddd}#download-mobile .wrapper{padding:20px 0;text-align:center}#download-mobile span.download-ready{font-size:1.6em;margin:0 .25em}#download-mobile a.download-button{font-size:1.6em;height:inherit;margin:10px .25em;padding:10px 15px}.category-context__bar{margin:0 1.5rem;background:#edeff0;border-radius:2px;font-size:.8125rem;overflow:auto;transition:all .1s ease-out;transition-delay:.1s}.category-context__bar>div{display:flex;align-items:center;justify-content:space-between}@media only screen and (min-width:782px){.category-context__bar{margin:0 1.5rem}}@media only screen and (min-width:960px){.category-context__bar{margin:0 auto;max-width:960px}}.category-context__bar ul{margin:0;padding:0;display:flex;justify-content:space-between}.category-context__bar ul li{list-style:none;font-size:.8125rem}.category-context__bar ul li a{display:block;padding:1.125rem .75rem;text-decoration:none}.category-context__bar ul li:last-child a{padding-right:1.5rem}.category-context__bar__copy{margin:0;padding:1.125rem 1.5rem;font-size:.8125rem;font-weight:400}.category-context__bar__title{margin:0;padding-right:1.5rem;color:#555d66;font-size:.75rem;font-weight:400;text-transform:uppercase}.category-context__bar__links{display:flex;align-items:center}@media only screen and (max-width:782px){.category-context__bar__links{display:none}}.category-context__bar--is-hidden{height:0;overflow:hidden}.category-menu{margin:0;padding:0;position:relative;background:linear-gradient(180deg,hsla(0,0%,100%,0) 94%,#0073aa 0);background-repeat:no-repeat;background-size:0;background-position-x:0;transition:all 75ms ease-out;min-height:45px}.category-menu li{display:inline-block;margin:0;list-style:none}.category-menu a{display:block;padding:.75rem;color:#40464d;font-size:.875rem;text-decoration:none}.category-menu a:active,.category-menu a:focus,.category-menu a:hover,li .category-menu--is-active{color:#000}.category-menu__mobile{padding:0!important;border-top:none!important}.category-menu__mobile ul{margin:0;padding:0;background:#23282d}.category-menu__mobile li{list-style:none;border-top:1px solid #32373c}.category-menu__mobile li a{display:block;padding:1rem 1.5rem;font-size:.875rem;text-decoration:none;color:#ccd0d4}.category-menu__mobile>.components-panel__body-title{margin:0!important}.category-menu__mobile>.components-panel__body-title>button{padding:1.5rem}.category-menu--is-loading{height:24px;position:relative}.category-menu--is-loading:after{content:"";position:absolute;background:#f3f4f5;border-radius:4px;width:80%;height:24px;left:0;top:calc(50% - 12px);transition:none}.category-search{display:flex;align-items:center;background:#fff;border:1px solid #6c7782;border-radius:2px}.category-search input[type=search]{flex-grow:1;margin:0;padding:.25rem .5rem;border:none;box-shadow:none;font-size:.8125rem}.category-search input[type=search]:focus{outline:1px auto #0073aa}.category-search__button{display:flex;background:transparent;border:none;color:#6c7782}.category-search__button:active{background:#d7dade}.category-search__button:focus{outline:1px auto #0073aa}.category-search--is-loading{display:block;height:24px;min-width:100%;background:#f3f4f5;border-radius:4px}@media only screen and (min-width:480px){.category-search--is-loading{width:224px!important;min-width:auto!important}}.pattern__copy-button{transition:all 75ms ease-in-out}.pattern__copy-button.is-small{font-size:.75rem;padding:.75rem;height:auto}.pattern__favorite-button{position:relative;font-size:.875rem;height:2.25rem;width:2.25rem;border-radius:2px;color:#606a74}.pattern__favorite-button svg{position:absolute;top:calc(50% - .75rem);left:calc(50% - .75rem);height:1.5rem;width:1.5rem;transition:all .15s ease-out}.pattern__favorite-button svg path{fill:#6c7782}.pattern__favorite-button .pattern__favorite-filled{opacity:0}.pattern__favorite-button:hover{color:#555d66;background:transparent}.pattern__favorite-button:hover svg path{fill:#555d66}.pattern__favorite-button:active{background:transparent;box-shadow:none;transform:none}.pattern__favorite-button.is-favorited{color:#555d66}.pattern__favorite-button.is-favorited svg path{fill:#d94f4f}.pattern__favorite-button.is-favorited .pattern__favorite-outline{opacity:0;transform:scale(2.8)}.pattern__favorite-button.is-favorited .pattern__favorite-filled{opacity:1}.pattern__favorite-button.is-favorited:hover .pattern__favorite-filled{animation:HeartBeat .9s infinite}@media (prefers-reduced-motion){.pattern__favorite-button.is-favorited:hover .pattern__favorite-filled{animation:none}}.pattern__favorite-button.has-label{padding:12px 18px 12px 38px;height:auto;width:auto}.pattern__favorite-button.has-label svg{top:calc(50% - 12px);left:9px}@keyframes HeartBeat{0%{transform:scale(1)}25%{transform:scale(1.2)}40%{transform:scale(1)}60%{transform:scale(1.2)}to{transform:scale(1)}}.main-navigation{float:none;position:static;width:auto}.main-navigation a{font-size:.8125rem}.main-navigation.toggled div.menu{position:absolute;top:57px;right:0;width:100%;background:#0073aa}.menu-toggle{position:static;height:auto;width:auto;font-size:1.5625rem;overflow:hidden;-webkit-appearance:none}body.page .entry-header{background:none;padding:0}body.page .entry-header .entry-title{color:inherit;margin:2rem auto 1rem;max-width:960px}@media screen and (min-width:737px){body.page .entry-header .entry-title{padding:0 10px}}.pattern-grid-menu{margin:0 auto;max-width:960px;display:flex;flex-direction:column;justify-content:space-between;align-items:center}.pattern-grid-menu>:first-child,.pattern-grid-menu>:last-child{width:100%}.pattern-grid-menu>:last-child{margin:1.5rem;width:calc(100% - 3rem)}@media only screen and (min-width:782px){.pattern-grid-menu{margin:1.5rem;flex-direction:row}.pattern-grid-menu>:last-child{margin:0;width:auto}}@media only screen and (min-width:960px){.pattern-grid-menu{margin:1.5rem auto}}.pattern-grid{max-width:960px;margin:1.5rem}@media screen and (min-width:600px){.pattern-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem}.pattern-grid>*{align-self:baseline}}@media screen and (min-width:960px){.pattern-grid{margin-left:auto;margin-right:auto}}.pattern-grid__pattern{position:relative;margin:0 0 1.5rem;border:1px solid #d7dade;border-radius:2px;transition:all 75ms ease-in-out}@media screen and (min-width:600px){.pattern-grid__pattern{display:inline-block;margin:0}}.pattern-grid__pattern .pattern-grid__preview{overflow:hidden}.pattern-grid__pattern .pattern-grid__actions{position:absolute;right:0;bottom:0;left:0;display:flex;align-items:center;padding:.375rem;background:hsla(0,0%,100%,.8);backdrop-filter:blur(3px);opacity:0;transform:translateY(6px);transition:all 75ms ease-in-out}.pattern-grid__pattern .pattern-grid__actions .pattern-grid__title{flex-grow:1;margin:0;padding:0 .375rem 0 .75rem;font-size:.75rem;pointer-events:none}.pattern-grid__pattern .pattern-grid__actions .pattern__copy-button,.pattern-grid__pattern .pattern-grid__actions .pattern__favorite-button{flex-shrink:0}.pattern-grid__pattern .pattern-grid__actions .button+.button{margin-left:.375rem}.pattern-grid__pattern:focus-within .pattern-grid__actions,.pattern-grid__pattern:hover .pattern-grid__actions{opacity:1;transform:translateY(0)}.pattern-preview__container{padding:2rem 0 0;background:#f3f4f5}.pattern-preview__viewport{position:relative;margin:0 auto;padding:0 20px;max-width:100vw;min-width:320px}.pattern-preview__viewport .pattern-preview__viewport-iframe{background:#fff;border:1px solid #e8eaeb;vertical-align:middle;max-width:100vw}.pattern-preview__viewport:focus-within .pattern-preview__resize-help{clip:auto;clip-path:none;height:auto;margin:initial;overflow:initial;width:auto;bottom:-1rem;left:20px;right:20px;padding:8px 16px;background:#fff;border-radius:2px;border:1px solid #d7dade;text-align:center}.pattern-preview__drag-handle{position:absolute;top:0;bottom:0;width:20px}.pattern-preview__drag-handle.is-left{left:0}.pattern-preview__drag-handle.is-right{right:0}.pattern-preview__drag-handle-button{position:absolute;top:calc(50% - 50px);left:6px;padding:0;width:8px;height:100px;appearance:none;cursor:grab;outline:none;background:#7e8993;border-radius:99999px;border:none}.pattern-preview__drag-handle-button:hover{background:#6c7782}.pattern-preview__drag-handle-button:active{cursor:grabbing;background:#606a74}.pattern-preview__drag-handle-button:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}body.single-wporg-pattern{box-sizing:border-box;font-size:14px;font-weight:400;line-height:1.2}body.single-wporg-pattern .site-content{margin:auto;max-width:none;padding:0}body.single-wporg-pattern .entry-header{max-width:960px;padding:1.5rem;margin-left:auto;margin-right:auto}@media only screen and (min-width:960px){body.single-wporg-pattern .entry-header{padding:1.5rem 0}}body.single-wporg-pattern .entry-header .entry-title{margin-top:0;line-height:1.2}body.single-wporg-pattern .pattern-actions{display:flex;align-items:stretch;flex-wrap:wrap}body.single-wporg-pattern .pattern-actions button+button{margin-left:2em}body.single-wporg-pattern .pattern-actions__notice{margin:1.5rem 0 0;height:auto;flex-basis:100%}body.single-wporg-pattern .pattern-actions__notice>*{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;margin:0}body.single-wporg-pattern .pattern-actions__notice>* button{margin-top:.75rem}@media only screen and (min-width:600px){body.single-wporg-pattern .pattern-actions__notice>*{align-items:center;flex-direction:row}body.single-wporg-pattern .pattern-actions__notice>* button{margin-top:0}}body.single-wporg-pattern .pattern-actions__guide{max-width:384px;height:auto;max-height:none}body.single-wporg-pattern .pattern-actions__guide-content{padding:1.5rem;line-height:1.5}body.single-wporg-pattern .pattern-actions__guide-title{margin:0}body.single-wporg-pattern .pattern-actions__guide-shortcut{background:#edeff0;box-shadow:0 0 0 1px #ccd0d4;padding:1px;font-weight:600;min-width:20px;display:inline-block;text-align:center;border-radius:2px}body.single-wporg-pattern .entry-content{max-width:960px;margin-left:auto;margin-right:auto}body.single-wporg-pattern .pattern__meta{padding:2rem 0;background:#f3f4f5}body.single-wporg-pattern .pattern__meta>div{max-width:960px;margin-left:auto;margin-right:auto;display:flex;justify-content:space-between}body.single-wporg-pattern .pattern__meta .pattern-preview__report{text-align:right}.site-header:not(.home) .search-form{display:flex;align-items:center}.site-header:not(.home) .search-form>input{flex:1;border:0;border-radius:2px 0 0 2px;display:inline-block;font-size:12px;padding:5px 10px;position:relative;width:auto;height:100%}.site-header:not(.home) .search-form button{margin:0;border-radius:0 2px 2px 0;padding:3px 12px;height:unset}.search-form--is-inline .search-form{display:flex;justify-content:space-between;background:#fff}.search-form--is-inline .search-form>label{flex:1}.search-form--is-inline .search-form input{padding:.5rem;background:transparent;border:none;box-shadow:none;width:100%;font-size:14px}@media only screen and (min-width:768px){.search-form--is-inline .search-form input{font-size:16px}}.search-form--is-inline .search-form button{background:transparent;margin-bottom:0;border:0;box-shadow:none;height:inherit;text-shadow:none;color:#32373c}.search-form--is-inline .search-form button:focus{-webkit-box-shadow:0 0 2px 1px #0073aa;box-shadow:0 0 2px 1px #0073aa}.search-form--is-centered .search-form{margin:0 auto}.search-form--is-constrained .search-form{max-width:36rem}.search-form--is-muted .search-form{border-color:#d7dade!important}.search-form--is-muted .search-form button,.search-form--is-muted .search-form input{background:#f8f9f9;color:#7e8993}.search-form--has-medium-text .search-form input{font-size:14px}.search-form--has-border .search-form{border:1px solid #7e8993}.section-heading_link,.section-heading_title{margin-bottom:0}.section-heading_title{font-weight:300}.section-heading_title .archive-title-prefix{display:block;font-size:1rem}.section-heading_link{text-decoration:underline;font-weight:600;margin-top:1.5rem!important}@media only screen and (min-width:768px){.section-heading_link{margin-top:0!important}}.section-heading_description{margin:1rem 0 0}.section-heading_description :last-child{margin-bottom:0}.section-heading--with-space{padding-bottom:16px}.site-content{margin:0 auto;max-width:none;padding:0}body.home .site-header{padding:3.75rem 1rem;text-align:left}body.home .site-branding{display:grid;grid-template-rows:auto 1fr;grid-template-columns:1fr 22rem}body.home .site-branding>*{align-self:center}@media screen and (max-width:736px){body.home .site-branding{display:block}}body.home .site-title.site-title{grid-column-start:1;grid-row-start:1;margin-top:0;text-align:left;font-size:3rem;line-height:1.25}body.home .site-description{grid-column-start:1;grid-row-start:2;margin:0;font-size:1.25rem;line-height:1.6;text-align:left;color:#fff}body.home .site-callout{grid-column-start:2;grid-row-start:1;grid-row-end:span 2;margin-left:4rem;padding:1.125rem 1.5rem 1.5rem;font-size:.875rem;line-height:1.6;background:#fff;box-shadow:.75rem .75rem 0 rgba(0,0,0,.15)}body.home .site-callout h2{margin-top:0;font-size:1.125rem;line-height:1.25;font-weight:600}body.home .site-callout p:last-child{margin-bottom:0}@media screen and (max-width:736px){body.home .site-callout{margin:2rem auto 0;max-width:24rem}}body:not(.home) .site-branding{display:flex;align-items:center;justify-content:space-between;font-size:.8125rem;color:#fff}body:not(.home) .site-branding a{color:#fff}body:not(.home) .site-branding .sep{margin-left:.5rem;margin-right:.5rem}body:not(.home) .site-branding .is-current-page{font-weight:600}.site-title a{text-decoration:none}.site-title a:active,.site-title a:focus,.site-title a:hover{color:#fff}.has-wporg-blue-color{color:#1e8cbe}.has-wporg-blue-background-color{background-color:#1e8cbe}.has-wporg-purple-color{color:#826eb4}.has-wporg-purple-background-color{background-color:#826eb4}.has-wporg-white-color{color:#fff}.has-wporg-white-background-color{background-color:#fff}.home-page .shapes{position:relative;margin:0 auto}.home-page .shapes .parallelogram p:before{font-size:64px;height:64px;left:-16px;position:relative}.home-page .shapes .parallelogram{color:#fff;display:block;margin:0 auto;opacity:.9;padding:60px 40px;text-align:center;text-decoration:none}.home-page .shapes strong{display:block;font-size:28px;font-weight:300;padding-bottom:15px;padding-top:15px}.home-page .shapes p{color:#fff;font-size:16px;font-weight:300;margin:0}.home-page .shapes u{display:block;font-size:18px;padding-top:15px}@media only screen and (min-width:768px){.home-page .shapes{height:400px}.home-page .shapes .parallelogram{width:50%;position:absolute;padding:50px 90px}}@media only screen and (min-width:960px){.home-page .shapes .parallelogram{-webkit-transform:skew(-15deg);-ms-transform:skew(-15deg);transform:skew(-15deg)}.home-page .shapes .parallelogram:before,.home-page .shapes p{-webkit-transform:skew(15deg);-ms-transform:skew(15deg);transform:skew(15deg)}}@media only screen and (min-width:1200px){.home-page .shapes{margin:0 -60px}}.terms{font-style:italic;font-size:14px}
     1@charset "UTF-8";[class*=col-]{margin:inherit}.row{display:flex;flex-direction:row;flex-wrap:wrap}@media (max-width:768px){.row{flex-direction:column;flex-wrap:nowrap}}.row.gutters>.row{margin-left:-2%}@media (max-width:768px){.row.gutters>.row{margin-left:0}}.row.gutters>.row>[class*=col-]{margin-left:2%}@media (max-width:768px){.row.gutters>.row>[class*=col-]{margin-left:0}}.row.around{justify-content:space-around}.row.between{justify-content:space-between}.row.auto .col{flex-grow:1}.col-1{width:8.3333333333%}.offset-1{margin-left:8.3333333333%}.col-2{width:16.6666666667%}.offset-2{margin-left:16.6666666667%}.col-3{width:25%}.offset-3{margin-left:25%}.col-4{width:33.3333333333%}.offset-4{margin-left:33.3333333333%}.col-5{width:41.6666666667%}.offset-5{margin-left:41.6666666667%}.col-6{width:50%}.offset-6{margin-left:50%}.col-7{width:58.3333333333%}.offset-7{margin-left:58.3333333333%}.col-8{width:66.6666666667%}.offset-8{margin-left:66.6666666667%}.col-9{width:75%}.offset-9{margin-left:75%}.col-10{width:83.3333333333%}.offset-10{margin-left:83.3333333333%}.col-11{width:91.6666666667%}.offset-11{margin-left:91.6666666667%}.col-12{width:100%}.offset-12{margin-left:100%}.gutters>.col-1{width:6.33333%}.gutters>.col-1:nth-child(n+13){margin-top:2%}.gutters>.offset-1{margin-left:10.33333%!important}.gutters>.col-2{width:14.66667%}.gutters>.col-2:nth-child(n+7){margin-top:2%}.gutters>.offset-2{margin-left:18.66667%!important}.gutters>.col-3{width:23%}.gutters>.col-3:nth-child(n+5){margin-top:2%}.gutters>.offset-3{margin-left:27%!important}.gutters>.col-4{width:31.33333%}.gutters>.col-4:nth-child(n+4){margin-top:2%}.gutters>.offset-4{margin-left:35.33333%!important}.gutters>.col-5{width:39.66667%}.gutters>.offset-5{margin-left:43.66667%!important}.gutters>.col-6{width:48%}.gutters>.col-6:nth-child(n+3){margin-top:2%}.gutters>.offset-6{margin-left:52%!important}.gutters>.col-7{width:56.33333%}.gutters>.offset-7{margin-left:60.33333%!important}.gutters>.col-8{width:64.66667%}.gutters>.offset-8{margin-left:68.66667%!important}.gutters>.col-9{width:73%}.gutters>.offset-9{margin-left:77%!important}.gutters>.col-10{width:81.33333%}.gutters>.offset-10{margin-left:85.33333%!important}.gutters>.col-11{width:89.66667%}.gutters>.offset-11{margin-left:93.66667%!important}.gutters>.col-12{width:98%}.gutters>.offset-12{margin-left:102%!important}@media (max-width:768px){[class*=" offset-"],[class^=offset-]{margin-left:0}}.first{order:-1}.last{order:1}@media (max-width:768px){.row [class*=col-]{margin-left:0;width:100%}.row.gutters [class*=col-]{margin-bottom:16px}.first-sm{order:-1}.last-sm{order:1}}.gutters .column.push-left,.push-left{margin-right:auto}.gutters .column.push-right,.push-right{margin-left:auto}.gutters .column.push-center,.push-center{margin-left:auto;margin-right:auto}.gutters .column.push-middle,.push-middle{margin-top:auto;margin-bottom:auto}.push-bottom{margin-top:auto}@media (max-width:768px){.gutters .column.push-left-sm,.push-left-sm{margin-left:0}.gutters .column.push-center-sm,.push-center-sm{margin-left:auto;margin-right:auto}.push-top-sm{margin-top:0}}.align-middle{align-items:center}.align-right{justify-content:flex-end}.align-center{justify-content:center}@media (max-width:768px){.align-left-sm{justify-content:flex-start}}.float-right{float:right}.float-left{float:left}@media (max-width:768px){.float-left,.float-right{float:none}}.fixed{position:fixed;top:0;left:0;z-index:100;width:100%}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}optgroup{font-weight:700}table{border-spacing:0}td,th{padding:0}p{margin:1rem 0}cite,dfn,em,i{font-style:italic}blockquote{margin:0 1.5rem}address{margin:0 0 1.5rem}pre{background:#eee;font-family:Courier\ 10 Pitch,Courier,monospace;font-size:.9375rem;line-height:1.6;margin-bottom:1.6rem;max-width:100%;overflow:auto;padding:1.6rem}code,kbd,tt,var{font-family:Monaco,Consolas,Andale Mono,DejaVu Sans Mono,monospace;font-size:.9375rem}abbr,acronym{border-bottom:1px dotted #666;cursor:help}ins,mark{background:#fff9c0;text-decoration:none}big{font-size:125%}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{background:#fff}blockquote,q{quotes:"" ""}blockquote:after,blockquote:before,q:after,q:before{content:""}blockquote{border-left:2px solid #767676;color:#767676;margin:1rem 0;padding-left:.8rem}blockquote cite{font-size:.8rem}figure{margin:0}hr{background-color:#eee;border:0;height:2px;margin:5rem auto}img{height:auto;max-width:100%}h1,h2,h3,h4,h5,h6{font-family:Open Sans,sans-serif;clear:both;line-height:1.5;margin:2rem 0 1rem}.h1,h1{font-size:2.44140625rem}.h1,.h2,h1,h2{font-weight:300}.h2,h2{font-size:1.953125rem}.h3,h3{font-size:1.5625rem;font-weight:400}.h4,h4{font-size:1.25rem;color:#32373c;font-weight:600;padding:0}.h5,h5{font-size:1rem;letter-spacing:.01rem}.h5,.h6,h5,h6{font-weight:600;text-transform:uppercase}.h6,h6{font-size:.8rem;letter-spacing:.8px}a{color:#0073aa;text-decoration:none}a:active,a:focus,a:hover{text-decoration:underline}a:focus{outline:thin dotted}a:active,a:hover{outline:0}li>a,p a{text-decoration:underline}li>a:hover,p a:hover{color:#d54e21}ol,ul{margin:0 0 1.5em 1.5em;padding:0}ul{list-style:square}ol{list-style:decimal}ol.unmarked-list,ul.unmarked-list{list-style:none;padding-left:0}li>ol,li>ul{margin-bottom:0}dt{font-weight:700}dd{margin:0 1.5em 1.5em}table{border:1px solid #eee;border-collapse:collapse;font-size:.8rem;margin:0 0 1rem;padding:0;width:100%}table thead{background:#32373c;color:#fff}table td,table th{border:1px solid #eee;font-weight:400;margin:0;padding:.4rem;text-align:left;vertical-align:top}table tbody tr:nth-child(2n){background:#f7f7f7}html{font-size:100%}body,button,input,select,textarea{color:#32373c;font-family:Open Sans,sans-serif;font-size:100%;line-height:1.5}@media screen and (min-width:737px){html{font-size:1.125rem}}.custom-select{display:inline-block;box-sizing:border-box;padding:.5rem 2rem .5rem .8rem;width:auto;font-size:1em;line-height:1.3;border:1px solid #6c7782;box-shadow:none;border-radius:.5em;-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:transparent;background-image:url('data:image/svg+xml;charset=US-ASCII,%3Csvg width="14" height="8" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="M2 0L7 5L12 0L14 1L7 8L0 1L2 0Z" fill="%23555D66"/%3E%3C/svg%3E%0A');background-repeat:no-repeat;background-position:right .7em top 50%;background-size:.65em auto}.custom-select::-ms-expand{display:none}.custom-select:focus{box-shadow:0 0 1px 3px rgba(59,153,252,.7);box-shadow:0 0 0 3px -moz-mac-focusring;color:#222;outline:none}.custom-select option{font-weight:400}html{font-size:1rem}@media screen and (min-width:737px){html{font-size:1rem}}.screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!important;width:1px}.screen-reader-text:focus{background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;color:#21759b;display:block;font-size:.875rem;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}.site-content[tabindex="-1"]:focus{outline:0}.no-js .hide-if-no-js{display:none}.alignleft{display:inline;float:left;margin-right:1.5em}.alignright{display:inline;float:right;margin-left:1.5em}.aligncenter{clear:both;display:block;margin-left:auto;margin-right:auto}@media screen and (max-width:480px){.alignleft,.alignright{display:block;float:none;margin-left:auto;margin-right:auto}}.button,.button-primary,.button-secondary,.plugin-upload-form .button-primary{border:1px solid;border-radius:3px;box-sizing:border-box;cursor:pointer;display:inline-block;font-size:.8rem;height:1.5625rem;line-height:1;margin:0;padding:0 .8rem;text-decoration:none;white-space:nowrap;-webkit-appearance:none}button::-moz-focus-inner,input[type=button]::-moz-focus-inner,input[type=reset]::-moz-focus-inner,input[type=submit]::-moz-focus-inner{border:0;padding:0}.button-group.button-xl .button,.button.button-xl{font-size:1rem;height:2.44140625rem;line-height:1;padding:0 1.5rem}.button-group.button-large .button,.button.button-large{height:1.953125rem;line-height:1;padding:0 1rem}.button-group.button-small .button,.button.button-small{font-size:.64rem;height:1.25rem;line-height:1;padding:0 .5rem}a.button,a.button-primary,a.button-secondary{line-height:1.5625rem}.button-group.button-large a.button,a.button.button-large{line-height:1.953125rem}.button-group.button-xl a.button,a.button.button-xl{line-height:2.44140625rem}.button-group.button-small a.button,a.button.button-small{line-height:1.25rem}.button:active,.button:focus{outline:none}.button.hidden{display:none}input[type=reset],input[type=reset]:active,input[type=reset]:focus,input[type=reset]:hover{background:none;border:none;box-shadow:none;padding:0 2px 1px;width:auto}.button,.button-secondary,.button:visited{background:#f7f7f7;border-color:#ccc;box-shadow:0 1px 0 #ccc;color:#555;vertical-align:top}p .button{vertical-align:baseline}.button-secondary:focus,.button-secondary:hover,.button.focus,.button.hover,.button:focus,.button:hover{background:#fafafa;border-color:#999;color:#23282d}.button-link:focus,.button-secondary:focus,.button.focus,.button:focus{border-color:#5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.button-secondary:active,.button.active,.button.active:hover,.button:active{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.button.active:focus{border-color:#5b9dd9;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8)}.button-disabled,.button-secondary.disabled,.button-secondary:disabled,.button-secondary[disabled],.button.disabled,.button:disabled,.button[disabled]{background:#f7f7f7!important;border-color:#ddd!important;box-shadow:none!important;color:#a0a5aa!important;cursor:default;text-shadow:0 1px 0 #fff!important;transform:none!important}.button-link,input[type=submit].button-link{background:none;border:0;border-radius:0;box-shadow:none;cursor:pointer;margin:0;outline:none;padding:0}.button-link:focus{outline:1px solid #5b9dd9}.button-primary,.download-button,.plugin-upload-form .button-primary{text-decoration:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.button-primary,.button-primary:visited,.download-button,.download-button:visited,.plugin-upload-form .button-primary,.plugin-upload-form .button-primary:visited{background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff}.button-primary.focus,.button-primary.hover,.button-primary:focus,.button-primary:hover,.download-button.focus,.download-button.hover,.download-button:focus,.download-button:hover,.plugin-upload-form .button-primary.focus,.plugin-upload-form .button-primary.hover,.plugin-upload-form .button-primary:focus,.plugin-upload-form .button-primary:hover{background:#008ec2;border-color:#006799;box-shadow:0 1px 0 #006799;color:#fff}.button-primary.focus,.button-primary:focus,.download-button.focus,.download-button:focus,.plugin-upload-form .button-primary.focus,.plugin-upload-form .button-primary:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.button-primary.active,.button-primary.active:focus,.button-primary.active:hover,.button-primary:active,.download-button.active,.download-button.active:focus,.download-button.active:hover,.download-button:active,.plugin-upload-form .button-primary.active,.plugin-upload-form .button-primary.active:focus,.plugin-upload-form .button-primary.active:hover,.plugin-upload-form .button-primary:active{background:#0073aa;border-color:#006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.button-primary.disabled,.button-primary:disabled,.button-primary[disabled],.download-button.disabled,.download-button:disabled,.download-button[disabled],.plugin-upload-form .button-primary.disabled,.plugin-upload-form .button-primary:disabled,.plugin-upload-form .button-primary[disabled]{background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;color:#66c6e4!important;cursor:default;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.button-primary.button.button-hero,.download-button.button.button-hero,.plugin-upload-form .button-primary.button.button-hero{box-shadow:0 2px 0 #006799}.button-primary.button.button-hero.active,.button-primary.button.button-hero.active:focus,.button-primary.button.button-hero.active:hover,.button-primary.button.button-hero:active,.download-button.button.button-hero.active,.download-button.button.button-hero.active:focus,.download-button.button.button-hero.active:hover,.download-button.button.button-hero:active,.plugin-upload-form .button-primary.button.button-hero.active,.plugin-upload-form .button-primary.button.button-hero.active:focus,.plugin-upload-form .button-primary.button.button-hero.active:hover,.plugin-upload-form .button-primary.button.button-hero:active{box-shadow:inset 0 3px 0 #006799}.button-primary-disabled{background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;color:#66c6e4!important;cursor:default;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.button-group{display:inline-block;font-size:0;position:relative;vertical-align:middle;white-space:nowrap}.button-group>.button{border-radius:0;display:inline-block;margin-right:-1px;z-index:10}.button-group>.button-primary{z-index:100}.button-group>.button:hover{z-index:20}.button-group>.button:first-child{border-radius:3px 0 0 3px}.button-group>.button:last-child{border-radius:0 3px 3px 0}.button-group>.button:focus{position:relative;z-index:1}@media screen and (max-width:737px){.button,.button.button-large,.button.button-small,.plugin-upload-form .button-primary{font-size:14px;height:auto;line-height:normal;margin-bottom:4px;padding:6px 14px;vertical-align:middle}}.clear:after,.clear:before,.comment-content:after,.comment-content:before,.entry-content:after,.entry-content:before,.home-below:after,.home-below:before,.site-content:after,.site-content:before,.site-footer:after,.site-footer:before,.site-header:after,.site-header:before{content:"";display:table;table-layout:fixed}.clear:after,.comment-content:after,.entry-content:after,.home-below:after,.site-content:after,.site-footer:after,.site-header:after{clear:both}p.subheading{color:#82878c;font-weight:300;margin:-.4rem auto 2rem;text-align:center}p.intro,p.subheading{font-size:1.25rem}p.aside{font-size:.8rem}p.note{font-size:.64rem;letter-spacing:.01rem;max-width:18.1898940355rem}input,textarea{box-sizing:border-box}input[type=checkbox],input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=radio],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{background-color:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);color:#32373c;outline:none;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=email],input[type=url]{direction:ltr}input[type=number]{height:28px;line-height:inherit}input[type=checkbox],input[type=radio]{background:#fff;border:1px solid #b4b9be;box-shadow:inset 0 1px 2px rgba(0,0,0,.1);clear:none;color:#555;cursor:pointer;display:inline-block;height:16px;line-height:0;margin:-4px 4px 0 0;min-width:16px;outline:0;padding:0!important;text-align:center;transition:border-color .05s ease-in-out;vertical-align:middle;width:16px;-webkit-appearance:none}input[type=checkbox]:checked:before,input[type=radio]:checked:before{display:inline-block;float:left;font:normal 21px/1 dashicons;vertical-align:middle;width:16px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}input[type=checkbox]:checked:before{color:#1e8cbe;content:"";margin:-3px 0 0 -4px}input[type=radio]{border-radius:50%;line-height:10px;margin-right:4px}input[type=radio]:checked+label:before{color:#82878c}input[type=radio]:checked:before{background-color:#1e8cbe;border-radius:50px;content:"•";font-size:24px;height:6px;line-height:16px;margin:4px;text-indent:-9999px;width:6px}input[type=reset]:active,input[type=reset]:hover{color:#00a0d2}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{border-radius:0;font-size:14px;padding:3px 5px}textarea{line-height:1.4;overflow:auto;padding:2px 6px;resize:vertical}textarea.code{line-height:1.4;padding:4px 6px 1px}label{cursor:pointer;vertical-align:middle}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:hsla(0,0%,100%,.5);border-color:hsla(0,0%,87.1%,.75);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:none;box-shadow:none}input.large-text,textarea.large-text{width:99%}input.regular-text{width:25em}input.small-text{padding:1px 6px;width:50px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;padding:6px 10px}input[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}input[type=checkbox]{-webkit-appearance:none;padding:10px}input[type=checkbox]:checked:before{font:normal 30px/1 dashicons;margin:-3px -5px}input[type=checkbox],input[type=radio]{height:25px;width:25px}input[type=radio]:checked:before{vertical-align:middle;width:9px;height:9px;margin:7px;line-height:16px}input,textarea{font-size:16px}input[type=number].small-text,input[type=password].small-text,input[type=search].small-text,input[type=text].small-text{width:auto;max-width:55px;display:inline;padding:3px 6px;margin:0 3px}input.regular-text{width:100%}label{font-size:14px}fieldset label{display:block}}a.button:active,a.button:focus,a.button:hover{text-decoration:none}.notice{background:#fff;border-left:4px solid #fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:1em 0;padding:1px 12px}.notice p{font-size:.8rem;margin:.5em 0;padding:2px}.notice.notice-alt{box-shadow:none}.notice.notice-large{padding:10px 20px}.notice.notice-success{border-left-color:#46b450}.notice.notice-success.notice-alt{background-color:#ecf7ed}.notice.notice-warning{border-left-color:#ffb900}.notice.notice-warning.notice-alt{background-color:#fff8e5}.notice.notice-error{border-left-color:#dc3232}.notice.notice-error.notice-alt{background-color:#fbeaea}.notice.notice-info{border-left-color:#00a0d2}.notice.notice-info.notice-alt{background-color:#e5f5fa}.error-404 .page-content,.error-404 .page-title{text-align:center}.error-404 .page-content .logo-swing{height:10rem;margin:6rem auto;position:relative;text-align:center;width:10rem}.error-404 .page-content .logo-swing .wp-logo{left:0;max-width:none;position:absolute;top:0;width:10rem}@keyframes hinge{10%{width:180px;height:180px;transform:rotate(0deg)}15%{width:185px;height:185px;transform:rotate(0deg)}20%{width:180px;height:180px;transform:rotate(5deg)}40%{transform-origin:top left;animation-timing-function:ease-in-out}60%{transform:rotate(40deg);transform-origin:top left;animation-timing-function:ease-in-out}40%,80%{transform:rotate(60deg);transform-origin:top left;animation-timing-function:ease-in-out;opacity:1}to{transform:translate3d(0,700px,0);opacity:0}}.hinge{animation-duration:2s;animation-name:hinge}.comments-area{margin-top:5em}.comments-area>:last-child{margin-bottom:0}.comments-area .comment-list+.comment-respond{border-top:1px solid #eaeaea}.comments-area .comment-list+.comment-respond,.comments-area .comment-navigation+.comment-respond{padding-top:1.6em}.comments-area .comments-title{margin-bottom:1.3333em}.comments-area .comment-list{list-style:none;margin:0}.comments-area .comment-list .pingback,.comments-area .comment-list .trackback,.comments-area .comment-list article{border-top:1px solid #eaeaea;padding:1.6em 0}.comments-area .comment-list article:not(:only-child){padding-bottom:0}.comments-area .comment-list article+.comment-respond{padding-bottom:1.6em}.comments-area .comment-list .children{list-style:none;margin:0}.comments-area .comment-list .children>li{padding-left:.8em}.comments-area .comment-list .alt{background:none}.comments-area .comment-author{color:#999;margin-bottom:.4em}.comments-area .comment-author .avatar{float:left;height:24px;margin-right:.8em;width:24px}.comments-area .comment-metadata,.comments-area .pingback .edit-link{color:#999;line-height:1.5}.comments-area .comment-metadata a,.comments-area .pingback .edit-link a{color:#777}.comments-area .comment-metadata{font-size:.8rem;margin-bottom:1.6em}.comments-area .comment-metadata .edit-link,.comments-area .pingback .edit-link{margin-left:1em}.comments-area .pingback .edit-link:before{top:5px}.comments-area .comment-content ol,.comments-area .comment-content ul{margin:0 0 1.6em 1.3333em}.comments-area .comment-content>:last-child,.comments-area .comment-content li>ol,.comments-area .comment-content li>ul{margin-bottom:0}.comments-area .comment-content .reply{font-size:12px}.comments-area .comment-content .reply a{border:1px solid #eaeaea;color:#707070;display:inline-block;font-weight:700;line-height:1;margin-top:2em;padding:.4167em .8333em;text-transform:uppercase}.comments-area .comment-content .reply a:focus,.comments-area .comment-content .reply a:hover{border-color:#333;color:#333;outline:0}.comments-area .comment-reply-title a{font-weight:inherit}.comments-area .comment-form label{font-size:.8rem;font-weight:700;display:block;letter-spacing:.04em;line-height:1.5}.comments-area .comment-form input[type=email],.comments-area .comment-form input[type=text],.comments-area .comment-form input[type=url],.comments-area .comment-form textarea{width:100%}.comments-area .comment-awaiting-moderation,.comments-area .comment-notes,.comments-area .form-allowed-tags,.comments-area .logged-in-as{font-size:1rem;line-height:1.5;margin-bottom:2em}.comments-area .no-comments{border-top:1px solid #eaeaea;color:#999;font-weight:700;padding-top:1.6em}.comments-area .comment-navigation+.no-comments{border-top:0}.comments-area .form-allowed-tags code{font-family:Inconsolata,monospace}.comments-area .form-submit{margin-bottom:0}.comments-area .required{color:#c0392b}.entry-content{hyphens:auto;word-wrap:break-word}.entry-content>p:first-child{margin-top:0}.entry-content [class*=col-]~h1,.entry-content [class*=col-]~h2,.entry-content [class*=col-]~h3,.entry-content [class*=col-]~h4,.entry-content [class*=col-]~h5,.entry-content [class*=col-]~h6{clear:none}.entry-header{position:relative}.entry-header .sticky-post{color:#999;font-size:.8rem;font-style:italic;position:absolute;top:-.8rem}.entry-meta{color:#999;font-size:.8rem;margin-bottom:1rem}.entry-meta a{color:#777}.entry-meta>span{margin-right:1rem}.entry-meta>span :last-of-type{margin:0}.entry-meta .byline,.entry-meta .updated:not(.published),.sticky .entry-meta .posted-on{display:none}.group-blog .entry-meta .byline,.single .entry-meta .byline{display:inline}.entry-summary{hyphens:auto;word-wrap:break-word}body:not(.single):not(.search) .site-main .post{margin-bottom:3.0517578125rem;max-width:40em}.gallery{margin-bottom:1.5rem}.gallery .gallery-item{display:inline-block;margin:0;text-align:center;vertical-align:top;width:100%}.gallery.gallery-columns-2 .gallery-item{max-width:50%}.gallery.gallery-columns-3 .gallery-item{max-width:33.33%}.gallery.gallery-columns-4 .gallery-item{max-width:25%}.gallery.gallery-columns-5 .gallery-item{max-width:20%}.gallery.gallery-columns-6 .gallery-item{max-width:16.66%}.gallery.gallery-columns-7 .gallery-item{max-width:14.28%}.gallery.gallery-columns-8 .gallery-item{max-width:12.5%}.gallery.gallery-columns-9 .gallery-item{max-width:11.11%}.gallery .gallery-caption{display:block}.main-navigation{background:#0073aa;clear:both;left:0;position:absolute;top:60px;width:100%}.main-navigation ul{display:none;list-style:none;margin:0;padding-left:0}.main-navigation ul ul{box-shadow:0 3px 3px rgba(0,0,0,.2);float:left;left:-999em;position:absolute;top:1.5em;z-index:99999}.main-navigation ul ul ul{left:-999em;top:0}.main-navigation ul ul li.focus>ul,.main-navigation ul ul li:hover>ul{left:100%}.main-navigation ul ul a{width:200px}.main-navigation ul li.focus>ul,.main-navigation ul li:hover>ul{left:auto}.main-navigation li{border-top:1px solid hsla(0,0%,100%,.2);padding:1rem}.main-navigation a{color:hsla(0,0%,100%,.8);display:block;font-size:.8rem;text-decoration:none}.main-navigation a.active,.main-navigation a:hover{color:#fff}@media screen and (min-width:737px){.main-navigation a.active{border-bottom:1px solid}}.main-navigation.toggled{z-index:1}.main-navigation.toggled ul{display:block}.menu-toggle{background:transparent;border:none;color:#fff;height:3.5rem;position:absolute;right:1rem;top:-58px;width:3.5rem}.toggled .menu-toggle:before{content:""}@media screen and (min-width:737px){.menu-toggle{display:none}.main-navigation{float:right;position:static;width:auto}.main-navigation.toggled{padding:1px 0}.main-navigation ul{display:inline-block;font-size:0}.main-navigation ul li{border:0;display:inline-block;font-size:1rem;margin-right:1rem;padding:0}.main-navigation ul li:last-of-type{margin-right:0}}.comment-content .wp-smiley,.entry-content .wp-smiley,.page-content .wp-smiley{border:none;margin-bottom:0;margin-top:0;padding:0}embed,iframe,object{max-width:100%}body.page .gutters .col-12{width:100%}body.page .entry-header{background:#0073aa;padding:1rem 0}body.page .entry-header .entry-title{color:#fff;font-size:1.5625rem;font-weight:300;line-height:1;margin:0 auto;padding:0 1.5625rem}body.page .entry-header.home{padding:1.5625rem 1.143rem;text-align:center}@media screen and (min-width:737px){body.page .site-header+.site-main .entry-title{padding:initial}}body.page .entry-content,body.page .entry-footer{margin:0 auto;max-width:960px;padding:3.0517578125rem 1.5625rem}.post-navigation{margin:5em auto;padding:0}.post-navigation a{border-bottom:1px solid #eaeaea;color:#444;display:block;font-weight:600;padding:11px 0 12px;text-transform:none;width:100%}.post-navigation a:hover{color:#21759b}.post-navigation .nav-links{border-top:1px solid #eaeaea;hyphens:auto;word-wrap:break-word}.post-navigation .meta-nav{color:#777;display:block;font-size:13px;line-height:2;text-transform:uppercase}.post-navigation .nav-next{text-align:right}.pagination .nav-links{text-align:center}.pagination .nav-links .page-numbers{background-color:#f9f9f9;cursor:hand;display:inline-block;min-width:2em;padding:8px}.pagination .nav-links .page-numbers.dots,.pagination .nav-links .page-numbers.next,.pagination .nav-links .page-numbers.prev{background:none;font-size:.9em;width:auto}.pagination .nav-links .page-numbers.dots{cursor:inherit}@media screen and (max-width:737px){.pagination .nav-links .page-numbers.next,.pagination .nav-links .page-numbers.prev{font-size:0;min-width:0;padding:0}.pagination .nav-links .page-numbers.next:after,.pagination .nav-links .page-numbers.prev:before{background-color:#f9f9f9;display:inline-block;font-size:1rem;line-height:1.5;min-width:2em;padding:8px}.pagination .nav-links .page-numbers.prev:before{content:"‹"}.pagination .nav-links .page-numbers.next:after{content:"›"}}.pagination .nav-links span.page-numbers{background-color:#f7f7f7;font-weight:700}.search-form .search-field{line-height:normal;margin:0;padding:4px 5px;vertical-align:text-bottom}body.search .gutters .col-12{width:100%}body.search .site-main{margin:0 auto;max-width:960px;padding:0 1.5625rem 3.0517578125rem}.site-content{max-width:960px;padding:0 1.5625rem}@media screen and (min-width:737px){.site-content{padding:0 10px 3.0517578125rem}}@media screen and (max-width:737px){.site-content .site-main{float:none;margin:0;width:auto}}.home .site-content,.page .site-content,.site-content.page{margin:auto;max-width:none;padding:0}.site-content .page-title{font-size:1.25rem;font-weight:400}.site-content .no-results{margin:0 auto 3.0517578125rem;max-width:40em;padding:0 2rem}.site-description{color:hsla(0,0%,100%,.8);font-size:1.25rem;font-weight:300;margin:-.4rem auto 2rem;text-align:center}.site-header{background:#0073aa;padding:1rem 0;position:relative}.site-header .site-branding{margin:0 auto;max-width:960px;padding:0 1.5625rem}@media screen and (min-width:737px){.site-header .site-branding{padding:0 10px}}.site-header.home{padding:1.5625rem 1.143rem;text-align:center}.site-title{display:inline-block;font-size:1.5625rem;font-weight:300;line-height:1;margin:0 2rem 0 0;max-width:none}.site-title a{color:#fff;font-weight:300}.site-title a:active,.site-title a:focus,.site-title a:hover{text-decoration:none}.site-header.home .site-title{display:inherit;font-size:3.8146972656rem;margin:2rem 0 1rem}.widget-area{font-size:.8rem}@media screen and (min-width:480px) and (max-width:768px){.widget-area{display:flex}.widget-area .widget{width:48%}}#wporg-footer{background-color:#f7f7f7;border-top:1px solid #dfdfdf;padding:22px 14px 65px}#wporg-footer,#wporg-footer .wrapper{clear:both;margin:0 auto;overflow:auto}#wporg-footer .wrapper{max-width:930px}#wporg-footer ul{float:left;margin-bottom:20px;margin-left:24px;overflow:auto;padding-left:0;width:135px}@media screen and (min-width:960px){#wporg-footer ul:first-child{margin-left:0}}#wporg-footer ul li{color:#bbb;font-size:14px;list-style-type:none;margin-bottom:1px}#wporg-footer ul li a{text-decoration:none;text-decoration-skip-ink:none}#wporg-footer ul li a:hover{color:#0073aa;text-decoration:underline}#wporg-footer .cip{clear:both;color:#ccc;float:none;font-size:.8rem;letter-spacing:.3em;margin:35px auto 0;text-align:center;text-transform:uppercase}#wporg-footer .cip.cip-image{background:url(//s.w.org/style/images/codeispoetry.png?1=) 50% no-repeat;background-size:190px 15px;height:15px;text-indent:-9999px;width:190px}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:1.5dppx),only screen and (min-resolution:144dpi){#wporg-footer .cip.cip-image{background-image:url(//s.w.org/style/images/codeispoetry-2x.png?1=)}}@media screen and (min-width:561px) and (max-width:959px){#wporg-footer .wrapper{max-width:600px}#wporg-footer ul{margin-left:2%;width:32%}#wporg-footer ul:nth-child(3n+1){margin-left:0}#wporg-footer ul:nth-child(4n){clear:both}}@media screen and (max-width:560px){#wporg-footer .wrapper{max-width:360px}#wporg-footer ul{margin-left:4%;width:48%}#wporg-footer ul:nth-child(odd){margin-left:0;clear:both}}#wporg-header{background:#23282d;height:140px;position:relative;text-align:center;width:100%}#wporg-header .wrapper{margin:0 auto;max-width:960px}#wporg-header h1{display:inline-block;margin:auto;width:303px}#wporg-header h1 a{background:url(//s.w.org/style/images/wporg-logo.svg?3=) 0 no-repeat;background-size:290px 46px;display:block;height:88px;text-indent:-9999px}#wporg-header h2.rosetta{clear:none;color:#dfdfdf;font-family:Georgia,Times New Roman,serif;font-size:30px;margin:0 0 0 60px}#wporg-header h2.rosetta a{border-bottom:none;color:#dfdfdf;display:block;height:52px;line-height:22px;padding:0}#wporg-header h2.rosetta a:hover{text-decoration:none}#wporg-header #wporg-header-menu{background:#23282d;left:-75%;list-style:none;margin:0;max-width:75%;min-width:200px;position:absolute;text-align:left;top:100%;transition:left .3s;z-index:100000}#wporg-header #wporg-header-menu.toggled{left:0}#wporg-header ul li{list-style-type:none;position:relative}#wporg-header ul li a{color:#eee;display:block;font-family:Open Sans,Helvetica,Arial,Liberation Sans,sans-serif;font-size:13px;font-weight:600;height:34px;line-height:34px;margin:0 4px;padding:10px 30px;text-decoration:none}#wporg-header ul li a.subcurrent{font-weight:700}@media (max-width:768px){#wporg-header ul li a{height:auto}}#wporg-header ul li.current-menu-item a,#wporg-header ul li.current_page_parent a,#wporg-header ul li a.current,#wporg-header ul li a:hover{color:#00a0d2}#wporg-header ul li#download,#wporg-header ul li.download{float:right;height:34px;margin-right:14px;overflow:hidden;padding:0 0 34px}@media screen and (max-width:767px){#wporg-header ul li#download,#wporg-header ul li.download{display:block;float:none;margin:10px 20px 20px;padding-bottom:0;height:auto}#wporg-header ul li#download a,#wporg-header ul li.download a{padding:4px 10px;text-align:center}}#wporg-header ul li#download a,#wporg-header ul li.download a{margin:0;padding:0 16px}#wporg-header ul li#download a:hover,#wporg-header ul li.download a:hover{color:#eee}#wporg-header ul li#download.current,#wporg-header ul li#download.current-menu-item,#wporg-header ul li#download .uparrow,#wporg-header ul li.download.current,#wporg-header ul li.download.current-menu-item,#wporg-header ul li.download .uparrow{display:none}#wporg-header ul li .nav-submenu{clip:rect(1px,1px,1px,1px);height:1px;left:-2px;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;z-index:99999}#wporg-header ul li .nav-submenu li a{display:inline-block;height:24px;line-height:24px;margin:0;white-space:nowrap}@media screen and (min-width:768px){#wporg-header #head-search{float:right;margin-right:14px;padding-top:30px}}#wporg-header #head-search form{border-bottom:1px solid #3f3f3f;display:inline-block;margin-left:60px;width:288px}#wporg-header #head-search form input.text{background:#191e23;border:0;border-radius:0;box-sizing:content-box;color:#b4b9be;float:left;font-family:Open Sans,sans-serif;font-size:12px;height:24px;margin:0;outline:none;padding:3px;vertical-align:top;width:256px}#wporg-header #head-search form input.text::-moz-placeholder{color:#eee}@media screen and (max-width:480px){#wporg-header #head-search form input.text{width:216px}}#wporg-header #head-search form .button{background:#191e23 url(//s.w.org/wp-includes/images/admin-bar-sprite.png?d=20120831) no-repeat 2px 5px;border:none;border-radius:0;box-shadow:none;float:left;height:30px;margin:0;padding:0;text-shadow:none!important;width:26px}@media screen and (max-width:480px){#wporg-header #head-search form{width:248px}}@media screen and (min-width:480px){#wporg-header #head-search form{margin-left:0}}@media screen and (min-width:768px){#wporg-header{height:120px;text-align:inherit}#wporg-header h1{float:left;padding-left:10px}#wporg-header h2.rosetta{float:left;margin-left:0;padding:36px 27px 0}#wporg-header #headline h2{text-rendering:optimizeLegibility}#wporg-header #wporg-header-menu{float:left;height:46px;list-style:none;margin:-15px 0 0;max-width:inherit;min-width:0;padding:0;position:static;width:100%}#wporg-header ul li{float:left;position:relative}#wporg-header ul li a{height:46px;padding:0 6px}#wporg-header ul li a.current~.uparrow{border-bottom:9px solid #f7f7f7;border-left:9px solid transparent;border-right:9px solid transparent;height:0;margin:-8px auto 0;width:0}#wporg-header ul li.current-menu-item:after,#wporg-header ul li.current_page_parent:after{border-bottom:9px solid #f7f7f7;border-left:9px solid transparent;border-right:9px solid transparent;content:"";height:0;left:50%;margin:-8px 0 0 -9px;position:absolute;width:0}#wporg-header ul li .nav-submenu:hover~.uparrow,#wporg-header ul li:hover .nav-submenu~.uparrow{border-bottom:9px solid #32373c;border-left:9px solid transparent;border-right:9px solid transparent;height:0;margin:-10px auto 0;width:0}#wporg-header ul li .nav-submenu{background:#32373c;border:1px solid #32373c;border-top:0;margin-top:-1px;min-width:0}#wporg-header ul li .nav-submenu li{float:none}#wporg-header ul li .nav-submenu li a{height:34px;line-height:34px}#wporg-header .nav-menu .focus>ul,#wporg-header .nav-menu ul li:hover>ul,#wporg-header ul.nav-menu .focus>ul,#wporg-header ul.nav-menu li:hover>ul{clip:inherit;height:inherit;overflow:inherit;width:inherit}#wporg-header ul li.current-menu-item:after,#wporg-header ul li.current_page_parent:after,#wporg-header ul li a.current~.uparrow{border-bottom-color:#0073aa}}.page-download #wporg-header #download,.page-parent-download #wporg-header #download{display:none}#mobile-menu-button{background:none;border:none;box-shadow:none;display:block;float:left;font-family:dashicons;font-size:16px;font-style:normal;font-weight:400;left:10px;line-height:1;padding:1px;position:absolute;text-align:center;text-decoration:inherit;text-shadow:none;top:75px;transition:color .1s ease-in;vertical-align:top;-webkit-font-smoothing:antialiased}#mobile-menu-button:before{border:none;box-sizing:border-box;color:#888;content:"";display:inline-block;float:left;font:normal 50px/1 Dashicons;margin:0;outline:none;padding:3px;text-decoration:none;vertical-align:middle;-webkit-font-smoothing:antialiased}@media screen and (min-width:768px){#mobile-menu-button{display:none}}#download-mobile{background:#f7f7f7;border-bottom:1px solid #ddd}#download-mobile .wrapper{padding:20px 0;text-align:center}#download-mobile span.download-ready{font-size:1.6em;margin:0 .25em}#download-mobile a.download-button{font-size:1.6em;height:inherit;margin:10px .25em;padding:10px 15px}.category-context__bar{margin:0 1.5rem;background:#edeff0;border-radius:2px;font-size:.8125rem;overflow:auto;transition:all .1s ease-out;transition-delay:.1s}.category-context__bar>div{display:flex;align-items:center;justify-content:space-between}@media only screen and (min-width:782px){.category-context__bar{margin:0 1.5rem}}@media only screen and (min-width:960px){.category-context__bar{margin:0 auto;max-width:960px}}.category-context__bar ul{margin:0;padding:0;display:flex;justify-content:space-between}.category-context__bar ul li{list-style:none;font-size:.8125rem}.category-context__bar ul li a{display:block;padding:1.125rem .75rem;text-decoration:none}.category-context__bar ul li:last-child a{padding-right:1.5rem}.category-context__bar__copy{margin:0;padding:1.125rem 1.5rem;font-size:.8125rem;font-weight:400}.category-context__bar__title{margin:0;padding-right:1.5rem;color:#555d66;font-size:.75rem;font-weight:400;text-transform:uppercase}.category-context__bar__links{display:flex;align-items:center}@media only screen and (max-width:782px){.category-context__bar__links{display:none}}.category-context__bar--is-hidden{height:0;overflow:hidden}.category-menu{margin:0;padding:0;position:relative}.category-menu li{display:inline-block;margin:0;list-style:none}.category-menu a{display:block;padding:.5rem .75rem;color:#40464d;font-size:.875rem;text-decoration:none}.category-menu a:active,.category-menu a:focus,.category-menu a:hover{color:#000}li .category-menu--is-active{color:#fff;background:#0073aa;border-radius:2px}li .category-menu--is-active:focus,li .category-menu--is-active:hover{color:#fff}.category-menu__mobile{padding:0!important;border-top:none!important}.category-menu__mobile ul{margin:0;padding:0;background:#23282d}.category-menu__mobile li{list-style:none;border-top:1px solid #32373c}.category-menu__mobile li a{display:block;padding:1rem 1.5rem;font-size:.875rem;text-decoration:none;color:#ccd0d4}.category-menu__mobile>.components-panel__body-title{margin:0!important}.category-menu__mobile>.components-panel__body-title>button{padding:1.5rem}.category-menu--is-loading{height:24px;position:relative}.category-menu--is-loading:after{content:"";position:absolute;background:#f3f4f5;border-radius:4px;width:80%;height:24px;left:0;top:calc(50% - 12px);transition:none}.category-search{display:flex;align-items:center;background:#fff;border:1px solid #6c7782;border-radius:2px}.category-search input[type=search]{flex-grow:1;margin:0;padding:.25rem .5rem;border:none;box-shadow:none;font-size:.8125rem}.category-search input[type=search]:focus{outline:1px auto #0073aa}.category-search__button{display:flex;background:transparent;border:none;color:#6c7782}.category-search__button:active{background:#d7dade}.category-search__button:focus{outline:1px auto #0073aa}.category-search--is-loading{display:block;height:24px;min-width:100%;background:#f3f4f5;border-radius:4px}@media only screen and (min-width:480px){.category-search--is-loading{width:224px!important;min-width:auto!important}}.pattern__copy-button{transition:all 75ms ease-in-out}.pattern__copy-button.is-small{font-size:.75rem;padding:.75rem;height:auto}.pattern__favorite-button{position:relative;font-size:.875rem;height:2.25rem;width:2.25rem;border-radius:2px;color:#606a74}.pattern__favorite-button svg{position:absolute;top:calc(50% - .75rem);left:calc(50% - .75rem);height:1.5rem;width:1.5rem;transition:all .15s ease-out}.pattern__favorite-button svg path{fill:#6c7782}.pattern__favorite-button .pattern__favorite-filled{opacity:0}.pattern__favorite-button:hover{color:#555d66;background:transparent}.pattern__favorite-button:hover svg path{fill:#555d66}.pattern__favorite-button:active{background:transparent;box-shadow:none;transform:none}.pattern__favorite-button.is-favorited{color:#555d66}.pattern__favorite-button.is-favorited svg path{fill:#d94f4f}.pattern__favorite-button.is-favorited .pattern__favorite-outline{opacity:0;transform:scale(2.8)}.pattern__favorite-button.is-favorited .pattern__favorite-filled{opacity:1}.pattern__favorite-button.is-favorited:hover .pattern__favorite-filled{animation:HeartBeat .9s infinite}@media (prefers-reduced-motion){.pattern__favorite-button.is-favorited:hover .pattern__favorite-filled{animation:none}}.pattern__favorite-button.has-label{padding:12px 18px 12px 38px;height:auto;width:auto}.pattern__favorite-button.has-label svg{top:calc(50% - 12px);left:9px}.pattern__favorite-button[disabled]{background:transparent!important;text-shadow:none!important;color:#606a74!important}@keyframes HeartBeat{0%{transform:scale(1)}25%{transform:scale(1.2)}40%{transform:scale(1)}60%{transform:scale(1.2)}to{transform:scale(1)}}.main-navigation{float:none;position:static;width:auto}.main-navigation a{font-size:.8125rem}.main-navigation.toggled div.menu{position:absolute;top:57px;right:0;width:100%;background:#0073aa}.menu-toggle{position:static;height:auto;width:auto;font-size:1.5625rem;overflow:hidden;-webkit-appearance:none}body.page .entry-header{background:none;padding:0}body.page .entry-header .entry-title{color:inherit;margin:2rem auto 1rem;max-width:960px}@media screen and (min-width:737px){body.page .entry-header .entry-title{padding:0 10px}}.pattern-grid-menu{margin:0 auto;max-width:960px;display:flex;flex-direction:column;justify-content:space-between;align-items:center}.pattern-grid-menu>:first-child,.pattern-grid-menu>:last-child{width:100%}.pattern-grid-menu>:last-child{margin:1.5rem;width:calc(100% - 3rem)}@media only screen and (min-width:782px){.pattern-grid-menu{margin:1.5rem;flex-direction:row}.pattern-grid-menu>:last-child{margin:0;width:auto}}@media only screen and (min-width:960px){.pattern-grid-menu{margin:1.5rem auto}}.pattern-grid{max-width:960px;margin:1.5rem}@media screen and (min-width:600px){.pattern-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem}.pattern-grid>*{align-self:baseline}}@media screen and (min-width:960px){.pattern-grid{margin-left:auto;margin-right:auto}}.pattern-grid__pattern{position:relative;margin:0 0 1.5rem;border:1px solid #d7dade;border-radius:2px;transition:all 75ms ease-in-out}@media screen and (min-width:600px){.pattern-grid__pattern{display:inline-block;margin:0}}.pattern-grid__pattern .pattern-grid__preview{overflow:hidden}.pattern-grid__pattern .pattern-grid__actions{position:absolute;right:0;bottom:0;left:0;display:flex;align-items:center;padding:.375rem;background:hsla(0,0%,100%,.8);backdrop-filter:blur(3px);opacity:0;transform:translateY(6px);transition:all 75ms ease-in-out}.pattern-grid__pattern .pattern-grid__actions .pattern-grid__title{flex-grow:1;margin:0;padding:0 .375rem 0 .75rem;font-size:.75rem;pointer-events:none}.pattern-grid__pattern .pattern-grid__actions .pattern__copy-button,.pattern-grid__pattern .pattern-grid__actions .pattern__favorite-button{flex-shrink:0}.pattern-grid__pattern .pattern-grid__actions .button+.button{margin-left:.375rem}.pattern-grid__pattern:focus-within .pattern-grid__actions,.pattern-grid__pattern:hover .pattern-grid__actions{opacity:1;transform:translateY(0)}.pattern-preview__container{padding:2rem 0 0;background:#f3f4f5}.pattern-preview__viewport{position:relative;margin:0 auto;padding:0 20px;max-width:100vw;min-width:320px}.pattern-preview__viewport .pattern-preview__viewport-iframe{background:#fff;border:1px solid #e8eaeb;vertical-align:middle;max-width:100vw}.pattern-preview__viewport:focus-within .pattern-preview__resize-help{clip:auto;clip-path:none;height:auto;margin:initial;overflow:initial;width:auto;bottom:-1rem;left:20px;right:20px;padding:8px 16px;background:#fff;border-radius:2px;border:1px solid #d7dade;text-align:center}.pattern-preview__drag-handle{position:absolute;top:0;bottom:0;width:20px}.pattern-preview__drag-handle.is-left{left:0}.pattern-preview__drag-handle.is-right{right:0}.pattern-preview__drag-handle-button{position:absolute;top:calc(50% - 50px);left:6px;padding:0;width:8px;height:100px;appearance:none;cursor:grab;outline:none;background:#7e8993;border-radius:99999px;border:none}.pattern-preview__drag-handle-button:hover{background:#6c7782}.pattern-preview__drag-handle-button:active{cursor:grabbing;background:#606a74}.pattern-preview__drag-handle-button:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.pattern-report-button{color:#23282d!important}.pattern-report-button__copy{margin:0;display:flex;justify-content:center;align-items:center}.pattern-report-button__copy svg{margin-right:.375rem}.pattern-report-modal{max-width:400px;width:100%}@media screen and (min-width:600px){.pattern-report-modal{width:400px}}.pattern-report-modal form>:first-child{padding-bottom:1.5rem}.pattern-report-modal__has-fixed-height{min-height:400px}.pattern-report-modal__copy{text-align:center;line-height:1.5}.pattern-report-modal__actions{margin-top:1.5rem;display:grid;grid-template-columns:48% 48%;column-gap:4%}.pattern-report-modal__actions button{justify-content:center}.pattern-report-modal__radio .components-radio-control__option{margin-top:.75rem}body.single-wporg-pattern{box-sizing:border-box;font-size:14px;font-weight:400;line-height:1.2}body.single-wporg-pattern .site-content{margin:auto;max-width:none;padding:0}body.single-wporg-pattern .entry-header{max-width:960px;padding:1.5rem;margin-left:auto;margin-right:auto}@media only screen and (min-width:960px){body.single-wporg-pattern .entry-header{padding:1.5rem 0}}body.single-wporg-pattern .entry-header .entry-title{margin-top:0;line-height:1.2}body.single-wporg-pattern .pattern-actions{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap;gap:.5em 2em}body.single-wporg-pattern .pattern-actions button{margin:0}@media (max-width:480px){body.single-wporg-pattern .pattern-actions{justify-content:center}}body.single-wporg-pattern .pattern-actions__notice{margin:1.5rem 0 0;height:auto;flex-basis:100%}body.single-wporg-pattern .pattern-actions__notice>*{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;margin:0}body.single-wporg-pattern .pattern-actions__notice>* button{margin-top:.75rem}@media only screen and (min-width:600px){body.single-wporg-pattern .pattern-actions__notice>*{align-items:center;flex-direction:row}body.single-wporg-pattern .pattern-actions__notice>* button{margin-top:0}}body.single-wporg-pattern .pattern-actions__guide{max-width:384px;height:auto;max-height:none}body.single-wporg-pattern .pattern-actions__guide-content{padding:1.5rem;line-height:1.5}body.single-wporg-pattern .pattern-actions__guide-title{margin:0}body.single-wporg-pattern .pattern-actions__guide-shortcut{background:#edeff0;box-shadow:0 0 0 1px #ccd0d4;padding:1px;font-weight:600;min-width:20px;display:inline-block;text-align:center;border-radius:2px}body.single-wporg-pattern .entry-content{max-width:960px;margin-left:auto;margin-right:auto}body.single-wporg-pattern .pattern__meta{padding:2rem 0;background:#f3f4f5}body.single-wporg-pattern .pattern__meta>div{max-width:960px;margin-left:auto;margin-right:auto;display:flex;justify-content:space-between}body.single-wporg-pattern .pattern__meta .pattern-preview__report{text-align:right}.site-header:not(.home) .search-form{display:flex;align-items:center}.site-header:not(.home) .search-form>input{flex:1;border:0;border-radius:2px 0 0 2px;display:inline-block;font-size:12px;padding:5px 10px;position:relative;width:auto;height:100%}.site-header:not(.home) .search-form button{margin:0;border-radius:0 2px 2px 0;padding:3px 12px;height:unset}.search-form--is-inline .search-form{display:flex;justify-content:space-between;background:#fff}.search-form--is-inline .search-form>label{flex:1}.search-form--is-inline .search-form input{padding:.5rem;background:transparent;border:none;box-shadow:none;width:100%;font-size:14px}@media only screen and (min-width:768px){.search-form--is-inline .search-form input{font-size:16px}}.search-form--is-inline .search-form button{background:transparent;margin-bottom:0;border:0;box-shadow:none;height:inherit;text-shadow:none;color:#32373c}.search-form--is-inline .search-form button:focus{-webkit-box-shadow:0 0 2px 1px #0073aa;box-shadow:0 0 2px 1px #0073aa}.search-form--is-centered .search-form{margin:0 auto}.search-form--is-constrained .search-form{max-width:36rem}.search-form--is-muted .search-form{border-color:#d7dade!important}.search-form--is-muted .search-form button,.search-form--is-muted .search-form input{background:#f8f9f9;color:#7e8993}.search-form--has-medium-text .search-form input{font-size:14px}.search-form--has-border .search-form{border:1px solid #7e8993}.section-heading_link,.section-heading_title{margin-bottom:0}.section-heading_title{font-weight:300}.section-heading_title .archive-title-prefix{display:block;font-size:1rem}.section-heading_link{text-decoration:underline;font-weight:600;margin-top:1.5rem!important}@media only screen and (min-width:768px){.section-heading_link{margin-top:0!important}}.section-heading_description{margin:1rem 0 0}.section-heading_description :last-child{margin-bottom:0}.section-heading--with-space{padding-bottom:16px}.site-content{margin:0 auto;max-width:none;padding:0}body.home .site-header{padding:3.75rem 1rem;text-align:left}body.home .site-branding{display:grid;grid-template-rows:auto 1fr;grid-template-columns:1fr 22rem}body.home .site-branding>*{align-self:center}@media screen and (max-width:736px){body.home .site-branding{display:block}}body.home .site-title.site-title{grid-column-start:1;grid-row-start:1;margin-top:0;text-align:left;font-size:3rem;line-height:1.25}body.home .site-description{grid-column-start:1;grid-row-start:2;margin:0;font-size:1.25rem;line-height:1.6;text-align:left;color:#fff}body.home .site-callout{grid-column-start:2;grid-row-start:1;grid-row-end:span 2;margin-left:4rem;padding:1.125rem 1.5rem 1.5rem;font-size:.875rem;line-height:1.6;background:#fff;box-shadow:.75rem .75rem 0 rgba(0,0,0,.15)}body.home .site-callout h2{margin-top:0;font-size:1.125rem;line-height:1.25;font-weight:600}body.home .site-callout p:last-child{margin-bottom:0}@media screen and (max-width:736px){body.home .site-callout{margin:2rem auto 0;max-width:24rem}}body:not(.home) .site-branding{display:flex;align-items:center;justify-content:space-between;font-size:.8125rem;color:#fff}body:not(.home) .site-branding a{color:#fff}body:not(.home) .site-branding .sep{margin-left:.5rem;margin-right:.5rem}body:not(.home) .site-branding .is-current-page{font-weight:600}.site-title a{text-decoration:none}.site-title a:active,.site-title a:focus,.site-title a:hover{color:#fff}.has-wporg-blue-color{color:#1e8cbe}.has-wporg-blue-background-color{background-color:#1e8cbe}.has-wporg-purple-color{color:#826eb4}.has-wporg-purple-background-color{background-color:#826eb4}.has-wporg-white-color{color:#fff}.has-wporg-white-background-color{background-color:#fff}.home-page .shapes{position:relative;margin:0 auto}.home-page .shapes .parallelogram p:before{font-size:64px;height:64px;left:-16px;position:relative}.home-page .shapes .parallelogram{color:#fff;display:block;margin:0 auto;opacity:.9;padding:60px 40px;text-align:center;text-decoration:none}.home-page .shapes strong{display:block;font-size:28px;font-weight:300;padding-bottom:15px;padding-top:15px}.home-page .shapes p{color:#fff;font-size:16px;font-weight:300;margin:0}.home-page .shapes u{display:block;font-size:18px;padding-top:15px}@media only screen and (min-width:768px){.home-page .shapes{height:400px}.home-page .shapes .parallelogram{width:50%;position:absolute;padding:50px 90px}}@media only screen and (min-width:960px){.home-page .shapes .parallelogram{-webkit-transform:skew(-15deg);-ms-transform:skew(-15deg);transform:skew(-15deg)}.home-page .shapes .parallelogram:before,.home-page .shapes p{-webkit-transform:skew(15deg);-ms-transform:skew(15deg);transform:skew(15deg)}}@media only screen and (min-width:1200px){.home-page .shapes{margin:0 -60px}}.terms{font-style:italic;font-size:14px}
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/functions.php

    r10930 r10983  
    44
    55use const WordPressdotorg\Pattern_Directory\Pattern_Post_Type\POST_TYPE;
     6use const WordPressdotorg\Pattern_Directory\Pattern_Flag_Post_Type\POST_TYPE as FLAG_POST_TYPE;
    67
    78add_action( 'after_setup_theme', __NAMESPACE__ . '\setup' );
     
    137138    return __DIR__ . '/index.php';
    138139}
     140
     141/**
     142 * Checks whether the user has a pending flag for a specific pattern.
     143 *
     144 * @return bool
     145 */
     146function user_has_flagged_pattern() {
     147    $args = array(
     148        'author' => get_current_user_id(),
     149        'post_parent' => get_the_ID(),
     150        'post_type' => FLAG_POST_TYPE,
     151        'post_status' => 'pending',
     152    );
     153
     154    $items = new \WP_Query( $args );
     155
     156    return $items->have_posts();
     157}
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/package.json

    r10952 r10983  
    2727    "devDependencies": {
    2828        "@wordpress/a11y": "2.15.2",
     29        "@wordpress/api-fetch": "3.23.1",
    2930        "@wordpress/block-editor": "5.3.0",
    3031        "@wordpress/browserslist-config": "3.0.1",
     
    4344        "@wordpress/viewport": "2.26.0",
    4445        "autoprefixer": "9.8.6",
     46        "classnames": "2.3.1",
    4547        "cssnano": "4.1.10",
    4648        "grunt": "1.3.0",
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/single-wporg-pattern.php

    r10952 r10983  
    1111
    1212get_header();
     13
     14$user_has_reported = is_user_logged_in() ? user_has_flagged_pattern() : false;
     15
    1316?>
    1417    <input id="block-data" type="hidden" value="<?php echo rawurlencode( wp_json_encode( get_the_content() ) ); ?>" />
     
    2427                    <?php the_title( '<h1 class="entry-title">', '</h1>' ); ?>
    2528                    <p>A large hero section with an example background image and a heading in the center.</p>
    26                     <div id="pattern-actions" class="pattern-actions">
     29                    <div id="pattern-actions" class="pattern-actions" data-id="<?php the_ID(); ?>">
    2730                        <button class="button button-primary">Copy Pattern</button>
    2831                        <button class="button">Add to favorites</button>
     
    4548                            ?>
    4649                        </div>
    47                         <div class="pattern__report">
     50                        <div id="pattern-report"
     51                            class="pattern__report"
     52                            data-post-id="<?php echo intval( get_the_ID() ); ?>"
     53                            data-logged-in="<?php echo json_encode( is_user_logged_in() ); ?>"
     54                            data-user-has-reported="<?php echo json_encode( $user_has_reported ); ?>"
     55                            ">
    4856                            <button class="button">Report this pattern</button>
    4957                        </div>
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/components/category-menu/default.js

    r10924 r10983  
    22 * External dependencies
    33 */
    4 import { useEffect, useRef } from '@wordpress/element';
    54import { ifViewportMatches } from '@wordpress/viewport';
    65
    7 const updateIndicatorLocation = ( container, { top, left, width, height } ) => {
    8     if ( ! container ) {
    9         return;
    10     }
    11 
    12     container.style.backgroundPositionX = `${ left }px`;
    13     container.style.backgroundSize = `${ width }px ${ top + height }px`;
    14 };
    15 
    166const DefaultMenu = ( { path, options, onClick, isLoading } ) => {
    17     const containerRef = useRef( null );
    18     const activeRef = useRef( null );
    19 
    20     useEffect( () => {
    21         if ( ! containerRef || ! containerRef.current || ! activeRef || ! activeRef.current ) {
    22             return;
    23         }
    24 
    25         updateIndicatorLocation( containerRef.current, {
    26             top: activeRef.current.offsetTop,
    27             left: activeRef.current.offsetLeft,
    28             width: activeRef.current.offsetWidth,
    29             height: activeRef.current.offsetHeight,
    30         } );
    31     } );
    32 
    337    if ( ! isLoading && ! options.length ) {
    348        return null;
     
    3610
    3711    return (
    38         <ul className={ `category-menu ${ isLoading ? 'category-menu--is-loading' : '' } ` } ref={ containerRef }>
    39             { options.map( ( i ) => {
    40                 const isActive = path === i.value;
    41 
    42                 return (
    43                     <li key={ i.value }>
    44                         <a
    45                             className={ isActive ? 'category-menu--is-active' : '' }
    46                             href={ i.value }
    47                             ref={ isActive ? activeRef : null }
    48                             onClick={ onClick }
    49                         >
    50                             { i.label }
    51                         </a>
    52                     </li>
    53                 );
    54             } ) }
     12        <ul className={ `category-menu ${ isLoading ? 'category-menu--is-loading' : '' } ` }>
     13            { options.map( ( i ) => (
     14                <li key={ i.value }>
     15                    <a
     16                        className={ path === i.value ? 'category-menu--is-active' : '' }
     17                        href={ i.value }
     18                        onClick={ onClick }
     19                    >
     20                        { i.label }
     21                    </a>
     22                </li>
     23            ) ) }
    5524        </ul>
    5625    );
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/components/pattern-preview-actions/index.js

    r10924 r10983  
    88 */
    99import CopyPatternButton from '../copy-pattern-button';
    10 import AddToFavoriteButton from '../add-to-favorite-button';
     10import FavoriteButton from '../favorite-button';
    1111import CopySuccessMessage from './copy-success-message';
    1212import CopyGuide from './copy-guide';
    1313
    14 const PatternPreviewActions = () => {
     14const PatternPreviewActions = ( { patternId } ) => {
    1515    const [ showSuccess, setShowSuccess ] = useState( false );
    1616    const [ showGuide, setShowGuide ] = useState( false );
     
    1919        <>
    2020            <CopyPatternButton onSuccess={ () => setShowSuccess( true ) } />
    21             <AddToFavoriteButton />
     21            <FavoriteButton patternId={ patternId } />
    2222            { showSuccess && <CopySuccessMessage onClick={ () => setShowGuide( true ) } /> }
    2323            { showGuide && <CopyGuide onFinish={ () => setShowGuide( false ) } /> }
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/components/pattern-thumbnail/index.js

    r10952 r10983  
    44import { speak } from '@wordpress/a11y';
    55import { __, sprintf } from '@wordpress/i18n';
    6 import { Button, Disabled, Tooltip } from '@wordpress/components';
     6import { Button, Disabled } from '@wordpress/components';
    77import { useEffect, useState } from '@wordpress/element';
    88
     
    1010 * Internal dependencies
    1111 */
    12 import IconHeartOutline from '../icons/heart-outline';
    13 import IconHeartFilled from '../icons/heart-filled';
     12import FavoriteButton from '../favorite-button';
    1413import Canvas from './canvas';
    1514import { copyToClipboard } from '../../utils';
    1615
    1716function PatternThumbnail( { pattern } ) {
    18     // @todo Implement a real favoriting process.
    19     const [ isFavorite, setFavorite ] = useState( Math.random() < 0.3 );
    2017    const [ copied, setCopied ] = useState( false );
    2118
     
    5552            <div className="pattern-grid__actions">
    5653                <h2 className="pattern-grid__title">{ pattern.title.rendered }</h2>
    57                 <Tooltip
    58                     text={
    59                         isFavorite
    60                             ? __( 'Remove pattern from favorites', 'wporg-patterns' )
    61                             : __( 'Favorite pattern', 'wporg-patterns' )
    62                     }
    63                 >
    64                     <button
    65                         className={
    66                             'button button-link pattern__favorite-button' + ( isFavorite ? ' is-favorited' : '' )
    67                         }
    68                         onClick={ () => setFavorite( ! isFavorite ) }
    69                     >
    70                         <IconHeartFilled className="pattern__favorite-filled" />
    71                         <IconHeartOutline className="pattern__favorite-outline" />
    72                     </button>
    73                 </Tooltip>
     54                <FavoriteButton showLabel={ false } patternId={ pattern.id } />
    7455                <Button className="pattern__copy-button is-small" isPrimary onClick={ handleCopy }>
    7556                    { copied ? __( 'Copied!', 'wporg-patterns' ) : __( 'Copy', 'wporg-patterns' ) }
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/index.js

    r10924 r10983  
    99import PatternPreview from './components/pattern-preview';
    1010import PatternPreviewActions from './components/pattern-preview-actions';
     11import ReportPatternButton from './components/report-pattern-button';
    1112import Patterns from './components/patterns';
    1213
     
    3334const patternActionsContainer = document.getElementById( 'pattern-actions' );
    3435if ( patternActionsContainer ) {
    35     render( <PatternPreviewActions />, patternActionsContainer );
     36    render(
     37        <PatternPreviewActions patternId={ Number( patternActionsContainer.dataset.id ) } />,
     38        patternActionsContainer
     39    );
    3640}
     41
     42// Load report button
     43const patternReportContainer = document.getElementById( 'pattern-report' );
     44if ( patternReportContainer ) {
     45    const { loggedIn, postId, userHasReported } = patternReportContainer.dataset;
     46
     47    render(
     48        <ReportPatternButton
     49            userHasReported={ userHasReported === 'true' }
     50            loggedIn={ loggedIn === 'true' }
     51            postId={ postId }
     52        />,
     53        patternReportContainer
     54    );
     55}
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/store/actions.js

    r10924 r10983  
     1/**
     2 * WordPress dependencies
     3 */
     4import { apiFetch } from '@wordpress/data-controls';
     5
    16/**
    27 * Get the action object signalling that patterns have been requested.
     
    5055    return { type: 'LOAD_CATEGORIES', categories: categories };
    5156}
     57
     58/**
     59 * Get the action object signalling that pattern flag reasons have been requested.
     60 *
     61 * @return {Object} Action object.
     62 */
     63export function fetchPatternFlagReasons() {
     64    return { type: 'FETCH_PATTERN_FLAG_REASONS' };
     65}
     66
     67/**
     68 * Get the action object signalling that pattern flag reasons have been loaded.
     69 *
     70 * @param {Array} reasons A list of reasons.
     71 * @return {Object} Action object.
     72 */
     73export function loadPatternFlagReasons( reasons ) {
     74    return { type: 'LOAD_PATTERN_FLAG_REASONS', reasons: reasons };
     75}
     76
     77/**
     78 * Get the action object signalling that the favorites list has been loaded.
     79 *
     80 * @param {number[]} patternIds A list of pattern IDs.
     81 *
     82 * @return {Object} Action object.
     83 */
     84export function loadFavorites( patternIds ) {
     85    return { type: 'LOAD_FAVORITES', patternIds: patternIds };
     86}
     87
     88/**
     89 * Get the action object to favorite a pattern.
     90 *
     91 * @param {number} patternId The pattern to favorite.
     92 *
     93 * @return {Object} Action object.
     94 */
     95export function* addFavorite( patternId ) {
     96    const success = yield apiFetch( {
     97        path: '/wporg/v1/pattern-favorites',
     98        method: 'POST',
     99        data: { id: patternId },
     100    } );
     101    // Silently discarding any errors.
     102    if ( success === true ) {
     103        return { type: 'ADD_FAVORITE', patternId: patternId };
     104    }
     105}
     106
     107/**
     108 * Get the action object to unfavorite a pattern.
     109 *
     110 * @param {number} patternId The pattern to unfavorite.
     111 *
     112 * @return {Object} Action object.
     113 */
     114export function* removeFavorite( patternId ) {
     115    const success = yield apiFetch( {
     116        path: '/wporg/v1/pattern-favorites',
     117        method: 'DELETE',
     118        data: { id: patternId },
     119    } );
     120    // Silently discarding any errors.
     121    if ( success === true ) {
     122        return { type: 'REMOVE_FAVORITE', patternId: patternId };
     123    }
     124}
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/store/index.js

    r10882 r10983  
    88 * Internal dependencies
    99 */
     10import * as actions from './actions';
    1011import reducer from './reducer';
     12import * as resolvers from './resolvers';
    1113import * as selectors from './selectors';
    12 import * as actions from './actions';
    13 import * as resolvers from './resolvers';
    1414
    1515/**
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/store/reducer.js

    r10924 r10983  
    2121        queries: queries( state.queries, action ),
    2222    };
     23}
     24
     25function byId( state = {}, action ) {
     26    const patternsById = ( action.patterns || [] ).reduce( ( acc, cur ) => ( { ...acc, [ cur.id ]: cur } ), {} );
     27    switch ( action.type ) {
     28        case 'LOAD_BLOCK_PATTERNS':
     29            return { ...state, ...patternsById };
     30        default:
     31            return state;
     32    }
     33}
     34
     35function queries( state = {}, action ) {
     36    const patternIds = ( action.patterns || [] ).map( ( { id } ) => id );
     37    switch ( action.type ) {
     38        case 'LOAD_BLOCK_PATTERNS':
     39            return { ...state, [ action.query ]: [ ...( state[ action.query ] || [] ), ...patternIds ] };
     40        default:
     41            return state;
     42    }
    2343}
    2444
     
    6181}
    6282
    63 function byId( state = {}, action ) {
    64     const patternsById = ( action.patterns || [] ).reduce( ( acc, cur ) => ( { ...acc, [ cur.id ]: cur } ), {} );
     83/**
     84 * Reducer to track pattern flag reasons.
     85 *
     86 * @param {Object} state Current state.
     87 * @param {Object} action Dispatched action.
     88 * @return {Object} Updated state.
     89 */
     90export function patternFlagReasons( state = undefined, action ) {
    6591    switch ( action.type ) {
    66         case 'LOAD_BLOCK_PATTERNS':
    67             return { ...state, ...patternsById };
     92        case 'FETCH_PATTERN_FLAG_REASONS':
     93            return null;
     94        case 'LOAD_PATTERN_FLAG_REASONS':
     95            return [ ...action.reasons ];
    6896        default:
    6997            return state;
     
    7199}
    72100
    73 function queries( state = {}, action ) {
    74     const patternIds = ( action.patterns || [] ).map( ( { id } ) => id );
     101/**
     102 * Reducer to track the user's favorites.
     103 *
     104 * @param {Object} state Current state.
     105 * @param {Object} action Dispatched action.
     106 * @return {Object} Updated state.
     107 */
     108export function favorites( state = [], action ) {
     109    const { patternId } = action;
    75110    switch ( action.type ) {
    76         case 'LOAD_BLOCK_PATTERNS':
    77             return { ...state, [ action.query ]: [ ...( state[ action.query ] || [] ), ...patternIds ] };
    78         default:
    79             return state;
     111        case 'LOAD_FAVORITES':
     112            return action.patternIds;
     113        case 'ADD_FAVORITE':
     114            return state.includes( patternId ) ? state : [ ...state, patternId ];
     115        case 'REMOVE_FAVORITE':
     116            return state.filter( ( id ) => id !== patternId );
    80117    }
     118
     119    return state;
    81120}
    82121
     
    85124    categories,
    86125    currentQuery,
    87     // favorites,
     126    patternFlagReasons,
     127    favorites,
    88128} );
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/store/resolvers.js

    r10924 r10983  
    88 * Internal dependencies
    99 */
    10 import { fetchCategories, fetchPatterns, loadCategories, loadPatterns } from './actions';
     10import {
     11    fetchCategories,
     12    fetchPatternFlagReasons,
     13    fetchPatterns,
     14    loadCategories,
     15    loadFavorites,
     16    loadPatternFlagReasons,
     17    loadPatterns,
     18} from './actions';
    1119import { getQueryString } from './utils';
    1220
     
    3139    } catch ( error ) {}
    3240}
     41
     42export function* getPatternFlagReasons() {
     43    try {
     44        yield fetchPatternFlagReasons();
     45
     46        const results = yield apiFetch( {
     47            path: addQueryArgs( '/wp/v2/wporg-pattern-flag-reason' ),
     48        } );
     49        yield loadPatternFlagReasons( results );
     50    } catch ( error ) {}
     51}
     52
     53export function* getFavorites() {
     54    try {
     55        const results = yield apiFetch( {
     56            path: '/wporg/v1/pattern-favorites',
     57        } );
     58        yield loadFavorites( results );
     59    } catch ( error ) {}
     60}
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/store/selectors.js

    r10924 r10983  
    113113    return cat;
    114114}
     115
     116/**
     117 * Get pattern flag reasons.
     118 *
     119 * @param {Object} state Global application state.
     120 *
     121 * @return {Array} A list of pattern flag reasons.
     122 */
     123export function getPatternFlagReasons( state ) {
     124    return state.patternFlagReasons;
     125}
     126
     127/**
     128 * Check if pattern flag reasons are loading.
     129 *
     130 * @param {Object} state Global application state.
     131 *
     132 * @return {Array} A list of pattern flag reasons.
     133 */
     134export function isLoadingPatternFlagReasons( state ) {
     135    return state.patternFlagReasons === null;
     136}
     137
     138/**
     139 * Get the list of favorites.
     140 *
     141 * @param {Object} state Global application state.
     142 *
     143 * @return {number[]} A list of favorite pattern IDs.
     144 */
     145export function getFavorites( state ) {
     146    return state.favorites;
     147}
     148
     149/**
     150 * Check if a pattern ID is in the list of favorites.
     151 *
     152 * @param {Object} state Global application state.
     153 * @param {number} patternId The pattern to check.
     154 *
     155 * @return {number[]} A list of favorite pattern IDs.
     156 */
     157export function isFavorite( state, patternId ) {
     158    return state.favorites.includes( patternId );
     159}
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/store/test/reducer.js

    r10924 r10983  
    55import apiPatternsPage2 from './fixtures/patterns-page-2';
    66import apiCategories from './fixtures/categories';
    7 import { categories, patterns } from '../reducer';
     7import apiPatternFlagReasons from './fixtures/pattern-flag-reasons';
     8import { categories, favorites, patternFlagReasons, patterns } from '../reducer';
    89
    910describe( 'state', () => {
     
    8788        } );
    8889    } );
     90
     91    describe( 'pattern flag reasons', () => {
     92        it( 'should store the pattern flag reasons in state', () => {
     93            const state = patternFlagReasons(
     94                {},
     95                {
     96                    type: 'LOAD_PATTERN_FLAG_REASONS',
     97                    reasons: apiPatternFlagReasons,
     98                }
     99            );
     100
     101            expect( state ).toEqual( apiPatternFlagReasons );
     102        } );
     103    } );
     104
     105    describe( 'favorites', () => {
     106        it( 'should store the list of favorite pattern ids', () => {
     107            const state = favorites( [], {
     108                type: 'LOAD_FAVORITES',
     109                patternIds: [ 1, 2, 3 ],
     110            } );
     111            expect( state ).toEqual( [ 1, 2, 3 ] );
     112        } );
     113
     114        it( 'should add a new favorite pattern to the list', () => {
     115            const state = favorites( [ 1, 2, 3 ], {
     116                type: 'ADD_FAVORITE',
     117                patternId: 5,
     118            } );
     119            expect( state ).toEqual( [ 1, 2, 3, 5 ] );
     120        } );
     121
     122        it( 'should not add a duplicate pattern to the list', () => {
     123            const state = favorites( [ 1, 2, 3 ], {
     124                type: 'ADD_FAVORITE',
     125                patternId: 1,
     126            } );
     127            expect( state ).toEqual( [ 1, 2, 3 ] );
     128        } );
     129
     130        it( 'should remove the unfavorited pattern id from the list', () => {
     131            const state = favorites( [ 1, 2, 3 ], {
     132                type: 'REMOVE_FAVORITE',
     133                patternId: 3,
     134            } );
     135            expect( state ).toEqual( [ 1, 2 ] );
     136        } );
     137
     138        it( 'should not remove a pattern that is not in the list', () => {
     139            const state = favorites( [ 1, 2, 3 ], {
     140                type: 'REMOVE_FAVORITE',
     141                patternId: 5,
     142            } );
     143            expect( state ).toEqual( [ 1, 2, 3 ] );
     144        } );
     145    } );
    89146} );
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/store/test/resolvers.js

    r10924 r10983  
    44import apiPatterns from './fixtures/patterns';
    55import apiCategories from './fixtures/categories';
    6 import { getCategories, getPatternsByQuery } from '../resolvers';
     6import apiPatternFlagReasons from './fixtures/pattern-flag-reasons';
     7import { getCategories, getFavorites, getPatternFlagReasons, getPatternsByQuery } from '../resolvers';
    78
    89describe( 'getPatternsByQuery', () => {
     
    3233
    3334describe( 'getCategories', () => {
    34     it( 'yields with the requested patterns', async () => {
     35    it( 'yields with the requested categories', async () => {
    3536        const generator = getCategories();
    3637
     
    5354    } );
    5455} );
     56
     57describe( 'getPatternFlagReasons', () => {
     58    it( 'yields with the requested pattern flag reasons', async () => {
     59        const generator = getPatternFlagReasons();
     60
     61        expect( generator.next().value ).toEqual( {
     62            type: 'FETCH_PATTERN_FLAG_REASONS',
     63        } );
     64
     65        // trigger apiFetch
     66        const { value: apiFetchAction } = generator.next();
     67        expect( apiFetchAction.request ).toEqual( {
     68            path: '/wp/v2/wporg-pattern-flag-reason',
     69        } );
     70
     71        // Provide response and trigger action
     72        const { value: received } = generator.next( apiPatternFlagReasons );
     73        expect( received ).toEqual( {
     74            type: 'LOAD_PATTERN_FLAG_REASONS',
     75            reasons: apiPatternFlagReasons,
     76        } );
     77    } );
     78
     79    describe( 'getFavorites', () => {
     80        it( 'yields with the requested favorite patterns', async () => {
     81            const generator = getFavorites();
     82
     83            // trigger apiFetch
     84            const { value: apiFetchAction } = generator.next();
     85            expect( apiFetchAction.request ).toEqual( {
     86                path: '/wporg/v1/pattern-favorites',
     87            } );
     88
     89            // Provide response and trigger action
     90            const { value: received } = generator.next( [ 1, 2, 3 ] );
     91            expect( received ).toEqual( {
     92                type: 'LOAD_FAVORITES',
     93                patternIds: [ 1, 2, 3 ],
     94            } );
     95        } );
     96    } );
     97} );
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/store/test/selectors.js

    r10924 r10983  
    88    getCategoryBySlug,
    99    getCurrentQuery,
     10    getFavorites,
    1011    getPattern,
     12    getPatternFlagReasons,
    1113    getPatterns,
    1214    getPatternsByQuery,
    1315    hasLoadedCategories,
     16    isFavorite,
    1417    isLoadingCategories,
     18    isLoadingPatternFlagReasons,
    1519    isLoadingPatternsByQuery,
    1620} from '../selectors';
     
    2226            byId: {},
    2327        },
     28        favorites: [],
    2429    };
    2530
     
    3237            byId: apiPatterns.reduce( ( acc, cur ) => ( { ...acc, [ cur.id ]: cur } ), {} ),
    3338        },
     39        favorites: [ 25, 27 ],
    3440    };
    3541
     
    214220        } );
    215221    } );
     222
     223    describe( 'getPatternFlagReasons', () => {
     224        it( 'should get undefined if query has not been made', () => {
     225            expect( getPatternFlagReasons( {} ) ).toBeUndefined();
     226        } );
     227
     228        it( 'should get array if query has completed', () => {
     229            const reasons = [
     230                { id: 1, name: 'crude' },
     231                { id: 2, name: 'rude' },
     232            ];
     233            expect( getPatternFlagReasons( { patternFlagReasons: reasons } ) ).toEqual( reasons );
     234        } );
     235    } );
     236
     237    describe( 'isLoadingPatternFlagReasons', () => {
     238        it( 'should get false if not null', () => {
     239            expect(
     240                isLoadingPatternFlagReasons( {
     241                    patternFlagReasons: [],
     242                } )
     243            ).toBe( false );
     244        } );
     245
     246        it( 'should get true if null', () => {
     247            expect(
     248                isLoadingPatternFlagReasons( {
     249                    patternFlagReasons: null,
     250                } )
     251            ).toBe( true );
     252        } );
     253    } );
     254
     255    describe( 'getFavorites', () => {
     256        it( 'should get an empty array if no favorites are loaded', () => {
     257            expect( getFavorites( initialState ) ).toEqual( [] );
     258        } );
     259
     260        it( 'should get the list of favorites if they exist', () => {
     261            expect( getFavorites( state ) ).toEqual( [ 25, 27 ] );
     262        } );
     263    } );
     264
     265    describe( 'isFavorite', () => {
     266        it( 'should get false if no favorites are loaded', () => {
     267            expect( isFavorite( initialState, 2 ) ).toBe( false );
     268        } );
     269
     270        it( 'should get false if the ID requested is not in the list', () => {
     271            expect( isFavorite( state, 2 ) ).toBe( false );
     272        } );
     273
     274        it( 'should get false if the ID requested is not a valid ID', () => {
     275            expect( isFavorite( state, 'fake' ) ).toBe( false );
     276        } );
     277
     278        it( 'should get true if the ID requested is found in the list', () => {
     279            expect( isFavorite( state, 25 ) ).toBe( true );
     280        } );
     281    } );
    216282} );
Note: See TracChangeset for help on using the changeset viewer.