@wordpress/block-editor 14.3.5 → 14.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -2
- package/build/components/block-list/block.js +0 -3
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +1 -4
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +14 -6
- package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
- package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js +9 -12
- package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -1
- package/build/components/block-list/zoom-out-separator.js +10 -7
- package/build/components/block-list/zoom-out-separator.js.map +1 -1
- package/build/components/block-popover/index.js +1 -1
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +28 -16
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-toolbar/use-has-block-toolbar.js +3 -3
- package/build/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
- package/build/components/block-tools/index.js +1 -6
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/use-show-block-tools.js +4 -6
- package/build/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +22 -36
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build/components/iframe/index.js +45 -10
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/index.js +4 -0
- package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build/components/inserter/hooks/use-insertion-point.js +16 -4
- package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
- package/build/components/inserter/media-tab/media-tab.js +4 -0
- package/build/components/inserter/media-tab/media-tab.js.map +1 -1
- package/build/components/inserter/menu.js +8 -2
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/tool-selector/index.js +5 -1
- package/build/components/tool-selector/index.js.map +1 -1
- package/build/components/use-resize-canvas/index.js +1 -2
- package/build/components/use-resize-canvas/index.js.map +1 -1
- package/build/hooks/block-bindings.js +12 -1
- package/build/hooks/block-bindings.js.map +1 -1
- package/build/hooks/grid-visualizer.js +13 -11
- package/build/hooks/grid-visualizer.js.map +1 -1
- package/build/hooks/layout-child.js +41 -3
- package/build/hooks/layout-child.js.map +1 -1
- package/build/hooks/use-zoom-out.js +24 -16
- package/build/hooks/use-zoom-out.js.map +1 -1
- package/build/private-apis.js +2 -0
- package/build/private-apis.js.map +1 -1
- package/build/store/private-selectors.js +37 -2
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/selectors.js +15 -8
- package/build/store/selectors.js.map +1 -1
- package/build/utils/block-bindings.js +9 -6
- package/build/utils/block-bindings.js.map +1 -1
- package/build-module/components/block-list/block.js +0 -3
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +1 -4
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +14 -6
- package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +9 -12
- package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -1
- package/build-module/components/block-list/zoom-out-separator.js +10 -7
- package/build-module/components/block-list/zoom-out-separator.js.map +1 -1
- package/build-module/components/block-popover/index.js +1 -1
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +30 -18
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-toolbar/use-has-block-toolbar.js +3 -3
- package/build-module/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
- package/build-module/components/block-tools/index.js +1 -6
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/use-show-block-tools.js +4 -6
- package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +22 -36
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build-module/components/iframe/index.js +45 -10
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/index.js +5 -1
- package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build-module/components/inserter/hooks/use-insertion-point.js +16 -4
- package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-tab.js +5 -1
- package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
- package/build-module/components/inserter/menu.js +8 -2
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/tool-selector/index.js +5 -1
- package/build-module/components/tool-selector/index.js.map +1 -1
- package/build-module/components/use-resize-canvas/index.js +1 -2
- package/build-module/components/use-resize-canvas/index.js.map +1 -1
- package/build-module/hooks/block-bindings.js +13 -2
- package/build-module/hooks/block-bindings.js.map +1 -1
- package/build-module/hooks/grid-visualizer.js +13 -11
- package/build-module/hooks/grid-visualizer.js.map +1 -1
- package/build-module/hooks/layout-child.js +41 -3
- package/build-module/hooks/layout-child.js.map +1 -1
- package/build-module/hooks/use-zoom-out.js +24 -17
- package/build-module/hooks/use-zoom-out.js.map +1 -1
- package/build-module/private-apis.js +2 -0
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/private-selectors.js +35 -2
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/selectors.js +15 -8
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/block-bindings.js +9 -6
- package/build-module/utils/block-bindings.js.map +1 -1
- package/build-style/content-rtl.css +19 -26
- package/build-style/content.css +19 -26
- package/build-style/style-rtl.css +36 -21
- package/build-style/style.css +36 -21
- package/package.json +6 -6
- package/src/components/block-canvas/style.scss +1 -0
- package/src/components/block-list/block.js +0 -3
- package/src/components/block-list/content.scss +3 -2
- package/src/components/block-list/use-block-props/index.js +1 -2
- package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +25 -4
- package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +19 -11
- package/src/components/block-list/zoom-out-separator.js +8 -6
- package/src/components/block-popover/index.js +2 -2
- package/src/components/block-toolbar/index.js +37 -24
- package/src/components/block-toolbar/style.scss +10 -1
- package/src/components/block-toolbar/use-has-block-toolbar.js +19 -28
- package/src/components/block-tools/index.js +0 -9
- package/src/components/block-tools/style.scss +2 -26
- package/src/components/block-tools/use-show-block-tools.js +2 -10
- package/src/components/block-tools/zoom-out-mode-inserters.js +26 -50
- package/src/components/iframe/content.scss +23 -32
- package/src/components/iframe/index.js +60 -13
- package/src/components/iframe/style.scss +18 -0
- package/src/components/inserter/block-patterns-tab/index.js +6 -1
- package/src/components/inserter/hooks/use-insertion-point.js +23 -5
- package/src/components/inserter/media-tab/media-tab.js +6 -1
- package/src/components/inserter/menu.js +12 -1
- package/src/components/inserter/style.scss +6 -0
- package/src/components/list-view/style.scss +9 -0
- package/src/components/rich-text/style.scss +5 -0
- package/src/components/tool-selector/index.js +5 -2
- package/src/components/use-resize-canvas/index.js +1 -3
- package/src/hooks/block-bindings.js +40 -23
- package/src/hooks/grid-visualizer.js +23 -9
- package/src/hooks/layout-child.js +48 -3
- package/src/hooks/use-zoom-out.js +36 -20
- package/src/private-apis.js +2 -0
- package/src/store/private-selectors.js +40 -1
- package/src/store/selectors.js +16 -8
- package/src/style.scss +1 -0
- package/src/utils/block-bindings.js +9 -6
- package/src/utils/test/use-block-bindings-utils.js +174 -0
- package/build/components/block-tools/zoom-out-popover.js +0 -57
- package/build/components/block-tools/zoom-out-popover.js.map +0 -1
- package/build/components/block-tools/zoom-out-toolbar.js +0 -159
- package/build/components/block-tools/zoom-out-toolbar.js.map +0 -1
- package/build-module/components/block-tools/zoom-out-popover.js +0 -48
- package/build-module/components/block-tools/zoom-out-popover.js.map +0 -1
- package/build-module/components/block-tools/zoom-out-toolbar.js +0 -152
- package/build-module/components/block-tools/zoom-out-toolbar.js.map +0 -1
- package/src/components/block-tools/zoom-out-popover.js +0 -46
- package/src/components/block-tools/zoom-out-toolbar.js +0 -167
|
@@ -24,34 +24,25 @@ function ZoomOutModeInserters() {
|
|
|
24
24
|
const [isReady, setIsReady] = (0, _element.useState)(false);
|
|
25
25
|
const {
|
|
26
26
|
hasSelection,
|
|
27
|
-
blockInsertionPoint,
|
|
28
27
|
blockOrder,
|
|
29
|
-
blockInsertionPointVisible,
|
|
30
28
|
setInserterIsOpened,
|
|
31
29
|
sectionRootClientId,
|
|
32
|
-
selectedBlockClientId
|
|
33
|
-
hoveredBlockClientId
|
|
30
|
+
selectedBlockClientId
|
|
34
31
|
} = (0, _data.useSelect)(select => {
|
|
35
32
|
const {
|
|
36
33
|
getSettings,
|
|
37
|
-
getBlockInsertionPoint,
|
|
38
34
|
getBlockOrder,
|
|
39
35
|
getSelectionStart,
|
|
40
36
|
getSelectedBlockClientId,
|
|
41
|
-
getHoveredBlockClientId,
|
|
42
|
-
isBlockInsertionPointVisible,
|
|
43
37
|
getSectionRootClientId
|
|
44
38
|
} = (0, _lockUnlock.unlock)(select(_store.store));
|
|
45
39
|
const root = getSectionRootClientId();
|
|
46
40
|
return {
|
|
47
41
|
hasSelection: !!getSelectionStart().clientId,
|
|
48
|
-
blockInsertionPoint: getBlockInsertionPoint(),
|
|
49
42
|
blockOrder: getBlockOrder(root),
|
|
50
|
-
blockInsertionPointVisible: isBlockInsertionPointVisible(),
|
|
51
43
|
sectionRootClientId: root,
|
|
52
44
|
setInserterIsOpened: getSettings().__experimentalSetIsInserterOpened,
|
|
53
|
-
selectedBlockClientId: getSelectedBlockClientId()
|
|
54
|
-
hoveredBlockClientId: getHoveredBlockClientId()
|
|
45
|
+
selectedBlockClientId: getSelectedBlockClientId()
|
|
55
46
|
};
|
|
56
47
|
}, []);
|
|
57
48
|
const {
|
|
@@ -67,33 +58,28 @@ function ZoomOutModeInserters() {
|
|
|
67
58
|
clearTimeout(timeout);
|
|
68
59
|
};
|
|
69
60
|
}, []);
|
|
70
|
-
if (!isReady) {
|
|
61
|
+
if (!isReady || !hasSelection) {
|
|
71
62
|
return null;
|
|
72
63
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
operation: 'insert'
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
})
|
|
96
|
-
}, index);
|
|
64
|
+
const previousClientId = selectedBlockClientId;
|
|
65
|
+
const index = blockOrder.findIndex(clientId => selectedBlockClientId === clientId);
|
|
66
|
+
const nextClientId = blockOrder[index + 1];
|
|
67
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_inbetween.default, {
|
|
68
|
+
previousClientId: previousClientId,
|
|
69
|
+
nextClientId: nextClientId,
|
|
70
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_zoomOutModeInserterButton.default, {
|
|
71
|
+
onClick: () => {
|
|
72
|
+
setInserterIsOpened({
|
|
73
|
+
rootClientId: sectionRootClientId,
|
|
74
|
+
insertionIndex: index + 1,
|
|
75
|
+
tab: 'patterns',
|
|
76
|
+
category: 'all'
|
|
77
|
+
});
|
|
78
|
+
showInsertionPoint(sectionRootClientId, index + 1, {
|
|
79
|
+
operation: 'insert'
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
})
|
|
97
83
|
});
|
|
98
84
|
}
|
|
99
85
|
var _default = exports.default = ZoomOutModeInserters;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_data","require","_element","_inbetween","_interopRequireDefault","_zoomOutModeInserterButton","_store","_lockUnlock","_jsxRuntime","ZoomOutModeInserters","isReady","setIsReady","useState","hasSelection","
|
|
1
|
+
{"version":3,"names":["_data","require","_element","_inbetween","_interopRequireDefault","_zoomOutModeInserterButton","_store","_lockUnlock","_jsxRuntime","ZoomOutModeInserters","isReady","setIsReady","useState","hasSelection","blockOrder","setInserterIsOpened","sectionRootClientId","selectedBlockClientId","useSelect","select","getSettings","getBlockOrder","getSelectionStart","getSelectedBlockClientId","getSectionRootClientId","unlock","blockEditorStore","root","clientId","__experimentalSetIsInserterOpened","showInsertionPoint","useDispatch","useEffect","timeout","setTimeout","clearTimeout","previousClientId","index","findIndex","nextClientId","jsx","default","children","onClick","rootClientId","insertionIndex","tab","category","operation","_default","exports"],"sources":["@wordpress/block-editor/src/components/block-tools/zoom-out-mode-inserters.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEffect, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockPopoverInbetween from '../block-popover/inbetween';\nimport ZoomOutModeInserterButton from './zoom-out-mode-inserter-button';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nfunction ZoomOutModeInserters() {\n\tconst [ isReady, setIsReady ] = useState( false );\n\tconst {\n\t\thasSelection,\n\t\tblockOrder,\n\t\tsetInserterIsOpened,\n\t\tsectionRootClientId,\n\t\tselectedBlockClientId,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSettings,\n\t\t\tgetBlockOrder,\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetSectionRootClientId,\n\t\t} = unlock( select( blockEditorStore ) );\n\n\t\tconst root = getSectionRootClientId();\n\n\t\treturn {\n\t\t\thasSelection: !! getSelectionStart().clientId,\n\t\t\tblockOrder: getBlockOrder( root ),\n\t\t\tsectionRootClientId: root,\n\t\t\tsetInserterIsOpened:\n\t\t\t\tgetSettings().__experimentalSetIsInserterOpened,\n\t\t\tselectedBlockClientId: getSelectedBlockClientId(),\n\t\t};\n\t}, [] );\n\n\tconst { showInsertionPoint } = useDispatch( blockEditorStore );\n\n\t// Defer the initial rendering to avoid the jumps due to the animation.\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tsetIsReady( true );\n\t\t}, 500 );\n\t\treturn () => {\n\t\t\tclearTimeout( timeout );\n\t\t};\n\t}, [] );\n\n\tif ( ! isReady || ! hasSelection ) {\n\t\treturn null;\n\t}\n\n\tconst previousClientId = selectedBlockClientId;\n\tconst index = blockOrder.findIndex(\n\t\t( clientId ) => selectedBlockClientId === clientId\n\t);\n\tconst nextClientId = blockOrder[ index + 1 ];\n\n\treturn (\n\t\t<BlockPopoverInbetween\n\t\t\tpreviousClientId={ previousClientId }\n\t\t\tnextClientId={ nextClientId }\n\t\t>\n\t\t\t<ZoomOutModeInserterButton\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetInserterIsOpened( {\n\t\t\t\t\t\trootClientId: sectionRootClientId,\n\t\t\t\t\t\tinsertionIndex: index + 1,\n\t\t\t\t\t\ttab: 'patterns',\n\t\t\t\t\t\tcategory: 'all',\n\t\t\t\t\t} );\n\t\t\t\t\tshowInsertionPoint( sectionRootClientId, index + 1, {\n\t\t\t\t\t\toperation: 'insert',\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t/>\n\t\t</BlockPopoverInbetween>\n\t);\n}\n\nexport default ZoomOutModeInserters;\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAKA,IAAAE,UAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,0BAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;AACA,IAAAM,WAAA,GAAAN,OAAA;AAA2C,IAAAO,WAAA,GAAAP,OAAA;AAZ3C;AACA;AACA;;AAIA;AACA;AACA;;AAMA,SAASQ,oBAAoBA,CAAA,EAAG;EAC/B,MAAM,CAAEC,OAAO,EAAEC,UAAU,CAAE,GAAG,IAAAC,iBAAQ,EAAE,KAAM,CAAC;EACjD,MAAM;IACLC,YAAY;IACZC,UAAU;IACVC,mBAAmB;IACnBC,mBAAmB;IACnBC;EACD,CAAC,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IAC5B,MAAM;MACLC,WAAW;MACXC,aAAa;MACbC,iBAAiB;MACjBC,wBAAwB;MACxBC;IACD,CAAC,GAAG,IAAAC,kBAAM,EAAEN,MAAM,CAAEO,YAAiB,CAAE,CAAC;IAExC,MAAMC,IAAI,GAAGH,sBAAsB,CAAC,CAAC;IAErC,OAAO;MACNX,YAAY,EAAE,CAAC,CAAES,iBAAiB,CAAC,CAAC,CAACM,QAAQ;MAC7Cd,UAAU,EAAEO,aAAa,CAAEM,IAAK,CAAC;MACjCX,mBAAmB,EAAEW,IAAI;MACzBZ,mBAAmB,EAClBK,WAAW,CAAC,CAAC,CAACS,iCAAiC;MAChDZ,qBAAqB,EAAEM,wBAAwB,CAAC;IACjD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAM;IAAEO;EAAmB,CAAC,GAAG,IAAAC,iBAAW,EAAEL,YAAiB,CAAC;;EAE9D;EACA,IAAAM,kBAAS,EAAE,MAAM;IAChB,MAAMC,OAAO,GAAGC,UAAU,CAAE,MAAM;MACjCvB,UAAU,CAAE,IAAK,CAAC;IACnB,CAAC,EAAE,GAAI,CAAC;IACR,OAAO,MAAM;MACZwB,YAAY,CAAEF,OAAQ,CAAC;IACxB,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,IAAK,CAAEvB,OAAO,IAAI,CAAEG,YAAY,EAAG;IAClC,OAAO,IAAI;EACZ;EAEA,MAAMuB,gBAAgB,GAAGnB,qBAAqB;EAC9C,MAAMoB,KAAK,GAAGvB,UAAU,CAACwB,SAAS,CAC/BV,QAAQ,IAAMX,qBAAqB,KAAKW,QAC3C,CAAC;EACD,MAAMW,YAAY,GAAGzB,UAAU,CAAEuB,KAAK,GAAG,CAAC,CAAE;EAE5C,oBACC,IAAA7B,WAAA,CAAAgC,GAAA,EAACrC,UAAA,CAAAsC,OAAqB;IACrBL,gBAAgB,EAAGA,gBAAkB;IACrCG,YAAY,EAAGA,YAAc;IAAAG,QAAA,eAE7B,IAAAlC,WAAA,CAAAgC,GAAA,EAACnC,0BAAA,CAAAoC,OAAyB;MACzBE,OAAO,EAAGA,CAAA,KAAM;QACf5B,mBAAmB,CAAE;UACpB6B,YAAY,EAAE5B,mBAAmB;UACjC6B,cAAc,EAAER,KAAK,GAAG,CAAC;UACzBS,GAAG,EAAE,UAAU;UACfC,QAAQ,EAAE;QACX,CAAE,CAAC;QACHjB,kBAAkB,CAAEd,mBAAmB,EAAEqB,KAAK,GAAG,CAAC,EAAE;UACnDW,SAAS,EAAE;QACZ,CAAE,CAAC;MACJ;IAAG,CACH;EAAC,CACoB,CAAC;AAE1B;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAT,OAAA,GAEchC,oBAAoB","ignoreList":[]}
|
|
@@ -126,7 +126,7 @@ function Iframe({
|
|
|
126
126
|
scripts = ''
|
|
127
127
|
} = resolvedAssets;
|
|
128
128
|
const [iframeDocument, setIframeDocument] = (0, _element.useState)();
|
|
129
|
-
const
|
|
129
|
+
const initialContainerWidth = (0, _element.useRef)(0);
|
|
130
130
|
const [bodyClasses, setBodyClasses] = (0, _element.useState)([]);
|
|
131
131
|
const clearerRef = (0, _blockSelectionClearer.useBlockSelectionClearer)();
|
|
132
132
|
const [before, writingFlowRef, after] = (0, _writingFlow.useWritingFlow)();
|
|
@@ -210,9 +210,10 @@ function Iframe({
|
|
|
210
210
|
const isZoomedOut = scale !== 1;
|
|
211
211
|
(0, _element.useEffect)(() => {
|
|
212
212
|
if (!isZoomedOut) {
|
|
213
|
-
|
|
213
|
+
initialContainerWidth.current = containerWidth;
|
|
214
214
|
}
|
|
215
215
|
}, [containerWidth, isZoomedOut]);
|
|
216
|
+
const scaleContainerWidth = Math.max(initialContainerWidth.current, containerWidth);
|
|
216
217
|
const disabledRef = (0, _compose.useDisabled)({
|
|
217
218
|
isDisabled: !readonly
|
|
218
219
|
});
|
|
@@ -257,28 +258,62 @@ function Iframe({
|
|
|
257
258
|
return [_src, () => URL.revokeObjectURL(_src)];
|
|
258
259
|
}, [html]);
|
|
259
260
|
(0, _element.useEffect)(() => cleanup, [cleanup]);
|
|
261
|
+
const zoomOutAnimationClassnameRef = (0, _element.useRef)(null);
|
|
262
|
+
|
|
263
|
+
// Toggle zoom out CSS Classes only when zoom out mode changes. We could add these into the useEffect
|
|
264
|
+
// that controls settings the CSS variables, but then we would need to do more work to ensure we're
|
|
265
|
+
// only toggling these when the zoom out mode changes, as that useEffect is also triggered by a large
|
|
266
|
+
// number of dependencies.
|
|
260
267
|
(0, _element.useEffect)(() => {
|
|
261
268
|
if (!iframeDocument || !isZoomedOut) {
|
|
262
269
|
return;
|
|
263
270
|
}
|
|
271
|
+
const handleZoomOutAnimationClassname = () => {
|
|
272
|
+
clearTimeout(zoomOutAnimationClassnameRef.current);
|
|
273
|
+
iframeDocument.documentElement.classList.add('zoom-out-animation');
|
|
274
|
+
zoomOutAnimationClassnameRef.current = setTimeout(() => {
|
|
275
|
+
iframeDocument.documentElement.classList.remove('zoom-out-animation');
|
|
276
|
+
}, 400); // 400ms should match the animation speed used in components/iframe/content.scss
|
|
277
|
+
};
|
|
278
|
+
handleZoomOutAnimationClassname();
|
|
264
279
|
iframeDocument.documentElement.classList.add('is-zoomed-out');
|
|
280
|
+
return () => {
|
|
281
|
+
handleZoomOutAnimationClassname();
|
|
282
|
+
iframeDocument.documentElement.classList.remove('is-zoomed-out');
|
|
283
|
+
};
|
|
284
|
+
}, [iframeDocument, isZoomedOut]);
|
|
285
|
+
|
|
286
|
+
// Calculate the scaling and CSS variables for the zoom out canvas
|
|
287
|
+
(0, _element.useEffect)(() => {
|
|
288
|
+
if (!iframeDocument || !isZoomedOut) {
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
265
291
|
const maxWidth = 750;
|
|
266
|
-
|
|
292
|
+
// Note: When we initialize the zoom out when the canvas is smaller (sidebars open),
|
|
293
|
+
// initialContainerWidth will be smaller than the full page, and reflow will happen
|
|
294
|
+
// when the canvas area becomes larger due to sidebars closing. This is a known but
|
|
295
|
+
// minor divergence for now.
|
|
296
|
+
|
|
297
|
+
// This scaling calculation has to happen within the JS because CSS calc() can
|
|
298
|
+
// only divide and multiply by a unitless value. I.e. calc( 100px / 2 ) is valid
|
|
299
|
+
// but calc( 100px / 2px ) is not.
|
|
300
|
+
iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-scale', scale === 'default' ? (Math.min(containerWidth, maxWidth) - parseInt(frameSize) * 2) / scaleContainerWidth : scale);
|
|
301
|
+
|
|
302
|
+
// frameSize has to be a px value for the scaling and frame size to be computed correctly.
|
|
267
303
|
iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-frame-size', typeof frameSize === 'number' ? `${frameSize}px` : frameSize);
|
|
268
304
|
iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-content-height', `${contentHeight}px`);
|
|
269
305
|
iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-inner-height', `${iframeWindowInnerHeight}px`);
|
|
270
306
|
iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-container-width', `${containerWidth}px`);
|
|
271
|
-
iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-
|
|
307
|
+
iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-scale-container-width', `${scaleContainerWidth}px`);
|
|
272
308
|
return () => {
|
|
273
|
-
iframeDocument.documentElement.classList.remove('is-zoomed-out');
|
|
274
309
|
iframeDocument.documentElement.style.removeProperty('--wp-block-editor-iframe-zoom-out-scale');
|
|
275
310
|
iframeDocument.documentElement.style.removeProperty('--wp-block-editor-iframe-zoom-out-frame-size');
|
|
276
311
|
iframeDocument.documentElement.style.removeProperty('--wp-block-editor-iframe-zoom-out-content-height');
|
|
277
312
|
iframeDocument.documentElement.style.removeProperty('--wp-block-editor-iframe-zoom-out-inner-height');
|
|
278
313
|
iframeDocument.documentElement.style.removeProperty('--wp-block-editor-iframe-zoom-out-container-width');
|
|
279
|
-
iframeDocument.documentElement.style.removeProperty('--wp-block-editor-iframe-zoom-out-
|
|
314
|
+
iframeDocument.documentElement.style.removeProperty('--wp-block-editor-iframe-zoom-out-scale-container-width');
|
|
280
315
|
};
|
|
281
|
-
}, [scale, frameSize, iframeDocument, iframeWindowInnerHeight, contentHeight, containerWidth, windowInnerWidth, isZoomedOut]);
|
|
316
|
+
}, [scale, frameSize, iframeDocument, iframeWindowInnerHeight, contentHeight, containerWidth, windowInnerWidth, isZoomedOut, scaleContainerWidth]);
|
|
282
317
|
|
|
283
318
|
// Make sure to not render the before and after focusable div elements in view
|
|
284
319
|
// mode. They're only needed to capture focus in edit mode.
|
|
@@ -288,7 +323,8 @@ function Iframe({
|
|
|
288
323
|
...props,
|
|
289
324
|
style: {
|
|
290
325
|
...props.style,
|
|
291
|
-
height: props.style?.height
|
|
326
|
+
height: props.style?.height,
|
|
327
|
+
border: 0
|
|
292
328
|
},
|
|
293
329
|
ref: (0, _compose.useMergeRefs)([ref, setRef]),
|
|
294
330
|
tabIndex: tabIndex
|
|
@@ -344,8 +380,7 @@ function Iframe({
|
|
|
344
380
|
children: [containerResizeListener, /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
345
381
|
className: (0, _clsx.default)('block-editor-iframe__scale-container', isZoomedOut && 'is-zoomed-out'),
|
|
346
382
|
style: {
|
|
347
|
-
'--wp-block-editor-iframe-zoom-out-container-width': isZoomedOut && `${
|
|
348
|
-
'--wp-block-editor-iframe-zoom-out-prev-container-width': isZoomedOut && `${prevContainerWidthRef.current}px`
|
|
383
|
+
'--wp-block-editor-iframe-zoom-out-scale-container-width': isZoomedOut && `${scaleContainerWidth}px`
|
|
349
384
|
},
|
|
350
385
|
children: iframe
|
|
351
386
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_element","_i18n","_compose","_components","_data","_blockSelectionClearer","_writingFlow","_getCompatibilityStyles","_store","_jsxRuntime","bubbleEvent","event","Constructor","frame","init","key","contentDocument","defaultView","MouseEvent","rect","getBoundingClientRect","clientX","left","clientY","top","newEvent","type","defaultPrevented","preventDefault","cancelled","dispatchEvent","useBubbleEvents","iframeDocument","useRefEffect","frameElement","html","documentElement","eventTypes","handlers","name","prototype","Object","getPrototypeOf","constructorName","constructor","window","addEventListener","removeEventListener","Iframe","contentRef","children","tabIndex","scale","frameSize","readonly","forwardedRef","ref","title","__","props","resolvedAssets","isPreviewMode","useSelect","select","getSettings","blockEditorStore","settings","__unstableResolvedAssets","__unstableIsPreviewMode","styles","scripts","setIframeDocument","useState","prevContainerWidthRef","useRef","bodyClasses","setBodyClasses","clearerRef","useBlockSelectionClearer","before","writingFlowRef","after","useWritingFlow","contentResizeListener","height","contentHeight","useResizeObserver","containerResizeListener","width","containerWidth","setRef","node","_load","iFrameDocument","preventFileDropDefault","onLoad","ownerDocument","classList","add","Array","from","body","filter","startsWith","dir","compatStyle","getCompatibilityStyles","getElementById","id","head","appendChild","cloneNode","console","warn","iframeWindowInnerHeight","setIframeWindowInnerHeight","iframeResizeRef","nodeWindow","innerHeight","onResize","windowInnerWidth","setWindowInnerWidth","windowResizeRef","innerWidth","isZoomedOut","useEffect","current","disabledRef","useDisabled","isDisabled","bodyRef","useMergeRefs","src","cleanup","useMemo","_src","URL","createObjectURL","Blob","revokeObjectURL","maxWidth","style","setProperty","Math","min","remove","removeProperty","shouldRenderFocusCaptureElements","iframe","jsxs","Fragment","jsx","onKeyDown","currentTarget","target","stopPropagation","nativeEvent","KeyboardEvent","createPortal","className","clsx","__experimentalStyleProvider","document","IframeIfReady","isInitialised","__internalIsInitialized","_default","exports","default","forwardRef"],"sources":["@wordpress/block-editor/src/components/iframe/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseState,\n\tcreatePortal,\n\tforwardRef,\n\tuseMemo,\n\tuseEffect,\n\tuseRef,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseResizeObserver,\n\tuseMergeRefs,\n\tuseRefEffect,\n\tuseDisabled,\n} from '@wordpress/compose';\nimport { __experimentalStyleProvider as StyleProvider } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useBlockSelectionClearer } from '../block-selection-clearer';\nimport { useWritingFlow } from '../writing-flow';\nimport { getCompatibilityStyles } from './get-compatibility-styles';\nimport { store as blockEditorStore } from '../../store';\n\nfunction bubbleEvent( event, Constructor, frame ) {\n\tconst init = {};\n\n\tfor ( const key in event ) {\n\t\tinit[ key ] = event[ key ];\n\t}\n\n\t// Check if the event is a MouseEvent generated within the iframe.\n\t// If so, adjust the coordinates to be relative to the position of\n\t// the iframe. This ensures that components such as Draggable\n\t// receive coordinates relative to the window, instead of relative\n\t// to the iframe. Without this, the Draggable event handler would\n\t// result in components \"jumping\" position as soon as the user\n\t// drags over the iframe.\n\tif ( event instanceof frame.contentDocument.defaultView.MouseEvent ) {\n\t\tconst rect = frame.getBoundingClientRect();\n\t\tinit.clientX += rect.left;\n\t\tinit.clientY += rect.top;\n\t}\n\n\tconst newEvent = new Constructor( event.type, init );\n\tif ( init.defaultPrevented ) {\n\t\tnewEvent.preventDefault();\n\t}\n\tconst cancelled = ! frame.dispatchEvent( newEvent );\n\n\tif ( cancelled ) {\n\t\tevent.preventDefault();\n\t}\n}\n\n/**\n * Bubbles some event types (keydown, keypress, and dragover) to parent document\n * document to ensure that the keyboard shortcuts and drag and drop work.\n *\n * Ideally, we should remove event bubbling in the future. Keyboard shortcuts\n * should be context dependent, e.g. actions on blocks like Cmd+A should not\n * work globally outside the block editor.\n *\n * @param {Document} iframeDocument Document to attach listeners to.\n */\nfunction useBubbleEvents( iframeDocument ) {\n\treturn useRefEffect( () => {\n\t\tconst { defaultView } = iframeDocument;\n\t\tif ( ! defaultView ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { frameElement } = defaultView;\n\t\tconst html = iframeDocument.documentElement;\n\t\tconst eventTypes = [ 'dragover', 'mousemove' ];\n\t\tconst handlers = {};\n\t\tfor ( const name of eventTypes ) {\n\t\t\thandlers[ name ] = ( event ) => {\n\t\t\t\tconst prototype = Object.getPrototypeOf( event );\n\t\t\t\tconst constructorName = prototype.constructor.name;\n\t\t\t\tconst Constructor = window[ constructorName ];\n\t\t\t\tbubbleEvent( event, Constructor, frameElement );\n\t\t\t};\n\t\t\thtml.addEventListener( name, handlers[ name ] );\n\t\t}\n\n\t\treturn () => {\n\t\t\tfor ( const name of eventTypes ) {\n\t\t\t\thtml.removeEventListener( name, handlers[ name ] );\n\t\t\t}\n\t\t};\n\t} );\n}\n\nfunction Iframe( {\n\tcontentRef,\n\tchildren,\n\ttabIndex = 0,\n\tscale = 1,\n\tframeSize = 0,\n\treadonly,\n\tforwardedRef: ref,\n\ttitle = __( 'Editor canvas' ),\n\t...props\n} ) {\n\tconst { resolvedAssets, isPreviewMode } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst settings = getSettings();\n\t\treturn {\n\t\t\tresolvedAssets: settings.__unstableResolvedAssets,\n\t\t\tisPreviewMode: settings.__unstableIsPreviewMode,\n\t\t};\n\t}, [] );\n\tconst { styles = '', scripts = '' } = resolvedAssets;\n\tconst [ iframeDocument, setIframeDocument ] = useState();\n\tconst prevContainerWidthRef = useRef();\n\tconst [ bodyClasses, setBodyClasses ] = useState( [] );\n\tconst clearerRef = useBlockSelectionClearer();\n\tconst [ before, writingFlowRef, after ] = useWritingFlow();\n\tconst [ contentResizeListener, { height: contentHeight } ] =\n\t\tuseResizeObserver();\n\tconst [ containerResizeListener, { width: containerWidth } ] =\n\t\tuseResizeObserver();\n\n\tconst setRef = useRefEffect( ( node ) => {\n\t\tnode._load = () => {\n\t\t\tsetIframeDocument( node.contentDocument );\n\t\t};\n\t\tlet iFrameDocument;\n\t\t// Prevent the default browser action for files dropped outside of dropzones.\n\t\tfunction preventFileDropDefault( event ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tfunction onLoad() {\n\t\t\tconst { contentDocument, ownerDocument } = node;\n\t\t\tconst { documentElement } = contentDocument;\n\t\t\tiFrameDocument = contentDocument;\n\n\t\t\tdocumentElement.classList.add( 'block-editor-iframe__html' );\n\n\t\t\tclearerRef( documentElement );\n\n\t\t\t// Ideally ALL classes that are added through get_body_class should\n\t\t\t// be added in the editor too, which we'll somehow have to get from\n\t\t\t// the server in the future (which will run the PHP filters).\n\t\t\tsetBodyClasses(\n\t\t\t\tArray.from( ownerDocument.body.classList ).filter(\n\t\t\t\t\t( name ) =>\n\t\t\t\t\t\tname.startsWith( 'admin-color-' ) ||\n\t\t\t\t\t\tname.startsWith( 'post-type-' ) ||\n\t\t\t\t\t\tname === 'wp-embed-responsive'\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tcontentDocument.dir = ownerDocument.dir;\n\n\t\t\tfor ( const compatStyle of getCompatibilityStyles() ) {\n\t\t\t\tif ( contentDocument.getElementById( compatStyle.id ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcontentDocument.head.appendChild(\n\t\t\t\t\tcompatStyle.cloneNode( true )\n\t\t\t\t);\n\n\t\t\t\tif ( ! isPreviewMode ) {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`${ compatStyle.id } was added to the iframe incorrectly. Please use block.json or enqueue_block_assets to add styles to the iframe.`,\n\t\t\t\t\t\tcompatStyle\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tiFrameDocument.addEventListener(\n\t\t\t\t'dragover',\n\t\t\t\tpreventFileDropDefault,\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tiFrameDocument.addEventListener(\n\t\t\t\t'drop',\n\t\t\t\tpreventFileDropDefault,\n\t\t\t\tfalse\n\t\t\t);\n\t\t}\n\n\t\tnode.addEventListener( 'load', onLoad );\n\n\t\treturn () => {\n\t\t\tdelete node._load;\n\t\t\tnode.removeEventListener( 'load', onLoad );\n\t\t\tiFrameDocument?.removeEventListener(\n\t\t\t\t'dragover',\n\t\t\t\tpreventFileDropDefault\n\t\t\t);\n\t\t\tiFrameDocument?.removeEventListener(\n\t\t\t\t'drop',\n\t\t\t\tpreventFileDropDefault\n\t\t\t);\n\t\t};\n\t}, [] );\n\n\tconst [ iframeWindowInnerHeight, setIframeWindowInnerHeight ] = useState();\n\n\tconst iframeResizeRef = useRefEffect( ( node ) => {\n\t\tconst nodeWindow = node.ownerDocument.defaultView;\n\n\t\tsetIframeWindowInnerHeight( nodeWindow.innerHeight );\n\t\tconst onResize = () => {\n\t\t\tsetIframeWindowInnerHeight( nodeWindow.innerHeight );\n\t\t};\n\t\tnodeWindow.addEventListener( 'resize', onResize );\n\t\treturn () => {\n\t\t\tnodeWindow.removeEventListener( 'resize', onResize );\n\t\t};\n\t}, [] );\n\n\tconst [ windowInnerWidth, setWindowInnerWidth ] = useState();\n\n\tconst windowResizeRef = useRefEffect( ( node ) => {\n\t\tconst nodeWindow = node.ownerDocument.defaultView;\n\n\t\tsetWindowInnerWidth( nodeWindow.innerWidth );\n\t\tconst onResize = () => {\n\t\t\tsetWindowInnerWidth( nodeWindow.innerWidth );\n\t\t};\n\t\tnodeWindow.addEventListener( 'resize', onResize );\n\t\treturn () => {\n\t\t\tnodeWindow.removeEventListener( 'resize', onResize );\n\t\t};\n\t}, [] );\n\n\tconst isZoomedOut = scale !== 1;\n\n\tuseEffect( () => {\n\t\tif ( ! isZoomedOut ) {\n\t\t\tprevContainerWidthRef.current = containerWidth;\n\t\t}\n\t}, [ containerWidth, isZoomedOut ] );\n\n\tconst disabledRef = useDisabled( { isDisabled: ! readonly } );\n\tconst bodyRef = useMergeRefs( [\n\t\tuseBubbleEvents( iframeDocument ),\n\t\tcontentRef,\n\t\tclearerRef,\n\t\twritingFlowRef,\n\t\tdisabledRef,\n\t\t// Avoid resize listeners when not needed, these will trigger\n\t\t// unnecessary re-renders when animating the iframe width, or when\n\t\t// expanding preview iframes.\n\t\tisZoomedOut ? iframeResizeRef : null,\n\t] );\n\n\t// Correct doctype is required to enable rendering in standards\n\t// mode. Also preload the styles to avoid a flash of unstyled\n\t// content.\n\tconst html = `<!doctype html>\n<html>\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\t\t<script>window.frameElement._load()</script>\n\t\t<style>\n\t\t\thtml{\n\t\t\t\theight: auto !important;\n\t\t\t\tmin-height: 100%;\n\t\t\t}\n\t\t\t/* Lowest specificity to not override global styles */\n\t\t\t:where(body) {\n\t\t\t\tmargin: 0;\n\t\t\t\t/* Default background color in case zoom out mode background\n\t\t\t\tcolors the html element */\n\t\t\t\tbackground-color: white;\n\t\t\t}\n\t\t</style>\n\t\t${ styles }\n\t\t${ scripts }\n\t</head>\n\t<body>\n\t\t<script>document.currentScript.parentElement.remove()</script>\n\t</body>\n</html>`;\n\n\tconst [ src, cleanup ] = useMemo( () => {\n\t\tconst _src = URL.createObjectURL(\n\t\t\tnew window.Blob( [ html ], { type: 'text/html' } )\n\t\t);\n\t\treturn [ _src, () => URL.revokeObjectURL( _src ) ];\n\t}, [ html ] );\n\n\tuseEffect( () => cleanup, [ cleanup ] );\n\n\tuseEffect( () => {\n\t\tif ( ! iframeDocument || ! isZoomedOut ) {\n\t\t\treturn;\n\t\t}\n\n\t\tiframeDocument.documentElement.classList.add( 'is-zoomed-out' );\n\n\t\tconst maxWidth = 750;\n\t\tiframeDocument.documentElement.style.setProperty(\n\t\t\t'--wp-block-editor-iframe-zoom-out-scale',\n\t\t\tscale === 'default'\n\t\t\t\t? Math.min( containerWidth, maxWidth ) /\n\t\t\t\t\t\tprevContainerWidthRef.current\n\t\t\t\t: scale\n\t\t);\n\t\tiframeDocument.documentElement.style.setProperty(\n\t\t\t'--wp-block-editor-iframe-zoom-out-frame-size',\n\t\t\ttypeof frameSize === 'number' ? `${ frameSize }px` : frameSize\n\t\t);\n\t\tiframeDocument.documentElement.style.setProperty(\n\t\t\t'--wp-block-editor-iframe-zoom-out-content-height',\n\t\t\t`${ contentHeight }px`\n\t\t);\n\t\tiframeDocument.documentElement.style.setProperty(\n\t\t\t'--wp-block-editor-iframe-zoom-out-inner-height',\n\t\t\t`${ iframeWindowInnerHeight }px`\n\t\t);\n\t\tiframeDocument.documentElement.style.setProperty(\n\t\t\t'--wp-block-editor-iframe-zoom-out-container-width',\n\t\t\t`${ containerWidth }px`\n\t\t);\n\t\tiframeDocument.documentElement.style.setProperty(\n\t\t\t'--wp-block-editor-iframe-zoom-out-prev-container-width',\n\t\t\t`${ prevContainerWidthRef.current }px`\n\t\t);\n\n\t\treturn () => {\n\t\t\tiframeDocument.documentElement.classList.remove( 'is-zoomed-out' );\n\n\t\t\tiframeDocument.documentElement.style.removeProperty(\n\t\t\t\t'--wp-block-editor-iframe-zoom-out-scale'\n\t\t\t);\n\t\t\tiframeDocument.documentElement.style.removeProperty(\n\t\t\t\t'--wp-block-editor-iframe-zoom-out-frame-size'\n\t\t\t);\n\t\t\tiframeDocument.documentElement.style.removeProperty(\n\t\t\t\t'--wp-block-editor-iframe-zoom-out-content-height'\n\t\t\t);\n\t\t\tiframeDocument.documentElement.style.removeProperty(\n\t\t\t\t'--wp-block-editor-iframe-zoom-out-inner-height'\n\t\t\t);\n\t\t\tiframeDocument.documentElement.style.removeProperty(\n\t\t\t\t'--wp-block-editor-iframe-zoom-out-container-width'\n\t\t\t);\n\t\t\tiframeDocument.documentElement.style.removeProperty(\n\t\t\t\t'--wp-block-editor-iframe-zoom-out-prev-container-width'\n\t\t\t);\n\t\t};\n\t}, [\n\t\tscale,\n\t\tframeSize,\n\t\tiframeDocument,\n\t\tiframeWindowInnerHeight,\n\t\tcontentHeight,\n\t\tcontainerWidth,\n\t\twindowInnerWidth,\n\t\tisZoomedOut,\n\t] );\n\n\t// Make sure to not render the before and after focusable div elements in view\n\t// mode. They're only needed to capture focus in edit mode.\n\tconst shouldRenderFocusCaptureElements = tabIndex >= 0 && ! isPreviewMode;\n\n\tconst iframe = (\n\t\t<>\n\t\t\t{ shouldRenderFocusCaptureElements && before }\n\t\t\t{ /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */ }\n\t\t\t<iframe\n\t\t\t\t{ ...props }\n\t\t\t\tstyle={ {\n\t\t\t\t\t...props.style,\n\t\t\t\t\theight: props.style?.height,\n\t\t\t\t} }\n\t\t\t\tref={ useMergeRefs( [ ref, setRef ] ) }\n\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t// Correct doctype is required to enable rendering in standards\n\t\t\t\t// mode. Also preload the styles to avoid a flash of unstyled\n\t\t\t\t// content.\n\t\t\t\tsrc={ src }\n\t\t\t\ttitle={ title }\n\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\tif ( props.onKeyDown ) {\n\t\t\t\t\t\tprops.onKeyDown( event );\n\t\t\t\t\t}\n\t\t\t\t\t// If the event originates from inside the iframe, it means\n\t\t\t\t\t// it bubbled through the portal, but only with React\n\t\t\t\t\t// events. We need to to bubble native events as well,\n\t\t\t\t\t// though by doing so we also trigger another React event,\n\t\t\t\t\t// so we need to stop the propagation of this event to avoid\n\t\t\t\t\t// duplication.\n\t\t\t\t\tif (\n\t\t\t\t\t\tevent.currentTarget.ownerDocument !==\n\t\t\t\t\t\tevent.target.ownerDocument\n\t\t\t\t\t) {\n\t\t\t\t\t\t// We should only stop propagation of the React event,\n\t\t\t\t\t\t// the native event should further bubble inside the\n\t\t\t\t\t\t// iframe to the document and window.\n\t\t\t\t\t\t// Alternatively, we could consider redispatching the\n\t\t\t\t\t\t// native event in the iframe.\n\t\t\t\t\t\tconst { stopPropagation } = event.nativeEvent;\n\t\t\t\t\t\tevent.nativeEvent.stopPropagation = () => {};\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tevent.nativeEvent.stopPropagation = stopPropagation;\n\t\t\t\t\t\tbubbleEvent(\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\twindow.KeyboardEvent,\n\t\t\t\t\t\t\tevent.currentTarget\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ iframeDocument &&\n\t\t\t\t\tcreatePortal(\n\t\t\t\t\t\t// We want to prevent React events from bubbling throught the iframe\n\t\t\t\t\t\t// we bubble these manually.\n\t\t\t\t\t\t/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n\t\t\t\t\t\t<body\n\t\t\t\t\t\t\tref={ bodyRef }\n\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t'block-editor-iframe__body',\n\t\t\t\t\t\t\t\t'editor-styles-wrapper',\n\t\t\t\t\t\t\t\t...bodyClasses\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ contentResizeListener }\n\t\t\t\t\t\t\t<StyleProvider document={ iframeDocument }>\n\t\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t\t</StyleProvider>\n\t\t\t\t\t\t</body>,\n\t\t\t\t\t\tiframeDocument.documentElement\n\t\t\t\t\t) }\n\t\t\t</iframe>\n\t\t\t{ shouldRenderFocusCaptureElements && after }\n\t\t</>\n\t);\n\n\treturn (\n\t\t<div className=\"block-editor-iframe__container\" ref={ windowResizeRef }>\n\t\t\t{ containerResizeListener }\n\t\t\t<div\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-iframe__scale-container',\n\t\t\t\t\tisZoomedOut && 'is-zoomed-out'\n\t\t\t\t) }\n\t\t\t\tstyle={ {\n\t\t\t\t\t'--wp-block-editor-iframe-zoom-out-container-width':\n\t\t\t\t\t\tisZoomedOut && `${ containerWidth }px`,\n\t\t\t\t\t'--wp-block-editor-iframe-zoom-out-prev-container-width':\n\t\t\t\t\t\tisZoomedOut && `${ prevContainerWidthRef.current }px`,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ iframe }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction IframeIfReady( props, ref ) {\n\tconst isInitialised = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().__internalIsInitialized,\n\t\t[]\n\t);\n\n\t// We shouldn't render the iframe until the editor settings are initialised.\n\t// The initial settings are needed to get the styles for the srcDoc, which\n\t// cannot be changed after the iframe is mounted. srcDoc is used to to set\n\t// the initial iframe HTML, which is required to avoid a flash of unstyled\n\t// content.\n\tif ( ! isInitialised ) {\n\t\treturn null;\n\t}\n\n\treturn <Iframe { ...props } forwardedRef={ ref } />;\n}\n\nexport default forwardRef( IframeIfReady );\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_element","_i18n","_compose","_components","_data","_blockSelectionClearer","_writingFlow","_getCompatibilityStyles","_store","_jsxRuntime","bubbleEvent","event","Constructor","frame","init","key","contentDocument","defaultView","MouseEvent","rect","getBoundingClientRect","clientX","left","clientY","top","newEvent","type","defaultPrevented","preventDefault","cancelled","dispatchEvent","useBubbleEvents","iframeDocument","useRefEffect","frameElement","html","documentElement","eventTypes","handlers","name","prototype","Object","getPrototypeOf","constructorName","constructor","window","addEventListener","removeEventListener","Iframe","contentRef","children","tabIndex","scale","frameSize","readonly","forwardedRef","ref","title","__","props","resolvedAssets","isPreviewMode","useSelect","select","getSettings","blockEditorStore","settings","__unstableResolvedAssets","__unstableIsPreviewMode","styles","scripts","setIframeDocument","useState","initialContainerWidth","useRef","bodyClasses","setBodyClasses","clearerRef","useBlockSelectionClearer","before","writingFlowRef","after","useWritingFlow","contentResizeListener","height","contentHeight","useResizeObserver","containerResizeListener","width","containerWidth","setRef","node","_load","iFrameDocument","preventFileDropDefault","onLoad","ownerDocument","classList","add","Array","from","body","filter","startsWith","dir","compatStyle","getCompatibilityStyles","getElementById","id","head","appendChild","cloneNode","console","warn","iframeWindowInnerHeight","setIframeWindowInnerHeight","iframeResizeRef","nodeWindow","innerHeight","onResize","windowInnerWidth","setWindowInnerWidth","windowResizeRef","innerWidth","isZoomedOut","useEffect","current","scaleContainerWidth","Math","max","disabledRef","useDisabled","isDisabled","bodyRef","useMergeRefs","src","cleanup","useMemo","_src","URL","createObjectURL","Blob","revokeObjectURL","zoomOutAnimationClassnameRef","handleZoomOutAnimationClassname","clearTimeout","setTimeout","remove","maxWidth","style","setProperty","min","parseInt","removeProperty","shouldRenderFocusCaptureElements","iframe","jsxs","Fragment","jsx","border","onKeyDown","currentTarget","target","stopPropagation","nativeEvent","KeyboardEvent","createPortal","className","clsx","__experimentalStyleProvider","document","IframeIfReady","isInitialised","__internalIsInitialized","_default","exports","default","forwardRef"],"sources":["@wordpress/block-editor/src/components/iframe/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseState,\n\tcreatePortal,\n\tforwardRef,\n\tuseMemo,\n\tuseEffect,\n\tuseRef,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseResizeObserver,\n\tuseMergeRefs,\n\tuseRefEffect,\n\tuseDisabled,\n} from '@wordpress/compose';\nimport { __experimentalStyleProvider as StyleProvider } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useBlockSelectionClearer } from '../block-selection-clearer';\nimport { useWritingFlow } from '../writing-flow';\nimport { getCompatibilityStyles } from './get-compatibility-styles';\nimport { store as blockEditorStore } from '../../store';\n\nfunction bubbleEvent( event, Constructor, frame ) {\n\tconst init = {};\n\n\tfor ( const key in event ) {\n\t\tinit[ key ] = event[ key ];\n\t}\n\n\t// Check if the event is a MouseEvent generated within the iframe.\n\t// If so, adjust the coordinates to be relative to the position of\n\t// the iframe. This ensures that components such as Draggable\n\t// receive coordinates relative to the window, instead of relative\n\t// to the iframe. Without this, the Draggable event handler would\n\t// result in components \"jumping\" position as soon as the user\n\t// drags over the iframe.\n\tif ( event instanceof frame.contentDocument.defaultView.MouseEvent ) {\n\t\tconst rect = frame.getBoundingClientRect();\n\t\tinit.clientX += rect.left;\n\t\tinit.clientY += rect.top;\n\t}\n\n\tconst newEvent = new Constructor( event.type, init );\n\tif ( init.defaultPrevented ) {\n\t\tnewEvent.preventDefault();\n\t}\n\tconst cancelled = ! frame.dispatchEvent( newEvent );\n\n\tif ( cancelled ) {\n\t\tevent.preventDefault();\n\t}\n}\n\n/**\n * Bubbles some event types (keydown, keypress, and dragover) to parent document\n * document to ensure that the keyboard shortcuts and drag and drop work.\n *\n * Ideally, we should remove event bubbling in the future. Keyboard shortcuts\n * should be context dependent, e.g. actions on blocks like Cmd+A should not\n * work globally outside the block editor.\n *\n * @param {Document} iframeDocument Document to attach listeners to.\n */\nfunction useBubbleEvents( iframeDocument ) {\n\treturn useRefEffect( () => {\n\t\tconst { defaultView } = iframeDocument;\n\t\tif ( ! defaultView ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { frameElement } = defaultView;\n\t\tconst html = iframeDocument.documentElement;\n\t\tconst eventTypes = [ 'dragover', 'mousemove' ];\n\t\tconst handlers = {};\n\t\tfor ( const name of eventTypes ) {\n\t\t\thandlers[ name ] = ( event ) => {\n\t\t\t\tconst prototype = Object.getPrototypeOf( event );\n\t\t\t\tconst constructorName = prototype.constructor.name;\n\t\t\t\tconst Constructor = window[ constructorName ];\n\t\t\t\tbubbleEvent( event, Constructor, frameElement );\n\t\t\t};\n\t\t\thtml.addEventListener( name, handlers[ name ] );\n\t\t}\n\n\t\treturn () => {\n\t\t\tfor ( const name of eventTypes ) {\n\t\t\t\thtml.removeEventListener( name, handlers[ name ] );\n\t\t\t}\n\t\t};\n\t} );\n}\n\nfunction Iframe( {\n\tcontentRef,\n\tchildren,\n\ttabIndex = 0,\n\tscale = 1,\n\tframeSize = 0,\n\treadonly,\n\tforwardedRef: ref,\n\ttitle = __( 'Editor canvas' ),\n\t...props\n} ) {\n\tconst { resolvedAssets, isPreviewMode } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst settings = getSettings();\n\t\treturn {\n\t\t\tresolvedAssets: settings.__unstableResolvedAssets,\n\t\t\tisPreviewMode: settings.__unstableIsPreviewMode,\n\t\t};\n\t}, [] );\n\tconst { styles = '', scripts = '' } = resolvedAssets;\n\tconst [ iframeDocument, setIframeDocument ] = useState();\n\tconst initialContainerWidth = useRef( 0 );\n\tconst [ bodyClasses, setBodyClasses ] = useState( [] );\n\tconst clearerRef = useBlockSelectionClearer();\n\tconst [ before, writingFlowRef, after ] = useWritingFlow();\n\tconst [ contentResizeListener, { height: contentHeight } ] =\n\t\tuseResizeObserver();\n\tconst [ containerResizeListener, { width: containerWidth } ] =\n\t\tuseResizeObserver();\n\n\tconst setRef = useRefEffect( ( node ) => {\n\t\tnode._load = () => {\n\t\t\tsetIframeDocument( node.contentDocument );\n\t\t};\n\t\tlet iFrameDocument;\n\t\t// Prevent the default browser action for files dropped outside of dropzones.\n\t\tfunction preventFileDropDefault( event ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tfunction onLoad() {\n\t\t\tconst { contentDocument, ownerDocument } = node;\n\t\t\tconst { documentElement } = contentDocument;\n\t\t\tiFrameDocument = contentDocument;\n\n\t\t\tdocumentElement.classList.add( 'block-editor-iframe__html' );\n\n\t\t\tclearerRef( documentElement );\n\n\t\t\t// Ideally ALL classes that are added through get_body_class should\n\t\t\t// be added in the editor too, which we'll somehow have to get from\n\t\t\t// the server in the future (which will run the PHP filters).\n\t\t\tsetBodyClasses(\n\t\t\t\tArray.from( ownerDocument.body.classList ).filter(\n\t\t\t\t\t( name ) =>\n\t\t\t\t\t\tname.startsWith( 'admin-color-' ) ||\n\t\t\t\t\t\tname.startsWith( 'post-type-' ) ||\n\t\t\t\t\t\tname === 'wp-embed-responsive'\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tcontentDocument.dir = ownerDocument.dir;\n\n\t\t\tfor ( const compatStyle of getCompatibilityStyles() ) {\n\t\t\t\tif ( contentDocument.getElementById( compatStyle.id ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcontentDocument.head.appendChild(\n\t\t\t\t\tcompatStyle.cloneNode( true )\n\t\t\t\t);\n\n\t\t\t\tif ( ! isPreviewMode ) {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`${ compatStyle.id } was added to the iframe incorrectly. Please use block.json or enqueue_block_assets to add styles to the iframe.`,\n\t\t\t\t\t\tcompatStyle\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tiFrameDocument.addEventListener(\n\t\t\t\t'dragover',\n\t\t\t\tpreventFileDropDefault,\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tiFrameDocument.addEventListener(\n\t\t\t\t'drop',\n\t\t\t\tpreventFileDropDefault,\n\t\t\t\tfalse\n\t\t\t);\n\t\t}\n\n\t\tnode.addEventListener( 'load', onLoad );\n\n\t\treturn () => {\n\t\t\tdelete node._load;\n\t\t\tnode.removeEventListener( 'load', onLoad );\n\t\t\tiFrameDocument?.removeEventListener(\n\t\t\t\t'dragover',\n\t\t\t\tpreventFileDropDefault\n\t\t\t);\n\t\t\tiFrameDocument?.removeEventListener(\n\t\t\t\t'drop',\n\t\t\t\tpreventFileDropDefault\n\t\t\t);\n\t\t};\n\t}, [] );\n\n\tconst [ iframeWindowInnerHeight, setIframeWindowInnerHeight ] = useState();\n\n\tconst iframeResizeRef = useRefEffect( ( node ) => {\n\t\tconst nodeWindow = node.ownerDocument.defaultView;\n\n\t\tsetIframeWindowInnerHeight( nodeWindow.innerHeight );\n\t\tconst onResize = () => {\n\t\t\tsetIframeWindowInnerHeight( nodeWindow.innerHeight );\n\t\t};\n\t\tnodeWindow.addEventListener( 'resize', onResize );\n\t\treturn () => {\n\t\t\tnodeWindow.removeEventListener( 'resize', onResize );\n\t\t};\n\t}, [] );\n\n\tconst [ windowInnerWidth, setWindowInnerWidth ] = useState();\n\n\tconst windowResizeRef = useRefEffect( ( node ) => {\n\t\tconst nodeWindow = node.ownerDocument.defaultView;\n\n\t\tsetWindowInnerWidth( nodeWindow.innerWidth );\n\t\tconst onResize = () => {\n\t\t\tsetWindowInnerWidth( nodeWindow.innerWidth );\n\t\t};\n\t\tnodeWindow.addEventListener( 'resize', onResize );\n\t\treturn () => {\n\t\t\tnodeWindow.removeEventListener( 'resize', onResize );\n\t\t};\n\t}, [] );\n\n\tconst isZoomedOut = scale !== 1;\n\n\tuseEffect( () => {\n\t\tif ( ! isZoomedOut ) {\n\t\t\tinitialContainerWidth.current = containerWidth;\n\t\t}\n\t}, [ containerWidth, isZoomedOut ] );\n\n\tconst scaleContainerWidth = Math.max(\n\t\tinitialContainerWidth.current,\n\t\tcontainerWidth\n\t);\n\n\tconst disabledRef = useDisabled( { isDisabled: ! readonly } );\n\tconst bodyRef = useMergeRefs( [\n\t\tuseBubbleEvents( iframeDocument ),\n\t\tcontentRef,\n\t\tclearerRef,\n\t\twritingFlowRef,\n\t\tdisabledRef,\n\t\t// Avoid resize listeners when not needed, these will trigger\n\t\t// unnecessary re-renders when animating the iframe width, or when\n\t\t// expanding preview iframes.\n\t\tisZoomedOut ? iframeResizeRef : null,\n\t] );\n\n\t// Correct doctype is required to enable rendering in standards\n\t// mode. Also preload the styles to avoid a flash of unstyled\n\t// content.\n\tconst html = `<!doctype html>\n<html>\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\t\t<script>window.frameElement._load()</script>\n\t\t<style>\n\t\t\thtml{\n\t\t\t\theight: auto !important;\n\t\t\t\tmin-height: 100%;\n\t\t\t}\n\t\t\t/* Lowest specificity to not override global styles */\n\t\t\t:where(body) {\n\t\t\t\tmargin: 0;\n\t\t\t\t/* Default background color in case zoom out mode background\n\t\t\t\tcolors the html element */\n\t\t\t\tbackground-color: white;\n\t\t\t}\n\t\t</style>\n\t\t${ styles }\n\t\t${ scripts }\n\t</head>\n\t<body>\n\t\t<script>document.currentScript.parentElement.remove()</script>\n\t</body>\n</html>`;\n\n\tconst [ src, cleanup ] = useMemo( () => {\n\t\tconst _src = URL.createObjectURL(\n\t\t\tnew window.Blob( [ html ], { type: 'text/html' } )\n\t\t);\n\t\treturn [ _src, () => URL.revokeObjectURL( _src ) ];\n\t}, [ html ] );\n\n\tuseEffect( () => cleanup, [ cleanup ] );\n\n\tconst zoomOutAnimationClassnameRef = useRef( null );\n\n\t// Toggle zoom out CSS Classes only when zoom out mode changes. We could add these into the useEffect\n\t// that controls settings the CSS variables, but then we would need to do more work to ensure we're\n\t// only toggling these when the zoom out mode changes, as that useEffect is also triggered by a large\n\t// number of dependencies.\n\tuseEffect( () => {\n\t\tif ( ! iframeDocument || ! isZoomedOut ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handleZoomOutAnimationClassname = () => {\n\t\t\tclearTimeout( zoomOutAnimationClassnameRef.current );\n\n\t\t\tiframeDocument.documentElement.classList.add(\n\t\t\t\t'zoom-out-animation'\n\t\t\t);\n\n\t\t\tzoomOutAnimationClassnameRef.current = setTimeout( () => {\n\t\t\t\tiframeDocument.documentElement.classList.remove(\n\t\t\t\t\t'zoom-out-animation'\n\t\t\t\t);\n\t\t\t}, 400 ); // 400ms should match the animation speed used in components/iframe/content.scss\n\t\t};\n\n\t\thandleZoomOutAnimationClassname();\n\t\tiframeDocument.documentElement.classList.add( 'is-zoomed-out' );\n\n\t\treturn () => {\n\t\t\thandleZoomOutAnimationClassname();\n\t\t\tiframeDocument.documentElement.classList.remove( 'is-zoomed-out' );\n\t\t};\n\t}, [ iframeDocument, isZoomedOut ] );\n\n\t// Calculate the scaling and CSS variables for the zoom out canvas\n\tuseEffect( () => {\n\t\tif ( ! iframeDocument || ! isZoomedOut ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst maxWidth = 750;\n\t\t// Note: When we initialize the zoom out when the canvas is smaller (sidebars open),\n\t\t// initialContainerWidth will be smaller than the full page, and reflow will happen\n\t\t// when the canvas area becomes larger due to sidebars closing. This is a known but\n\t\t// minor divergence for now.\n\n\t\t// This scaling calculation has to happen within the JS because CSS calc() can\n\t\t// only divide and multiply by a unitless value. I.e. calc( 100px / 2 ) is valid\n\t\t// but calc( 100px / 2px ) is not.\n\t\tiframeDocument.documentElement.style.setProperty(\n\t\t\t'--wp-block-editor-iframe-zoom-out-scale',\n\t\t\tscale === 'default'\n\t\t\t\t? ( Math.min( containerWidth, maxWidth ) -\n\t\t\t\t\t\tparseInt( frameSize ) * 2 ) /\n\t\t\t\t\t\tscaleContainerWidth\n\t\t\t\t: scale\n\t\t);\n\n\t\t// frameSize has to be a px value for the scaling and frame size to be computed correctly.\n\t\tiframeDocument.documentElement.style.setProperty(\n\t\t\t'--wp-block-editor-iframe-zoom-out-frame-size',\n\t\t\ttypeof frameSize === 'number' ? `${ frameSize }px` : frameSize\n\t\t);\n\t\tiframeDocument.documentElement.style.setProperty(\n\t\t\t'--wp-block-editor-iframe-zoom-out-content-height',\n\t\t\t`${ contentHeight }px`\n\t\t);\n\t\tiframeDocument.documentElement.style.setProperty(\n\t\t\t'--wp-block-editor-iframe-zoom-out-inner-height',\n\t\t\t`${ iframeWindowInnerHeight }px`\n\t\t);\n\t\tiframeDocument.documentElement.style.setProperty(\n\t\t\t'--wp-block-editor-iframe-zoom-out-container-width',\n\t\t\t`${ containerWidth }px`\n\t\t);\n\t\tiframeDocument.documentElement.style.setProperty(\n\t\t\t'--wp-block-editor-iframe-zoom-out-scale-container-width',\n\t\t\t`${ scaleContainerWidth }px`\n\t\t);\n\n\t\treturn () => {\n\t\t\tiframeDocument.documentElement.style.removeProperty(\n\t\t\t\t'--wp-block-editor-iframe-zoom-out-scale'\n\t\t\t);\n\t\t\tiframeDocument.documentElement.style.removeProperty(\n\t\t\t\t'--wp-block-editor-iframe-zoom-out-frame-size'\n\t\t\t);\n\t\t\tiframeDocument.documentElement.style.removeProperty(\n\t\t\t\t'--wp-block-editor-iframe-zoom-out-content-height'\n\t\t\t);\n\t\t\tiframeDocument.documentElement.style.removeProperty(\n\t\t\t\t'--wp-block-editor-iframe-zoom-out-inner-height'\n\t\t\t);\n\t\t\tiframeDocument.documentElement.style.removeProperty(\n\t\t\t\t'--wp-block-editor-iframe-zoom-out-container-width'\n\t\t\t);\n\t\t\tiframeDocument.documentElement.style.removeProperty(\n\t\t\t\t'--wp-block-editor-iframe-zoom-out-scale-container-width'\n\t\t\t);\n\t\t};\n\t}, [\n\t\tscale,\n\t\tframeSize,\n\t\tiframeDocument,\n\t\tiframeWindowInnerHeight,\n\t\tcontentHeight,\n\t\tcontainerWidth,\n\t\twindowInnerWidth,\n\t\tisZoomedOut,\n\t\tscaleContainerWidth,\n\t] );\n\n\t// Make sure to not render the before and after focusable div elements in view\n\t// mode. They're only needed to capture focus in edit mode.\n\tconst shouldRenderFocusCaptureElements = tabIndex >= 0 && ! isPreviewMode;\n\n\tconst iframe = (\n\t\t<>\n\t\t\t{ shouldRenderFocusCaptureElements && before }\n\t\t\t{ /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */ }\n\t\t\t<iframe\n\t\t\t\t{ ...props }\n\t\t\t\tstyle={ {\n\t\t\t\t\t...props.style,\n\t\t\t\t\theight: props.style?.height,\n\t\t\t\t\tborder: 0,\n\t\t\t\t} }\n\t\t\t\tref={ useMergeRefs( [ ref, setRef ] ) }\n\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t// Correct doctype is required to enable rendering in standards\n\t\t\t\t// mode. Also preload the styles to avoid a flash of unstyled\n\t\t\t\t// content.\n\t\t\t\tsrc={ src }\n\t\t\t\ttitle={ title }\n\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\tif ( props.onKeyDown ) {\n\t\t\t\t\t\tprops.onKeyDown( event );\n\t\t\t\t\t}\n\t\t\t\t\t// If the event originates from inside the iframe, it means\n\t\t\t\t\t// it bubbled through the portal, but only with React\n\t\t\t\t\t// events. We need to to bubble native events as well,\n\t\t\t\t\t// though by doing so we also trigger another React event,\n\t\t\t\t\t// so we need to stop the propagation of this event to avoid\n\t\t\t\t\t// duplication.\n\t\t\t\t\tif (\n\t\t\t\t\t\tevent.currentTarget.ownerDocument !==\n\t\t\t\t\t\tevent.target.ownerDocument\n\t\t\t\t\t) {\n\t\t\t\t\t\t// We should only stop propagation of the React event,\n\t\t\t\t\t\t// the native event should further bubble inside the\n\t\t\t\t\t\t// iframe to the document and window.\n\t\t\t\t\t\t// Alternatively, we could consider redispatching the\n\t\t\t\t\t\t// native event in the iframe.\n\t\t\t\t\t\tconst { stopPropagation } = event.nativeEvent;\n\t\t\t\t\t\tevent.nativeEvent.stopPropagation = () => {};\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tevent.nativeEvent.stopPropagation = stopPropagation;\n\t\t\t\t\t\tbubbleEvent(\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\twindow.KeyboardEvent,\n\t\t\t\t\t\t\tevent.currentTarget\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ iframeDocument &&\n\t\t\t\t\tcreatePortal(\n\t\t\t\t\t\t// We want to prevent React events from bubbling throught the iframe\n\t\t\t\t\t\t// we bubble these manually.\n\t\t\t\t\t\t/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n\t\t\t\t\t\t<body\n\t\t\t\t\t\t\tref={ bodyRef }\n\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t'block-editor-iframe__body',\n\t\t\t\t\t\t\t\t'editor-styles-wrapper',\n\t\t\t\t\t\t\t\t...bodyClasses\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ contentResizeListener }\n\t\t\t\t\t\t\t<StyleProvider document={ iframeDocument }>\n\t\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t\t</StyleProvider>\n\t\t\t\t\t\t</body>,\n\t\t\t\t\t\tiframeDocument.documentElement\n\t\t\t\t\t) }\n\t\t\t</iframe>\n\t\t\t{ shouldRenderFocusCaptureElements && after }\n\t\t</>\n\t);\n\n\treturn (\n\t\t<div className=\"block-editor-iframe__container\" ref={ windowResizeRef }>\n\t\t\t{ containerResizeListener }\n\t\t\t<div\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-iframe__scale-container',\n\t\t\t\t\tisZoomedOut && 'is-zoomed-out'\n\t\t\t\t) }\n\t\t\t\tstyle={ {\n\t\t\t\t\t'--wp-block-editor-iframe-zoom-out-scale-container-width':\n\t\t\t\t\t\tisZoomedOut && `${ scaleContainerWidth }px`,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ iframe }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction IframeIfReady( props, ref ) {\n\tconst isInitialised = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().__internalIsInitialized,\n\t\t[]\n\t);\n\n\t// We shouldn't render the iframe until the editor settings are initialised.\n\t// The initial settings are needed to get the styles for the srcDoc, which\n\t// cannot be changed after the iframe is mounted. srcDoc is used to to set\n\t// the initial iframe HTML, which is required to avoid a flash of unstyled\n\t// content.\n\tif ( ! isInitialised ) {\n\t\treturn null;\n\t}\n\n\treturn <Iframe { ...props } forwardedRef={ ref } />;\n}\n\nexport default forwardRef( IframeIfReady );\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -32,12 +32,16 @@ function BlockPatternsTab({
|
|
|
32
32
|
selectedCategory,
|
|
33
33
|
onInsert,
|
|
34
34
|
rootClientId,
|
|
35
|
+
setHasCategories,
|
|
35
36
|
children
|
|
36
37
|
}) {
|
|
37
38
|
const [showPatternsExplorer, setShowPatternsExplorer] = (0, _element.useState)(false);
|
|
38
39
|
const categories = (0, _usePatternCategories.usePatternCategories)(rootClientId);
|
|
39
40
|
const isMobile = (0, _compose.useViewportMatch)('medium', '<');
|
|
40
41
|
const isResolvingPatterns = (0, _data.useSelect)(select => (0, _lockUnlock.unlock)(select(_store.store)).isResolvingPatterns(), []);
|
|
42
|
+
(0, _element.useEffect)(() => {
|
|
43
|
+
setHasCategories(!!categories.length);
|
|
44
|
+
}, [categories, setHasCategories]);
|
|
41
45
|
if (isResolvingPatterns) {
|
|
42
46
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
43
47
|
className: "block-editor-inserter__patterns-loading",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_compose","_components","_i18n","_data","_blockPatternsExplorer","_interopRequireDefault","_mobileTabNavigation","_patternCategoryPreviews","_usePatternCategories","_categoryTabs","_noResults","_store","_lockUnlock","_jsxRuntime","BlockPatternsTab","onSelectCategory","selectedCategory","onInsert","rootClientId","children","showPatternsExplorer","setShowPatternsExplorer","useState","categories","usePatternCategories","isMobile","useViewportMatch","isResolvingPatterns","useSelect","select","unlock","blockEditorStore","jsx","className","Spinner","
|
|
1
|
+
{"version":3,"names":["_element","require","_compose","_components","_i18n","_data","_blockPatternsExplorer","_interopRequireDefault","_mobileTabNavigation","_patternCategoryPreviews","_usePatternCategories","_categoryTabs","_noResults","_store","_lockUnlock","_jsxRuntime","BlockPatternsTab","onSelectCategory","selectedCategory","onInsert","rootClientId","setHasCategories","children","showPatternsExplorer","setShowPatternsExplorer","useState","categories","usePatternCategories","isMobile","useViewportMatch","isResolvingPatterns","useSelect","select","unlock","blockEditorStore","useEffect","length","jsx","className","Spinner","default","jsxs","Fragment","Button","__next40pxDefaultSize","onClick","variant","__","category","PatternCategoryPreviews","showTitlesAsTooltip","name","initialCategory","patternCategories","onModalClose","_default","exports"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { Button, Spinner } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport PatternsExplorerModal from '../block-patterns-explorer';\nimport MobileTabNavigation from '../mobile-tab-navigation';\nimport { PatternCategoryPreviews } from './pattern-category-previews';\nimport { usePatternCategories } from './use-pattern-categories';\nimport CategoryTabs from '../category-tabs';\nimport InserterNoResults from '../no-results';\nimport { store as blockEditorStore } from '../../../store';\nimport { unlock } from '../../../lock-unlock';\n\nfunction BlockPatternsTab( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n\tsetHasCategories,\n\tchildren,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\n\tconst categories = usePatternCategories( rootClientId );\n\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\tconst isResolvingPatterns = useSelect(\n\t\t( select ) =>\n\t\t\tunlock( select( blockEditorStore ) ).isResolvingPatterns(),\n\t\t[]\n\t);\n\n\tuseEffect( () => {\n\t\tsetHasCategories( !! categories.length );\n\t}, [ categories, setHasCategories ] );\n\n\tif ( isResolvingPatterns ) {\n\t\treturn (\n\t\t\t<div className=\"block-editor-inserter__patterns-loading\">\n\t\t\t\t<Spinner />\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( ! categories.length ) {\n\t\treturn <InserterNoResults />;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<CategoryTabs\n\t\t\t\t\t\tcategories={ categories }\n\t\t\t\t\t\tselectedCategory={ selectedCategory }\n\t\t\t\t\t\tonSelectCategory={ onSelectCategory }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</CategoryTabs>\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\tonClick={ () => setShowPatternsExplorer( true ) }\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<div className=\"block-editor-inserter__category-panel\">\n\t\t\t\t\t\t\t<PatternCategoryPreviews\n\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\t\tshowTitlesAsTooltip={ false }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ selectedCategory || categories[ 0 ] }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTab;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -77,8 +77,10 @@ function useInsertionPoint({
|
|
|
77
77
|
getSelectedBlockClientId,
|
|
78
78
|
getBlockRootClientId,
|
|
79
79
|
getBlockIndex,
|
|
80
|
-
getBlockOrder
|
|
81
|
-
|
|
80
|
+
getBlockOrder,
|
|
81
|
+
getSectionRootClientId,
|
|
82
|
+
__unstableGetEditorMode
|
|
83
|
+
} = (0, _lockUnlock.unlock)(select(_store.store));
|
|
82
84
|
const selectedBlockClientId = getSelectedBlockClientId();
|
|
83
85
|
let _destinationRootClientId = rootClientId;
|
|
84
86
|
let _destinationIndex;
|
|
@@ -89,8 +91,18 @@ function useInsertionPoint({
|
|
|
89
91
|
// Insert after a specific client ID.
|
|
90
92
|
_destinationIndex = getBlockIndex(clientId);
|
|
91
93
|
} else if (!isAppender && selectedBlockClientId) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
+
const sectionRootClientId = getSectionRootClientId();
|
|
95
|
+
|
|
96
|
+
// Avoids empty inserter when the selected block is acting
|
|
97
|
+
// as the "root".
|
|
98
|
+
// See https://github.com/WordPress/gutenberg/pull/66214.
|
|
99
|
+
if (__unstableGetEditorMode() === 'zoom-out' && sectionRootClientId === selectedBlockClientId) {
|
|
100
|
+
_destinationRootClientId = sectionRootClientId;
|
|
101
|
+
_destinationIndex = getBlockOrder(_destinationRootClientId).length;
|
|
102
|
+
} else {
|
|
103
|
+
_destinationRootClientId = getBlockRootClientId(selectedBlockClientId);
|
|
104
|
+
_destinationIndex = getBlockIndex(selectedBlockClientId) + 1;
|
|
105
|
+
}
|
|
94
106
|
} else {
|
|
95
107
|
// Insert at the end of the list.
|
|
96
108
|
_destinationIndex = getBlockOrder(_destinationRootClientId).length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_data","require","_blocks","_i18n","_a11y","_element","_store","_lockUnlock","getIndex","destinationRootClientId","destinationIndex","rootClientId","registry","parents","select","blockEditorStore","getBlockParents","parentIndex","indexOf","getBlockIndex","getBlockOrder","length","useInsertionPoint","insertionIndex","clientId","isAppender","onSelect","shouldFocusBlock","selectBlockOnInsert","useRegistry","getSelectedBlock","useSelect","getSelectedBlockClientId","getBlockRootClientId","selectedBlockClientId","_destinationRootClientId","_destinationIndex","undefined","replaceBlocks","insertBlocks","showInsertionPoint","hideInsertionPoint","setLastFocus","unlock","useDispatch","onInsertBlocks","useCallback","blocks","meta","shouldForceFocusBlock","_rootClientId","selectedBlock","isUnmodifiedDefaultBlock","blockLength","Array","isArray","message","sprintf","_n","speak","onToggleInsertionPoint","item","hasOwnProperty","_default","exports","default"],"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-insertion-point.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport { _n, sprintf } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { unlock } from '../../../lock-unlock';\n\nfunction getIndex( {\n\tdestinationRootClientId,\n\tdestinationIndex,\n\trootClientId,\n\tregistry,\n} ) {\n\tif ( rootClientId === destinationRootClientId ) {\n\t\treturn destinationIndex;\n\t}\n\tconst parents = [\n\t\t'',\n\t\t...registry\n\t\t\t.select( blockEditorStore )\n\t\t\t.getBlockParents( destinationRootClientId ),\n\t\tdestinationRootClientId,\n\t];\n\tconst parentIndex = parents.indexOf( rootClientId );\n\tif ( parentIndex !== -1 ) {\n\t\treturn (\n\t\t\tregistry\n\t\t\t\t.select( blockEditorStore )\n\t\t\t\t.getBlockIndex( parents[ parentIndex + 1 ] ) + 1\n\t\t);\n\t}\n\treturn registry.select( blockEditorStore ).getBlockOrder( rootClientId )\n\t\t.length;\n}\n\n/**\n * @typedef WPInserterConfig\n *\n * @property {string=} rootClientId If set, insertion will be into the\n * block with this ID.\n * @property {number=} insertionIndex If set, insertion will be into this\n * explicit position.\n * @property {string=} clientId If set, insertion will be after the\n * block with this ID.\n * @property {boolean=} isAppender Whether the inserter is an appender\n * or not.\n * @property {Function=} onSelect Called after insertion.\n */\n\n/**\n * Returns the insertion point state given the inserter config.\n *\n * @param {WPInserterConfig} config Inserter Config.\n * @return {Array} Insertion Point State (rootClientID, onInsertBlocks and onToggle).\n */\nfunction useInsertionPoint( {\n\trootClientId = '',\n\tinsertionIndex,\n\tclientId,\n\tisAppender,\n\tonSelect,\n\tshouldFocusBlock = true,\n\tselectBlockOnInsert = true,\n} ) {\n\tconst registry = useRegistry();\n\tconst { getSelectedBlock } = useSelect( blockEditorStore );\n\tconst { destinationRootClientId, destinationIndex } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\n\t\t\tlet _destinationRootClientId = rootClientId;\n\t\t\tlet _destinationIndex;\n\n\t\t\tif ( insertionIndex !== undefined ) {\n\t\t\t\t// Insert into a specific index.\n\t\t\t\t_destinationIndex = insertionIndex;\n\t\t\t} else if ( clientId ) {\n\t\t\t\t// Insert after a specific client ID.\n\t\t\t\t_destinationIndex = getBlockIndex( clientId );\n\t\t\t} else if ( ! isAppender && selectedBlockClientId ) {\n\t\t\t\t_destinationRootClientId = getBlockRootClientId(\n\t\t\t\t\tselectedBlockClientId\n\t\t\t\t);\n\t\t\t\t_destinationIndex = getBlockIndex( selectedBlockClientId ) + 1;\n\t\t\t} else {\n\t\t\t\t// Insert at the end of the list.\n\t\t\t\t_destinationIndex = getBlockOrder(\n\t\t\t\t\t_destinationRootClientId\n\t\t\t\t).length;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdestinationRootClientId: _destinationRootClientId,\n\t\t\t\tdestinationIndex: _destinationIndex,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId, insertionIndex, clientId, isAppender ]\n\t);\n\n\tconst {\n\t\treplaceBlocks,\n\t\tinsertBlocks,\n\t\tshowInsertionPoint,\n\t\thideInsertionPoint,\n\t\tsetLastFocus,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\tconst onInsertBlocks = useCallback(\n\t\t( blocks, meta, shouldForceFocusBlock = false, _rootClientId ) => {\n\t\t\t// When we are trying to move focus or select a new block on insert, we also\n\t\t\t// need to clear the last focus to avoid the focus being set to the wrong block\n\t\t\t// when tabbing back into the canvas if the block was added from outside the\n\t\t\t// editor canvas.\n\t\t\tif (\n\t\t\t\tshouldForceFocusBlock ||\n\t\t\t\tshouldFocusBlock ||\n\t\t\t\tselectBlockOnInsert\n\t\t\t) {\n\t\t\t\tsetLastFocus( null );\n\t\t\t}\n\n\t\t\tconst selectedBlock = getSelectedBlock();\n\n\t\t\tif (\n\t\t\t\t! isAppender &&\n\t\t\t\tselectedBlock &&\n\t\t\t\tisUnmodifiedDefaultBlock( selectedBlock )\n\t\t\t) {\n\t\t\t\treplaceBlocks(\n\t\t\t\t\tselectedBlock.clientId,\n\t\t\t\t\tblocks,\n\t\t\t\t\tnull,\n\t\t\t\t\tshouldFocusBlock || shouldForceFocusBlock ? 0 : null,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tinsertBlocks(\n\t\t\t\t\tblocks,\n\t\t\t\t\tisAppender || _rootClientId === undefined\n\t\t\t\t\t\t? destinationIndex\n\t\t\t\t\t\t: getIndex( {\n\t\t\t\t\t\t\t\tdestinationRootClientId,\n\t\t\t\t\t\t\t\tdestinationIndex,\n\t\t\t\t\t\t\t\trootClientId: _rootClientId,\n\t\t\t\t\t\t\t\tregistry,\n\t\t\t\t\t\t } ),\n\t\t\t\t\tisAppender || _rootClientId === undefined\n\t\t\t\t\t\t? destinationRootClientId\n\t\t\t\t\t\t: _rootClientId,\n\t\t\t\t\tselectBlockOnInsert,\n\t\t\t\t\tshouldFocusBlock || shouldForceFocusBlock ? 0 : null,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst blockLength = Array.isArray( blocks ) ? blocks.length : 1;\n\t\t\tconst message = sprintf(\n\t\t\t\t// translators: %d: the name of the block that has been added\n\t\t\t\t_n( '%d block added.', '%d blocks added.', blockLength ),\n\t\t\t\tblockLength\n\t\t\t);\n\t\t\tspeak( message );\n\n\t\t\tif ( onSelect ) {\n\t\t\t\tonSelect( blocks );\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tisAppender,\n\t\t\tgetSelectedBlock,\n\t\t\treplaceBlocks,\n\t\t\tinsertBlocks,\n\t\t\tdestinationRootClientId,\n\t\t\tdestinationIndex,\n\t\t\tonSelect,\n\t\t\tshouldFocusBlock,\n\t\t\tselectBlockOnInsert,\n\t\t]\n\t);\n\n\tconst onToggleInsertionPoint = useCallback(\n\t\t( item ) => {\n\t\t\tif ( item?.hasOwnProperty( 'rootClientId' ) ) {\n\t\t\t\tshowInsertionPoint(\n\t\t\t\t\titem.rootClientId,\n\t\t\t\t\tgetIndex( {\n\t\t\t\t\t\tdestinationRootClientId,\n\t\t\t\t\t\tdestinationIndex,\n\t\t\t\t\t\trootClientId: item.rootClientId,\n\t\t\t\t\t\tregistry,\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\thideInsertionPoint();\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tshowInsertionPoint,\n\t\t\thideInsertionPoint,\n\t\t\tdestinationRootClientId,\n\t\t\tdestinationIndex,\n\t\t]\n\t);\n\n\treturn [ destinationRootClientId, onInsertBlocks, onToggleInsertionPoint ];\n}\n\nexport default useInsertionPoint;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_data","require","_blocks","_i18n","_a11y","_element","_store","_lockUnlock","getIndex","destinationRootClientId","destinationIndex","rootClientId","registry","parents","select","blockEditorStore","getBlockParents","parentIndex","indexOf","getBlockIndex","getBlockOrder","length","useInsertionPoint","insertionIndex","clientId","isAppender","onSelect","shouldFocusBlock","selectBlockOnInsert","useRegistry","getSelectedBlock","useSelect","getSelectedBlockClientId","getBlockRootClientId","getSectionRootClientId","__unstableGetEditorMode","unlock","selectedBlockClientId","_destinationRootClientId","_destinationIndex","undefined","sectionRootClientId","replaceBlocks","insertBlocks","showInsertionPoint","hideInsertionPoint","setLastFocus","useDispatch","onInsertBlocks","useCallback","blocks","meta","shouldForceFocusBlock","_rootClientId","selectedBlock","isUnmodifiedDefaultBlock","blockLength","Array","isArray","message","sprintf","_n","speak","onToggleInsertionPoint","item","hasOwnProperty","_default","exports","default"],"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-insertion-point.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport { _n, sprintf } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { unlock } from '../../../lock-unlock';\n\nfunction getIndex( {\n\tdestinationRootClientId,\n\tdestinationIndex,\n\trootClientId,\n\tregistry,\n} ) {\n\tif ( rootClientId === destinationRootClientId ) {\n\t\treturn destinationIndex;\n\t}\n\tconst parents = [\n\t\t'',\n\t\t...registry\n\t\t\t.select( blockEditorStore )\n\t\t\t.getBlockParents( destinationRootClientId ),\n\t\tdestinationRootClientId,\n\t];\n\tconst parentIndex = parents.indexOf( rootClientId );\n\tif ( parentIndex !== -1 ) {\n\t\treturn (\n\t\t\tregistry\n\t\t\t\t.select( blockEditorStore )\n\t\t\t\t.getBlockIndex( parents[ parentIndex + 1 ] ) + 1\n\t\t);\n\t}\n\treturn registry.select( blockEditorStore ).getBlockOrder( rootClientId )\n\t\t.length;\n}\n\n/**\n * @typedef WPInserterConfig\n *\n * @property {string=} rootClientId If set, insertion will be into the\n * block with this ID.\n * @property {number=} insertionIndex If set, insertion will be into this\n * explicit position.\n * @property {string=} clientId If set, insertion will be after the\n * block with this ID.\n * @property {boolean=} isAppender Whether the inserter is an appender\n * or not.\n * @property {Function=} onSelect Called after insertion.\n */\n\n/**\n * Returns the insertion point state given the inserter config.\n *\n * @param {WPInserterConfig} config Inserter Config.\n * @return {Array} Insertion Point State (rootClientID, onInsertBlocks and onToggle).\n */\nfunction useInsertionPoint( {\n\trootClientId = '',\n\tinsertionIndex,\n\tclientId,\n\tisAppender,\n\tonSelect,\n\tshouldFocusBlock = true,\n\tselectBlockOnInsert = true,\n} ) {\n\tconst registry = useRegistry();\n\tconst { getSelectedBlock } = useSelect( blockEditorStore );\n\tconst { destinationRootClientId, destinationIndex } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetSectionRootClientId,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\n\t\t\tlet _destinationRootClientId = rootClientId;\n\t\t\tlet _destinationIndex;\n\n\t\t\tif ( insertionIndex !== undefined ) {\n\t\t\t\t// Insert into a specific index.\n\t\t\t\t_destinationIndex = insertionIndex;\n\t\t\t} else if ( clientId ) {\n\t\t\t\t// Insert after a specific client ID.\n\t\t\t\t_destinationIndex = getBlockIndex( clientId );\n\t\t\t} else if ( ! isAppender && selectedBlockClientId ) {\n\t\t\t\tconst sectionRootClientId = getSectionRootClientId();\n\n\t\t\t\t// Avoids empty inserter when the selected block is acting\n\t\t\t\t// as the \"root\".\n\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/66214.\n\t\t\t\tif (\n\t\t\t\t\t__unstableGetEditorMode() === 'zoom-out' &&\n\t\t\t\t\tsectionRootClientId === selectedBlockClientId\n\t\t\t\t) {\n\t\t\t\t\t_destinationRootClientId = sectionRootClientId;\n\t\t\t\t\t_destinationIndex = getBlockOrder(\n\t\t\t\t\t\t_destinationRootClientId\n\t\t\t\t\t).length;\n\t\t\t\t} else {\n\t\t\t\t\t_destinationRootClientId = getBlockRootClientId(\n\t\t\t\t\t\tselectedBlockClientId\n\t\t\t\t\t);\n\t\t\t\t\t_destinationIndex =\n\t\t\t\t\t\tgetBlockIndex( selectedBlockClientId ) + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Insert at the end of the list.\n\t\t\t\t_destinationIndex = getBlockOrder(\n\t\t\t\t\t_destinationRootClientId\n\t\t\t\t).length;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdestinationRootClientId: _destinationRootClientId,\n\t\t\t\tdestinationIndex: _destinationIndex,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId, insertionIndex, clientId, isAppender ]\n\t);\n\n\tconst {\n\t\treplaceBlocks,\n\t\tinsertBlocks,\n\t\tshowInsertionPoint,\n\t\thideInsertionPoint,\n\t\tsetLastFocus,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\tconst onInsertBlocks = useCallback(\n\t\t( blocks, meta, shouldForceFocusBlock = false, _rootClientId ) => {\n\t\t\t// When we are trying to move focus or select a new block on insert, we also\n\t\t\t// need to clear the last focus to avoid the focus being set to the wrong block\n\t\t\t// when tabbing back into the canvas if the block was added from outside the\n\t\t\t// editor canvas.\n\t\t\tif (\n\t\t\t\tshouldForceFocusBlock ||\n\t\t\t\tshouldFocusBlock ||\n\t\t\t\tselectBlockOnInsert\n\t\t\t) {\n\t\t\t\tsetLastFocus( null );\n\t\t\t}\n\n\t\t\tconst selectedBlock = getSelectedBlock();\n\n\t\t\tif (\n\t\t\t\t! isAppender &&\n\t\t\t\tselectedBlock &&\n\t\t\t\tisUnmodifiedDefaultBlock( selectedBlock )\n\t\t\t) {\n\t\t\t\treplaceBlocks(\n\t\t\t\t\tselectedBlock.clientId,\n\t\t\t\t\tblocks,\n\t\t\t\t\tnull,\n\t\t\t\t\tshouldFocusBlock || shouldForceFocusBlock ? 0 : null,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tinsertBlocks(\n\t\t\t\t\tblocks,\n\t\t\t\t\tisAppender || _rootClientId === undefined\n\t\t\t\t\t\t? destinationIndex\n\t\t\t\t\t\t: getIndex( {\n\t\t\t\t\t\t\t\tdestinationRootClientId,\n\t\t\t\t\t\t\t\tdestinationIndex,\n\t\t\t\t\t\t\t\trootClientId: _rootClientId,\n\t\t\t\t\t\t\t\tregistry,\n\t\t\t\t\t\t } ),\n\t\t\t\t\tisAppender || _rootClientId === undefined\n\t\t\t\t\t\t? destinationRootClientId\n\t\t\t\t\t\t: _rootClientId,\n\t\t\t\t\tselectBlockOnInsert,\n\t\t\t\t\tshouldFocusBlock || shouldForceFocusBlock ? 0 : null,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst blockLength = Array.isArray( blocks ) ? blocks.length : 1;\n\t\t\tconst message = sprintf(\n\t\t\t\t// translators: %d: the name of the block that has been added\n\t\t\t\t_n( '%d block added.', '%d blocks added.', blockLength ),\n\t\t\t\tblockLength\n\t\t\t);\n\t\t\tspeak( message );\n\n\t\t\tif ( onSelect ) {\n\t\t\t\tonSelect( blocks );\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tisAppender,\n\t\t\tgetSelectedBlock,\n\t\t\treplaceBlocks,\n\t\t\tinsertBlocks,\n\t\t\tdestinationRootClientId,\n\t\t\tdestinationIndex,\n\t\t\tonSelect,\n\t\t\tshouldFocusBlock,\n\t\t\tselectBlockOnInsert,\n\t\t]\n\t);\n\n\tconst onToggleInsertionPoint = useCallback(\n\t\t( item ) => {\n\t\t\tif ( item?.hasOwnProperty( 'rootClientId' ) ) {\n\t\t\t\tshowInsertionPoint(\n\t\t\t\t\titem.rootClientId,\n\t\t\t\t\tgetIndex( {\n\t\t\t\t\t\tdestinationRootClientId,\n\t\t\t\t\t\tdestinationIndex,\n\t\t\t\t\t\trootClientId: item.rootClientId,\n\t\t\t\t\t\tregistry,\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\thideInsertionPoint();\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tshowInsertionPoint,\n\t\t\thideInsertionPoint,\n\t\t\tdestinationRootClientId,\n\t\t\tdestinationIndex,\n\t\t]\n\t);\n\n\treturn [ destinationRootClientId, onInsertBlocks, onToggleInsertionPoint ];\n}\n\nexport default useInsertionPoint;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -31,6 +31,7 @@ function MediaTab({
|
|
|
31
31
|
rootClientId,
|
|
32
32
|
selectedCategory,
|
|
33
33
|
onSelectCategory,
|
|
34
|
+
setHasCategories,
|
|
34
35
|
onInsert,
|
|
35
36
|
children
|
|
36
37
|
}) {
|
|
@@ -48,6 +49,9 @@ function MediaTab({
|
|
|
48
49
|
...mediaCategory,
|
|
49
50
|
label: mediaCategory.labels.name
|
|
50
51
|
})), [mediaCategories]);
|
|
52
|
+
(0, _element.useEffect)(() => {
|
|
53
|
+
setHasCategories(!!categories.length);
|
|
54
|
+
}, [categories, setHasCategories]);
|
|
51
55
|
if (!categories.length) {
|
|
52
56
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_noResults.default, {});
|
|
53
57
|
}
|