@wordpress/patterns 1.2.1-next.5a1d1283.0 → 1.3.1
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/CHANGELOG.md +2 -0
- package/build/components/category-selector.js +73 -0
- package/build/components/category-selector.js.map +1 -0
- package/build/components/create-pattern-modal.js +64 -21
- package/build/components/create-pattern-modal.js.map +1 -1
- package/build/components/pattern-convert-button.js +20 -1
- package/build/components/pattern-convert-button.js.map +1 -1
- package/build/components/patterns-manage-button.js +7 -3
- package/build/components/patterns-manage-button.js.map +1 -1
- package/build/constants.js +23 -0
- package/build/constants.js.map +1 -0
- package/build/index.js +11 -1
- package/build/index.js.map +1 -1
- package/build/private-apis.js +7 -1
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +45 -23
- package/build/store/actions.js.map +1 -1
- package/build/store/index.js +4 -3
- package/build/store/index.js.map +1 -1
- package/build/store/selectors.js +2 -2
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/category-selector.js +65 -0
- package/build-module/components/category-selector.js.map +1 -0
- package/build-module/components/create-pattern-modal.js +64 -20
- package/build-module/components/create-pattern-modal.js.map +1 -1
- package/build-module/components/pattern-convert-button.js +22 -3
- package/build-module/components/pattern-convert-button.js.map +1 -1
- package/build-module/components/patterns-manage-button.js +8 -4
- package/build-module/components/patterns-manage-button.js.map +1 -1
- package/build-module/constants.js +12 -0
- package/build-module/constants.js.map +1 -0
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/private-apis.js +7 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +41 -20
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/index.js +4 -3
- package/build-module/store/index.js.map +1 -1
- package/build-module/store/selectors.js +1 -1
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +7 -0
- package/build-style/style.css +7 -0
- package/package.json +16 -14
- package/src/components/category-selector.js +80 -0
- package/src/components/create-pattern-modal.js +89 -40
- package/src/components/pattern-convert-button.js +26 -3
- package/src/components/patterns-manage-button.js +10 -4
- package/src/components/style.scss +7 -0
- package/src/constants.js +17 -0
- package/src/index.js +1 -2
- package/src/private-apis.js +12 -0
- package/src/store/actions.js +55 -27
- package/src/store/index.js +3 -2
- package/src/store/selectors.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.CATEGORY_SLUG = void 0;
|
|
7
|
+
exports.default = CategorySelector;
|
|
8
|
+
var _element = require("@wordpress/element");
|
|
9
|
+
var _i18n = require("@wordpress/i18n");
|
|
10
|
+
var _components = require("@wordpress/components");
|
|
11
|
+
var _data = require("@wordpress/data");
|
|
12
|
+
var _coreData = require("@wordpress/core-data");
|
|
13
|
+
var _compose = require("@wordpress/compose");
|
|
14
|
+
var _htmlEntities = require("@wordpress/html-entities");
|
|
15
|
+
/**
|
|
16
|
+
* WordPress dependencies
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
const unescapeString = arg => {
|
|
20
|
+
return (0, _htmlEntities.decodeEntities)(arg);
|
|
21
|
+
};
|
|
22
|
+
const EMPTY_ARRAY = [];
|
|
23
|
+
const MAX_TERMS_SUGGESTIONS = 20;
|
|
24
|
+
const DEFAULT_QUERY = {
|
|
25
|
+
per_page: MAX_TERMS_SUGGESTIONS,
|
|
26
|
+
_fields: 'id,name',
|
|
27
|
+
context: 'view'
|
|
28
|
+
};
|
|
29
|
+
const CATEGORY_SLUG = 'wp_pattern_category';
|
|
30
|
+
exports.CATEGORY_SLUG = CATEGORY_SLUG;
|
|
31
|
+
function CategorySelector({
|
|
32
|
+
values,
|
|
33
|
+
onChange
|
|
34
|
+
}) {
|
|
35
|
+
const [search, setSearch] = (0, _element.useState)('');
|
|
36
|
+
const debouncedSearch = (0, _compose.useDebounce)(setSearch, 500);
|
|
37
|
+
const {
|
|
38
|
+
searchResults
|
|
39
|
+
} = (0, _data.useSelect)(select => {
|
|
40
|
+
const {
|
|
41
|
+
getEntityRecords
|
|
42
|
+
} = select(_coreData.store);
|
|
43
|
+
return {
|
|
44
|
+
searchResults: !!search ? getEntityRecords('taxonomy', CATEGORY_SLUG, {
|
|
45
|
+
...DEFAULT_QUERY,
|
|
46
|
+
search
|
|
47
|
+
}) : EMPTY_ARRAY
|
|
48
|
+
};
|
|
49
|
+
}, [search]);
|
|
50
|
+
const suggestions = (0, _element.useMemo)(() => {
|
|
51
|
+
return (searchResults !== null && searchResults !== void 0 ? searchResults : []).map(term => unescapeString(term.name));
|
|
52
|
+
}, [searchResults]);
|
|
53
|
+
function handleChange(termNames) {
|
|
54
|
+
const uniqueTerms = termNames.reduce((terms, newTerm) => {
|
|
55
|
+
if (!terms.some(term => term.toLowerCase() === newTerm.toLowerCase())) {
|
|
56
|
+
terms.push(newTerm);
|
|
57
|
+
}
|
|
58
|
+
return terms;
|
|
59
|
+
}, []);
|
|
60
|
+
onChange(uniqueTerms);
|
|
61
|
+
}
|
|
62
|
+
return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.FormTokenField, {
|
|
63
|
+
className: "patterns-menu-items__convert-modal-categories",
|
|
64
|
+
value: values,
|
|
65
|
+
suggestions: suggestions,
|
|
66
|
+
onChange: handleChange,
|
|
67
|
+
onInputChange: debouncedSearch,
|
|
68
|
+
maxSuggestions: MAX_TERMS_SUGGESTIONS,
|
|
69
|
+
label: (0, _i18n.__)('Categories'),
|
|
70
|
+
tokenizeOnBlur: true
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=category-selector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_element","require","_i18n","_components","_data","_coreData","_compose","_htmlEntities","unescapeString","arg","decodeEntities","EMPTY_ARRAY","MAX_TERMS_SUGGESTIONS","DEFAULT_QUERY","per_page","_fields","context","CATEGORY_SLUG","exports","CategorySelector","values","onChange","search","setSearch","useState","debouncedSearch","useDebounce","searchResults","useSelect","select","getEntityRecords","coreStore","suggestions","useMemo","map","term","name","handleChange","termNames","uniqueTerms","reduce","terms","newTerm","some","toLowerCase","push","createElement","Fragment","FormTokenField","className","value","onInputChange","maxSuggestions","label","__","tokenizeOnBlur"],"sources":["@wordpress/patterns/src/components/category-selector.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { FormTokenField } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDebounce } from '@wordpress/compose';\nimport { decodeEntities } from '@wordpress/html-entities';\n\nconst unescapeString = ( arg ) => {\n\treturn decodeEntities( arg );\n};\n\nconst EMPTY_ARRAY = [];\nconst MAX_TERMS_SUGGESTIONS = 20;\nconst DEFAULT_QUERY = {\n\tper_page: MAX_TERMS_SUGGESTIONS,\n\t_fields: 'id,name',\n\tcontext: 'view',\n};\nexport const CATEGORY_SLUG = 'wp_pattern_category';\n\nexport default function CategorySelector( { values, onChange } ) {\n\tconst [ search, setSearch ] = useState( '' );\n\tconst debouncedSearch = useDebounce( setSearch, 500 );\n\n\tconst { searchResults } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\tsearchResults: !! search\n\t\t\t\t\t? getEntityRecords( 'taxonomy', CATEGORY_SLUG, {\n\t\t\t\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\t\t\t\tsearch,\n\t\t\t\t\t } )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t};\n\t\t},\n\t\t[ search ]\n\t);\n\n\tconst suggestions = useMemo( () => {\n\t\treturn ( searchResults ?? [] ).map( ( term ) =>\n\t\t\tunescapeString( term.name )\n\t\t);\n\t}, [ searchResults ] );\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<>\n\t\t\t<FormTokenField\n\t\t\t\tclassName=\"patterns-menu-items__convert-modal-categories\"\n\t\t\t\tvalue={ values }\n\t\t\t\tsuggestions={ suggestions }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tonInputChange={ debouncedSearch }\n\t\t\t\tmaxSuggestions={ MAX_TERMS_SUGGESTIONS }\n\t\t\t\tlabel={ __( 'Categories' ) }\n\t\t\t\ttokenizeOnBlur={ true }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],"mappings":";;;;;;;AAIA,IAAAA,QAAA,GAAAC,OAAA;AADA,IAAAC,KAAA,GAAAD,OAAA;AAEA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AATA;AACA;AACA;;AASA,MAAMO,cAAc,GAAKC,GAAG,IAAM;EACjC,OAAO,IAAAC,4BAAc,EAAED,GAAI,CAAC;AAC7B,CAAC;AAED,MAAME,WAAW,GAAG,EAAE;AACtB,MAAMC,qBAAqB,GAAG,EAAE;AAChC,MAAMC,aAAa,GAAG;EACrBC,QAAQ,EAAEF,qBAAqB;EAC/BG,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE;AACV,CAAC;AACM,MAAMC,aAAa,GAAG,qBAAqB;AAACC,OAAA,CAAAD,aAAA,GAAAA,aAAA;AAEpC,SAASE,gBAAgBA,CAAE;EAAEC,MAAM;EAAEC;AAAS,CAAC,EAAG;EAChE,MAAM,CAAEC,MAAM,EAAEC,SAAS,CAAE,GAAG,IAAAC,iBAAQ,EAAE,EAAG,CAAC;EAC5C,MAAMC,eAAe,GAAG,IAAAC,oBAAW,EAAEH,SAAS,EAAE,GAAI,CAAC;EAErD,MAAM;IAAEI;EAAc,CAAC,GAAG,IAAAC,eAAS,EAChCC,MAAM,IAAM;IACb,MAAM;MAAEC;IAAiB,CAAC,GAAGD,MAAM,CAAEE,eAAU,CAAC;IAEhD,OAAO;MACNJ,aAAa,EAAE,CAAC,CAAEL,MAAM,GACrBQ,gBAAgB,CAAE,UAAU,EAAEb,aAAa,EAAE;QAC7C,GAAGJ,aAAa;QAChBS;MACA,CAAE,CAAC,GACHX;IACJ,CAAC;EACF,CAAC,EACD,CAAEW,MAAM,CACT,CAAC;EAED,MAAMU,WAAW,GAAG,IAAAC,gBAAO,EAAE,MAAM;IAClC,OAAO,CAAEN,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAI,EAAE,EAAGO,GAAG,CAAIC,IAAI,IACzC3B,cAAc,CAAE2B,IAAI,CAACC,IAAK,CAC3B,CAAC;EACF,CAAC,EAAE,CAAET,aAAa,CAAG,CAAC;EAEtB,SAASU,YAAYA,CAAEC,SAAS,EAAG;IAClC,MAAMC,WAAW,GAAGD,SAAS,CAACE,MAAM,CAAE,CAAEC,KAAK,EAAEC,OAAO,KAAM;MAC3D,IACC,CAAED,KAAK,CAACE,IAAI,CACTR,IAAI,IAAMA,IAAI,CAACS,WAAW,CAAC,CAAC,KAAKF,OAAO,CAACE,WAAW,CAAC,CACxD,CAAC,EACA;QACDH,KAAK,CAACI,IAAI,CAAEH,OAAQ,CAAC;MACtB;MACA,OAAOD,KAAK;IACb,CAAC,EAAE,EAAG,CAAC;IAEPpB,QAAQ,CAAEkB,WAAY,CAAC;EACxB;EAEA,OACC,IAAAvC,QAAA,CAAA8C,aAAA,EAAA9C,QAAA,CAAA+C,QAAA,QACC,IAAA/C,QAAA,CAAA8C,aAAA,EAAC3C,WAAA,CAAA6C,cAAc;IACdC,SAAS,EAAC,+CAA+C;IACzDC,KAAK,EAAG9B,MAAQ;IAChBY,WAAW,EAAGA,WAAa;IAC3BX,QAAQ,EAAGgB,YAAc;IACzBc,aAAa,EAAG1B,eAAiB;IACjC2B,cAAc,EAAGxC,qBAAuB;IACxCyC,KAAK,EAAG,IAAAC,QAAE,EAAE,YAAa,CAAG;IAC5BC,cAAc,EAAG;EAAM,CACvB,CACA,CAAC;AAEL"}
|
|
@@ -3,50 +3,63 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.USER_PATTERN_CATEGORY = exports.SYNC_TYPES = void 0;
|
|
7
6
|
exports.default = CreatePatternModal;
|
|
8
7
|
var _element = require("@wordpress/element");
|
|
9
8
|
var _components = require("@wordpress/components");
|
|
10
9
|
var _i18n = require("@wordpress/i18n");
|
|
11
10
|
var _data = require("@wordpress/data");
|
|
12
11
|
var _notices = require("@wordpress/notices");
|
|
12
|
+
var _coreData = require("@wordpress/core-data");
|
|
13
|
+
var _constants = require("../constants");
|
|
13
14
|
var _store = require("../store");
|
|
15
|
+
var _categorySelector = _interopRequireWildcard(require("./category-selector"));
|
|
16
|
+
var _lockUnlock = require("../lock-unlock");
|
|
17
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
18
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
19
|
/**
|
|
15
20
|
* WordPress dependencies
|
|
16
21
|
*/
|
|
17
22
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
full: undefined,
|
|
22
|
-
unsynced: 'unsynced'
|
|
23
|
-
};
|
|
23
|
+
/**
|
|
24
|
+
* Internal dependencies
|
|
25
|
+
*/
|
|
24
26
|
|
|
25
27
|
/**
|
|
26
28
|
* Internal dependencies
|
|
27
29
|
*/
|
|
28
|
-
|
|
30
|
+
|
|
29
31
|
function CreatePatternModal({
|
|
30
32
|
onSuccess,
|
|
31
33
|
onError,
|
|
32
|
-
|
|
34
|
+
content,
|
|
33
35
|
onClose,
|
|
34
36
|
className = 'patterns-menu-items__convert-modal'
|
|
35
37
|
}) {
|
|
36
|
-
const [syncType, setSyncType] = (0, _element.useState)(
|
|
38
|
+
const [syncType, setSyncType] = (0, _element.useState)(_constants.PATTERN_SYNC_TYPES.full);
|
|
39
|
+
const [categoryTerms, setCategoryTerms] = (0, _element.useState)([]);
|
|
37
40
|
const [title, setTitle] = (0, _element.useState)('');
|
|
41
|
+
const [isSaving, setIsSaving] = (0, _element.useState)(false);
|
|
38
42
|
const {
|
|
39
|
-
|
|
40
|
-
} = (0, _data.useDispatch)(_store.store);
|
|
43
|
+
createPattern
|
|
44
|
+
} = (0, _lockUnlock.unlock)((0, _data.useDispatch)(_store.store));
|
|
45
|
+
const {
|
|
46
|
+
saveEntityRecord,
|
|
47
|
+
invalidateResolution
|
|
48
|
+
} = (0, _data.useDispatch)(_coreData.store);
|
|
41
49
|
const {
|
|
42
50
|
createErrorNotice
|
|
43
51
|
} = (0, _data.useDispatch)(_notices.store);
|
|
44
|
-
|
|
52
|
+
async function onCreate(patternTitle, sync) {
|
|
53
|
+
if (!title || isSaving) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
45
56
|
try {
|
|
46
|
-
|
|
57
|
+
setIsSaving(true);
|
|
58
|
+
const categories = await Promise.all(categoryTerms.map(termName => findOrCreateTerm(termName)));
|
|
59
|
+
const newPattern = await createPattern(patternTitle, sync, typeof content === 'function' ? content() : content, categories);
|
|
47
60
|
onSuccess({
|
|
48
61
|
pattern: newPattern,
|
|
49
|
-
categoryId:
|
|
62
|
+
categoryId: _constants.PATTERN_DEFAULT_CATEGORY
|
|
50
63
|
});
|
|
51
64
|
} catch (error) {
|
|
52
65
|
createErrorNotice(error.message, {
|
|
@@ -54,8 +67,33 @@ function CreatePatternModal({
|
|
|
54
67
|
id: 'convert-to-pattern-error'
|
|
55
68
|
});
|
|
56
69
|
onError();
|
|
70
|
+
} finally {
|
|
71
|
+
setIsSaving(false);
|
|
72
|
+
setCategoryTerms([]);
|
|
73
|
+
setTitle('');
|
|
57
74
|
}
|
|
58
|
-
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @param {string} term
|
|
79
|
+
* @return {Promise<number>} The pattern category id.
|
|
80
|
+
*/
|
|
81
|
+
async function findOrCreateTerm(term) {
|
|
82
|
+
try {
|
|
83
|
+
const newTerm = await saveEntityRecord('taxonomy', _categorySelector.CATEGORY_SLUG, {
|
|
84
|
+
name: term
|
|
85
|
+
}, {
|
|
86
|
+
throwOnError: true
|
|
87
|
+
});
|
|
88
|
+
invalidateResolution('getUserPatternCategories');
|
|
89
|
+
return newTerm.id;
|
|
90
|
+
} catch (error) {
|
|
91
|
+
if (error.code !== 'term_exists') {
|
|
92
|
+
throw error;
|
|
93
|
+
}
|
|
94
|
+
return error.data.term_id;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
59
97
|
return (0, _element.createElement)(_components.Modal, {
|
|
60
98
|
title: (0, _i18n.__)('Create pattern'),
|
|
61
99
|
onRequestClose: () => {
|
|
@@ -67,7 +105,6 @@ function CreatePatternModal({
|
|
|
67
105
|
onSubmit: event => {
|
|
68
106
|
event.preventDefault();
|
|
69
107
|
onCreate(title, syncType);
|
|
70
|
-
setTitle('');
|
|
71
108
|
}
|
|
72
109
|
}, (0, _element.createElement)(_components.__experimentalVStack, {
|
|
73
110
|
spacing: "5"
|
|
@@ -76,13 +113,17 @@ function CreatePatternModal({
|
|
|
76
113
|
label: (0, _i18n.__)('Name'),
|
|
77
114
|
value: title,
|
|
78
115
|
onChange: setTitle,
|
|
79
|
-
placeholder: (0, _i18n.__)('My pattern')
|
|
116
|
+
placeholder: (0, _i18n.__)('My pattern'),
|
|
117
|
+
className: "patterns-create-modal__name-input"
|
|
118
|
+
}), (0, _element.createElement)(_categorySelector.default, {
|
|
119
|
+
values: categoryTerms,
|
|
120
|
+
onChange: setCategoryTerms
|
|
80
121
|
}), (0, _element.createElement)(_components.ToggleControl, {
|
|
81
122
|
label: (0, _i18n.__)('Synced'),
|
|
82
123
|
help: (0, _i18n.__)('Editing the pattern will update it anywhere it is used.'),
|
|
83
|
-
checked:
|
|
124
|
+
checked: syncType === _constants.PATTERN_SYNC_TYPES.full,
|
|
84
125
|
onChange: () => {
|
|
85
|
-
setSyncType(syncType ===
|
|
126
|
+
setSyncType(syncType === _constants.PATTERN_SYNC_TYPES.full ? _constants.PATTERN_SYNC_TYPES.unsynced : _constants.PATTERN_SYNC_TYPES.full);
|
|
86
127
|
}
|
|
87
128
|
}), (0, _element.createElement)(_components.__experimentalHStack, {
|
|
88
129
|
justify: "right"
|
|
@@ -94,7 +135,9 @@ function CreatePatternModal({
|
|
|
94
135
|
}
|
|
95
136
|
}, (0, _i18n.__)('Cancel')), (0, _element.createElement)(_components.Button, {
|
|
96
137
|
variant: "primary",
|
|
97
|
-
type: "submit"
|
|
138
|
+
type: "submit",
|
|
139
|
+
"aria-disabled": !title || isSaving,
|
|
140
|
+
isBusy: isSaving
|
|
98
141
|
}, (0, _i18n.__)('Create'))))));
|
|
99
142
|
}
|
|
100
143
|
//# sourceMappingURL=create-pattern-modal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_components","_i18n","_data","_notices","_store","USER_PATTERN_CATEGORY","exports","SYNC_TYPES","full","undefined","unsynced","CreatePatternModal","onSuccess","onError","clientIds","onClose","className","syncType","setSyncType","useState","title","setTitle","__experimentalCreatePattern","createPattern","useDispatch","store","createErrorNotice","noticesStore","onCreate","useCallback","patternTitle","sync","newPattern","pattern","categoryId","error","message","type","id","createElement","Modal","__","onRequestClose","overlayClassName","onSubmit","event","preventDefault","__experimentalVStack","spacing","TextControl","__nextHasNoMarginBottom","label","value","onChange","placeholder","ToggleControl","help","checked","__experimentalHStack","justify","Button","variant","onClick"],"sources":["@wordpress/patterns/src/components/create-pattern-modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tModal,\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tToggleControl,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState, useCallback } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\n\nexport const USER_PATTERN_CATEGORY = 'my-patterns';\n\nexport const SYNC_TYPES = {\n\tfull: undefined,\n\tunsynced: 'unsynced',\n};\n\n/**\n * Internal dependencies\n */\nimport { store } from '../store';\n\nexport default function CreatePatternModal( {\n\tonSuccess,\n\tonError,\n\tclientIds,\n\tonClose,\n\tclassName = 'patterns-menu-items__convert-modal',\n} ) {\n\tconst [ syncType, setSyncType ] = useState( SYNC_TYPES.full );\n\tconst [ title, setTitle ] = useState( '' );\n\tconst { __experimentalCreatePattern: createPattern } = useDispatch( store );\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onCreate = useCallback(\n\t\tasync function ( patternTitle, sync ) {\n\t\t\ttry {\n\t\t\t\tconst newPattern = await createPattern(\n\t\t\t\t\tpatternTitle,\n\t\t\t\t\tsync,\n\t\t\t\t\tclientIds\n\t\t\t\t);\n\t\t\t\tonSuccess( {\n\t\t\t\t\tpattern: newPattern,\n\t\t\t\t\tcategoryId: USER_PATTERN_CATEGORY,\n\t\t\t\t} );\n\t\t\t} catch ( error ) {\n\t\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'convert-to-pattern-error',\n\t\t\t\t} );\n\t\t\t\tonError();\n\t\t\t}\n\t\t},\n\t\t[ createPattern, clientIds, onSuccess, createErrorNotice, onError ]\n\t);\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Create pattern' ) }\n\t\t\tonRequestClose={ () => {\n\t\t\t\tonClose();\n\t\t\t\tsetTitle( '' );\n\t\t\t} }\n\t\t\toverlayClassName={ className }\n\t\t>\n\t\t\t<form\n\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tonCreate( title, syncType );\n\t\t\t\t\tsetTitle( '' );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\tplaceholder={ __( 'My pattern' ) }\n\t\t\t\t\t/>\n\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Synced' ) }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'Editing the pattern will update it anywhere it is used.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tchecked={ ! syncType }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tsetSyncType(\n\t\t\t\t\t\t\t\tsyncType === SYNC_TYPES.full\n\t\t\t\t\t\t\t\t\t? SYNC_TYPES.unsynced\n\t\t\t\t\t\t\t\t\t: SYNC_TYPES.full\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\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t} }\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\n\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t{ __( 'Create' ) }\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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"}
|
|
1
|
+
{"version":3,"names":["_element","require","_components","_i18n","_data","_notices","_coreData","_constants","_store","_categorySelector","_interopRequireWildcard","_lockUnlock","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","CreatePatternModal","onSuccess","onError","content","onClose","className","syncType","setSyncType","useState","PATTERN_SYNC_TYPES","full","categoryTerms","setCategoryTerms","title","setTitle","isSaving","setIsSaving","createPattern","unlock","useDispatch","patternsStore","saveEntityRecord","invalidateResolution","coreStore","createErrorNotice","noticesStore","onCreate","patternTitle","sync","categories","Promise","all","map","termName","findOrCreateTerm","newPattern","pattern","categoryId","PATTERN_DEFAULT_CATEGORY","error","message","type","id","term","newTerm","CATEGORY_SLUG","name","throwOnError","code","data","term_id","createElement","Modal","__","onRequestClose","overlayClassName","onSubmit","event","preventDefault","__experimentalVStack","spacing","TextControl","__nextHasNoMarginBottom","label","value","onChange","placeholder","values","ToggleControl","help","checked","unsynced","__experimentalHStack","justify","Button","variant","onClick","isBusy"],"sources":["@wordpress/patterns/src/components/create-pattern-modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tModal,\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tToggleControl,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { useDispatch } 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 { PATTERN_DEFAULT_CATEGORY, PATTERN_SYNC_TYPES } from '../constants';\n\n/**\n * Internal dependencies\n */\nimport { store as patternsStore } from '../store';\nimport CategorySelector, { CATEGORY_SLUG } from './category-selector';\nimport { unlock } from '../lock-unlock';\n\nexport default function CreatePatternModal( {\n\tonSuccess,\n\tonError,\n\tcontent,\n\tonClose,\n\tclassName = 'patterns-menu-items__convert-modal',\n} ) {\n\tconst [ syncType, setSyncType ] = useState( PATTERN_SYNC_TYPES.full );\n\tconst [ categoryTerms, setCategoryTerms ] = useState( [] );\n\tconst [ title, setTitle ] = useState( '' );\n\tconst [ isSaving, setIsSaving ] = useState( false );\n\tconst { createPattern } = unlock( useDispatch( patternsStore ) );\n\tconst { saveEntityRecord, invalidateResolution } = useDispatch( coreStore );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\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: 'convert-to-pattern-error',\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\t/**\n\t * @param {string} term\n\t * @return {Promise<number>} The pattern category id.\n\t */\n\tasync function findOrCreateTerm( term ) {\n\t\ttry {\n\t\t\tconst newTerm = await saveEntityRecord(\n\t\t\t\t'taxonomy',\n\t\t\t\tCATEGORY_SLUG,\n\t\t\t\t{ name: term },\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\n\t\t\treturn error.data.term_id;\n\t\t}\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Create pattern' ) }\n\t\t\tonRequestClose={ () => {\n\t\t\t\tonClose();\n\t\t\t\tsetTitle( '' );\n\t\t\t} }\n\t\t\toverlayClassName={ className }\n\t\t>\n\t\t\t<form\n\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tonCreate( title, syncType );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\tplaceholder={ __( 'My pattern' ) }\n\t\t\t\t\t\tclassName=\"patterns-create-modal__name-input\"\n\t\t\t\t\t/>\n\t\t\t\t\t<CategorySelector\n\t\t\t\t\t\tvalues={ categoryTerms }\n\t\t\t\t\t\tonChange={ setCategoryTerms }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Synced' ) }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'Editing the pattern will update it anywhere it is used.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tchecked={ syncType === PATTERN_SYNC_TYPES.full }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tsetSyncType(\n\t\t\t\t\t\t\t\tsyncType === PATTERN_SYNC_TYPES.full\n\t\t\t\t\t\t\t\t\t? PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t\t\t\t\t\t: PATTERN_SYNC_TYPES.full\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\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t} }\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\n\t\t\t\t\t\t<Button\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={ ! title || isSaving }\n\t\t\t\t\t\t\tisBusy={ isSaving }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Create' ) }\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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"}
|
|
@@ -14,7 +14,9 @@ var _data = require("@wordpress/data");
|
|
|
14
14
|
var _coreData = require("@wordpress/core-data");
|
|
15
15
|
var _i18n = require("@wordpress/i18n");
|
|
16
16
|
var _notices = require("@wordpress/notices");
|
|
17
|
+
var _store = require("../store");
|
|
17
18
|
var _createPatternModal = _interopRequireDefault(require("./create-pattern-modal"));
|
|
19
|
+
var _lockUnlock = require("../lock-unlock");
|
|
18
20
|
/**
|
|
19
21
|
* WordPress dependencies
|
|
20
22
|
*/
|
|
@@ -38,6 +40,14 @@ function PatternConvertButton({
|
|
|
38
40
|
const {
|
|
39
41
|
createSuccessNotice
|
|
40
42
|
} = (0, _data.useDispatch)(_notices.store);
|
|
43
|
+
const {
|
|
44
|
+
replaceBlocks
|
|
45
|
+
} = (0, _data.useDispatch)(_blockEditor.store);
|
|
46
|
+
// Ignore reason: false positive of the lint rule.
|
|
47
|
+
// eslint-disable-next-line @wordpress/no-unused-vars-before-return
|
|
48
|
+
const {
|
|
49
|
+
setEditingPattern
|
|
50
|
+
} = (0, _lockUnlock.unlock)((0, _data.useDispatch)(_store.store));
|
|
41
51
|
const [isModalOpen, setIsModalOpen] = (0, _element.useState)(false);
|
|
42
52
|
const canConvert = (0, _data.useSelect)(select => {
|
|
43
53
|
var _getBlocksByClientId;
|
|
@@ -67,12 +77,21 @@ function PatternConvertButton({
|
|
|
67
77
|
!!canUser('create', 'blocks');
|
|
68
78
|
return _canConvert;
|
|
69
79
|
}, [clientIds, rootClientId]);
|
|
80
|
+
const {
|
|
81
|
+
getBlocksByClientId
|
|
82
|
+
} = (0, _data.useSelect)(_blockEditor.store);
|
|
83
|
+
const getContent = (0, _element.useCallback)(() => (0, _blocks.serialize)(getBlocksByClientId(clientIds)), [getBlocksByClientId, clientIds]);
|
|
70
84
|
if (!canConvert) {
|
|
71
85
|
return null;
|
|
72
86
|
}
|
|
73
87
|
const handleSuccess = ({
|
|
74
88
|
pattern
|
|
75
89
|
}) => {
|
|
90
|
+
const newBlock = (0, _blocks.createBlock)('core/block', {
|
|
91
|
+
ref: pattern.id
|
|
92
|
+
});
|
|
93
|
+
replaceBlocks(clientIds, newBlock);
|
|
94
|
+
setEditingPattern(newBlock.clientId, true);
|
|
76
95
|
createSuccessNotice(pattern.wp_pattern_sync_status === 'unsynced' ? (0, _i18n.sprintf)(
|
|
77
96
|
// translators: %s: the name the user has given to the pattern.
|
|
78
97
|
(0, _i18n.__)('Unsynced Pattern created: %s'), pattern.title.raw) : (0, _i18n.sprintf)(
|
|
@@ -89,7 +108,7 @@ function PatternConvertButton({
|
|
|
89
108
|
"aria-expanded": isModalOpen,
|
|
90
109
|
"aria-haspopup": "dialog"
|
|
91
110
|
}, (0, _i18n.__)('Create pattern')), isModalOpen && (0, _element.createElement)(_createPatternModal.default, {
|
|
92
|
-
|
|
111
|
+
content: getContent,
|
|
93
112
|
onSuccess: pattern => {
|
|
94
113
|
handleSuccess(pattern);
|
|
95
114
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_blocks","_blockEditor","_components","_icons","_data","_coreData","_i18n","_notices","_createPatternModal","_interopRequireDefault","PatternConvertButton","clientIds","rootClientId","createSuccessNotice","useDispatch","noticesStore","isModalOpen","setIsModalOpen","useState","canConvert","useSelect","select","_getBlocksByClientId","canUser","coreStore","getBlocksByClientId","canInsertBlockType","getBlockRootClientId","
|
|
1
|
+
{"version":3,"names":["_element","require","_blocks","_blockEditor","_components","_icons","_data","_coreData","_i18n","_notices","_store","_createPatternModal","_interopRequireDefault","_lockUnlock","PatternConvertButton","clientIds","rootClientId","createSuccessNotice","useDispatch","noticesStore","replaceBlocks","blockEditorStore","setEditingPattern","unlock","patternsStore","isModalOpen","setIsModalOpen","useState","canConvert","useSelect","select","_getBlocksByClientId","canUser","coreStore","getBlocksByClientId","canInsertBlockType","getBlockRootClientId","rootId","length","undefined","blocks","isReusable","isReusableBlock","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","hasBlockSupport","name","getContent","useCallback","serialize","handleSuccess","pattern","newBlock","createBlock","id","clientId","wp_pattern_sync_status","sprintf","__","title","raw","type","createElement","Fragment","MenuItem","icon","symbol","onClick","default","content","onSuccess","onError","onClose"],"sources":["@wordpress/patterns/src/components/pattern-convert-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\thasBlockSupport,\n\tisReusableBlock,\n\tcreateBlock,\n\tserialize,\n} from '@wordpress/blocks';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useState, useCallback } from '@wordpress/element';\nimport { MenuItem } from '@wordpress/components';\nimport { symbol } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n/**\n * Internal dependencies\n */\nimport { store as patternsStore } from '../store';\nimport CreatePatternModal from './create-pattern-modal';\nimport { unlock } from '../lock-unlock';\n\n/**\n * Menu control to convert block(s) to a pattern block.\n *\n * @param {Object} props Component props.\n * @param {string[]} props.clientIds Client ids of selected blocks.\n * @param {string} props.rootClientId ID of the currently selected top-level block.\n * @return {import('@wordpress/element').WPComponent} The menu control or null.\n */\nexport default function PatternConvertButton( { clientIds, rootClientId } ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\t// Ignore reason: false positive of the lint rule.\n\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\tconst { setEditingPattern } = unlock( useDispatch( patternsStore ) );\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst canConvert = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst {\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst rootId =\n\t\t\t\trootClientId ||\n\t\t\t\t( clientIds.length > 0\n\t\t\t\t\t? getBlockRootClientId( clientIds[ 0 ] )\n\t\t\t\t\t: undefined );\n\n\t\t\tconst blocks = getBlocksByClientId( clientIds ) ?? [];\n\n\t\t\tconst isReusable =\n\t\t\t\tblocks.length === 1 &&\n\t\t\t\tblocks[ 0 ] &&\n\t\t\t\tisReusableBlock( blocks[ 0 ] ) &&\n\t\t\t\t!! select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblocks[ 0 ].attributes.ref\n\t\t\t\t);\n\n\t\t\tconst _canConvert =\n\t\t\t\t// Hide when this is already a synced pattern.\n\t\t\t\t! isReusable &&\n\t\t\t\t// Hide when patterns are disabled.\n\t\t\t\tcanInsertBlockType( 'core/block', rootId ) &&\n\t\t\t\tblocks.every(\n\t\t\t\t\t( block ) =>\n\t\t\t\t\t\t// Guard against the case where a regular block has *just* been converted.\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\t// Hide on invalid blocks.\n\t\t\t\t\t\tblock.isValid &&\n\t\t\t\t\t\t// Hide when block doesn't support being made into a pattern.\n\t\t\t\t\t\thasBlockSupport( block.name, 'reusable', true )\n\t\t\t\t) &&\n\t\t\t\t// Hide when current doesn't have permission to do that.\n\t\t\t\t!! canUser( 'create', 'blocks' );\n\n\t\t\treturn _canConvert;\n\t\t},\n\t\t[ clientIds, rootClientId ]\n\t);\n\tconst { getBlocksByClientId } = useSelect( blockEditorStore );\n\tconst getContent = useCallback(\n\t\t() => serialize( getBlocksByClientId( clientIds ) ),\n\t\t[ getBlocksByClientId, clientIds ]\n\t);\n\n\tif ( ! canConvert ) {\n\t\treturn null;\n\t}\n\n\tconst handleSuccess = ( { pattern } ) => {\n\t\tconst newBlock = createBlock( 'core/block', {\n\t\t\tref: pattern.id,\n\t\t} );\n\n\t\treplaceBlocks( clientIds, newBlock );\n\t\tsetEditingPattern( newBlock.clientId, true );\n\n\t\tcreateSuccessNotice(\n\t\t\tpattern.wp_pattern_sync_status === 'unsynced'\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t// translators: %s: the name the user has given to the pattern.\n\t\t\t\t\t\t__( 'Unsynced Pattern created: %s' ),\n\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t// translators: %s: the name the user has given to the pattern.\n\t\t\t\t\t\t__( 'Synced Pattern created: %s' ),\n\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t ),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'convert-to-pattern-success',\n\t\t\t}\n\t\t);\n\t\tsetIsModalOpen( false );\n\t};\n\treturn (\n\t\t<>\n\t\t\t<MenuItem\n\t\t\t\ticon={ symbol }\n\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\taria-expanded={ isModalOpen }\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t>\n\t\t\t\t{ __( 'Create pattern' ) }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<CreatePatternModal\n\t\t\t\t\tcontent={ getContent }\n\t\t\t\t\tonSuccess={ ( pattern ) => {\n\t\t\t\t\t\thandleSuccess( pattern );\n\t\t\t\t\t} }\n\t\t\t\t\tonError={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ var _blockEditor = require("@wordpress/block-editor");
|
|
|
13
13
|
var _url = require("@wordpress/url");
|
|
14
14
|
var _coreData = require("@wordpress/core-data");
|
|
15
15
|
var _store = require("../store");
|
|
16
|
+
var _lockUnlock = require("../lock-unlock");
|
|
16
17
|
/**
|
|
17
18
|
* WordPress dependencies
|
|
18
19
|
*/
|
|
@@ -55,16 +56,19 @@ function PatternsManageButton({
|
|
|
55
56
|
})
|
|
56
57
|
};
|
|
57
58
|
}, [clientId]);
|
|
59
|
+
|
|
60
|
+
// Ignore reason: false positive of the lint rule.
|
|
61
|
+
// eslint-disable-next-line @wordpress/no-unused-vars-before-return
|
|
58
62
|
const {
|
|
59
|
-
|
|
60
|
-
} = (0, _data.useDispatch)(_store.store);
|
|
63
|
+
convertSyncedPatternToStatic
|
|
64
|
+
} = (0, _lockUnlock.unlock)((0, _data.useDispatch)(_store.store));
|
|
61
65
|
if (!isVisible) {
|
|
62
66
|
return null;
|
|
63
67
|
}
|
|
64
68
|
return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.MenuItem, {
|
|
65
69
|
href: managePatternsUrl
|
|
66
70
|
}, (0, _i18n.__)('Manage patterns')), canRemove && (0, _element.createElement)(_components.MenuItem, {
|
|
67
|
-
onClick: () =>
|
|
71
|
+
onClick: () => convertSyncedPatternToStatic(clientId)
|
|
68
72
|
}, innerBlockCount > 1 ? (0, _i18n.__)('Detach patterns') : (0, _i18n.__)('Detach pattern')));
|
|
69
73
|
}
|
|
70
74
|
var _default = PatternsManageButton;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_components","require","_i18n","_blocks","_data","_blockEditor","_url","_coreData","_store","PatternsManageButton","clientId","canRemove","isVisible","innerBlockCount","managePatternsUrl","useSelect","select","getBlock","canRemoveBlock","getBlockCount","getSettings","blockEditorStore","canUser","coreStore","reusableBlock","isBlockTheme","__unstableIsBlockBasedTheme","isReusableBlock","attributes","ref","addQueryArgs","path","post_type","
|
|
1
|
+
{"version":3,"names":["_components","require","_i18n","_blocks","_data","_blockEditor","_url","_coreData","_store","_lockUnlock","PatternsManageButton","clientId","canRemove","isVisible","innerBlockCount","managePatternsUrl","useSelect","select","getBlock","canRemoveBlock","getBlockCount","getSettings","blockEditorStore","canUser","coreStore","reusableBlock","isBlockTheme","__unstableIsBlockBasedTheme","isReusableBlock","attributes","ref","addQueryArgs","path","post_type","convertSyncedPatternToStatic","unlock","useDispatch","patternsStore","_element","createElement","Fragment","MenuItem","href","__","onClick","_default","exports","default"],"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 { canRemove, isVisible, innerBlockCount, managePatternsUrl } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst { getBlock, canRemoveBlock, getBlockCount, getSettings } =\n\t\t\t\t\tselect( blockEditorStore );\n\t\t\t\tconst { canUser } = select( coreStore );\n\t\t\t\tconst reusableBlock = getBlock( clientId );\n\t\t\t\tconst isBlockTheme = getSettings().__unstableIsBlockBasedTheme;\n\n\t\t\t\treturn {\n\t\t\t\t\tcanRemove: canRemoveBlock( clientId ),\n\t\t\t\t\tisVisible:\n\t\t\t\t\t\t!! reusableBlock &&\n\t\t\t\t\t\tisReusableBlock( reusableBlock ) &&\n\t\t\t\t\t\t!! canUser(\n\t\t\t\t\t\t\t'update',\n\t\t\t\t\t\t\t'blocks',\n\t\t\t\t\t\t\treusableBlock.attributes.ref\n\t\t\t\t\t\t),\n\t\t\t\t\tinnerBlockCount: getBlockCount( clientId ),\n\t\t\t\t\t// The site editor and templates both check whether the user\n\t\t\t\t\t// has edit_theme_options capabilities. We can leverage that here\n\t\t\t\t\t// and omit the manage patterns link if the user can't access it.\n\t\t\t\t\tmanagePatternsUrl:\n\t\t\t\t\t\tisBlockTheme && canUser( 'read', 'templates' )\n\t\t\t\t\t\t\t? addQueryArgs( 'site-editor.php', {\n\t\t\t\t\t\t\t\t\tpath: '/patterns',\n\t\t\t\t\t\t\t } )\n\t\t\t\t\t\t\t: addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t\t\t } ),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientId ]\n\t\t);\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<MenuItem href={ managePatternsUrl }>\n\t\t\t\t{ __( 'Manage patterns' ) }\n\t\t\t</MenuItem>\n\t\t\t{ canRemove && (\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={ () => convertSyncedPatternToStatic( clientId ) }\n\t\t\t\t>\n\t\t\t\t\t{ innerBlockCount > 1\n\t\t\t\t\t\t? __( 'Detach patterns' )\n\t\t\t\t\t\t: __( 'Detach pattern' ) }\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default PatternsManageButton;\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,IAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AAKA,IAAAO,MAAA,GAAAP,OAAA;AACA,IAAAQ,WAAA,GAAAR,OAAA;AAfA;AACA;AACA;;AASA;AACA;AACA;;AAIA,SAASS,oBAAoBA,CAAE;EAAEC;AAAS,CAAC,EAAG;EAC7C,MAAM;IAAEC,SAAS;IAAEC,SAAS;IAAEC,eAAe;IAAEC;EAAkB,CAAC,GACjE,IAAAC,eAAS,EACNC,MAAM,IAAM;IACb,MAAM;MAAEC,QAAQ;MAAEC,cAAc;MAAEC,aAAa;MAAEC;IAAY,CAAC,GAC7DJ,MAAM,CAAEK,kBAAiB,CAAC;IAC3B,MAAM;MAAEC;IAAQ,CAAC,GAAGN,MAAM,CAAEO,eAAU,CAAC;IACvC,MAAMC,aAAa,GAAGP,QAAQ,CAAEP,QAAS,CAAC;IAC1C,MAAMe,YAAY,GAAGL,WAAW,CAAC,CAAC,CAACM,2BAA2B;IAE9D,OAAO;MACNf,SAAS,EAAEO,cAAc,CAAER,QAAS,CAAC;MACrCE,SAAS,EACR,CAAC,CAAEY,aAAa,IAChB,IAAAG,uBAAe,EAAEH,aAAc,CAAC,IAChC,CAAC,CAAEF,OAAO,CACT,QAAQ,EACR,QAAQ,EACRE,aAAa,CAACI,UAAU,CAACC,GAC1B,CAAC;MACFhB,eAAe,EAAEM,aAAa,CAAET,QAAS,CAAC;MAC1C;MACA;MACA;MACAI,iBAAiB,EAChBW,YAAY,IAAIH,OAAO,CAAE,MAAM,EAAE,WAAY,CAAC,GAC3C,IAAAQ,iBAAY,EAAE,iBAAiB,EAAE;QACjCC,IAAI,EAAE;MACN,CAAE,CAAC,GACH,IAAAD,iBAAY,EAAE,UAAU,EAAE;QAC1BE,SAAS,EAAE;MACX,CAAE;IACP,CAAC;EACF,CAAC,EACD,CAAEtB,QAAQ,CACX,CAAC;;EAEF;EACA;EACA,MAAM;IAAEuB;EAA6B,CAAC,GAAG,IAAAC,kBAAM,EAC9C,IAAAC,iBAAW,EAAEC,YAAc,CAC5B,CAAC;EAED,IAAK,CAAExB,SAAS,EAAG;IAClB,OAAO,IAAI;EACZ;EAEA,OACC,IAAAyB,QAAA,CAAAC,aAAA,EAAAD,QAAA,CAAAE,QAAA,QACC,IAAAF,QAAA,CAAAC,aAAA,EAACvC,WAAA,CAAAyC,QAAQ;IAACC,IAAI,EAAG3B;EAAmB,GACjC,IAAA4B,QAAE,EAAE,iBAAkB,CACf,CAAC,EACT/B,SAAS,IACV,IAAA0B,QAAA,CAAAC,aAAA,EAACvC,WAAA,CAAAyC,QAAQ;IACRG,OAAO,EAAGA,CAAA,KAAMV,4BAA4B,CAAEvB,QAAS;EAAG,GAExDG,eAAe,GAAG,CAAC,GAClB,IAAA6B,QAAE,EAAE,iBAAkB,CAAC,GACvB,IAAAA,QAAE,EAAE,gBAAiB,CACf,CAEV,CAAC;AAEL;AAAC,IAAAE,QAAA,GAEcnC,oBAAoB;AAAAoC,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.PATTERN_USER_CATEGORY = exports.PATTERN_TYPES = exports.PATTERN_SYNC_TYPES = exports.PATTERN_DEFAULT_CATEGORY = exports.PATTERN_CORE_SOURCES = void 0;
|
|
7
|
+
const PATTERN_TYPES = {
|
|
8
|
+
theme: 'pattern',
|
|
9
|
+
user: 'wp_block'
|
|
10
|
+
};
|
|
11
|
+
exports.PATTERN_TYPES = PATTERN_TYPES;
|
|
12
|
+
const PATTERN_DEFAULT_CATEGORY = 'all-patterns';
|
|
13
|
+
exports.PATTERN_DEFAULT_CATEGORY = PATTERN_DEFAULT_CATEGORY;
|
|
14
|
+
const PATTERN_USER_CATEGORY = 'my-patterns';
|
|
15
|
+
exports.PATTERN_USER_CATEGORY = PATTERN_USER_CATEGORY;
|
|
16
|
+
const PATTERN_CORE_SOURCES = ['core', 'pattern-directory/core', 'pattern-directory/featured', 'pattern-directory/theme'];
|
|
17
|
+
exports.PATTERN_CORE_SOURCES = PATTERN_CORE_SOURCES;
|
|
18
|
+
const PATTERN_SYNC_TYPES = {
|
|
19
|
+
full: 'fully',
|
|
20
|
+
unsynced: 'unsynced'
|
|
21
|
+
};
|
|
22
|
+
exports.PATTERN_SYNC_TYPES = PATTERN_SYNC_TYPES;
|
|
23
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["PATTERN_TYPES","theme","user","exports","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","PATTERN_CORE_SOURCES","PATTERN_SYNC_TYPES","full","unsynced"],"sources":["@wordpress/patterns/src/constants.js"],"sourcesContent":["export const PATTERN_TYPES = {\n\ttheme: 'pattern',\n\tuser: 'wp_block',\n};\n\nexport const PATTERN_DEFAULT_CATEGORY = 'all-patterns';\nexport const PATTERN_USER_CATEGORY = 'my-patterns';\nexport const PATTERN_CORE_SOURCES = [\n\t'core',\n\t'pattern-directory/core',\n\t'pattern-directory/featured',\n\t'pattern-directory/theme',\n];\nexport const PATTERN_SYNC_TYPES = {\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n"],"mappings":";;;;;;AAAO,MAAMA,aAAa,GAAG;EAC5BC,KAAK,EAAE,SAAS;EAChBC,IAAI,EAAE;AACP,CAAC;AAACC,OAAA,CAAAH,aAAA,GAAAA,aAAA;AAEK,MAAMI,wBAAwB,GAAG,cAAc;AAACD,OAAA,CAAAC,wBAAA,GAAAA,wBAAA;AAChD,MAAMC,qBAAqB,GAAG,aAAa;AAACF,OAAA,CAAAE,qBAAA,GAAAA,qBAAA;AAC5C,MAAMC,oBAAoB,GAAG,CACnC,MAAM,EACN,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,CACzB;AAACH,OAAA,CAAAG,oBAAA,GAAAA,oBAAA;AACK,MAAMC,kBAAkB,GAAG;EACjCC,IAAI,EAAE,OAAO;EACbC,QAAQ,EAAE;AACX,CAAC;AAACN,OAAA,CAAAI,kBAAA,GAAAA,kBAAA"}
|
package/build/index.js
CHANGED
|
@@ -3,10 +3,20 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
store: true
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "store", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () {
|
|
12
|
+
return _store.store;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
var _store = require("./store");
|
|
7
16
|
var _privateApis = require("./private-apis");
|
|
8
17
|
Object.keys(_privateApis).forEach(function (key) {
|
|
9
18
|
if (key === "default" || key === "__esModule") return;
|
|
19
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
10
20
|
if (key in exports && exports[key] === _privateApis[key]) return;
|
|
11
21
|
Object.defineProperty(exports, key, {
|
|
12
22
|
enumerable: true,
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["require","_privateApis","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["@wordpress/patterns/src/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\
|
|
1
|
+
{"version":3,"names":["_store","require","_privateApis","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get"],"sources":["@wordpress/patterns/src/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nexport { store } from './store';\nexport * from './private-apis';\n"],"mappings":";;;;;;;;;;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,YAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,YAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,YAAA,CAAAI,GAAA;IAAA;EAAA;AAAA"}
|
package/build/private-apis.js
CHANGED
|
@@ -8,6 +8,7 @@ exports.privateApis = void 0;
|
|
|
8
8
|
var _lockUnlock = require("./lock-unlock");
|
|
9
9
|
var _createPatternModal = _interopRequireDefault(require("./components/create-pattern-modal"));
|
|
10
10
|
var _components = _interopRequireDefault(require("./components"));
|
|
11
|
+
var _constants = require("./constants");
|
|
11
12
|
/**
|
|
12
13
|
* Internal dependencies
|
|
13
14
|
*/
|
|
@@ -16,6 +17,11 @@ const privateApis = {};
|
|
|
16
17
|
exports.privateApis = privateApis;
|
|
17
18
|
(0, _lockUnlock.lock)(privateApis, {
|
|
18
19
|
CreatePatternModal: _createPatternModal.default,
|
|
19
|
-
PatternsMenuItems: _components.default
|
|
20
|
+
PatternsMenuItems: _components.default,
|
|
21
|
+
PATTERN_TYPES: _constants.PATTERN_TYPES,
|
|
22
|
+
PATTERN_DEFAULT_CATEGORY: _constants.PATTERN_DEFAULT_CATEGORY,
|
|
23
|
+
PATTERN_USER_CATEGORY: _constants.PATTERN_USER_CATEGORY,
|
|
24
|
+
PATTERN_CORE_SOURCES: _constants.PATTERN_CORE_SOURCES,
|
|
25
|
+
PATTERN_SYNC_TYPES: _constants.PATTERN_SYNC_TYPES
|
|
20
26
|
});
|
|
21
27
|
//# sourceMappingURL=private-apis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lockUnlock","require","_createPatternModal","_interopRequireDefault","_components","privateApis","exports","lock","CreatePatternModal","PatternsMenuItems"],"sources":["@wordpress/patterns/src/private-apis.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport { lock } from './lock-unlock';\nimport CreatePatternModal from './components/create-pattern-modal';\nimport PatternsMenuItems from './components';\n\nexport const privateApis = {};\nlock( privateApis, {\n\tCreatePatternModal,\n\tPatternsMenuItems,\n} );\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,WAAA,GAAAD,sBAAA,CAAAF,OAAA;
|
|
1
|
+
{"version":3,"names":["_lockUnlock","require","_createPatternModal","_interopRequireDefault","_components","_constants","privateApis","exports","lock","CreatePatternModal","PatternsMenuItems","PATTERN_TYPES","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","PATTERN_CORE_SOURCES","PATTERN_SYNC_TYPES"],"sources":["@wordpress/patterns/src/private-apis.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport { lock } from './lock-unlock';\nimport CreatePatternModal from './components/create-pattern-modal';\nimport PatternsMenuItems from './components';\nimport {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tPATTERN_CORE_SOURCES,\n\tPATTERN_SYNC_TYPES,\n} from './constants';\n\nexport const privateApis = {};\nlock( privateApis, {\n\tCreatePatternModal,\n\tPatternsMenuItems,\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tPATTERN_CORE_SOURCES,\n\tPATTERN_SYNC_TYPES,\n} );\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,WAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AANA;AACA;AACA;;AAYO,MAAMK,WAAW,GAAG,CAAC,CAAC;AAACC,OAAA,CAAAD,WAAA,GAAAA,WAAA;AAC9B,IAAAE,gBAAI,EAAEF,WAAW,EAAE;EAClBG,kBAAkB,EAAlBA,2BAAkB;EAClBC,iBAAiB,EAAjBA,mBAAiB;EACjBC,aAAa,EAAbA,wBAAa;EACbC,wBAAwB,EAAxBA,mCAAwB;EACxBC,qBAAqB,EAArBA,gCAAqB;EACrBC,oBAAoB,EAApBA,+BAAoB;EACpBC,kBAAkB,EAAlBA;AACD,CAAE,CAAC"}
|