@wordpress/block-editor 12.3.2 → 12.3.4
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/components/block-mobile-toolbar/block-actions-menu.native.js +3 -6
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-removal-warning-modal/index.js +1 -1
- package/build/components/block-removal-warning-modal/index.js.map +1 -1
- package/build/components/global-styles/filters-panel.js +1 -1
- package/build/components/global-styles/filters-panel.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/patterns-list.js +2 -2
- package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
- package/build/components/inserter/block-patterns-tab.js +7 -35
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/hooks/use-block-types-state.js +3 -4
- package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build/components/inserter/hooks/use-patterns-state.js +9 -3
- package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build/components/inserter/reusable-blocks-tab.js +1 -1
- package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
- package/build/store/selectors.js +31 -15
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +4 -6
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build-module/components/block-removal-warning-modal/index.js +2 -2
- package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
- package/build-module/components/global-styles/filters-panel.js +2 -2
- package/build-module/components/global-styles/filters-panel.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +2 -2
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab.js +7 -33
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/hooks/use-block-types-state.js +3 -4
- package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build-module/components/inserter/hooks/use-patterns-state.js +9 -3
- package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build-module/components/inserter/reusable-blocks-tab.js +1 -1
- package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
- package/build-module/store/selectors.js +31 -15
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/content-rtl.css +3 -0
- package/build-style/content.css +3 -0
- package/build-style/style-rtl.css +1 -2
- package/build-style/style.css +1 -2
- package/package.json +9 -9
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +4 -8
- package/src/components/block-removal-warning-modal/index.js +4 -6
- package/src/components/default-block-appender/content.scss +11 -0
- package/src/components/global-styles/filters-panel.js +2 -2
- package/src/components/inserter/block-patterns-explorer/patterns-list.js +8 -2
- package/src/components/inserter/block-patterns-tab.js +8 -56
- package/src/components/inserter/hooks/use-block-types-state.js +3 -4
- package/src/components/inserter/hooks/use-patterns-state.js +35 -19
- package/src/components/inserter/reusable-blocks-tab.js +1 -1
- package/src/components/list-view/style.scss +1 -2
- package/src/store/selectors.js +51 -20
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { useCallback } from '@wordpress/element';
|
|
4
|
+
import { useCallback, useMemo } from '@wordpress/element';
|
|
5
5
|
import { cloneBlock } from '@wordpress/blocks';
|
|
6
6
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
7
7
|
import { __, sprintf } from '@wordpress/i18n';
|
|
@@ -11,6 +11,11 @@ import { store as noticesStore } from '@wordpress/notices';
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import { store as blockEditorStore } from '../../../store';
|
|
14
|
+
const CUSTOM_CATEGORY = {
|
|
15
|
+
name: 'custom',
|
|
16
|
+
label: __('My patterns'),
|
|
17
|
+
description: __('Custom patterns add by site users')
|
|
18
|
+
};
|
|
14
19
|
/**
|
|
15
20
|
* Retrieves the block patterns inserter state.
|
|
16
21
|
*
|
|
@@ -34,6 +39,7 @@ const usePatternsState = (onInsert, rootClientId) => {
|
|
|
34
39
|
patternCategories: getSettings().__experimentalBlockPatternCategories
|
|
35
40
|
};
|
|
36
41
|
}, [rootClientId]);
|
|
42
|
+
const allCategories = useMemo(() => [...patternCategories, CUSTOM_CATEGORY], [patternCategories]);
|
|
37
43
|
const {
|
|
38
44
|
createSuccessNotice
|
|
39
45
|
} = useDispatch(noticesStore);
|
|
@@ -44,8 +50,8 @@ const usePatternsState = (onInsert, rootClientId) => {
|
|
|
44
50
|
__('Block pattern "%s" inserted.'), pattern.title), {
|
|
45
51
|
type: 'snackbar'
|
|
46
52
|
});
|
|
47
|
-
}, []);
|
|
48
|
-
return [patterns,
|
|
53
|
+
}, [createSuccessNotice, onInsert]);
|
|
54
|
+
return [patterns, allCategories, onClickPattern];
|
|
49
55
|
};
|
|
50
56
|
|
|
51
57
|
export default usePatternsState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-patterns-state.js"],"names":["useCallback","cloneBlock","useDispatch","useSelect","__","sprintf","store","noticesStore","blockEditorStore","usePatternsState","onInsert","rootClientId","patternCategories","patterns","select","__experimentalGetAllowedPatterns","getSettings","__experimentalBlockPatternCategories","createSuccessNotice","onClickPattern","pattern","blocks","map","block","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-patterns-state.js"],"names":["useCallback","useMemo","cloneBlock","useDispatch","useSelect","__","sprintf","store","noticesStore","blockEditorStore","CUSTOM_CATEGORY","name","label","description","usePatternsState","onInsert","rootClientId","patternCategories","patterns","select","__experimentalGetAllowedPatterns","getSettings","__experimentalBlockPatternCategories","allCategories","createSuccessNotice","onClickPattern","pattern","blocks","map","block","title","type"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAT,EAAsBC,OAAtB,QAAqC,oBAArC;AACA,SAASC,UAAT,QAA2B,mBAA3B;AACA,SAASC,WAAT,EAAsBC,SAAtB,QAAuC,iBAAvC;AACA,SAASC,EAAT,EAAaC,OAAb,QAA4B,iBAA5B;AACA,SAASC,KAAK,IAAIC,YAAlB,QAAsC,oBAAtC;AAEA;AACA;AACA;;AACA,SAASD,KAAK,IAAIE,gBAAlB,QAA0C,gBAA1C;AAEA,MAAMC,eAAe,GAAG;AACvBC,EAAAA,IAAI,EAAE,QADiB;AAEvBC,EAAAA,KAAK,EAAEP,EAAE,CAAE,aAAF,CAFc;AAGvBQ,EAAAA,WAAW,EAAER,EAAE,CAAE,mCAAF;AAHQ,CAAxB;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMS,gBAAgB,GAAG,CAAEC,QAAF,EAAYC,YAAZ,KAA8B;AACtD,QAAM;AAAEC,IAAAA,iBAAF;AAAqBC,IAAAA;AAArB,MAAkCd,SAAS,CAC9Ce,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA,gCAAF;AAAoCC,MAAAA;AAApC,QACLF,MAAM,CAAEV,gBAAF,CADP;AAGA,WAAO;AACNS,MAAAA,QAAQ,EAAEE,gCAAgC,CAAEJ,YAAF,CADpC;AAENC,MAAAA,iBAAiB,EAChBI,WAAW,GAAGC;AAHT,KAAP;AAKA,GAV+C,EAWhD,CAAEN,YAAF,CAXgD,CAAjD;AAcA,QAAMO,aAAa,GAAGtB,OAAO,CAC5B,MAAM,CAAE,GAAGgB,iBAAL,EAAwBP,eAAxB,CADsB,EAE5B,CAAEO,iBAAF,CAF4B,CAA7B;AAKA,QAAM;AAAEO,IAAAA;AAAF,MAA0BrB,WAAW,CAAEK,YAAF,CAA3C;AACA,QAAMiB,cAAc,GAAGzB,WAAW,CACjC,CAAE0B,OAAF,EAAWC,MAAX,KAAuB;AACtBZ,IAAAA,QAAQ,CACP,CAAEY,MAAF,aAAEA,MAAF,cAAEA,MAAF,GAAY,EAAZ,EAAiBC,GAAjB,CAAwBC,KAAF,IAAa3B,UAAU,CAAE2B,KAAF,CAA7C,CADO,EAEPH,OAAO,CAACf,IAFD,CAAR;AAIAa,IAAAA,mBAAmB,CAClBlB,OAAO;AACN;AACAD,IAAAA,EAAE,CAAE,8BAAF,CAFI,EAGNqB,OAAO,CAACI,KAHF,CADW,EAMlB;AACCC,MAAAA,IAAI,EAAE;AADP,KANkB,CAAnB;AAUA,GAhBgC,EAiBjC,CAAEP,mBAAF,EAAuBT,QAAvB,CAjBiC,CAAlC;AAoBA,SAAO,CAAEG,QAAF,EAAYK,aAAZ,EAA2BE,cAA3B,CAAP;AACA,CA1CD;;AA4CA,eAAeX,gBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { cloneBlock } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\n\nconst CUSTOM_CATEGORY = {\n\tname: 'custom',\n\tlabel: __( 'My patterns' ),\n\tdescription: __( 'Custom patterns add by site users' ),\n};\n\n/**\n * Retrieves the block patterns inserter state.\n *\n * @param {Function} onInsert function called when inserter a list of blocks.\n * @param {string=} rootClientId Insertion's root client ID.\n *\n * @return {Array} Returns the patterns state. (patterns, categories, onSelect handler)\n */\nconst usePatternsState = ( onInsert, rootClientId ) => {\n\tconst { patternCategories, patterns } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalGetAllowedPatterns, getSettings } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tpatterns: __experimentalGetAllowedPatterns( rootClientId ),\n\t\t\t\tpatternCategories:\n\t\t\t\t\tgetSettings().__experimentalBlockPatternCategories,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\tconst allCategories = useMemo(\n\t\t() => [ ...patternCategories, CUSTOM_CATEGORY ],\n\t\t[ patternCategories ]\n\t);\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst onClickPattern = useCallback(\n\t\t( pattern, blocks ) => {\n\t\t\tonInsert(\n\t\t\t\t( blocks ?? [] ).map( ( block ) => cloneBlock( block ) ),\n\t\t\t\tpattern.name\n\t\t\t);\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: block pattern title. */\n\t\t\t\t\t__( 'Block pattern \"%s\" inserted.' ),\n\t\t\t\t\tpattern.title\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\t\t[ createSuccessNotice, onInsert ]\n\t);\n\n\treturn [ patterns, allCategories, onClickPattern ];\n};\n\nexport default usePatternsState;\n"]}
|
|
@@ -71,7 +71,7 @@ export function ReusableBlocksTab({
|
|
|
71
71
|
href: addQueryArgs('edit.php', {
|
|
72
72
|
post_type: 'wp_block'
|
|
73
73
|
})
|
|
74
|
-
}, __('Manage
|
|
74
|
+
}, __('Manage my patterns'))));
|
|
75
75
|
}
|
|
76
76
|
export default ReusableBlocksTab;
|
|
77
77
|
//# sourceMappingURL=reusable-blocks-tab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/reusable-blocks-tab.js"],"names":["useMemo","__","addQueryArgs","Button","BlockTypesList","InserterPanel","InserterNoResults","useBlockTypesState","ReusableBlocksList","onHover","onInsert","rootClientId","items","onSelectItem","filteredItems","filter","category","length","ReusableBlocksTab","post_type"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,OAAT,QAAwB,oBAAxB;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,YAAT,QAA6B,gBAA7B;AACA,SAASC,MAAT,QAAuB,uBAAvB;AAEA;AACA;AACA;;AACA,OAAOC,cAAP,MAA2B,qBAA3B;AACA,OAAOC,aAAP,MAA0B,SAA1B;AACA,OAAOC,iBAAP,MAA8B,cAA9B;AACA,OAAOC,kBAAP,MAA+B,+BAA/B;;AAEA,SAASC,kBAAT,CAA6B;AAAEC,EAAAA,OAAF;AAAWC,EAAAA,QAAX;AAAqBC,EAAAA;AAArB,CAA7B,EAAmE;AAClE,QAAM,CAAEC,KAAF,IAAaC,YAAb,IAA8BN,kBAAkB,CACrDI,YADqD,EAErDD,QAFqD,CAAtD;AAKA,QAAMI,aAAa,GAAGd,OAAO,CAAE,MAAM;AACpC,WAAOY,KAAK,CAACG,MAAN,CAAc,CAAE;AAAEC,MAAAA;AAAF,KAAF,KAAoBA,QAAQ,KAAK,UAA/C,CAAP;AACA,GAF4B,EAE1B,CAAEJ,KAAF,CAF0B,CAA7B;;AAIA,MAAKE,aAAa,CAACG,MAAd,KAAyB,CAA9B,EAAkC;AACjC,WAAO,cAAC,iBAAD,OAAP;AACA;;AAED,SACC,cAAC,aAAD;AAAe,IAAA,KAAK,EAAGhB,EAAE,CAAE,iBAAF;AAAzB,KACC,cAAC,cAAD;AACC,IAAA,KAAK,EAAGa,aADT;AAEC,IAAA,QAAQ,EAAGD,YAFZ;AAGC,IAAA,OAAO,EAAGJ,OAHX;AAIC,IAAA,KAAK,EAAGR,EAAE,CAAE,iBAAF;AAJX,IADD,CADD;AAUA,C,CAED;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,OAAO,SAASiB,iBAAT,CAA4B;AAAEP,EAAAA,YAAF;AAAgBD,EAAAA,QAAhB;AAA0BD,EAAAA;AAA1B,CAA5B,EAAkE;AACxE,SACC,8BACC,cAAC,kBAAD;AACC,IAAA,OAAO,EAAGA,OADX;AAEC,IAAA,QAAQ,EAAGC,QAFZ;AAGC,IAAA,YAAY,EAAGC;AAHhB,IADD,EAMC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,+CADX;AAEC,IAAA,OAAO,EAAC,WAFT;AAGC,IAAA,IAAI,EAAGT,YAAY,CAAE,UAAF,EAAc;AAChCiB,MAAAA,SAAS,EAAE;AADqB,KAAd;AAHpB,KAOGlB,EAAE,CAAE,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/reusable-blocks-tab.js"],"names":["useMemo","__","addQueryArgs","Button","BlockTypesList","InserterPanel","InserterNoResults","useBlockTypesState","ReusableBlocksList","onHover","onInsert","rootClientId","items","onSelectItem","filteredItems","filter","category","length","ReusableBlocksTab","post_type"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,OAAT,QAAwB,oBAAxB;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,YAAT,QAA6B,gBAA7B;AACA,SAASC,MAAT,QAAuB,uBAAvB;AAEA;AACA;AACA;;AACA,OAAOC,cAAP,MAA2B,qBAA3B;AACA,OAAOC,aAAP,MAA0B,SAA1B;AACA,OAAOC,iBAAP,MAA8B,cAA9B;AACA,OAAOC,kBAAP,MAA+B,+BAA/B;;AAEA,SAASC,kBAAT,CAA6B;AAAEC,EAAAA,OAAF;AAAWC,EAAAA,QAAX;AAAqBC,EAAAA;AAArB,CAA7B,EAAmE;AAClE,QAAM,CAAEC,KAAF,IAAaC,YAAb,IAA8BN,kBAAkB,CACrDI,YADqD,EAErDD,QAFqD,CAAtD;AAKA,QAAMI,aAAa,GAAGd,OAAO,CAAE,MAAM;AACpC,WAAOY,KAAK,CAACG,MAAN,CAAc,CAAE;AAAEC,MAAAA;AAAF,KAAF,KAAoBA,QAAQ,KAAK,UAA/C,CAAP;AACA,GAF4B,EAE1B,CAAEJ,KAAF,CAF0B,CAA7B;;AAIA,MAAKE,aAAa,CAACG,MAAd,KAAyB,CAA9B,EAAkC;AACjC,WAAO,cAAC,iBAAD,OAAP;AACA;;AAED,SACC,cAAC,aAAD;AAAe,IAAA,KAAK,EAAGhB,EAAE,CAAE,iBAAF;AAAzB,KACC,cAAC,cAAD;AACC,IAAA,KAAK,EAAGa,aADT;AAEC,IAAA,QAAQ,EAAGD,YAFZ;AAGC,IAAA,OAAO,EAAGJ,OAHX;AAIC,IAAA,KAAK,EAAGR,EAAE,CAAE,iBAAF;AAJX,IADD,CADD;AAUA,C,CAED;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,OAAO,SAASiB,iBAAT,CAA4B;AAAEP,EAAAA,YAAF;AAAgBD,EAAAA,QAAhB;AAA0BD,EAAAA;AAA1B,CAA5B,EAAkE;AACxE,SACC,8BACC,cAAC,kBAAD;AACC,IAAA,OAAO,EAAGA,OADX;AAEC,IAAA,QAAQ,EAAGC,QAFZ;AAGC,IAAA,YAAY,EAAGC;AAHhB,IADD,EAMC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,+CADX;AAEC,IAAA,OAAO,EAAC,WAFT;AAGC,IAAA,IAAI,EAAGT,YAAY,CAAE,UAAF,EAAc;AAChCiB,MAAAA,SAAS,EAAE;AADqB,KAAd;AAHpB,KAOGlB,EAAE,CAAE,oBAAF,CAPL,CADD,CAND,CADD;AAoBA;AAED,eAAeiB,iBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { addQueryArgs } from '@wordpress/url';\nimport { Button } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockTypesList from '../block-types-list';\nimport InserterPanel from './panel';\nimport InserterNoResults from './no-results';\nimport useBlockTypesState from './hooks/use-block-types-state';\n\nfunction ReusableBlocksList( { onHover, onInsert, rootClientId } ) {\n\tconst [ items, , , onSelectItem ] = useBlockTypesState(\n\t\trootClientId,\n\t\tonInsert\n\t);\n\n\tconst filteredItems = useMemo( () => {\n\t\treturn items.filter( ( { category } ) => category === 'reusable' );\n\t}, [ items ] );\n\n\tif ( filteredItems.length === 0 ) {\n\t\treturn <InserterNoResults />;\n\t}\n\n\treturn (\n\t\t<InserterPanel title={ __( 'Synced patterns' ) }>\n\t\t\t<BlockTypesList\n\t\t\t\titems={ filteredItems }\n\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tlabel={ __( 'Synced patterns' ) }\n\t\t\t/>\n\t\t</InserterPanel>\n\t);\n}\n\n// The unwrapped component is only exported for use by unit tests.\n/**\n * List of reusable blocks shown in the \"Reusable\" tab of the inserter.\n *\n * @param {Object} props Component props.\n * @param {?string} props.rootClientId Client id of block to insert into.\n * @param {Function} props.onInsert Callback to run when item is inserted.\n * @param {Function} props.onHover Callback to run when item is hovered.\n *\n * @return {WPComponent} The component.\n */\nexport function ReusableBlocksTab( { rootClientId, onInsert, onHover } ) {\n\treturn (\n\t\t<>\n\t\t\t<ReusableBlocksList\n\t\t\t\tonHover={ onHover }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t/>\n\t\t\t<div className=\"block-editor-inserter__manage-reusable-blocks-container\">\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"block-editor-inserter__manage-reusable-blocks\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\thref={ addQueryArgs( 'edit.php', {\n\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Manage my patterns' ) }\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default ReusableBlocksTab;\n"]}
|
|
@@ -1765,7 +1765,6 @@ const buildBlockTypeItem = (state, {
|
|
|
1765
1765
|
*
|
|
1766
1766
|
* @param {Object} state Editor state.
|
|
1767
1767
|
* @param {?string} rootClientId Optional root client ID of block list.
|
|
1768
|
-
* @param {?string} syncStatus Optional sync status to filter pattern blocks by.
|
|
1769
1768
|
*
|
|
1770
1769
|
* @return {WPEditorInserterItem[]} Items that appear in inserter.
|
|
1771
1770
|
*
|
|
@@ -1783,10 +1782,7 @@ const buildBlockTypeItem = (state, {
|
|
|
1783
1782
|
*/
|
|
1784
1783
|
|
|
1785
1784
|
|
|
1786
|
-
export const getInserterItems = createSelector((state, rootClientId = null
|
|
1787
|
-
const buildBlockTypeInserterItem = buildBlockTypeItem(state, {
|
|
1788
|
-
buildScope: 'inserter'
|
|
1789
|
-
});
|
|
1785
|
+
export const getInserterItems = createSelector((state, rootClientId = null) => {
|
|
1790
1786
|
/*
|
|
1791
1787
|
* Matches block comment delimiters amid serialized content.
|
|
1792
1788
|
*
|
|
@@ -1800,7 +1796,6 @@ export const getInserterItems = createSelector((state, rootClientId = null, sync
|
|
|
1800
1796
|
* - prepended ^\s*
|
|
1801
1797
|
*
|
|
1802
1798
|
*/
|
|
1803
|
-
|
|
1804
1799
|
const blockParserTokenizer = /^\s*<!--\s+(\/)?wp:([a-z][a-z0-9_-]*\/)?([a-z][a-z0-9_-]*)\s+({(?:(?=([^}]+|}+(?=})|(?!}\s+\/?-->)[^])*)\5|[^]*?)}\s+)?(\/)?-->/;
|
|
1805
1800
|
|
|
1806
1801
|
const buildReusableBlockInserterItem = reusableBlock => {
|
|
@@ -1852,8 +1847,13 @@ export const getInserterItems = createSelector((state, rootClientId = null, sync
|
|
|
1852
1847
|
};
|
|
1853
1848
|
};
|
|
1854
1849
|
|
|
1850
|
+
const syncedPatternInserterItems = canInsertBlockTypeUnmemoized(state, 'core/block', rootClientId) ? getReusableBlocks(state).filter(reusableBlock => // Filter to either fully synced patterns (sync_status === 'fully'),
|
|
1851
|
+
// or old school reusable blocks (sync_status === '').
|
|
1852
|
+
reusableBlock.meta?.sync_status === 'fully' || reusableBlock.meta?.sync_status === '' || !reusableBlock.meta?.sync_status).map(buildReusableBlockInserterItem) : [];
|
|
1853
|
+
const buildBlockTypeInserterItem = buildBlockTypeItem(state, {
|
|
1854
|
+
buildScope: 'inserter'
|
|
1855
|
+
});
|
|
1855
1856
|
const blockTypeInserterItems = getBlockTypes().filter(blockType => canIncludeBlockTypeInInserter(state, blockType, rootClientId)).map(buildBlockTypeInserterItem);
|
|
1856
|
-
const reusableBlockInserterItems = canInsertBlockTypeUnmemoized(state, 'core/block', rootClientId) ? getReusableBlocks(state).filter(reusableBlock => syncStatus === reusableBlock.meta?.sync_status || !syncStatus && reusableBlock.meta?.sync_status === '').map(buildReusableBlockInserterItem) : [];
|
|
1857
1857
|
const items = blockTypeInserterItems.reduce((accumulator, item) => {
|
|
1858
1858
|
const {
|
|
1859
1859
|
variations = []
|
|
@@ -1895,7 +1895,7 @@ export const getInserterItems = createSelector((state, rootClientId = null, sync
|
|
|
1895
1895
|
noncore: []
|
|
1896
1896
|
});
|
|
1897
1897
|
const sortedBlockTypes = [...coreItems, ...nonCoreItems];
|
|
1898
|
-
return [...sortedBlockTypes, ...
|
|
1898
|
+
return [...sortedBlockTypes, ...syncedPatternInserterItems];
|
|
1899
1899
|
}, (state, rootClientId) => [state.blockListSettings[rootClientId], state.blocks.byClientId, state.blocks.order, state.preferences.insertUsage, state.settings.allowedBlockTypes, state.settings.templateLock, getReusableBlocks(state), getBlockTypes()]);
|
|
1900
1900
|
/**
|
|
1901
1901
|
* Determines the items that appear in the available block transforms list.
|
|
@@ -2039,9 +2039,24 @@ const checkAllowListRecursive = (blocks, allowedBlockTypes) => {
|
|
|
2039
2039
|
return true;
|
|
2040
2040
|
};
|
|
2041
2041
|
|
|
2042
|
+
function getUnsyncedPatterns(state) {
|
|
2043
|
+
var _state$settings$__exp;
|
|
2044
|
+
|
|
2045
|
+
const reusableBlocks = (_state$settings$__exp = state?.settings?.__experimentalReusableBlocks) !== null && _state$settings$__exp !== void 0 ? _state$settings$__exp : EMPTY_ARRAY;
|
|
2046
|
+
return reusableBlocks.filter(reusableBlock => reusableBlock.meta?.sync_status === 'unsynced').map(reusableBlock => {
|
|
2047
|
+
return {
|
|
2048
|
+
name: `core/block/${reusableBlock.id}`,
|
|
2049
|
+
title: reusableBlock.title.raw,
|
|
2050
|
+
categories: ['custom'],
|
|
2051
|
+
content: reusableBlock.content.raw
|
|
2052
|
+
};
|
|
2053
|
+
});
|
|
2054
|
+
}
|
|
2055
|
+
|
|
2042
2056
|
export const __experimentalGetParsedPattern = createSelector((state, patternName) => {
|
|
2043
2057
|
const patterns = state.settings.__experimentalBlockPatterns;
|
|
2044
|
-
const
|
|
2058
|
+
const unsyncedPatterns = getUnsyncedPatterns(state);
|
|
2059
|
+
const pattern = [...patterns, ...unsyncedPatterns].find(({
|
|
2045
2060
|
name
|
|
2046
2061
|
}) => name === patternName);
|
|
2047
2062
|
|
|
@@ -2054,13 +2069,14 @@ export const __experimentalGetParsedPattern = createSelector((state, patternName
|
|
|
2054
2069
|
__unstableSkipMigrationLogs: true
|
|
2055
2070
|
})
|
|
2056
2071
|
};
|
|
2057
|
-
}, state => [state.settings.__experimentalBlockPatterns]);
|
|
2072
|
+
}, state => [state.settings.__experimentalBlockPatterns, state.settings.__experimentalReusableBlocks]);
|
|
2058
2073
|
const getAllAllowedPatterns = createSelector(state => {
|
|
2059
2074
|
const patterns = state.settings.__experimentalBlockPatterns;
|
|
2075
|
+
const unsyncedPatterns = getUnsyncedPatterns(state);
|
|
2060
2076
|
const {
|
|
2061
2077
|
allowedBlockTypes
|
|
2062
2078
|
} = getSettings(state);
|
|
2063
|
-
const parsedPatterns = patterns.filter(({
|
|
2079
|
+
const parsedPatterns = [...patterns, ...unsyncedPatterns].filter(({
|
|
2064
2080
|
inserter = true
|
|
2065
2081
|
}) => !!inserter).map(({
|
|
2066
2082
|
name
|
|
@@ -2069,7 +2085,7 @@ const getAllAllowedPatterns = createSelector(state => {
|
|
|
2069
2085
|
blocks
|
|
2070
2086
|
}) => checkAllowListRecursive(blocks, allowedBlockTypes));
|
|
2071
2087
|
return allowedPatterns;
|
|
2072
|
-
}, state => [state.settings.__experimentalBlockPatterns, state.settings.allowedBlockTypes]);
|
|
2088
|
+
}, state => [state.settings.__experimentalBlockPatterns, state.settings.__experimentalReusableBlocks, state.settings.allowedBlockTypes]);
|
|
2073
2089
|
/**
|
|
2074
2090
|
* Returns the list of allowed patterns for inner blocks children.
|
|
2075
2091
|
*
|
|
@@ -2087,7 +2103,7 @@ export const __experimentalGetAllowedPatterns = createSelector((state, rootClien
|
|
|
2087
2103
|
name
|
|
2088
2104
|
}) => canInsertBlockType(state, name, rootClientId)));
|
|
2089
2105
|
return patternsAllowed;
|
|
2090
|
-
}, (state, rootClientId) => [state.settings.__experimentalBlockPatterns, state.settings.allowedBlockTypes, state.settings.templateLock, state.blockListSettings[rootClientId], state.blocks.byClientId.get(rootClientId)]);
|
|
2106
|
+
}, (state, rootClientId) => [state.settings.__experimentalBlockPatterns, state.settings.__experimentalReusableBlocks, state.settings.allowedBlockTypes, state.settings.templateLock, state.blockListSettings[rootClientId], state.blocks.byClientId.get(rootClientId)]);
|
|
2091
2107
|
/**
|
|
2092
2108
|
* Returns the list of patterns based on their declared `blockTypes`
|
|
2093
2109
|
* and a block's name.
|
|
@@ -2311,9 +2327,9 @@ export function __experimentalGetLastBlockAttributeChanges(state) {
|
|
|
2311
2327
|
*/
|
|
2312
2328
|
|
|
2313
2329
|
function getReusableBlocks(state) {
|
|
2314
|
-
var _state$settings$
|
|
2330
|
+
var _state$settings$__exp2;
|
|
2315
2331
|
|
|
2316
|
-
return (_state$settings$
|
|
2332
|
+
return (_state$settings$__exp2 = state?.settings?.__experimentalReusableBlocks) !== null && _state$settings$__exp2 !== void 0 ? _state$settings$__exp2 : EMPTY_ARRAY;
|
|
2317
2333
|
}
|
|
2318
2334
|
/**
|
|
2319
2335
|
* Returns whether the navigation mode is enabled.
|