@wordpress/block-editor 8.5.0 → 8.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/build/components/block-content-overlay/index.js +13 -4
  2. package/build/components/block-content-overlay/index.js.map +1 -1
  3. package/build/components/block-lock/index.js +8 -0
  4. package/build/components/block-lock/index.js.map +1 -1
  5. package/build/components/block-lock/menu-item.js +5 -20
  6. package/build/components/block-lock/menu-item.js.map +1 -1
  7. package/build/components/block-lock/modal.js +33 -12
  8. package/build/components/block-lock/modal.js.map +1 -1
  9. package/build/components/block-lock/toolbar.js +7 -20
  10. package/build/components/block-lock/toolbar.js.map +1 -1
  11. package/build/components/block-lock/use-block-lock.js +53 -0
  12. package/build/components/block-lock/use-block-lock.js.map +1 -0
  13. package/build/components/block-pattern-setup/index.js +37 -22
  14. package/build/components/block-pattern-setup/index.js.map +1 -1
  15. package/build/components/block-pattern-setup/setup-toolbar.js +1 -1
  16. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  17. package/build/components/block-preview/auto.js +6 -3
  18. package/build/components/block-preview/auto.js.map +1 -1
  19. package/build/components/block-preview/index.js +4 -2
  20. package/build/components/block-preview/index.js.map +1 -1
  21. package/build/components/block-switcher/index.js +7 -2
  22. package/build/components/block-switcher/index.js.map +1 -1
  23. package/build/components/list-view/block-select-button.js +4 -10
  24. package/build/components/list-view/block-select-button.js.map +1 -1
  25. package/build/store/selectors.js +26 -2
  26. package/build/store/selectors.js.map +1 -1
  27. package/build-module/components/block-content-overlay/index.js +13 -4
  28. package/build-module/components/block-content-overlay/index.js.map +1 -1
  29. package/build-module/components/block-lock/index.js +1 -0
  30. package/build-module/components/block-lock/index.js.map +1 -1
  31. package/build-module/components/block-lock/menu-item.js +4 -18
  32. package/build-module/components/block-lock/menu-item.js.map +1 -1
  33. package/build-module/components/block-lock/modal.js +31 -12
  34. package/build-module/components/block-lock/modal.js.map +1 -1
  35. package/build-module/components/block-lock/toolbar.js +6 -18
  36. package/build-module/components/block-lock/toolbar.js.map +1 -1
  37. package/build-module/components/block-lock/use-block-lock.js +44 -0
  38. package/build-module/components/block-lock/use-block-lock.js.map +1 -0
  39. package/build-module/components/block-pattern-setup/index.js +39 -24
  40. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  41. package/build-module/components/block-pattern-setup/setup-toolbar.js +1 -1
  42. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  43. package/build-module/components/block-preview/auto.js +6 -3
  44. package/build-module/components/block-preview/auto.js.map +1 -1
  45. package/build-module/components/block-preview/index.js +4 -2
  46. package/build-module/components/block-preview/index.js.map +1 -1
  47. package/build-module/components/block-switcher/index.js +7 -2
  48. package/build-module/components/block-switcher/index.js.map +1 -1
  49. package/build-module/components/list-view/block-select-button.js +4 -9
  50. package/build-module/components/list-view/block-select-button.js.map +1 -1
  51. package/build-module/store/selectors.js +24 -2
  52. package/build-module/store/selectors.js.map +1 -1
  53. package/build-style/style-rtl.css +34 -25
  54. package/build-style/style.css +34 -25
  55. package/package.json +3 -3
  56. package/src/components/block-content-overlay/index.js +19 -2
  57. package/src/components/block-lock/index.js +1 -0
  58. package/src/components/block-lock/menu-item.js +3 -23
  59. package/src/components/block-lock/modal.js +37 -13
  60. package/src/components/block-lock/toolbar.js +4 -21
  61. package/src/components/block-lock/use-block-lock.js +49 -0
  62. package/src/components/block-pattern-setup/index.js +84 -59
  63. package/src/components/block-pattern-setup/setup-toolbar.js +3 -1
  64. package/src/components/block-pattern-setup/style.scss +32 -26
  65. package/src/components/block-preview/auto.js +10 -1
  66. package/src/components/block-preview/index.js +2 -0
  67. package/src/components/block-switcher/index.js +13 -1
  68. package/src/components/block-switcher/style.scss +7 -3
  69. package/src/components/block-switcher/test/__snapshots__/index.js.snap +15 -13
  70. package/src/components/list-view/block-select-button.js +2 -10
  71. package/src/store/selectors.js +22 -2
@@ -39,6 +39,7 @@ function BlockContentOverlay(_ref) {
39
39
  const [isOverlayActive, setIsOverlayActive] = (0, _element.useState)(true);
40
40
  const [isHovered, setIsHovered] = (0, _element.useState)(false);
41
41
  const {
42
+ canEdit,
42
43
  isParentSelected,
43
44
  hasChildSelected,
44
45
  isDraggingBlocks,
@@ -48,9 +49,11 @@ function BlockContentOverlay(_ref) {
48
49
  isBlockSelected,
49
50
  hasSelectedInnerBlock,
50
51
  isDraggingBlocks: _isDraggingBlocks,
51
- isBlockHighlighted
52
+ isBlockHighlighted,
53
+ canEditBlock
52
54
  } = select(_store.store);
53
55
  return {
56
+ canEdit: canEditBlock(clientId),
54
57
  isParentSelected: isBlockSelected(clientId),
55
58
  hasChildSelected: hasSelectedInnerBlock(clientId, true),
56
59
  isDraggingBlocks: _isDraggingBlocks(),
@@ -63,7 +66,13 @@ function BlockContentOverlay(_ref) {
63
66
  'is-dragging-blocks': isDraggingBlocks
64
67
  });
65
68
  (0, _element.useEffect)(() => {
66
- // Reenable when blocks are not in use.
69
+ // The overlay is always active when editing is locked.
70
+ if (!canEdit) {
71
+ setIsOverlayActive(true);
72
+ return;
73
+ } // Reenable when blocks are not in use.
74
+
75
+
67
76
  if (!isParentSelected && !hasChildSelected && !isOverlayActive) {
68
77
  setIsOverlayActive(true);
69
78
  } // Disable if parent selected by another means (such as list view).
@@ -81,7 +90,7 @@ function BlockContentOverlay(_ref) {
81
90
  if (hasChildSelected && isOverlayActive) {
82
91
  setIsOverlayActive(false);
83
92
  }
84
- }, [isParentSelected, hasChildSelected, isOverlayActive, isHovered]); // Disabled because the overlay div doesn't actually have a role or functionality
93
+ }, [isParentSelected, hasChildSelected, isOverlayActive, isHovered, canEdit]); // Disabled because the overlay div doesn't actually have a role or functionality
85
94
  // as far as the a11y is concerned. We're just catching the first click so that
86
95
  // the block can be selected without interacting with its contents.
87
96
 
@@ -91,7 +100,7 @@ function BlockContentOverlay(_ref) {
91
100
  className: classes,
92
101
  onMouseEnter: () => setIsHovered(true),
93
102
  onMouseLeave: () => setIsHovered(false),
94
- onMouseUp: isOverlayActive ? () => setIsOverlayActive(false) : undefined
103
+ onMouseUp: isOverlayActive && canEdit ? () => setIsOverlayActive(false) : undefined
95
104
  }), wrapperProps === null || wrapperProps === void 0 ? void 0 : wrapperProps.children);
96
105
  }
97
106
  /* eslint-enable jsx-a11y/no-static-element-interactions */
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-content-overlay/index.js"],"names":["BlockContentOverlay","clientId","tagName","TagName","wrapperProps","className","baseClassName","isOverlayActive","setIsOverlayActive","isHovered","setIsHovered","isParentSelected","hasChildSelected","isDraggingBlocks","isParentHighlighted","select","isBlockSelected","hasSelectedInnerBlock","_isDraggingBlocks","isBlockHighlighted","blockEditorStore","classes","undefined","children"],"mappings":";;;;;;;;;AAIA;;;;AADA;;AAMA;;AAKA;;AAdA;AACA;AACA;;AAIA;AACA;AACA;;AAGA;AACA;AACA;AAGe,SAASA,mBAAT,OAKX;AAAA,MALyC;AAC5CC,IAAAA,QAD4C;AAE5CC,IAAAA,OAAO,EAAEC,OAAO,GAAG,KAFyB;AAG5CC,IAAAA,YAH4C;AAI5CC,IAAAA;AAJ4C,GAKzC;AACH,QAAMC,aAAa,GAAG,oCAAtB;AACA,QAAM,CAAEC,eAAF,EAAmBC,kBAAnB,IAA0C,uBAAU,IAAV,CAAhD;AACA,QAAM,CAAEC,SAAF,EAAaC,YAAb,IAA8B,uBAAU,KAAV,CAApC;AAEA,QAAM;AACLC,IAAAA,gBADK;AAELC,IAAAA,gBAFK;AAGLC,IAAAA,gBAHK;AAILC,IAAAA;AAJK,MAKF,qBACDC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,eADK;AAELC,MAAAA,qBAFK;AAGLJ,MAAAA,gBAAgB,EAAEK,iBAHb;AAILC,MAAAA;AAJK,QAKFJ,MAAM,CAAEK,YAAF,CALV;AAMA,WAAO;AACNT,MAAAA,gBAAgB,EAAEK,eAAe,CAAEf,QAAF,CAD3B;AAENW,MAAAA,gBAAgB,EAAEK,qBAAqB,CAAEhB,QAAF,EAAY,IAAZ,CAFjC;AAGNY,MAAAA,gBAAgB,EAAEK,iBAAiB,EAH7B;AAINJ,MAAAA,mBAAmB,EAAEK,kBAAkB,CAAElB,QAAF;AAJjC,KAAP;AAMA,GAdE,EAeH,CAAEA,QAAF,CAfG,CALJ;AAuBA,QAAMoB,OAAO,GAAG,yBACff,aADe,EAEfF,YAFe,aAEfA,YAFe,uBAEfA,YAAY,CAAEC,SAFC,EAGfA,SAHe,EAIf;AACC,sBAAkBE,eADnB;AAEC,0BAAsBO,mBAFvB;AAGC,0BAAsBD;AAHvB,GAJe,CAAhB;AAWA,0BAAW,MAAM;AAChB;AACA,QAAK,CAAEF,gBAAF,IAAsB,CAAEC,gBAAxB,IAA4C,CAAEL,eAAnD,EAAqE;AACpEC,MAAAA,kBAAkB,CAAE,IAAF,CAAlB;AACA,KAJe,CAKhB;AACA;AACA;AACA;AACA;;;AACA,QAAKG,gBAAgB,IAAI,CAAEF,SAAtB,IAAmCF,eAAxC,EAA0D;AACzDC,MAAAA,kBAAkB,CAAE,KAAF,CAAlB;AACA,KAZe,CAahB;;;AACA,QAAKI,gBAAgB,IAAIL,eAAzB,EAA2C;AAC1CC,MAAAA,kBAAkB,CAAE,KAAF,CAAlB;AACA;AACD,GAjBD,EAiBG,CAAEG,gBAAF,EAAoBC,gBAApB,EAAsCL,eAAtC,EAAuDE,SAAvD,CAjBH,EAvCG,CA0DH;AACA;AACA;;AACA;;AACA,SACC,4BAAC,OAAD,6BACML,YADN;AAEC,IAAA,SAAS,EAAGiB,OAFb;AAGC,IAAA,YAAY,EAAG,MAAMX,YAAY,CAAE,IAAF,CAHlC;AAIC,IAAA,YAAY,EAAG,MAAMA,YAAY,CAAE,KAAF,CAJlC;AAKC,IAAA,SAAS,EACRH,eAAe,GAAG,MAAMC,kBAAkB,CAAE,KAAF,CAA3B,GAAuCc;AANxD,MASGlB,YATH,aASGA,YATH,uBASGA,YAAY,CAAEmB,QATjB,CADD;AAaA;AACD","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useState, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\nexport default function BlockContentOverlay( {\n\tclientId,\n\ttagName: TagName = 'div',\n\twrapperProps,\n\tclassName,\n} ) {\n\tconst baseClassName = 'block-editor-block-content-overlay';\n\tconst [ isOverlayActive, setIsOverlayActive ] = useState( true );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\n\tconst {\n\t\tisParentSelected,\n\t\thasChildSelected,\n\t\tisDraggingBlocks,\n\t\tisParentHighlighted,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockSelected,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tisDraggingBlocks: _isDraggingBlocks,\n\t\t\t\tisBlockHighlighted,\n\t\t\t} = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tisParentSelected: isBlockSelected( clientId ),\n\t\t\t\thasChildSelected: hasSelectedInnerBlock( clientId, true ),\n\t\t\t\tisDraggingBlocks: _isDraggingBlocks(),\n\t\t\t\tisParentHighlighted: isBlockHighlighted( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst classes = classnames(\n\t\tbaseClassName,\n\t\twrapperProps?.className,\n\t\tclassName,\n\t\t{\n\t\t\t'overlay-active': isOverlayActive,\n\t\t\t'parent-highlighted': isParentHighlighted,\n\t\t\t'is-dragging-blocks': isDraggingBlocks,\n\t\t}\n\t);\n\n\tuseEffect( () => {\n\t\t// Reenable when blocks are not in use.\n\t\tif ( ! isParentSelected && ! hasChildSelected && ! isOverlayActive ) {\n\t\t\tsetIsOverlayActive( true );\n\t\t}\n\t\t// Disable if parent selected by another means (such as list view).\n\t\t// We check hover to ensure the overlay click interaction is not taking place.\n\t\t// Trying to click the overlay will select the parent block via its 'focusin'\n\t\t// listener on the wrapper, so if the block is selected while hovered we will\n\t\t// let the mouseup disable the overlay instead.\n\t\tif ( isParentSelected && ! isHovered && isOverlayActive ) {\n\t\t\tsetIsOverlayActive( false );\n\t\t}\n\t\t// Ensure overlay is disabled if a child block is selected.\n\t\tif ( hasChildSelected && isOverlayActive ) {\n\t\t\tsetIsOverlayActive( false );\n\t\t}\n\t}, [ isParentSelected, hasChildSelected, isOverlayActive, isHovered ] );\n\n\t// Disabled because the overlay div doesn't actually have a role or functionality\n\t// as far as the a11y is concerned. We're just catching the first click so that\n\t// the block can be selected without interacting with its contents.\n\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\treturn (\n\t\t<TagName\n\t\t\t{ ...wrapperProps }\n\t\t\tclassName={ classes }\n\t\t\tonMouseEnter={ () => setIsHovered( true ) }\n\t\t\tonMouseLeave={ () => setIsHovered( false ) }\n\t\t\tonMouseUp={\n\t\t\t\tisOverlayActive ? () => setIsOverlayActive( false ) : undefined\n\t\t\t}\n\t\t>\n\t\t\t{ wrapperProps?.children }\n\t\t</TagName>\n\t);\n}\n/* eslint-enable jsx-a11y/no-static-element-interactions */\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-content-overlay/index.js"],"names":["BlockContentOverlay","clientId","tagName","TagName","wrapperProps","className","baseClassName","isOverlayActive","setIsOverlayActive","isHovered","setIsHovered","canEdit","isParentSelected","hasChildSelected","isDraggingBlocks","isParentHighlighted","select","isBlockSelected","hasSelectedInnerBlock","_isDraggingBlocks","isBlockHighlighted","canEditBlock","blockEditorStore","classes","undefined","children"],"mappings":";;;;;;;;;AAIA;;;;AADA;;AAMA;;AAKA;;AAdA;AACA;AACA;;AAIA;AACA;AACA;;AAGA;AACA;AACA;AAGe,SAASA,mBAAT,OAKX;AAAA,MALyC;AAC5CC,IAAAA,QAD4C;AAE5CC,IAAAA,OAAO,EAAEC,OAAO,GAAG,KAFyB;AAG5CC,IAAAA,YAH4C;AAI5CC,IAAAA;AAJ4C,GAKzC;AACH,QAAMC,aAAa,GAAG,oCAAtB;AACA,QAAM,CAAEC,eAAF,EAAmBC,kBAAnB,IAA0C,uBAAU,IAAV,CAAhD;AACA,QAAM,CAAEC,SAAF,EAAaC,YAAb,IAA8B,uBAAU,KAAV,CAApC;AAEA,QAAM;AACLC,IAAAA,OADK;AAELC,IAAAA,gBAFK;AAGLC,IAAAA,gBAHK;AAILC,IAAAA,gBAJK;AAKLC,IAAAA;AALK,MAMF,qBACDC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,eADK;AAELC,MAAAA,qBAFK;AAGLJ,MAAAA,gBAAgB,EAAEK,iBAHb;AAILC,MAAAA,kBAJK;AAKLC,MAAAA;AALK,QAMFL,MAAM,CAAEM,YAAF,CANV;AAOA,WAAO;AACNX,MAAAA,OAAO,EAAEU,YAAY,CAAEpB,QAAF,CADf;AAENW,MAAAA,gBAAgB,EAAEK,eAAe,CAAEhB,QAAF,CAF3B;AAGNY,MAAAA,gBAAgB,EAAEK,qBAAqB,CAAEjB,QAAF,EAAY,IAAZ,CAHjC;AAINa,MAAAA,gBAAgB,EAAEK,iBAAiB,EAJ7B;AAKNJ,MAAAA,mBAAmB,EAAEK,kBAAkB,CAAEnB,QAAF;AALjC,KAAP;AAOA,GAhBE,EAiBH,CAAEA,QAAF,CAjBG,CANJ;AA0BA,QAAMsB,OAAO,GAAG,yBACfjB,aADe,EAEfF,YAFe,aAEfA,YAFe,uBAEfA,YAAY,CAAEC,SAFC,EAGfA,SAHe,EAIf;AACC,sBAAkBE,eADnB;AAEC,0BAAsBQ,mBAFvB;AAGC,0BAAsBD;AAHvB,GAJe,CAAhB;AAWA,0BAAW,MAAM;AAChB;AACA,QAAK,CAAEH,OAAP,EAAiB;AAChBH,MAAAA,kBAAkB,CAAE,IAAF,CAAlB;AACA;AACA,KALe,CAOhB;;;AACA,QAAK,CAAEI,gBAAF,IAAsB,CAAEC,gBAAxB,IAA4C,CAAEN,eAAnD,EAAqE;AACpEC,MAAAA,kBAAkB,CAAE,IAAF,CAAlB;AACA,KAVe,CAWhB;AACA;AACA;AACA;AACA;;;AACA,QAAKI,gBAAgB,IAAI,CAAEH,SAAtB,IAAmCF,eAAxC,EAA0D;AACzDC,MAAAA,kBAAkB,CAAE,KAAF,CAAlB;AACA,KAlBe,CAmBhB;;;AACA,QAAKK,gBAAgB,IAAIN,eAAzB,EAA2C;AAC1CC,MAAAA,kBAAkB,CAAE,KAAF,CAAlB;AACA;AACD,GAvBD,EAuBG,CACFI,gBADE,EAEFC,gBAFE,EAGFN,eAHE,EAIFE,SAJE,EAKFE,OALE,CAvBH,EA1CG,CAyEH;AACA;AACA;;AACA;;AACA,SACC,4BAAC,OAAD,6BACMP,YADN;AAEC,IAAA,SAAS,EAAGmB,OAFb;AAGC,IAAA,YAAY,EAAG,MAAMb,YAAY,CAAE,IAAF,CAHlC;AAIC,IAAA,YAAY,EAAG,MAAMA,YAAY,CAAE,KAAF,CAJlC;AAKC,IAAA,SAAS,EACRH,eAAe,IAAII,OAAnB,GACG,MAAMH,kBAAkB,CAAE,KAAF,CAD3B,GAEGgB;AARL,MAWGpB,YAXH,aAWGA,YAXH,uBAWGA,YAAY,CAAEqB,QAXjB,CADD;AAeA;AACD","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useState, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\nexport default function BlockContentOverlay( {\n\tclientId,\n\ttagName: TagName = 'div',\n\twrapperProps,\n\tclassName,\n} ) {\n\tconst baseClassName = 'block-editor-block-content-overlay';\n\tconst [ isOverlayActive, setIsOverlayActive ] = useState( true );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\n\tconst {\n\t\tcanEdit,\n\t\tisParentSelected,\n\t\thasChildSelected,\n\t\tisDraggingBlocks,\n\t\tisParentHighlighted,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockSelected,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tisDraggingBlocks: _isDraggingBlocks,\n\t\t\t\tisBlockHighlighted,\n\t\t\t\tcanEditBlock,\n\t\t\t} = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tcanEdit: canEditBlock( clientId ),\n\t\t\t\tisParentSelected: isBlockSelected( clientId ),\n\t\t\t\thasChildSelected: hasSelectedInnerBlock( clientId, true ),\n\t\t\t\tisDraggingBlocks: _isDraggingBlocks(),\n\t\t\t\tisParentHighlighted: isBlockHighlighted( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst classes = classnames(\n\t\tbaseClassName,\n\t\twrapperProps?.className,\n\t\tclassName,\n\t\t{\n\t\t\t'overlay-active': isOverlayActive,\n\t\t\t'parent-highlighted': isParentHighlighted,\n\t\t\t'is-dragging-blocks': isDraggingBlocks,\n\t\t}\n\t);\n\n\tuseEffect( () => {\n\t\t// The overlay is always active when editing is locked.\n\t\tif ( ! canEdit ) {\n\t\t\tsetIsOverlayActive( true );\n\t\t\treturn;\n\t\t}\n\n\t\t// Reenable when blocks are not in use.\n\t\tif ( ! isParentSelected && ! hasChildSelected && ! isOverlayActive ) {\n\t\t\tsetIsOverlayActive( true );\n\t\t}\n\t\t// Disable if parent selected by another means (such as list view).\n\t\t// We check hover to ensure the overlay click interaction is not taking place.\n\t\t// Trying to click the overlay will select the parent block via its 'focusin'\n\t\t// listener on the wrapper, so if the block is selected while hovered we will\n\t\t// let the mouseup disable the overlay instead.\n\t\tif ( isParentSelected && ! isHovered && isOverlayActive ) {\n\t\t\tsetIsOverlayActive( false );\n\t\t}\n\t\t// Ensure overlay is disabled if a child block is selected.\n\t\tif ( hasChildSelected && isOverlayActive ) {\n\t\t\tsetIsOverlayActive( false );\n\t\t}\n\t}, [\n\t\tisParentSelected,\n\t\thasChildSelected,\n\t\tisOverlayActive,\n\t\tisHovered,\n\t\tcanEdit,\n\t] );\n\n\t// Disabled because the overlay div doesn't actually have a role or functionality\n\t// as far as the a11y is concerned. We're just catching the first click so that\n\t// the block can be selected without interacting with its contents.\n\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\treturn (\n\t\t<TagName\n\t\t\t{ ...wrapperProps }\n\t\t\tclassName={ classes }\n\t\t\tonMouseEnter={ () => setIsHovered( true ) }\n\t\t\tonMouseLeave={ () => setIsHovered( false ) }\n\t\t\tonMouseUp={\n\t\t\t\tisOverlayActive && canEdit\n\t\t\t\t\t? () => setIsOverlayActive( false )\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t>\n\t\t\t{ wrapperProps?.children }\n\t\t</TagName>\n\t);\n}\n/* eslint-enable jsx-a11y/no-static-element-interactions */\n"]}
@@ -23,10 +23,18 @@ Object.defineProperty(exports, "BlockLockToolbar", {
23
23
  return _toolbar.default;
24
24
  }
25
25
  });
26
+ Object.defineProperty(exports, "useBlockLock", {
27
+ enumerable: true,
28
+ get: function () {
29
+ return _useBlockLock.default;
30
+ }
31
+ });
26
32
 
27
33
  var _menuItem = _interopRequireDefault(require("./menu-item"));
28
34
 
29
35
  var _modal = _interopRequireDefault(require("./modal"));
30
36
 
31
37
  var _toolbar = _interopRequireDefault(require("./toolbar"));
38
+
39
+ var _useBlockLock = _interopRequireDefault(require("./use-block-lock"));
32
40
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA","sourcesContent":["export { default as BlockLockMenuItem } from './menu-item';\nexport { default as BlockLockModal } from './modal';\nexport { default as BlockLockToolbar } from './toolbar';\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA","sourcesContent":["export { default as BlockLockMenuItem } from './menu-item';\nexport { default as BlockLockModal } from './modal';\nexport { default as BlockLockToolbar } from './toolbar';\nexport { default as useBlockLock } from './use-block-lock';\n"]}
@@ -13,13 +13,11 @@ var _i18n = require("@wordpress/i18n");
13
13
 
14
14
  var _components = require("@wordpress/components");
15
15
 
16
- var _data = require("@wordpress/data");
17
-
18
16
  var _icons = require("@wordpress/icons");
19
17
 
20
- var _modal = _interopRequireDefault(require("./modal"));
18
+ var _useBlockLock = _interopRequireDefault(require("./use-block-lock"));
21
19
 
22
- var _store = require("../../store");
20
+ var _modal = _interopRequireDefault(require("./modal"));
23
21
 
24
22
  /**
25
23
  * WordPress dependencies
@@ -33,25 +31,12 @@ function BlockLockMenuItem(_ref) {
33
31
  clientId
34
32
  } = _ref;
35
33
  const {
36
- canLockBlock,
34
+ canLock,
37
35
  isLocked
38
- } = (0, _data.useSelect)(select => {
39
- const {
40
- canMoveBlock,
41
- canRemoveBlock,
42
- canLockBlockType,
43
- getBlockName,
44
- getBlockRootClientId
45
- } = select(_store.store);
46
- const rootClientId = getBlockRootClientId(clientId);
47
- return {
48
- canLockBlock: canLockBlockType(getBlockName(clientId)),
49
- isLocked: !canMoveBlock(clientId, rootClientId) || !canRemoveBlock(clientId, rootClientId)
50
- };
51
- }, [clientId]);
36
+ } = (0, _useBlockLock.default)(clientId, true);
52
37
  const [isModalOpen, toggleModal] = (0, _element.useReducer)(isActive => !isActive, false);
53
38
 
54
- if (!canLockBlock) {
39
+ if (!canLock) {
55
40
  return null;
56
41
  }
57
42
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/menu-item.js"],"names":["BlockLockMenuItem","clientId","canLockBlock","isLocked","select","canMoveBlock","canRemoveBlock","canLockBlockType","getBlockName","getBlockRootClientId","blockEditorStore","rootClientId","isModalOpen","toggleModal","isActive","label","unlock","lock"],"mappings":";;;;;;;;;AAIA;;AADA;;AAEA;;AACA;;AACA;;AAKA;;AACA;;AAbA;AACA;AACA;;AAOA;AACA;AACA;AAIe,SAASA,iBAAT,OAA2C;AAAA,MAAf;AAAEC,IAAAA;AAAF,GAAe;AACzD,QAAM;AAAEC,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,MAA6B,qBAChCC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,YADK;AAELC,MAAAA,cAFK;AAGLC,MAAAA,gBAHK;AAILC,MAAAA,YAJK;AAKLC,MAAAA;AALK,QAMFL,MAAM,CAAEM,YAAF,CANV;AAOA,UAAMC,YAAY,GAAGF,oBAAoB,CAAER,QAAF,CAAzC;AAEA,WAAO;AACNC,MAAAA,YAAY,EAAEK,gBAAgB,CAAEC,YAAY,CAAEP,QAAF,CAAd,CADxB;AAENE,MAAAA,QAAQ,EACP,CAAEE,YAAY,CAAEJ,QAAF,EAAYU,YAAZ,CAAd,IACA,CAAEL,cAAc,CAAEL,QAAF,EAAYU,YAAZ;AAJX,KAAP;AAMA,GAjBiC,EAkBlC,CAAEV,QAAF,CAlBkC,CAAnC;AAqBA,QAAM,CAAEW,WAAF,EAAeC,WAAf,IAA+B,yBAClCC,QAAF,IAAgB,CAAEA,QADkB,EAEpC,KAFoC,CAArC;;AAKA,MAAK,CAAEZ,YAAP,EAAsB;AACrB,WAAO,IAAP;AACA;;AAED,QAAMa,KAAK,GAAGZ,QAAQ,GAAG,cAAI,QAAJ,CAAH,GAAoB,cAAI,MAAJ,CAA1C;AAEA,SACC,qDACC,4BAAC,oBAAD;AAAU,IAAA,IAAI,EAAGA,QAAQ,GAAGa,aAAH,GAAYC,WAArC;AAA4C,IAAA,OAAO,EAAGJ;AAAtD,KACGE,KADH,CADD,EAIGH,WAAW,IACZ,4BAAC,cAAD;AAAgB,IAAA,QAAQ,EAAGX,QAA3B;AAAsC,IAAA,OAAO,EAAGY;AAAhD,IALF,CADD;AAUA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useReducer } from '@wordpress/element';\nimport { MenuItem } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { lock, unlock } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockLockModal from './modal';\nimport { store as blockEditorStore } from '../../store';\n\nexport default function BlockLockMenuItem( { clientId } ) {\n\tconst { canLockBlock, isLocked } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tcanMoveBlock,\n\t\t\t\tcanRemoveBlock,\n\t\t\t\tcanLockBlockType,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\treturn {\n\t\t\t\tcanLockBlock: canLockBlockType( getBlockName( clientId ) ),\n\t\t\t\tisLocked:\n\t\t\t\t\t! canMoveBlock( clientId, rootClientId ) ||\n\t\t\t\t\t! canRemoveBlock( clientId, rootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst [ isModalOpen, toggleModal ] = useReducer(\n\t\t( isActive ) => ! isActive,\n\t\tfalse\n\t);\n\n\tif ( ! canLockBlock ) {\n\t\treturn null;\n\t}\n\n\tconst label = isLocked ? __( 'Unlock' ) : __( 'Lock' );\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem icon={ isLocked ? unlock : lock } onClick={ toggleModal }>\n\t\t\t\t{ label }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<BlockLockModal clientId={ clientId } onClose={ toggleModal } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/menu-item.js"],"names":["BlockLockMenuItem","clientId","canLock","isLocked","isModalOpen","toggleModal","isActive","label","unlock","lock"],"mappings":";;;;;;;;;AAIA;;AADA;;AAEA;;AACA;;AAKA;;AACA;;AAZA;AACA;AACA;;AAMA;AACA;AACA;AAIe,SAASA,iBAAT,OAA2C;AAAA,MAAf;AAAEC,IAAAA;AAAF,GAAe;AACzD,QAAM;AAAEC,IAAAA,OAAF;AAAWC,IAAAA;AAAX,MAAwB,2BAAcF,QAAd,EAAwB,IAAxB,CAA9B;AAEA,QAAM,CAAEG,WAAF,EAAeC,WAAf,IAA+B,yBAClCC,QAAF,IAAgB,CAAEA,QADkB,EAEpC,KAFoC,CAArC;;AAKA,MAAK,CAAEJ,OAAP,EAAiB;AAChB,WAAO,IAAP;AACA;;AAED,QAAMK,KAAK,GAAGJ,QAAQ,GAAG,cAAI,QAAJ,CAAH,GAAoB,cAAI,MAAJ,CAA1C;AAEA,SACC,qDACC,4BAAC,oBAAD;AAAU,IAAA,IAAI,EAAGA,QAAQ,GAAGK,aAAH,GAAYC,WAArC;AAA4C,IAAA,OAAO,EAAGJ;AAAtD,KACGE,KADH,CADD,EAIGH,WAAW,IACZ,4BAAC,cAAD;AAAgB,IAAA,QAAQ,EAAGH,QAA3B;AAAsC,IAAA,OAAO,EAAGI;AAAhD,IALF,CADD;AAUA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useReducer } from '@wordpress/element';\nimport { MenuItem } from '@wordpress/components';\nimport { lock, unlock } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport useBlockLock from './use-block-lock';\nimport BlockLockModal from './modal';\n\nexport default function BlockLockMenuItem( { clientId } ) {\n\tconst { canLock, isLocked } = useBlockLock( clientId, true );\n\n\tconst [ isModalOpen, toggleModal ] = useReducer(\n\t\t( isActive ) => ! isActive,\n\t\tfalse\n\t);\n\n\tif ( ! canLock ) {\n\t\treturn null;\n\t}\n\n\tconst label = isLocked ? __( 'Unlock' ) : __( 'Lock' );\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem icon={ isLocked ? unlock : lock } onClick={ toggleModal }>\n\t\t\t\t{ label }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<BlockLockModal clientId={ clientId } onClose={ toggleModal } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
@@ -19,6 +19,10 @@ var _compose = require("@wordpress/compose");
19
19
 
20
20
  var _data = require("@wordpress/data");
21
21
 
22
+ var _blocks = require("@wordpress/blocks");
23
+
24
+ var _useBlockLock = _interopRequireDefault(require("./use-block-lock"));
25
+
22
26
  var _useBlockDisplayInformation = _interopRequireDefault(require("../use-block-display-information"));
23
27
 
24
28
  var _store = require("../../store");
@@ -40,18 +44,19 @@ function BlockLockModal(_ref) {
40
44
  remove: false
41
45
  });
42
46
  const {
47
+ canEdit,
43
48
  canMove,
44
49
  canRemove
50
+ } = (0, _useBlockLock.default)(clientId, true);
51
+ const {
52
+ isReusable
45
53
  } = (0, _data.useSelect)(select => {
46
54
  const {
47
- canMoveBlock,
48
- canRemoveBlock,
49
- getBlockRootClientId
55
+ getBlockName
50
56
  } = select(_store.store);
51
- const rootClientId = getBlockRootClientId(clientId);
57
+ const blockName = getBlockName(clientId);
52
58
  return {
53
- canMove: canMoveBlock(clientId, rootClientId),
54
- canRemove: canRemoveBlock(clientId, rootClientId)
59
+ isReusable: (0, _blocks.isReusableBlock)((0, _blocks.getBlockType)(blockName))
55
60
  };
56
61
  }, [clientId]);
57
62
  const {
@@ -62,11 +67,14 @@ function BlockLockModal(_ref) {
62
67
  (0, _element.useEffect)(() => {
63
68
  setLock({
64
69
  move: !canMove,
65
- remove: !canRemove
70
+ remove: !canRemove,
71
+ ...(isReusable ? {
72
+ edit: !canEdit
73
+ } : {})
66
74
  });
67
- }, [canMove, canRemove]);
75
+ }, [canEdit, canMove, canRemove, isReusable]);
68
76
  const isAllChecked = Object.values(lock).every(Boolean);
69
- const isIndeterminate = Object.values(lock).some(Boolean) && !isAllChecked;
77
+ const isMixed = Object.values(lock).some(Boolean) && !isAllChecked;
70
78
  return (0, _element.createElement)(_components.Modal, {
71
79
  title: (0, _i18n.sprintf)(
72
80
  /* translators: %s: Name of the block. */
@@ -92,14 +100,27 @@ function BlockLockModal(_ref) {
92
100
  id: instanceId
93
101
  }, (0, _i18n.__)('Lock all')),
94
102
  checked: isAllChecked,
95
- indeterminate: isIndeterminate,
103
+ indeterminate: isMixed,
96
104
  onChange: newValue => setLock({
97
105
  move: newValue,
98
- remove: newValue
106
+ remove: newValue,
107
+ ...(isReusable ? {
108
+ edit: newValue
109
+ } : {})
99
110
  })
100
111
  }), (0, _element.createElement)("ul", {
101
112
  className: "block-editor-block-lock-modal__checklist"
102
- }, (0, _element.createElement)("li", {
113
+ }, isReusable && (0, _element.createElement)("li", {
114
+ className: "block-editor-block-lock-modal__checklist-item"
115
+ }, (0, _element.createElement)(_components.CheckboxControl, {
116
+ label: (0, _element.createElement)(_element.Fragment, null, (0, _i18n.__)('Restrict editing'), (0, _element.createElement)(_components.Icon, {
117
+ icon: lock.edit ? _icons.lock : _icons.unlock
118
+ })),
119
+ checked: !!lock.edit,
120
+ onChange: edit => setLock(prevLock => ({ ...prevLock,
121
+ edit
122
+ }))
123
+ })), (0, _element.createElement)("li", {
103
124
  className: "block-editor-block-lock-modal__checklist-item"
104
125
  }, (0, _element.createElement)(_components.CheckboxControl, {
105
126
  label: (0, _element.createElement)(_element.Fragment, null, (0, _i18n.__)('Disable movement'), (0, _element.createElement)(_components.Icon, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/modal.js"],"names":["BlockLockModal","clientId","onClose","lock","setLock","move","remove","canMove","canRemove","select","canMoveBlock","canRemoveBlock","getBlockRootClientId","blockEditorStore","rootClientId","updateBlockAttributes","blockInformation","instanceId","isAllChecked","Object","values","every","Boolean","isIndeterminate","some","title","event","preventDefault","newValue","lockIcon","unlockIcon","prevLock"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useEffect, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tFlex,\n\tFlexItem,\n\tIcon,\n\tModal,\n} from '@wordpress/components';\nimport { lock as lockIcon, unlock as unlockIcon } from '@wordpress/icons';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\n\nexport default function BlockLockModal( { clientId, onClose } ) {\n\tconst [ lock, setLock ] = useState( { move: false, remove: false } );\n\tconst { canMove, canRemove } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tcanMoveBlock,\n\t\t\t\tcanRemoveBlock,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\treturn {\n\t\t\t\tcanMove: canMoveBlock( clientId, rootClientId ),\n\t\t\t\tcanRemove: canRemoveBlock( clientId, rootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst instanceId = useInstanceId(\n\t\tBlockLockModal,\n\t\t'block-editor-block-lock-modal__options-title'\n\t);\n\n\tuseEffect( () => {\n\t\tsetLock( {\n\t\t\tmove: ! canMove,\n\t\t\tremove: ! canRemove,\n\t\t} );\n\t}, [ canMove, canRemove ] );\n\n\tconst isAllChecked = Object.values( lock ).every( Boolean );\n\tconst isIndeterminate =\n\t\tObject.values( lock ).some( Boolean ) && ! isAllChecked;\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ sprintf(\n\t\t\t\t/* translators: %s: Name of the block. */\n\t\t\t\t__( 'Lock %s' ),\n\t\t\t\tblockInformation.title\n\t\t\t) }\n\t\t\toverlayClassName=\"block-editor-block-lock-modal\"\n\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\tonRequestClose={ onClose }\n\t\t>\n\t\t\t<form\n\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tupdateBlockAttributes( [ clientId ], { lock } );\n\t\t\t\t\tonClose();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Choose specific attributes to restrict or lock all available options.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t\t<div\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\taria-labelledby={ instanceId }\n\t\t\t\t\tclassName=\"block-editor-block-lock-modal__options\"\n\t\t\t\t>\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__options-title\"\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t<span id={ instanceId }>{ __( 'Lock all' ) }</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchecked={ isAllChecked }\n\t\t\t\t\t\tindeterminate={ isIndeterminate }\n\t\t\t\t\t\tonChange={ ( newValue ) =>\n\t\t\t\t\t\t\tsetLock( {\n\t\t\t\t\t\t\t\tmove: newValue,\n\t\t\t\t\t\t\t\tremove: newValue,\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<ul className=\"block-editor-block-lock-modal__checklist\">\n\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Disable movement' ) }\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tlock.move\n\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ lock.move }\n\t\t\t\t\t\t\t\tonChange={ ( move ) =>\n\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\tmove,\n\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Prevent removal' ) }\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tlock.remove\n\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ lock.remove }\n\t\t\t\t\t\t\t\tonChange={ ( remove ) =>\n\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\tremove,\n\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<Flex\n\t\t\t\t\tclassName=\"block-editor-block-lock-modal__actions\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\texpanded={ false }\n\t\t\t\t>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button variant=\"tertiary\" onClick={ onClose }>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t{ __( 'Apply' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/modal.js"],"names":["BlockLockModal","clientId","onClose","lock","setLock","move","remove","canEdit","canMove","canRemove","isReusable","select","getBlockName","blockEditorStore","blockName","updateBlockAttributes","blockInformation","instanceId","edit","isAllChecked","Object","values","every","Boolean","isMixed","some","title","event","preventDefault","newValue","lockIcon","unlockIcon","prevLock"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useEffect, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tFlex,\n\tFlexItem,\n\tIcon,\n\tModal,\n} from '@wordpress/components';\nimport { lock as lockIcon, unlock as unlockIcon } from '@wordpress/icons';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { isReusableBlock, getBlockType } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport useBlockLock from './use-block-lock';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\n\nexport default function BlockLockModal( { clientId, onClose } ) {\n\tconst [ lock, setLock ] = useState( { move: false, remove: false } );\n\tconst { canEdit, canMove, canRemove } = useBlockLock( clientId, true );\n\tconst { isReusable } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockName } = select( blockEditorStore );\n\t\t\tconst blockName = getBlockName( clientId );\n\n\t\t\treturn {\n\t\t\t\tisReusable: isReusableBlock( getBlockType( blockName ) ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst instanceId = useInstanceId(\n\t\tBlockLockModal,\n\t\t'block-editor-block-lock-modal__options-title'\n\t);\n\n\tuseEffect( () => {\n\t\tsetLock( {\n\t\t\tmove: ! canMove,\n\t\t\tremove: ! canRemove,\n\t\t\t...( isReusable ? { edit: ! canEdit } : {} ),\n\t\t} );\n\t}, [ canEdit, canMove, canRemove, isReusable ] );\n\n\tconst isAllChecked = Object.values( lock ).every( Boolean );\n\tconst isMixed = Object.values( lock ).some( Boolean ) && ! isAllChecked;\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ sprintf(\n\t\t\t\t/* translators: %s: Name of the block. */\n\t\t\t\t__( 'Lock %s' ),\n\t\t\t\tblockInformation.title\n\t\t\t) }\n\t\t\toverlayClassName=\"block-editor-block-lock-modal\"\n\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\tonRequestClose={ onClose }\n\t\t>\n\t\t\t<form\n\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tupdateBlockAttributes( [ clientId ], { lock } );\n\t\t\t\t\tonClose();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Choose specific attributes to restrict or lock all available options.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t\t<div\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\taria-labelledby={ instanceId }\n\t\t\t\t\tclassName=\"block-editor-block-lock-modal__options\"\n\t\t\t\t>\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__options-title\"\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t<span id={ instanceId }>{ __( 'Lock all' ) }</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchecked={ isAllChecked }\n\t\t\t\t\t\tindeterminate={ isMixed }\n\t\t\t\t\t\tonChange={ ( newValue ) =>\n\t\t\t\t\t\t\tsetLock( {\n\t\t\t\t\t\t\t\tmove: newValue,\n\t\t\t\t\t\t\t\tremove: newValue,\n\t\t\t\t\t\t\t\t...( isReusable ? { edit: newValue } : {} ),\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<ul className=\"block-editor-block-lock-modal__checklist\">\n\t\t\t\t\t\t{ isReusable && (\n\t\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Restrict editing' ) }\n\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\t\tlock.edit\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tchecked={ !! lock.edit }\n\t\t\t\t\t\t\t\t\tonChange={ ( edit ) =>\n\t\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\t\tedit,\n\t\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Disable movement' ) }\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tlock.move\n\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ lock.move }\n\t\t\t\t\t\t\t\tonChange={ ( move ) =>\n\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\tmove,\n\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Prevent removal' ) }\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tlock.remove\n\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ lock.remove }\n\t\t\t\t\t\t\t\tonChange={ ( remove ) =>\n\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\tremove,\n\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<Flex\n\t\t\t\t\tclassName=\"block-editor-block-lock-modal__actions\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\texpanded={ false }\n\t\t\t\t>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button variant=\"tertiary\" onClick={ onClose }>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t{ __( 'Apply' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n"]}
@@ -15,13 +15,11 @@ var _components = require("@wordpress/components");
15
15
 
16
16
  var _icons = require("@wordpress/icons");
17
17
 
18
- var _data = require("@wordpress/data");
19
-
20
18
  var _modal = _interopRequireDefault(require("./modal"));
21
19
 
22
- var _useBlockDisplayInformation = _interopRequireDefault(require("../use-block-display-information"));
20
+ var _useBlockLock = _interopRequireDefault(require("./use-block-lock"));
23
21
 
24
- var _store = require("../../store");
22
+ var _useBlockDisplayInformation = _interopRequireDefault(require("../use-block-display-information"));
25
23
 
26
24
  /**
27
25
  * WordPress dependencies
@@ -36,29 +34,18 @@ function BlockLockToolbar(_ref) {
36
34
  } = _ref;
37
35
  const blockInformation = (0, _useBlockDisplayInformation.default)(clientId);
38
36
  const {
37
+ canEdit,
39
38
  canMove,
40
39
  canRemove,
41
- canLockBlock
42
- } = (0, _data.useSelect)(select => {
43
- const {
44
- canMoveBlock,
45
- canRemoveBlock,
46
- canLockBlockType,
47
- getBlockName
48
- } = select(_store.store);
49
- return {
50
- canMove: canMoveBlock(clientId),
51
- canRemove: canRemoveBlock(clientId),
52
- canLockBlock: canLockBlockType(getBlockName(clientId))
53
- };
54
- }, [clientId]);
40
+ canLock
41
+ } = (0, _useBlockLock.default)(clientId);
55
42
  const [isModalOpen, toggleModal] = (0, _element.useReducer)(isActive => !isActive, false);
56
43
 
57
- if (!canLockBlock) {
44
+ if (!canLock) {
58
45
  return null;
59
46
  }
60
47
 
61
- if (canMove && canRemove) {
48
+ if (canEdit && canMove && canRemove) {
62
49
  return null;
63
50
  }
64
51
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/toolbar.js"],"names":["BlockLockToolbar","clientId","blockInformation","canMove","canRemove","canLockBlock","select","canMoveBlock","canRemoveBlock","canLockBlockType","getBlockName","blockEditorStore","isModalOpen","toggleModal","isActive","lock","title"],"mappings":";;;;;;;;;AAKA;;AAFA;;AACA;;AAEA;;AACA;;AAKA;;AACA;;AACA;;AAdA;AACA;AACA;;AAOA;AACA;AACA;AAKe,SAASA,gBAAT,OAA0C;AAAA,MAAf;AAAEC,IAAAA;AAAF,GAAe;AACxD,QAAMC,gBAAgB,GAAG,yCAA4BD,QAA5B,CAAzB;AACA,QAAM;AAAEE,IAAAA,OAAF;AAAWC,IAAAA,SAAX;AAAsBC,IAAAA;AAAtB,MAAuC,qBAC1CC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,YADK;AAELC,MAAAA,cAFK;AAGLC,MAAAA,gBAHK;AAILC,MAAAA;AAJK,QAKFJ,MAAM,CAAEK,YAAF,CALV;AAOA,WAAO;AACNR,MAAAA,OAAO,EAAEI,YAAY,CAAEN,QAAF,CADf;AAENG,MAAAA,SAAS,EAAEI,cAAc,CAAEP,QAAF,CAFnB;AAGNI,MAAAA,YAAY,EAAEI,gBAAgB,CAAEC,YAAY,CAAET,QAAF,CAAd;AAHxB,KAAP;AAKA,GAd2C,EAe5C,CAAEA,QAAF,CAf4C,CAA7C;AAkBA,QAAM,CAAEW,WAAF,EAAeC,WAAf,IAA+B,yBAClCC,QAAF,IAAgB,CAAEA,QADkB,EAEpC,KAFoC,CAArC;;AAKA,MAAK,CAAET,YAAP,EAAsB;AACrB,WAAO,IAAP;AACA;;AAED,MAAKF,OAAO,IAAIC,SAAhB,EAA4B;AAC3B,WAAO,IAAP;AACA;;AAED,SACC,qDACC,4BAAC,wBAAD;AAAc,IAAA,SAAS,EAAC;AAAxB,KACC,4BAAC,yBAAD;AACC,IAAA,IAAI,EAAGW,WADR;AAEC,IAAA,KAAK,EAAG;AACP;AACA,kBAAI,WAAJ,CAFO,EAGPb,gBAAgB,CAACc,KAHV,CAFT;AAOC,IAAA,OAAO,EAAGH;AAPX,IADD,CADD,EAYGD,WAAW,IACZ,4BAAC,cAAD;AAAgB,IAAA,QAAQ,EAAGX,QAA3B;AAAsC,IAAA,OAAO,EAAGY;AAAhD,IAbF,CADD;AAkBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useReducer } from '@wordpress/element';\nimport { lock } from '@wordpress/icons';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport BlockLockModal from './modal';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\n\nexport default function BlockLockToolbar( { clientId } ) {\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst { canMove, canRemove, canLockBlock } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tcanMoveBlock,\n\t\t\t\tcanRemoveBlock,\n\t\t\t\tcanLockBlockType,\n\t\t\t\tgetBlockName,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tcanMove: canMoveBlock( clientId ),\n\t\t\t\tcanRemove: canRemoveBlock( clientId ),\n\t\t\t\tcanLockBlock: canLockBlockType( getBlockName( clientId ) ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst [ isModalOpen, toggleModal ] = useReducer(\n\t\t( isActive ) => ! isActive,\n\t\tfalse\n\t);\n\n\tif ( ! canLockBlock ) {\n\t\treturn null;\n\t}\n\n\tif ( canMove && canRemove ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarGroup className=\"block-editor-block-lock-toolbar\">\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ lock }\n\t\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t\t/* translators: %s: block name */\n\t\t\t\t\t\t__( 'Unlock %s' ),\n\t\t\t\t\t\tblockInformation.title\n\t\t\t\t\t) }\n\t\t\t\t\tonClick={ toggleModal }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<BlockLockModal clientId={ clientId } onClose={ toggleModal } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/toolbar.js"],"names":["BlockLockToolbar","clientId","blockInformation","canEdit","canMove","canRemove","canLock","isModalOpen","toggleModal","isActive","lock","title"],"mappings":";;;;;;;;;AAKA;;AAFA;;AACA;;AAEA;;AAKA;;AACA;;AACA;;AAbA;AACA;AACA;;AAMA;AACA;AACA;AAKe,SAASA,gBAAT,OAA0C;AAAA,MAAf;AAAEC,IAAAA;AAAF,GAAe;AACxD,QAAMC,gBAAgB,GAAG,yCAA4BD,QAA5B,CAAzB;AACA,QAAM;AAAEE,IAAAA,OAAF;AAAWC,IAAAA,OAAX;AAAoBC,IAAAA,SAApB;AAA+BC,IAAAA;AAA/B,MAA2C,2BAAcL,QAAd,CAAjD;AAEA,QAAM,CAAEM,WAAF,EAAeC,WAAf,IAA+B,yBAClCC,QAAF,IAAgB,CAAEA,QADkB,EAEpC,KAFoC,CAArC;;AAKA,MAAK,CAAEH,OAAP,EAAiB;AAChB,WAAO,IAAP;AACA;;AAED,MAAKH,OAAO,IAAIC,OAAX,IAAsBC,SAA3B,EAAuC;AACtC,WAAO,IAAP;AACA;;AAED,SACC,qDACC,4BAAC,wBAAD;AAAc,IAAA,SAAS,EAAC;AAAxB,KACC,4BAAC,yBAAD;AACC,IAAA,IAAI,EAAGK,WADR;AAEC,IAAA,KAAK,EAAG;AACP;AACA,kBAAI,WAAJ,CAFO,EAGPR,gBAAgB,CAACS,KAHV,CAFT;AAOC,IAAA,OAAO,EAAGH;AAPX,IADD,CADD,EAYGD,WAAW,IACZ,4BAAC,cAAD;AAAgB,IAAA,QAAQ,EAAGN,QAA3B;AAAsC,IAAA,OAAO,EAAGO;AAAhD,IAbF,CADD;AAkBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useReducer } from '@wordpress/element';\nimport { lock } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockLockModal from './modal';\nimport useBlockLock from './use-block-lock';\nimport useBlockDisplayInformation from '../use-block-display-information';\n\nexport default function BlockLockToolbar( { clientId } ) {\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst { canEdit, canMove, canRemove, canLock } = useBlockLock( clientId );\n\n\tconst [ isModalOpen, toggleModal ] = useReducer(\n\t\t( isActive ) => ! isActive,\n\t\tfalse\n\t);\n\n\tif ( ! canLock ) {\n\t\treturn null;\n\t}\n\n\tif ( canEdit && canMove && canRemove ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarGroup className=\"block-editor-block-lock-toolbar\">\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ lock }\n\t\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t\t/* translators: %s: block name */\n\t\t\t\t\t\t__( 'Unlock %s' ),\n\t\t\t\t\t\tblockInformation.title\n\t\t\t\t\t) }\n\t\t\t\t\tonClick={ toggleModal }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<BlockLockModal clientId={ clientId } onClose={ toggleModal } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useBlockLock;
7
+
8
+ var _data = require("@wordpress/data");
9
+
10
+ var _store = require("../../store");
11
+
12
+ /**
13
+ * WordPress dependencies
14
+ */
15
+
16
+ /**
17
+ * Internal dependencies
18
+ */
19
+
20
+ /**
21
+ * Return details about the block lock status.
22
+ *
23
+ * @param {string} clientId The block client Id.
24
+ * @param {boolean} checkParent Optional. The status is derived from the parent `templateLock`
25
+ * when the current block's lock state isn't defined.
26
+ *
27
+ * @return {Object} Block lock status
28
+ */
29
+ function useBlockLock(clientId) {
30
+ let checkParent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
31
+ return (0, _data.useSelect)(select => {
32
+ const {
33
+ canEditBlock,
34
+ canMoveBlock,
35
+ canRemoveBlock,
36
+ canLockBlockType,
37
+ getBlockName,
38
+ getBlockRootClientId
39
+ } = select(_store.store);
40
+ const rootClientId = checkParent ? getBlockRootClientId(clientId) : null;
41
+ const canEdit = canEditBlock(clientId);
42
+ const canMove = canMoveBlock(clientId, rootClientId);
43
+ const canRemove = canRemoveBlock(clientId, rootClientId);
44
+ return {
45
+ canEdit,
46
+ canMove,
47
+ canRemove,
48
+ canLock: canLockBlockType(getBlockName(clientId)),
49
+ isLocked: !canEdit || !canMove || !canRemove
50
+ };
51
+ }, [clientId, checkParent]);
52
+ }
53
+ //# sourceMappingURL=use-block-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/use-block-lock.js"],"names":["useBlockLock","clientId","checkParent","select","canEditBlock","canMoveBlock","canRemoveBlock","canLockBlockType","getBlockName","getBlockRootClientId","blockEditorStore","rootClientId","canEdit","canMove","canRemove","canLock","isLocked"],"mappings":";;;;;;;AAGA;;AAKA;;AARA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,YAAT,CAAuBC,QAAvB,EAAuD;AAAA,MAAtBC,WAAsB,uEAAR,KAAQ;AACrE,SAAO,qBACJC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,YADK;AAELC,MAAAA,YAFK;AAGLC,MAAAA,cAHK;AAILC,MAAAA,gBAJK;AAKLC,MAAAA,YALK;AAMLC,MAAAA;AANK,QAOFN,MAAM,CAAEO,YAAF,CAPV;AAQA,UAAMC,YAAY,GAAGT,WAAW,GAC7BO,oBAAoB,CAAER,QAAF,CADS,GAE7B,IAFH;AAIA,UAAMW,OAAO,GAAGR,YAAY,CAAEH,QAAF,CAA5B;AACA,UAAMY,OAAO,GAAGR,YAAY,CAAEJ,QAAF,EAAYU,YAAZ,CAA5B;AACA,UAAMG,SAAS,GAAGR,cAAc,CAAEL,QAAF,EAAYU,YAAZ,CAAhC;AAEA,WAAO;AACNC,MAAAA,OADM;AAENC,MAAAA,OAFM;AAGNC,MAAAA,SAHM;AAINC,MAAAA,OAAO,EAAER,gBAAgB,CAAEC,YAAY,CAAEP,QAAF,CAAd,CAJnB;AAKNe,MAAAA,QAAQ,EAAE,CAAEJ,OAAF,IAAa,CAAEC,OAAf,IAA0B,CAAEC;AALhC,KAAP;AAOA,GAzBK,EA0BN,CAAEb,QAAF,EAAYC,WAAZ,CA1BM,CAAP;AA4BA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Return details about the block lock status.\n *\n * @param {string} clientId The block client Id.\n * @param {boolean} checkParent Optional. The status is derived from the parent `templateLock`\n * when the current block's lock state isn't defined.\n *\n * @return {Object} Block lock status\n */\nexport default function useBlockLock( clientId, checkParent = false ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tcanEditBlock,\n\t\t\t\tcanMoveBlock,\n\t\t\t\tcanRemoveBlock,\n\t\t\t\tcanLockBlockType,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = checkParent\n\t\t\t\t? getBlockRootClientId( clientId )\n\t\t\t\t: null;\n\n\t\t\tconst canEdit = canEditBlock( clientId );\n\t\t\tconst canMove = canMoveBlock( clientId, rootClientId );\n\t\t\tconst canRemove = canRemoveBlock( clientId, rootClientId );\n\n\t\t\treturn {\n\t\t\t\tcanEdit,\n\t\t\t\tcanMove,\n\t\t\t\tcanRemove,\n\t\t\t\tcanLock: canLockBlockType( getBlockName( clientId ) ),\n\t\t\t\tisLocked: ! canEdit || ! canMove || ! canRemove,\n\t\t\t};\n\t\t},\n\t\t[ clientId, checkParent ]\n\t);\n}\n"]}
@@ -43,7 +43,8 @@ const SetupContent = _ref => {
43
43
  viewMode,
44
44
  activeSlide,
45
45
  patterns,
46
- onBlockPatternSelect
46
+ onBlockPatternSelect,
47
+ height
47
48
  } = _ref;
48
49
  const composite = (0, _components.__unstableUseCompositeState)();
49
50
  const containerClass = 'block-editor-block-pattern-setup__container';
@@ -51,17 +52,28 @@ const SetupContent = _ref => {
51
52
  if (viewMode === _constants.VIEWMODES.carousel) {
52
53
  const slideClass = new Map([[activeSlide, 'active-slide'], [activeSlide - 1, 'previous-slide'], [activeSlide + 1, 'next-slide']]);
53
54
  return (0, _element.createElement)("div", {
55
+ className: "block-editor-block-pattern-setup__carousel",
56
+ style: {
57
+ height
58
+ }
59
+ }, (0, _element.createElement)("div", {
54
60
  className: containerClass
55
61
  }, (0, _element.createElement)("ul", {
56
62
  className: "carousel-container"
57
63
  }, patterns.map((pattern, index) => (0, _element.createElement)(BlockPatternSlide, {
58
64
  className: slideClass.get(index) || '',
59
65
  key: pattern.name,
60
- pattern: pattern
61
- }))));
66
+ pattern: pattern,
67
+ minHeight: height
68
+ })))));
62
69
  }
63
70
 
64
- return (0, _element.createElement)(_components.__unstableComposite, (0, _extends2.default)({}, composite, {
71
+ return (0, _element.createElement)("div", {
72
+ style: {
73
+ height
74
+ },
75
+ className: "block-editor-block-pattern-setup__grid"
76
+ }, (0, _element.createElement)(_components.__unstableComposite, (0, _extends2.default)({}, composite, {
65
77
  role: "listbox",
66
78
  className: containerClass,
67
79
  "aria-label": (0, _i18n.__)('Patterns list')
@@ -70,7 +82,7 @@ const SetupContent = _ref => {
70
82
  pattern: pattern,
71
83
  onSelect: onBlockPatternSelect,
72
84
  composite: composite
73
- })));
85
+ }))));
74
86
  };
75
87
 
76
88
  function BlockPattern(_ref2) {
@@ -82,7 +94,6 @@ function BlockPattern(_ref2) {
82
94
  const baseClassName = 'block-editor-block-pattern-setup-list';
83
95
  const {
84
96
  blocks,
85
- title,
86
97
  description,
87
98
  viewportWidth = 700
88
99
  } = pattern;
@@ -100,9 +111,7 @@ function BlockPattern(_ref2) {
100
111
  }), (0, _element.createElement)(_blockPreview.default, {
101
112
  blocks: blocks,
102
113
  viewportWidth: viewportWidth
103
- }), (0, _element.createElement)("div", {
104
- className: `${baseClassName}__item-title`
105
- }, title)), !!description && (0, _element.createElement)(_components.VisuallyHidden, {
114
+ })), !!description && (0, _element.createElement)(_components.VisuallyHidden, {
106
115
  id: descriptionId
107
116
  }, description));
108
117
  }
@@ -110,7 +119,8 @@ function BlockPattern(_ref2) {
110
119
  function BlockPatternSlide(_ref3) {
111
120
  let {
112
121
  className,
113
- pattern
122
+ pattern,
123
+ minHeight
114
124
  } = _ref3;
115
125
  const {
116
126
  blocks,
@@ -124,7 +134,7 @@ function BlockPatternSlide(_ref3) {
124
134
  "aria-describedby": description ? descriptionId : undefined
125
135
  }, (0, _element.createElement)(_blockPreview.default, {
126
136
  blocks: blocks,
127
- __experimentalLive: true
137
+ __experimentalMinHeight: minHeight
128
138
  }), !!description && (0, _element.createElement)(_components.VisuallyHidden, {
129
139
  id: descriptionId
130
140
  }, description));
@@ -145,6 +155,9 @@ const BlockPatternSetup = _ref4 => {
145
155
  replaceBlock
146
156
  } = (0, _data.useDispatch)(_store.store);
147
157
  const patterns = (0, _usePatternsSetup.default)(clientId, blockName, filterPatternsFn);
158
+ const [contentResizeListener, {
159
+ height: contentHeight
160
+ }] = (0, _compose.useResizeObserver)();
148
161
 
149
162
  if (!(patterns !== null && patterns !== void 0 && patterns.length) || showBlank) {
150
163
  return startBlankComponent;
@@ -156,9 +169,18 @@ const BlockPatternSetup = _ref4 => {
156
169
  };
157
170
 
158
171
  const onPatternSelectCallback = onBlockPatternSelect || onBlockPatternSelectDefault;
159
- return (0, _element.createElement)("div", {
172
+ const onStartBlank = startBlankComponent ? () => {
173
+ setShowBlank(true);
174
+ } : undefined;
175
+ return (0, _element.createElement)(_element.Fragment, null, contentResizeListener, (0, _element.createElement)("div", {
160
176
  className: `block-editor-block-pattern-setup view-mode-${viewMode}`
161
- }, (0, _element.createElement)(_setupToolbar.default, {
177
+ }, (0, _element.createElement)(SetupContent, {
178
+ viewMode: viewMode,
179
+ activeSlide: activeSlide,
180
+ patterns: patterns,
181
+ onBlockPatternSelect: onPatternSelectCallback,
182
+ height: contentHeight - 2 * 60
183
+ }), (0, _element.createElement)(_setupToolbar.default, {
162
184
  viewMode: viewMode,
163
185
  setViewMode: setViewMode,
164
186
  activeSlide: activeSlide,
@@ -172,15 +194,8 @@ const BlockPatternSetup = _ref4 => {
172
194
  onBlockPatternSelect: () => {
173
195
  onPatternSelectCallback(patterns[activeSlide].blocks);
174
196
  },
175
- onStartBlank: () => {
176
- setShowBlank(true);
177
- }
178
- }), (0, _element.createElement)(SetupContent, {
179
- viewMode: viewMode,
180
- activeSlide: activeSlide,
181
- patterns: patterns,
182
- onBlockPatternSelect: onPatternSelectCallback
183
- }));
197
+ onStartBlank: onStartBlank
198
+ })));
184
199
  };
185
200
 
186
201
  var _default = BlockPatternSetup;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-pattern-setup/index.js"],"names":["SetupContent","viewMode","activeSlide","patterns","onBlockPatternSelect","composite","containerClass","VIEWMODES","carousel","slideClass","Map","map","pattern","index","get","name","BlockPattern","onSelect","baseClassName","blocks","title","description","viewportWidth","descriptionId","undefined","BlockPatternSlide","className","BlockPatternSetup","clientId","blockName","filterPatternsFn","startBlankComponent","setViewMode","setActiveSlide","showBlank","setShowBlank","replaceBlock","blockEditorStore","length","onBlockPatternSelectDefault","clonedBlocks","block","onPatternSelectCallback","active"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { cloneBlock } from '@wordpress/blocks';\nimport {\n\tVisuallyHidden,\n\t__unstableComposite as Composite,\n\t__unstableUseCompositeState as useCompositeState,\n\t__unstableCompositeItem as CompositeItem,\n} from '@wordpress/components';\n\nimport { useState } from '@wordpress/element';\nimport { useInstanceId } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockPreview from '../block-preview';\nimport SetupToolbar from './setup-toolbar';\nimport usePatternsSetup from './use-patterns-setup';\nimport { VIEWMODES } from './constants';\n\nconst SetupContent = ( {\n\tviewMode,\n\tactiveSlide,\n\tpatterns,\n\tonBlockPatternSelect,\n} ) => {\n\tconst composite = useCompositeState();\n\tconst containerClass = 'block-editor-block-pattern-setup__container';\n\tif ( viewMode === VIEWMODES.carousel ) {\n\t\tconst slideClass = new Map( [\n\t\t\t[ activeSlide, 'active-slide' ],\n\t\t\t[ activeSlide - 1, 'previous-slide' ],\n\t\t\t[ activeSlide + 1, 'next-slide' ],\n\t\t] );\n\t\treturn (\n\t\t\t<div className={ containerClass }>\n\t\t\t\t<ul className=\"carousel-container\">\n\t\t\t\t\t{ patterns.map( ( pattern, index ) => (\n\t\t\t\t\t\t<BlockPatternSlide\n\t\t\t\t\t\t\tclassName={ slideClass.get( index ) || '' }\n\t\t\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t);\n\t}\n\treturn (\n\t\t<Composite\n\t\t\t{ ...composite }\n\t\t\trole=\"listbox\"\n\t\t\tclassName={ containerClass }\n\t\t\taria-label={ __( 'Patterns list' ) }\n\t\t>\n\t\t\t{ patterns.map( ( pattern ) => (\n\t\t\t\t<BlockPattern\n\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\tonSelect={ onBlockPatternSelect }\n\t\t\t\t\tcomposite={ composite }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n};\n\nfunction BlockPattern( { pattern, onSelect, composite } ) {\n\tconst baseClassName = 'block-editor-block-pattern-setup-list';\n\tconst { blocks, title, description, viewportWidth = 700 } = pattern;\n\tconst descriptionId = useInstanceId(\n\t\tBlockPattern,\n\t\t`${ baseClassName }__item-description`\n\t);\n\treturn (\n\t\t<div\n\t\t\tclassName={ `${ baseClassName }__list-item` }\n\t\t\taria-label={ pattern.title }\n\t\t\taria-describedby={ pattern.description ? descriptionId : undefined }\n\t\t>\n\t\t\t<CompositeItem\n\t\t\t\trole=\"option\"\n\t\t\t\tas=\"div\"\n\t\t\t\t{ ...composite }\n\t\t\t\tclassName={ `${ baseClassName }__item` }\n\t\t\t\tonClick={ () => onSelect( blocks ) }\n\t\t\t>\n\t\t\t\t<BlockPreview\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tviewportWidth={ viewportWidth }\n\t\t\t\t/>\n\t\t\t\t<div className={ `${ baseClassName }__item-title` }>\n\t\t\t\t\t{ title }\n\t\t\t\t</div>\n\t\t\t</CompositeItem>\n\t\t\t{ !! description && (\n\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t{ description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternSlide( { className, pattern } ) {\n\tconst { blocks, title, description } = pattern;\n\tconst descriptionId = useInstanceId(\n\t\tBlockPatternSlide,\n\t\t'block-editor-block-pattern-setup-list__item-description'\n\t);\n\treturn (\n\t\t<li\n\t\t\tclassName={ `pattern-slide ${ className }` }\n\t\t\taria-label={ title }\n\t\t\taria-describedby={ description ? descriptionId : undefined }\n\t\t>\n\t\t\t<BlockPreview blocks={ blocks } __experimentalLive />\n\t\t\t{ !! description && (\n\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t{ description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t</li>\n\t);\n}\n\nconst BlockPatternSetup = ( {\n\tclientId,\n\tblockName,\n\tfilterPatternsFn,\n\tstartBlankComponent,\n\tonBlockPatternSelect,\n} ) => {\n\tconst [ viewMode, setViewMode ] = useState( VIEWMODES.carousel );\n\tconst [ activeSlide, setActiveSlide ] = useState( 0 );\n\tconst [ showBlank, setShowBlank ] = useState( false );\n\tconst { replaceBlock } = useDispatch( blockEditorStore );\n\tconst patterns = usePatternsSetup( clientId, blockName, filterPatternsFn );\n\n\tif ( ! patterns?.length || showBlank ) {\n\t\treturn startBlankComponent;\n\t}\n\n\tconst onBlockPatternSelectDefault = ( blocks ) => {\n\t\tconst clonedBlocks = blocks.map( ( block ) => cloneBlock( block ) );\n\t\treplaceBlock( clientId, clonedBlocks );\n\t};\n\tconst onPatternSelectCallback =\n\t\tonBlockPatternSelect || onBlockPatternSelectDefault;\n\treturn (\n\t\t<div\n\t\t\tclassName={ `block-editor-block-pattern-setup view-mode-${ viewMode }` }\n\t\t>\n\t\t\t<SetupToolbar\n\t\t\t\tviewMode={ viewMode }\n\t\t\t\tsetViewMode={ setViewMode }\n\t\t\t\tactiveSlide={ activeSlide }\n\t\t\t\ttotalSlides={ patterns.length }\n\t\t\t\thandleNext={ () => {\n\t\t\t\t\tsetActiveSlide( ( active ) => active + 1 );\n\t\t\t\t} }\n\t\t\t\thandlePrevious={ () => {\n\t\t\t\t\tsetActiveSlide( ( active ) => active - 1 );\n\t\t\t\t} }\n\t\t\t\tonBlockPatternSelect={ () => {\n\t\t\t\t\tonPatternSelectCallback( patterns[ activeSlide ].blocks );\n\t\t\t\t} }\n\t\t\t\tonStartBlank={ () => {\n\t\t\t\t\tsetShowBlank( true );\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<SetupContent\n\t\t\t\tviewMode={ viewMode }\n\t\t\t\tactiveSlide={ activeSlide }\n\t\t\t\tpatterns={ patterns }\n\t\t\t\tonBlockPatternSelect={ onPatternSelectCallback }\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default BlockPatternSetup;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-pattern-setup/index.js"],"names":["SetupContent","viewMode","activeSlide","patterns","onBlockPatternSelect","height","composite","containerClass","VIEWMODES","carousel","slideClass","Map","map","pattern","index","get","name","BlockPattern","onSelect","baseClassName","blocks","description","viewportWidth","descriptionId","title","undefined","BlockPatternSlide","className","minHeight","BlockPatternSetup","clientId","blockName","filterPatternsFn","startBlankComponent","setViewMode","setActiveSlide","showBlank","setShowBlank","replaceBlock","blockEditorStore","contentResizeListener","contentHeight","length","onBlockPatternSelectDefault","clonedBlocks","block","onPatternSelectCallback","onStartBlank","active"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { cloneBlock } from '@wordpress/blocks';\nimport {\n\tVisuallyHidden,\n\t__unstableComposite as Composite,\n\t__unstableUseCompositeState as useCompositeState,\n\t__unstableCompositeItem as CompositeItem,\n} from '@wordpress/components';\n\nimport { useState } from '@wordpress/element';\nimport { useInstanceId, useResizeObserver } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockPreview from '../block-preview';\nimport SetupToolbar from './setup-toolbar';\nimport usePatternsSetup from './use-patterns-setup';\nimport { VIEWMODES } from './constants';\n\nconst SetupContent = ( {\n\tviewMode,\n\tactiveSlide,\n\tpatterns,\n\tonBlockPatternSelect,\n\theight,\n} ) => {\n\tconst composite = useCompositeState();\n\tconst containerClass = 'block-editor-block-pattern-setup__container';\n\tif ( viewMode === VIEWMODES.carousel ) {\n\t\tconst slideClass = new Map( [\n\t\t\t[ activeSlide, 'active-slide' ],\n\t\t\t[ activeSlide - 1, 'previous-slide' ],\n\t\t\t[ activeSlide + 1, 'next-slide' ],\n\t\t] );\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName=\"block-editor-block-pattern-setup__carousel\"\n\t\t\t\tstyle={ { height } }\n\t\t\t>\n\t\t\t\t<div className={ containerClass }>\n\t\t\t\t\t<ul className=\"carousel-container\">\n\t\t\t\t\t\t{ patterns.map( ( pattern, index ) => (\n\t\t\t\t\t\t\t<BlockPatternSlide\n\t\t\t\t\t\t\t\tclassName={ slideClass.get( index ) || '' }\n\t\t\t\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\t\t\t\tminHeight={ height }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\treturn (\n\t\t<div\n\t\t\tstyle={ { height } }\n\t\t\tclassName=\"block-editor-block-pattern-setup__grid\"\n\t\t>\n\t\t\t<Composite\n\t\t\t\t{ ...composite }\n\t\t\t\trole=\"listbox\"\n\t\t\t\tclassName={ containerClass }\n\t\t\t\taria-label={ __( 'Patterns list' ) }\n\t\t\t>\n\t\t\t\t{ patterns.map( ( pattern ) => (\n\t\t\t\t\t<BlockPattern\n\t\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\t\tonSelect={ onBlockPatternSelect }\n\t\t\t\t\t\tcomposite={ composite }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</Composite>\n\t\t</div>\n\t);\n};\n\nfunction BlockPattern( { pattern, onSelect, composite } ) {\n\tconst baseClassName = 'block-editor-block-pattern-setup-list';\n\tconst { blocks, description, viewportWidth = 700 } = pattern;\n\tconst descriptionId = useInstanceId(\n\t\tBlockPattern,\n\t\t`${ baseClassName }__item-description`\n\t);\n\treturn (\n\t\t<div\n\t\t\tclassName={ `${ baseClassName }__list-item` }\n\t\t\taria-label={ pattern.title }\n\t\t\taria-describedby={ pattern.description ? descriptionId : undefined }\n\t\t>\n\t\t\t<CompositeItem\n\t\t\t\trole=\"option\"\n\t\t\t\tas=\"div\"\n\t\t\t\t{ ...composite }\n\t\t\t\tclassName={ `${ baseClassName }__item` }\n\t\t\t\tonClick={ () => onSelect( blocks ) }\n\t\t\t>\n\t\t\t\t<BlockPreview\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tviewportWidth={ viewportWidth }\n\t\t\t\t/>\n\t\t\t</CompositeItem>\n\t\t\t{ !! description && (\n\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t{ description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternSlide( { className, pattern, minHeight } ) {\n\tconst { blocks, title, description } = pattern;\n\tconst descriptionId = useInstanceId(\n\t\tBlockPatternSlide,\n\t\t'block-editor-block-pattern-setup-list__item-description'\n\t);\n\treturn (\n\t\t<li\n\t\t\tclassName={ `pattern-slide ${ className }` }\n\t\t\taria-label={ title }\n\t\t\taria-describedby={ description ? descriptionId : undefined }\n\t\t>\n\t\t\t<BlockPreview\n\t\t\t\tblocks={ blocks }\n\t\t\t\t__experimentalMinHeight={ minHeight }\n\t\t\t/>\n\t\t\t{ !! description && (\n\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t{ description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t</li>\n\t);\n}\n\nconst BlockPatternSetup = ( {\n\tclientId,\n\tblockName,\n\tfilterPatternsFn,\n\tstartBlankComponent,\n\tonBlockPatternSelect,\n} ) => {\n\tconst [ viewMode, setViewMode ] = useState( VIEWMODES.carousel );\n\tconst [ activeSlide, setActiveSlide ] = useState( 0 );\n\tconst [ showBlank, setShowBlank ] = useState( false );\n\tconst { replaceBlock } = useDispatch( blockEditorStore );\n\tconst patterns = usePatternsSetup( clientId, blockName, filterPatternsFn );\n\tconst [\n\t\tcontentResizeListener,\n\t\t{ height: contentHeight },\n\t] = useResizeObserver();\n\n\tif ( ! patterns?.length || showBlank ) {\n\t\treturn startBlankComponent;\n\t}\n\n\tconst onBlockPatternSelectDefault = ( blocks ) => {\n\t\tconst clonedBlocks = blocks.map( ( block ) => cloneBlock( block ) );\n\t\treplaceBlock( clientId, clonedBlocks );\n\t};\n\tconst onPatternSelectCallback =\n\t\tonBlockPatternSelect || onBlockPatternSelectDefault;\n\tconst onStartBlank = startBlankComponent\n\t\t? () => {\n\t\t\t\tsetShowBlank( true );\n\t\t }\n\t\t: undefined;\n\treturn (\n\t\t<>\n\t\t\t{ contentResizeListener }\n\t\t\t<div\n\t\t\t\tclassName={ `block-editor-block-pattern-setup view-mode-${ viewMode }` }\n\t\t\t>\n\t\t\t\t<SetupContent\n\t\t\t\t\tviewMode={ viewMode }\n\t\t\t\t\tactiveSlide={ activeSlide }\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonBlockPatternSelect={ onPatternSelectCallback }\n\t\t\t\t\theight={ contentHeight - 2 * 60 }\n\t\t\t\t/>\n\t\t\t\t<SetupToolbar\n\t\t\t\t\tviewMode={ viewMode }\n\t\t\t\t\tsetViewMode={ setViewMode }\n\t\t\t\t\tactiveSlide={ activeSlide }\n\t\t\t\t\ttotalSlides={ patterns.length }\n\t\t\t\t\thandleNext={ () => {\n\t\t\t\t\t\tsetActiveSlide( ( active ) => active + 1 );\n\t\t\t\t\t} }\n\t\t\t\t\thandlePrevious={ () => {\n\t\t\t\t\t\tsetActiveSlide( ( active ) => active - 1 );\n\t\t\t\t\t} }\n\t\t\t\t\tonBlockPatternSelect={ () => {\n\t\t\t\t\t\tonPatternSelectCallback(\n\t\t\t\t\t\t\tpatterns[ activeSlide ].blocks\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t\tonStartBlank={ onStartBlank }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default BlockPatternSetup;\n"]}