@wordpress/patterns 2.32.0 → 2.32.1-next.47f435fc9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/build/api/index.js +35 -29
  2. package/build/api/index.js.map +7 -1
  3. package/build/components/allow-overrides-modal.js +149 -112
  4. package/build/components/allow-overrides-modal.js.map +7 -1
  5. package/build/components/category-selector.js +59 -38
  6. package/build/components/category-selector.js.map +7 -1
  7. package/build/components/create-pattern-modal.js +162 -111
  8. package/build/components/create-pattern-modal.js.map +7 -1
  9. package/build/components/duplicate-pattern-modal.js +85 -66
  10. package/build/components/duplicate-pattern-modal.js.map +7 -1
  11. package/build/components/index.js +50 -33
  12. package/build/components/index.js.map +7 -1
  13. package/build/components/overrides-panel.js +44 -39
  14. package/build/components/overrides-panel.js.map +7 -1
  15. package/build/components/pattern-convert-button.js +144 -133
  16. package/build/components/pattern-convert-button.js.map +7 -1
  17. package/build/components/pattern-overrides-block-controls.js +109 -109
  18. package/build/components/pattern-overrides-block-controls.js.map +7 -1
  19. package/build/components/pattern-overrides-controls.js +86 -69
  20. package/build/components/pattern-overrides-controls.js.map +7 -1
  21. package/build/components/patterns-manage-button.js +96 -97
  22. package/build/components/patterns-manage-button.js.map +7 -1
  23. package/build/components/rename-pattern-category-modal.js +122 -111
  24. package/build/components/rename-pattern-category-modal.js.map +7 -1
  25. package/build/components/rename-pattern-modal.js +95 -73
  26. package/build/components/rename-pattern-modal.js.map +7 -1
  27. package/build/components/reset-overrides-control.js +61 -57
  28. package/build/components/reset-overrides-control.js.map +7 -1
  29. package/build/constants.js +57 -23
  30. package/build/constants.js.map +7 -1
  31. package/build/index.js +27 -24
  32. package/build/index.js.map +7 -1
  33. package/build/lock-unlock.js +31 -15
  34. package/build/lock-unlock.js.map +7 -1
  35. package/build/private-apis.js +71 -48
  36. package/build/private-apis.js.map +7 -1
  37. package/build/private-hooks.js +57 -69
  38. package/build/private-hooks.js.map +7 -1
  39. package/build/store/actions.js +72 -85
  40. package/build/store/actions.js.map +7 -1
  41. package/build/store/constants.js +27 -10
  42. package/build/store/constants.js.map +7 -1
  43. package/build/store/index.js +50 -44
  44. package/build/store/index.js.map +7 -1
  45. package/build/store/reducer.js +30 -14
  46. package/build/store/reducer.js.map +7 -1
  47. package/build/store/selectors.js +26 -13
  48. package/build/store/selectors.js.map +7 -1
  49. package/build-module/api/index.js +14 -25
  50. package/build-module/api/index.js.map +7 -1
  51. package/build-module/components/allow-overrides-modal.js +131 -103
  52. package/build-module/components/allow-overrides-modal.js.map +7 -1
  53. package/build-module/components/category-selector.js +35 -29
  54. package/build-module/components/category-selector.js.map +7 -1
  55. package/build-module/components/create-pattern-modal.js +137 -99
  56. package/build-module/components/create-pattern-modal.js.map +7 -1
  57. package/build-module/components/duplicate-pattern-modal.js +53 -58
  58. package/build-module/components/duplicate-pattern-modal.js.map +7 -1
  59. package/build-module/components/index.js +22 -26
  60. package/build-module/components/index.js.map +7 -1
  61. package/build-module/components/overrides-panel.js +30 -34
  62. package/build-module/components/overrides-panel.js.map +7 -1
  63. package/build-module/components/pattern-convert-button.js +120 -125
  64. package/build-module/components/pattern-convert-button.js.map +7 -1
  65. package/build-module/components/pattern-overrides-block-controls.js +100 -103
  66. package/build-module/components/pattern-overrides-block-controls.js.map +7 -1
  67. package/build-module/components/pattern-overrides-controls.js +69 -58
  68. package/build-module/components/pattern-overrides-controls.js.map +7 -1
  69. package/build-module/components/patterns-manage-button.js +78 -91
  70. package/build-module/components/patterns-manage-button.js.map +7 -1
  71. package/build-module/components/rename-pattern-category-modal.js +106 -101
  72. package/build-module/components/rename-pattern-category-modal.js.map +7 -1
  73. package/build-module/components/rename-pattern-modal.js +80 -64
  74. package/build-module/components/rename-pattern-modal.js.map +7 -1
  75. package/build-module/components/reset-overrides-control.js +46 -51
  76. package/build-module/components/reset-overrides-control.js.map +7 -1
  77. package/build-module/constants.js +29 -18
  78. package/build-module/constants.js.map +7 -1
  79. package/build-module/index.js +6 -6
  80. package/build-module/index.js.map +7 -1
  81. package/build-module/lock-unlock.js +8 -7
  82. package/build-module/lock-unlock.js.map +7 -1
  83. package/build-module/private-apis.js +31 -18
  84. package/build-module/private-apis.js.map +7 -1
  85. package/build-module/private-hooks.js +35 -64
  86. package/build-module/private-hooks.js.map +7 -1
  87. package/build-module/store/actions.js +44 -74
  88. package/build-module/store/actions.js.map +7 -1
  89. package/build-module/store/constants.js +5 -5
  90. package/build-module/store/constants.js.map +7 -1
  91. package/build-module/store/index.js +13 -32
  92. package/build-module/store/index.js.map +7 -1
  93. package/build-module/store/reducer.js +9 -8
  94. package/build-module/store/reducer.js.map +7 -1
  95. package/build-module/store/selectors.js +5 -9
  96. package/build-module/store/selectors.js.map +7 -1
  97. package/build-style/style-rtl.css +3 -138
  98. package/build-style/style.css +3 -138
  99. package/package.json +24 -17
  100. package/src/components/style.scss +5 -0
  101. package/src/style.scss +2 -1
  102. package/build/index.native.js +0 -18
  103. package/build/index.native.js.map +0 -1
  104. package/build-module/index.native.js +0 -11
  105. package/build-module/index.native.js.map +0 -1
@@ -1,26 +1,23 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { __ } from '@wordpress/i18n';
5
- import { useMemo, useState } from '@wordpress/element';
6
- import { FormTokenField } from '@wordpress/components';
7
- import { useDebounce } from '@wordpress/compose';
8
- import { decodeEntities } from '@wordpress/html-entities';
9
- import { jsx as _jsx } from "react/jsx-runtime";
10
- const unescapeString = arg => {
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { __ } from "@wordpress/i18n";
3
+ import { useMemo, useState } from "@wordpress/element";
4
+ import { FormTokenField } from "@wordpress/components";
5
+ import { useDebounce } from "@wordpress/compose";
6
+ import { decodeEntities } from "@wordpress/html-entities";
7
+ const unescapeString = (arg) => {
11
8
  return decodeEntities(arg);
12
9
  };
13
- export const CATEGORY_SLUG = 'wp_pattern_category';
14
- export default function CategorySelector({
10
+ const CATEGORY_SLUG = "wp_pattern_category";
11
+ function CategorySelector({
15
12
  categoryTerms,
16
13
  onChange,
17
14
  categoryMap
18
15
  }) {
19
- const [search, setSearch] = useState('');
16
+ const [search, setSearch] = useState("");
20
17
  const debouncedSearch = useDebounce(setSearch, 500);
21
18
  const suggestions = useMemo(() => {
22
- return Array.from(categoryMap.values()).map(category => unescapeString(category.label)).filter(category => {
23
- if (search !== '') {
19
+ return Array.from(categoryMap.values()).map((category) => unescapeString(category.label)).filter((category) => {
20
+ if (search !== "") {
24
21
  return category.toLowerCase().includes(search.toLowerCase());
25
22
  }
26
23
  return true;
@@ -28,24 +25,33 @@ export default function CategorySelector({
28
25
  }, [search, categoryMap]);
29
26
  function handleChange(termNames) {
30
27
  const uniqueTerms = termNames.reduce((terms, newTerm) => {
31
- if (!terms.some(term => term.toLowerCase() === newTerm.toLowerCase())) {
28
+ if (!terms.some(
29
+ (term) => term.toLowerCase() === newTerm.toLowerCase()
30
+ )) {
32
31
  terms.push(newTerm);
33
32
  }
34
33
  return terms;
35
34
  }, []);
36
35
  onChange(uniqueTerms);
37
36
  }
38
- return /*#__PURE__*/_jsx(FormTokenField, {
39
- className: "patterns-menu-items__convert-modal-categories",
40
- value: categoryTerms,
41
- suggestions: suggestions,
42
- onChange: handleChange,
43
- onInputChange: debouncedSearch,
44
- label: __('Categories'),
45
- tokenizeOnBlur: true,
46
- __experimentalExpandOnFocus: true,
47
- __next40pxDefaultSize: true,
48
- __nextHasNoMarginBottom: true
49
- });
37
+ return /* @__PURE__ */ jsx(
38
+ FormTokenField,
39
+ {
40
+ className: "patterns-menu-items__convert-modal-categories",
41
+ value: categoryTerms,
42
+ suggestions,
43
+ onChange: handleChange,
44
+ onInputChange: debouncedSearch,
45
+ label: __("Categories"),
46
+ tokenizeOnBlur: true,
47
+ __experimentalExpandOnFocus: true,
48
+ __next40pxDefaultSize: true,
49
+ __nextHasNoMarginBottom: true
50
+ }
51
+ );
50
52
  }
51
- //# sourceMappingURL=category-selector.js.map
53
+ export {
54
+ CATEGORY_SLUG,
55
+ CategorySelector as default
56
+ };
57
+ //# sourceMappingURL=category-selector.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["__","useMemo","useState","FormTokenField","useDebounce","decodeEntities","jsx","_jsx","unescapeString","arg","CATEGORY_SLUG","CategorySelector","categoryTerms","onChange","categoryMap","search","setSearch","debouncedSearch","suggestions","Array","from","values","map","category","label","filter","toLowerCase","includes","sort","a","b","localeCompare","handleChange","termNames","uniqueTerms","reduce","terms","newTerm","some","term","push","className","value","onInputChange","tokenizeOnBlur","__experimentalExpandOnFocus","__next40pxDefaultSize","__nextHasNoMarginBottom"],"sources":["@wordpress/patterns/src/components/category-selector.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { FormTokenField } from '@wordpress/components';\nimport { useDebounce } from '@wordpress/compose';\nimport { decodeEntities } from '@wordpress/html-entities';\n\nconst unescapeString = ( arg ) => {\n\treturn decodeEntities( arg );\n};\n\nexport const CATEGORY_SLUG = 'wp_pattern_category';\n\nexport default function CategorySelector( {\n\tcategoryTerms,\n\tonChange,\n\tcategoryMap,\n} ) {\n\tconst [ search, setSearch ] = useState( '' );\n\tconst debouncedSearch = useDebounce( setSearch, 500 );\n\n\tconst suggestions = useMemo( () => {\n\t\treturn Array.from( categoryMap.values() )\n\t\t\t.map( ( category ) => unescapeString( category.label ) )\n\t\t\t.filter( ( category ) => {\n\t\t\t\tif ( search !== '' ) {\n\t\t\t\t\treturn category\n\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t.includes( search.toLowerCase() );\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t} )\n\t\t\t.sort( ( a, b ) => a.localeCompare( b ) );\n\t}, [ search, categoryMap ] );\n\n\tfunction handleChange( termNames ) {\n\t\tconst uniqueTerms = termNames.reduce( ( terms, newTerm ) => {\n\t\t\tif (\n\t\t\t\t! terms.some(\n\t\t\t\t\t( term ) => term.toLowerCase() === newTerm.toLowerCase()\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tterms.push( newTerm );\n\t\t\t}\n\t\t\treturn terms;\n\t\t}, [] );\n\n\t\tonChange( uniqueTerms );\n\t}\n\n\treturn (\n\t\t<FormTokenField\n\t\t\tclassName=\"patterns-menu-items__convert-modal-categories\"\n\t\t\tvalue={ categoryTerms }\n\t\t\tsuggestions={ suggestions }\n\t\t\tonChange={ handleChange }\n\t\t\tonInputChange={ debouncedSearch }\n\t\t\tlabel={ __( 'Categories' ) }\n\t\t\ttokenizeOnBlur\n\t\t\t__experimentalExpandOnFocus\n\t\t\t__next40pxDefaultSize\n\t\t\t__nextHasNoMarginBottom\n\t\t/>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,OAAO,EAAEC,QAAQ,QAAQ,oBAAoB;AACtD,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,WAAW,QAAQ,oBAAoB;AAChD,SAASC,cAAc,QAAQ,0BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE1D,MAAMC,cAAc,GAAKC,GAAG,IAAM;EACjC,OAAOJ,cAAc,CAAEI,GAAI,CAAC;AAC7B,CAAC;AAED,OAAO,MAAMC,aAAa,GAAG,qBAAqB;AAElD,eAAe,SAASC,gBAAgBA,CAAE;EACzCC,aAAa;EACbC,QAAQ;EACRC;AACD,CAAC,EAAG;EACH,MAAM,CAAEC,MAAM,EAAEC,SAAS,CAAE,GAAGd,QAAQ,CAAE,EAAG,CAAC;EAC5C,MAAMe,eAAe,GAAGb,WAAW,CAAEY,SAAS,EAAE,GAAI,CAAC;EAErD,MAAME,WAAW,GAAGjB,OAAO,CAAE,MAAM;IAClC,OAAOkB,KAAK,CAACC,IAAI,CAAEN,WAAW,CAACO,MAAM,CAAC,CAAE,CAAC,CACvCC,GAAG,CAAIC,QAAQ,IAAMf,cAAc,CAAEe,QAAQ,CAACC,KAAM,CAAE,CAAC,CACvDC,MAAM,CAAIF,QAAQ,IAAM;MACxB,IAAKR,MAAM,KAAK,EAAE,EAAG;QACpB,OAAOQ,QAAQ,CACbG,WAAW,CAAC,CAAC,CACbC,QAAQ,CAAEZ,MAAM,CAACW,WAAW,CAAC,CAAE,CAAC;MACnC;MACA,OAAO,IAAI;IACZ,CAAE,CAAC,CACFE,IAAI,CAAE,CAAEC,CAAC,EAAEC,CAAC,KAAMD,CAAC,CAACE,aAAa,CAAED,CAAE,CAAE,CAAC;EAC3C,CAAC,EAAE,CAAEf,MAAM,EAAED,WAAW,CAAG,CAAC;EAE5B,SAASkB,YAAYA,CAAEC,SAAS,EAAG;IAClC,MAAMC,WAAW,GAAGD,SAAS,CAACE,MAAM,CAAE,CAAEC,KAAK,EAAEC,OAAO,KAAM;MAC3D,IACC,CAAED,KAAK,CAACE,IAAI,CACTC,IAAI,IAAMA,IAAI,CAACb,WAAW,CAAC,CAAC,KAAKW,OAAO,CAACX,WAAW,CAAC,CACxD,CAAC,EACA;QACDU,KAAK,CAACI,IAAI,CAAEH,OAAQ,CAAC;MACtB;MACA,OAAOD,KAAK;IACb,CAAC,EAAE,EAAG,CAAC;IAEPvB,QAAQ,CAAEqB,WAAY,CAAC;EACxB;EAEA,oBACC3B,IAAA,CAACJ,cAAc;IACdsC,SAAS,EAAC,+CAA+C;IACzDC,KAAK,EAAG9B,aAAe;IACvBM,WAAW,EAAGA,WAAa;IAC3BL,QAAQ,EAAGmB,YAAc;IACzBW,aAAa,EAAG1B,eAAiB;IACjCO,KAAK,EAAGxB,EAAE,CAAE,YAAa,CAAG;IAC5B4C,cAAc;IACdC,2BAA2B;IAC3BC,qBAAqB;IACrBC,uBAAuB;EAAA,CACvB,CAAC;AAEJ","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/category-selector.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { FormTokenField } from '@wordpress/components';\nimport { useDebounce } from '@wordpress/compose';\nimport { decodeEntities } from '@wordpress/html-entities';\n\nconst unescapeString = ( arg ) => {\n\treturn decodeEntities( arg );\n};\n\nexport const CATEGORY_SLUG = 'wp_pattern_category';\n\nexport default function CategorySelector( {\n\tcategoryTerms,\n\tonChange,\n\tcategoryMap,\n} ) {\n\tconst [ search, setSearch ] = useState( '' );\n\tconst debouncedSearch = useDebounce( setSearch, 500 );\n\n\tconst suggestions = useMemo( () => {\n\t\treturn Array.from( categoryMap.values() )\n\t\t\t.map( ( category ) => unescapeString( category.label ) )\n\t\t\t.filter( ( category ) => {\n\t\t\t\tif ( search !== '' ) {\n\t\t\t\t\treturn category\n\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t.includes( search.toLowerCase() );\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t} )\n\t\t\t.sort( ( a, b ) => a.localeCompare( b ) );\n\t}, [ search, categoryMap ] );\n\n\tfunction handleChange( termNames ) {\n\t\tconst uniqueTerms = termNames.reduce( ( terms, newTerm ) => {\n\t\t\tif (\n\t\t\t\t! terms.some(\n\t\t\t\t\t( term ) => term.toLowerCase() === newTerm.toLowerCase()\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tterms.push( newTerm );\n\t\t\t}\n\t\t\treturn terms;\n\t\t}, [] );\n\n\t\tonChange( uniqueTerms );\n\t}\n\n\treturn (\n\t\t<FormTokenField\n\t\t\tclassName=\"patterns-menu-items__convert-modal-categories\"\n\t\t\tvalue={ categoryTerms }\n\t\t\tsuggestions={ suggestions }\n\t\t\tonChange={ handleChange }\n\t\t\tonInputChange={ debouncedSearch }\n\t\t\tlabel={ __( 'Categories' ) }\n\t\t\ttokenizeOnBlur\n\t\t\t__experimentalExpandOnFocus\n\t\t\t__next40pxDefaultSize\n\t\t\t__nextHasNoMarginBottom\n\t\t/>\n\t);\n}\n"],
5
+ "mappings": "AAqDE;AAlDF,SAAS,UAAU;AACnB,SAAS,SAAS,gBAAgB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAE/B,MAAM,iBAAiB,CAAE,QAAS;AACjC,SAAO,eAAgB,GAAI;AAC5B;AAEO,MAAM,gBAAgB;AAEd,SAAR,iBAAmC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,CAAE,QAAQ,SAAU,IAAI,SAAU,EAAG;AAC3C,QAAM,kBAAkB,YAAa,WAAW,GAAI;AAEpD,QAAM,cAAc,QAAS,MAAM;AAClC,WAAO,MAAM,KAAM,YAAY,OAAO,CAAE,EACtC,IAAK,CAAE,aAAc,eAAgB,SAAS,KAAM,CAAE,EACtD,OAAQ,CAAE,aAAc;AACxB,UAAK,WAAW,IAAK;AACpB,eAAO,SACL,YAAY,EACZ,SAAU,OAAO,YAAY,CAAE;AAAA,MAClC;AACA,aAAO;AAAA,IACR,CAAE,EACD,KAAM,CAAE,GAAG,MAAO,EAAE,cAAe,CAAE,CAAE;AAAA,EAC1C,GAAG,CAAE,QAAQ,WAAY,CAAE;AAE3B,WAAS,aAAc,WAAY;AAClC,UAAM,cAAc,UAAU,OAAQ,CAAE,OAAO,YAAa;AAC3D,UACC,CAAE,MAAM;AAAA,QACP,CAAE,SAAU,KAAK,YAAY,MAAM,QAAQ,YAAY;AAAA,MACxD,GACC;AACD,cAAM,KAAM,OAAQ;AAAA,MACrB;AACA,aAAO;AAAA,IACR,GAAG,CAAC,CAAE;AAEN,aAAU,WAAY;AAAA,EACvB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,WAAU;AAAA,MACV,OAAQ;AAAA,MACR;AAAA,MACA,UAAW;AAAA,MACX,eAAgB;AAAA,MAChB,OAAQ,GAAI,YAAa;AAAA,MACzB,gBAAc;AAAA,MACd,6BAA2B;AAAA,MAC3B,uBAAqB;AAAA,MACrB,yBAAuB;AAAA;AAAA,EACxB;AAEF;",
6
+ "names": []
7
+ }
@@ -1,134 +1,172 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { Modal, Button, TextControl, __experimentalHStack as HStack, __experimentalVStack as VStack, ToggleControl } from '@wordpress/components';
5
- import { __, _x } from '@wordpress/i18n';
6
- import { useState } from '@wordpress/element';
7
- import { useDispatch, useSelect } from '@wordpress/data';
8
- import { store as noticesStore } from '@wordpress/notices';
9
- import { store as coreStore } from '@wordpress/core-data';
10
-
11
- /**
12
- * Internal dependencies
13
- */
14
- import { PATTERN_DEFAULT_CATEGORY, PATTERN_SYNC_TYPES, PATTERN_TYPES } from '../constants';
15
- import { store as patternsStore } from '../store';
16
- import CategorySelector from './category-selector';
17
- import { useAddPatternCategory } from '../private-hooks';
18
- import { unlock } from '../lock-unlock';
19
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
- export default function CreatePatternModal({
21
- className = 'patterns-menu-items__convert-modal',
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import {
3
+ Modal,
4
+ Button,
5
+ TextControl,
6
+ __experimentalHStack as HStack,
7
+ __experimentalVStack as VStack,
8
+ ToggleControl
9
+ } from "@wordpress/components";
10
+ import { __, _x } from "@wordpress/i18n";
11
+ import { useState } from "@wordpress/element";
12
+ import { useDispatch, useSelect } from "@wordpress/data";
13
+ import { store as noticesStore } from "@wordpress/notices";
14
+ import { store as coreStore } from "@wordpress/core-data";
15
+ import {
16
+ PATTERN_DEFAULT_CATEGORY,
17
+ PATTERN_SYNC_TYPES,
18
+ PATTERN_TYPES
19
+ } from "../constants";
20
+ import { store as patternsStore } from "../store";
21
+ import CategorySelector from "./category-selector";
22
+ import { useAddPatternCategory } from "../private-hooks";
23
+ import { unlock } from "../lock-unlock";
24
+ function CreatePatternModal({
25
+ className = "patterns-menu-items__convert-modal",
22
26
  modalTitle,
23
27
  ...restProps
24
28
  }) {
25
- const defaultModalTitle = useSelect(select => select(coreStore).getPostType(PATTERN_TYPES.user)?.labels?.add_new_item, []);
26
- return /*#__PURE__*/_jsx(Modal, {
27
- title: modalTitle || defaultModalTitle,
28
- onRequestClose: restProps.onClose,
29
- overlayClassName: className,
30
- focusOnMount: "firstContentElement",
31
- size: "small",
32
- children: /*#__PURE__*/_jsx(CreatePatternModalContents, {
33
- ...restProps
34
- })
35
- });
29
+ const defaultModalTitle = useSelect(
30
+ (select) => select(coreStore).getPostType(PATTERN_TYPES.user)?.labels?.add_new_item,
31
+ []
32
+ );
33
+ return /* @__PURE__ */ jsx(
34
+ Modal,
35
+ {
36
+ title: modalTitle || defaultModalTitle,
37
+ onRequestClose: restProps.onClose,
38
+ overlayClassName: className,
39
+ focusOnMount: "firstContentElement",
40
+ size: "small",
41
+ children: /* @__PURE__ */ jsx(CreatePatternModalContents, { ...restProps })
42
+ }
43
+ );
36
44
  }
37
- export function CreatePatternModalContents({
38
- confirmLabel = __('Add'),
45
+ function CreatePatternModalContents({
46
+ confirmLabel = __("Add"),
39
47
  defaultCategories = [],
40
48
  content,
41
49
  onClose,
42
50
  onError,
43
51
  onSuccess,
44
52
  defaultSyncType = PATTERN_SYNC_TYPES.full,
45
- defaultTitle = ''
53
+ defaultTitle = ""
46
54
  }) {
47
55
  const [syncType, setSyncType] = useState(defaultSyncType);
48
56
  const [categoryTerms, setCategoryTerms] = useState(defaultCategories);
49
57
  const [title, setTitle] = useState(defaultTitle);
50
58
  const [isSaving, setIsSaving] = useState(false);
51
- const {
52
- createPattern
53
- } = unlock(useDispatch(patternsStore));
54
- const {
55
- createErrorNotice
56
- } = useDispatch(noticesStore);
57
- const {
58
- categoryMap,
59
- findOrCreateTerm
60
- } = useAddPatternCategory();
59
+ const { createPattern } = unlock(useDispatch(patternsStore));
60
+ const { createErrorNotice } = useDispatch(noticesStore);
61
+ const { categoryMap, findOrCreateTerm } = useAddPatternCategory();
61
62
  async function onCreate(patternTitle, sync) {
62
63
  if (!title || isSaving) {
63
64
  return;
64
65
  }
65
66
  try {
66
67
  setIsSaving(true);
67
- const categories = await Promise.all(categoryTerms.map(termName => findOrCreateTerm(termName)));
68
- const newPattern = await createPattern(patternTitle, sync, typeof content === 'function' ? content() : content, categories);
68
+ const categories = await Promise.all(
69
+ categoryTerms.map(
70
+ (termName) => findOrCreateTerm(termName)
71
+ )
72
+ );
73
+ const newPattern = await createPattern(
74
+ patternTitle,
75
+ sync,
76
+ typeof content === "function" ? content() : content,
77
+ categories
78
+ );
69
79
  onSuccess({
70
80
  pattern: newPattern,
71
81
  categoryId: PATTERN_DEFAULT_CATEGORY
72
82
  });
73
83
  } catch (error) {
74
84
  createErrorNotice(error.message, {
75
- type: 'snackbar',
76
- id: 'pattern-create'
85
+ type: "snackbar",
86
+ id: "pattern-create"
77
87
  });
78
88
  onError?.();
79
89
  } finally {
80
90
  setIsSaving(false);
81
91
  setCategoryTerms([]);
82
- setTitle('');
92
+ setTitle("");
83
93
  }
84
94
  }
85
- return /*#__PURE__*/_jsx("form", {
86
- onSubmit: event => {
87
- event.preventDefault();
88
- onCreate(title, syncType);
89
- },
90
- children: /*#__PURE__*/_jsxs(VStack, {
91
- spacing: "5",
92
- children: [/*#__PURE__*/_jsx(TextControl, {
93
- label: __('Name'),
94
- value: title,
95
- onChange: setTitle,
96
- placeholder: __('My pattern'),
97
- className: "patterns-create-modal__name-input",
98
- __nextHasNoMarginBottom: true,
99
- __next40pxDefaultSize: true
100
- }), /*#__PURE__*/_jsx(CategorySelector, {
101
- categoryTerms: categoryTerms,
102
- onChange: setCategoryTerms,
103
- categoryMap: categoryMap
104
- }), /*#__PURE__*/_jsx(ToggleControl, {
105
- __nextHasNoMarginBottom: true,
106
- label: _x('Synced', 'pattern (singular)'),
107
- help: __('Sync this pattern across multiple locations.'),
108
- checked: syncType === PATTERN_SYNC_TYPES.full,
109
- onChange: () => {
110
- setSyncType(syncType === PATTERN_SYNC_TYPES.full ? PATTERN_SYNC_TYPES.unsynced : PATTERN_SYNC_TYPES.full);
111
- }
112
- }), /*#__PURE__*/_jsxs(HStack, {
113
- justify: "right",
114
- children: [/*#__PURE__*/_jsx(Button, {
115
- __next40pxDefaultSize: true,
116
- variant: "tertiary",
117
- onClick: () => {
118
- onClose();
119
- setTitle('');
120
- },
121
- children: __('Cancel')
122
- }), /*#__PURE__*/_jsx(Button, {
123
- __next40pxDefaultSize: true,
124
- variant: "primary",
125
- type: "submit",
126
- "aria-disabled": !title || isSaving,
127
- isBusy: isSaving,
128
- children: confirmLabel
129
- })]
130
- })]
131
- })
132
- });
95
+ return /* @__PURE__ */ jsx(
96
+ "form",
97
+ {
98
+ onSubmit: (event) => {
99
+ event.preventDefault();
100
+ onCreate(title, syncType);
101
+ },
102
+ children: /* @__PURE__ */ jsxs(VStack, { spacing: "5", children: [
103
+ /* @__PURE__ */ jsx(
104
+ TextControl,
105
+ {
106
+ label: __("Name"),
107
+ value: title,
108
+ onChange: setTitle,
109
+ placeholder: __("My pattern"),
110
+ className: "patterns-create-modal__name-input",
111
+ __nextHasNoMarginBottom: true,
112
+ __next40pxDefaultSize: true
113
+ }
114
+ ),
115
+ /* @__PURE__ */ jsx(
116
+ CategorySelector,
117
+ {
118
+ categoryTerms,
119
+ onChange: setCategoryTerms,
120
+ categoryMap
121
+ }
122
+ ),
123
+ /* @__PURE__ */ jsx(
124
+ ToggleControl,
125
+ {
126
+ __nextHasNoMarginBottom: true,
127
+ label: _x("Synced", "pattern (singular)"),
128
+ help: __(
129
+ "Sync this pattern across multiple locations."
130
+ ),
131
+ checked: syncType === PATTERN_SYNC_TYPES.full,
132
+ onChange: () => {
133
+ setSyncType(
134
+ syncType === PATTERN_SYNC_TYPES.full ? PATTERN_SYNC_TYPES.unsynced : PATTERN_SYNC_TYPES.full
135
+ );
136
+ }
137
+ }
138
+ ),
139
+ /* @__PURE__ */ jsxs(HStack, { justify: "right", children: [
140
+ /* @__PURE__ */ jsx(
141
+ Button,
142
+ {
143
+ __next40pxDefaultSize: true,
144
+ variant: "tertiary",
145
+ onClick: () => {
146
+ onClose();
147
+ setTitle("");
148
+ },
149
+ children: __("Cancel")
150
+ }
151
+ ),
152
+ /* @__PURE__ */ jsx(
153
+ Button,
154
+ {
155
+ __next40pxDefaultSize: true,
156
+ variant: "primary",
157
+ type: "submit",
158
+ "aria-disabled": !title || isSaving,
159
+ isBusy: isSaving,
160
+ children: confirmLabel
161
+ }
162
+ )
163
+ ] })
164
+ ] })
165
+ }
166
+ );
133
167
  }
134
- //# sourceMappingURL=create-pattern-modal.js.map
168
+ export {
169
+ CreatePatternModalContents,
170
+ CreatePatternModal as default
171
+ };
172
+ //# sourceMappingURL=create-pattern-modal.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["Modal","Button","TextControl","__experimentalHStack","HStack","__experimentalVStack","VStack","ToggleControl","__","_x","useState","useDispatch","useSelect","store","noticesStore","coreStore","PATTERN_DEFAULT_CATEGORY","PATTERN_SYNC_TYPES","PATTERN_TYPES","patternsStore","CategorySelector","useAddPatternCategory","unlock","jsx","_jsx","jsxs","_jsxs","CreatePatternModal","className","modalTitle","restProps","defaultModalTitle","select","getPostType","user","labels","add_new_item","title","onRequestClose","onClose","overlayClassName","focusOnMount","size","children","CreatePatternModalContents","confirmLabel","defaultCategories","content","onError","onSuccess","defaultSyncType","full","defaultTitle","syncType","setSyncType","categoryTerms","setCategoryTerms","setTitle","isSaving","setIsSaving","createPattern","createErrorNotice","categoryMap","findOrCreateTerm","onCreate","patternTitle","sync","categories","Promise","all","map","termName","newPattern","pattern","categoryId","error","message","type","id","onSubmit","event","preventDefault","spacing","label","value","onChange","placeholder","__nextHasNoMarginBottom","__next40pxDefaultSize","help","checked","unsynced","justify","variant","onClick","isBusy"],"sources":["@wordpress/patterns/src/components/create-pattern-modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tModal,\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tToggleControl,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_SYNC_TYPES,\n\tPATTERN_TYPES,\n} from '../constants';\nimport { store as patternsStore } from '../store';\nimport CategorySelector from './category-selector';\nimport { useAddPatternCategory } from '../private-hooks';\nimport { unlock } from '../lock-unlock';\n\nexport default function CreatePatternModal( {\n\tclassName = 'patterns-menu-items__convert-modal',\n\tmodalTitle,\n\t...restProps\n} ) {\n\tconst defaultModalTitle = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getPostType( PATTERN_TYPES.user )?.labels\n\t\t\t\t?.add_new_item,\n\t\t[]\n\t);\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle || defaultModalTitle }\n\t\t\tonRequestClose={ restProps.onClose }\n\t\t\toverlayClassName={ className }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<CreatePatternModalContents { ...restProps } />\n\t\t</Modal>\n\t);\n}\n\nexport function CreatePatternModalContents( {\n\tconfirmLabel = __( 'Add' ),\n\tdefaultCategories = [],\n\tcontent,\n\tonClose,\n\tonError,\n\tonSuccess,\n\tdefaultSyncType = PATTERN_SYNC_TYPES.full,\n\tdefaultTitle = '',\n} ) {\n\tconst [ syncType, setSyncType ] = useState( defaultSyncType );\n\tconst [ categoryTerms, setCategoryTerms ] = useState( defaultCategories );\n\tconst [ title, setTitle ] = useState( defaultTitle );\n\n\tconst [ isSaving, setIsSaving ] = useState( false );\n\tconst { createPattern } = unlock( useDispatch( patternsStore ) );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tconst { categoryMap, findOrCreateTerm } = useAddPatternCategory();\n\n\tasync function onCreate( patternTitle, sync ) {\n\t\tif ( ! title || isSaving ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tsetIsSaving( true );\n\t\t\tconst categories = await Promise.all(\n\t\t\t\tcategoryTerms.map( ( termName ) =>\n\t\t\t\t\tfindOrCreateTerm( termName )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tconst newPattern = await createPattern(\n\t\t\t\tpatternTitle,\n\t\t\t\tsync,\n\t\t\t\ttypeof content === 'function' ? content() : content,\n\t\t\t\tcategories\n\t\t\t);\n\t\t\tonSuccess( {\n\t\t\t\tpattern: newPattern,\n\t\t\t\tcategoryId: PATTERN_DEFAULT_CATEGORY,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-create',\n\t\t\t} );\n\t\t\tonError?.();\n\t\t} finally {\n\t\t\tsetIsSaving( false );\n\t\t\tsetCategoryTerms( [] );\n\t\t\tsetTitle( '' );\n\t\t}\n\t}\n\n\treturn (\n\t\t<form\n\t\t\tonSubmit={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonCreate( title, syncType );\n\t\t\t} }\n\t\t>\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<TextControl\n\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\tplaceholder={ __( 'My pattern' ) }\n\t\t\t\t\tclassName=\"patterns-create-modal__name-input\"\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t/>\n\t\t\t\t<CategorySelector\n\t\t\t\t\tcategoryTerms={ categoryTerms }\n\t\t\t\t\tonChange={ setCategoryTerms }\n\t\t\t\t\tcategoryMap={ categoryMap }\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ _x( 'Synced', 'pattern (singular)' ) }\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t'Sync this pattern across multiple locations.'\n\t\t\t\t\t) }\n\t\t\t\t\tchecked={ syncType === PATTERN_SYNC_TYPES.full }\n\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\tsetSyncType(\n\t\t\t\t\t\t\tsyncType === PATTERN_SYNC_TYPES.full\n\t\t\t\t\t\t\t\t? PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t\t\t\t\t: PATTERN_SYNC_TYPES.full\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\taria-disabled={ ! title || isSaving }\n\t\t\t\t\t\tisBusy={ isSaving }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ confirmLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t</form>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/create-pattern-modal.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tModal,\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tToggleControl,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_SYNC_TYPES,\n\tPATTERN_TYPES,\n} from '../constants';\nimport { store as patternsStore } from '../store';\nimport CategorySelector from './category-selector';\nimport { useAddPatternCategory } from '../private-hooks';\nimport { unlock } from '../lock-unlock';\n\nexport default function CreatePatternModal( {\n\tclassName = 'patterns-menu-items__convert-modal',\n\tmodalTitle,\n\t...restProps\n} ) {\n\tconst defaultModalTitle = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getPostType( PATTERN_TYPES.user )?.labels\n\t\t\t\t?.add_new_item,\n\t\t[]\n\t);\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle || defaultModalTitle }\n\t\t\tonRequestClose={ restProps.onClose }\n\t\t\toverlayClassName={ className }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<CreatePatternModalContents { ...restProps } />\n\t\t</Modal>\n\t);\n}\n\nexport function CreatePatternModalContents( {\n\tconfirmLabel = __( 'Add' ),\n\tdefaultCategories = [],\n\tcontent,\n\tonClose,\n\tonError,\n\tonSuccess,\n\tdefaultSyncType = PATTERN_SYNC_TYPES.full,\n\tdefaultTitle = '',\n} ) {\n\tconst [ syncType, setSyncType ] = useState( defaultSyncType );\n\tconst [ categoryTerms, setCategoryTerms ] = useState( defaultCategories );\n\tconst [ title, setTitle ] = useState( defaultTitle );\n\n\tconst [ isSaving, setIsSaving ] = useState( false );\n\tconst { createPattern } = unlock( useDispatch( patternsStore ) );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tconst { categoryMap, findOrCreateTerm } = useAddPatternCategory();\n\n\tasync function onCreate( patternTitle, sync ) {\n\t\tif ( ! title || isSaving ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tsetIsSaving( true );\n\t\t\tconst categories = await Promise.all(\n\t\t\t\tcategoryTerms.map( ( termName ) =>\n\t\t\t\t\tfindOrCreateTerm( termName )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tconst newPattern = await createPattern(\n\t\t\t\tpatternTitle,\n\t\t\t\tsync,\n\t\t\t\ttypeof content === 'function' ? content() : content,\n\t\t\t\tcategories\n\t\t\t);\n\t\t\tonSuccess( {\n\t\t\t\tpattern: newPattern,\n\t\t\t\tcategoryId: PATTERN_DEFAULT_CATEGORY,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-create',\n\t\t\t} );\n\t\t\tonError?.();\n\t\t} finally {\n\t\t\tsetIsSaving( false );\n\t\t\tsetCategoryTerms( [] );\n\t\t\tsetTitle( '' );\n\t\t}\n\t}\n\n\treturn (\n\t\t<form\n\t\t\tonSubmit={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonCreate( title, syncType );\n\t\t\t} }\n\t\t>\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<TextControl\n\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\tplaceholder={ __( 'My pattern' ) }\n\t\t\t\t\tclassName=\"patterns-create-modal__name-input\"\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t/>\n\t\t\t\t<CategorySelector\n\t\t\t\t\tcategoryTerms={ categoryTerms }\n\t\t\t\t\tonChange={ setCategoryTerms }\n\t\t\t\t\tcategoryMap={ categoryMap }\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ _x( 'Synced', 'pattern (singular)' ) }\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t'Sync this pattern across multiple locations.'\n\t\t\t\t\t) }\n\t\t\t\t\tchecked={ syncType === PATTERN_SYNC_TYPES.full }\n\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\tsetSyncType(\n\t\t\t\t\t\t\tsyncType === PATTERN_SYNC_TYPES.full\n\t\t\t\t\t\t\t\t? PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t\t\t\t\t: PATTERN_SYNC_TYPES.full\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\taria-disabled={ ! title || isSaving }\n\t\t\t\t\t\tisBusy={ isSaving }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ confirmLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t</form>\n\t);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,36 +1,24 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { store as coreStore } from '@wordpress/core-data';
5
- import { useDispatch, useSelect } from '@wordpress/data';
6
- import { __, _x, sprintf } from '@wordpress/i18n';
7
- import { store as noticesStore } from '@wordpress/notices';
8
-
9
- /**
10
- * Internal dependencies
11
- */
12
- import CreatePatternModal from './create-pattern-modal';
13
- import { PATTERN_SYNC_TYPES, PATTERN_TYPES } from '../constants';
14
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { store as coreStore } from "@wordpress/core-data";
3
+ import { useDispatch, useSelect } from "@wordpress/data";
4
+ import { __, _x, sprintf } from "@wordpress/i18n";
5
+ import { store as noticesStore } from "@wordpress/notices";
6
+ import CreatePatternModal from "./create-pattern-modal";
7
+ import { PATTERN_SYNC_TYPES, PATTERN_TYPES } from "../constants";
15
8
  function getTermLabels(pattern, categories) {
16
- // Theme patterns rely on core pattern categories.
17
9
  if (pattern.type !== PATTERN_TYPES.user) {
18
- return categories.core?.filter(category => pattern.categories?.includes(category.name)).map(category => category.label);
10
+ return categories.core?.filter(
11
+ (category) => pattern.categories?.includes(category.name)
12
+ ).map((category) => category.label);
19
13
  }
20
- return categories.user?.filter(category => pattern.wp_pattern_category?.includes(category.id)).map(category => category.label);
14
+ return categories.user?.filter(
15
+ (category) => pattern.wp_pattern_category?.includes(category.id)
16
+ ).map((category) => category.label);
21
17
  }
22
- export function useDuplicatePatternProps({
23
- pattern,
24
- onSuccess
25
- }) {
26
- const {
27
- createSuccessNotice
28
- } = useDispatch(noticesStore);
29
- const categories = useSelect(select => {
30
- const {
31
- getUserPatternCategories,
32
- getBlockPatternCategories
33
- } = select(coreStore);
18
+ function useDuplicatePatternProps({ pattern, onSuccess }) {
19
+ const { createSuccessNotice } = useDispatch(noticesStore);
20
+ const categories = useSelect((select) => {
21
+ const { getUserPatternCategories, getBlockPatternCategories } = select(coreStore);
34
22
  return {
35
23
  core: getBlockPatternCategories(),
36
24
  user: getUserPatternCategories()
@@ -42,43 +30,50 @@ export function useDuplicatePatternProps({
42
30
  return {
43
31
  content: pattern.content,
44
32
  defaultCategories: getTermLabels(pattern, categories),
45
- defaultSyncType: pattern.type !== PATTERN_TYPES.user // Theme patterns are unsynced by default.
46
- ? PATTERN_SYNC_TYPES.unsynced : pattern.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full,
47
- defaultTitle: sprintf(/* translators: %s: Existing pattern title */
48
- _x('%s (Copy)', 'pattern'), typeof pattern.title === 'string' ? pattern.title : pattern.title.raw),
49
- onSuccess: ({
50
- pattern: newPattern
51
- }) => {
52
- createSuccessNotice(sprintf(
53
- // translators: %s: The new pattern's title e.g. 'Call to action (copy)'.
54
- _x('"%s" duplicated.', 'pattern'), newPattern.title.raw), {
55
- type: 'snackbar',
56
- id: 'patterns-create'
57
- });
58
- onSuccess?.({
59
- pattern: newPattern
60
- });
33
+ defaultSyncType: pattern.type !== PATTERN_TYPES.user ? PATTERN_SYNC_TYPES.unsynced : pattern.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full,
34
+ defaultTitle: sprintf(
35
+ /* translators: %s: Existing pattern title */
36
+ _x("%s (Copy)", "pattern"),
37
+ typeof pattern.title === "string" ? pattern.title : pattern.title.raw
38
+ ),
39
+ onSuccess: ({ pattern: newPattern }) => {
40
+ createSuccessNotice(
41
+ sprintf(
42
+ // translators: %s: The new pattern's title e.g. 'Call to action (copy)'.
43
+ _x('"%s" duplicated.', "pattern"),
44
+ newPattern.title.raw
45
+ ),
46
+ {
47
+ type: "snackbar",
48
+ id: "patterns-create"
49
+ }
50
+ );
51
+ onSuccess?.({ pattern: newPattern });
61
52
  }
62
53
  };
63
54
  }
64
- export default function DuplicatePatternModal({
55
+ function DuplicatePatternModal({
65
56
  pattern,
66
57
  onClose,
67
58
  onSuccess
68
59
  }) {
69
- const duplicatedProps = useDuplicatePatternProps({
70
- pattern,
71
- onSuccess
72
- });
60
+ const duplicatedProps = useDuplicatePatternProps({ pattern, onSuccess });
73
61
  if (!pattern) {
74
62
  return null;
75
63
  }
76
- return /*#__PURE__*/_jsx(CreatePatternModal, {
77
- modalTitle: __('Duplicate pattern'),
78
- confirmLabel: __('Duplicate'),
79
- onClose: onClose,
80
- onError: onClose,
81
- ...duplicatedProps
82
- });
64
+ return /* @__PURE__ */ jsx(
65
+ CreatePatternModal,
66
+ {
67
+ modalTitle: __("Duplicate pattern"),
68
+ confirmLabel: __("Duplicate"),
69
+ onClose,
70
+ onError: onClose,
71
+ ...duplicatedProps
72
+ }
73
+ );
83
74
  }
84
- //# sourceMappingURL=duplicate-pattern-modal.js.map
75
+ export {
76
+ DuplicatePatternModal as default,
77
+ useDuplicatePatternProps
78
+ };
79
+ //# sourceMappingURL=duplicate-pattern-modal.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["store","coreStore","useDispatch","useSelect","__","_x","sprintf","noticesStore","CreatePatternModal","PATTERN_SYNC_TYPES","PATTERN_TYPES","jsx","_jsx","getTermLabels","pattern","categories","type","user","core","filter","category","includes","name","map","label","wp_pattern_category","id","useDuplicatePatternProps","onSuccess","createSuccessNotice","select","getUserPatternCategories","getBlockPatternCategories","content","defaultCategories","defaultSyncType","unsynced","wp_pattern_sync_status","full","defaultTitle","title","raw","newPattern","DuplicatePatternModal","onClose","duplicatedProps","modalTitle","confirmLabel","onError"],"sources":["@wordpress/patterns/src/components/duplicate-pattern-modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport CreatePatternModal from './create-pattern-modal';\nimport { PATTERN_SYNC_TYPES, PATTERN_TYPES } from '../constants';\n\nfunction getTermLabels( pattern, categories ) {\n\t// Theme patterns rely on core pattern categories.\n\tif ( pattern.type !== PATTERN_TYPES.user ) {\n\t\treturn categories.core\n\t\t\t?.filter( ( category ) =>\n\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t)\n\t\t\t.map( ( category ) => category.label );\n\t}\n\n\treturn categories.user\n\t\t?.filter( ( category ) =>\n\t\t\tpattern.wp_pattern_category?.includes( category.id )\n\t\t)\n\t\t.map( ( category ) => category.label );\n}\n\nexport function useDuplicatePatternProps( { pattern, onSuccess } ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst categories = useSelect( ( select ) => {\n\t\tconst { getUserPatternCategories, getBlockPatternCategories } =\n\t\t\tselect( coreStore );\n\n\t\treturn {\n\t\t\tcore: getBlockPatternCategories(),\n\t\t\tuser: getUserPatternCategories(),\n\t\t};\n\t} );\n\tif ( ! pattern ) {\n\t\treturn null;\n\t}\n\treturn {\n\t\tcontent: pattern.content,\n\t\tdefaultCategories: getTermLabels( pattern, categories ),\n\t\tdefaultSyncType:\n\t\t\tpattern.type !== PATTERN_TYPES.user // Theme patterns are unsynced by default.\n\t\t\t\t? PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t: pattern.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full,\n\t\tdefaultTitle: sprintf(\n\t\t\t/* translators: %s: Existing pattern title */\n\t\t\t_x( '%s (Copy)', 'pattern' ),\n\t\t\ttypeof pattern.title === 'string'\n\t\t\t\t? pattern.title\n\t\t\t\t: pattern.title.raw\n\t\t),\n\t\tonSuccess: ( { pattern: newPattern } ) => {\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: The new pattern's title e.g. 'Call to action (copy)'.\n\t\t\t\t\t_x( '\"%s\" duplicated.', 'pattern' ),\n\t\t\t\t\tnewPattern.title.raw\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'patterns-create',\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tonSuccess?.( { pattern: newPattern } );\n\t\t},\n\t};\n}\n\nexport default function DuplicatePatternModal( {\n\tpattern,\n\tonClose,\n\tonSuccess,\n} ) {\n\tconst duplicatedProps = useDuplicatePatternProps( { pattern, onSuccess } );\n\tif ( ! pattern ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<CreatePatternModal\n\t\t\tmodalTitle={ __( 'Duplicate pattern' ) }\n\t\t\tconfirmLabel={ __( 'Duplicate' ) }\n\t\t\tonClose={ onClose }\n\t\t\tonError={ onClose }\n\t\t\t{ ...duplicatedProps }\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/duplicate-pattern-modal.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport CreatePatternModal from './create-pattern-modal';\nimport { PATTERN_SYNC_TYPES, PATTERN_TYPES } from '../constants';\n\nfunction getTermLabels( pattern, categories ) {\n\t// Theme patterns rely on core pattern categories.\n\tif ( pattern.type !== PATTERN_TYPES.user ) {\n\t\treturn categories.core\n\t\t\t?.filter( ( category ) =>\n\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t)\n\t\t\t.map( ( category ) => category.label );\n\t}\n\n\treturn categories.user\n\t\t?.filter( ( category ) =>\n\t\t\tpattern.wp_pattern_category?.includes( category.id )\n\t\t)\n\t\t.map( ( category ) => category.label );\n}\n\nexport function useDuplicatePatternProps( { pattern, onSuccess } ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst categories = useSelect( ( select ) => {\n\t\tconst { getUserPatternCategories, getBlockPatternCategories } =\n\t\t\tselect( coreStore );\n\n\t\treturn {\n\t\t\tcore: getBlockPatternCategories(),\n\t\t\tuser: getUserPatternCategories(),\n\t\t};\n\t} );\n\tif ( ! pattern ) {\n\t\treturn null;\n\t}\n\treturn {\n\t\tcontent: pattern.content,\n\t\tdefaultCategories: getTermLabels( pattern, categories ),\n\t\tdefaultSyncType:\n\t\t\tpattern.type !== PATTERN_TYPES.user // Theme patterns are unsynced by default.\n\t\t\t\t? PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t: pattern.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full,\n\t\tdefaultTitle: sprintf(\n\t\t\t/* translators: %s: Existing pattern title */\n\t\t\t_x( '%s (Copy)', 'pattern' ),\n\t\t\ttypeof pattern.title === 'string'\n\t\t\t\t? pattern.title\n\t\t\t\t: pattern.title.raw\n\t\t),\n\t\tonSuccess: ( { pattern: newPattern } ) => {\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: The new pattern's title e.g. 'Call to action (copy)'.\n\t\t\t\t\t_x( '\"%s\" duplicated.', 'pattern' ),\n\t\t\t\t\tnewPattern.title.raw\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'patterns-create',\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tonSuccess?.( { pattern: newPattern } );\n\t\t},\n\t};\n}\n\nexport default function DuplicatePatternModal( {\n\tpattern,\n\tonClose,\n\tonSuccess,\n} ) {\n\tconst duplicatedProps = useDuplicatePatternProps( { pattern, onSuccess } );\n\tif ( ! pattern ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<CreatePatternModal\n\t\t\tmodalTitle={ __( 'Duplicate pattern' ) }\n\t\t\tconfirmLabel={ __( 'Duplicate' ) }\n\t\t\tonClose={ onClose }\n\t\t\tonError={ onClose }\n\t\t\t{ ...duplicatedProps }\n\t\t/>\n\t);\n}\n"],
5
+ "mappings": "AAuFE;AApFF,SAAS,SAAS,iBAAiB;AACnC,SAAS,aAAa,iBAAiB;AACvC,SAAS,IAAI,IAAI,eAAe;AAChC,SAAS,SAAS,oBAAoB;AAKtC,OAAO,wBAAwB;AAC/B,SAAS,oBAAoB,qBAAqB;AAElD,SAAS,cAAe,SAAS,YAAa;AAE7C,MAAK,QAAQ,SAAS,cAAc,MAAO;AAC1C,WAAO,WAAW,MACf;AAAA,MAAQ,CAAE,aACX,QAAQ,YAAY,SAAU,SAAS,IAAK;AAAA,IAC7C,EACC,IAAK,CAAE,aAAc,SAAS,KAAM;AAAA,EACvC;AAEA,SAAO,WAAW,MACf;AAAA,IAAQ,CAAE,aACX,QAAQ,qBAAqB,SAAU,SAAS,EAAG;AAAA,EACpD,EACC,IAAK,CAAE,aAAc,SAAS,KAAM;AACvC;AAEO,SAAS,yBAA0B,EAAE,SAAS,UAAU,GAAI;AAClE,QAAM,EAAE,oBAAoB,IAAI,YAAa,YAAa;AAC1D,QAAM,aAAa,UAAW,CAAE,WAAY;AAC3C,UAAM,EAAE,0BAA0B,0BAA0B,IAC3D,OAAQ,SAAU;AAEnB,WAAO;AAAA,MACN,MAAM,0BAA0B;AAAA,MAChC,MAAM,yBAAyB;AAAA,IAChC;AAAA,EACD,CAAE;AACF,MAAK,CAAE,SAAU;AAChB,WAAO;AAAA,EACR;AACA,SAAO;AAAA,IACN,SAAS,QAAQ;AAAA,IACjB,mBAAmB,cAAe,SAAS,UAAW;AAAA,IACtD,iBACC,QAAQ,SAAS,cAAc,OAC5B,mBAAmB,WACnB,QAAQ,0BAA0B,mBAAmB;AAAA,IACzD,cAAc;AAAA;AAAA,MAEb,GAAI,aAAa,SAAU;AAAA,MAC3B,OAAO,QAAQ,UAAU,WACtB,QAAQ,QACR,QAAQ,MAAM;AAAA,IAClB;AAAA,IACA,WAAW,CAAE,EAAE,SAAS,WAAW,MAAO;AACzC;AAAA,QACC;AAAA;AAAA,UAEC,GAAI,oBAAoB,SAAU;AAAA,UAClC,WAAW,MAAM;AAAA,QAClB;AAAA,QACA;AAAA,UACC,MAAM;AAAA,UACN,IAAI;AAAA,QACL;AAAA,MACD;AAEA,kBAAa,EAAE,SAAS,WAAW,CAAE;AAAA,IACtC;AAAA,EACD;AACD;AAEe,SAAR,sBAAwC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,kBAAkB,yBAA0B,EAAE,SAAS,UAAU,CAAE;AACzE,MAAK,CAAE,SAAU;AAChB,WAAO;AAAA,EACR;AACA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,YAAa,GAAI,mBAAoB;AAAA,MACrC,cAAe,GAAI,WAAY;AAAA,MAC/B;AAAA,MACA,SAAU;AAAA,MACR,GAAG;AAAA;AAAA,EACN;AAEF;",
6
+ "names": []
7
+ }