@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,23 +1,14 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { MenuItem } from '@wordpress/components';
5
- import { __ } from '@wordpress/i18n';
6
- import { isReusableBlock } from '@wordpress/blocks';
7
- import { useSelect, useDispatch } from '@wordpress/data';
8
- import { store as blockEditorStore } from '@wordpress/block-editor';
9
- import { addQueryArgs } from '@wordpress/url';
10
- import { store as coreStore } from '@wordpress/core-data';
11
-
12
- /**
13
- * Internal dependencies
14
- */
15
- import { store as patternsStore } from '../store';
16
- import { unlock } from '../lock-unlock';
17
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
18
- function PatternsManageButton({
19
- clientId
20
- }) {
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { MenuItem } from "@wordpress/components";
3
+ import { __ } from "@wordpress/i18n";
4
+ import { isReusableBlock } from "@wordpress/blocks";
5
+ import { useSelect, useDispatch } from "@wordpress/data";
6
+ import { store as blockEditorStore } from "@wordpress/block-editor";
7
+ import { addQueryArgs } from "@wordpress/url";
8
+ import { store as coreStore } from "@wordpress/core-data";
9
+ import { store as patternsStore } from "../store";
10
+ import { unlock } from "../lock-unlock";
11
+ function PatternsManageButton({ clientId }) {
21
12
  const {
22
13
  attributes,
23
14
  canDetach,
@@ -25,78 +16,74 @@ function PatternsManageButton({
25
16
  managePatternsUrl,
26
17
  isSyncedPattern,
27
18
  isUnsyncedPattern
28
- } = useSelect(select => {
29
- const {
30
- canRemoveBlock,
31
- getBlock
32
- } = select(blockEditorStore);
33
- const {
34
- canUser
35
- } = select(coreStore);
36
- const block = getBlock(clientId);
37
- const _isUnsyncedPattern = window?.__experimentalContentOnlyPatternInsertion && !!block?.attributes?.metadata?.patternName;
38
- const _isSyncedPattern = !!block && isReusableBlock(block) && !!canUser('update', {
39
- kind: 'postType',
40
- name: 'wp_block',
41
- id: block.attributes.ref
42
- });
43
- return {
44
- attributes: block.attributes,
45
- // For unsynced patterns, detaching is simply removing the `patternName` attribute.
46
- // For synced patterns, the `core:block` block is replaced with its inner blocks,
47
- // so checking whether `canRemoveBlock` is possible is required.
48
- canDetach: _isUnsyncedPattern || _isSyncedPattern && canRemoveBlock(clientId),
49
- isUnsyncedPattern: _isUnsyncedPattern,
50
- isSyncedPattern: _isSyncedPattern,
51
- isVisible: _isUnsyncedPattern || _isSyncedPattern,
52
- // The site editor and templates both check whether the user
53
- // has edit_theme_options capabilities. We can leverage that here
54
- // and omit the manage patterns link if the user can't access it.
55
- managePatternsUrl: canUser('create', {
56
- kind: 'postType',
57
- name: 'wp_template'
58
- }) ? addQueryArgs('site-editor.php', {
59
- p: '/pattern'
60
- }) : addQueryArgs('edit.php', {
61
- post_type: 'wp_block'
62
- })
63
- };
64
- }, [clientId]);
65
- const {
66
- updateBlockAttributes
67
- } = useDispatch(blockEditorStore);
68
-
69
- // Ignore reason: false positive of the lint rule.
70
- // eslint-disable-next-line @wordpress/no-unused-vars-before-return
71
- const {
72
- convertSyncedPatternToStatic
73
- } = unlock(useDispatch(patternsStore));
19
+ } = useSelect(
20
+ (select) => {
21
+ const { canRemoveBlock, getBlock } = select(blockEditorStore);
22
+ const { canUser } = select(coreStore);
23
+ const block = getBlock(clientId);
24
+ const _isUnsyncedPattern = window?.__experimentalContentOnlyPatternInsertion && !!block?.attributes?.metadata?.patternName;
25
+ const _isSyncedPattern = !!block && isReusableBlock(block) && !!canUser("update", {
26
+ kind: "postType",
27
+ name: "wp_block",
28
+ id: block.attributes.ref
29
+ });
30
+ return {
31
+ attributes: block.attributes,
32
+ // For unsynced patterns, detaching is simply removing the `patternName` attribute.
33
+ // For synced patterns, the `core:block` block is replaced with its inner blocks,
34
+ // so checking whether `canRemoveBlock` is possible is required.
35
+ canDetach: _isUnsyncedPattern || _isSyncedPattern && canRemoveBlock(clientId),
36
+ isUnsyncedPattern: _isUnsyncedPattern,
37
+ isSyncedPattern: _isSyncedPattern,
38
+ isVisible: _isUnsyncedPattern || _isSyncedPattern,
39
+ // The site editor and templates both check whether the user
40
+ // has edit_theme_options capabilities. We can leverage that here
41
+ // and omit the manage patterns link if the user can't access it.
42
+ managePatternsUrl: canUser("create", {
43
+ kind: "postType",
44
+ name: "wp_template"
45
+ }) ? addQueryArgs("site-editor.php", {
46
+ p: "/pattern"
47
+ }) : addQueryArgs("edit.php", {
48
+ post_type: "wp_block"
49
+ })
50
+ };
51
+ },
52
+ [clientId]
53
+ );
54
+ const { updateBlockAttributes } = useDispatch(blockEditorStore);
55
+ const { convertSyncedPatternToStatic } = unlock(
56
+ useDispatch(patternsStore)
57
+ );
74
58
  if (!isVisible) {
75
59
  return null;
76
60
  }
77
- return /*#__PURE__*/_jsxs(_Fragment, {
78
- children: [canDetach && /*#__PURE__*/_jsx(MenuItem, {
79
- onClick: () => {
80
- if (isSyncedPattern) {
81
- convertSyncedPatternToStatic(clientId);
82
- }
83
- if (isUnsyncedPattern) {
84
- var _attributes$metadata;
85
- const {
86
- patternName,
87
- ...attributesWithoutPatternName
88
- } = (_attributes$metadata = attributes?.metadata) !== null && _attributes$metadata !== void 0 ? _attributes$metadata : {};
89
- updateBlockAttributes(clientId, {
90
- metadata: attributesWithoutPatternName
91
- });
92
- }
93
- },
94
- children: __('Detach')
95
- }), /*#__PURE__*/_jsx(MenuItem, {
96
- href: managePatternsUrl,
97
- children: __('Manage patterns')
98
- })]
99
- });
61
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
62
+ canDetach && /* @__PURE__ */ jsx(
63
+ MenuItem,
64
+ {
65
+ onClick: () => {
66
+ if (isSyncedPattern) {
67
+ convertSyncedPatternToStatic(clientId);
68
+ }
69
+ if (isUnsyncedPattern) {
70
+ const {
71
+ patternName,
72
+ ...attributesWithoutPatternName
73
+ } = attributes?.metadata ?? {};
74
+ updateBlockAttributes(clientId, {
75
+ metadata: attributesWithoutPatternName
76
+ });
77
+ }
78
+ },
79
+ children: __("Detach")
80
+ }
81
+ ),
82
+ /* @__PURE__ */ jsx(MenuItem, { href: managePatternsUrl, children: __("Manage patterns") })
83
+ ] });
100
84
  }
101
- export default PatternsManageButton;
102
- //# sourceMappingURL=patterns-manage-button.js.map
85
+ var patterns_manage_button_default = PatternsManageButton;
86
+ export {
87
+ patterns_manage_button_default as default
88
+ };
89
+ //# sourceMappingURL=patterns-manage-button.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["MenuItem","__","isReusableBlock","useSelect","useDispatch","store","blockEditorStore","addQueryArgs","coreStore","patternsStore","unlock","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PatternsManageButton","clientId","attributes","canDetach","isVisible","managePatternsUrl","isSyncedPattern","isUnsyncedPattern","select","canRemoveBlock","getBlock","canUser","block","_isUnsyncedPattern","window","__experimentalContentOnlyPatternInsertion","metadata","patternName","_isSyncedPattern","kind","name","id","ref","p","post_type","updateBlockAttributes","convertSyncedPatternToStatic","children","onClick","_attributes$metadata","attributesWithoutPatternName","href"],"sources":["@wordpress/patterns/src/components/patterns-manage-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { isReusableBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { addQueryArgs } from '@wordpress/url';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as patternsStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\nfunction PatternsManageButton( { clientId } ) {\n\tconst {\n\t\tattributes,\n\t\tcanDetach,\n\t\tisVisible,\n\t\tmanagePatternsUrl,\n\t\tisSyncedPattern,\n\t\tisUnsyncedPattern,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canRemoveBlock, getBlock } = select( blockEditorStore );\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst block = getBlock( clientId );\n\n\t\t\tconst _isUnsyncedPattern =\n\t\t\t\twindow?.__experimentalContentOnlyPatternInsertion &&\n\t\t\t\t!! block?.attributes?.metadata?.patternName;\n\n\t\t\tconst _isSyncedPattern =\n\t\t\t\t!! block &&\n\t\t\t\tisReusableBlock( block ) &&\n\t\t\t\t!! canUser( 'update', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_block',\n\t\t\t\t\tid: block.attributes.ref,\n\t\t\t\t} );\n\n\t\t\treturn {\n\t\t\t\tattributes: block.attributes,\n\t\t\t\t// For unsynced patterns, detaching is simply removing the `patternName` attribute.\n\t\t\t\t// For synced patterns, the `core:block` block is replaced with its inner blocks,\n\t\t\t\t// so checking whether `canRemoveBlock` is possible is required.\n\t\t\t\tcanDetach:\n\t\t\t\t\t_isUnsyncedPattern ||\n\t\t\t\t\t( _isSyncedPattern && canRemoveBlock( clientId ) ),\n\t\t\t\tisUnsyncedPattern: _isUnsyncedPattern,\n\t\t\t\tisSyncedPattern: _isSyncedPattern,\n\t\t\t\tisVisible: _isUnsyncedPattern || _isSyncedPattern,\n\t\t\t\t// The site editor and templates both check whether the user\n\t\t\t\t// has edit_theme_options capabilities. We can leverage that here\n\t\t\t\t// and omit the manage patterns link if the user can't access it.\n\t\t\t\tmanagePatternsUrl: canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_template',\n\t\t\t\t} )\n\t\t\t\t\t? addQueryArgs( 'site-editor.php', {\n\t\t\t\t\t\t\tp: '/pattern',\n\t\t\t\t\t } )\n\t\t\t\t\t: addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t } ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\t// Ignore reason: false positive of the lint rule.\n\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\tconst { convertSyncedPatternToStatic } = unlock(\n\t\tuseDispatch( patternsStore )\n\t);\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ canDetach && (\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tif ( isSyncedPattern ) {\n\t\t\t\t\t\t\tconvertSyncedPatternToStatic( clientId );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( isUnsyncedPattern ) {\n\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\tpatternName,\n\t\t\t\t\t\t\t\t...attributesWithoutPatternName\n\t\t\t\t\t\t\t} = attributes?.metadata ?? {};\n\t\t\t\t\t\t\tupdateBlockAttributes( clientId, {\n\t\t\t\t\t\t\t\tmetadata: attributesWithoutPatternName,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Detach' ) }\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t\t<MenuItem href={ managePatternsUrl }>\n\t\t\t\t{ __( 'Manage patterns' ) }\n\t\t\t</MenuItem>\n\t\t</>\n\t);\n}\n\nexport default PatternsManageButton;\n"],"mappings":"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","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/patterns-manage-button.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { isReusableBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { addQueryArgs } from '@wordpress/url';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as patternsStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\nfunction PatternsManageButton( { clientId } ) {\n\tconst {\n\t\tattributes,\n\t\tcanDetach,\n\t\tisVisible,\n\t\tmanagePatternsUrl,\n\t\tisSyncedPattern,\n\t\tisUnsyncedPattern,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canRemoveBlock, getBlock } = select( blockEditorStore );\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst block = getBlock( clientId );\n\n\t\t\tconst _isUnsyncedPattern =\n\t\t\t\twindow?.__experimentalContentOnlyPatternInsertion &&\n\t\t\t\t!! block?.attributes?.metadata?.patternName;\n\n\t\t\tconst _isSyncedPattern =\n\t\t\t\t!! block &&\n\t\t\t\tisReusableBlock( block ) &&\n\t\t\t\t!! canUser( 'update', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_block',\n\t\t\t\t\tid: block.attributes.ref,\n\t\t\t\t} );\n\n\t\t\treturn {\n\t\t\t\tattributes: block.attributes,\n\t\t\t\t// For unsynced patterns, detaching is simply removing the `patternName` attribute.\n\t\t\t\t// For synced patterns, the `core:block` block is replaced with its inner blocks,\n\t\t\t\t// so checking whether `canRemoveBlock` is possible is required.\n\t\t\t\tcanDetach:\n\t\t\t\t\t_isUnsyncedPattern ||\n\t\t\t\t\t( _isSyncedPattern && canRemoveBlock( clientId ) ),\n\t\t\t\tisUnsyncedPattern: _isUnsyncedPattern,\n\t\t\t\tisSyncedPattern: _isSyncedPattern,\n\t\t\t\tisVisible: _isUnsyncedPattern || _isSyncedPattern,\n\t\t\t\t// The site editor and templates both check whether the user\n\t\t\t\t// has edit_theme_options capabilities. We can leverage that here\n\t\t\t\t// and omit the manage patterns link if the user can't access it.\n\t\t\t\tmanagePatternsUrl: canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_template',\n\t\t\t\t} )\n\t\t\t\t\t? addQueryArgs( 'site-editor.php', {\n\t\t\t\t\t\t\tp: '/pattern',\n\t\t\t\t\t } )\n\t\t\t\t\t: addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t } ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\t// Ignore reason: false positive of the lint rule.\n\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\tconst { convertSyncedPatternToStatic } = unlock(\n\t\tuseDispatch( patternsStore )\n\t);\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ canDetach && (\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tif ( isSyncedPattern ) {\n\t\t\t\t\t\t\tconvertSyncedPatternToStatic( clientId );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( isUnsyncedPattern ) {\n\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\tpatternName,\n\t\t\t\t\t\t\t\t...attributesWithoutPatternName\n\t\t\t\t\t\t\t} = attributes?.metadata ?? {};\n\t\t\t\t\t\t\tupdateBlockAttributes( clientId, {\n\t\t\t\t\t\t\t\tmetadata: attributesWithoutPatternName,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Detach' ) }\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t\t<MenuItem href={ managePatternsUrl }>\n\t\t\t\t{ __( 'Manage patterns' ) }\n\t\t\t</MenuItem>\n\t\t</>\n\t);\n}\n\nexport default PatternsManageButton;\n"],
5
+ "mappings": "AAsFE,mBAEE,KAFF;AAnFF,SAAS,gBAAgB;AACzB,SAAS,UAAU;AACnB,SAAS,uBAAuB;AAChC,SAAS,WAAW,mBAAmB;AACvC,SAAS,SAAS,wBAAwB;AAC1C,SAAS,oBAAoB;AAC7B,SAAS,SAAS,iBAAiB;AAKnC,SAAS,SAAS,qBAAqB;AACvC,SAAS,cAAc;AAEvB,SAAS,qBAAsB,EAAE,SAAS,GAAI;AAC7C,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI;AAAA,IACH,CAAE,WAAY;AACb,YAAM,EAAE,gBAAgB,SAAS,IAAI,OAAQ,gBAAiB;AAC9D,YAAM,EAAE,QAAQ,IAAI,OAAQ,SAAU;AACtC,YAAM,QAAQ,SAAU,QAAS;AAEjC,YAAM,qBACL,QAAQ,6CACR,CAAC,CAAE,OAAO,YAAY,UAAU;AAEjC,YAAM,mBACL,CAAC,CAAE,SACH,gBAAiB,KAAM,KACvB,CAAC,CAAE,QAAS,UAAU;AAAA,QACrB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,IAAI,MAAM,WAAW;AAAA,MACtB,CAAE;AAEH,aAAO;AAAA,QACN,YAAY,MAAM;AAAA;AAAA;AAAA;AAAA,QAIlB,WACC,sBACE,oBAAoB,eAAgB,QAAS;AAAA,QAChD,mBAAmB;AAAA,QACnB,iBAAiB;AAAA,QACjB,WAAW,sBAAsB;AAAA;AAAA;AAAA;AAAA,QAIjC,mBAAmB,QAAS,UAAU;AAAA,UACrC,MAAM;AAAA,UACN,MAAM;AAAA,QACP,CAAE,IACC,aAAc,mBAAmB;AAAA,UACjC,GAAG;AAAA,QACH,CAAE,IACF,aAAc,YAAY;AAAA,UAC1B,WAAW;AAAA,QACX,CAAE;AAAA,MACN;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAEA,QAAM,EAAE,sBAAsB,IAAI,YAAa,gBAAiB;AAIhE,QAAM,EAAE,6BAA6B,IAAI;AAAA,IACxC,YAAa,aAAc;AAAA,EAC5B;AAEA,MAAK,CAAE,WAAY;AAClB,WAAO;AAAA,EACR;AAEA,SACC,iCACG;AAAA,iBACD;AAAA,MAAC;AAAA;AAAA,QACA,SAAU,MAAM;AACf,cAAK,iBAAkB;AACtB,yCAA8B,QAAS;AAAA,UACxC;AAEA,cAAK,mBAAoB;AACxB,kBAAM;AAAA,cACL;AAAA,cACA,GAAG;AAAA,YACJ,IAAI,YAAY,YAAY,CAAC;AAC7B,kCAAuB,UAAU;AAAA,cAChC,UAAU;AAAA,YACX,CAAE;AAAA,UACH;AAAA,QACD;AAAA,QAEE,aAAI,QAAS;AAAA;AAAA,IAChB;AAAA,IAED,oBAAC,YAAS,MAAO,mBACd,aAAI,iBAAkB,GACzB;AAAA,KACD;AAEF;AAEA,IAAO,iCAAQ;",
6
+ "names": []
7
+ }
@@ -1,21 +1,20 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { Modal, Button, TextControl, __experimentalHStack as HStack, __experimentalVStack as VStack } from '@wordpress/components';
5
- import { store as coreStore } from '@wordpress/core-data';
6
- import { useDispatch } from '@wordpress/data';
7
- import { useId, useRef, useState } from '@wordpress/element';
8
- import { decodeEntities } from '@wordpress/html-entities';
9
- import { __ } from '@wordpress/i18n';
10
- import { store as noticesStore } from '@wordpress/notices';
11
- import { speak } from '@wordpress/a11y';
12
-
13
- /**
14
- * Internal dependencies
15
- */
16
- import { CATEGORY_SLUG } from './category-selector';
17
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
18
- export default function RenamePatternCategoryModal({
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
+ } from "@wordpress/components";
9
+ import { store as coreStore } from "@wordpress/core-data";
10
+ import { useDispatch } from "@wordpress/data";
11
+ import { useId, useRef, useState } from "@wordpress/element";
12
+ import { decodeEntities } from "@wordpress/html-entities";
13
+ import { __ } from "@wordpress/i18n";
14
+ import { store as noticesStore } from "@wordpress/notices";
15
+ import { speak } from "@wordpress/a11y";
16
+ import { CATEGORY_SLUG } from "./category-selector";
17
+ function RenamePatternCategoryModal({
19
18
  category,
20
19
  existingCategories,
21
20
  onClose,
@@ -28,122 +27,128 @@ export default function RenamePatternCategoryModal({
28
27
  const [name, setName] = useState(decodeEntities(category.name));
29
28
  const [isSaving, setIsSaving] = useState(false);
30
29
  const [validationMessage, setValidationMessage] = useState(false);
31
- const validationMessageId = validationMessage ? `patterns-rename-pattern-category-modal__validation-message-${id}` : undefined;
32
- const {
33
- saveEntityRecord,
34
- invalidateResolution
35
- } = useDispatch(coreStore);
36
- const {
37
- createErrorNotice,
38
- createSuccessNotice
39
- } = useDispatch(noticesStore);
40
- const onChange = newName => {
30
+ const validationMessageId = validationMessage ? `patterns-rename-pattern-category-modal__validation-message-${id}` : void 0;
31
+ const { saveEntityRecord, invalidateResolution } = useDispatch(coreStore);
32
+ const { createErrorNotice, createSuccessNotice } = useDispatch(noticesStore);
33
+ const onChange = (newName) => {
41
34
  if (validationMessage) {
42
- setValidationMessage(undefined);
35
+ setValidationMessage(void 0);
43
36
  }
44
37
  setName(newName);
45
38
  };
46
- const onSave = async event => {
39
+ const onSave = async (event) => {
47
40
  event.preventDefault();
48
41
  if (isSaving) {
49
42
  return;
50
43
  }
51
44
  if (!name || name === category.name) {
52
- const message = __('Please enter a new name for this category.');
53
- speak(message, 'assertive');
45
+ const message = __("Please enter a new name for this category.");
46
+ speak(message, "assertive");
54
47
  setValidationMessage(message);
55
48
  textControlRef.current?.focus();
56
49
  return;
57
50
  }
58
-
59
- // Check existing categories to avoid creating duplicates.
60
- if (existingCategories.patternCategories.find(existingCategory => {
61
- // Compare the id so that the we don't disallow the user changing the case of their current category
62
- // (i.e. renaming 'test' to 'Test').
51
+ if (existingCategories.patternCategories.find((existingCategory) => {
63
52
  return existingCategory.id !== category.id && existingCategory.label.toLowerCase() === name.toLowerCase();
64
53
  })) {
65
- const message = __('This category already exists. Please use a different name.');
66
- speak(message, 'assertive');
54
+ const message = __(
55
+ "This category already exists. Please use a different name."
56
+ );
57
+ speak(message, "assertive");
67
58
  setValidationMessage(message);
68
59
  textControlRef.current?.focus();
69
60
  return;
70
61
  }
71
62
  try {
72
63
  setIsSaving(true);
73
-
74
- // User pattern category properties may differ as they can be
75
- // normalized for use alongside template part areas, core pattern
76
- // categories etc. As a result we won't just destructure the passed
77
- // category object.
78
- const savedRecord = await saveEntityRecord('taxonomy', CATEGORY_SLUG, {
79
- id: category.id,
80
- slug: category.slug,
81
- name
82
- });
83
- invalidateResolution('getUserPatternCategories');
64
+ const savedRecord = await saveEntityRecord(
65
+ "taxonomy",
66
+ CATEGORY_SLUG,
67
+ {
68
+ id: category.id,
69
+ slug: category.slug,
70
+ name
71
+ }
72
+ );
73
+ invalidateResolution("getUserPatternCategories");
84
74
  onSuccess?.(savedRecord);
85
75
  onClose();
86
- createSuccessNotice(__('Pattern category renamed.'), {
87
- type: 'snackbar',
88
- id: 'pattern-category-update'
76
+ createSuccessNotice(__("Pattern category renamed."), {
77
+ type: "snackbar",
78
+ id: "pattern-category-update"
89
79
  });
90
80
  } catch (error) {
91
81
  onError?.();
92
82
  createErrorNotice(error.message, {
93
- type: 'snackbar',
94
- id: 'pattern-category-update'
83
+ type: "snackbar",
84
+ id: "pattern-category-update"
95
85
  });
96
86
  } finally {
97
87
  setIsSaving(false);
98
- setName('');
88
+ setName("");
99
89
  }
100
90
  };
101
91
  const onRequestClose = () => {
102
92
  onClose();
103
- setName('');
93
+ setName("");
104
94
  };
105
- return /*#__PURE__*/_jsx(Modal, {
106
- title: __('Rename'),
107
- onRequestClose: onRequestClose,
108
- ...props,
109
- children: /*#__PURE__*/_jsx("form", {
110
- onSubmit: onSave,
111
- children: /*#__PURE__*/_jsxs(VStack, {
112
- spacing: "5",
113
- children: [/*#__PURE__*/_jsxs(VStack, {
114
- spacing: "2",
115
- children: [/*#__PURE__*/_jsx(TextControl, {
116
- ref: textControlRef,
117
- __nextHasNoMarginBottom: true,
118
- __next40pxDefaultSize: true,
119
- label: __('Name'),
120
- value: name,
121
- onChange: onChange,
122
- "aria-describedby": validationMessageId,
123
- required: true
124
- }), validationMessage && /*#__PURE__*/_jsx("span", {
125
- className: "patterns-rename-pattern-category-modal__validation-message",
126
- id: validationMessageId,
127
- children: validationMessage
128
- })]
129
- }), /*#__PURE__*/_jsxs(HStack, {
130
- justify: "right",
131
- children: [/*#__PURE__*/_jsx(Button, {
132
- __next40pxDefaultSize: true,
133
- variant: "tertiary",
134
- onClick: onRequestClose,
135
- children: __('Cancel')
136
- }), /*#__PURE__*/_jsx(Button, {
137
- __next40pxDefaultSize: true,
138
- variant: "primary",
139
- type: "submit",
140
- "aria-disabled": !name || name === category.name || isSaving,
141
- isBusy: isSaving,
142
- children: __('Save')
143
- })]
144
- })]
145
- })
146
- })
147
- });
95
+ return /* @__PURE__ */ jsx(
96
+ Modal,
97
+ {
98
+ title: __("Rename"),
99
+ onRequestClose,
100
+ ...props,
101
+ children: /* @__PURE__ */ jsx("form", { onSubmit: onSave, children: /* @__PURE__ */ jsxs(VStack, { spacing: "5", children: [
102
+ /* @__PURE__ */ jsxs(VStack, { spacing: "2", children: [
103
+ /* @__PURE__ */ jsx(
104
+ TextControl,
105
+ {
106
+ ref: textControlRef,
107
+ __nextHasNoMarginBottom: true,
108
+ __next40pxDefaultSize: true,
109
+ label: __("Name"),
110
+ value: name,
111
+ onChange,
112
+ "aria-describedby": validationMessageId,
113
+ required: true
114
+ }
115
+ ),
116
+ validationMessage && /* @__PURE__ */ jsx(
117
+ "span",
118
+ {
119
+ className: "patterns-rename-pattern-category-modal__validation-message",
120
+ id: validationMessageId,
121
+ children: validationMessage
122
+ }
123
+ )
124
+ ] }),
125
+ /* @__PURE__ */ jsxs(HStack, { justify: "right", children: [
126
+ /* @__PURE__ */ jsx(
127
+ Button,
128
+ {
129
+ __next40pxDefaultSize: true,
130
+ variant: "tertiary",
131
+ onClick: onRequestClose,
132
+ children: __("Cancel")
133
+ }
134
+ ),
135
+ /* @__PURE__ */ jsx(
136
+ Button,
137
+ {
138
+ __next40pxDefaultSize: true,
139
+ variant: "primary",
140
+ type: "submit",
141
+ "aria-disabled": !name || name === category.name || isSaving,
142
+ isBusy: isSaving,
143
+ children: __("Save")
144
+ }
145
+ )
146
+ ] })
147
+ ] }) })
148
+ }
149
+ );
148
150
  }
149
- //# sourceMappingURL=rename-pattern-category-modal.js.map
151
+ export {
152
+ RenamePatternCategoryModal as default
153
+ };
154
+ //# sourceMappingURL=rename-pattern-category-modal.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["Modal","Button","TextControl","__experimentalHStack","HStack","__experimentalVStack","VStack","store","coreStore","useDispatch","useId","useRef","useState","decodeEntities","__","noticesStore","speak","CATEGORY_SLUG","jsx","_jsx","jsxs","_jsxs","RenamePatternCategoryModal","category","existingCategories","onClose","onError","onSuccess","props","id","textControlRef","name","setName","isSaving","setIsSaving","validationMessage","setValidationMessage","validationMessageId","undefined","saveEntityRecord","invalidateResolution","createErrorNotice","createSuccessNotice","onChange","newName","onSave","event","preventDefault","message","current","focus","patternCategories","find","existingCategory","label","toLowerCase","savedRecord","slug","type","error","onRequestClose","title","children","onSubmit","spacing","ref","__nextHasNoMarginBottom","__next40pxDefaultSize","value","required","className","justify","variant","onClick","isBusy"],"sources":["@wordpress/patterns/src/components/rename-pattern-category-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} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useId, useRef, useState } from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport { CATEGORY_SLUG } from './category-selector';\n\nexport default function RenamePatternCategoryModal( {\n\tcategory,\n\texistingCategories,\n\tonClose,\n\tonError,\n\tonSuccess,\n\t...props\n} ) {\n\tconst id = useId();\n\tconst textControlRef = useRef();\n\tconst [ name, setName ] = useState( decodeEntities( category.name ) );\n\tconst [ isSaving, setIsSaving ] = useState( false );\n\tconst [ validationMessage, setValidationMessage ] = useState( false );\n\tconst validationMessageId = validationMessage\n\t\t? `patterns-rename-pattern-category-modal__validation-message-${ id }`\n\t\t: undefined;\n\n\tconst { saveEntityRecord, invalidateResolution } = useDispatch( coreStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst onChange = ( newName ) => {\n\t\tif ( validationMessage ) {\n\t\t\tsetValidationMessage( undefined );\n\t\t}\n\t\tsetName( newName );\n\t};\n\n\tconst onSave = async ( event ) => {\n\t\tevent.preventDefault();\n\n\t\tif ( isSaving ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! name || name === category.name ) {\n\t\t\tconst message = __( 'Please enter a new name for this category.' );\n\t\t\tspeak( message, 'assertive' );\n\t\t\tsetValidationMessage( message );\n\t\t\ttextControlRef.current?.focus();\n\t\t\treturn;\n\t\t}\n\n\t\t// Check existing categories to avoid creating duplicates.\n\t\tif (\n\t\t\texistingCategories.patternCategories.find( ( existingCategory ) => {\n\t\t\t\t// Compare the id so that the we don't disallow the user changing the case of their current category\n\t\t\t\t// (i.e. renaming 'test' to 'Test').\n\t\t\t\treturn (\n\t\t\t\t\texistingCategory.id !== category.id &&\n\t\t\t\t\texistingCategory.label.toLowerCase() === name.toLowerCase()\n\t\t\t\t);\n\t\t\t} )\n\t\t) {\n\t\t\tconst message = __(\n\t\t\t\t'This category already exists. Please use a different name.'\n\t\t\t);\n\t\t\tspeak( message, 'assertive' );\n\t\t\tsetValidationMessage( message );\n\t\t\ttextControlRef.current?.focus();\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tsetIsSaving( true );\n\n\t\t\t// User pattern category properties may differ as they can be\n\t\t\t// normalized for use alongside template part areas, core pattern\n\t\t\t// categories etc. As a result we won't just destructure the passed\n\t\t\t// category object.\n\t\t\tconst savedRecord = await saveEntityRecord(\n\t\t\t\t'taxonomy',\n\t\t\t\tCATEGORY_SLUG,\n\t\t\t\t{\n\t\t\t\t\tid: category.id,\n\t\t\t\t\tslug: category.slug,\n\t\t\t\t\tname,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tinvalidateResolution( 'getUserPatternCategories' );\n\t\t\tonSuccess?.( savedRecord );\n\t\t\tonClose();\n\n\t\t\tcreateSuccessNotice( __( 'Pattern category renamed.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-category-update',\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tonError?.();\n\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-category-update',\n\t\t\t} );\n\t\t} finally {\n\t\t\tsetIsSaving( false );\n\t\t\tsetName( '' );\n\t\t}\n\t};\n\n\tconst onRequestClose = () => {\n\t\tonClose();\n\t\tsetName( '' );\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Rename' ) }\n\t\t\tonRequestClose={ onRequestClose }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t<form onSubmit={ onSave }>\n\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t<VStack spacing=\"2\">\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tref={ textControlRef }\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\tvalue={ name }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\taria-describedby={ validationMessageId }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ validationMessage && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName=\"patterns-rename-pattern-category-modal__validation-message\"\n\t\t\t\t\t\t\t\tid={ validationMessageId }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ validationMessage }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</VStack>\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onRequestClose }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\taria-disabled={\n\t\t\t\t\t\t\t\t! name || name === category.name || isSaving\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tisBusy={ isSaving }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/rename-pattern-category-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} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useId, useRef, useState } from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport { CATEGORY_SLUG } from './category-selector';\n\nexport default function RenamePatternCategoryModal( {\n\tcategory,\n\texistingCategories,\n\tonClose,\n\tonError,\n\tonSuccess,\n\t...props\n} ) {\n\tconst id = useId();\n\tconst textControlRef = useRef();\n\tconst [ name, setName ] = useState( decodeEntities( category.name ) );\n\tconst [ isSaving, setIsSaving ] = useState( false );\n\tconst [ validationMessage, setValidationMessage ] = useState( false );\n\tconst validationMessageId = validationMessage\n\t\t? `patterns-rename-pattern-category-modal__validation-message-${ id }`\n\t\t: undefined;\n\n\tconst { saveEntityRecord, invalidateResolution } = useDispatch( coreStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst onChange = ( newName ) => {\n\t\tif ( validationMessage ) {\n\t\t\tsetValidationMessage( undefined );\n\t\t}\n\t\tsetName( newName );\n\t};\n\n\tconst onSave = async ( event ) => {\n\t\tevent.preventDefault();\n\n\t\tif ( isSaving ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! name || name === category.name ) {\n\t\t\tconst message = __( 'Please enter a new name for this category.' );\n\t\t\tspeak( message, 'assertive' );\n\t\t\tsetValidationMessage( message );\n\t\t\ttextControlRef.current?.focus();\n\t\t\treturn;\n\t\t}\n\n\t\t// Check existing categories to avoid creating duplicates.\n\t\tif (\n\t\t\texistingCategories.patternCategories.find( ( existingCategory ) => {\n\t\t\t\t// Compare the id so that the we don't disallow the user changing the case of their current category\n\t\t\t\t// (i.e. renaming 'test' to 'Test').\n\t\t\t\treturn (\n\t\t\t\t\texistingCategory.id !== category.id &&\n\t\t\t\t\texistingCategory.label.toLowerCase() === name.toLowerCase()\n\t\t\t\t);\n\t\t\t} )\n\t\t) {\n\t\t\tconst message = __(\n\t\t\t\t'This category already exists. Please use a different name.'\n\t\t\t);\n\t\t\tspeak( message, 'assertive' );\n\t\t\tsetValidationMessage( message );\n\t\t\ttextControlRef.current?.focus();\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tsetIsSaving( true );\n\n\t\t\t// User pattern category properties may differ as they can be\n\t\t\t// normalized for use alongside template part areas, core pattern\n\t\t\t// categories etc. As a result we won't just destructure the passed\n\t\t\t// category object.\n\t\t\tconst savedRecord = await saveEntityRecord(\n\t\t\t\t'taxonomy',\n\t\t\t\tCATEGORY_SLUG,\n\t\t\t\t{\n\t\t\t\t\tid: category.id,\n\t\t\t\t\tslug: category.slug,\n\t\t\t\t\tname,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tinvalidateResolution( 'getUserPatternCategories' );\n\t\t\tonSuccess?.( savedRecord );\n\t\t\tonClose();\n\n\t\t\tcreateSuccessNotice( __( 'Pattern category renamed.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-category-update',\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tonError?.();\n\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-category-update',\n\t\t\t} );\n\t\t} finally {\n\t\t\tsetIsSaving( false );\n\t\t\tsetName( '' );\n\t\t}\n\t};\n\n\tconst onRequestClose = () => {\n\t\tonClose();\n\t\tsetName( '' );\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Rename' ) }\n\t\t\tonRequestClose={ onRequestClose }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t<form onSubmit={ onSave }>\n\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t<VStack spacing=\"2\">\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tref={ textControlRef }\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\tvalue={ name }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\taria-describedby={ validationMessageId }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ validationMessage && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName=\"patterns-rename-pattern-category-modal__validation-message\"\n\t\t\t\t\t\t\t\tid={ validationMessageId }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ validationMessage }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</VStack>\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onRequestClose }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\taria-disabled={\n\t\t\t\t\t\t\t\t! name || name === category.name || isSaving\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tisBusy={ isSaving }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }