@wordpress/block-editor 12.3.11 → 12.3.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/build/components/block-list/index.js +2 -4
  2. package/build/components/block-list/index.js.map +1 -1
  3. package/build/components/block-tools/block-contextual-toolbar.js +4 -2
  4. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  5. package/build/components/copy-handler/index.js +2 -0
  6. package/build/components/copy-handler/index.js.map +1 -1
  7. package/build/components/inserter/hooks/use-block-types-state.js +6 -2
  8. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  9. package/build/components/inserter-list-item/index.js +1 -1
  10. package/build/components/inserter-list-item/index.js.map +1 -1
  11. package/build/components/rich-text/get-rich-text-values.js +11 -18
  12. package/build/components/rich-text/get-rich-text-values.js.map +1 -1
  13. package/build/components/rich-text/index.js +8 -1
  14. package/build/components/rich-text/index.js.map +1 -1
  15. package/build-module/components/block-list/index.js +2 -3
  16. package/build-module/components/block-list/index.js.map +1 -1
  17. package/build-module/components/block-tools/block-contextual-toolbar.js +4 -2
  18. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  19. package/build-module/components/copy-handler/index.js +2 -0
  20. package/build-module/components/copy-handler/index.js.map +1 -1
  21. package/build-module/components/inserter/hooks/use-block-types-state.js +7 -3
  22. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  23. package/build-module/components/inserter-list-item/index.js +1 -1
  24. package/build-module/components/inserter-list-item/index.js.map +1 -1
  25. package/build-module/components/rich-text/get-rich-text-values.js +13 -18
  26. package/build-module/components/rich-text/get-rich-text-values.js.map +1 -1
  27. package/build-module/components/rich-text/index.js +8 -1
  28. package/build-module/components/rich-text/index.js.map +1 -1
  29. package/build-style/style-rtl.css +9 -1
  30. package/build-style/style.css +9 -1
  31. package/package.json +3 -3
  32. package/src/components/block-list/index.js +3 -6
  33. package/src/components/block-tools/block-contextual-toolbar.js +43 -35
  34. package/src/components/block-tools/style.scss +12 -3
  35. package/src/components/copy-handler/index.js +1 -0
  36. package/src/components/inserter/hooks/use-block-types-state.js +15 -6
  37. package/src/components/inserter-list-item/index.js +3 -1
  38. package/src/components/rich-text/get-rich-text-values.js +22 -28
  39. package/src/components/rich-text/index.js +7 -0
@@ -21,7 +21,6 @@ import { useInBetweenInserter } from './use-in-between-inserter';
21
21
  import { store as blockEditorStore } from '../../store';
22
22
  import { usePreParsePatterns } from '../../utils/pre-parse-patterns';
23
23
  import { LayoutProvider, defaultLayout } from './layout';
24
- import BlockToolsBackCompat from '../block-tools/back-compat';
25
24
  import { useBlockSelectionClearer } from '../block-selection-clearer';
26
25
  import { useInnerBlocksProps } from '../inner-blocks';
27
26
  import { BlockEditContextProvider, DEFAULT_BLOCK_EDIT_CONTEXT } from '../block-edit/context';
@@ -107,10 +106,10 @@ function Root({
107
106
 
108
107
  export default function BlockList(settings) {
109
108
  usePreParsePatterns();
110
- return createElement(BlockToolsBackCompat, null, createElement(BlockEditContextProvider, {
109
+ return createElement(BlockEditContextProvider, {
111
110
  value: DEFAULT_BLOCK_EDIT_CONTEXT
112
111
  }, createElement(Root, { ...settings
113
- })));
112
+ }));
114
113
  }
115
114
  BlockList.__unstableElementContext = elementContext;
116
115
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-list/index.js"],"names":["classnames","AsyncModeProvider","useSelect","useDispatch","useRegistry","useViewportMatch","useMergeRefs","useDebounce","createContext","useState","useMemo","useCallback","BlockListBlock","BlockListAppender","useInBetweenInserter","store","blockEditorStore","usePreParsePatterns","LayoutProvider","defaultLayout","BlockToolsBackCompat","useBlockSelectionClearer","useInnerBlocksProps","BlockEditContextProvider","DEFAULT_BLOCK_EDIT_CONTEXT","elementContext","IntersectionObserver","pendingBlockVisibilityUpdatesPerRegistry","WeakMap","Root","className","settings","element","setElement","isLargeViewport","isOutlineMode","isFocusMode","editorMode","select","getSettings","__unstableGetEditorMode","outlineMode","focusMode","registry","setBlockVisibility","delayedBlockVisibilityUpdates","updates","get","forEach","id","isIntersecting","trailing","intersectionObserver","Observer","window","entries","set","entry","clientId","target","getAttribute","push","innerBlocksProps","ref","BlockList","__unstableElementContext","Items","placeholder","rootClientId","renderAppender","__experimentalAppenderTagName","layout","order","selectedBlocks","visibleBlocks","getBlockOrder","getSelectedBlockClientIds","__unstableGetVisibleBlocks","map","has","includes","length","BlockListItems","props"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SACCC,iBADD,EAECC,SAFD,EAGCC,WAHD,EAICC,WAJD,QAKO,iBALP;AAMA,SACCC,gBADD,EAECC,YAFD,EAGCC,WAHD,QAIO,oBAJP;AAKA,SACCC,aADD,EAECC,QAFD,EAGCC,OAHD,EAICC,WAJD,QAKO,oBALP;AAOA;AACA;AACA;;AACA,OAAOC,cAAP,MAA2B,SAA3B;AACA,OAAOC,iBAAP,MAA8B,wBAA9B;AACA,SAASC,oBAAT,QAAqC,2BAArC;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SAASC,mBAAT,QAAoC,gCAApC;AACA,SAASC,cAAT,EAAyBC,aAAzB,QAA8C,UAA9C;AACA,OAAOC,oBAAP,MAAiC,4BAAjC;AACA,SAASC,wBAAT,QAAyC,4BAAzC;AACA,SAASC,mBAAT,QAAoC,iBAApC;AACA,SACCC,wBADD,EAECC,0BAFD,QAGO,uBAHP;AAKA,MAAMC,cAAc,GAAGjB,aAAa,EAApC;AAEA,OAAO,MAAMkB,oBAAoB,GAAGlB,aAAa,EAA1C;AACP,MAAMmB,wCAAwC,GAAG,IAAIC,OAAJ,EAAjD;;AAEA,SAASC,IAAT,CAAe;AAAEC,EAAAA,SAAF;AAAa,KAAGC;AAAhB,CAAf,EAA4C;AAC3C,QAAM,CAAEC,OAAF,EAAWC,UAAX,IAA0BxB,QAAQ,EAAxC;AACA,QAAMyB,eAAe,GAAG7B,gBAAgB,CAAE,QAAF,CAAxC;AACA,QAAM;AAAE8B,IAAAA,aAAF;AAAiBC,IAAAA,WAAjB;AAA8BC,IAAAA;AAA9B,MAA6CnC,SAAS,CACzDoC,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA,WAAF;AAAeC,MAAAA;AAAf,QACLF,MAAM,CAAEtB,gBAAF,CADP;AAEA,UAAM;AAAEyB,MAAAA,WAAF;AAAeC,MAAAA;AAAf,QAA6BH,WAAW,EAA9C;AACA,WAAO;AACNJ,MAAAA,aAAa,EAAEM,WADT;AAENL,MAAAA,WAAW,EAAEM,SAFP;AAGNL,MAAAA,UAAU,EAAEG,uBAAuB;AAH7B,KAAP;AAKA,GAV0D,EAW3D,EAX2D,CAA5D;AAaA,QAAMG,QAAQ,GAAGvC,WAAW,EAA5B;AACA,QAAM;AAAEwC,IAAAA;AAAF,MAAyBzC,WAAW,CAAEa,gBAAF,CAA1C;AAEA,QAAM6B,6BAA6B,GAAGtC,WAAW,CAChDI,WAAW,CAAE,MAAM;AAClB,UAAMmC,OAAO,GAAG,EAAhB;AACAnB,IAAAA,wCAAwC,CACtCoB,GADF,CACOJ,QADP,EAEEK,OAFF,CAEW,CAAE,CAAEC,EAAF,EAAMC,cAAN,CAAF,KAA8B;AACvCJ,MAAAA,OAAO,CAAEG,EAAF,CAAP,GAAgBC,cAAhB;AACA,KAJF;AAKAN,IAAAA,kBAAkB,CAAEE,OAAF,CAAlB;AACA,GARU,EAQR,CAAEH,QAAF,CARQ,CADqC,EAUhD,GAVgD,EAWhD;AACCQ,IAAAA,QAAQ,EAAE;AADX,GAXgD,CAAjD;AAeA,QAAMC,oBAAoB,GAAG1C,OAAO,CAAE,MAAM;AAC3C,UAAM;AAAEgB,MAAAA,oBAAoB,EAAE2B;AAAxB,QAAqCC,MAA3C;;AAEA,QAAK,CAAED,QAAP,EAAkB;AACjB;AACA;;AAED,WAAO,IAAIA,QAAJ,CAAgBE,OAAF,IAAe;AACnC,UAAK,CAAE5B,wCAAwC,CAACoB,GAAzC,CAA8CJ,QAA9C,CAAP,EAAkE;AACjEhB,QAAAA,wCAAwC,CAAC6B,GAAzC,CAA8Cb,QAA9C,EAAwD,EAAxD;AACA;;AACD,WAAM,MAAMc,KAAZ,IAAqBF,OAArB,EAA+B;AAC9B,cAAMG,QAAQ,GAAGD,KAAK,CAACE,MAAN,CAAaC,YAAb,CAA2B,YAA3B,CAAjB;AACAjC,QAAAA,wCAAwC,CACtCoB,GADF,CACOJ,QADP,EAEEkB,IAFF,CAEQ,CAAEH,QAAF,EAAYD,KAAK,CAACP,cAAlB,CAFR;AAGA;;AACDL,MAAAA,6BAA6B;AAC7B,KAXM,CAAP;AAYA,GAnBmC,EAmBjC,EAnBiC,CAApC;AAoBA,QAAMiB,gBAAgB,GAAGxC,mBAAmB,CAC3C;AACCyC,IAAAA,GAAG,EAAEzD,YAAY,CAAE,CAClBe,wBAAwB,EADN,EAElBP,oBAAoB,EAFF,EAGlBmB,UAHkB,CAAF,CADlB;AAMCH,IAAAA,SAAS,EAAE9B,UAAU,CAAE,mBAAF,EAAuB8B,SAAvB,EAAkC;AACtD,yBAAmBK,aADmC;AAEtD,uBAAiBC,WAAW,IAAIF,eAFsB;AAGtD,0BAAoBG,UAAU,KAAK;AAHmB,KAAlC;AANtB,GAD2C,EAa3CN,QAb2C,CAA5C;AAeA,SACC,cAAC,cAAD,CAAgB,QAAhB;AAAyB,IAAA,KAAK,EAAGC;AAAjC,KACC,cAAC,oBAAD,CAAsB,QAAtB;AAA+B,IAAA,KAAK,EAAGoB;AAAvC,KACC,0BAAUU;AAAV,IADD,CADD,CADD;AAOA;;AAED,eAAe,SAASE,SAAT,CAAoBjC,QAApB,EAA+B;AAC7Cd,EAAAA,mBAAmB;AACnB,SACC,cAAC,oBAAD,QACC,cAAC,wBAAD;AAA0B,IAAA,KAAK,EAAGO;AAAlC,KACC,cAAC,IAAD,OAAWO;AAAX,IADD,CADD,CADD;AAOA;AAEDiC,SAAS,CAACC,wBAAV,GAAqCxC,cAArC;;AAEA,SAASyC,KAAT,CAAgB;AACfC,EAAAA,WADe;AAEfC,EAAAA,YAFe;AAGfC,EAAAA,cAHe;AAIfC,EAAAA,6BAJe;AAKfC,EAAAA,MAAM,GAAGpD;AALM,CAAhB,EAMI;AACH,QAAM;AAAEqD,IAAAA,KAAF;AAASC,IAAAA,cAAT;AAAyBC,IAAAA;AAAzB,MAA2CxE,SAAS,CACvDoC,MAAF,IAAc;AACb,UAAM;AACLqC,MAAAA,aADK;AAELC,MAAAA,yBAFK;AAGLC,MAAAA;AAHK,QAIFvC,MAAM,CAAEtB,gBAAF,CAJV;AAKA,WAAO;AACNwD,MAAAA,KAAK,EAAEG,aAAa,CAAEP,YAAF,CADd;AAENK,MAAAA,cAAc,EAAEG,yBAAyB,EAFnC;AAGNF,MAAAA,aAAa,EAAEG,0BAA0B;AAHnC,KAAP;AAKA,GAZwD,EAazD,CAAET,YAAF,CAbyD,CAA1D;AAgBA,SACC,cAAC,cAAD;AAAgB,IAAA,KAAK,EAAGG;AAAxB,KACGC,KAAK,CAACM,GAAN,CAAapB,QAAF,IACZ,cAAC,iBAAD;AACC,IAAA,GAAG,EAAGA,QADP;AAEC,IAAA,KAAK,EACJ;AACA;AACA,KAAEgB,aAAa,CAACK,GAAd,CAAmBrB,QAAnB,CAAF,IACA,CAAEe,cAAc,CAACO,QAAf,CAAyBtB,QAAzB;AANJ,KASC,cAAC,cAAD;AACC,IAAA,YAAY,EAAGU,YADhB;AAEC,IAAA,QAAQ,EAAGV;AAFZ,IATD,CADC,CADH,EAiBGc,KAAK,CAACS,MAAN,GAAe,CAAf,IAAoBd,WAjBvB,EAkBC,cAAC,iBAAD;AACC,IAAA,OAAO,EAAGG,6BADX;AAEC,IAAA,YAAY,EAAGF,YAFhB;AAGC,IAAA,cAAc,EAAGC;AAHlB,IAlBD,CADD;AA0BA;;AAED,OAAO,SAASa,cAAT,CAAyBC,KAAzB,EAAiC;AACvC;AACA;AACA,SACC,cAAC,iBAAD;AAAmB,IAAA,KAAK,EAAG;AAA3B,KACC,cAAC,KAAD,OAAYA;AAAZ,IADD,CADD;AAKA","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAsyncModeProvider,\n\tuseSelect,\n\tuseDispatch,\n\tuseRegistry,\n} from '@wordpress/data';\nimport {\n\tuseViewportMatch,\n\tuseMergeRefs,\n\tuseDebounce,\n} from '@wordpress/compose';\nimport {\n\tcreateContext,\n\tuseState,\n\tuseMemo,\n\tuseCallback,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockListBlock from './block';\nimport BlockListAppender from '../block-list-appender';\nimport { useInBetweenInserter } from './use-in-between-inserter';\nimport { store as blockEditorStore } from '../../store';\nimport { usePreParsePatterns } from '../../utils/pre-parse-patterns';\nimport { LayoutProvider, defaultLayout } from './layout';\nimport BlockToolsBackCompat from '../block-tools/back-compat';\nimport { useBlockSelectionClearer } from '../block-selection-clearer';\nimport { useInnerBlocksProps } from '../inner-blocks';\nimport {\n\tBlockEditContextProvider,\n\tDEFAULT_BLOCK_EDIT_CONTEXT,\n} from '../block-edit/context';\n\nconst elementContext = createContext();\n\nexport const IntersectionObserver = createContext();\nconst pendingBlockVisibilityUpdatesPerRegistry = new WeakMap();\n\nfunction Root( { className, ...settings } ) {\n\tconst [ element, setElement ] = useState();\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst { isOutlineMode, isFocusMode, editorMode } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings, __unstableGetEditorMode } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { outlineMode, focusMode } = getSettings();\n\t\t\treturn {\n\t\t\t\tisOutlineMode: outlineMode,\n\t\t\t\tisFocusMode: focusMode,\n\t\t\t\teditorMode: __unstableGetEditorMode(),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst registry = useRegistry();\n\tconst { setBlockVisibility } = useDispatch( blockEditorStore );\n\n\tconst delayedBlockVisibilityUpdates = useDebounce(\n\t\tuseCallback( () => {\n\t\t\tconst updates = {};\n\t\t\tpendingBlockVisibilityUpdatesPerRegistry\n\t\t\t\t.get( registry )\n\t\t\t\t.forEach( ( [ id, isIntersecting ] ) => {\n\t\t\t\t\tupdates[ id ] = isIntersecting;\n\t\t\t\t} );\n\t\t\tsetBlockVisibility( updates );\n\t\t}, [ registry ] ),\n\t\t300,\n\t\t{\n\t\t\ttrailing: true,\n\t\t}\n\t);\n\tconst intersectionObserver = useMemo( () => {\n\t\tconst { IntersectionObserver: Observer } = window;\n\n\t\tif ( ! Observer ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn new Observer( ( entries ) => {\n\t\t\tif ( ! pendingBlockVisibilityUpdatesPerRegistry.get( registry ) ) {\n\t\t\t\tpendingBlockVisibilityUpdatesPerRegistry.set( registry, [] );\n\t\t\t}\n\t\t\tfor ( const entry of entries ) {\n\t\t\t\tconst clientId = entry.target.getAttribute( 'data-block' );\n\t\t\t\tpendingBlockVisibilityUpdatesPerRegistry\n\t\t\t\t\t.get( registry )\n\t\t\t\t\t.push( [ clientId, entry.isIntersecting ] );\n\t\t\t}\n\t\t\tdelayedBlockVisibilityUpdates();\n\t\t} );\n\t}, [] );\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tref: useMergeRefs( [\n\t\t\t\tuseBlockSelectionClearer(),\n\t\t\t\tuseInBetweenInserter(),\n\t\t\t\tsetElement,\n\t\t\t] ),\n\t\t\tclassName: classnames( 'is-root-container', className, {\n\t\t\t\t'is-outline-mode': isOutlineMode,\n\t\t\t\t'is-focus-mode': isFocusMode && isLargeViewport,\n\t\t\t\t'is-navigate-mode': editorMode === 'navigation',\n\t\t\t} ),\n\t\t},\n\t\tsettings\n\t);\n\treturn (\n\t\t<elementContext.Provider value={ element }>\n\t\t\t<IntersectionObserver.Provider value={ intersectionObserver }>\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t</IntersectionObserver.Provider>\n\t\t</elementContext.Provider>\n\t);\n}\n\nexport default function BlockList( settings ) {\n\tusePreParsePatterns();\n\treturn (\n\t\t<BlockToolsBackCompat>\n\t\t\t<BlockEditContextProvider value={ DEFAULT_BLOCK_EDIT_CONTEXT }>\n\t\t\t\t<Root { ...settings } />\n\t\t\t</BlockEditContextProvider>\n\t\t</BlockToolsBackCompat>\n\t);\n}\n\nBlockList.__unstableElementContext = elementContext;\n\nfunction Items( {\n\tplaceholder,\n\trootClientId,\n\trenderAppender,\n\t__experimentalAppenderTagName,\n\tlayout = defaultLayout,\n} ) {\n\tconst { order, selectedBlocks, visibleBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\t__unstableGetVisibleBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\torder: getBlockOrder( rootClientId ),\n\t\t\t\tselectedBlocks: getSelectedBlockClientIds(),\n\t\t\t\tvisibleBlocks: __unstableGetVisibleBlocks(),\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\treturn (\n\t\t<LayoutProvider value={ layout }>\n\t\t\t{ order.map( ( clientId ) => (\n\t\t\t\t<AsyncModeProvider\n\t\t\t\t\tkey={ clientId }\n\t\t\t\t\tvalue={\n\t\t\t\t\t\t// Only provide data asynchronously if the block is\n\t\t\t\t\t\t// not visible and not selected.\n\t\t\t\t\t\t! visibleBlocks.has( clientId ) &&\n\t\t\t\t\t\t! selectedBlocks.includes( clientId )\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<BlockListBlock\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t</AsyncModeProvider>\n\t\t\t) ) }\n\t\t\t{ order.length < 1 && placeholder }\n\t\t\t<BlockListAppender\n\t\t\t\ttagName={ __experimentalAppenderTagName }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\trenderAppender={ renderAppender }\n\t\t\t/>\n\t\t</LayoutProvider>\n\t);\n}\n\nexport function BlockListItems( props ) {\n\t// This component needs to always be synchronous as it's the one changing\n\t// the async mode depending on the block selection.\n\treturn (\n\t\t<AsyncModeProvider value={ false }>\n\t\t\t<Items { ...props } />\n\t\t</AsyncModeProvider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-list/index.js"],"names":["classnames","AsyncModeProvider","useSelect","useDispatch","useRegistry","useViewportMatch","useMergeRefs","useDebounce","createContext","useState","useMemo","useCallback","BlockListBlock","BlockListAppender","useInBetweenInserter","store","blockEditorStore","usePreParsePatterns","LayoutProvider","defaultLayout","useBlockSelectionClearer","useInnerBlocksProps","BlockEditContextProvider","DEFAULT_BLOCK_EDIT_CONTEXT","elementContext","IntersectionObserver","pendingBlockVisibilityUpdatesPerRegistry","WeakMap","Root","className","settings","element","setElement","isLargeViewport","isOutlineMode","isFocusMode","editorMode","select","getSettings","__unstableGetEditorMode","outlineMode","focusMode","registry","setBlockVisibility","delayedBlockVisibilityUpdates","updates","get","forEach","id","isIntersecting","trailing","intersectionObserver","Observer","window","entries","set","entry","clientId","target","getAttribute","push","innerBlocksProps","ref","BlockList","__unstableElementContext","Items","placeholder","rootClientId","renderAppender","__experimentalAppenderTagName","layout","order","selectedBlocks","visibleBlocks","getBlockOrder","getSelectedBlockClientIds","__unstableGetVisibleBlocks","map","has","includes","length","BlockListItems","props"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAsyncModeProvider,\n\tuseSelect,\n\tuseDispatch,\n\tuseRegistry,\n} from '@wordpress/data';\nimport {\n\tuseViewportMatch,\n\tuseMergeRefs,\n\tuseDebounce,\n} from '@wordpress/compose';\nimport {\n\tcreateContext,\n\tuseState,\n\tuseMemo,\n\tuseCallback,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockListBlock from './block';\nimport BlockListAppender from '../block-list-appender';\nimport { useInBetweenInserter } from './use-in-between-inserter';\nimport { store as blockEditorStore } from '../../store';\nimport { usePreParsePatterns } from '../../utils/pre-parse-patterns';\nimport { LayoutProvider, defaultLayout } from './layout';\nimport { useBlockSelectionClearer } from '../block-selection-clearer';\nimport { useInnerBlocksProps } from '../inner-blocks';\nimport {\n\tBlockEditContextProvider,\n\tDEFAULT_BLOCK_EDIT_CONTEXT,\n} from '../block-edit/context';\n\nconst elementContext = createContext();\n\nexport const IntersectionObserver = createContext();\nconst pendingBlockVisibilityUpdatesPerRegistry = new WeakMap();\n\nfunction Root( { className, ...settings } ) {\n\tconst [ element, setElement ] = useState();\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst { isOutlineMode, isFocusMode, editorMode } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings, __unstableGetEditorMode } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { outlineMode, focusMode } = getSettings();\n\t\t\treturn {\n\t\t\t\tisOutlineMode: outlineMode,\n\t\t\t\tisFocusMode: focusMode,\n\t\t\t\teditorMode: __unstableGetEditorMode(),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst registry = useRegistry();\n\tconst { setBlockVisibility } = useDispatch( blockEditorStore );\n\n\tconst delayedBlockVisibilityUpdates = useDebounce(\n\t\tuseCallback( () => {\n\t\t\tconst updates = {};\n\t\t\tpendingBlockVisibilityUpdatesPerRegistry\n\t\t\t\t.get( registry )\n\t\t\t\t.forEach( ( [ id, isIntersecting ] ) => {\n\t\t\t\t\tupdates[ id ] = isIntersecting;\n\t\t\t\t} );\n\t\t\tsetBlockVisibility( updates );\n\t\t}, [ registry ] ),\n\t\t300,\n\t\t{\n\t\t\ttrailing: true,\n\t\t}\n\t);\n\tconst intersectionObserver = useMemo( () => {\n\t\tconst { IntersectionObserver: Observer } = window;\n\n\t\tif ( ! Observer ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn new Observer( ( entries ) => {\n\t\t\tif ( ! pendingBlockVisibilityUpdatesPerRegistry.get( registry ) ) {\n\t\t\t\tpendingBlockVisibilityUpdatesPerRegistry.set( registry, [] );\n\t\t\t}\n\t\t\tfor ( const entry of entries ) {\n\t\t\t\tconst clientId = entry.target.getAttribute( 'data-block' );\n\t\t\t\tpendingBlockVisibilityUpdatesPerRegistry\n\t\t\t\t\t.get( registry )\n\t\t\t\t\t.push( [ clientId, entry.isIntersecting ] );\n\t\t\t}\n\t\t\tdelayedBlockVisibilityUpdates();\n\t\t} );\n\t}, [] );\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tref: useMergeRefs( [\n\t\t\t\tuseBlockSelectionClearer(),\n\t\t\t\tuseInBetweenInserter(),\n\t\t\t\tsetElement,\n\t\t\t] ),\n\t\t\tclassName: classnames( 'is-root-container', className, {\n\t\t\t\t'is-outline-mode': isOutlineMode,\n\t\t\t\t'is-focus-mode': isFocusMode && isLargeViewport,\n\t\t\t\t'is-navigate-mode': editorMode === 'navigation',\n\t\t\t} ),\n\t\t},\n\t\tsettings\n\t);\n\treturn (\n\t\t<elementContext.Provider value={ element }>\n\t\t\t<IntersectionObserver.Provider value={ intersectionObserver }>\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t</IntersectionObserver.Provider>\n\t\t</elementContext.Provider>\n\t);\n}\n\nexport default function BlockList( settings ) {\n\tusePreParsePatterns();\n\treturn (\n\t\t<BlockEditContextProvider value={ DEFAULT_BLOCK_EDIT_CONTEXT }>\n\t\t\t<Root { ...settings } />\n\t\t</BlockEditContextProvider>\n\t);\n}\n\nBlockList.__unstableElementContext = elementContext;\n\nfunction Items( {\n\tplaceholder,\n\trootClientId,\n\trenderAppender,\n\t__experimentalAppenderTagName,\n\tlayout = defaultLayout,\n} ) {\n\tconst { order, selectedBlocks, visibleBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\t__unstableGetVisibleBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\torder: getBlockOrder( rootClientId ),\n\t\t\t\tselectedBlocks: getSelectedBlockClientIds(),\n\t\t\t\tvisibleBlocks: __unstableGetVisibleBlocks(),\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\treturn (\n\t\t<LayoutProvider value={ layout }>\n\t\t\t{ order.map( ( clientId ) => (\n\t\t\t\t<AsyncModeProvider\n\t\t\t\t\tkey={ clientId }\n\t\t\t\t\tvalue={\n\t\t\t\t\t\t// Only provide data asynchronously if the block is\n\t\t\t\t\t\t// not visible and not selected.\n\t\t\t\t\t\t! visibleBlocks.has( clientId ) &&\n\t\t\t\t\t\t! selectedBlocks.includes( clientId )\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<BlockListBlock\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t</AsyncModeProvider>\n\t\t\t) ) }\n\t\t\t{ order.length < 1 && placeholder }\n\t\t\t<BlockListAppender\n\t\t\t\ttagName={ __experimentalAppenderTagName }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\trenderAppender={ renderAppender }\n\t\t\t/>\n\t\t</LayoutProvider>\n\t);\n}\n\nexport function BlockListItems( props ) {\n\t// This component needs to always be synchronous as it's the one changing\n\t// the async mode depending on the block selection.\n\treturn (\n\t\t<AsyncModeProvider value={ false }>\n\t\t\t<Items { ...props } />\n\t\t</AsyncModeProvider>\n\t);\n}\n"]}
@@ -37,7 +37,8 @@ function BlockContextualToolbar({
37
37
  blockType,
38
38
  hasParents,
39
39
  showParentSelector,
40
- selectedBlockClientId
40
+ selectedBlockClientId,
41
+ isContentOnly
41
42
  } = useSelect(select => {
42
43
  const {
43
44
  getBlockName,
@@ -58,6 +59,7 @@ function BlockContextualToolbar({
58
59
  selectedBlockClientId: _selectedBlockClientId,
59
60
  blockType: _selectedBlockClientId && getBlockType(getBlockName(_selectedBlockClientId)),
60
61
  hasParents: parents.length,
62
+ isContentOnly: getBlockEditingMode(_selectedBlockClientId) === 'contentOnly',
61
63
  showParentSelector: parentBlockType && getBlockEditingMode(firstParentClientId) === 'default' && hasBlockSupport(parentBlockType, '__experimentalParentSelector', true) && selectedBlockClientIds.length <= 1 && getBlockEditingMode(_selectedBlockClientId) === 'default'
62
64
  };
63
65
  }, []);
@@ -65,7 +67,7 @@ function BlockContextualToolbar({
65
67
  setIsCollapsed(false);
66
68
  }, [selectedBlockClientId]);
67
69
 
68
- if (blockType && !hasBlockSupport(blockType, '__experimentalToolbar', true)) {
70
+ if (isContentOnly || blockType && !hasBlockSupport(blockType, '__experimentalToolbar', true)) {
69
71
  return null;
70
72
  } // Shifts the toolbar to make room for the parent block selector.
71
73
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/block-contextual-toolbar.js"],"names":["classnames","__","useEffect","useRef","useState","hasBlockSupport","store","blocksStore","useSelect","ToolbarItem","ToolbarButton","ToolbarGroup","next","previous","useViewportMatch","NavigableToolbar","BlockToolbar","blockEditorStore","unlock","BlockContextualToolbar","focusOnMount","isFixed","props","isCollapsed","setIsCollapsed","toolbarButtonRef","isLargeViewport","blockType","hasParents","showParentSelector","selectedBlockClientId","select","getBlockName","getBlockParents","getSelectedBlockClientIds","getBlockEditingMode","getBlockType","selectedBlockClientIds","_selectedBlockClientId","parents","firstParentClientId","length","parentBlockName","parentBlockType","classes","collapsed","current","focus"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { hasBlockSupport, store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tToolbarItem,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { next, previous } from '@wordpress/icons';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport NavigableToolbar from '../navigable-toolbar';\nimport BlockToolbar from '../block-toolbar';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nfunction BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {\n\t// When the toolbar is fixed it can be collapsed\n\tconst [ isCollapsed, setIsCollapsed ] = useState( false );\n\tconst toolbarButtonRef = useRef();\n\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst { blockType, hasParents, showParentSelector, selectedBlockClientId } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockParents,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst { getBlockType } = select( blocksStore );\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\t\tconst _selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\t\tconst parents = getBlockParents( _selectedBlockClientId );\n\t\t\tconst firstParentClientId = parents[ parents.length - 1 ];\n\t\t\tconst parentBlockName = getBlockName( firstParentClientId );\n\t\t\tconst parentBlockType = getBlockType( parentBlockName );\n\n\t\t\treturn {\n\t\t\t\tselectedBlockClientId: _selectedBlockClientId,\n\t\t\t\tblockType:\n\t\t\t\t\t_selectedBlockClientId &&\n\t\t\t\t\tgetBlockType( getBlockName( _selectedBlockClientId ) ),\n\t\t\t\thasParents: parents.length,\n\t\t\t\tshowParentSelector:\n\t\t\t\t\tparentBlockType &&\n\t\t\t\t\tgetBlockEditingMode( firstParentClientId ) === 'default' &&\n\t\t\t\t\thasBlockSupport(\n\t\t\t\t\t\tparentBlockType,\n\t\t\t\t\t\t'__experimentalParentSelector',\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) &&\n\t\t\t\t\tselectedBlockClientIds.length <= 1 &&\n\t\t\t\t\tgetBlockEditingMode( _selectedBlockClientId ) === 'default',\n\t\t\t};\n\t\t}, [] );\n\n\tuseEffect( () => {\n\t\tsetIsCollapsed( false );\n\t}, [ selectedBlockClientId ] );\n\n\tif (\n\t\tblockType &&\n\t\t! hasBlockSupport( blockType, '__experimentalToolbar', true )\n\t) {\n\t\treturn null;\n\t}\n\n\t// Shifts the toolbar to make room for the parent block selector.\n\tconst classes = classnames( 'block-editor-block-contextual-toolbar', {\n\t\t'has-parent': hasParents && showParentSelector,\n\t\t'is-fixed': isFixed,\n\t\t'is-collapsed': isCollapsed,\n\t} );\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\tclassName={ classes }\n\t\t\t/* translators: accessibility text for the block toolbar */\n\t\t\taria-label={ __( 'Block tools' ) }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t{ ! isCollapsed && <BlockToolbar hideDragHandle={ isFixed } /> }\n\t\t\t{ isFixed && isLargeViewport && blockType && (\n\t\t\t\t<ToolbarGroup\n\t\t\t\t\tclassName={\n\t\t\t\t\t\tisCollapsed\n\t\t\t\t\t\t\t? 'block-editor-block-toolbar__group-expand-fixed-toolbar'\n\t\t\t\t\t\t\t: 'block-editor-block-toolbar__group-collapse-fixed-toolbar'\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\tas={ ToolbarButton }\n\t\t\t\t\t\tref={ toolbarButtonRef }\n\t\t\t\t\t\ticon={ isCollapsed ? next : previous }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetIsCollapsed( ( collapsed ) => ! collapsed );\n\t\t\t\t\t\t\ttoolbarButtonRef.current.focus();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tisCollapsed\n\t\t\t\t\t\t\t\t? __( 'Show block tools' )\n\t\t\t\t\t\t\t\t: __( 'Hide block tools' )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolbarGroup>\n\t\t\t) }\n\t\t</NavigableToolbar>\n\t);\n}\n\nexport default BlockContextualToolbar;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/block-contextual-toolbar.js"],"names":["classnames","__","useEffect","useRef","useState","hasBlockSupport","store","blocksStore","useSelect","ToolbarItem","ToolbarButton","ToolbarGroup","next","previous","useViewportMatch","NavigableToolbar","BlockToolbar","blockEditorStore","unlock","BlockContextualToolbar","focusOnMount","isFixed","props","isCollapsed","setIsCollapsed","toolbarButtonRef","isLargeViewport","blockType","hasParents","showParentSelector","selectedBlockClientId","isContentOnly","select","getBlockName","getBlockParents","getSelectedBlockClientIds","getBlockEditingMode","getBlockType","selectedBlockClientIds","_selectedBlockClientId","parents","firstParentClientId","length","parentBlockName","parentBlockType","classes","collapsed","current","focus"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { hasBlockSupport, store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tToolbarItem,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { next, previous } from '@wordpress/icons';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport NavigableToolbar from '../navigable-toolbar';\nimport BlockToolbar from '../block-toolbar';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nfunction BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {\n\t// When the toolbar is fixed it can be collapsed\n\tconst [ isCollapsed, setIsCollapsed ] = useState( false );\n\tconst toolbarButtonRef = useRef();\n\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst {\n\t\tblockType,\n\t\thasParents,\n\t\tshowParentSelector,\n\t\tselectedBlockClientId,\n\t\tisContentOnly,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockParents,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tgetBlockEditingMode,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst { getBlockType } = select( blocksStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst _selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst parents = getBlockParents( _selectedBlockClientId );\n\t\tconst firstParentClientId = parents[ parents.length - 1 ];\n\t\tconst parentBlockName = getBlockName( firstParentClientId );\n\t\tconst parentBlockType = getBlockType( parentBlockName );\n\n\t\treturn {\n\t\t\tselectedBlockClientId: _selectedBlockClientId,\n\t\t\tblockType:\n\t\t\t\t_selectedBlockClientId &&\n\t\t\t\tgetBlockType( getBlockName( _selectedBlockClientId ) ),\n\t\t\thasParents: parents.length,\n\t\t\tisContentOnly:\n\t\t\t\tgetBlockEditingMode( _selectedBlockClientId ) === 'contentOnly',\n\t\t\tshowParentSelector:\n\t\t\t\tparentBlockType &&\n\t\t\t\tgetBlockEditingMode( firstParentClientId ) === 'default' &&\n\t\t\t\thasBlockSupport(\n\t\t\t\t\tparentBlockType,\n\t\t\t\t\t'__experimentalParentSelector',\n\t\t\t\t\ttrue\n\t\t\t\t) &&\n\t\t\t\tselectedBlockClientIds.length <= 1 &&\n\t\t\t\tgetBlockEditingMode( _selectedBlockClientId ) === 'default',\n\t\t};\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tsetIsCollapsed( false );\n\t}, [ selectedBlockClientId ] );\n\n\tif (\n\t\tisContentOnly ||\n\t\t( blockType &&\n\t\t\t! hasBlockSupport( blockType, '__experimentalToolbar', true ) )\n\t) {\n\t\treturn null;\n\t}\n\n\t// Shifts the toolbar to make room for the parent block selector.\n\tconst classes = classnames( 'block-editor-block-contextual-toolbar', {\n\t\t'has-parent': hasParents && showParentSelector,\n\t\t'is-fixed': isFixed,\n\t\t'is-collapsed': isCollapsed,\n\t} );\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\tclassName={ classes }\n\t\t\t/* translators: accessibility text for the block toolbar */\n\t\t\taria-label={ __( 'Block tools' ) }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t{ ! isCollapsed && <BlockToolbar hideDragHandle={ isFixed } /> }\n\t\t\t{ isFixed && isLargeViewport && blockType && (\n\t\t\t\t<ToolbarGroup\n\t\t\t\t\tclassName={\n\t\t\t\t\t\tisCollapsed\n\t\t\t\t\t\t\t? 'block-editor-block-toolbar__group-expand-fixed-toolbar'\n\t\t\t\t\t\t\t: 'block-editor-block-toolbar__group-collapse-fixed-toolbar'\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\tas={ ToolbarButton }\n\t\t\t\t\t\tref={ toolbarButtonRef }\n\t\t\t\t\t\ticon={ isCollapsed ? next : previous }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetIsCollapsed( ( collapsed ) => ! collapsed );\n\t\t\t\t\t\t\ttoolbarButtonRef.current.focus();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tisCollapsed\n\t\t\t\t\t\t\t\t? __( 'Show block tools' )\n\t\t\t\t\t\t\t\t: __( 'Hide block tools' )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolbarGroup>\n\t\t\t) }\n\t\t</NavigableToolbar>\n\t);\n}\n\nexport default BlockContextualToolbar;\n"]}
@@ -150,6 +150,8 @@ export function useClipboardHandler() {
150
150
  if (shouldHandleWholeBlocks && !expandSelectionIsNeeded) {
151
151
  removeBlocks(selectedBlockClientIds);
152
152
  } else {
153
+ event.target.ownerDocument.activeElement.contentEditable = false;
154
+
153
155
  __unstableDeleteSelection();
154
156
  }
155
157
  } else if (event.type === 'paste') {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/copy-handler/index.js"],"names":["useCallback","serialize","pasteHandler","store","blocksStore","createBlock","findTransform","getBlockTransforms","documentHasSelection","documentHasUncollapsedSelection","__unstableStripHTML","stripHTML","useDispatch","useSelect","__","_n","sprintf","noticesStore","useRefEffect","getPasteEventData","blockEditorStore","useNotifyCopy","getBlockName","getBlockType","createSuccessNotice","eventType","selectedBlockClientIds","notice","length","clientId","title","type","useClipboardHandler","getBlocksByClientId","getSelectedBlockClientIds","hasMultiSelection","getSettings","__unstableIsFullySelected","__unstableIsSelectionCollapsed","__unstableIsSelectionMergeable","__unstableGetSelectedBlocksWithPartialSelection","canInsertBlockType","flashBlock","removeBlocks","replaceBlocks","__unstableDeleteSelection","__unstableExpandSelection","insertBlocks","notifyCopy","node","handler","event","defaultPrevented","target","ownerDocument","hasSelection","contains","activeElement","preventDefault","isSelectionMergeable","shouldHandleWholeBlocks","expandSelectionIsNeeded","blocks","head","tail","inBetweenBlocks","slice","wrapperBlockName","clipboardData","getData","JSON","parse","serialized","setData","toPlainText","__experimentalCanUserUseUnfilteredHTML","canUserUseUnfilteredHTML","plainText","html","files","fromTransforms","reduce","accumulator","file","transformation","transform","isMatch","push","flat","HTML","mode","selectedBlockClientId","every","block","name","undefined","addEventListener","removeEventListener","CopyHandler","children","replace","trim"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport {\n\tserialize,\n\tpasteHandler,\n\tstore as blocksStore,\n\tcreateBlock,\n\tfindTransform,\n\tgetBlockTransforms,\n} from '@wordpress/blocks';\nimport {\n\tdocumentHasSelection,\n\tdocumentHasUncollapsedSelection,\n\t__unstableStripHTML as stripHTML,\n} from '@wordpress/dom';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getPasteEventData } from '../../utils/pasting';\nimport { store as blockEditorStore } from '../../store';\n\nexport function useNotifyCopy() {\n\tconst { getBlockName } = useSelect( blockEditorStore );\n\tconst { getBlockType } = useSelect( blocksStore );\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\n\treturn useCallback( ( eventType, selectedBlockClientIds ) => {\n\t\tlet notice = '';\n\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\tconst clientId = selectedBlockClientIds[ 0 ];\n\t\t\tconst title = getBlockType( getBlockName( clientId ) )?.title;\n\t\t\tnotice =\n\t\t\t\teventType === 'copy'\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// Translators: Name of the block being copied, e.g. \"Paragraph\".\n\t\t\t\t\t\t\t__( 'Copied \"%s\" to clipboard.' ),\n\t\t\t\t\t\t\ttitle\n\t\t\t\t\t )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t// Translators: Name of the block being cut, e.g. \"Paragraph\".\n\t\t\t\t\t\t\t__( 'Moved \"%s\" to clipboard.' ),\n\t\t\t\t\t\t\ttitle\n\t\t\t\t\t );\n\t\t} else {\n\t\t\tnotice =\n\t\t\t\teventType === 'copy'\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// Translators: %d: Number of blocks being copied.\n\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t'Copied %d block to clipboard.',\n\t\t\t\t\t\t\t\t'Copied %d blocks to clipboard.',\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tselectedBlockClientIds.length\n\t\t\t\t\t )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t// Translators: %d: Number of blocks being cut.\n\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t'Moved %d block to clipboard.',\n\t\t\t\t\t\t\t\t'Moved %d blocks to clipboard.',\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tselectedBlockClientIds.length\n\t\t\t\t\t );\n\t\t}\n\t\tcreateSuccessNotice( notice, {\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t}, [] );\n}\n\nexport function useClipboardHandler() {\n\tconst {\n\t\tgetBlocksByClientId,\n\t\tgetSelectedBlockClientIds,\n\t\thasMultiSelection,\n\t\tgetSettings,\n\t\t__unstableIsFullySelected,\n\t\t__unstableIsSelectionCollapsed,\n\t\t__unstableIsSelectionMergeable,\n\t\t__unstableGetSelectedBlocksWithPartialSelection,\n\t\tcanInsertBlockType,\n\t} = useSelect( blockEditorStore );\n\tconst {\n\t\tflashBlock,\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\t__unstableDeleteSelection,\n\t\t__unstableExpandSelection,\n\t\tinsertBlocks,\n\t} = useDispatch( blockEditorStore );\n\tconst notifyCopy = useNotifyCopy();\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction handler( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\t// This was likely already handled in rich-text/use-paste-handler.js.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\t\tif ( selectedBlockClientIds.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Always handle multiple selected blocks.\n\t\t\tif ( ! hasMultiSelection() ) {\n\t\t\t\tconst { target } = event;\n\t\t\t\tconst { ownerDocument } = target;\n\t\t\t\t// If copying, only consider actual text selection as selection.\n\t\t\t\t// Otherwise, any focus on an input field is considered.\n\t\t\t\tconst hasSelection =\n\t\t\t\t\tevent.type === 'copy' || event.type === 'cut'\n\t\t\t\t\t\t? documentHasUncollapsedSelection( ownerDocument )\n\t\t\t\t\t\t: documentHasSelection( ownerDocument );\n\n\t\t\t\t// Let native copy behaviour take over in input fields.\n\t\t\t\tif ( hasSelection ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! node.contains( event.target.ownerDocument.activeElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconst isSelectionMergeable = __unstableIsSelectionMergeable();\n\t\t\tconst shouldHandleWholeBlocks =\n\t\t\t\t__unstableIsSelectionCollapsed() || __unstableIsFullySelected();\n\t\t\tconst expandSelectionIsNeeded =\n\t\t\t\t! shouldHandleWholeBlocks && ! isSelectionMergeable;\n\t\t\tif ( event.type === 'copy' || event.type === 'cut' ) {\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tflashBlock( selectedBlockClientIds[ 0 ] );\n\t\t\t\t}\n\t\t\t\t// If we have a partial selection that is not mergeable, just\n\t\t\t\t// expand the selection to the whole blocks.\n\t\t\t\tif ( expandSelectionIsNeeded ) {\n\t\t\t\t\t__unstableExpandSelection();\n\t\t\t\t} else {\n\t\t\t\t\tnotifyCopy( event.type, selectedBlockClientIds );\n\t\t\t\t\tlet blocks;\n\t\t\t\t\t// Check if we have partial selection.\n\t\t\t\t\tif ( shouldHandleWholeBlocks ) {\n\t\t\t\t\t\tblocks = getBlocksByClientId( selectedBlockClientIds );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [ head, tail ] =\n\t\t\t\t\t\t\t__unstableGetSelectedBlocksWithPartialSelection();\n\t\t\t\t\t\tconst inBetweenBlocks = getBlocksByClientId(\n\t\t\t\t\t\t\tselectedBlockClientIds.slice(\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length - 1\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tblocks = [ head, ...inBetweenBlocks, tail ];\n\t\t\t\t\t}\n\n\t\t\t\t\tconst wrapperBlockName = event.clipboardData.getData(\n\t\t\t\t\t\t'__unstableWrapperBlockName'\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( wrapperBlockName ) {\n\t\t\t\t\t\tblocks = createBlock(\n\t\t\t\t\t\t\twrapperBlockName,\n\t\t\t\t\t\t\tJSON.parse(\n\t\t\t\t\t\t\t\tevent.clipboardData.getData(\n\t\t\t\t\t\t\t\t\t'__unstableWrapperBlockAttributes'\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tblocks\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst serialized = serialize( blocks );\n\n\t\t\t\t\tevent.clipboardData.setData(\n\t\t\t\t\t\t'text/plain',\n\t\t\t\t\t\ttoPlainText( serialized )\n\t\t\t\t\t);\n\t\t\t\t\tevent.clipboardData.setData( 'text/html', serialized );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( event.type === 'cut' ) {\n\t\t\t\t// We need to also check if at the start we needed to\n\t\t\t\t// expand the selection, as in this point we might have\n\t\t\t\t// programmatically fully selected the blocks above.\n\t\t\t\tif ( shouldHandleWholeBlocks && ! expandSelectionIsNeeded ) {\n\t\t\t\t\tremoveBlocks( selectedBlockClientIds );\n\t\t\t\t} else {\n\t\t\t\t\t__unstableDeleteSelection();\n\t\t\t\t}\n\t\t\t} else if ( event.type === 'paste' ) {\n\t\t\t\tconst {\n\t\t\t\t\t__experimentalCanUserUseUnfilteredHTML:\n\t\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t} = getSettings();\n\t\t\t\tconst { plainText, html, files } = getPasteEventData( event );\n\t\t\t\tlet blocks = [];\n\n\t\t\t\tif ( files.length ) {\n\t\t\t\t\tconst fromTransforms = getBlockTransforms( 'from' );\n\t\t\t\t\tblocks = files\n\t\t\t\t\t\t.reduce( ( accumulator, file ) => {\n\t\t\t\t\t\t\tconst transformation = findTransform(\n\t\t\t\t\t\t\t\tfromTransforms,\n\t\t\t\t\t\t\t\t( transform ) =>\n\t\t\t\t\t\t\t\t\ttransform.type === 'files' &&\n\t\t\t\t\t\t\t\t\ttransform.isMatch( [ file ] )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif ( transformation ) {\n\t\t\t\t\t\t\t\taccumulator.push(\n\t\t\t\t\t\t\t\t\ttransformation.transform( [ file ] )\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn accumulator;\n\t\t\t\t\t\t}, [] )\n\t\t\t\t\t\t.flat();\n\t\t\t\t} else {\n\t\t\t\t\tblocks = pasteHandler( {\n\t\t\t\t\t\tHTML: html,\n\t\t\t\t\t\tplainText,\n\t\t\t\t\t\tmode: 'BLOCKS',\n\t\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tconst [ selectedBlockClientId ] = selectedBlockClientIds;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tblocks.every( ( block ) =>\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\t\t\tselectedBlockClientId\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\tinsertBlocks(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tselectedBlockClientId\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treplaceBlocks(\n\t\t\t\t\tselectedBlockClientIds,\n\t\t\t\t\tblocks,\n\t\t\t\t\tblocks.length - 1,\n\t\t\t\t\t-1\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tnode.ownerDocument.addEventListener( 'copy', handler );\n\t\tnode.ownerDocument.addEventListener( 'cut', handler );\n\t\tnode.ownerDocument.addEventListener( 'paste', handler );\n\n\t\treturn () => {\n\t\t\tnode.ownerDocument.removeEventListener( 'copy', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'cut', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'paste', handler );\n\t\t};\n\t}, [] );\n}\n\nfunction CopyHandler( { children } ) {\n\treturn <div ref={ useClipboardHandler() }>{ children }</div>;\n}\n\n/**\n * Given a string of HTML representing serialized blocks, returns the plain\n * text extracted after stripping the HTML of any tags and fixing line breaks.\n *\n * @param {string} html Serialized blocks.\n * @return {string} The plain-text content with any html removed.\n */\nfunction toPlainText( html ) {\n\t// Manually handle BR tags as line breaks prior to `stripHTML` call\n\thtml = html.replace( /<br>/g, '\\n' );\n\n\tconst plainText = stripHTML( html ).trim();\n\n\t// Merge any consecutive line breaks\n\treturn plainText.replace( /\\n\\n+/g, '\\n\\n' );\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/copy-handler/README.md\n */\nexport default CopyHandler;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/copy-handler/index.js"],"names":["useCallback","serialize","pasteHandler","store","blocksStore","createBlock","findTransform","getBlockTransforms","documentHasSelection","documentHasUncollapsedSelection","__unstableStripHTML","stripHTML","useDispatch","useSelect","__","_n","sprintf","noticesStore","useRefEffect","getPasteEventData","blockEditorStore","useNotifyCopy","getBlockName","getBlockType","createSuccessNotice","eventType","selectedBlockClientIds","notice","length","clientId","title","type","useClipboardHandler","getBlocksByClientId","getSelectedBlockClientIds","hasMultiSelection","getSettings","__unstableIsFullySelected","__unstableIsSelectionCollapsed","__unstableIsSelectionMergeable","__unstableGetSelectedBlocksWithPartialSelection","canInsertBlockType","flashBlock","removeBlocks","replaceBlocks","__unstableDeleteSelection","__unstableExpandSelection","insertBlocks","notifyCopy","node","handler","event","defaultPrevented","target","ownerDocument","hasSelection","contains","activeElement","preventDefault","isSelectionMergeable","shouldHandleWholeBlocks","expandSelectionIsNeeded","blocks","head","tail","inBetweenBlocks","slice","wrapperBlockName","clipboardData","getData","JSON","parse","serialized","setData","toPlainText","contentEditable","__experimentalCanUserUseUnfilteredHTML","canUserUseUnfilteredHTML","plainText","html","files","fromTransforms","reduce","accumulator","file","transformation","transform","isMatch","push","flat","HTML","mode","selectedBlockClientId","every","block","name","undefined","addEventListener","removeEventListener","CopyHandler","children","replace","trim"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport {\n\tserialize,\n\tpasteHandler,\n\tstore as blocksStore,\n\tcreateBlock,\n\tfindTransform,\n\tgetBlockTransforms,\n} from '@wordpress/blocks';\nimport {\n\tdocumentHasSelection,\n\tdocumentHasUncollapsedSelection,\n\t__unstableStripHTML as stripHTML,\n} from '@wordpress/dom';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getPasteEventData } from '../../utils/pasting';\nimport { store as blockEditorStore } from '../../store';\n\nexport function useNotifyCopy() {\n\tconst { getBlockName } = useSelect( blockEditorStore );\n\tconst { getBlockType } = useSelect( blocksStore );\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\n\treturn useCallback( ( eventType, selectedBlockClientIds ) => {\n\t\tlet notice = '';\n\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\tconst clientId = selectedBlockClientIds[ 0 ];\n\t\t\tconst title = getBlockType( getBlockName( clientId ) )?.title;\n\t\t\tnotice =\n\t\t\t\teventType === 'copy'\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// Translators: Name of the block being copied, e.g. \"Paragraph\".\n\t\t\t\t\t\t\t__( 'Copied \"%s\" to clipboard.' ),\n\t\t\t\t\t\t\ttitle\n\t\t\t\t\t )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t// Translators: Name of the block being cut, e.g. \"Paragraph\".\n\t\t\t\t\t\t\t__( 'Moved \"%s\" to clipboard.' ),\n\t\t\t\t\t\t\ttitle\n\t\t\t\t\t );\n\t\t} else {\n\t\t\tnotice =\n\t\t\t\teventType === 'copy'\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// Translators: %d: Number of blocks being copied.\n\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t'Copied %d block to clipboard.',\n\t\t\t\t\t\t\t\t'Copied %d blocks to clipboard.',\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tselectedBlockClientIds.length\n\t\t\t\t\t )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t// Translators: %d: Number of blocks being cut.\n\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t'Moved %d block to clipboard.',\n\t\t\t\t\t\t\t\t'Moved %d blocks to clipboard.',\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tselectedBlockClientIds.length\n\t\t\t\t\t );\n\t\t}\n\t\tcreateSuccessNotice( notice, {\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t}, [] );\n}\n\nexport function useClipboardHandler() {\n\tconst {\n\t\tgetBlocksByClientId,\n\t\tgetSelectedBlockClientIds,\n\t\thasMultiSelection,\n\t\tgetSettings,\n\t\t__unstableIsFullySelected,\n\t\t__unstableIsSelectionCollapsed,\n\t\t__unstableIsSelectionMergeable,\n\t\t__unstableGetSelectedBlocksWithPartialSelection,\n\t\tcanInsertBlockType,\n\t} = useSelect( blockEditorStore );\n\tconst {\n\t\tflashBlock,\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\t__unstableDeleteSelection,\n\t\t__unstableExpandSelection,\n\t\tinsertBlocks,\n\t} = useDispatch( blockEditorStore );\n\tconst notifyCopy = useNotifyCopy();\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction handler( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\t// This was likely already handled in rich-text/use-paste-handler.js.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\t\tif ( selectedBlockClientIds.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Always handle multiple selected blocks.\n\t\t\tif ( ! hasMultiSelection() ) {\n\t\t\t\tconst { target } = event;\n\t\t\t\tconst { ownerDocument } = target;\n\t\t\t\t// If copying, only consider actual text selection as selection.\n\t\t\t\t// Otherwise, any focus on an input field is considered.\n\t\t\t\tconst hasSelection =\n\t\t\t\t\tevent.type === 'copy' || event.type === 'cut'\n\t\t\t\t\t\t? documentHasUncollapsedSelection( ownerDocument )\n\t\t\t\t\t\t: documentHasSelection( ownerDocument );\n\n\t\t\t\t// Let native copy behaviour take over in input fields.\n\t\t\t\tif ( hasSelection ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! node.contains( event.target.ownerDocument.activeElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconst isSelectionMergeable = __unstableIsSelectionMergeable();\n\t\t\tconst shouldHandleWholeBlocks =\n\t\t\t\t__unstableIsSelectionCollapsed() || __unstableIsFullySelected();\n\t\t\tconst expandSelectionIsNeeded =\n\t\t\t\t! shouldHandleWholeBlocks && ! isSelectionMergeable;\n\t\t\tif ( event.type === 'copy' || event.type === 'cut' ) {\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tflashBlock( selectedBlockClientIds[ 0 ] );\n\t\t\t\t}\n\t\t\t\t// If we have a partial selection that is not mergeable, just\n\t\t\t\t// expand the selection to the whole blocks.\n\t\t\t\tif ( expandSelectionIsNeeded ) {\n\t\t\t\t\t__unstableExpandSelection();\n\t\t\t\t} else {\n\t\t\t\t\tnotifyCopy( event.type, selectedBlockClientIds );\n\t\t\t\t\tlet blocks;\n\t\t\t\t\t// Check if we have partial selection.\n\t\t\t\t\tif ( shouldHandleWholeBlocks ) {\n\t\t\t\t\t\tblocks = getBlocksByClientId( selectedBlockClientIds );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [ head, tail ] =\n\t\t\t\t\t\t\t__unstableGetSelectedBlocksWithPartialSelection();\n\t\t\t\t\t\tconst inBetweenBlocks = getBlocksByClientId(\n\t\t\t\t\t\t\tselectedBlockClientIds.slice(\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length - 1\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tblocks = [ head, ...inBetweenBlocks, tail ];\n\t\t\t\t\t}\n\n\t\t\t\t\tconst wrapperBlockName = event.clipboardData.getData(\n\t\t\t\t\t\t'__unstableWrapperBlockName'\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( wrapperBlockName ) {\n\t\t\t\t\t\tblocks = createBlock(\n\t\t\t\t\t\t\twrapperBlockName,\n\t\t\t\t\t\t\tJSON.parse(\n\t\t\t\t\t\t\t\tevent.clipboardData.getData(\n\t\t\t\t\t\t\t\t\t'__unstableWrapperBlockAttributes'\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tblocks\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst serialized = serialize( blocks );\n\n\t\t\t\t\tevent.clipboardData.setData(\n\t\t\t\t\t\t'text/plain',\n\t\t\t\t\t\ttoPlainText( serialized )\n\t\t\t\t\t);\n\t\t\t\t\tevent.clipboardData.setData( 'text/html', serialized );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( event.type === 'cut' ) {\n\t\t\t\t// We need to also check if at the start we needed to\n\t\t\t\t// expand the selection, as in this point we might have\n\t\t\t\t// programmatically fully selected the blocks above.\n\t\t\t\tif ( shouldHandleWholeBlocks && ! expandSelectionIsNeeded ) {\n\t\t\t\t\tremoveBlocks( selectedBlockClientIds );\n\t\t\t\t} else {\n\t\t\t\t\tevent.target.ownerDocument.activeElement.contentEditable = false;\n\t\t\t\t\t__unstableDeleteSelection();\n\t\t\t\t}\n\t\t\t} else if ( event.type === 'paste' ) {\n\t\t\t\tconst {\n\t\t\t\t\t__experimentalCanUserUseUnfilteredHTML:\n\t\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t} = getSettings();\n\t\t\t\tconst { plainText, html, files } = getPasteEventData( event );\n\t\t\t\tlet blocks = [];\n\n\t\t\t\tif ( files.length ) {\n\t\t\t\t\tconst fromTransforms = getBlockTransforms( 'from' );\n\t\t\t\t\tblocks = files\n\t\t\t\t\t\t.reduce( ( accumulator, file ) => {\n\t\t\t\t\t\t\tconst transformation = findTransform(\n\t\t\t\t\t\t\t\tfromTransforms,\n\t\t\t\t\t\t\t\t( transform ) =>\n\t\t\t\t\t\t\t\t\ttransform.type === 'files' &&\n\t\t\t\t\t\t\t\t\ttransform.isMatch( [ file ] )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif ( transformation ) {\n\t\t\t\t\t\t\t\taccumulator.push(\n\t\t\t\t\t\t\t\t\ttransformation.transform( [ file ] )\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn accumulator;\n\t\t\t\t\t\t}, [] )\n\t\t\t\t\t\t.flat();\n\t\t\t\t} else {\n\t\t\t\t\tblocks = pasteHandler( {\n\t\t\t\t\t\tHTML: html,\n\t\t\t\t\t\tplainText,\n\t\t\t\t\t\tmode: 'BLOCKS',\n\t\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tconst [ selectedBlockClientId ] = selectedBlockClientIds;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tblocks.every( ( block ) =>\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\t\t\tselectedBlockClientId\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\tinsertBlocks(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tselectedBlockClientId\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treplaceBlocks(\n\t\t\t\t\tselectedBlockClientIds,\n\t\t\t\t\tblocks,\n\t\t\t\t\tblocks.length - 1,\n\t\t\t\t\t-1\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tnode.ownerDocument.addEventListener( 'copy', handler );\n\t\tnode.ownerDocument.addEventListener( 'cut', handler );\n\t\tnode.ownerDocument.addEventListener( 'paste', handler );\n\n\t\treturn () => {\n\t\t\tnode.ownerDocument.removeEventListener( 'copy', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'cut', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'paste', handler );\n\t\t};\n\t}, [] );\n}\n\nfunction CopyHandler( { children } ) {\n\treturn <div ref={ useClipboardHandler() }>{ children }</div>;\n}\n\n/**\n * Given a string of HTML representing serialized blocks, returns the plain\n * text extracted after stripping the HTML of any tags and fixing line breaks.\n *\n * @param {string} html Serialized blocks.\n * @return {string} The plain-text content with any html removed.\n */\nfunction toPlainText( html ) {\n\t// Manually handle BR tags as line breaks prior to `stripHTML` call\n\thtml = html.replace( /<br>/g, '\\n' );\n\n\tconst plainText = stripHTML( html ).trim();\n\n\t// Merge any consecutive line breaks\n\treturn plainText.replace( /\\n\\n+/g, '\\n\\n' );\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/copy-handler/README.md\n */\nexport default CopyHandler;\n"]}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { createBlock, createBlocksFromInnerBlocksTemplate, store as blocksStore } from '@wordpress/blocks';
4
+ import { createBlock, createBlocksFromInnerBlocksTemplate, store as blocksStore, parse } from '@wordpress/blocks';
5
5
  import { useSelect } from '@wordpress/data';
6
6
  import { useCallback } from '@wordpress/element';
7
7
  /**
@@ -39,9 +39,13 @@ const useBlockTypesState = (rootClientId, onInsert) => {
39
39
  const onSelectItem = useCallback(({
40
40
  name,
41
41
  initialAttributes,
42
- innerBlocks
42
+ innerBlocks,
43
+ syncStatus,
44
+ content
43
45
  }, shouldFocusBlock) => {
44
- const insertedBlock = createBlock(name, initialAttributes, createBlocksFromInnerBlocksTemplate(innerBlocks));
46
+ const insertedBlock = syncStatus === 'unsynced' ? parse(content, {
47
+ __unstableSkipMigrationLogs: true
48
+ }) : createBlock(name, initialAttributes, createBlocksFromInnerBlocksTemplate(innerBlocks));
45
49
  onInsert(insertedBlock, undefined, shouldFocusBlock);
46
50
  }, [onInsert]);
47
51
  return [items, categories, collections, onSelectItem];
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-block-types-state.js"],"names":["createBlock","createBlocksFromInnerBlocksTemplate","store","blocksStore","useSelect","useCallback","blockEditorStore","useBlockTypesState","rootClientId","onInsert","categories","collections","items","select","getInserterItems","getCategories","getCollections","onSelectItem","name","initialAttributes","innerBlocks","shouldFocusBlock","insertedBlock","undefined"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,WADD,EAECC,mCAFD,EAGCC,KAAK,IAAIC,WAHV,QAIO,mBAJP;AAKA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SAASC,WAAT,QAA4B,oBAA5B;AAEA;AACA;AACA;;AACA,SAASH,KAAK,IAAII,gBAAlB,QAA0C,gBAA1C;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,kBAAkB,GAAG,CAAEC,YAAF,EAAgBC,QAAhB,KAA8B;AACxD,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,WAAd;AAA2BC,IAAAA;AAA3B,MAAqCR,SAAS,CACjDS,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA;AAAF,QAAuBD,MAAM,CAAEP,gBAAF,CAAnC;AACA,UAAM;AAAES,MAAAA,aAAF;AAAiBC,MAAAA;AAAjB,QAAoCH,MAAM,CAAEV,WAAF,CAAhD;AAEA,WAAO;AACNO,MAAAA,UAAU,EAAEK,aAAa,EADnB;AAENJ,MAAAA,WAAW,EAAEK,cAAc,EAFrB;AAGNJ,MAAAA,KAAK,EAAEE,gBAAgB,CAAEN,YAAF;AAHjB,KAAP;AAKA,GAVkD,EAWnD,CAAEA,YAAF,CAXmD,CAApD;AAcA,QAAMS,YAAY,GAAGZ,WAAW,CAC/B,CAAE;AAAEa,IAAAA,IAAF;AAAQC,IAAAA,iBAAR;AAA2BC,IAAAA;AAA3B,GAAF,EAA4CC,gBAA5C,KAAkE;AACjE,UAAMC,aAAa,GAAGtB,WAAW,CAChCkB,IADgC,EAEhCC,iBAFgC,EAGhClB,mCAAmC,CAAEmB,WAAF,CAHH,CAAjC;AAMAX,IAAAA,QAAQ,CAAEa,aAAF,EAAiBC,SAAjB,EAA4BF,gBAA5B,CAAR;AACA,GAT8B,EAU/B,CAAEZ,QAAF,CAV+B,CAAhC;AAaA,SAAO,CAAEG,KAAF,EAASF,UAAT,EAAqBC,WAArB,EAAkCM,YAAlC,CAAP;AACA,CA7BD;;AA+BA,eAAeV,kBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateBlock,\n\tcreateBlocksFromInnerBlocksTemplate,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\n\n/**\n * Retrieves the block types inserter state.\n *\n * @param {string=} rootClientId Insertion's root client ID.\n * @param {Function} onInsert function called when inserter a list of blocks.\n * @return {Array} Returns the block types state. (block types, categories, collections, onSelect handler)\n */\nconst useBlockTypesState = ( rootClientId, onInsert ) => {\n\tconst { categories, collections, items } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getInserterItems } = select( blockEditorStore );\n\t\t\tconst { getCategories, getCollections } = select( blocksStore );\n\n\t\t\treturn {\n\t\t\t\tcategories: getCategories(),\n\t\t\t\tcollections: getCollections(),\n\t\t\t\titems: getInserterItems( rootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\tconst onSelectItem = useCallback(\n\t\t( { name, initialAttributes, innerBlocks }, shouldFocusBlock ) => {\n\t\t\tconst insertedBlock = createBlock(\n\t\t\t\tname,\n\t\t\t\tinitialAttributes,\n\t\t\t\tcreateBlocksFromInnerBlocksTemplate( innerBlocks )\n\t\t\t);\n\n\t\t\tonInsert( insertedBlock, undefined, shouldFocusBlock );\n\t\t},\n\t\t[ onInsert ]\n\t);\n\n\treturn [ items, categories, collections, onSelectItem ];\n};\n\nexport default useBlockTypesState;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-block-types-state.js"],"names":["createBlock","createBlocksFromInnerBlocksTemplate","store","blocksStore","parse","useSelect","useCallback","blockEditorStore","useBlockTypesState","rootClientId","onInsert","categories","collections","items","select","getInserterItems","getCategories","getCollections","onSelectItem","name","initialAttributes","innerBlocks","syncStatus","content","shouldFocusBlock","insertedBlock","__unstableSkipMigrationLogs","undefined"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,WADD,EAECC,mCAFD,EAGCC,KAAK,IAAIC,WAHV,EAICC,KAJD,QAKO,mBALP;AAMA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SAASC,WAAT,QAA4B,oBAA5B;AAEA;AACA;AACA;;AACA,SAASJ,KAAK,IAAIK,gBAAlB,QAA0C,gBAA1C;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,kBAAkB,GAAG,CAAEC,YAAF,EAAgBC,QAAhB,KAA8B;AACxD,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,WAAd;AAA2BC,IAAAA;AAA3B,MAAqCR,SAAS,CACjDS,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA;AAAF,QAAuBD,MAAM,CAAEP,gBAAF,CAAnC;AACA,UAAM;AAAES,MAAAA,aAAF;AAAiBC,MAAAA;AAAjB,QAAoCH,MAAM,CAAEX,WAAF,CAAhD;AAEA,WAAO;AACNQ,MAAAA,UAAU,EAAEK,aAAa,EADnB;AAENJ,MAAAA,WAAW,EAAEK,cAAc,EAFrB;AAGNJ,MAAAA,KAAK,EAAEE,gBAAgB,CAAEN,YAAF;AAHjB,KAAP;AAKA,GAVkD,EAWnD,CAAEA,YAAF,CAXmD,CAApD;AAcA,QAAMS,YAAY,GAAGZ,WAAW,CAC/B,CACC;AAAEa,IAAAA,IAAF;AAAQC,IAAAA,iBAAR;AAA2BC,IAAAA,WAA3B;AAAwCC,IAAAA,UAAxC;AAAoDC,IAAAA;AAApD,GADD,EAECC,gBAFD,KAGK;AACJ,UAAMC,aAAa,GAClBH,UAAU,KAAK,UAAf,GACGlB,KAAK,CAAEmB,OAAF,EAAW;AAChBG,MAAAA,2BAA2B,EAAE;AADb,KAAX,CADR,GAIG1B,WAAW,CACXmB,IADW,EAEXC,iBAFW,EAGXnB,mCAAmC,CAAEoB,WAAF,CAHxB,CALf;AAWAX,IAAAA,QAAQ,CAAEe,aAAF,EAAiBE,SAAjB,EAA4BH,gBAA5B,CAAR;AACA,GAjB8B,EAkB/B,CAAEd,QAAF,CAlB+B,CAAhC;AAqBA,SAAO,CAAEG,KAAF,EAASF,UAAT,EAAqBC,WAArB,EAAkCM,YAAlC,CAAP;AACA,CArCD;;AAuCA,eAAeV,kBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateBlock,\n\tcreateBlocksFromInnerBlocksTemplate,\n\tstore as blocksStore,\n\tparse,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\n\n/**\n * Retrieves the block types inserter state.\n *\n * @param {string=} rootClientId Insertion's root client ID.\n * @param {Function} onInsert function called when inserter a list of blocks.\n * @return {Array} Returns the block types state. (block types, categories, collections, onSelect handler)\n */\nconst useBlockTypesState = ( rootClientId, onInsert ) => {\n\tconst { categories, collections, items } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getInserterItems } = select( blockEditorStore );\n\t\t\tconst { getCategories, getCollections } = select( blocksStore );\n\n\t\t\treturn {\n\t\t\t\tcategories: getCategories(),\n\t\t\t\tcollections: getCollections(),\n\t\t\t\titems: getInserterItems( rootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\tconst onSelectItem = useCallback(\n\t\t(\n\t\t\t{ name, initialAttributes, innerBlocks, syncStatus, content },\n\t\t\tshouldFocusBlock\n\t\t) => {\n\t\t\tconst insertedBlock =\n\t\t\t\tsyncStatus === 'unsynced'\n\t\t\t\t\t? parse( content, {\n\t\t\t\t\t\t\t__unstableSkipMigrationLogs: true,\n\t\t\t\t\t } )\n\t\t\t\t\t: createBlock(\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tinitialAttributes,\n\t\t\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate( innerBlocks )\n\t\t\t\t\t );\n\n\t\t\tonInsert( insertedBlock, undefined, shouldFocusBlock );\n\t\t},\n\t\t[ onInsert ]\n\t);\n\n\treturn [ items, categories, collections, onSelectItem ];\n};\n\nexport default useBlockTypesState;\n"]}
@@ -37,7 +37,7 @@ function InserterListItem({
37
37
  const blocks = useMemo(() => {
38
38
  return [createBlock(item.name, item.initialAttributes, createBlocksFromInnerBlocksTemplate(item.innerBlocks))];
39
39
  }, [item.name, item.initialAttributes, item.initialAttributes]);
40
- const isSynced = isReusableBlock(item) || isTemplatePart(item);
40
+ const isSynced = isReusableBlock(item) && item.syncStatus !== 'unsynced' || isTemplatePart(item);
41
41
  return createElement(InserterDraggableBlocks, {
42
42
  isEnabled: isDraggable && !item.disabled,
43
43
  blocks: blocks,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/inserter-list-item/index.js"],"names":["classnames","useMemo","useRef","memo","createBlock","createBlocksFromInnerBlocksTemplate","isReusableBlock","isTemplatePart","__experimentalTruncate","Truncate","ENTER","isAppleOS","BlockIcon","InserterListboxItem","InserterDraggableBlocks","InserterListItem","className","isFirst","item","onSelect","onHover","isDraggable","props","isDragging","itemIconStyle","icon","backgroundColor","background","color","foreground","blocks","name","initialAttributes","innerBlocks","isSynced","disabled","draggable","onDragStart","onDragEnd","event","current","isDisabled","preventDefault","metaKey","ctrlKey","keyCode","title"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo, useRef, memo } from '@wordpress/element';\nimport {\n\tcreateBlock,\n\tcreateBlocksFromInnerBlocksTemplate,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { __experimentalTruncate as Truncate } from '@wordpress/components';\nimport { ENTER, isAppleOS } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { InserterListboxItem } from '../inserter-listbox';\nimport InserterDraggableBlocks from '../inserter-draggable-blocks';\n\nfunction InserterListItem( {\n\tclassName,\n\tisFirst,\n\titem,\n\tonSelect,\n\tonHover,\n\tisDraggable,\n\t...props\n} ) {\n\tconst isDragging = useRef( false );\n\tconst itemIconStyle = item.icon\n\t\t? {\n\t\t\t\tbackgroundColor: item.icon.background,\n\t\t\t\tcolor: item.icon.foreground,\n\t\t }\n\t\t: {};\n\tconst blocks = useMemo( () => {\n\t\treturn [\n\t\t\tcreateBlock(\n\t\t\t\titem.name,\n\t\t\t\titem.initialAttributes,\n\t\t\t\tcreateBlocksFromInnerBlocksTemplate( item.innerBlocks )\n\t\t\t),\n\t\t];\n\t}, [ item.name, item.initialAttributes, item.initialAttributes ] );\n\n\tconst isSynced = isReusableBlock( item ) || isTemplatePart( item );\n\n\treturn (\n\t\t<InserterDraggableBlocks\n\t\t\tisEnabled={ isDraggable && ! item.disabled }\n\t\t\tblocks={ blocks }\n\t\t\ticon={ item.icon }\n\t\t>\n\t\t\t{ ( { draggable, onDragStart, onDragEnd } ) => (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'block-editor-block-types-list__list-item',\n\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'is-synced': isSynced,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\tdraggable={ draggable }\n\t\t\t\t\tonDragStart={ ( event ) => {\n\t\t\t\t\t\tisDragging.current = true;\n\t\t\t\t\t\tif ( onDragStart ) {\n\t\t\t\t\t\t\tonHover( null );\n\t\t\t\t\t\t\tonDragStart( event );\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t\tonDragEnd={ ( event ) => {\n\t\t\t\t\t\tisDragging.current = false;\n\t\t\t\t\t\tif ( onDragEnd ) {\n\t\t\t\t\t\t\tonDragEnd( event );\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<InserterListboxItem\n\t\t\t\t\t\tisFirst={ isFirst }\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'block-editor-block-types-list__item',\n\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tdisabled={ item.isDisabled }\n\t\t\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\tisAppleOS() ? event.metaKey : event.ctrlKey\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tonHover( null );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\tconst { keyCode } = event;\n\t\t\t\t\t\t\tif ( keyCode === ENTER ) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\tisAppleOS() ? event.metaKey : event.ctrlKey\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tonHover( null );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonMouseEnter={ () => {\n\t\t\t\t\t\t\tif ( isDragging.current ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonHover( item );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonMouseLeave={ () => onHover( null ) }\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-block-types-list__item-icon\"\n\t\t\t\t\t\t\tstyle={ itemIconStyle }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockIcon icon={ item.icon } showColors />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span className=\"block-editor-block-types-list__item-title\">\n\t\t\t\t\t\t\t<Truncate numberOfLines={ 3 }>\n\t\t\t\t\t\t\t\t{ item.title }\n\t\t\t\t\t\t\t</Truncate>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</InserterListboxItem>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</InserterDraggableBlocks>\n\t);\n}\n\nexport default memo( InserterListItem );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/inserter-list-item/index.js"],"names":["classnames","useMemo","useRef","memo","createBlock","createBlocksFromInnerBlocksTemplate","isReusableBlock","isTemplatePart","__experimentalTruncate","Truncate","ENTER","isAppleOS","BlockIcon","InserterListboxItem","InserterDraggableBlocks","InserterListItem","className","isFirst","item","onSelect","onHover","isDraggable","props","isDragging","itemIconStyle","icon","backgroundColor","background","color","foreground","blocks","name","initialAttributes","innerBlocks","isSynced","syncStatus","disabled","draggable","onDragStart","onDragEnd","event","current","isDisabled","preventDefault","metaKey","ctrlKey","keyCode","title"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo, useRef, memo } from '@wordpress/element';\nimport {\n\tcreateBlock,\n\tcreateBlocksFromInnerBlocksTemplate,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { __experimentalTruncate as Truncate } from '@wordpress/components';\nimport { ENTER, isAppleOS } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { InserterListboxItem } from '../inserter-listbox';\nimport InserterDraggableBlocks from '../inserter-draggable-blocks';\n\nfunction InserterListItem( {\n\tclassName,\n\tisFirst,\n\titem,\n\tonSelect,\n\tonHover,\n\tisDraggable,\n\t...props\n} ) {\n\tconst isDragging = useRef( false );\n\tconst itemIconStyle = item.icon\n\t\t? {\n\t\t\t\tbackgroundColor: item.icon.background,\n\t\t\t\tcolor: item.icon.foreground,\n\t\t }\n\t\t: {};\n\tconst blocks = useMemo( () => {\n\t\treturn [\n\t\t\tcreateBlock(\n\t\t\t\titem.name,\n\t\t\t\titem.initialAttributes,\n\t\t\t\tcreateBlocksFromInnerBlocksTemplate( item.innerBlocks )\n\t\t\t),\n\t\t];\n\t}, [ item.name, item.initialAttributes, item.initialAttributes ] );\n\n\tconst isSynced =\n\t\t( isReusableBlock( item ) && item.syncStatus !== 'unsynced' ) ||\n\t\tisTemplatePart( item );\n\n\treturn (\n\t\t<InserterDraggableBlocks\n\t\t\tisEnabled={ isDraggable && ! item.disabled }\n\t\t\tblocks={ blocks }\n\t\t\ticon={ item.icon }\n\t\t>\n\t\t\t{ ( { draggable, onDragStart, onDragEnd } ) => (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'block-editor-block-types-list__list-item',\n\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'is-synced': isSynced,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\tdraggable={ draggable }\n\t\t\t\t\tonDragStart={ ( event ) => {\n\t\t\t\t\t\tisDragging.current = true;\n\t\t\t\t\t\tif ( onDragStart ) {\n\t\t\t\t\t\t\tonHover( null );\n\t\t\t\t\t\t\tonDragStart( event );\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t\tonDragEnd={ ( event ) => {\n\t\t\t\t\t\tisDragging.current = false;\n\t\t\t\t\t\tif ( onDragEnd ) {\n\t\t\t\t\t\t\tonDragEnd( event );\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<InserterListboxItem\n\t\t\t\t\t\tisFirst={ isFirst }\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'block-editor-block-types-list__item',\n\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tdisabled={ item.isDisabled }\n\t\t\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\tisAppleOS() ? event.metaKey : event.ctrlKey\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tonHover( null );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\tconst { keyCode } = event;\n\t\t\t\t\t\t\tif ( keyCode === ENTER ) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\tisAppleOS() ? event.metaKey : event.ctrlKey\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tonHover( null );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonMouseEnter={ () => {\n\t\t\t\t\t\t\tif ( isDragging.current ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonHover( item );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonMouseLeave={ () => onHover( null ) }\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-block-types-list__item-icon\"\n\t\t\t\t\t\t\tstyle={ itemIconStyle }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockIcon icon={ item.icon } showColors />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span className=\"block-editor-block-types-list__item-title\">\n\t\t\t\t\t\t\t<Truncate numberOfLines={ 3 }>\n\t\t\t\t\t\t\t\t{ item.title }\n\t\t\t\t\t\t\t</Truncate>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</InserterListboxItem>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</InserterDraggableBlocks>\n\t);\n}\n\nexport default memo( InserterListItem );\n"]}
@@ -1,3 +1,5 @@
1
+ import { createElement } from "@wordpress/element";
2
+
1
3
  /**
2
4
  * WordPress dependencies
3
5
  */
@@ -15,13 +17,13 @@ import { Content } from './content';
15
17
  * the values of all rich text `Content` elements.
16
18
  */
17
19
 
18
- function addValuesForElement(element, ...args) {
20
+ function addValuesForElement(element, values, innerBlocks) {
19
21
  if (null === element || undefined === element || false === element) {
20
22
  return;
21
23
  }
22
24
 
23
25
  if (Array.isArray(element)) {
24
- return addValuesForElements(element, ...args);
26
+ return addValuesForElements(element, values, innerBlocks);
25
27
  }
26
28
 
27
29
  switch (typeof element) {
@@ -38,16 +40,15 @@ function addValuesForElement(element, ...args) {
38
40
  switch (type) {
39
41
  case StrictMode:
40
42
  case Fragment:
41
- return addValuesForElements(props.children, ...args);
43
+ return addValuesForElements(props.children, values, innerBlocks);
42
44
 
43
45
  case RawHTML:
44
46
  return;
45
47
 
46
48
  case InnerBlocks.Content:
47
- return addValuesForBlocks(...args);
49
+ return addValuesForBlocks(values, innerBlocks);
48
50
 
49
51
  case Content:
50
- const [values] = args;
51
52
  values.push(props.value);
52
53
  return;
53
54
  }
@@ -55,17 +56,14 @@ function addValuesForElement(element, ...args) {
55
56
  switch (typeof type) {
56
57
  case 'string':
57
58
  if (typeof props.children !== 'undefined') {
58
- return addValuesForElements(props.children, ...args);
59
+ return addValuesForElements(props.children, values, innerBlocks);
59
60
  }
60
61
 
61
62
  return;
62
63
 
63
64
  case 'function':
64
- if (type.prototype && typeof type.prototype.render === 'function') {
65
- return addValuesForElement(new type(props).render(), ...args);
66
- }
67
-
68
- return addValuesForElement(type(props), ...args);
65
+ const el = type.prototype && typeof type.prototype.render === 'function' ? new type(props).render() : type(props);
66
+ return addValuesForElement(el, values, innerBlocks);
69
67
  }
70
68
  }
71
69
 
@@ -77,10 +75,6 @@ function addValuesForElements(children, ...args) {
77
75
  }
78
76
  }
79
77
 
80
- function _getSaveElement(name, attributes, innerBlocks) {
81
- return getSaveElement(name, attributes, innerBlocks.map(block => _getSaveElement(block.name, block.attributes, block.innerBlocks)));
82
- }
83
-
84
78
  function addValuesForBlocks(values, blocks) {
85
79
  for (let i = 0; i < blocks.length; i++) {
86
80
  const {
@@ -88,9 +82,10 @@ function addValuesForBlocks(values, blocks) {
88
82
  attributes,
89
83
  innerBlocks
90
84
  } = blocks[i];
91
-
92
- const saveElement = _getSaveElement(name, attributes, innerBlocks);
93
-
85
+ const saveElement = getSaveElement(name, attributes, // Instead of letting save elements use `useInnerBlocksProps.save`,
86
+ // force them to use InnerBlocks.Content instead so we can intercept
87
+ // a single component.
88
+ createElement(InnerBlocks.Content, null));
94
89
  addValuesForElement(saveElement, values, innerBlocks);
95
90
  }
96
91
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/get-rich-text-values.js"],"names":["RawHTML","StrictMode","Fragment","getSaveElement","__unstableGetBlockProps","getBlockProps","InnerBlocks","Content","addValuesForElement","element","args","undefined","Array","isArray","addValuesForElements","type","props","children","addValuesForBlocks","values","push","value","prototype","render","i","length","_getSaveElement","name","attributes","innerBlocks","map","block","blocks","saveElement","getRichTextValues","skipFilters"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RawHTML, StrictMode, Fragment } from '@wordpress/element';\nimport {\n\tgetSaveElement,\n\t__unstableGetBlockProps as getBlockProps,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport InnerBlocks from '../inner-blocks';\nimport { Content } from './content';\n\n/*\n * This function is similar to `@wordpress/element`'s `renderToString` function,\n * except that it does not render the elements to a string, but instead collects\n * the values of all rich text `Content` elements.\n */\nfunction addValuesForElement( element, ...args ) {\n\tif ( null === element || undefined === element || false === element ) {\n\t\treturn;\n\t}\n\n\tif ( Array.isArray( element ) ) {\n\t\treturn addValuesForElements( element, ...args );\n\t}\n\n\tswitch ( typeof element ) {\n\t\tcase 'string':\n\t\tcase 'number':\n\t\t\treturn;\n\t}\n\n\tconst { type, props } = element;\n\n\tswitch ( type ) {\n\t\tcase StrictMode:\n\t\tcase Fragment:\n\t\t\treturn addValuesForElements( props.children, ...args );\n\t\tcase RawHTML:\n\t\t\treturn;\n\t\tcase InnerBlocks.Content:\n\t\t\treturn addValuesForBlocks( ...args );\n\t\tcase Content:\n\t\t\tconst [ values ] = args;\n\t\t\tvalues.push( props.value );\n\t\t\treturn;\n\t}\n\n\tswitch ( typeof type ) {\n\t\tcase 'string':\n\t\t\tif ( typeof props.children !== 'undefined' ) {\n\t\t\t\treturn addValuesForElements( props.children, ...args );\n\t\t\t}\n\t\t\treturn;\n\t\tcase 'function':\n\t\t\tif (\n\t\t\t\ttype.prototype &&\n\t\t\t\ttypeof type.prototype.render === 'function'\n\t\t\t) {\n\t\t\t\treturn addValuesForElement(\n\t\t\t\t\tnew type( props ).render(),\n\t\t\t\t\t...args\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn addValuesForElement( type( props ), ...args );\n\t}\n}\n\nfunction addValuesForElements( children, ...args ) {\n\tchildren = Array.isArray( children ) ? children : [ children ];\n\n\tfor ( let i = 0; i < children.length; i++ ) {\n\t\taddValuesForElement( children[ i ], ...args );\n\t}\n}\n\nfunction _getSaveElement( name, attributes, innerBlocks ) {\n\treturn getSaveElement(\n\t\tname,\n\t\tattributes,\n\t\tinnerBlocks.map( ( block ) =>\n\t\t\t_getSaveElement( block.name, block.attributes, block.innerBlocks )\n\t\t)\n\t);\n}\n\nfunction addValuesForBlocks( values, blocks ) {\n\tfor ( let i = 0; i < blocks.length; i++ ) {\n\t\tconst { name, attributes, innerBlocks } = blocks[ i ];\n\t\tconst saveElement = _getSaveElement( name, attributes, innerBlocks );\n\t\taddValuesForElement( saveElement, values, innerBlocks );\n\t}\n}\n\nexport function getRichTextValues( blocks = [] ) {\n\tgetBlockProps.skipFilters = true;\n\tconst values = [];\n\taddValuesForBlocks( values, blocks );\n\tgetBlockProps.skipFilters = false;\n\treturn values;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/get-rich-text-values.js"],"names":["RawHTML","StrictMode","Fragment","getSaveElement","__unstableGetBlockProps","getBlockProps","InnerBlocks","Content","addValuesForElement","element","values","innerBlocks","undefined","Array","isArray","addValuesForElements","type","props","children","addValuesForBlocks","push","value","el","prototype","render","args","i","length","blocks","name","attributes","saveElement","getRichTextValues","skipFilters"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RawHTML, StrictMode, Fragment } from '@wordpress/element';\nimport {\n\tgetSaveElement,\n\t__unstableGetBlockProps as getBlockProps,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport InnerBlocks from '../inner-blocks';\nimport { Content } from './content';\n\n/*\n * This function is similar to `@wordpress/element`'s `renderToString` function,\n * except that it does not render the elements to a string, but instead collects\n * the values of all rich text `Content` elements.\n */\nfunction addValuesForElement( element, values, innerBlocks ) {\n\tif ( null === element || undefined === element || false === element ) {\n\t\treturn;\n\t}\n\n\tif ( Array.isArray( element ) ) {\n\t\treturn addValuesForElements( element, values, innerBlocks );\n\t}\n\n\tswitch ( typeof element ) {\n\t\tcase 'string':\n\t\tcase 'number':\n\t\t\treturn;\n\t}\n\n\tconst { type, props } = element;\n\n\tswitch ( type ) {\n\t\tcase StrictMode:\n\t\tcase Fragment:\n\t\t\treturn addValuesForElements( props.children, values, innerBlocks );\n\t\tcase RawHTML:\n\t\t\treturn;\n\t\tcase InnerBlocks.Content:\n\t\t\treturn addValuesForBlocks( values, innerBlocks );\n\t\tcase Content:\n\t\t\tvalues.push( props.value );\n\t\t\treturn;\n\t}\n\n\tswitch ( typeof type ) {\n\t\tcase 'string':\n\t\t\tif ( typeof props.children !== 'undefined' ) {\n\t\t\t\treturn addValuesForElements(\n\t\t\t\t\tprops.children,\n\t\t\t\t\tvalues,\n\t\t\t\t\tinnerBlocks\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn;\n\t\tcase 'function':\n\t\t\tconst el =\n\t\t\t\ttype.prototype && typeof type.prototype.render === 'function'\n\t\t\t\t\t? new type( props ).render()\n\t\t\t\t\t: type( props );\n\t\t\treturn addValuesForElement( el, values, innerBlocks );\n\t}\n}\n\nfunction addValuesForElements( children, ...args ) {\n\tchildren = Array.isArray( children ) ? children : [ children ];\n\n\tfor ( let i = 0; i < children.length; i++ ) {\n\t\taddValuesForElement( children[ i ], ...args );\n\t}\n}\n\nfunction addValuesForBlocks( values, blocks ) {\n\tfor ( let i = 0; i < blocks.length; i++ ) {\n\t\tconst { name, attributes, innerBlocks } = blocks[ i ];\n\t\tconst saveElement = getSaveElement(\n\t\t\tname,\n\t\t\tattributes,\n\t\t\t// Instead of letting save elements use `useInnerBlocksProps.save`,\n\t\t\t// force them to use InnerBlocks.Content instead so we can intercept\n\t\t\t// a single component.\n\t\t\t<InnerBlocks.Content />\n\t\t);\n\t\taddValuesForElement( saveElement, values, innerBlocks );\n\t}\n}\n\nexport function getRichTextValues( blocks = [] ) {\n\tgetBlockProps.skipFilters = true;\n\tconst values = [];\n\taddValuesForBlocks( values, blocks );\n\tgetBlockProps.skipFilters = false;\n\treturn values;\n}\n"]}
@@ -362,7 +362,14 @@ function RichTextWrapper({
362
362
  }), anchorRef]),
363
363
  contentEditable: true,
364
364
  suppressContentEditableWarning: true,
365
- className: classnames('block-editor-rich-text__editable', props.className, 'rich-text')
365
+ className: classnames('block-editor-rich-text__editable', props.className, 'rich-text') // Setting tabIndex to 0 is unnecessary, the element is already
366
+ // focusable because it's contentEditable. This also fixes a
367
+ // Safari bug where it's not possible to Shift+Click multi
368
+ // select blocks when Shift Clicking into an element with
369
+ // tabIndex because Safari will focus the element. However,
370
+ // Safari will correctly ignore nested contentEditable elements.
371
+ ,
372
+ tabIndex: props.tabIndex === 0 ? null : props.tabIndex
366
373
  }));
367
374
  }
368
375