@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.
- package/build/api/index.js +35 -29
- package/build/api/index.js.map +7 -1
- package/build/components/allow-overrides-modal.js +149 -112
- package/build/components/allow-overrides-modal.js.map +7 -1
- package/build/components/category-selector.js +59 -38
- package/build/components/category-selector.js.map +7 -1
- package/build/components/create-pattern-modal.js +162 -111
- package/build/components/create-pattern-modal.js.map +7 -1
- package/build/components/duplicate-pattern-modal.js +85 -66
- package/build/components/duplicate-pattern-modal.js.map +7 -1
- package/build/components/index.js +50 -33
- package/build/components/index.js.map +7 -1
- package/build/components/overrides-panel.js +44 -39
- package/build/components/overrides-panel.js.map +7 -1
- package/build/components/pattern-convert-button.js +144 -133
- package/build/components/pattern-convert-button.js.map +7 -1
- package/build/components/pattern-overrides-block-controls.js +109 -109
- package/build/components/pattern-overrides-block-controls.js.map +7 -1
- package/build/components/pattern-overrides-controls.js +86 -69
- package/build/components/pattern-overrides-controls.js.map +7 -1
- package/build/components/patterns-manage-button.js +96 -97
- package/build/components/patterns-manage-button.js.map +7 -1
- package/build/components/rename-pattern-category-modal.js +122 -111
- package/build/components/rename-pattern-category-modal.js.map +7 -1
- package/build/components/rename-pattern-modal.js +95 -73
- package/build/components/rename-pattern-modal.js.map +7 -1
- package/build/components/reset-overrides-control.js +61 -57
- package/build/components/reset-overrides-control.js.map +7 -1
- package/build/constants.js +57 -23
- package/build/constants.js.map +7 -1
- package/build/index.js +27 -24
- package/build/index.js.map +7 -1
- package/build/lock-unlock.js +31 -15
- package/build/lock-unlock.js.map +7 -1
- package/build/private-apis.js +71 -48
- package/build/private-apis.js.map +7 -1
- package/build/private-hooks.js +57 -69
- package/build/private-hooks.js.map +7 -1
- package/build/store/actions.js +72 -85
- package/build/store/actions.js.map +7 -1
- package/build/store/constants.js +27 -10
- package/build/store/constants.js.map +7 -1
- package/build/store/index.js +50 -44
- package/build/store/index.js.map +7 -1
- package/build/store/reducer.js +30 -14
- package/build/store/reducer.js.map +7 -1
- package/build/store/selectors.js +26 -13
- package/build/store/selectors.js.map +7 -1
- package/build-module/api/index.js +14 -25
- package/build-module/api/index.js.map +7 -1
- package/build-module/components/allow-overrides-modal.js +131 -103
- package/build-module/components/allow-overrides-modal.js.map +7 -1
- package/build-module/components/category-selector.js +35 -29
- package/build-module/components/category-selector.js.map +7 -1
- package/build-module/components/create-pattern-modal.js +137 -99
- package/build-module/components/create-pattern-modal.js.map +7 -1
- package/build-module/components/duplicate-pattern-modal.js +53 -58
- package/build-module/components/duplicate-pattern-modal.js.map +7 -1
- package/build-module/components/index.js +22 -26
- package/build-module/components/index.js.map +7 -1
- package/build-module/components/overrides-panel.js +30 -34
- package/build-module/components/overrides-panel.js.map +7 -1
- package/build-module/components/pattern-convert-button.js +120 -125
- package/build-module/components/pattern-convert-button.js.map +7 -1
- package/build-module/components/pattern-overrides-block-controls.js +100 -103
- package/build-module/components/pattern-overrides-block-controls.js.map +7 -1
- package/build-module/components/pattern-overrides-controls.js +69 -58
- package/build-module/components/pattern-overrides-controls.js.map +7 -1
- package/build-module/components/patterns-manage-button.js +78 -91
- package/build-module/components/patterns-manage-button.js.map +7 -1
- package/build-module/components/rename-pattern-category-modal.js +106 -101
- package/build-module/components/rename-pattern-category-modal.js.map +7 -1
- package/build-module/components/rename-pattern-modal.js +80 -64
- package/build-module/components/rename-pattern-modal.js.map +7 -1
- package/build-module/components/reset-overrides-control.js +46 -51
- package/build-module/components/reset-overrides-control.js.map +7 -1
- package/build-module/constants.js +29 -18
- package/build-module/constants.js.map +7 -1
- package/build-module/index.js +6 -6
- package/build-module/index.js.map +7 -1
- package/build-module/lock-unlock.js +8 -7
- package/build-module/lock-unlock.js.map +7 -1
- package/build-module/private-apis.js +31 -18
- package/build-module/private-apis.js.map +7 -1
- package/build-module/private-hooks.js +35 -64
- package/build-module/private-hooks.js.map +7 -1
- package/build-module/store/actions.js +44 -74
- package/build-module/store/actions.js.map +7 -1
- package/build-module/store/constants.js +5 -5
- package/build-module/store/constants.js.map +7 -1
- package/build-module/store/index.js +13 -32
- package/build-module/store/index.js.map +7 -1
- package/build-module/store/reducer.js +9 -8
- package/build-module/store/reducer.js.map +7 -1
- package/build-module/store/selectors.js +5 -9
- package/build-module/store/selectors.js.map +7 -1
- package/build-style/style-rtl.css +3 -138
- package/build-style/style.css +3 -138
- package/package.json +24 -17
- package/src/components/style.scss +5 -0
- package/src/style.scss +2 -1
- package/build/index.native.js +0 -18
- package/build/index.native.js.map +0 -1
- package/build-module/index.native.js +0 -11
- package/build-module/index.native.js.map +0 -1
|
@@ -1,26 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
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
|
-
|
|
14
|
-
|
|
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(
|
|
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
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
53
|
+
export {
|
|
54
|
+
CATEGORY_SLUG,
|
|
55
|
+
CategorySelector as default
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=category-selector.js.map
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
38
|
-
confirmLabel = __(
|
|
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
|
-
|
|
53
|
-
} =
|
|
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(
|
|
68
|
-
|
|
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:
|
|
76
|
-
id:
|
|
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
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
children:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
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
|
-
|
|
168
|
+
export {
|
|
169
|
+
CreatePatternModalContents,
|
|
170
|
+
CreatePatternModal as default
|
|
171
|
+
};
|
|
172
|
+
//# sourceMappingURL=create-pattern-modal.js.map
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
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(
|
|
10
|
+
return categories.core?.filter(
|
|
11
|
+
(category) => pattern.categories?.includes(category.name)
|
|
12
|
+
).map((category) => category.label);
|
|
19
13
|
}
|
|
20
|
-
return categories.user?.filter(
|
|
14
|
+
return categories.user?.filter(
|
|
15
|
+
(category) => pattern.wp_pattern_category?.includes(category.id)
|
|
16
|
+
).map((category) => category.label);
|
|
21
17
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}) => {
|
|
52
|
-
createSuccessNotice(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
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
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
75
|
+
export {
|
|
76
|
+
DuplicatePatternModal as default,
|
|
77
|
+
useDuplicatePatternProps
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=duplicate-pattern-modal.js.map
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
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
|
+
}
|