@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,56 +1,32 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useSelect, useDispatch } from '@wordpress/data';
5
- import { store as coreStore } from '@wordpress/core-data';
6
- import { useMemo } from '@wordpress/element';
7
-
8
- /**
9
- * Internal dependencies
10
- */
11
- import { CATEGORY_SLUG } from './components/category-selector';
12
-
13
- /**
14
- * Helper hook that creates a Map with the core and user patterns categories
15
- * and removes any duplicates. It's used when we need to create new user
16
- * categories when creating or importing patterns.
17
- * This hook also provides a function to find or create a pattern category.
18
- *
19
- * @return {Object} The merged categories map and the callback function to find or create a category.
20
- */
21
- export function useAddPatternCategory() {
22
- const {
23
- saveEntityRecord,
24
- invalidateResolution
25
- } = useDispatch(coreStore);
26
- const {
27
- corePatternCategories,
28
- userPatternCategories
29
- } = useSelect(select => {
30
- const {
31
- getUserPatternCategories,
32
- getBlockPatternCategories
33
- } = select(coreStore);
34
- return {
35
- corePatternCategories: getBlockPatternCategories(),
36
- userPatternCategories: getUserPatternCategories()
37
- };
38
- }, []);
1
+ import { useSelect, useDispatch } from "@wordpress/data";
2
+ import { store as coreStore } from "@wordpress/core-data";
3
+ import { useMemo } from "@wordpress/element";
4
+ import { CATEGORY_SLUG } from "./components/category-selector";
5
+ function useAddPatternCategory() {
6
+ const { saveEntityRecord, invalidateResolution } = useDispatch(coreStore);
7
+ const { corePatternCategories, userPatternCategories } = useSelect(
8
+ (select) => {
9
+ const { getUserPatternCategories, getBlockPatternCategories } = select(coreStore);
10
+ return {
11
+ corePatternCategories: getBlockPatternCategories(),
12
+ userPatternCategories: getUserPatternCategories()
13
+ };
14
+ },
15
+ []
16
+ );
39
17
  const categoryMap = useMemo(() => {
40
- // Merge the user and core pattern categories and remove any duplicates.
41
- const uniqueCategories = new Map();
42
- userPatternCategories.forEach(category => {
18
+ const uniqueCategories = /* @__PURE__ */ new Map();
19
+ userPatternCategories.forEach((category) => {
43
20
  uniqueCategories.set(category.label.toLowerCase(), {
44
21
  label: category.label,
45
22
  name: category.name,
46
23
  id: category.id
47
24
  });
48
25
  });
49
- corePatternCategories.forEach(category => {
50
- if (!uniqueCategories.has(category.label.toLowerCase()) &&
51
- // There are two core categories with `Post` label so explicitly remove the one with
26
+ corePatternCategories.forEach((category) => {
27
+ if (!uniqueCategories.has(category.label.toLowerCase()) && // There are two core categories with `Post` label so explicitly remove the one with
52
28
  // the `query` slug to avoid any confusion.
53
- category.name !== 'query') {
29
+ category.name !== "query") {
54
30
  uniqueCategories.set(category.label.toLowerCase(), {
55
31
  label: category.label,
56
32
  name: category.name
@@ -65,30 +41,25 @@ export function useAddPatternCategory() {
65
41
  if (existingTerm?.id) {
66
42
  return existingTerm.id;
67
43
  }
68
- // If we have an existing core category we need to match the new user category to the
69
- // correct slug rather than autogenerating it to prevent duplicates, eg. the core `Headers`
70
- // category uses the singular `header` as the slug.
71
- const termData = existingTerm ? {
72
- name: existingTerm.label,
73
- slug: existingTerm.name
74
- } : {
75
- name: term
76
- };
77
- const newTerm = await saveEntityRecord('taxonomy', CATEGORY_SLUG, termData, {
78
- throwOnError: true
79
- });
80
- invalidateResolution('getUserPatternCategories');
44
+ const termData = existingTerm ? { name: existingTerm.label, slug: existingTerm.name } : { name: term };
45
+ const newTerm = await saveEntityRecord(
46
+ "taxonomy",
47
+ CATEGORY_SLUG,
48
+ termData,
49
+ { throwOnError: true }
50
+ );
51
+ invalidateResolution("getUserPatternCategories");
81
52
  return newTerm.id;
82
53
  } catch (error) {
83
- if (error.code !== 'term_exists') {
54
+ if (error.code !== "term_exists") {
84
55
  throw error;
85
56
  }
86
57
  return error.data.term_id;
87
58
  }
88
59
  }
89
- return {
90
- categoryMap,
91
- findOrCreateTerm
92
- };
60
+ return { categoryMap, findOrCreateTerm };
93
61
  }
94
- //# sourceMappingURL=private-hooks.js.map
62
+ export {
63
+ useAddPatternCategory
64
+ };
65
+ //# sourceMappingURL=private-hooks.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["useSelect","useDispatch","store","coreStore","useMemo","CATEGORY_SLUG","useAddPatternCategory","saveEntityRecord","invalidateResolution","corePatternCategories","userPatternCategories","select","getUserPatternCategories","getBlockPatternCategories","categoryMap","uniqueCategories","Map","forEach","category","set","label","toLowerCase","name","id","has","findOrCreateTerm","term","existingTerm","get","termData","slug","newTerm","throwOnError","error","code","data","term_id"],"sources":["@wordpress/patterns/src/private-hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { CATEGORY_SLUG } from './components/category-selector';\n\n/**\n * Helper hook that creates a Map with the core and user patterns categories\n * and removes any duplicates. It's used when we need to create new user\n * categories when creating or importing patterns.\n * This hook also provides a function to find or create a pattern category.\n *\n * @return {Object} The merged categories map and the callback function to find or create a category.\n */\nexport function useAddPatternCategory() {\n\tconst { saveEntityRecord, invalidateResolution } = useDispatch( coreStore );\n\tconst { corePatternCategories, userPatternCategories } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getUserPatternCategories, getBlockPatternCategories } =\n\t\t\t\tselect( coreStore );\n\n\t\t\treturn {\n\t\t\t\tcorePatternCategories: getBlockPatternCategories(),\n\t\t\t\tuserPatternCategories: getUserPatternCategories(),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst categoryMap = useMemo( () => {\n\t\t// Merge the user and core pattern categories and remove any duplicates.\n\t\tconst uniqueCategories = new Map();\n\t\tuserPatternCategories.forEach( ( category ) => {\n\t\t\tuniqueCategories.set( category.label.toLowerCase(), {\n\t\t\t\tlabel: category.label,\n\t\t\t\tname: category.name,\n\t\t\t\tid: category.id,\n\t\t\t} );\n\t\t} );\n\n\t\tcorePatternCategories.forEach( ( category ) => {\n\t\t\tif (\n\t\t\t\t! uniqueCategories.has( category.label.toLowerCase() ) &&\n\t\t\t\t// There are two core categories with `Post` label so explicitly remove the one with\n\t\t\t\t// the `query` slug to avoid any confusion.\n\t\t\t\tcategory.name !== 'query'\n\t\t\t) {\n\t\t\t\tuniqueCategories.set( category.label.toLowerCase(), {\n\t\t\t\t\tlabel: category.label,\n\t\t\t\t\tname: category.name,\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t\treturn uniqueCategories;\n\t}, [ userPatternCategories, corePatternCategories ] );\n\n\tasync function findOrCreateTerm( term ) {\n\t\ttry {\n\t\t\tconst existingTerm = categoryMap.get( term.toLowerCase() );\n\t\t\tif ( existingTerm?.id ) {\n\t\t\t\treturn existingTerm.id;\n\t\t\t}\n\t\t\t// If we have an existing core category we need to match the new user category to the\n\t\t\t// correct slug rather than autogenerating it to prevent duplicates, eg. the core `Headers`\n\t\t\t// category uses the singular `header` as the slug.\n\t\t\tconst termData = existingTerm\n\t\t\t\t? { name: existingTerm.label, slug: existingTerm.name }\n\t\t\t\t: { name: term };\n\t\t\tconst newTerm = await saveEntityRecord(\n\t\t\t\t'taxonomy',\n\t\t\t\tCATEGORY_SLUG,\n\t\t\t\ttermData,\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\t\t\tinvalidateResolution( 'getUserPatternCategories' );\n\t\t\treturn newTerm.id;\n\t\t} catch ( error ) {\n\t\t\tif ( error.code !== 'term_exists' ) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn error.data.term_id;\n\t\t}\n\t}\n\n\treturn { categoryMap, findOrCreateTerm };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/private-hooks.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { CATEGORY_SLUG } from './components/category-selector';\n\n/**\n * Helper hook that creates a Map with the core and user patterns categories\n * and removes any duplicates. It's used when we need to create new user\n * categories when creating or importing patterns.\n * This hook also provides a function to find or create a pattern category.\n *\n * @return {Object} The merged categories map and the callback function to find or create a category.\n */\nexport function useAddPatternCategory() {\n\tconst { saveEntityRecord, invalidateResolution } = useDispatch( coreStore );\n\tconst { corePatternCategories, userPatternCategories } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getUserPatternCategories, getBlockPatternCategories } =\n\t\t\t\tselect( coreStore );\n\n\t\t\treturn {\n\t\t\t\tcorePatternCategories: getBlockPatternCategories(),\n\t\t\t\tuserPatternCategories: getUserPatternCategories(),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst categoryMap = useMemo( () => {\n\t\t// Merge the user and core pattern categories and remove any duplicates.\n\t\tconst uniqueCategories = new Map();\n\t\tuserPatternCategories.forEach( ( category ) => {\n\t\t\tuniqueCategories.set( category.label.toLowerCase(), {\n\t\t\t\tlabel: category.label,\n\t\t\t\tname: category.name,\n\t\t\t\tid: category.id,\n\t\t\t} );\n\t\t} );\n\n\t\tcorePatternCategories.forEach( ( category ) => {\n\t\t\tif (\n\t\t\t\t! uniqueCategories.has( category.label.toLowerCase() ) &&\n\t\t\t\t// There are two core categories with `Post` label so explicitly remove the one with\n\t\t\t\t// the `query` slug to avoid any confusion.\n\t\t\t\tcategory.name !== 'query'\n\t\t\t) {\n\t\t\t\tuniqueCategories.set( category.label.toLowerCase(), {\n\t\t\t\t\tlabel: category.label,\n\t\t\t\t\tname: category.name,\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t\treturn uniqueCategories;\n\t}, [ userPatternCategories, corePatternCategories ] );\n\n\tasync function findOrCreateTerm( term ) {\n\t\ttry {\n\t\t\tconst existingTerm = categoryMap.get( term.toLowerCase() );\n\t\t\tif ( existingTerm?.id ) {\n\t\t\t\treturn existingTerm.id;\n\t\t\t}\n\t\t\t// If we have an existing core category we need to match the new user category to the\n\t\t\t// correct slug rather than autogenerating it to prevent duplicates, eg. the core `Headers`\n\t\t\t// category uses the singular `header` as the slug.\n\t\t\tconst termData = existingTerm\n\t\t\t\t? { name: existingTerm.label, slug: existingTerm.name }\n\t\t\t\t: { name: term };\n\t\t\tconst newTerm = await saveEntityRecord(\n\t\t\t\t'taxonomy',\n\t\t\t\tCATEGORY_SLUG,\n\t\t\t\ttermData,\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\t\t\tinvalidateResolution( 'getUserPatternCategories' );\n\t\t\treturn newTerm.id;\n\t\t} catch ( error ) {\n\t\t\tif ( error.code !== 'term_exists' ) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn error.data.term_id;\n\t\t}\n\t}\n\n\treturn { categoryMap, findOrCreateTerm };\n}\n"],
5
+ "mappings": "AAGA,SAAS,WAAW,mBAAmB;AACvC,SAAS,SAAS,iBAAiB;AACnC,SAAS,eAAe;AAKxB,SAAS,qBAAqB;AAUvB,SAAS,wBAAwB;AACvC,QAAM,EAAE,kBAAkB,qBAAqB,IAAI,YAAa,SAAU;AAC1E,QAAM,EAAE,uBAAuB,sBAAsB,IAAI;AAAA,IACxD,CAAE,WAAY;AACb,YAAM,EAAE,0BAA0B,0BAA0B,IAC3D,OAAQ,SAAU;AAEnB,aAAO;AAAA,QACN,uBAAuB,0BAA0B;AAAA,QACjD,uBAAuB,yBAAyB;AAAA,MACjD;AAAA,IACD;AAAA,IACA,CAAC;AAAA,EACF;AACA,QAAM,cAAc,QAAS,MAAM;AAElC,UAAM,mBAAmB,oBAAI,IAAI;AACjC,0BAAsB,QAAS,CAAE,aAAc;AAC9C,uBAAiB,IAAK,SAAS,MAAM,YAAY,GAAG;AAAA,QACnD,OAAO,SAAS;AAAA,QAChB,MAAM,SAAS;AAAA,QACf,IAAI,SAAS;AAAA,MACd,CAAE;AAAA,IACH,CAAE;AAEF,0BAAsB,QAAS,CAAE,aAAc;AAC9C,UACC,CAAE,iBAAiB,IAAK,SAAS,MAAM,YAAY,CAAE;AAAA;AAAA,MAGrD,SAAS,SAAS,SACjB;AACD,yBAAiB,IAAK,SAAS,MAAM,YAAY,GAAG;AAAA,UACnD,OAAO,SAAS;AAAA,UAChB,MAAM,SAAS;AAAA,QAChB,CAAE;AAAA,MACH;AAAA,IACD,CAAE;AACF,WAAO;AAAA,EACR,GAAG,CAAE,uBAAuB,qBAAsB,CAAE;AAEpD,iBAAe,iBAAkB,MAAO;AACvC,QAAI;AACH,YAAM,eAAe,YAAY,IAAK,KAAK,YAAY,CAAE;AACzD,UAAK,cAAc,IAAK;AACvB,eAAO,aAAa;AAAA,MACrB;AAIA,YAAM,WAAW,eACd,EAAE,MAAM,aAAa,OAAO,MAAM,aAAa,KAAK,IACpD,EAAE,MAAM,KAAK;AAChB,YAAM,UAAU,MAAM;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,QACA,EAAE,cAAc,KAAK;AAAA,MACtB;AACA,2BAAsB,0BAA2B;AACjD,aAAO,QAAQ;AAAA,IAChB,SAAU,OAAQ;AACjB,UAAK,MAAM,SAAS,eAAgB;AACnC,cAAM;AAAA,MACP;AACA,aAAO,MAAM,KAAK;AAAA,IACnB;AAAA,EACD;AAEA,SAAO,EAAE,aAAa,iBAAiB;AACxC;",
6
+ "names": []
7
+ }
@@ -1,117 +1,87 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
-
5
- import { getBlockType, cloneBlock } from '@wordpress/blocks';
6
- import { store as coreStore } from '@wordpress/core-data';
7
- import { store as blockEditorStore } from '@wordpress/block-editor';
8
-
9
- /**
10
- * Internal dependencies
11
- */
12
- import { PATTERN_SYNC_TYPES } from '../constants';
13
-
14
- /**
15
- * Returns a generator converting one or more static blocks into a pattern, or creating a new empty pattern.
16
- *
17
- * @param {string} title Pattern title.
18
- * @param {'full'|'unsynced'} syncType They way block is synced, 'full' or 'unsynced'.
19
- * @param {string|undefined} [content] Optional serialized content of blocks to convert to pattern.
20
- * @param {number[]|undefined} [categories] Ids of any selected categories.
21
- */
22
- export const createPattern = (title, syncType, content, categories) => async ({
23
- registry
24
- }) => {
1
+ import { getBlockType, cloneBlock } from "@wordpress/blocks";
2
+ import { store as coreStore } from "@wordpress/core-data";
3
+ import { store as blockEditorStore } from "@wordpress/block-editor";
4
+ import { PATTERN_SYNC_TYPES } from "../constants";
5
+ const createPattern = (title, syncType, content, categories) => async ({ registry }) => {
25
6
  const meta = syncType === PATTERN_SYNC_TYPES.unsynced ? {
26
7
  wp_pattern_sync_status: syncType
27
- } : undefined;
8
+ } : void 0;
28
9
  const reusableBlock = {
29
10
  title,
30
11
  content,
31
- status: 'publish',
12
+ status: "publish",
32
13
  meta,
33
14
  wp_pattern_category: categories
34
15
  };
35
- const updatedRecord = await registry.dispatch(coreStore).saveEntityRecord('postType', 'wp_block', reusableBlock);
16
+ const updatedRecord = await registry.dispatch(coreStore).saveEntityRecord("postType", "wp_block", reusableBlock);
36
17
  return updatedRecord;
37
18
  };
38
-
39
- /**
40
- * Create a pattern from a JSON file.
41
- * @param {File} file The JSON file instance of the pattern.
42
- * @param {number[]|undefined} [categories] Ids of any selected categories.
43
- */
44
- export const createPatternFromFile = (file, categories) => async ({
45
- dispatch
46
- }) => {
19
+ const createPatternFromFile = (file, categories) => async ({ dispatch }) => {
47
20
  const fileContent = await file.text();
48
- /** @type {import('./types').PatternJSON} */
49
21
  let parsedContent;
50
22
  try {
51
23
  parsedContent = JSON.parse(fileContent);
52
24
  } catch (e) {
53
- throw new Error('Invalid JSON file');
25
+ throw new Error("Invalid JSON file");
54
26
  }
55
- if (parsedContent.__file !== 'wp_block' || !parsedContent.title || !parsedContent.content || typeof parsedContent.title !== 'string' || typeof parsedContent.content !== 'string' || parsedContent.syncStatus && typeof parsedContent.syncStatus !== 'string') {
56
- throw new Error('Invalid pattern JSON file');
27
+ if (parsedContent.__file !== "wp_block" || !parsedContent.title || !parsedContent.content || typeof parsedContent.title !== "string" || typeof parsedContent.content !== "string" || parsedContent.syncStatus && typeof parsedContent.syncStatus !== "string") {
28
+ throw new Error("Invalid pattern JSON file");
57
29
  }
58
- const pattern = await dispatch.createPattern(parsedContent.title, parsedContent.syncStatus, parsedContent.content, categories);
30
+ const pattern = await dispatch.createPattern(
31
+ parsedContent.title,
32
+ parsedContent.syncStatus,
33
+ parsedContent.content,
34
+ categories
35
+ );
59
36
  return pattern;
60
37
  };
61
-
62
- /**
63
- * Returns a generator converting a synced pattern block into a static block.
64
- *
65
- * @param {string} clientId The client ID of the block to attach.
66
- */
67
- export const convertSyncedPatternToStatic = clientId => ({
68
- registry
69
- }) => {
38
+ const convertSyncedPatternToStatic = (clientId) => ({ registry }) => {
70
39
  const patternBlock = registry.select(blockEditorStore).getBlock(clientId);
71
40
  const existingOverrides = patternBlock.attributes?.content;
72
41
  function cloneBlocksAndRemoveBindings(blocks) {
73
- return blocks.map(block => {
42
+ return blocks.map((block) => {
74
43
  let metadata = block.attributes.metadata;
75
44
  if (metadata) {
76
- metadata = {
77
- ...metadata
78
- };
45
+ metadata = { ...metadata };
79
46
  delete metadata.id;
80
47
  delete metadata.bindings;
81
- // Use overridden values of the pattern block if they exist.
82
48
  if (existingOverrides?.[metadata.name]) {
83
- // Iterate over each overridden attribute.
84
- for (const [attributeName, value] of Object.entries(existingOverrides[metadata.name])) {
85
- // Skip if the attribute does not exist in the block type.
49
+ for (const [attributeName, value] of Object.entries(
50
+ existingOverrides[metadata.name]
51
+ )) {
86
52
  if (!getBlockType(block.name)?.attributes[attributeName]) {
87
53
  continue;
88
54
  }
89
- // Update the block attribute with the override value.
90
55
  block.attributes[attributeName] = value;
91
56
  }
92
57
  }
93
58
  }
94
- return cloneBlock(block, {
95
- metadata: metadata && Object.keys(metadata).length > 0 ? metadata : undefined
96
- }, cloneBlocksAndRemoveBindings(block.innerBlocks));
59
+ return cloneBlock(
60
+ block,
61
+ {
62
+ metadata: metadata && Object.keys(metadata).length > 0 ? metadata : void 0
63
+ },
64
+ cloneBlocksAndRemoveBindings(block.innerBlocks)
65
+ );
97
66
  });
98
67
  }
99
68
  const patternInnerBlocks = registry.select(blockEditorStore).getBlocks(patternBlock.clientId);
100
- registry.dispatch(blockEditorStore).replaceBlocks(patternBlock.clientId, cloneBlocksAndRemoveBindings(patternInnerBlocks));
69
+ registry.dispatch(blockEditorStore).replaceBlocks(
70
+ patternBlock.clientId,
71
+ cloneBlocksAndRemoveBindings(patternInnerBlocks)
72
+ );
101
73
  };
102
-
103
- /**
104
- * Returns an action descriptor for SET_EDITING_PATTERN action.
105
- *
106
- * @param {string} clientId The clientID of the pattern to target.
107
- * @param {boolean} isEditing Whether the block should be in editing state.
108
- * @return {Object} Action descriptor.
109
- */
110
- export function setEditingPattern(clientId, isEditing) {
74
+ function setEditingPattern(clientId, isEditing) {
111
75
  return {
112
- type: 'SET_EDITING_PATTERN',
76
+ type: "SET_EDITING_PATTERN",
113
77
  clientId,
114
78
  isEditing
115
79
  };
116
80
  }
117
- //# sourceMappingURL=actions.js.map
81
+ export {
82
+ convertSyncedPatternToStatic,
83
+ createPattern,
84
+ createPatternFromFile,
85
+ setEditingPattern
86
+ };
87
+ //# sourceMappingURL=actions.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["getBlockType","cloneBlock","store","coreStore","blockEditorStore","PATTERN_SYNC_TYPES","createPattern","title","syncType","content","categories","registry","meta","unsynced","wp_pattern_sync_status","undefined","reusableBlock","status","wp_pattern_category","updatedRecord","dispatch","saveEntityRecord","createPatternFromFile","file","fileContent","text","parsedContent","JSON","parse","e","Error","__file","syncStatus","pattern","convertSyncedPatternToStatic","clientId","patternBlock","select","getBlock","existingOverrides","attributes","cloneBlocksAndRemoveBindings","blocks","map","block","metadata","id","bindings","name","attributeName","value","Object","entries","keys","length","innerBlocks","patternInnerBlocks","getBlocks","replaceBlocks","setEditingPattern","isEditing","type"],"sources":["@wordpress/patterns/src/store/actions.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\n\nimport { getBlockType, cloneBlock } from '@wordpress/blocks';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { PATTERN_SYNC_TYPES } from '../constants';\n\n/**\n * Returns a generator converting one or more static blocks into a pattern, or creating a new empty pattern.\n *\n * @param {string} title Pattern title.\n * @param {'full'|'unsynced'} syncType They way block is synced, 'full' or 'unsynced'.\n * @param {string|undefined} [content] Optional serialized content of blocks to convert to pattern.\n * @param {number[]|undefined} [categories] Ids of any selected categories.\n */\nexport const createPattern =\n\t( title, syncType, content, categories ) =>\n\tasync ( { registry } ) => {\n\t\tconst meta =\n\t\t\tsyncType === PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t? {\n\t\t\t\t\t\twp_pattern_sync_status: syncType,\n\t\t\t\t }\n\t\t\t\t: undefined;\n\n\t\tconst reusableBlock = {\n\t\t\ttitle,\n\t\t\tcontent,\n\t\t\tstatus: 'publish',\n\t\t\tmeta,\n\t\t\twp_pattern_category: categories,\n\t\t};\n\n\t\tconst updatedRecord = await registry\n\t\t\t.dispatch( coreStore )\n\t\t\t.saveEntityRecord( 'postType', 'wp_block', reusableBlock );\n\n\t\treturn updatedRecord;\n\t};\n\n/**\n * Create a pattern from a JSON file.\n * @param {File} file The JSON file instance of the pattern.\n * @param {number[]|undefined} [categories] Ids of any selected categories.\n */\nexport const createPatternFromFile =\n\t( file, categories ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst fileContent = await file.text();\n\t\t/** @type {import('./types').PatternJSON} */\n\t\tlet parsedContent;\n\t\ttry {\n\t\t\tparsedContent = JSON.parse( fileContent );\n\t\t} catch ( e ) {\n\t\t\tthrow new Error( 'Invalid JSON file' );\n\t\t}\n\t\tif (\n\t\t\tparsedContent.__file !== 'wp_block' ||\n\t\t\t! parsedContent.title ||\n\t\t\t! parsedContent.content ||\n\t\t\ttypeof parsedContent.title !== 'string' ||\n\t\t\ttypeof parsedContent.content !== 'string' ||\n\t\t\t( parsedContent.syncStatus &&\n\t\t\t\ttypeof parsedContent.syncStatus !== 'string' )\n\t\t) {\n\t\t\tthrow new Error( 'Invalid pattern JSON file' );\n\t\t}\n\n\t\tconst pattern = await dispatch.createPattern(\n\t\t\tparsedContent.title,\n\t\t\tparsedContent.syncStatus,\n\t\t\tparsedContent.content,\n\t\t\tcategories\n\t\t);\n\n\t\treturn pattern;\n\t};\n\n/**\n * Returns a generator converting a synced pattern block into a static block.\n *\n * @param {string} clientId The client ID of the block to attach.\n */\nexport const convertSyncedPatternToStatic =\n\t( clientId ) =>\n\t( { registry } ) => {\n\t\tconst patternBlock = registry\n\t\t\t.select( blockEditorStore )\n\t\t\t.getBlock( clientId );\n\t\tconst existingOverrides = patternBlock.attributes?.content;\n\n\t\tfunction cloneBlocksAndRemoveBindings( blocks ) {\n\t\t\treturn blocks.map( ( block ) => {\n\t\t\t\tlet metadata = block.attributes.metadata;\n\t\t\t\tif ( metadata ) {\n\t\t\t\t\tmetadata = { ...metadata };\n\t\t\t\t\tdelete metadata.id;\n\t\t\t\t\tdelete metadata.bindings;\n\t\t\t\t\t// Use overridden values of the pattern block if they exist.\n\t\t\t\t\tif ( existingOverrides?.[ metadata.name ] ) {\n\t\t\t\t\t\t// Iterate over each overridden attribute.\n\t\t\t\t\t\tfor ( const [ attributeName, value ] of Object.entries(\n\t\t\t\t\t\t\texistingOverrides[ metadata.name ]\n\t\t\t\t\t\t) ) {\n\t\t\t\t\t\t\t// Skip if the attribute does not exist in the block type.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t! getBlockType( block.name )?.attributes[\n\t\t\t\t\t\t\t\t\tattributeName\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Update the block attribute with the override value.\n\t\t\t\t\t\t\tblock.attributes[ attributeName ] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn cloneBlock(\n\t\t\t\t\tblock,\n\t\t\t\t\t{\n\t\t\t\t\t\tmetadata:\n\t\t\t\t\t\t\tmetadata && Object.keys( metadata ).length > 0\n\t\t\t\t\t\t\t\t? metadata\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t},\n\t\t\t\t\tcloneBlocksAndRemoveBindings( block.innerBlocks )\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tconst patternInnerBlocks = registry\n\t\t\t.select( blockEditorStore )\n\t\t\t.getBlocks( patternBlock.clientId );\n\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.replaceBlocks(\n\t\t\t\tpatternBlock.clientId,\n\t\t\t\tcloneBlocksAndRemoveBindings( patternInnerBlocks )\n\t\t\t);\n\t};\n\n/**\n * Returns an action descriptor for SET_EDITING_PATTERN action.\n *\n * @param {string} clientId The clientID of the pattern to target.\n * @param {boolean} isEditing Whether the block should be in editing state.\n * @return {Object} Action descriptor.\n */\nexport function setEditingPattern( clientId, isEditing ) {\n\treturn {\n\t\ttype: 'SET_EDITING_PATTERN',\n\t\tclientId,\n\t\tisEditing,\n\t};\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/store/actions.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\n\nimport { getBlockType, cloneBlock } from '@wordpress/blocks';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { PATTERN_SYNC_TYPES } from '../constants';\n\n/**\n * Returns a generator converting one or more static blocks into a pattern, or creating a new empty pattern.\n *\n * @param {string} title Pattern title.\n * @param {'full'|'unsynced'} syncType They way block is synced, 'full' or 'unsynced'.\n * @param {string|undefined} [content] Optional serialized content of blocks to convert to pattern.\n * @param {number[]|undefined} [categories] Ids of any selected categories.\n */\nexport const createPattern =\n\t( title, syncType, content, categories ) =>\n\tasync ( { registry } ) => {\n\t\tconst meta =\n\t\t\tsyncType === PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t? {\n\t\t\t\t\t\twp_pattern_sync_status: syncType,\n\t\t\t\t }\n\t\t\t\t: undefined;\n\n\t\tconst reusableBlock = {\n\t\t\ttitle,\n\t\t\tcontent,\n\t\t\tstatus: 'publish',\n\t\t\tmeta,\n\t\t\twp_pattern_category: categories,\n\t\t};\n\n\t\tconst updatedRecord = await registry\n\t\t\t.dispatch( coreStore )\n\t\t\t.saveEntityRecord( 'postType', 'wp_block', reusableBlock );\n\n\t\treturn updatedRecord;\n\t};\n\n/**\n * Create a pattern from a JSON file.\n * @param {File} file The JSON file instance of the pattern.\n * @param {number[]|undefined} [categories] Ids of any selected categories.\n */\nexport const createPatternFromFile =\n\t( file, categories ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst fileContent = await file.text();\n\t\t/** @type {import('./types').PatternJSON} */\n\t\tlet parsedContent;\n\t\ttry {\n\t\t\tparsedContent = JSON.parse( fileContent );\n\t\t} catch ( e ) {\n\t\t\tthrow new Error( 'Invalid JSON file' );\n\t\t}\n\t\tif (\n\t\t\tparsedContent.__file !== 'wp_block' ||\n\t\t\t! parsedContent.title ||\n\t\t\t! parsedContent.content ||\n\t\t\ttypeof parsedContent.title !== 'string' ||\n\t\t\ttypeof parsedContent.content !== 'string' ||\n\t\t\t( parsedContent.syncStatus &&\n\t\t\t\ttypeof parsedContent.syncStatus !== 'string' )\n\t\t) {\n\t\t\tthrow new Error( 'Invalid pattern JSON file' );\n\t\t}\n\n\t\tconst pattern = await dispatch.createPattern(\n\t\t\tparsedContent.title,\n\t\t\tparsedContent.syncStatus,\n\t\t\tparsedContent.content,\n\t\t\tcategories\n\t\t);\n\n\t\treturn pattern;\n\t};\n\n/**\n * Returns a generator converting a synced pattern block into a static block.\n *\n * @param {string} clientId The client ID of the block to attach.\n */\nexport const convertSyncedPatternToStatic =\n\t( clientId ) =>\n\t( { registry } ) => {\n\t\tconst patternBlock = registry\n\t\t\t.select( blockEditorStore )\n\t\t\t.getBlock( clientId );\n\t\tconst existingOverrides = patternBlock.attributes?.content;\n\n\t\tfunction cloneBlocksAndRemoveBindings( blocks ) {\n\t\t\treturn blocks.map( ( block ) => {\n\t\t\t\tlet metadata = block.attributes.metadata;\n\t\t\t\tif ( metadata ) {\n\t\t\t\t\tmetadata = { ...metadata };\n\t\t\t\t\tdelete metadata.id;\n\t\t\t\t\tdelete metadata.bindings;\n\t\t\t\t\t// Use overridden values of the pattern block if they exist.\n\t\t\t\t\tif ( existingOverrides?.[ metadata.name ] ) {\n\t\t\t\t\t\t// Iterate over each overridden attribute.\n\t\t\t\t\t\tfor ( const [ attributeName, value ] of Object.entries(\n\t\t\t\t\t\t\texistingOverrides[ metadata.name ]\n\t\t\t\t\t\t) ) {\n\t\t\t\t\t\t\t// Skip if the attribute does not exist in the block type.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t! getBlockType( block.name )?.attributes[\n\t\t\t\t\t\t\t\t\tattributeName\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Update the block attribute with the override value.\n\t\t\t\t\t\t\tblock.attributes[ attributeName ] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn cloneBlock(\n\t\t\t\t\tblock,\n\t\t\t\t\t{\n\t\t\t\t\t\tmetadata:\n\t\t\t\t\t\t\tmetadata && Object.keys( metadata ).length > 0\n\t\t\t\t\t\t\t\t? metadata\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t},\n\t\t\t\t\tcloneBlocksAndRemoveBindings( block.innerBlocks )\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tconst patternInnerBlocks = registry\n\t\t\t.select( blockEditorStore )\n\t\t\t.getBlocks( patternBlock.clientId );\n\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.replaceBlocks(\n\t\t\t\tpatternBlock.clientId,\n\t\t\t\tcloneBlocksAndRemoveBindings( patternInnerBlocks )\n\t\t\t);\n\t};\n\n/**\n * Returns an action descriptor for SET_EDITING_PATTERN action.\n *\n * @param {string} clientId The clientID of the pattern to target.\n * @param {boolean} isEditing Whether the block should be in editing state.\n * @return {Object} Action descriptor.\n */\nexport function setEditingPattern( clientId, isEditing ) {\n\treturn {\n\t\ttype: 'SET_EDITING_PATTERN',\n\t\tclientId,\n\t\tisEditing,\n\t};\n}\n"],
5
+ "mappings": "AAIA,SAAS,cAAc,kBAAkB;AACzC,SAAS,SAAS,iBAAiB;AACnC,SAAS,SAAS,wBAAwB;AAK1C,SAAS,0BAA0B;AAU5B,MAAM,gBACZ,CAAE,OAAO,UAAU,SAAS,eAC5B,OAAQ,EAAE,SAAS,MAAO;AACzB,QAAM,OACL,aAAa,mBAAmB,WAC7B;AAAA,IACA,wBAAwB;AAAA,EACxB,IACA;AAEJ,QAAM,gBAAgB;AAAA,IACrB;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,qBAAqB;AAAA,EACtB;AAEA,QAAM,gBAAgB,MAAM,SAC1B,SAAU,SAAU,EACpB,iBAAkB,YAAY,YAAY,aAAc;AAE1D,SAAO;AACR;AAOM,MAAM,wBACZ,CAAE,MAAM,eACR,OAAQ,EAAE,SAAS,MAAO;AACzB,QAAM,cAAc,MAAM,KAAK,KAAK;AAEpC,MAAI;AACJ,MAAI;AACH,oBAAgB,KAAK,MAAO,WAAY;AAAA,EACzC,SAAU,GAAI;AACb,UAAM,IAAI,MAAO,mBAAoB;AAAA,EACtC;AACA,MACC,cAAc,WAAW,cACzB,CAAE,cAAc,SAChB,CAAE,cAAc,WAChB,OAAO,cAAc,UAAU,YAC/B,OAAO,cAAc,YAAY,YAC/B,cAAc,cACf,OAAO,cAAc,eAAe,UACpC;AACD,UAAM,IAAI,MAAO,2BAA4B;AAAA,EAC9C;AAEA,QAAM,UAAU,MAAM,SAAS;AAAA,IAC9B,cAAc;AAAA,IACd,cAAc;AAAA,IACd,cAAc;AAAA,IACd;AAAA,EACD;AAEA,SAAO;AACR;AAOM,MAAM,+BACZ,CAAE,aACF,CAAE,EAAE,SAAS,MAAO;AACnB,QAAM,eAAe,SACnB,OAAQ,gBAAiB,EACzB,SAAU,QAAS;AACrB,QAAM,oBAAoB,aAAa,YAAY;AAEnD,WAAS,6BAA8B,QAAS;AAC/C,WAAO,OAAO,IAAK,CAAE,UAAW;AAC/B,UAAI,WAAW,MAAM,WAAW;AAChC,UAAK,UAAW;AACf,mBAAW,EAAE,GAAG,SAAS;AACzB,eAAO,SAAS;AAChB,eAAO,SAAS;AAEhB,YAAK,oBAAqB,SAAS,IAAK,GAAI;AAE3C,qBAAY,CAAE,eAAe,KAAM,KAAK,OAAO;AAAA,YAC9C,kBAAmB,SAAS,IAAK;AAAA,UAClC,GAAI;AAEH,gBACC,CAAE,aAAc,MAAM,IAAK,GAAG,WAC7B,aACD,GACC;AACD;AAAA,YACD;AAEA,kBAAM,WAAY,aAAc,IAAI;AAAA,UACrC;AAAA,QACD;AAAA,MACD;AACA,aAAO;AAAA,QACN;AAAA,QACA;AAAA,UACC,UACC,YAAY,OAAO,KAAM,QAAS,EAAE,SAAS,IAC1C,WACA;AAAA,QACL;AAAA,QACA,6BAA8B,MAAM,WAAY;AAAA,MACjD;AAAA,IACD,CAAE;AAAA,EACH;AAEA,QAAM,qBAAqB,SACzB,OAAQ,gBAAiB,EACzB,UAAW,aAAa,QAAS;AAEnC,WACE,SAAU,gBAAiB,EAC3B;AAAA,IACA,aAAa;AAAA,IACb,6BAA8B,kBAAmB;AAAA,EAClD;AACF;AASM,SAAS,kBAAmB,UAAU,WAAY;AACxD,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACD;AACD;",
6
+ "names": []
7
+ }
@@ -1,5 +1,5 @@
1
- /**
2
- * Module Constants
3
- */
4
- export const STORE_NAME = 'core/patterns';
5
- //# sourceMappingURL=constants.js.map
1
+ const STORE_NAME = "core/patterns";
2
+ export {
3
+ STORE_NAME
4
+ };
5
+ //# sourceMappingURL=constants.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["STORE_NAME"],"sources":["@wordpress/patterns/src/store/constants.js"],"sourcesContent":["/**\n * Module Constants\n */\nexport const STORE_NAME = 'core/patterns';\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,MAAMA,UAAU,GAAG,eAAe","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/store/constants.js"],
4
+ "sourcesContent": ["/**\n * Module Constants\n */\nexport const STORE_NAME = 'core/patterns';\n"],
5
+ "mappings": "AAGO,MAAM,aAAa;",
6
+ "names": []
7
+ }
@@ -1,39 +1,20 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { createReduxStore, register } from '@wordpress/data';
5
-
6
- /**
7
- * Internal dependencies
8
- */
9
- import reducer from './reducer';
10
- import * as actions from './actions';
11
- import { STORE_NAME } from './constants';
12
- import * as selectors from './selectors';
13
- import { unlock } from '../lock-unlock';
14
-
15
- /**
16
- * Post editor data store configuration.
17
- *
18
- * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#registerStore
19
- *
20
- * @type {Object}
21
- */
22
- export const storeConfig = {
1
+ import { createReduxStore, register } from "@wordpress/data";
2
+ import reducer from "./reducer";
3
+ import * as actions from "./actions";
4
+ import { STORE_NAME } from "./constants";
5
+ import * as selectors from "./selectors";
6
+ import { unlock } from "../lock-unlock";
7
+ const storeConfig = {
23
8
  reducer
24
9
  };
25
-
26
- /**
27
- * Store definition for the editor namespace.
28
- *
29
- * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore
30
- *
31
- * @type {Object}
32
- */
33
- export const store = createReduxStore(STORE_NAME, {
10
+ const store = createReduxStore(STORE_NAME, {
34
11
  ...storeConfig
35
12
  });
36
13
  register(store);
37
14
  unlock(store).registerPrivateActions(actions);
38
15
  unlock(store).registerPrivateSelectors(selectors);
39
- //# sourceMappingURL=index.js.map
16
+ export {
17
+ store,
18
+ storeConfig
19
+ };
20
+ //# sourceMappingURL=index.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["createReduxStore","register","reducer","actions","STORE_NAME","selectors","unlock","storeConfig","store","registerPrivateActions","registerPrivateSelectors"],"sources":["@wordpress/patterns/src/store/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport * as actions from './actions';\nimport { STORE_NAME } from './constants';\nimport * as selectors from './selectors';\nimport { unlock } from '../lock-unlock';\n\n/**\n * Post editor data store configuration.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#registerStore\n *\n * @type {Object}\n */\nexport const storeConfig = {\n\treducer,\n};\n\n/**\n * Store definition for the editor namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore( STORE_NAME, {\n\t...storeConfig,\n} );\n\nregister( store );\nunlock( store ).registerPrivateActions( actions );\nunlock( store ).registerPrivateSelectors( selectors );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,gBAAgB,EAAEC,QAAQ,QAAQ,iBAAiB;;AAE5D;AACA;AACA;AACA,OAAOC,OAAO,MAAM,WAAW;AAC/B,OAAO,KAAKC,OAAO,MAAM,WAAW;AACpC,SAASC,UAAU,QAAQ,aAAa;AACxC,OAAO,KAAKC,SAAS,MAAM,aAAa;AACxC,SAASC,MAAM,QAAQ,gBAAgB;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GAAG;EAC1BL;AACD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMM,KAAK,GAAGR,gBAAgB,CAAEI,UAAU,EAAE;EAClD,GAAGG;AACJ,CAAE,CAAC;AAEHN,QAAQ,CAAEO,KAAM,CAAC;AACjBF,MAAM,CAAEE,KAAM,CAAC,CAACC,sBAAsB,CAAEN,OAAQ,CAAC;AACjDG,MAAM,CAAEE,KAAM,CAAC,CAACE,wBAAwB,CAAEL,SAAU,CAAC","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/store/index.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport * as actions from './actions';\nimport { STORE_NAME } from './constants';\nimport * as selectors from './selectors';\nimport { unlock } from '../lock-unlock';\n\n/**\n * Post editor data store configuration.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#registerStore\n *\n * @type {Object}\n */\nexport const storeConfig = {\n\treducer,\n};\n\n/**\n * Store definition for the editor namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore( STORE_NAME, {\n\t...storeConfig,\n} );\n\nregister( store );\nunlock( store ).registerPrivateActions( actions );\nunlock( store ).registerPrivateSelectors( selectors );\n"],
5
+ "mappings": "AAGA,SAAS,kBAAkB,gBAAgB;AAK3C,OAAO,aAAa;AACpB,YAAY,aAAa;AACzB,SAAS,kBAAkB;AAC3B,YAAY,eAAe;AAC3B,SAAS,cAAc;AAShB,MAAM,cAAc;AAAA,EAC1B;AACD;AASO,MAAM,QAAQ,iBAAkB,YAAY;AAAA,EAClD,GAAG;AACJ,CAAE;AAEF,SAAU,KAAM;AAChB,OAAQ,KAAM,EAAE,uBAAwB,OAAQ;AAChD,OAAQ,KAAM,EAAE,yBAA0B,SAAU;",
6
+ "names": []
7
+ }
@@ -1,9 +1,6 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { combineReducers } from '@wordpress/data';
5
- export function isEditingPattern(state = {}, action) {
6
- if (action?.type === 'SET_EDITING_PATTERN') {
1
+ import { combineReducers } from "@wordpress/data";
2
+ function isEditingPattern(state = {}, action) {
3
+ if (action?.type === "SET_EDITING_PATTERN") {
7
4
  return {
8
5
  ...state,
9
6
  [action.clientId]: action.isEditing
@@ -11,7 +8,11 @@ export function isEditingPattern(state = {}, action) {
11
8
  }
12
9
  return state;
13
10
  }
14
- export default combineReducers({
11
+ var reducer_default = combineReducers({
15
12
  isEditingPattern
16
13
  });
17
- //# sourceMappingURL=reducer.js.map
14
+ export {
15
+ reducer_default as default,
16
+ isEditingPattern
17
+ };
18
+ //# sourceMappingURL=reducer.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["combineReducers","isEditingPattern","state","action","type","clientId","isEditing"],"sources":["@wordpress/patterns/src/store/reducer.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\n\nexport function isEditingPattern( state = {}, action ) {\n\tif ( action?.type === 'SET_EDITING_PATTERN' ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t[ action.clientId ]: action.isEditing,\n\t\t};\n\t}\n\n\treturn state;\n}\n\nexport default combineReducers( {\n\tisEditingPattern,\n} );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,eAAe,QAAQ,iBAAiB;AAEjD,OAAO,SAASC,gBAAgBA,CAAEC,KAAK,GAAG,CAAC,CAAC,EAAEC,MAAM,EAAG;EACtD,IAAKA,MAAM,EAAEC,IAAI,KAAK,qBAAqB,EAAG;IAC7C,OAAO;MACN,GAAGF,KAAK;MACR,CAAEC,MAAM,CAACE,QAAQ,GAAIF,MAAM,CAACG;IAC7B,CAAC;EACF;EAEA,OAAOJ,KAAK;AACb;AAEA,eAAeF,eAAe,CAAE;EAC/BC;AACD,CAAE,CAAC","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/store/reducer.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\n\nexport function isEditingPattern( state = {}, action ) {\n\tif ( action?.type === 'SET_EDITING_PATTERN' ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t[ action.clientId ]: action.isEditing,\n\t\t};\n\t}\n\n\treturn state;\n}\n\nexport default combineReducers( {\n\tisEditingPattern,\n} );\n"],
5
+ "mappings": "AAGA,SAAS,uBAAuB;AAEzB,SAAS,iBAAkB,QAAQ,CAAC,GAAG,QAAS;AACtD,MAAK,QAAQ,SAAS,uBAAwB;AAC7C,WAAO;AAAA,MACN,GAAG;AAAA,MACH,CAAE,OAAO,QAAS,GAAG,OAAO;AAAA,IAC7B;AAAA,EACD;AAEA,SAAO;AACR;AAEA,IAAO,kBAAQ,gBAAiB;AAAA,EAC/B;AACD,CAAE;",
6
+ "names": []
7
+ }
@@ -1,11 +1,7 @@
1
- /**
2
- * Returns true if pattern is in the editing state.
3
- *
4
- * @param {Object} state Global application state.
5
- * @param {number} clientId the clientID of the block.
6
- * @return {boolean} Whether the pattern is in the editing state.
7
- */
8
- export function isEditingPattern(state, clientId) {
1
+ function isEditingPattern(state, clientId) {
9
2
  return state.isEditingPattern[clientId];
10
3
  }
11
- //# sourceMappingURL=selectors.js.map
4
+ export {
5
+ isEditingPattern
6
+ };
7
+ //# sourceMappingURL=selectors.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["isEditingPattern","state","clientId"],"sources":["@wordpress/patterns/src/store/selectors.js"],"sourcesContent":["/**\n * Returns true if pattern is in the editing state.\n *\n * @param {Object} state Global application state.\n * @param {number} clientId the clientID of the block.\n * @return {boolean} Whether the pattern is in the editing state.\n */\nexport function isEditingPattern( state, clientId ) {\n\treturn state.isEditingPattern[ clientId ];\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,gBAAgBA,CAAEC,KAAK,EAAEC,QAAQ,EAAG;EACnD,OAAOD,KAAK,CAACD,gBAAgB,CAAEE,QAAQ,CAAE;AAC1C","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/store/selectors.js"],
4
+ "sourcesContent": ["/**\n * Returns true if pattern is in the editing state.\n *\n * @param {Object} state Global application state.\n * @param {number} clientId the clientID of the block.\n * @return {boolean} Whether the pattern is in the editing state.\n */\nexport function isEditingPattern( state, clientId ) {\n\treturn state.isEditingPattern[ clientId ];\n}\n"],
5
+ "mappings": "AAOO,SAAS,iBAAkB,OAAO,UAAW;AACnD,SAAO,MAAM,iBAAkB,QAAS;AACzC;",
6
+ "names": []
7
+ }