Version Description
Download this release
Release Info
Developer | gutenbergplugin |
Plugin | Gutenberg |
Version | 14.0.1 |
Comparing to | |
See all releases |
Code changes from version 14.0.0 to 14.0.1
- build/edit-post/index.js +4 -3
- build/edit-post/index.min.asset.php +1 -1
- build/edit-post/index.min.js +1 -1
- build/edit-post/index.min.js.map +1 -1
- changelog.txt +375 -350
- gutenberg.php +3 -3
- readme.txt +1 -1
build/edit-post/index.js
CHANGED
@@ -3868,13 +3868,14 @@ function VisualEditor(_ref2) {
|
|
3868 |
return { ...defaultLayout,
|
3869 |
type: 'constrained'
|
3870 |
};
|
3871 |
-
} // Set
|
3872 |
|
3873 |
|
3874 |
return {
|
3875 |
-
type: '
|
3876 |
};
|
3877 |
}, [isTemplateMode, themeSupportsLayout, defaultLayout]);
|
|
|
3878 |
const titleRef = (0,external_wp_element_namespaceObject.useRef)();
|
3879 |
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
3880 |
var _titleRef$current;
|
@@ -3928,7 +3929,7 @@ function VisualEditor(_ref2) {
|
|
3928 |
blockName: wrapperBlockName,
|
3929 |
uniqueId: wrapperUniqueId
|
3930 |
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockList, {
|
3931 |
-
className: isTemplateMode ? 'wp-site-blocks' :
|
3932 |
,
|
3933 |
__experimentalLayout: layout
|
3934 |
}))))), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableBlockSettingsMenuFirstItem, null, _ref3 => {
|
3868 |
return { ...defaultLayout,
|
3869 |
type: 'constrained'
|
3870 |
};
|
3871 |
+
} // Set default layout for classic themes so all alignments are supported.
|
3872 |
|
3873 |
|
3874 |
return {
|
3875 |
+
type: 'default'
|
3876 |
};
|
3877 |
}, [isTemplateMode, themeSupportsLayout, defaultLayout]);
|
3878 |
+
const blockListLayoutClass = themeSupportsLayout ? 'is-layout-constrained' : 'is-layout-flow';
|
3879 |
const titleRef = (0,external_wp_element_namespaceObject.useRef)();
|
3880 |
(0,external_wp_element_namespaceObject.useEffect)(() => {
|
3881 |
var _titleRef$current;
|
3929 |
blockName: wrapperBlockName,
|
3930 |
uniqueId: wrapperUniqueId
|
3931 |
}, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockList, {
|
3932 |
+
className: isTemplateMode ? 'wp-site-blocks' : blockListLayoutClass // Ensure root level blocks receive default/flow blockGap styling rules.
|
3933 |
,
|
3934 |
__experimentalLayout: layout
|
3935 |
}))))), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__unstableBlockSettingsMenuFirstItem, null, _ref3 => {
|
build/edit-post/index.min.asset.php
CHANGED
@@ -1 +1 @@
|
|
1 |
-
<?php return array('dependencies' => array('lodash', 'wp-a11y', 'wp-api-fetch', 'wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-deprecated', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-url', 'wp-viewport', 'wp-warning'), 'version' => '
|
1 |
+
<?php return array('dependencies' => array('lodash', 'wp-a11y', 'wp-api-fetch', 'wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-deprecated', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-url', 'wp-viewport', 'wp-warning'), 'version' => '170ba13d7ec7dd21466d');
|
build/edit-post/index.min.js
CHANGED
@@ -16,7 +16,7 @@ footer:(0,_.__)("Footer"),...u};return(0,s.createElement)("div",p({},E,{ref:(0,b
|
|
16 |
/* translators: button label text should, if possible, be under 16 characters. */
|
17 |
l=(0,_.__)("Options"),popoverProps:o,toggleProps:a,children:r}=e;return(0,s.createElement)(t,{className:L()("interface-more-menu-dropdown",n),icon:Ee,label:l,popoverProps:{position:"bottom left",...o,className:L()("interface-more-menu-dropdown__content",null==o?void 0:o.className)},toggleProps:{tooltipPosition:"bottom",...a}},(e=>r(e)))}function be(e){let{closeModal:t,children:n}=e;return(0,s.createElement)(h.Modal,{className:"interface-preferences-modal",title:(0,_.__)("Preferences"),closeLabel:(0,_.__)("Close"),onRequestClose:t},n)}const fe=function(e){let{icon:t,size:n=24,...l}=e;return(0,s.cloneElement)(t,{width:n,height:n,...l})},ve=(0,s.createElement)(y.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,s.createElement)(y.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})),ye=(0,s.createElement)(y.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,s.createElement)(y.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})),we="preferences-menu";function Se(e){let{sections:t}=e;const n=(0,b.useViewportMatch)("medium"),[l,o]=(0,s.useState)(we),{tabs:a,sectionsContentMap:r}=(0,s.useMemo)((()=>{let e={tabs:[],sectionsContentMap:{}};return t.length&&(e=t.reduce(((e,t)=>{let{name:n,tabLabel:l,content:o}=t;return e.tabs.push({name:n,title:l}),e.sectionsContentMap[n]=o,e}),{tabs:[],sectionsContentMap:{}})),e}),[t]),i=(0,s.useCallback)((e=>r[e.name]||null),[r]);let c;return c=n?(0,s.createElement)(h.TabPanel,{className:"interface-preferences__tabs",tabs:a,initialTabName:l!==we?l:void 0,onSelect:o,orientation:"vertical"},i):(0,s.createElement)(h.__experimentalNavigatorProvider,{initialPath:"/",className:"interface-preferences__provider"},(0,s.createElement)(h.__experimentalNavigatorScreen,{path:"/"},(0,s.createElement)(h.Card,{isBorderless:!0,size:"small"},(0,s.createElement)(h.CardBody,null,(0,s.createElement)(h.__experimentalItemGroup,null,a.map((e=>(0,s.createElement)(h.__experimentalNavigatorButton,{key:e.name,path:e.name,as:h.__experimentalItem,isAction:!0},(0,s.createElement)(h.__experimentalHStack,{justify:"space-between"},(0,s.createElement)(h.FlexItem,null,(0,s.createElement)(h.__experimentalTruncate,null,e.title)),(0,s.createElement)(h.FlexItem,null,(0,s.createElement)(fe,{icon:(0,_.isRTL)()?ve:ye})))))))))),t.length&&t.map((e=>(0,s.createElement)(h.__experimentalNavigatorScreen,{key:`${e.name}-menu`,path:e.name},(0,s.createElement)(h.Card,{isBorderless:!0,size:"large"},(0,s.createElement)(h.CardHeader,{isBorderless:!1,justify:"left",size:"small",gap:"6"},(0,s.createElement)(h.__experimentalNavigatorBackButton,{icon:(0,_.isRTL)()?ye:ve,"aria-label":(0,_.__)("Navigate to the previous view")}),(0,s.createElement)(h.__experimentalText,{size:"16"},e.tabLabel)),(0,s.createElement)(h.CardBody,null,e.content)))))),c}const ke=e=>{let{description:t,title:n,children:l}=e;return(0,s.createElement)("fieldset",{className:"interface-preferences-modal__section"},(0,s.createElement)("legend",null,(0,s.createElement)("h2",{className:"interface-preferences-modal__section-title"},n),t&&(0,s.createElement)("p",{className:"interface-preferences-modal__section-description"},t)),l)},Pe=function(e){let{help:t,label:n,isChecked:l,onChange:o,children:a}=e;return(0,s.createElement)("div",{className:"interface-preferences-modal__option"},(0,s.createElement)(h.ToggleControl,{help:t,label:n,checked:l,onChange:o}),a)},Te=window.wp.a11y,Ce=window.wp.coreData,xe=e=>t=>{let{registry:n}=t;return n.dispatch(ee).enableComplementaryArea(Dt.name,e)},Be=()=>e=>{let{registry:t}=e;return t.dispatch(ee).disableComplementaryArea(Dt.name)};function Ie(e){return{type:"OPEN_MODAL",name:e}}function Me(){return{type:"CLOSE_MODAL"}}function Ne(){return{type:"OPEN_PUBLISH_SIDEBAR"}}function Ae(){return{type:"CLOSE_PUBLISH_SIDEBAR"}}function Le(){return{type:"TOGGLE_PUBLISH_SIDEBAR"}}const Oe=e=>t=>{var n;let{registry:l}=t;const o=null!==(n=l.select(u.store).get("core/edit-post","inactivePanels"))&&void 0!==n?n:[];let a;a=null!=o&&o.includes(e)?o.filter((t=>t!==e)):[...o,e],l.dispatch(u.store).set("core/edit-post","inactivePanels",a)},Re=e=>t=>{var n;let{registry:l}=t;const o=null!==(n=l.select(u.store).get("core/edit-post","openPanels"))&&void 0!==n?n:[];let a;a=null!=o&&o.includes(e)?o.filter((t=>t!==e)):[...o,e],l.dispatch(u.store).set("core/edit-post","openPanels",a)};function De(e){return{type:"REMOVE_PANEL",panelName:e}}const Fe=e=>t=>{let{registry:n}=t;return n.dispatch(u.store).toggle("core/edit-post",e)},Ve=e=>t=>{let{registry:n}=t;n.dispatch(u.store).set("core/edit-post","editorMode",e),"visual"!==e&&n.dispatch(E.store).clearSelectedBlock();const l="visual"===e?(0,_.__)("Visual editor selected"):(0,_.__)("Code editor selected");(0,Te.speak)(l,"assertive")},Ue=e=>t=>{let{registry:n}=t;const l=n.select(ee).isItemPinned("core/edit-post",e);n.dispatch(ee)[l?"unpinItem":"pinItem"]("core/edit-post",e)},Ge=(e,t)=>n=>{var l;let{registry:o}=n;if(!e)return;const a=null!==(l=o.select(u.store).get("core/edit-post","preferredStyleVariations"))&&void 0!==l?l:{};if(t)o.dispatch(u.store).set("core/edit-post","preferredStyleVariations",{...a,[e]:t});else{const t={...a};delete t[e],o.dispatch(u.store).set("core/edit-post","preferredStyleVariations",t)}},He=e=>t=>{var n;let{registry:l}=t;const o=null!==(n=l.select(u.store).get("core/edit-post","hiddenBlockTypes"))&&void 0!==n?n:[],a=(0,g.without)(o,...(0,g.castArray)(e));l.dispatch(u.store).set("core/edit-post","hiddenBlockTypes",a)},ze=e=>t=>{var n;let{registry:l}=t;const o=null!==(n=l.select(u.store).get("core/edit-post","hiddenBlockTypes"))&&void 0!==n?n:[],a=new Set([...o,...(0,g.castArray)(e)]);l.dispatch(u.store).set("core/edit-post","hiddenBlockTypes",[...a])},We=e=>t=>{let{dispatch:n}=t;return n({type:"SET_META_BOXES_PER_LOCATIONS",metaBoxesPerLocation:e})},$e=()=>async e=>{let{registry:t,select:n,dispatch:l}=e;l({type:"REQUEST_META_BOX_UPDATES"}),window.tinyMCE&&window.tinyMCE.triggerSave();const o=t.select(T.store).getCurrentPost(),a=[!!o.comment_status&&["comment_status",o.comment_status],!!o.ping_status&&["ping_status",o.ping_status],!!o.sticky&&["sticky",o.sticky],!!o.author&&["post_author",o.author]].filter(Boolean),s=[new window.FormData(document.querySelector(".metabox-base-form")),...n.getActiveMetaBoxLocations().map((e=>new window.FormData((e=>document.querySelector(`.edit-post-meta-boxes-area.is-${e} .metabox-location-${e}`)||document.querySelector("#metaboxes .metabox-location-"+e))(e))))],r=(0,g.reduce)(s,((e,t)=>{for(const[n,l]of t)e.append(n,l);return e}),new window.FormData);a.forEach((e=>{let[t,n]=e;return r.append(t,n)}));try{await N()({url:window._wpMetaBoxUrl,method:"POST",body:r,parse:!1}),l.metaBoxUpdatesSuccess()}catch{l.metaBoxUpdatesFailure()}};function qe(){return{type:"META_BOX_UPDATES_SUCCESS"}}function je(){return{type:"META_BOX_UPDATES_FAILURE"}}function Ke(e){return{type:"SET_PREVIEW_DEVICE_TYPE",deviceType:e}}function Ye(e){return{type:"SET_IS_INSERTER_OPENED",value:e}}function Xe(e){return{type:"SET_IS_LIST_VIEW_OPENED",isOpen:e}}function Qe(e){return{type:"SET_IS_EDITING_TEMPLATE",value:e}}const Ze=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t=>{let{registry:n,select:l,dispatch:o}=t;if(o(Qe(!0)),!l.isFeatureActive("welcomeGuideTemplate")){const t=e?(0,_.__)("Custom template created. You're in template mode now."):(0,_.__)("Editing template. Changes made here affect all posts and pages that use the template.");n.dispatch(P.store).createSuccessNotice(t,{type:"snackbar"})}}},Je=e=>async t=>{let{registry:n}=t;const l=await n.dispatch(Ce.store).saveEntityRecord("postType","wp_template",e),o=n.select(T.store).getCurrentPost();n.dispatch(Ce.store).editEntityRecord("postType",o.type,o.id,{template:l.slug})};let et=!1;const tt=()=>e=>{let{registry:t,select:n,dispatch:l}=e;if(!t.select(T.store).__unstableIsEditorReady())return;if(et)return;const o=t.select(T.store).getCurrentPostType();window.postboxes.page!==o&&window.postboxes.add_postbox_toggles(o),et=!0;let a=t.select(T.store).isSavingPost(),s=t.select(T.store).isAutosavingPost();const r=n.hasMetaBoxes();t.subscribe((async()=>{const e=t.select(T.store).isSavingPost(),n=t.select(T.store).isAutosavingPost(),o=r&&a&&!e&&!s;a=e,s=n,o&&await l.requestMetaBoxUpdates()})),l({type:"META_BOXES_INITIALIZED"})};var nt={};function lt(e){return[e]}function ot(e,t,n){var l;if(e.length!==t.length)return!1;for(l=n;l<e.length;l++)if(e[l]!==t[l])return!1;return!0}function at(e,t){var n,l=t||lt;function o(e){var t,l,o,a,s,r=n,i=!0;for(t=0;t<e.length;t++){if(!(s=l=e[t])||"object"!=typeof s){i=!1;break}r.has(l)?r=r.get(l):(o=new WeakMap,r.set(l,o),r=o)}return r.has(nt)||((a=function(){var e={clear:function(){e.head=null}};return e}()).isUniqueByDependants=i,r.set(nt,a)),r.get(nt)}function a(){n=new WeakMap}function s(){var t,n,a,s,r,i=arguments.length;for(s=new Array(i),a=0;a<i;a++)s[a]=arguments[a];for((t=o(r=l.apply(null,s))).isUniqueByDependants||(t.lastDependants&&!ot(r,t.lastDependants,0)&&t.clear(),t.lastDependants=r),n=t.head;n;){if(ot(n.args,s,1))return n!==t.head&&(n.prev.next=n.next,n.next&&(n.next.prev=n.prev),n.next=t.head,n.prev=null,t.head.prev=n,t.head=n),n.val;n=n.next}return n={val:e.apply(null,s)},s[0]=null,n.args=s,t.head&&(t.head.prev=n,n.next=t.head),t.head=n,n.val}return s.getDependants=l,s.clear=a,a(),s}const st=[],rt={},it=(0,c.createRegistrySelector)((e=>()=>{var t;return null!==(t=e(u.store).get("core/edit-post","editorMode"))&&void 0!==t?t:"visual"})),ct=(0,c.createRegistrySelector)((e=>()=>{const t=e(ee).getActiveComplementaryArea("core/edit-post");return["edit-post/document","edit-post/block"].includes(t)})),dt=(0,c.createRegistrySelector)((e=>()=>{const t=e(ee).getActiveComplementaryArea("core/edit-post");return!!t&&!["edit-post/document","edit-post/block"].includes(t)})),ut=(0,c.createRegistrySelector)((e=>()=>e(ee).getActiveComplementaryArea("core/edit-post"))),mt=(0,c.createRegistrySelector)((e=>()=>(G()("select( 'core/edit-post' ).getPreferences",{since:"6.0",alternative:"select( 'core/preferences' ).get"}),{...["hiddenBlockTypes","editorMode","preferredStyleVariations"].reduce(((t,n)=>({...t,[n]:e(u.store).get("core/edit-post",n)})),{}),panels:function(e,t){var n;const l=null==e?void 0:e.reduce(((e,t)=>({...e,[t]:{enabled:!1}})),{}),o=null==t?void 0:t.reduce(((e,t)=>{const n=null==e?void 0:e[t];return{...e,[t]:{...n,opened:!0}}}),null!=l?l:{});return null!==(n=null!=o?o:l)&&void 0!==n?n:rt}(e(u.store).get("core/edit-post","inactivePanels"),e(u.store).get("core/edit-post","openPanels"))})));function pt(e,t,n){G()("select( 'core/edit-post' ).getPreference",{since:"6.0",alternative:"select( 'core/preferences' ).get"});const l=mt(e)[t];return void 0===l?n:l}const gt=(0,c.createRegistrySelector)((e=>()=>{var t;return null!==(t=e(u.store).get("core/edit-post","hiddenBlockTypes"))&&void 0!==t?t:st}));function ht(e){return e.publishSidebarActive}function Et(e,t){return e.removedPanels.includes(t)}const _t=(0,c.createRegistrySelector)((e=>(t,n)=>{const l=e(u.store).get("core/edit-post","inactivePanels");return!(Et(t,n)||null!=l&&l.includes(n))})),bt=(0,c.createRegistrySelector)((e=>(t,n)=>{const l=e(u.store).get("core/edit-post","openPanels");return!(null==l||!l.includes(n))}));function ft(e,t){return e.activeModal===t}const vt=(0,c.createRegistrySelector)((e=>(t,n)=>!!e(u.store).get("core/edit-post",n))),yt=(0,c.createRegistrySelector)((e=>(t,n)=>e(ee).isItemPinned("core/edit-post",n))),wt=at((e=>Object.keys(e.metaBoxes.locations).filter((t=>kt(e,t)))),(e=>[e.metaBoxes.locations]));function St(e,t){var n;return kt(e,t)&&(null===(n=Pt(e,t))||void 0===n?void 0:n.some((t=>{let{id:n}=t;return _t(e,`meta-box-${n}`)})))}function kt(e,t){const n=Pt(e,t);return!!n&&0!==n.length}function Pt(e,t){return e.metaBoxes.locations[t]}const Tt=at((e=>Object.values(e.metaBoxes.locations).flat()),(e=>[e.metaBoxes.locations]));function Ct(e){return wt(e).length>0}function xt(e){return e.metaBoxes.isSaving}function Bt(e){return e.deviceType}function It(e){return!!e.blockInserterPanel}function Mt(e){const{rootClientId:t,insertionIndex:n,filterValue:l}=e.blockInserterPanel;return{rootClientId:t,insertionIndex:n,filterValue:l}}function Nt(e){return e.listViewPanel}function At(e){return e.isEditingTemplate}function Lt(e){return e.metaBoxes.initialized}const Ot=(0,c.createRegistrySelector)((e=>()=>{const t=e(T.store).getEditedPostAttribute("template");if(t){var n;const l=null===(n=e(Ce.store).getEntityRecords("postType","wp_template",{per_page:-1}))||void 0===n?void 0:n.find((e=>e.slug===t));return l?e(Ce.store).getEditedEntityRecord("postType","wp_template",l.id):l}const l=e(T.store).getCurrentPost();return l.link?e(Ce.store).__experimentalGetTemplateForLink(l.link):null})),Rt="core/edit-post",Dt=(0,c.createReduxStore)(Rt,{reducer:I,actions:o,selectors:a});(0,c.register)(Dt);const Ft=(0,c.withDispatch)((e=>{const{openModal:t}=e(Dt);return{openModal:t}}))((function(e){let{openModal:t}=e;return(0,s.createElement)(h.MenuItem,{onClick:()=>{t("edit-post/keyboard-shortcut-help")},shortcut:x.displayShortcut.access("h")},(0,_.__)("Keyboard shortcuts"))})),{Fill:Vt,Slot:Ut}=(0,h.createSlotFill)("ToolsMoreMenuGroup");Vt.Slot=e=>{let{fillProps:t}=e;return(0,s.createElement)(Ut,{fillProps:t},(e=>!(0,g.isEmpty)(e)&&(0,s.createElement)(h.MenuGroup,{label:(0,_.__)("Tools")},e)))};const Gt=Vt;function Ht(){const e=(0,c.useSelect)((e=>e(Dt).isEditingTemplate()),[]);return(0,s.createElement)(u.PreferenceToggleMenuItem,{scope:"core/edit-post",name:e?"welcomeGuideTemplate":"welcomeGuide",label:(0,_.__)("Welcome Guide")})}(0,S.registerPlugin)("edit-post",{render:()=>(0,s.createElement)(s.Fragment,null,(0,s.createElement)(Gt,null,(e=>{let{onClose:t}=e;return(0,s.createElement)(s.Fragment,null,(0,s.createElement)(h.MenuItem,{role:"menuitem",href:(0,k.addQueryArgs)("edit.php",{post_type:"wp_block"})},(0,_.__)("Manage Reusable blocks")),(0,s.createElement)(Ft,{onSelect:t}),(0,s.createElement)(Ht,null),(0,s.createElement)(C,null),(0,s.createElement)(h.MenuItem,{role:"menuitem",icon:w,href:(0,_.__)("https://wordpress.org/support/article/wordpress-editor/"),target:"_blank",rel:"noopener noreferrer"},(0,_.__)("Help"),(0,s.createElement)(h.VisuallyHidden,{as:"span"},
|
18 |
/* translators: accessibility text */
|
19 |
-
(0,_.__)("(opens in a new tab)"))))})))});const zt=window.wp.keyboardShortcuts;function Wt(){const e=(0,c.useSelect)((e=>e(T.store).getEditorSettings().richEditingEnabled),[]),{switchEditorMode:t}=(0,c.useDispatch)(Dt);return(0,s.createElement)("div",{className:"edit-post-text-editor"},(0,s.createElement)(T.TextEditorGlobalKeyboardShortcuts,null),e&&(0,s.createElement)("div",{className:"edit-post-text-editor__toolbar"},(0,s.createElement)("h2",null,(0,_.__)("Editing code")),(0,s.createElement)(h.Button,{variant:"tertiary",onClick:()=>t("visual"),shortcut:x.displayShortcut.secondary("m")},(0,_.__)("Exit code editor"))),(0,s.createElement)("div",{className:"edit-post-text-editor__body"},(0,s.createElement)(T.PostTitle,null),(0,s.createElement)(T.PostTextEditor,null)))}const $t=(0,s.createElement)(y.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,s.createElement)(y.Path,{d:"M20 10.8H6.7l4.1-4.5-1.1-1.1-5.8 6.3 5.8 5.8 1.1-1.1-4-3.9H20z"})),qt=()=>{},jt=function(e){let{onClick:t=qt,small:n=!1}=e;const{shortcut:l,areAdvancedSettingsOpened:o}=(0,c.useSelect)((e=>({shortcut:e(zt.store).getShortcutRepresentation("core/edit-post/toggle-sidebar"),areAdvancedSettingsOpened:"edit-post/block"===e(Dt).getActiveGeneralSidebarName()})),[]),{openGeneralSidebar:a,closeGeneralSidebar:r}=(0,c.useDispatch)(Dt),i=o?(0,_.__)("Hide more settings"):(0,_.__)("Show more settings");return(0,s.createElement)(h.MenuItem,{onClick:()=>{o?(r(),(0,Te.speak)((0,_.__)("Block settings closed"))):(a("edit-post/block"),(0,Te.speak)((0,_.__)("Additional settings are now available in the Editor block settings sidebar"))),t()},shortcut:l},!n&&i)};function Kt(e){let{children:t,contentRef:n,shouldIframe:l,styles:o,assets:a,style:r}=e;const i=(0,E.__unstableUseMouseMoveTypingReset)();return l?(0,s.createElement)(E.__unstableIframe,{head:(0,s.createElement)(E.__unstableEditorStyles,{styles:o}),assets:a,ref:i,contentRef:n,style:{width:"100%",height:"100%",display:"block"},name:"editor-canvas"},t):(0,s.createElement)(s.Fragment,null,(0,s.createElement)(E.__unstableEditorStyles,{styles:o}),(0,s.createElement)(E.WritingFlow,{ref:n,className:"editor-styles-wrapper",style:{flex:"1",...r},tabIndex:-1},t))}function Yt(e){let{styles:t}=e;const{deviceType:n,isWelcomeGuideVisible:l,isTemplateMode:o,wrapperBlockName:a,wrapperUniqueId:r}=(0,c.useSelect)((e=>{const{isFeatureActive:t,isEditingTemplate:n,__experimentalGetPreviewDeviceType:l}=e(Dt),{getCurrentPostId:o,getCurrentPostType:a}=e(T.store),s=n();let r;return"wp_block"===a()?r="core/block":s||(r="core/post-content"),{deviceType:l(),isWelcomeGuideVisible:t("welcomeGuide"),isTemplateMode:s,wrapperBlockName:r,wrapperUniqueId:o()}}),[]),{isCleanNewPost:i}=(0,c.useSelect)(T.store),d=(0,c.useSelect)((e=>e(Dt).hasMetaBoxes()),[]),{themeHasDisabledLayoutStyles:u,themeSupportsLayout:m,assets:p}=(0,c.useSelect)((e=>{const t=e(E.store).getSettings();return{themeHasDisabledLayoutStyles:t.disableLayoutStyles,themeSupportsLayout:t.supportsLayout,assets:t.__unstableResolvedAssets}}),[]),{clearSelectedBlock:g}=(0,c.useDispatch)(E.store),{setIsEditingTemplate:f}=(0,c.useDispatch)(Dt),v={height:"100%",width:"100%",margin:0,display:"flex",flexFlow:"column",background:"white"},y={...v,borderRadius:"2px 2px 0 0",border:"1px solid #ddd",borderBottom:0},w=(0,E.__experimentalUseResizeCanvas)(n,o),S=(0,E.useSetting)("layout"),k="is-"+n.toLowerCase()+"-preview";let P,C=o?y:v;w&&(C=w),d||w||o||(P="40vh");const x=(0,s.useRef)(),B=(0,b.useMergeRefs)([x,(0,E.__unstableUseClipboardHandler)(),(0,E.__unstableUseTypewriter)(),(0,E.__unstableUseTypingObserver)(),(0,E.__unstableUseBlockSelectionClearer)()]),I=(0,E.__unstableUseBlockSelectionClearer)(),M=(0,s.useMemo)((()=>o?{type:"default"}:m?{...S,type:"constrained"}:{type:"constrained"}),[o,m,S]),N=(0,s.useRef)();return(0,s.useEffect)((()=>{var e;!l&&i()&&(null==N||null===(e=N.current)||void 0===e||e.focus())}),[l,i]),(0,s.createElement)(E.BlockTools,{__unstableContentRef:x,className:L()("edit-post-visual-editor",{"is-template-mode":o})},(0,s.createElement)(T.VisualEditorGlobalKeyboardShortcuts,null),(0,s.createElement)(h.__unstableMotion.div,{className:"edit-post-visual-editor__content-area",animate:{padding:o?"48px 48px 0":"0"},ref:I},o&&(0,s.createElement)(h.Button,{className:"edit-post-visual-editor__exit-template-mode",icon:$t,onClick:()=>{g(),f(!1)}},(0,_.__)("Back")),(0,s.createElement)(h.__unstableMotion.div,{animate:C,initial:v,className:k},(0,s.createElement)(Kt,{shouldIframe:o||"Tablet"===n||"Mobile"===n,contentRef:B,styles:t,assets:p,style:{paddingBottom:P}},m&&!u&&!o&&(0,s.createElement)(E.__experimentalLayoutStyle,{selector:".edit-post-visual-editor__post-title-wrapper, .block-editor-block-list__layout.is-root-container",layout:M,layoutDefinitions:null==S?void 0:S.definitions}),!o&&(0,s.createElement)("div",{className:"edit-post-visual-editor__post-title-wrapper",contentEditable:!1},(0,s.createElement)(T.PostTitle,{ref:N})),(0,s.createElement)(E.__experimentalRecursionProvider,{blockName:a,uniqueId:r},(0,s.createElement)(E.BlockList,{className:o?"wp-site-blocks":"is-layout-constrained",__experimentalLayout:M}))))),(0,s.createElement)(E.__unstableBlockSettingsMenuFirstItem,null,(e=>{let{onClose:t}=e;return(0,s.createElement)(jt,{onClick:t})})))}const Xt=function(){const{getBlockSelectionStart:e}=(0,c.useSelect)(E.store),{getEditorMode:t,isEditorSidebarOpened:n,isListViewOpened:l}=(0,c.useSelect)(Dt),o=(0,c.useSelect)((e=>{const{richEditingEnabled:t,codeEditingEnabled:n}=e(T.store).getEditorSettings();return!t||!n}),[]),{switchEditorMode:a,openGeneralSidebar:r,closeGeneralSidebar:i,toggleFeature:d,setIsListViewOpened:u}=(0,c.useDispatch)(Dt),{registerShortcut:m}=(0,c.useDispatch)(zt.store);return(0,s.useEffect)((()=>{m({name:"core/edit-post/toggle-mode",category:"global",description:(0,_.__)("Switch between visual editor and code editor."),keyCombination:{modifier:"secondary",character:"m"}}),m({name:"core/edit-post/toggle-fullscreen",category:"global",description:(0,_.__)("Toggle fullscreen mode."),keyCombination:{modifier:"secondary",character:"f"}}),m({name:"core/edit-post/toggle-list-view",category:"global",description:(0,_.__)("Open the block list view."),keyCombination:{modifier:"access",character:"o"}}),m({name:"core/edit-post/toggle-sidebar",category:"global",description:(0,_.__)("Show or hide the settings sidebar."),keyCombination:{modifier:"primaryShift",character:","}}),m({name:"core/edit-post/next-region",category:"global",description:(0,_.__)("Navigate to the next part of the editor."),keyCombination:{modifier:"ctrl",character:"`"},aliases:[{modifier:"access",character:"n"}]}),m({name:"core/edit-post/previous-region",category:"global",description:(0,_.__)("Navigate to the previous part of the editor."),keyCombination:{modifier:"ctrlShift",character:"`"},aliases:[{modifier:"access",character:"p"}]}),m({name:"core/edit-post/keyboard-shortcuts",category:"main",description:(0,_.__)("Display these keyboard shortcuts."),keyCombination:{modifier:"access",character:"h"}})}),[]),(0,zt.useShortcut)("core/edit-post/toggle-mode",(()=>{a("visual"===t()?"text":"visual")}),{isDisabled:o}),(0,zt.useShortcut)("core/edit-post/toggle-fullscreen",(()=>{d("fullscreenMode")})),(0,zt.useShortcut)("core/edit-post/toggle-sidebar",(t=>{if(t.preventDefault(),n())i();else{const t=e()?"edit-post/block":"edit-post/document";r(t)}})),(0,zt.useShortcut)("core/edit-post/toggle-list-view",(()=>u(!l()))),null},Qt=[{keyCombination:{modifier:"primary",character:"b"},description:(0,_.__)("Make the selected text bold.")},{keyCombination:{modifier:"primary",character:"i"},description:(0,_.__)("Make the selected text italic.")},{keyCombination:{modifier:"primary",character:"k"},description:(0,_.__)("Convert the selected text into a link.")},{keyCombination:{modifier:"primaryShift",character:"k"},description:(0,_.__)("Remove a link.")},{keyCombination:{character:"[["},description:(0,_.__)("Insert a link to a post or page")},{keyCombination:{modifier:"primary",character:"u"},description:(0,_.__)("Underline the selected text.")},{keyCombination:{modifier:"access",character:"d"},description:(0,_.__)("Strikethrough the selected text.")},{keyCombination:{modifier:"access",character:"x"},description:(0,_.__)("Make the selected text inline code.")}];function Zt(e){let{keyCombination:t,forceAriaLabel:n}=e;const l=t.modifier?x.displayShortcutList[t.modifier](t.character):t.character,o=t.modifier?x.shortcutAriaLabel[t.modifier](t.character):t.character;return(0,s.createElement)("kbd",{className:"edit-post-keyboard-shortcut-help-modal__shortcut-key-combination","aria-label":n||o},(0,g.castArray)(l).map(((e,t)=>"+"===e?(0,s.createElement)(s.Fragment,{key:t},e):(0,s.createElement)("kbd",{key:t,className:"edit-post-keyboard-shortcut-help-modal__shortcut-key"},e))))}const Jt=function(e){let{description:t,keyCombination:n,aliases:l=[],ariaLabel:o}=e;return(0,s.createElement)(s.Fragment,null,(0,s.createElement)("div",{className:"edit-post-keyboard-shortcut-help-modal__shortcut-description"},t),(0,s.createElement)("div",{className:"edit-post-keyboard-shortcut-help-modal__shortcut-term"},(0,s.createElement)(Zt,{keyCombination:n,forceAriaLabel:o}),l.map(((e,t)=>(0,s.createElement)(Zt,{keyCombination:e,forceAriaLabel:o,key:t})))))},en=function(e){let{name:t}=e;const{keyCombination:n,description:l,aliases:o}=(0,c.useSelect)((e=>{const{getShortcutKeyCombination:n,getShortcutDescription:l,getShortcutAliases:o}=e(zt.store);return{keyCombination:n(t),aliases:o(t),description:l(t)}}),[t]);return n?(0,s.createElement)(Jt,{keyCombination:n,description:l,aliases:o}):null},tn="edit-post/keyboard-shortcut-help",nn=e=>{let{shortcuts:t}=e;return(0,s.createElement)("ul",{className:"edit-post-keyboard-shortcut-help-modal__shortcut-list",role:"list"},t.map(((e,t)=>(0,s.createElement)("li",{className:"edit-post-keyboard-shortcut-help-modal__shortcut",key:t},"string"==typeof e?(0,s.createElement)(en,{name:e}):(0,s.createElement)(Jt,e)))))},ln=e=>{let{title:t,shortcuts:n,className:l}=e;return(0,s.createElement)("section",{className:L()("edit-post-keyboard-shortcut-help-modal__section",l)},!!t&&(0,s.createElement)("h2",{className:"edit-post-keyboard-shortcut-help-modal__section-title"},t),(0,s.createElement)(nn,{shortcuts:n}))},on=e=>{let{title:t,categoryName:n,additionalShortcuts:l=[]}=e;const o=(0,c.useSelect)((e=>e(zt.store).getCategoryShortcuts(n)),[n]);return(0,s.createElement)(ln,{title:t,shortcuts:o.concat(l)})},an=(0,b.compose)([(0,c.withSelect)((e=>({isModalActive:e(Dt).isModalActive(tn)}))),(0,c.withDispatch)(((e,t)=>{let{isModalActive:n}=t;const{openModal:l,closeModal:o}=e(Dt);return{toggleModal:()=>n?o():l(tn)}}))])((function(e){let{isModalActive:t,toggleModal:n}=e;return(0,zt.useShortcut)("core/edit-post/keyboard-shortcuts",n),t?(0,s.createElement)(h.Modal,{className:"edit-post-keyboard-shortcut-help-modal",title:(0,_.__)("Keyboard shortcuts"),closeLabel:(0,_.__)("Close"),onRequestClose:n},(0,s.createElement)(ln,{className:"edit-post-keyboard-shortcut-help-modal__main-shortcuts",shortcuts:["core/edit-post/keyboard-shortcuts"]}),(0,s.createElement)(on,{title:(0,_.__)("Global shortcuts"),categoryName:"global"}),(0,s.createElement)(on,{title:(0,_.__)("Selection shortcuts"),categoryName:"selection"}),(0,s.createElement)(on,{title:(0,_.__)("Block shortcuts"),categoryName:"block",additionalShortcuts:[{keyCombination:{character:"/"},description:(0,_.__)("Change the block type after adding a new paragraph."),
|
20 |
/* translators: The forward-slash character. e.g. '/'. */
|
21 |
ariaLabel:(0,_.__)("Forward-slash")}]}),(0,s.createElement)(ln,{title:(0,_.__)("Text formatting"),shortcuts:Qt})):null}));function sn(e){let{willEnable:t}=e;const[n,l]=(0,s.useState)(!1);return(0,s.createElement)(s.Fragment,null,(0,s.createElement)("p",{className:"edit-post-preferences-modal__custom-fields-confirmation-message"},(0,_.__)("A page reload is required for this change. Make sure your content is saved before reloading.")),(0,s.createElement)(h.Button,{className:"edit-post-preferences-modal__custom-fields-confirmation-button",variant:"secondary",isBusy:n,disabled:n,onClick:()=>{l(!0),document.getElementById("toggle-custom-fields-form").submit()}},t?(0,_.__)("Enable & Reload"):(0,_.__)("Disable & Reload")))}const rn=(0,c.withSelect)((e=>({areCustomFieldsEnabled:!!e(T.store).getEditorSettings().enableCustomFields})))((function(e){let{label:t,areCustomFieldsEnabled:n}=e;const[l,o]=(0,s.useState)(n);return(0,s.createElement)(Pe,{label:t,isChecked:l,onChange:o},l!==n&&(0,s.createElement)(sn,{willEnable:l}))})),cn=(0,b.compose)((0,c.withSelect)(((e,t)=>{let{panelName:n}=t;const{isEditorPanelEnabled:l,isEditorPanelRemoved:o}=e(Dt);return{isRemoved:o(n),isChecked:l(n)}})),(0,b.ifCondition)((e=>{let{isRemoved:t}=e;return!t})),(0,c.withDispatch)(((e,t)=>{let{panelName:n}=t;return{onChange:()=>e(Dt).toggleEditorPanelEnabled(n)}})))(Pe),{Fill:dn,Slot:un}=(0,h.createSlotFill)("EnablePluginDocumentSettingPanelOption"),mn=e=>{let{label:t,panelName:n}=e;return(0,s.createElement)(dn,null,(0,s.createElement)(cn,{label:t,panelName:n}))};mn.Slot=un;const pn=mn,gn=(0,b.compose)((0,c.withSelect)((e=>({isChecked:e(T.store).isPublishSidebarEnabled()}))),(0,c.withDispatch)((e=>{const{enablePublishSidebar:t,disablePublishSidebar:n}=e(T.store);return{onChange:e=>e?t():n()}})),(0,F.ifViewportMatches)("medium"))(Pe),hn=(0,b.compose)((0,c.withSelect)(((e,t)=>{let{featureName:n}=t;const{isFeatureActive:l}=e(Dt);return{isChecked:l(n)}})),(0,c.withDispatch)(((e,t)=>{let{featureName:n}=t;return{onChange:()=>e(Dt).toggleFeature(n)}})))(Pe),En=(0,c.withSelect)((e=>{const{getEditorSettings:t}=e(T.store),{getAllMetaBoxes:n}=e(Dt);return{areCustomFieldsRegistered:void 0!==t().enableCustomFields,metaBoxes:n()}}))((function(e){let{areCustomFieldsRegistered:t,metaBoxes:n,...l}=e;const o=(0,g.filter)(n,(e=>{let{id:t}=e;return"postcustom"!==t}));return t||0!==o.length?(0,s.createElement)(ke,l,t&&(0,s.createElement)(rn,{label:(0,_.__)("Custom fields")}),(0,g.map)(o,(e=>{let{id:t,title:n}=e;return(0,s.createElement)(cn,{key:t,label:n,panelName:`meta-box-${t}`})}))):null})),bn=function(e){let{blockTypes:t,value:n,onItemChange:l}=e;return(0,s.createElement)("ul",{className:"edit-post-block-manager__checklist"},t.map((e=>(0,s.createElement)("li",{key:e.name,className:"edit-post-block-manager__checklist-item"},(0,s.createElement)(h.CheckboxControl,{label:(0,s.createElement)(s.Fragment,null,e.title,(0,s.createElement)(E.BlockIcon,{icon:e.icon})),checked:n.includes(e.name),onChange:(0,g.partial)(l,e.name)})))))},fn=function e(t){let{title:n,blockTypes:l}=t;const o=(0,b.useInstanceId)(e),{defaultAllowedBlockTypes:a,hiddenBlockTypes:r}=(0,c.useSelect)((e=>{const{getEditorSettings:t}=e(T.store),{getHiddenBlockTypes:n}=e(Dt);return{defaultAllowedBlockTypes:t().defaultAllowedBlockTypes,hiddenBlockTypes:n()}}),[]),i=(0,s.useMemo)((()=>!0===a?l:l.filter((e=>{let{name:t}=e;return(0,g.includes)(a||[],t)}))),[a,l]),{showBlockTypes:d,hideBlockTypes:u}=(0,c.useDispatch)(Dt),m=(0,s.useCallback)(((e,t)=>{t?d(e):u(e)}),[]),p=(0,s.useCallback)((e=>{const t=(0,g.map)(l,"name");e?d(t):u(t)}),[l]);if(!i.length)return null;const E=(0,g.without)((0,g.map)(i,"name"),...r),_="edit-post-block-manager__category-title-"+o,f=E.length===i.length;let v;return v=f?"true":E.length>0?"mixed":"false",(0,s.createElement)("div",{role:"group","aria-labelledby":_,className:"edit-post-block-manager__category"},(0,s.createElement)(h.CheckboxControl,{checked:f,onChange:p,className:"edit-post-block-manager__category-title","aria-checked":v,label:(0,s.createElement)("span",{id:_},n)}),(0,s.createElement)(bn,{blockTypes:i,value:E,onItemChange:m}))},vn=(0,c.withSelect)((e=>{const{getBlockTypes:t,getCategories:n,hasBlockSupport:l,isMatchingSearchTerm:o}=e(r.store),{getHiddenBlockTypes:a}=e(Dt),s=t(),i=a().filter((e=>s.some((t=>t.name===e)))),c=Array.isArray(i)&&i.length;return{blockTypes:s,categories:n(),hasBlockSupport:l,isMatchingSearchTerm:o,numberOfHiddenBlocks:c}}))((function(e){let{blockTypes:t,categories:n,hasBlockSupport:l,isMatchingSearchTerm:o,numberOfHiddenBlocks:a}=e;const r=(0,b.useDebounce)(Te.speak,500),[i,c]=(0,s.useState)("");return t=t.filter((e=>l(e,"inserter",!0)&&(!i||o(e,i))&&(!e.parent||(0,g.includes)(e.parent,"core/post-content")))),(0,s.useEffect)((()=>{if(!i)return;const e=t.length,n=(0,_.sprintf)(
|
22 |
/* translators: %d: number of results. */
|
16 |
/* translators: button label text should, if possible, be under 16 characters. */
|
17 |
l=(0,_.__)("Options"),popoverProps:o,toggleProps:a,children:r}=e;return(0,s.createElement)(t,{className:L()("interface-more-menu-dropdown",n),icon:Ee,label:l,popoverProps:{position:"bottom left",...o,className:L()("interface-more-menu-dropdown__content",null==o?void 0:o.className)},toggleProps:{tooltipPosition:"bottom",...a}},(e=>r(e)))}function be(e){let{closeModal:t,children:n}=e;return(0,s.createElement)(h.Modal,{className:"interface-preferences-modal",title:(0,_.__)("Preferences"),closeLabel:(0,_.__)("Close"),onRequestClose:t},n)}const fe=function(e){let{icon:t,size:n=24,...l}=e;return(0,s.cloneElement)(t,{width:n,height:n,...l})},ve=(0,s.createElement)(y.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,s.createElement)(y.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})),ye=(0,s.createElement)(y.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,s.createElement)(y.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})),we="preferences-menu";function Se(e){let{sections:t}=e;const n=(0,b.useViewportMatch)("medium"),[l,o]=(0,s.useState)(we),{tabs:a,sectionsContentMap:r}=(0,s.useMemo)((()=>{let e={tabs:[],sectionsContentMap:{}};return t.length&&(e=t.reduce(((e,t)=>{let{name:n,tabLabel:l,content:o}=t;return e.tabs.push({name:n,title:l}),e.sectionsContentMap[n]=o,e}),{tabs:[],sectionsContentMap:{}})),e}),[t]),i=(0,s.useCallback)((e=>r[e.name]||null),[r]);let c;return c=n?(0,s.createElement)(h.TabPanel,{className:"interface-preferences__tabs",tabs:a,initialTabName:l!==we?l:void 0,onSelect:o,orientation:"vertical"},i):(0,s.createElement)(h.__experimentalNavigatorProvider,{initialPath:"/",className:"interface-preferences__provider"},(0,s.createElement)(h.__experimentalNavigatorScreen,{path:"/"},(0,s.createElement)(h.Card,{isBorderless:!0,size:"small"},(0,s.createElement)(h.CardBody,null,(0,s.createElement)(h.__experimentalItemGroup,null,a.map((e=>(0,s.createElement)(h.__experimentalNavigatorButton,{key:e.name,path:e.name,as:h.__experimentalItem,isAction:!0},(0,s.createElement)(h.__experimentalHStack,{justify:"space-between"},(0,s.createElement)(h.FlexItem,null,(0,s.createElement)(h.__experimentalTruncate,null,e.title)),(0,s.createElement)(h.FlexItem,null,(0,s.createElement)(fe,{icon:(0,_.isRTL)()?ve:ye})))))))))),t.length&&t.map((e=>(0,s.createElement)(h.__experimentalNavigatorScreen,{key:`${e.name}-menu`,path:e.name},(0,s.createElement)(h.Card,{isBorderless:!0,size:"large"},(0,s.createElement)(h.CardHeader,{isBorderless:!1,justify:"left",size:"small",gap:"6"},(0,s.createElement)(h.__experimentalNavigatorBackButton,{icon:(0,_.isRTL)()?ye:ve,"aria-label":(0,_.__)("Navigate to the previous view")}),(0,s.createElement)(h.__experimentalText,{size:"16"},e.tabLabel)),(0,s.createElement)(h.CardBody,null,e.content)))))),c}const ke=e=>{let{description:t,title:n,children:l}=e;return(0,s.createElement)("fieldset",{className:"interface-preferences-modal__section"},(0,s.createElement)("legend",null,(0,s.createElement)("h2",{className:"interface-preferences-modal__section-title"},n),t&&(0,s.createElement)("p",{className:"interface-preferences-modal__section-description"},t)),l)},Pe=function(e){let{help:t,label:n,isChecked:l,onChange:o,children:a}=e;return(0,s.createElement)("div",{className:"interface-preferences-modal__option"},(0,s.createElement)(h.ToggleControl,{help:t,label:n,checked:l,onChange:o}),a)},Te=window.wp.a11y,Ce=window.wp.coreData,xe=e=>t=>{let{registry:n}=t;return n.dispatch(ee).enableComplementaryArea(Dt.name,e)},Be=()=>e=>{let{registry:t}=e;return t.dispatch(ee).disableComplementaryArea(Dt.name)};function Ie(e){return{type:"OPEN_MODAL",name:e}}function Me(){return{type:"CLOSE_MODAL"}}function Ne(){return{type:"OPEN_PUBLISH_SIDEBAR"}}function Ae(){return{type:"CLOSE_PUBLISH_SIDEBAR"}}function Le(){return{type:"TOGGLE_PUBLISH_SIDEBAR"}}const Oe=e=>t=>{var n;let{registry:l}=t;const o=null!==(n=l.select(u.store).get("core/edit-post","inactivePanels"))&&void 0!==n?n:[];let a;a=null!=o&&o.includes(e)?o.filter((t=>t!==e)):[...o,e],l.dispatch(u.store).set("core/edit-post","inactivePanels",a)},Re=e=>t=>{var n;let{registry:l}=t;const o=null!==(n=l.select(u.store).get("core/edit-post","openPanels"))&&void 0!==n?n:[];let a;a=null!=o&&o.includes(e)?o.filter((t=>t!==e)):[...o,e],l.dispatch(u.store).set("core/edit-post","openPanels",a)};function De(e){return{type:"REMOVE_PANEL",panelName:e}}const Fe=e=>t=>{let{registry:n}=t;return n.dispatch(u.store).toggle("core/edit-post",e)},Ve=e=>t=>{let{registry:n}=t;n.dispatch(u.store).set("core/edit-post","editorMode",e),"visual"!==e&&n.dispatch(E.store).clearSelectedBlock();const l="visual"===e?(0,_.__)("Visual editor selected"):(0,_.__)("Code editor selected");(0,Te.speak)(l,"assertive")},Ue=e=>t=>{let{registry:n}=t;const l=n.select(ee).isItemPinned("core/edit-post",e);n.dispatch(ee)[l?"unpinItem":"pinItem"]("core/edit-post",e)},Ge=(e,t)=>n=>{var l;let{registry:o}=n;if(!e)return;const a=null!==(l=o.select(u.store).get("core/edit-post","preferredStyleVariations"))&&void 0!==l?l:{};if(t)o.dispatch(u.store).set("core/edit-post","preferredStyleVariations",{...a,[e]:t});else{const t={...a};delete t[e],o.dispatch(u.store).set("core/edit-post","preferredStyleVariations",t)}},He=e=>t=>{var n;let{registry:l}=t;const o=null!==(n=l.select(u.store).get("core/edit-post","hiddenBlockTypes"))&&void 0!==n?n:[],a=(0,g.without)(o,...(0,g.castArray)(e));l.dispatch(u.store).set("core/edit-post","hiddenBlockTypes",a)},ze=e=>t=>{var n;let{registry:l}=t;const o=null!==(n=l.select(u.store).get("core/edit-post","hiddenBlockTypes"))&&void 0!==n?n:[],a=new Set([...o,...(0,g.castArray)(e)]);l.dispatch(u.store).set("core/edit-post","hiddenBlockTypes",[...a])},We=e=>t=>{let{dispatch:n}=t;return n({type:"SET_META_BOXES_PER_LOCATIONS",metaBoxesPerLocation:e})},$e=()=>async e=>{let{registry:t,select:n,dispatch:l}=e;l({type:"REQUEST_META_BOX_UPDATES"}),window.tinyMCE&&window.tinyMCE.triggerSave();const o=t.select(T.store).getCurrentPost(),a=[!!o.comment_status&&["comment_status",o.comment_status],!!o.ping_status&&["ping_status",o.ping_status],!!o.sticky&&["sticky",o.sticky],!!o.author&&["post_author",o.author]].filter(Boolean),s=[new window.FormData(document.querySelector(".metabox-base-form")),...n.getActiveMetaBoxLocations().map((e=>new window.FormData((e=>document.querySelector(`.edit-post-meta-boxes-area.is-${e} .metabox-location-${e}`)||document.querySelector("#metaboxes .metabox-location-"+e))(e))))],r=(0,g.reduce)(s,((e,t)=>{for(const[n,l]of t)e.append(n,l);return e}),new window.FormData);a.forEach((e=>{let[t,n]=e;return r.append(t,n)}));try{await N()({url:window._wpMetaBoxUrl,method:"POST",body:r,parse:!1}),l.metaBoxUpdatesSuccess()}catch{l.metaBoxUpdatesFailure()}};function qe(){return{type:"META_BOX_UPDATES_SUCCESS"}}function je(){return{type:"META_BOX_UPDATES_FAILURE"}}function Ke(e){return{type:"SET_PREVIEW_DEVICE_TYPE",deviceType:e}}function Ye(e){return{type:"SET_IS_INSERTER_OPENED",value:e}}function Xe(e){return{type:"SET_IS_LIST_VIEW_OPENED",isOpen:e}}function Qe(e){return{type:"SET_IS_EDITING_TEMPLATE",value:e}}const Ze=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t=>{let{registry:n,select:l,dispatch:o}=t;if(o(Qe(!0)),!l.isFeatureActive("welcomeGuideTemplate")){const t=e?(0,_.__)("Custom template created. You're in template mode now."):(0,_.__)("Editing template. Changes made here affect all posts and pages that use the template.");n.dispatch(P.store).createSuccessNotice(t,{type:"snackbar"})}}},Je=e=>async t=>{let{registry:n}=t;const l=await n.dispatch(Ce.store).saveEntityRecord("postType","wp_template",e),o=n.select(T.store).getCurrentPost();n.dispatch(Ce.store).editEntityRecord("postType",o.type,o.id,{template:l.slug})};let et=!1;const tt=()=>e=>{let{registry:t,select:n,dispatch:l}=e;if(!t.select(T.store).__unstableIsEditorReady())return;if(et)return;const o=t.select(T.store).getCurrentPostType();window.postboxes.page!==o&&window.postboxes.add_postbox_toggles(o),et=!0;let a=t.select(T.store).isSavingPost(),s=t.select(T.store).isAutosavingPost();const r=n.hasMetaBoxes();t.subscribe((async()=>{const e=t.select(T.store).isSavingPost(),n=t.select(T.store).isAutosavingPost(),o=r&&a&&!e&&!s;a=e,s=n,o&&await l.requestMetaBoxUpdates()})),l({type:"META_BOXES_INITIALIZED"})};var nt={};function lt(e){return[e]}function ot(e,t,n){var l;if(e.length!==t.length)return!1;for(l=n;l<e.length;l++)if(e[l]!==t[l])return!1;return!0}function at(e,t){var n,l=t||lt;function o(e){var t,l,o,a,s,r=n,i=!0;for(t=0;t<e.length;t++){if(!(s=l=e[t])||"object"!=typeof s){i=!1;break}r.has(l)?r=r.get(l):(o=new WeakMap,r.set(l,o),r=o)}return r.has(nt)||((a=function(){var e={clear:function(){e.head=null}};return e}()).isUniqueByDependants=i,r.set(nt,a)),r.get(nt)}function a(){n=new WeakMap}function s(){var t,n,a,s,r,i=arguments.length;for(s=new Array(i),a=0;a<i;a++)s[a]=arguments[a];for((t=o(r=l.apply(null,s))).isUniqueByDependants||(t.lastDependants&&!ot(r,t.lastDependants,0)&&t.clear(),t.lastDependants=r),n=t.head;n;){if(ot(n.args,s,1))return n!==t.head&&(n.prev.next=n.next,n.next&&(n.next.prev=n.prev),n.next=t.head,n.prev=null,t.head.prev=n,t.head=n),n.val;n=n.next}return n={val:e.apply(null,s)},s[0]=null,n.args=s,t.head&&(t.head.prev=n,n.next=t.head),t.head=n,n.val}return s.getDependants=l,s.clear=a,a(),s}const st=[],rt={},it=(0,c.createRegistrySelector)((e=>()=>{var t;return null!==(t=e(u.store).get("core/edit-post","editorMode"))&&void 0!==t?t:"visual"})),ct=(0,c.createRegistrySelector)((e=>()=>{const t=e(ee).getActiveComplementaryArea("core/edit-post");return["edit-post/document","edit-post/block"].includes(t)})),dt=(0,c.createRegistrySelector)((e=>()=>{const t=e(ee).getActiveComplementaryArea("core/edit-post");return!!t&&!["edit-post/document","edit-post/block"].includes(t)})),ut=(0,c.createRegistrySelector)((e=>()=>e(ee).getActiveComplementaryArea("core/edit-post"))),mt=(0,c.createRegistrySelector)((e=>()=>(G()("select( 'core/edit-post' ).getPreferences",{since:"6.0",alternative:"select( 'core/preferences' ).get"}),{...["hiddenBlockTypes","editorMode","preferredStyleVariations"].reduce(((t,n)=>({...t,[n]:e(u.store).get("core/edit-post",n)})),{}),panels:function(e,t){var n;const l=null==e?void 0:e.reduce(((e,t)=>({...e,[t]:{enabled:!1}})),{}),o=null==t?void 0:t.reduce(((e,t)=>{const n=null==e?void 0:e[t];return{...e,[t]:{...n,opened:!0}}}),null!=l?l:{});return null!==(n=null!=o?o:l)&&void 0!==n?n:rt}(e(u.store).get("core/edit-post","inactivePanels"),e(u.store).get("core/edit-post","openPanels"))})));function pt(e,t,n){G()("select( 'core/edit-post' ).getPreference",{since:"6.0",alternative:"select( 'core/preferences' ).get"});const l=mt(e)[t];return void 0===l?n:l}const gt=(0,c.createRegistrySelector)((e=>()=>{var t;return null!==(t=e(u.store).get("core/edit-post","hiddenBlockTypes"))&&void 0!==t?t:st}));function ht(e){return e.publishSidebarActive}function Et(e,t){return e.removedPanels.includes(t)}const _t=(0,c.createRegistrySelector)((e=>(t,n)=>{const l=e(u.store).get("core/edit-post","inactivePanels");return!(Et(t,n)||null!=l&&l.includes(n))})),bt=(0,c.createRegistrySelector)((e=>(t,n)=>{const l=e(u.store).get("core/edit-post","openPanels");return!(null==l||!l.includes(n))}));function ft(e,t){return e.activeModal===t}const vt=(0,c.createRegistrySelector)((e=>(t,n)=>!!e(u.store).get("core/edit-post",n))),yt=(0,c.createRegistrySelector)((e=>(t,n)=>e(ee).isItemPinned("core/edit-post",n))),wt=at((e=>Object.keys(e.metaBoxes.locations).filter((t=>kt(e,t)))),(e=>[e.metaBoxes.locations]));function St(e,t){var n;return kt(e,t)&&(null===(n=Pt(e,t))||void 0===n?void 0:n.some((t=>{let{id:n}=t;return _t(e,`meta-box-${n}`)})))}function kt(e,t){const n=Pt(e,t);return!!n&&0!==n.length}function Pt(e,t){return e.metaBoxes.locations[t]}const Tt=at((e=>Object.values(e.metaBoxes.locations).flat()),(e=>[e.metaBoxes.locations]));function Ct(e){return wt(e).length>0}function xt(e){return e.metaBoxes.isSaving}function Bt(e){return e.deviceType}function It(e){return!!e.blockInserterPanel}function Mt(e){const{rootClientId:t,insertionIndex:n,filterValue:l}=e.blockInserterPanel;return{rootClientId:t,insertionIndex:n,filterValue:l}}function Nt(e){return e.listViewPanel}function At(e){return e.isEditingTemplate}function Lt(e){return e.metaBoxes.initialized}const Ot=(0,c.createRegistrySelector)((e=>()=>{const t=e(T.store).getEditedPostAttribute("template");if(t){var n;const l=null===(n=e(Ce.store).getEntityRecords("postType","wp_template",{per_page:-1}))||void 0===n?void 0:n.find((e=>e.slug===t));return l?e(Ce.store).getEditedEntityRecord("postType","wp_template",l.id):l}const l=e(T.store).getCurrentPost();return l.link?e(Ce.store).__experimentalGetTemplateForLink(l.link):null})),Rt="core/edit-post",Dt=(0,c.createReduxStore)(Rt,{reducer:I,actions:o,selectors:a});(0,c.register)(Dt);const Ft=(0,c.withDispatch)((e=>{const{openModal:t}=e(Dt);return{openModal:t}}))((function(e){let{openModal:t}=e;return(0,s.createElement)(h.MenuItem,{onClick:()=>{t("edit-post/keyboard-shortcut-help")},shortcut:x.displayShortcut.access("h")},(0,_.__)("Keyboard shortcuts"))})),{Fill:Vt,Slot:Ut}=(0,h.createSlotFill)("ToolsMoreMenuGroup");Vt.Slot=e=>{let{fillProps:t}=e;return(0,s.createElement)(Ut,{fillProps:t},(e=>!(0,g.isEmpty)(e)&&(0,s.createElement)(h.MenuGroup,{label:(0,_.__)("Tools")},e)))};const Gt=Vt;function Ht(){const e=(0,c.useSelect)((e=>e(Dt).isEditingTemplate()),[]);return(0,s.createElement)(u.PreferenceToggleMenuItem,{scope:"core/edit-post",name:e?"welcomeGuideTemplate":"welcomeGuide",label:(0,_.__)("Welcome Guide")})}(0,S.registerPlugin)("edit-post",{render:()=>(0,s.createElement)(s.Fragment,null,(0,s.createElement)(Gt,null,(e=>{let{onClose:t}=e;return(0,s.createElement)(s.Fragment,null,(0,s.createElement)(h.MenuItem,{role:"menuitem",href:(0,k.addQueryArgs)("edit.php",{post_type:"wp_block"})},(0,_.__)("Manage Reusable blocks")),(0,s.createElement)(Ft,{onSelect:t}),(0,s.createElement)(Ht,null),(0,s.createElement)(C,null),(0,s.createElement)(h.MenuItem,{role:"menuitem",icon:w,href:(0,_.__)("https://wordpress.org/support/article/wordpress-editor/"),target:"_blank",rel:"noopener noreferrer"},(0,_.__)("Help"),(0,s.createElement)(h.VisuallyHidden,{as:"span"},
|
18 |
/* translators: accessibility text */
|
19 |
+
(0,_.__)("(opens in a new tab)"))))})))});const zt=window.wp.keyboardShortcuts;function Wt(){const e=(0,c.useSelect)((e=>e(T.store).getEditorSettings().richEditingEnabled),[]),{switchEditorMode:t}=(0,c.useDispatch)(Dt);return(0,s.createElement)("div",{className:"edit-post-text-editor"},(0,s.createElement)(T.TextEditorGlobalKeyboardShortcuts,null),e&&(0,s.createElement)("div",{className:"edit-post-text-editor__toolbar"},(0,s.createElement)("h2",null,(0,_.__)("Editing code")),(0,s.createElement)(h.Button,{variant:"tertiary",onClick:()=>t("visual"),shortcut:x.displayShortcut.secondary("m")},(0,_.__)("Exit code editor"))),(0,s.createElement)("div",{className:"edit-post-text-editor__body"},(0,s.createElement)(T.PostTitle,null),(0,s.createElement)(T.PostTextEditor,null)))}const $t=(0,s.createElement)(y.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,s.createElement)(y.Path,{d:"M20 10.8H6.7l4.1-4.5-1.1-1.1-5.8 6.3 5.8 5.8 1.1-1.1-4-3.9H20z"})),qt=()=>{},jt=function(e){let{onClick:t=qt,small:n=!1}=e;const{shortcut:l,areAdvancedSettingsOpened:o}=(0,c.useSelect)((e=>({shortcut:e(zt.store).getShortcutRepresentation("core/edit-post/toggle-sidebar"),areAdvancedSettingsOpened:"edit-post/block"===e(Dt).getActiveGeneralSidebarName()})),[]),{openGeneralSidebar:a,closeGeneralSidebar:r}=(0,c.useDispatch)(Dt),i=o?(0,_.__)("Hide more settings"):(0,_.__)("Show more settings");return(0,s.createElement)(h.MenuItem,{onClick:()=>{o?(r(),(0,Te.speak)((0,_.__)("Block settings closed"))):(a("edit-post/block"),(0,Te.speak)((0,_.__)("Additional settings are now available in the Editor block settings sidebar"))),t()},shortcut:l},!n&&i)};function Kt(e){let{children:t,contentRef:n,shouldIframe:l,styles:o,assets:a,style:r}=e;const i=(0,E.__unstableUseMouseMoveTypingReset)();return l?(0,s.createElement)(E.__unstableIframe,{head:(0,s.createElement)(E.__unstableEditorStyles,{styles:o}),assets:a,ref:i,contentRef:n,style:{width:"100%",height:"100%",display:"block"},name:"editor-canvas"},t):(0,s.createElement)(s.Fragment,null,(0,s.createElement)(E.__unstableEditorStyles,{styles:o}),(0,s.createElement)(E.WritingFlow,{ref:n,className:"editor-styles-wrapper",style:{flex:"1",...r},tabIndex:-1},t))}function Yt(e){let{styles:t}=e;const{deviceType:n,isWelcomeGuideVisible:l,isTemplateMode:o,wrapperBlockName:a,wrapperUniqueId:r}=(0,c.useSelect)((e=>{const{isFeatureActive:t,isEditingTemplate:n,__experimentalGetPreviewDeviceType:l}=e(Dt),{getCurrentPostId:o,getCurrentPostType:a}=e(T.store),s=n();let r;return"wp_block"===a()?r="core/block":s||(r="core/post-content"),{deviceType:l(),isWelcomeGuideVisible:t("welcomeGuide"),isTemplateMode:s,wrapperBlockName:r,wrapperUniqueId:o()}}),[]),{isCleanNewPost:i}=(0,c.useSelect)(T.store),d=(0,c.useSelect)((e=>e(Dt).hasMetaBoxes()),[]),{themeHasDisabledLayoutStyles:u,themeSupportsLayout:m,assets:p}=(0,c.useSelect)((e=>{const t=e(E.store).getSettings();return{themeHasDisabledLayoutStyles:t.disableLayoutStyles,themeSupportsLayout:t.supportsLayout,assets:t.__unstableResolvedAssets}}),[]),{clearSelectedBlock:g}=(0,c.useDispatch)(E.store),{setIsEditingTemplate:f}=(0,c.useDispatch)(Dt),v={height:"100%",width:"100%",margin:0,display:"flex",flexFlow:"column",background:"white"},y={...v,borderRadius:"2px 2px 0 0",border:"1px solid #ddd",borderBottom:0},w=(0,E.__experimentalUseResizeCanvas)(n,o),S=(0,E.useSetting)("layout"),k="is-"+n.toLowerCase()+"-preview";let P,C=o?y:v;w&&(C=w),d||w||o||(P="40vh");const x=(0,s.useRef)(),B=(0,b.useMergeRefs)([x,(0,E.__unstableUseClipboardHandler)(),(0,E.__unstableUseTypewriter)(),(0,E.__unstableUseTypingObserver)(),(0,E.__unstableUseBlockSelectionClearer)()]),I=(0,E.__unstableUseBlockSelectionClearer)(),M=(0,s.useMemo)((()=>o?{type:"default"}:m?{...S,type:"constrained"}:{type:"default"}),[o,m,S]),N=m?"is-layout-constrained":"is-layout-flow",A=(0,s.useRef)();return(0,s.useEffect)((()=>{var e;!l&&i()&&(null==A||null===(e=A.current)||void 0===e||e.focus())}),[l,i]),(0,s.createElement)(E.BlockTools,{__unstableContentRef:x,className:L()("edit-post-visual-editor",{"is-template-mode":o})},(0,s.createElement)(T.VisualEditorGlobalKeyboardShortcuts,null),(0,s.createElement)(h.__unstableMotion.div,{className:"edit-post-visual-editor__content-area",animate:{padding:o?"48px 48px 0":"0"},ref:I},o&&(0,s.createElement)(h.Button,{className:"edit-post-visual-editor__exit-template-mode",icon:$t,onClick:()=>{g(),f(!1)}},(0,_.__)("Back")),(0,s.createElement)(h.__unstableMotion.div,{animate:C,initial:v,className:k},(0,s.createElement)(Kt,{shouldIframe:o||"Tablet"===n||"Mobile"===n,contentRef:B,styles:t,assets:p,style:{paddingBottom:P}},m&&!u&&!o&&(0,s.createElement)(E.__experimentalLayoutStyle,{selector:".edit-post-visual-editor__post-title-wrapper, .block-editor-block-list__layout.is-root-container",layout:M,layoutDefinitions:null==S?void 0:S.definitions}),!o&&(0,s.createElement)("div",{className:"edit-post-visual-editor__post-title-wrapper",contentEditable:!1},(0,s.createElement)(T.PostTitle,{ref:A})),(0,s.createElement)(E.__experimentalRecursionProvider,{blockName:a,uniqueId:r},(0,s.createElement)(E.BlockList,{className:o?"wp-site-blocks":N,__experimentalLayout:M}))))),(0,s.createElement)(E.__unstableBlockSettingsMenuFirstItem,null,(e=>{let{onClose:t}=e;return(0,s.createElement)(jt,{onClick:t})})))}const Xt=function(){const{getBlockSelectionStart:e}=(0,c.useSelect)(E.store),{getEditorMode:t,isEditorSidebarOpened:n,isListViewOpened:l}=(0,c.useSelect)(Dt),o=(0,c.useSelect)((e=>{const{richEditingEnabled:t,codeEditingEnabled:n}=e(T.store).getEditorSettings();return!t||!n}),[]),{switchEditorMode:a,openGeneralSidebar:r,closeGeneralSidebar:i,toggleFeature:d,setIsListViewOpened:u}=(0,c.useDispatch)(Dt),{registerShortcut:m}=(0,c.useDispatch)(zt.store);return(0,s.useEffect)((()=>{m({name:"core/edit-post/toggle-mode",category:"global",description:(0,_.__)("Switch between visual editor and code editor."),keyCombination:{modifier:"secondary",character:"m"}}),m({name:"core/edit-post/toggle-fullscreen",category:"global",description:(0,_.__)("Toggle fullscreen mode."),keyCombination:{modifier:"secondary",character:"f"}}),m({name:"core/edit-post/toggle-list-view",category:"global",description:(0,_.__)("Open the block list view."),keyCombination:{modifier:"access",character:"o"}}),m({name:"core/edit-post/toggle-sidebar",category:"global",description:(0,_.__)("Show or hide the settings sidebar."),keyCombination:{modifier:"primaryShift",character:","}}),m({name:"core/edit-post/next-region",category:"global",description:(0,_.__)("Navigate to the next part of the editor."),keyCombination:{modifier:"ctrl",character:"`"},aliases:[{modifier:"access",character:"n"}]}),m({name:"core/edit-post/previous-region",category:"global",description:(0,_.__)("Navigate to the previous part of the editor."),keyCombination:{modifier:"ctrlShift",character:"`"},aliases:[{modifier:"access",character:"p"}]}),m({name:"core/edit-post/keyboard-shortcuts",category:"main",description:(0,_.__)("Display these keyboard shortcuts."),keyCombination:{modifier:"access",character:"h"}})}),[]),(0,zt.useShortcut)("core/edit-post/toggle-mode",(()=>{a("visual"===t()?"text":"visual")}),{isDisabled:o}),(0,zt.useShortcut)("core/edit-post/toggle-fullscreen",(()=>{d("fullscreenMode")})),(0,zt.useShortcut)("core/edit-post/toggle-sidebar",(t=>{if(t.preventDefault(),n())i();else{const t=e()?"edit-post/block":"edit-post/document";r(t)}})),(0,zt.useShortcut)("core/edit-post/toggle-list-view",(()=>u(!l()))),null},Qt=[{keyCombination:{modifier:"primary",character:"b"},description:(0,_.__)("Make the selected text bold.")},{keyCombination:{modifier:"primary",character:"i"},description:(0,_.__)("Make the selected text italic.")},{keyCombination:{modifier:"primary",character:"k"},description:(0,_.__)("Convert the selected text into a link.")},{keyCombination:{modifier:"primaryShift",character:"k"},description:(0,_.__)("Remove a link.")},{keyCombination:{character:"[["},description:(0,_.__)("Insert a link to a post or page")},{keyCombination:{modifier:"primary",character:"u"},description:(0,_.__)("Underline the selected text.")},{keyCombination:{modifier:"access",character:"d"},description:(0,_.__)("Strikethrough the selected text.")},{keyCombination:{modifier:"access",character:"x"},description:(0,_.__)("Make the selected text inline code.")}];function Zt(e){let{keyCombination:t,forceAriaLabel:n}=e;const l=t.modifier?x.displayShortcutList[t.modifier](t.character):t.character,o=t.modifier?x.shortcutAriaLabel[t.modifier](t.character):t.character;return(0,s.createElement)("kbd",{className:"edit-post-keyboard-shortcut-help-modal__shortcut-key-combination","aria-label":n||o},(0,g.castArray)(l).map(((e,t)=>"+"===e?(0,s.createElement)(s.Fragment,{key:t},e):(0,s.createElement)("kbd",{key:t,className:"edit-post-keyboard-shortcut-help-modal__shortcut-key"},e))))}const Jt=function(e){let{description:t,keyCombination:n,aliases:l=[],ariaLabel:o}=e;return(0,s.createElement)(s.Fragment,null,(0,s.createElement)("div",{className:"edit-post-keyboard-shortcut-help-modal__shortcut-description"},t),(0,s.createElement)("div",{className:"edit-post-keyboard-shortcut-help-modal__shortcut-term"},(0,s.createElement)(Zt,{keyCombination:n,forceAriaLabel:o}),l.map(((e,t)=>(0,s.createElement)(Zt,{keyCombination:e,forceAriaLabel:o,key:t})))))},en=function(e){let{name:t}=e;const{keyCombination:n,description:l,aliases:o}=(0,c.useSelect)((e=>{const{getShortcutKeyCombination:n,getShortcutDescription:l,getShortcutAliases:o}=e(zt.store);return{keyCombination:n(t),aliases:o(t),description:l(t)}}),[t]);return n?(0,s.createElement)(Jt,{keyCombination:n,description:l,aliases:o}):null},tn="edit-post/keyboard-shortcut-help",nn=e=>{let{shortcuts:t}=e;return(0,s.createElement)("ul",{className:"edit-post-keyboard-shortcut-help-modal__shortcut-list",role:"list"},t.map(((e,t)=>(0,s.createElement)("li",{className:"edit-post-keyboard-shortcut-help-modal__shortcut",key:t},"string"==typeof e?(0,s.createElement)(en,{name:e}):(0,s.createElement)(Jt,e)))))},ln=e=>{let{title:t,shortcuts:n,className:l}=e;return(0,s.createElement)("section",{className:L()("edit-post-keyboard-shortcut-help-modal__section",l)},!!t&&(0,s.createElement)("h2",{className:"edit-post-keyboard-shortcut-help-modal__section-title"},t),(0,s.createElement)(nn,{shortcuts:n}))},on=e=>{let{title:t,categoryName:n,additionalShortcuts:l=[]}=e;const o=(0,c.useSelect)((e=>e(zt.store).getCategoryShortcuts(n)),[n]);return(0,s.createElement)(ln,{title:t,shortcuts:o.concat(l)})},an=(0,b.compose)([(0,c.withSelect)((e=>({isModalActive:e(Dt).isModalActive(tn)}))),(0,c.withDispatch)(((e,t)=>{let{isModalActive:n}=t;const{openModal:l,closeModal:o}=e(Dt);return{toggleModal:()=>n?o():l(tn)}}))])((function(e){let{isModalActive:t,toggleModal:n}=e;return(0,zt.useShortcut)("core/edit-post/keyboard-shortcuts",n),t?(0,s.createElement)(h.Modal,{className:"edit-post-keyboard-shortcut-help-modal",title:(0,_.__)("Keyboard shortcuts"),closeLabel:(0,_.__)("Close"),onRequestClose:n},(0,s.createElement)(ln,{className:"edit-post-keyboard-shortcut-help-modal__main-shortcuts",shortcuts:["core/edit-post/keyboard-shortcuts"]}),(0,s.createElement)(on,{title:(0,_.__)("Global shortcuts"),categoryName:"global"}),(0,s.createElement)(on,{title:(0,_.__)("Selection shortcuts"),categoryName:"selection"}),(0,s.createElement)(on,{title:(0,_.__)("Block shortcuts"),categoryName:"block",additionalShortcuts:[{keyCombination:{character:"/"},description:(0,_.__)("Change the block type after adding a new paragraph."),
|
20 |
/* translators: The forward-slash character. e.g. '/'. */
|
21 |
ariaLabel:(0,_.__)("Forward-slash")}]}),(0,s.createElement)(ln,{title:(0,_.__)("Text formatting"),shortcuts:Qt})):null}));function sn(e){let{willEnable:t}=e;const[n,l]=(0,s.useState)(!1);return(0,s.createElement)(s.Fragment,null,(0,s.createElement)("p",{className:"edit-post-preferences-modal__custom-fields-confirmation-message"},(0,_.__)("A page reload is required for this change. Make sure your content is saved before reloading.")),(0,s.createElement)(h.Button,{className:"edit-post-preferences-modal__custom-fields-confirmation-button",variant:"secondary",isBusy:n,disabled:n,onClick:()=>{l(!0),document.getElementById("toggle-custom-fields-form").submit()}},t?(0,_.__)("Enable & Reload"):(0,_.__)("Disable & Reload")))}const rn=(0,c.withSelect)((e=>({areCustomFieldsEnabled:!!e(T.store).getEditorSettings().enableCustomFields})))((function(e){let{label:t,areCustomFieldsEnabled:n}=e;const[l,o]=(0,s.useState)(n);return(0,s.createElement)(Pe,{label:t,isChecked:l,onChange:o},l!==n&&(0,s.createElement)(sn,{willEnable:l}))})),cn=(0,b.compose)((0,c.withSelect)(((e,t)=>{let{panelName:n}=t;const{isEditorPanelEnabled:l,isEditorPanelRemoved:o}=e(Dt);return{isRemoved:o(n),isChecked:l(n)}})),(0,b.ifCondition)((e=>{let{isRemoved:t}=e;return!t})),(0,c.withDispatch)(((e,t)=>{let{panelName:n}=t;return{onChange:()=>e(Dt).toggleEditorPanelEnabled(n)}})))(Pe),{Fill:dn,Slot:un}=(0,h.createSlotFill)("EnablePluginDocumentSettingPanelOption"),mn=e=>{let{label:t,panelName:n}=e;return(0,s.createElement)(dn,null,(0,s.createElement)(cn,{label:t,panelName:n}))};mn.Slot=un;const pn=mn,gn=(0,b.compose)((0,c.withSelect)((e=>({isChecked:e(T.store).isPublishSidebarEnabled()}))),(0,c.withDispatch)((e=>{const{enablePublishSidebar:t,disablePublishSidebar:n}=e(T.store);return{onChange:e=>e?t():n()}})),(0,F.ifViewportMatches)("medium"))(Pe),hn=(0,b.compose)((0,c.withSelect)(((e,t)=>{let{featureName:n}=t;const{isFeatureActive:l}=e(Dt);return{isChecked:l(n)}})),(0,c.withDispatch)(((e,t)=>{let{featureName:n}=t;return{onChange:()=>e(Dt).toggleFeature(n)}})))(Pe),En=(0,c.withSelect)((e=>{const{getEditorSettings:t}=e(T.store),{getAllMetaBoxes:n}=e(Dt);return{areCustomFieldsRegistered:void 0!==t().enableCustomFields,metaBoxes:n()}}))((function(e){let{areCustomFieldsRegistered:t,metaBoxes:n,...l}=e;const o=(0,g.filter)(n,(e=>{let{id:t}=e;return"postcustom"!==t}));return t||0!==o.length?(0,s.createElement)(ke,l,t&&(0,s.createElement)(rn,{label:(0,_.__)("Custom fields")}),(0,g.map)(o,(e=>{let{id:t,title:n}=e;return(0,s.createElement)(cn,{key:t,label:n,panelName:`meta-box-${t}`})}))):null})),bn=function(e){let{blockTypes:t,value:n,onItemChange:l}=e;return(0,s.createElement)("ul",{className:"edit-post-block-manager__checklist"},t.map((e=>(0,s.createElement)("li",{key:e.name,className:"edit-post-block-manager__checklist-item"},(0,s.createElement)(h.CheckboxControl,{label:(0,s.createElement)(s.Fragment,null,e.title,(0,s.createElement)(E.BlockIcon,{icon:e.icon})),checked:n.includes(e.name),onChange:(0,g.partial)(l,e.name)})))))},fn=function e(t){let{title:n,blockTypes:l}=t;const o=(0,b.useInstanceId)(e),{defaultAllowedBlockTypes:a,hiddenBlockTypes:r}=(0,c.useSelect)((e=>{const{getEditorSettings:t}=e(T.store),{getHiddenBlockTypes:n}=e(Dt);return{defaultAllowedBlockTypes:t().defaultAllowedBlockTypes,hiddenBlockTypes:n()}}),[]),i=(0,s.useMemo)((()=>!0===a?l:l.filter((e=>{let{name:t}=e;return(0,g.includes)(a||[],t)}))),[a,l]),{showBlockTypes:d,hideBlockTypes:u}=(0,c.useDispatch)(Dt),m=(0,s.useCallback)(((e,t)=>{t?d(e):u(e)}),[]),p=(0,s.useCallback)((e=>{const t=(0,g.map)(l,"name");e?d(t):u(t)}),[l]);if(!i.length)return null;const E=(0,g.without)((0,g.map)(i,"name"),...r),_="edit-post-block-manager__category-title-"+o,f=E.length===i.length;let v;return v=f?"true":E.length>0?"mixed":"false",(0,s.createElement)("div",{role:"group","aria-labelledby":_,className:"edit-post-block-manager__category"},(0,s.createElement)(h.CheckboxControl,{checked:f,onChange:p,className:"edit-post-block-manager__category-title","aria-checked":v,label:(0,s.createElement)("span",{id:_},n)}),(0,s.createElement)(bn,{blockTypes:i,value:E,onItemChange:m}))},vn=(0,c.withSelect)((e=>{const{getBlockTypes:t,getCategories:n,hasBlockSupport:l,isMatchingSearchTerm:o}=e(r.store),{getHiddenBlockTypes:a}=e(Dt),s=t(),i=a().filter((e=>s.some((t=>t.name===e)))),c=Array.isArray(i)&&i.length;return{blockTypes:s,categories:n(),hasBlockSupport:l,isMatchingSearchTerm:o,numberOfHiddenBlocks:c}}))((function(e){let{blockTypes:t,categories:n,hasBlockSupport:l,isMatchingSearchTerm:o,numberOfHiddenBlocks:a}=e;const r=(0,b.useDebounce)(Te.speak,500),[i,c]=(0,s.useState)("");return t=t.filter((e=>l(e,"inserter",!0)&&(!i||o(e,i))&&(!e.parent||(0,g.includes)(e.parent,"core/post-content")))),(0,s.useEffect)((()=>{if(!i)return;const e=t.length,n=(0,_.sprintf)(
|
22 |
/* translators: %d: number of results. */
|
build/edit-post/index.min.js.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"file":"./build/edit-post/index.min.js","mappings":"0BAAA,OAOC,WACA,aAEA,IAAIA,EAAS,GAAGC,eAEhB,SAASC,IAGR,IAFA,IAAIC,EAAU,GAELC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAC1C,IAAIG,EAAMF,UAAUD,GACpB,GAAKG,EAAL,CAEA,IAAIC,SAAiBD,EAErB,GAAgB,WAAZC,GAAoC,WAAZA,EAC3BL,EAAQM,KAAKF,QACP,GAAIG,MAAMC,QAAQJ,IACxB,GAAIA,EAAID,OAAQ,CACf,IAAIM,EAAQV,EAAWW,MAAM,KAAMN,GAC/BK,GACHT,EAAQM,KAAKG,SAGT,GAAgB,WAAZJ,EACV,GAAID,EAAIO,WAAaC,OAAOC,UAAUF,SACrC,IAAK,IAAIG,KAAOV,EACXP,EAAOkB,KAAKX,EAAKU,IAAQV,EAAIU,IAChCd,EAAQM,KAAKQ,QAIfd,EAAQM,KAAKF,EAAIO,aAKpB,OAAOX,EAAQgB,KAAK,KAGgBC,EAAOC,SAC3CnB,EAAWoB,QAAUpB,EACrBkB,EAAOC,QAAUnB,QAKhB,KAFwB,EAAF,WACtB,OAAOA,GACP,QAFoB,OAEpB,aA9CH,KCNIqB,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaL,QAGrB,IAAID,EAASG,EAAyBE,GAAY,CAGjDJ,QAAS,IAOV,OAHAO,EAAoBH,GAAUL,EAAQA,EAAOC,QAASG,GAG/CJ,EAAOC,QCpBfG,EAAoBK,EAAKT,IACxB,IAAIU,EAASV,GAAUA,EAAOW,WAC7B,IAAOX,EAAiB,QACxB,IAAM,EAEP,OADAI,EAAoBQ,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLRN,EAAoBQ,EAAI,CAACX,EAASa,KACjC,IAAI,IAAIjB,KAAOiB,EACXV,EAAoBW,EAAED,EAAYjB,KAASO,EAAoBW,EAAEd,EAASJ,IAC5EF,OAAOqB,eAAef,EAASJ,EAAK,CAAEoB,YAAY,EAAMC,IAAKJ,EAAWjB,MCJ3EO,EAAoBW,EAAI,CAACI,EAAKC,IAAUzB,OAAOC,UAAUf,eAAeiB,KAAKqB,EAAKC,GCClFhB,EAAoBiB,EAAKpB,IACH,oBAAXqB,QAA0BA,OAAOC,aAC1C5B,OAAOqB,eAAef,EAASqB,OAAOC,YAAa,CAAEC,MAAO,WAE7D7B,OAAOqB,eAAef,EAAS,aAAc,CAAEuB,OAAO,K,yxECLvD,MAAM,EAA+BC,OAAW,GAAW,QCArD,EAA+BA,OAAW,GAAU,OCApD,EAA+BA,OAAW,GAAgB,aCA1D,EAA+BA,OAAW,GAAQ,KCAlD,EAA+BA,OAAW,GAAS,MCAnD,EAA+BA,OAAW,GAAe,YCAzD,EAA+BA,OAAW,GAAc,WCA/C,SAASC,IAetB,OAdAA,EAAW/B,OAAOgC,QAAU,SAAUC,GACpC,IAAK,IAAI5C,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAI6C,EAAS5C,UAAUD,GAEvB,IAAK,IAAIa,KAAOgC,EACVlC,OAAOC,UAAUf,eAAeiB,KAAK+B,EAAQhC,KAC/C+B,EAAO/B,GAAOgC,EAAOhC,IAK3B,OAAO+B,IAGOnC,MAAMqC,KAAM7C,YCP9B8C,EAAAA,EAAAA,WACC,qBACA,uCAJ0B,IAAMC,EAAAA,cCNjC,MAAM,EAA+BP,OAAe,OCA9C,EAA+BA,OAAW,GAAc,WCAxD,EAA+BA,OAAW,GAAe,YCAzD,EAA+BA,OAAW,GAAQ,KCAlD,EAA+BA,OAAW,GAAW,QCsBrDQ,GAAUC,EAAAA,EAAAA,UAYfC,EAAAA,EAAAA,aAAY,CAAEC,EAAQC,KAKrB,IAJiBC,EAAAA,EAAAA,iBAAiBD,EAAME,KAAM,YAAY,GAKzD,MAAO,GAKR,MAAMC,EAASJ,EAAQK,EAAAA,OAAmBC,YACpCC,GAAkBC,EAAAA,EAAAA,MACvBJ,GACA,QAAE,KAAED,GAAJ,SAAgBF,EAAME,OAASA,KAIhC,MAAO,CACNM,sBAFAF,GAAmBA,EAAgBG,WAAaT,EAAMS,UAElBH,EAAgBG,cAGtDC,EAAAA,EAAAA,eAAc,CAAEC,EAAF,SAAY,sBAAEH,GAAd,QAA6C,CAC1DI,YAAa,IACZD,EAAUP,EAAAA,OAAmBS,YAAaL,QAIvCM,GAAyBC,EAAAA,EAAAA,6BAA8BC,GACrDpB,GAAS,IAAwD,IAAtD,sBAAEY,EAAF,YAAyBI,KAAgBK,GAAa,EACvE,IAAOT,EACN,OAAO,mBAACQ,EAAeC,GAGxB,MAAMC,GAAYC,EAAAA,EAAAA,cAAcF,EAAMf,MAChCkB,EAwDR,SAA0BC,GAEzB,MAAMC,GAAYC,EAAAA,EAAAA,gBACjBC,EAAAA,EAAAA,oBAAoB,KAAMH,IAC1B,QAAE,KAAEI,EAAF,OAAQtB,GAAV,QAAiC,UAATsB,GAAsC,IAAlBtB,EAAOtD,UAGpD,OAAOyE,GAIAH,EAAAA,EAAAA,cAAcG,EAAUnB,OAAQ,IAH/B,KAhEcuB,CAAiBT,EAAMf,MAE5C,MAAO,EACN,0BAAK1C,IAAI,kBAAkBmE,MAAQ,CAAEC,UAAW,UAC/C,mBAACZ,EAAD,GAAWxD,IAAI,cAAkByD,MAElC,mBAAC,EAAAY,QAAD,CACCrE,IAAI,uBACJsE,QAAU,EACT,mBAAC,EAAAC,OAAD,CACCvE,IAAI,gBACJwE,QAAQ,YACRC,QAAUrB,IAERsB,EAAAA,EAAAA,IAAI,mBAEP,mBAAC,EAAAH,OAAD,CACCvE,IAAI,SACJwE,QAAQ,YACRC,QAAU,IAAMhB,EAAMkB,UAAW,MAE/BD,EAAAA,EAAAA,IAAI,WAEPd,IACC,mBAAC,EAAAW,OAAD,CACCvE,IAAI,YACJwE,QAAQ,YACRC,QAAU,IACThB,EAAMkB,WACLC,EAAAA,EAAAA,aACChB,EAAalB,KACbe,EAAMoB,eAKPH,EAAAA,EAAAA,IAAI,mBAZP,IAY+Bd,EAAakB,UAK9C,iCAAUpB,MAAAA,OAAV,EAAUA,EAAWoB,MAArB,OACEJ,EAAAA,EAAAA,IAAI,2CAIP,2BAwBHxC,EAAAA,EAAAA,WACC,mBACA,gEACAoB,GC9ID,MAAM,EAA+B1B,OAAW,GAAc,WCW9D,GALC,mBAAC,EAAAmD,IAAD,CAAKC,MAAM,6BAA6BC,QAAQ,cAC/C,mBAAC,EAAAC,KAAD,CAAMnE,EAAE,sOCPJ,EAA+Ba,OAAW,GAAW,QCArD,EAA+BA,OAAW,GAAO,ICAjD,EAA+BA,OAAW,GAAW,QCArD,EAA+BA,OAAW,GAAU,OCU3C,SAASuD,IACvB,MAAM,aAAEC,IAAiBC,EAAAA,EAAAA,aAAaC,EAAAA,OAChCC,GAAUC,EAAAA,EAAAA,YACbjD,GAAY,IACbA,EAAQkD,EAAAA,OAAcC,uBAAwB,YAC/C,IAUKC,GAAMC,EAAAA,EAAAA,oBAAoBL,GAPhC,WACCH,EAAc,QAAQV,EAAAA,EAAAA,IAAI,uBAAyB,CAClDmB,eAAe,EACf5B,KAAM,gBAMR,OAAO,mBAAC,EAAA6B,SAAD,CAAUH,IAAMA,IAAQjB,EAAAA,EAAAA,IAAI,oBC3BpC,MAAM,EAA+B9C,OAAW,GAAY,SCwLtDmE,GAAYC,EAAAA,EAAAA,iBAAiB,CAClCC,SAnHM,WAAoD,IAAxBC,EAAwB,wDAATC,EAAS,uCAC1D,OAASA,EAAOlC,MACf,IAAK,2BACJ,OAAO,EACR,IAAK,2BACL,IAAK,2BACJ,OAAO,EACR,QACC,OAAOiC,IA4GTE,UAhGM,WAAgD,IAArBF,EAAqB,uDAAb,GAAIC,EAAS,uCACtD,OAASA,EAAOlC,MACf,IAAK,+BACJ,OAAOkC,EAAOE,qBAGhB,OAAOH,GA2FPI,YAXD,WAAuD,IAAxBJ,EAAwB,wDAATC,EAAS,uCACtD,OAASA,EAAOlC,MACf,IAAK,yBACJ,OAAO,EAET,OAAOiC,KASR,GAAeF,EAAAA,EAAAA,iBAAiB,CAC/BO,YA1JM,WAA6C,IAAvBL,EAAuB,uDAAf,KAAMC,EAAS,uCACnD,OAASA,EAAOlC,MACf,IAAK,aACJ,OAAOkC,EAAOzD,KACf,IAAK,cACJ,OAAO,KAGT,OAAOwD,GAmJPH,UAAAA,EACAS,qBAjJM,WAAuD,IAAxBN,EAAwB,wDAATC,EAAS,uCAC7D,OAASA,EAAOlC,MACf,IAAK,uBACJ,OAAO,EACR,IAAK,wBACJ,OAAO,EACR,IAAK,yBACJ,OAASiC,EAEX,OAAOA,GAyIPO,cAhLM,WAA6C,IAArBP,EAAqB,uDAAb,GAAIC,EAAS,uCACnD,OAASA,EAAOlC,MACf,IAAK,eACJ,KAAOyC,EAAAA,EAAAA,UAAUR,EAAOC,EAAOQ,WAC9B,MAAO,IAAKT,EAAOC,EAAOQ,WAI7B,OAAOT,GAyKPU,WAxFM,WAAiD,IAA5BV,EAA4B,uDAApB,UAAWC,EAAS,uCACvD,OAASA,EAAOlC,MACf,IAAK,0BACJ,OAAOkC,EAAOS,WAGhB,OAAOV,GAmFPW,mBAvEM,WAAqD,IAAxBX,EAAwB,wDAATC,EAAS,uCAC3D,OAASA,EAAOlC,MACf,IAAK,0BACJ,OAAOkC,EAAOW,QAAiBZ,EAChC,IAAK,yBACJ,OAAOC,EAAOxE,MAEhB,OAAOuE,GAiEPa,cArDM,WAAgD,IAAxBb,EAAwB,wDAATC,EAAS,uCACtD,OAASA,EAAOlC,MACf,IAAK,yBACJ,OAAOkC,EAAOxE,OAAgBuE,EAC/B,IAAK,0BACJ,OAAOC,EAAOW,OAEhB,OAAOZ,GA+CPc,kBAtCD,WAAoD,IAAxBd,EAAwB,wDAATC,EAAS,uCACnD,OAASA,EAAOlC,MACf,IAAK,0BACJ,OAAOkC,EAAOxE,MAEhB,OAAOuE,KCrKF,EAA+BtE,OAAW,GAAY,S,gCCK5D,MAMA,GALC,mBAAC,EAAAmD,IAAD,CAAKC,MAAM,6BAA6BC,QAAQ,cAC/C,mBAAC,EAAAC,KAAD,CAAMnE,EAAE,uDCIV,GALC,mBAAC,EAAAgE,IAAD,CAAKC,MAAM,6BAA6BC,QAAQ,cAC/C,mBAAC,EAAAC,KAAD,CAAMnE,EAAE,qVCQV,GATC,mBAAC,EAAAgE,IAAD,CAAKC,MAAM,6BAA6BC,QAAQ,cAC/C,mBAAC,EAAAC,KAAD,CACC+B,SAAS,UACTlG,EAAE,+jBACFmG,SAAS,aCVN,EAA+BtF,OAAW,GAAY,SCW5D,GALC,mBAAC,EAAAmD,IAAD,CAAKC,MAAM,6BAA6BC,QAAQ,cAC/C,mBAAC,EAAAC,KAAD,CAAMnE,EAAE,qJCPJ,EAA+Ba,OAAW,GAAc,W,aCcvD,MAAMuF,EAA8B,CAAEC,EAAOC,KAAT,CAC1CpD,KAAM,iCACNmD,MAAAA,EACAC,KAAAA,IASYC,EACZ,CAAEF,EAAOC,IACT,IAA8B,IAA5B,SAAEE,EAAF,SAAYpE,GAAgB,EAEtBkE,IAI4BE,EACjChF,OAAQiF,EAAAA,OACRnG,IAAK+F,EAAO,+BAGbG,EACEpE,SAAUqE,EAAAA,OACVC,IAAKL,EAAO,8BAA8B,GAG7CjE,EAAU,CACTc,KAAM,4BACNmD,MAAAA,EACAC,KAAAA,MASUK,EACVN,GACF,IAAoB,IAAlB,SAAEG,GAAgB,EACgBA,EACjChF,OAAQiF,EAAAA,OACRnG,IAAK+F,EAAO,+BAGbG,EACEpE,SAAUqE,EAAAA,OACVC,IAAKL,EAAO,8BAA8B,IAYlCO,EACZ,CAAEP,EAAOQ,IACT,IAAoB,IAAlB,SAAEL,GAAgB,EAEnB,IAAOK,EACN,OAGD,MAAMC,EAAcN,EAClBhF,OAAQiF,EAAAA,OACRnG,IAAK+F,EAAO,gBAGiB,KAA1BS,MAAAA,OAAA,EAAAA,EAAeD,KAIpBL,EAASpE,SAAUqE,EAAAA,OAAmBC,IAAKL,EAAO,cAAe,IAC7DS,EACH,CAAED,IAAQ,KAUAE,EACZ,CAAEV,EAAOQ,IACT,IAAoB,IAAlB,SAAEL,GAAgB,EAEnB,IAAOK,EACN,OAGD,MAAMC,EAAcN,EAClBhF,OAAQiF,EAAAA,OACRnG,IAAK+F,EAAO,eAEdG,EAASpE,SAAUqE,EAAAA,OAAmBC,IAAKL,EAAO,cAAe,IAC7DS,EACH,CAAED,IAAQ,KAUN,SAASG,EAAeX,EAAOY,GACrC,OAAO,SAAU,GAAgB,IAAf,SAAET,GAAa,EAChCU,GAAAA,CAAa,6CAA6C,CACzDC,MAAO,MACPC,YAAc,0CAGfZ,EAASpE,SAAUqE,EAAAA,OAAmBY,OAAQhB,EAAOY,IAchD,SAASK,EAAiBjB,EAAOY,EAAarG,GACpD,OAAO,SAAU,GAAgB,IAAf,SAAE4F,GAAa,EAChCU,GAAAA,CAAa,+CAA+C,CAC3DC,MAAO,MACPC,YAAc,uCAGfZ,EACEpE,SAAUqE,EAAAA,OACVC,IAAKL,EAAOY,IAAgBrG,IAYzB,SAAS2G,EAAoBlB,EAAOmB,GAC1C,OAAO,SAAU,GAAgB,IAAf,SAAEhB,GAAa,EAChCU,GAAAA,CAAa,kDAAkD,CAC9DC,MAAO,MACPC,YAAc,+CAGfZ,EAASpE,SAAUqE,EAAAA,OAAmBgB,YAAapB,EAAOmB,ICrKrD,MAAME,GAA6BC,EAAAA,EAAAA,yBACvCnG,GAAY,CAAE2D,EAAOkB,KAAW,MACjC,MAAMuB,EAA6BpG,EAAQiF,EAAAA,OAAmBnG,IAC7D+F,EACA,8BAMD,QAAoC1G,IAA/BiI,EAKL,OAAOA,EAIAzC,MAAAA,GAAP,UAAOA,EAAO0C,0BAAd,aAAO,EAA6BxB,GAH5B,QAgBGyB,GAAeH,EAAAA,EAAAA,yBACzBnG,GAAY,CAAE2D,EAAOkB,EAAOQ,KAAU,MACvC,MAAMC,EAActF,EAAQiF,EAAAA,OAAmBnG,IAC9C+F,EACA,eAED,iBAAOS,MAAAA,OAAP,EAAOA,EAAeD,UAAtB,YAcWkB,GAAkBJ,EAAAA,EAAAA,yBAC5BnG,GAAY,CAAE2D,EAAOkB,EAAOY,KAC7BC,GAAAA,CACE,mEACD,CACCC,MAAO,MACPC,YAAc,6DAIN5F,EAAQiF,EAAAA,OAAmBnG,IAAK+F,EAAOY,MC7CnD,GAAehC,EAAAA,EAAAA,iBAAiB,CAC/B4C,mBA5BM,WAAkD,IAArB1C,EAAqB,uDAAb,GAAIC,EAAS,uCACxD,OAASA,EAAOlC,MACf,IAAK,iCAAkC,CACtC,MAAM,MAAEmD,EAAF,KAASC,GAASlB,EAGxB,OAAKD,EAAOkB,GACJlB,EAGD,IACHA,EACH,CAAEkB,GAASC,GAGb,IAAK,4BAA6B,CACjC,MAAM,MAAED,EAAF,KAASC,GAASlB,EACxB,MAAO,IACHD,EACH,CAAEkB,GAASC,IAKd,OAAOnB,KCTK6C,IAAQC,EAAAA,EAAAA,kBCfK,iBDeyB,CAClDC,QADkD,EAElD3E,QAFkD,EAGlD4E,UAASA,KAKVC,EAAAA,EAAAA,UAAUJ,IEvBV,UAAeK,EAAAA,EAAAA,oBAAmB,CAAEC,EAASC,KACrC,CACNC,KAAMD,EAASC,MAAQF,EAAQE,KAC/BC,WACCF,EAASE,YAAe,GAAGH,EAAQ3G,QAAU4G,EAAS5G,WCoCzD,GAAe+G,IAjCf,YAQI,IAR8B,GACjCC,EAAKnF,EAAAA,OAD4B,MAEjC6C,EAFiC,WAGjCoC,EAHiC,KAIjCD,EAJiC,aAKjCI,EALiC,KAMjCjH,KACGe,GACA,EACH,MAAMmG,EAAiBF,EACjBG,GAAarE,EAAAA,EAAAA,YAChBjD,GACDA,EAAQuH,IAAiBrB,2BAA4BrB,KACrDoC,GACD,CAAEA,KAEG,wBAAElC,EAAF,yBAA2BI,IAChCrC,EAAAA,EAAAA,aAAayE,IACd,OACC,mBAACF,EAAD,GACCL,KAAOI,GAAgBE,EAAaF,EAAeJ,EACnD9E,QAAU,KACJoF,EACJnC,EAA0BN,GAE1BE,EAAyBF,EAAOoC,KAG7B/F,OCSR,GAlCgC,IAKzB,IAL2B,iBACjCsG,EADiC,SAEjCC,EAFiC,UAGjCC,EAHiC,kBAIjCC,GACM,EACN,MAAMC,GACL,mBAAC,GAAD,GAAyBZ,KAAOa,GAAkBF,IAEnD,OACC,oCACC,0BAAKD,UAAU,uEACZF,IACD,2BAAME,UAAU,oDACbF,GAGFI,IAEH,0BACCF,UAAYI,GAAAA,CACX,2BACA,sCACAJ,GAEDK,UAAY,GAEVN,EACAG,KCrCAI,GAAO,OAsDb,SAASC,GAAT,GAA2E,IAAtD,KAAE9H,EAAMgH,GAAIe,EAAYlG,EAAAA,OAAxB,QAAgCE,KAAYhB,GAAU,EAC1E,OACC,mBAAC,EAAAiH,KAAD,CAAMhI,KAAOA,IACV,IAA8B,IAA1B+B,QAASkG,GAAiB,EAC/B,OACC,mBAACF,EAAD,GACChG,QACCA,GAAWkG,EACR,YACElG,GAAW8F,OAAW,YACtBI,GAAaJ,OAAW,iBAE1B7J,GAEC+C,OAQX+G,GAAWI,KA1EX,YAMI,IANqB,KACxBlI,EACAgH,GAAIe,EAAYI,EAAAA,YAFQ,UAGxBC,EAAY,GAHY,iBAIxBC,KACGtH,GACA,EACH,OACC,mBAAC,EAAAmH,KAAD,CACClI,KAAOA,EACPqI,iBAAmBA,EACnBD,UAAYA,IAERE,IACH,IAAOC,EAAAA,SAAAA,QAAkBD,GAAQ3L,OAChC,OAAO,KAQR,MAAM6L,EAAuB,GAC7BD,EAAAA,SAAAA,QACCD,GACA,IAEO,IADNvH,OAAO,2BAAE0H,EAAF,iBAA8BC,IAC/B,EACDA,GAAoBD,GACxBD,EAAqB1L,KAAM4L,MAI9B,MAAMpB,EAAWiB,EAAAA,SAAAA,IAAcD,GAASK,IAEpCA,EAAM5H,MAAM0H,4BACdD,EAAqBxE,SACpB2E,EAAM5H,MAAM2H,kBAGN,KAEDC,IAGR,OAAO,mBAACZ,EAAehH,EAAUuG,OA8BrC,YCxEMsB,GAAkB,QAAE,2BAIzBH,EAJyB,iBAKzBC,KACGG,GANoB,SAOjB,mBAAC,EAAAzF,SAAcyF,IAEP,SAASC,GAAT,GAKX,IALmD,MACtDpE,EADsD,OAEtDrF,EAFsD,2BAGtDoJ,KACG1H,GACA,EACH,OACC,mBAAC,GAAD,GACCiG,GAAO+B,IAEL,mBAAC,GAAD,GACCN,2BACCA,EAEDC,iBAAoB,GAAGhE,KAAWrF,IAClC2H,GAAK4B,GACL5I,KAAQ,GAAG0E,sBACNqE,IAIRC,KAAK,mBACL/B,aAAegC,EACfjJ,KAAOX,EACPqF,MAAQA,GACH3D,ICpCR,SAASmI,GAAT,GAA4C,IAAtB,MAAExE,KAAU3D,GAAU,EAC3C,OAAO,mBAAC,EAAAiH,KAAD,GAAMhI,KAAQ,eAAe0E,KAAgB3D,IAsBrDmI,GAAYhB,KAnBZ,YAA2D,IAAjC,MAAExD,EAAF,UAAS6C,KAAcxG,GAAU,EAC1D,OACC,mBAAC,EAAAmH,KAAD,GAAMlI,KAAQ,eAAe0E,KAAgB3D,IACxCuH,IACHA,MAAAA,OAAA,EAAAA,EAAO3L,QAAS,IACf,0BACC4K,UAAYI,GAAAA,CACXJ,EACA,2BAGCe,MAUR,YCNA,SAASa,GAAT,GAAiE,IAAjC,MAAEzE,EAAF,SAAS4C,EAAT,UAAmBC,GAAc,EAChE,OACC,mBAAC,EAAAS,KAAD,CAAMhI,KAAQ,qBAAqB0E,MAClC,0BAAK6C,UAAYA,GAAcD,IAyLlC,MAAM8B,GACLC,IAzID,YAiBI,IAjBwB,SAC3B/B,EAD2B,UAE3BC,EAF2B,WAG3B+B,GAAatH,EAAAA,EAAAA,IAAI,gBAHU,WAI3B8E,EAJ2B,OAK3ByC,EAL2B,gBAM3BC,EAN2B,KAO3B3C,EAP2B,WAQ3B4C,GAAa,EARc,eAS3BC,EAT2B,MAU3BhF,EAV2B,KAW3B1E,EAX2B,iBAY3BqH,EAZ2B,MAa3BjF,EAb2B,eAc3BuH,EAd2B,kBAe3BC,EAf2B,eAgB3BC,GAAiB,GACd,EACH,MAAM,SAAEC,EAAF,SAAYC,EAAZ,WAAsBC,EAAtB,QAAkCC,EAAlC,QAA2CC,IAAYpH,EAAAA,EAAAA,YAC1DjD,IACD,MAAM,2BAAEkG,EAAF,aAA8BI,GACnCtG,EAAQuH,IACH+C,EAAcpE,EAA4BrB,GAChD,MAAO,CACNoF,SAAUK,IAAgBrD,EAC1BiD,SAAU5D,EAAczB,EAAOoC,GAC/BkD,WAAYG,EACZF,QAASpK,EAAQuK,EAAAA,OAAgBC,gBAAiB,YAClDH,QAASrK,EAAQuK,EAAAA,OAAgBC,gBAAiB,YAGpD,CAAEvD,EAAYpC,KA3EhB,SACCA,EACAoC,EACAkD,EACAF,EACAG,GAEA,MAAMK,GAAkBC,EAAAA,EAAAA,SAAQ,GAC1BC,GAAyBD,EAAAA,EAAAA,SAAQ,IACjC,wBAAE3F,EAAF,yBAA2BI,IAChCrC,EAAAA,EAAAA,aAAayE,KACdqD,EAAAA,EAAAA,YAAW,KAELX,GAAYG,IAAaK,EAAgBI,SAE7C1F,EAA0BN,GAE1B8F,EAAuBE,SAAU,GAIjCF,EAAuBE,UACrBT,GACFK,EAAgBI,SAGhBF,EAAuBE,SAAU,EAEjC9F,EAAyBF,EAAOoC,IAIhC0D,EAAuBE,SACvBV,GACAA,IAAelD,IAEf0D,EAAuBE,SAAU,GAE7BT,IAAYK,EAAgBI,UAChCJ,EAAgBI,QAAUT,KAEzB,CAAEH,EAAUG,EAASvF,EAAOoC,EAAYkD,IAoC3CW,CACCjG,EACAoC,EACAkD,EACAF,EACAG,GAED,MAAM,wBACLrF,EADK,yBAELI,EAFK,QAGLC,EAHK,UAILG,IACGzC,EAAAA,EAAAA,aAAayE,IAQjB,OANAqD,EAAAA,EAAAA,YAAW,KACLb,QAAoC5L,IAAfgM,IAA8BC,GACvDrF,EAAyBF,EAAOoC,KAE/B,CAAEkD,EAAYJ,EAAmBlF,EAAOoC,EAAYmD,KAGtD,mCACGR,IACD,mBAAC,GAAD,CAAa/E,MAAQA,GAClBqF,IACD,mBAAC,GAAD,CACCrF,MAAQA,EACRoC,WAAaA,EACb8D,UACCd,KAAgBD,GAAkBK,GAEnC,gBAAgBJ,EAChBe,MAAQzI,EACRyE,KAAOgD,EAAiBZ,EAAQpC,EAChCiE,aAAgBjB,EAChB/H,QAAU+H,EAAiB,gBAAa7L,KAK1CgC,GAAQyJ,IACT,mBAACX,GAAD,CACCzJ,OAASW,EACT0E,MAAQA,EACRmC,KAAOA,GAELzE,GAGF0H,IACD,mBAACX,GAAD,CACC5B,UAAYI,GAAAA,CACX,+BACAJ,GAED7C,MAAQA,IAER,mBAAC,GAAD,CACC6C,UAAYiC,EACZF,WAAaA,EACbyB,QAAU,IAAM/F,EAA0BN,GAC1C2C,iBAAmBA,EACnBG,kBAAoB,CACnBqD,MAAOvB,EACP0B,SAAUrB,EACVjF,MAAAA,EACAoC,WAAAA,IAGCyC,IACD,oCACC,iCAAUnH,GACRqH,IACD,mBAAC,EAAA5H,OAAD,CACC0F,UAAU,+CACVV,KACCkD,EAAWkB,EAAaC,EAEzBL,MACCd,GACG/H,EAAAA,EAAAA,IAAI,uBACJA,EAAAA,EAAAA,IAAI,kBAERD,QAAU,KACPgI,EAAW3E,EAAYH,GACxBP,EACAoC,GAGF8D,UAAYb,EACZ,gBAAgBA,OAMrB,mBAAC,EAAAoB,MAAD,CAAO5D,UAAYmC,GAAmBpC,QAU3C8B,GAAyBlB,KAnMzB,YAAsD,IAAtB,MAAExD,KAAU3D,GAAU,EACrD,OAAO,mBAAC,EAAAmH,KAAD,GAAMlI,KAAQ,qBAAqB0E,KAAgB3D,KAoM3D,YCtLA,GAnCuB,IAAoB,IAAlB,SAAE+I,GAAgB,EAiC1C,OAhCAW,EAAAA,EAAAA,YAAW,KACV,IAAIW,GAAW,EAUf,OALKC,SAASC,KAAKC,UAAUC,SAAU,iBACtCJ,GAAW,EACXC,SAASC,KAAKC,UAAUE,OAAQ,gBAG1B,KACDL,GACJC,SAASC,KAAKC,UAAUG,IAAK,kBAG7B,KAEHjB,EAAAA,EAAAA,YAAW,KACLX,EACJuB,SAASC,KAAKC,UAAUG,IAAK,sBAE7BL,SAASC,KAAKC,UAAUE,OAAQ,sBAG1B,KACD3B,GACJuB,SAASC,KAAKC,UAAUE,OAAQ,yBAGhC,CAAE3B,IAEE,MCwHR,IAAe6B,EAAAA,EAAAA,aAnIf,WAcC1I,GACC,IAdD,OACC2I,EADD,OAECrC,EAFD,QAGCsC,EAHD,iBAICC,EAJD,QAKCC,EALD,QAMCC,EAND,OAOCC,EAPD,QAQCrK,EARD,OASCsK,EATD,UAUC3E,EAVD,UAWC4E,GAGA,EACD,MAAMC,GAAuBC,EAAAA,EAAAA,8BAAoBF,IA9BlD,SAAuB5E,IACtBkD,EAAAA,EAAAA,YAAW,KACV,MAAM6B,EACLjB,UAAYA,SAASkB,cAAgB,aAAahF,MACnD,GAAO+E,EAIP,OADAA,EAAQf,UAAU7F,OAAQ6B,GACnB,KACN+E,EAAQf,UAAU7F,OAAQ6B,MAEzB,CAAEA,IAqBLiF,CAAc,gDAEd,MAiBMC,EAAe;;AAfpBR,QAAQjK,EAAAA,EAAAA,IAAI;;AAEZuH,QAAQvH,EAAAA,EAAAA,IAAI;;AAEZsJ,MAAMtJ,EAAAA,EAAAA,IAAI;;AAEV8J,kBAAkB9J,EAAAA,EAAAA,IAAI;;AAEtB6J,SAAS7J,EAAAA,EAAAA,IAAI;;AAEbJ,SAASI,EAAAA,EAAAA,IAAI;;AAEb4J,QAAQ5J,EAAAA,EAAAA,IAAI,aAG+BkK,GAE5C,OACC,8BACME,EADN,CAECnJ,KAAMyJ,EAAAA,EAAAA,cAAc,CAAEzJ,EAAKmJ,EAAqBnJ,MAChDsE,UAAYI,GAAAA,CACXJ,EACA,+BACA6E,EAAqB7E,YAClBqE,GAAU,kBAGTK,IACJ,0BACC1E,UAAU,uCACVyB,KAAK,SACL,aAAayD,EAAaR,OAC1BrE,SAAS,MAEPqE,IAGJ,0BAAK1E,UAAU,0CACTgC,IACJ,0BACChC,UAAU,uCACVyB,KAAK,SACL,aAAayD,EAAalD,OAC1B3B,SAAS,MAEP2B,IAGJ,0BAAKhC,UAAU,wCACTuE,IACJ,0BACCvE,UAAU,kDACVyB,KAAK,SACL,aAAayD,EAAaX,iBAC1BlE,SAAS,MAEPkE,KAGCC,IACJ,0BAAKxE,UAAU,yCACZwE,IAGJ,0BACCxE,UAAU,wCACVyB,KAAK,SACL,aAAayD,EAAanB,KAC1B1D,SAAS,MAEPoE,KAEEH,IACJ,0BACCtE,UAAU,wCACVyB,KAAK,SACL,aAAayD,EAAaZ,QAC1BjE,SAAS,MAEPiE,KAGCjK,IACJ,0BACC2F,UAAU,wCACVyB,KAAK,SACL,aAAayD,EAAa7K,QAC1BgG,SAAS,MAEPhG,OAKDgK,IACJ,0BACCrE,UAAU,uCACVyB,KAAK,SACL,aAAayD,EAAab,OAC1BhE,SAAS,MAEPgE,OC5IP,IALC,mBAAC,EAAAvJ,IAAD,CAAKC,MAAM,6BAA6BC,QAAQ,cAC/C,mBAAC,EAAAC,KAAD,CAAMnE,EAAE,oDCKK,SAASsO,GAAT,GAQX,IAPH3F,GAAI4F,EAAoBC,EAAAA,aADiB,UAEzCtF,EAFyC;;AAIzCsD,GAAQ7I,EAAAA,EAAAA,IAAI,WAJ6B,aAKzC8K,EALyC,YAMzC/D,EANyC,SAOzCzB,GACG,EACH,OACC,mBAACsF,EAAD,CACCrF,UAAYI,GAAAA,CACX,+BACAJ,GAEDV,KAAOkG,GACPlC,MAAQA,EACRiC,aAAe,CACdE,SAAU,iBACPF,EACHvF,UAAWI,GAAAA,CACV,wCACAmF,MAAAA,OAFoB,EAEpBA,EAAcvF,YAGhBwB,YAAc,CACbkE,gBAAiB,YACdlE,KAGAgC,GAAazD,EAAUyD,KCpCf,SAASmC,GAAT,GAAsD,IAA3B,WAAEC,EAAF,SAAc7F,GAAa,EACpE,OACC,mBAAC,EAAA8F,MAAD,CACC7F,UAAU,8BACVnF,OAAQJ,EAAAA,EAAAA,IAAI,eACZsH,YAAatH,EAAAA,EAAAA,IAAI,SACjBqL,eAAiBF,GAEf7F,GCUL,SARA,YAA+C,IAAhC,KAAET,EAAF,KAAQyG,EAAO,MAAOvM,GAAU,EAC9C,OAAOwM,EAAAA,EAAAA,cAAc1G,EAAM,CAC1B2G,MAAOF,EACPG,OAAQH,KACLvM,KCTL,IALC,mBAAC,EAAAsB,IAAD,CAAKC,MAAM,6BAA6BC,QAAQ,cAC/C,mBAAC,EAAAC,KAAD,CAAMnE,EAAE,4CCIV,IALC,mBAAC,EAAAgE,IAAD,CAAKC,MAAM,6BAA6BC,QAAQ,cAC/C,mBAAC,EAAAC,KAAD,CAAMnE,EAAE,4CCiBJqP,GAAmB,mBAEV,SAASC,GAAT,GAA8C,IAAf,SAAEC,GAAa,EAC5D,MAAMC,GAAkBC,EAAAA,EAAAA,kBAAkB,WAIlCC,EAAYC,IAAkBC,EAAAA,EAAAA,UAAUP,KAM1C,KAAEQ,EAAF,mBAAQC,IAAuBC,EAAAA,EAAAA,UAAS,KAC7C,IAAIC,EAAa,CAChBH,KAAM,GACNC,mBAAoB,IAYrB,OAVKP,EAASjR,SACb0R,EAAaT,EAASU,QACrB,CAAEC,EAAF,KAAuD,IAAxC,KAAEvO,EAAMwO,SAAUpM,EAAlB,QAAyB4J,GAAe,EAGtD,OAFAuC,EAAYL,KAAKpR,KAAM,CAAEkD,KAAAA,EAAMoC,MAAAA,IAC/BmM,EAAYJ,mBAAoBnO,GAASgM,EAClCuC,IAER,CAAEL,KAAM,GAAIC,mBAAoB,MAG3BE,IACL,CAAET,IAECa,GAAgBC,EAAAA,EAAAA,cACnBC,GAASR,EAAoBQ,EAAI3O,OAAU,MAC7C,CAAEmO,IAGH,IAAIS,EA8FJ,OA3FCA,EADIf,GAEH,mBAAC,EAAAgB,SAAD,CACCtH,UAAU,8BACV2G,KAAOA,EACPY,eACCf,IAAeL,GAAmBK,OAAa/P,EAEhD+Q,SAAWf,EACXgB,YAAY,YAEVP,IAKH,mBAAC,kCAAD,CACCQ,YAAY,IACZ1H,UAAU,oCAEV,mBAAC,gCAAD,CAAiB2H,KAAK,MACrB,mBAAC,EAAAC,KAAD,CAAMC,cAAY,EAAC9B,KAAK,UACvB,mBAAC,EAAA+B,SAAD,MACC,mBAAC,0BAAD,KACGnB,EAAKoB,KAAOX,IAEZ,mBAAC,gCAAD,CACCrR,IAAMqR,EAAI3O,KACVkP,KAAOP,EAAI3O,KACXgH,GAAKuI,EAAAA,mBACLC,UAAQ,IAER,mBAAC,uBAAD,CAAQC,QAAQ,kBACf,mBAAC,EAAAC,SAAD,MACC,mBAAC,yBAAD,KACGf,EAAIvM,SAGR,mBAAC,EAAAsN,SAAD,MACC,mBAAC,GAAD,CACC7I,MACC8I,EAAAA,EAAAA,SACGC,GACAC,cAYZjC,EAASjR,QACViR,EAAS0B,KAAOQ,IAEd,mBAAC,gCAAD,CACCxS,IAAO,GAAGwS,EAAQ9P,YAClBkP,KAAOY,EAAQ9P,OAEf,mBAAC,EAAAmP,KAAD,CAAMC,cAAY,EAAC9B,KAAK,UACvB,mBAAC,EAAAyC,WAAD,CACCX,cAAe,EACfK,QAAQ,OACRnC,KAAK,QACL0C,IAAI,MAEJ,mBAAC,oCAAD,CACCnJ,MACC8I,EAAAA,EAAAA,SACGE,GACAD,GAEJ,cAAa5N,EAAAA,EAAAA,IACZ,oCAGF,mBAAC,qBAAD,CAAMsL,KAAK,MACRwC,EAAQtB,YAGZ,mBAAC,EAAAa,SAAD,KAAYS,EAAQ9D,cASrB4C,EC1JR,MAgBA,GAhBgB,QAAE,YAAEqB,EAAF,MAAe7N,EAAf,SAAsBkF,GAAxB,SACf,+BAAUC,UAAU,yCACnB,kCACC,yBAAIA,UAAU,8CACXnF,GAED6N,IACD,wBAAG1I,UAAU,oDACV0I,IAIH3I,ICOJ,GAdA,YAAsE,IAAjD,KAAE4I,EAAF,MAAQrF,EAAR,UAAesF,EAAf,SAA0BC,EAA1B,SAAoC9I,GAAa,EACrE,OACC,0BAAKC,UAAU,wCACd,mBAAC,EAAA8I,cAAD,CACCH,KAAOA,EACPrF,MAAQA,EACRyF,QAAUH,EACVC,SAAWA,IAEV9I,ICdC,GAA+BpI,OAAW,GAAQ,KCAlD,GAA+BA,OAAW,GAAY,SC6B/CqR,GACVvQ,GACF,QAAE,SAAE6E,GAAJ,SACCA,EACEpE,SAAU2G,IACVxC,wBAAyB4L,GAAAA,KAAoBxQ,IAKpCyQ,GACZ,IACA,QAAE,SAAE5L,GAAJ,SACCA,EACEpE,SAAU2G,IACVpC,yBAA0BwL,GAAAA,OASvB,SAASE,GAAW1Q,GAC1B,MAAO,CACNuB,KAAM,aACNvB,KAAAA,GASK,SAASmN,KACf,MAAO,CACN5L,KAAM,eAUD,SAASoP,KACf,MAAO,CACNpP,KAAM,wBAUD,SAASqP,KACf,MAAO,CACNrP,KAAM,yBASD,SAASsP,KACf,MAAO,CACNtP,KAAM,0BAWD,MAAMuP,GACV7M,GACF,IAAoB,UAAlB,SAAEY,GAAgB,EACnB,MAAMkM,EAAc,UACnBlM,EACEhF,OAAQiF,EAAAA,OACRnG,IAAK,iBAAkB,yBAHN,QAG4B,GAMhD,IAAIqS,EAEHA,EAN0BD,MAAAA,GAAAA,EAAgB/M,SAAUC,GAM5B8M,EAAeE,QACpCC,GAAwBA,IAAuBjN,IAG1B,IAAK8M,EAAgB9M,GAG9CY,EACEpE,SAAUqE,EAAAA,OACVC,IAAK,iBAAkB,iBAAkBiM,IAQhCG,GACVlN,GACF,IAAoB,UAAlB,SAAEY,GAAgB,EACnB,MAAMuM,EAAU,UACfvM,EACEhF,OAAQiF,EAAAA,OACRnG,IAAK,iBAAkB,qBAHV,QAG4B,GAM5C,IAAI0S,EAEHA,EANsBD,MAAAA,GAAAA,EAAYpN,SAAUC,GAMxBmN,EAAWH,QAC5BK,GAAmBA,IAAkBrN,IAGpB,IAAKmN,EAAYnN,GAGtCY,EACEpE,SAAUqE,EAAAA,OACVC,IAAK,iBAAkB,aAAcsM,IAUlC,SAASE,GAAmBtN,GAClC,MAAO,CACN1C,KAAM,eACN0C,UAAAA,GASK,MAAMoB,GACVmM,GACF,QAAE,SAAE3M,GAAJ,SACCA,EACEpE,SAAUqE,EAAAA,OACVY,OAAQ,iBAAkB8L,IAOjBC,GACVC,GACF,IAAoB,IAAlB,SAAE7M,GAAgB,EACnBA,EACEpE,SAAUqE,EAAAA,OACVC,IAAK,iBAAkB,aAAc2M,GAGzB,WAATA,GACJ7M,EAASpE,SAAUP,EAAAA,OAAmByR,qBAGvC,MAAMC,EACI,WAATF,GACG1P,EAAAA,EAAAA,IAAI,2BACJA,EAAAA,EAAAA,IAAI,yBACR6P,EAAAA,GAAAA,OAAOD,EAAS,cAQLE,GACVC,GACF,IAAoB,IAAlB,SAAElN,GAAgB,EACnB,MAAMkF,EAAWlF,EACfhF,OAAQuH,IACRjB,aAAc,iBAAkB4L,GAElClN,EACEpE,SAAU2G,IACT2C,EAAW,YAAc,WAC1B,iBACAgI,IAUSC,GACZ,CAAE7Q,EAAW8Q,IACb,IAAoB,UAAlB,SAAEpN,GAAgB,EACnB,IAAO1D,EACN,OAGD,MAAM+Q,EAAkB,UACvBrN,EACEhF,OAAQiF,EAAAA,OACRnG,IAAK,iBAAkB,mCAHF,QAGkC,GAG1D,GAAOsT,EAgBNpN,EACEpE,SAAUqE,EAAAA,OACVC,IAAK,iBAAkB,2BAA4B,IAChDmN,EACH,CAAE/Q,GAAa8Q,QApBE,CACnB,MAAME,EAAoB,IACtBD,UAGGC,EAAmBhR,GAE1B0D,EACEpE,SAAUqE,EAAAA,OACVC,IACA,iBACA,2BACAoN,KAkBQC,GACVC,GACF,IAAoB,UAAlB,SAAExN,GAAgB,EACnB,MAAMyN,EAAkB,UACvBzN,EACEhF,OAAQiF,EAAAA,OACRnG,IAAK,iBAAkB,2BAHF,QAG0B,GAE5C4T,GAAgBC,EAAAA,EAAAA,SACrBF,MACGG,EAAAA,EAAAA,WAAWJ,IAGfxN,EACEpE,SAAUqE,EAAAA,OACVC,IAAK,iBAAkB,mBAAoBwN,IAQlCG,GACVL,GACF,IAAoB,UAAlB,SAAExN,GAAgB,EACnB,MAAMyN,EAAkB,UACvBzN,EACEhF,OAAQiF,EAAAA,OACRnG,IAAK,iBAAkB,2BAHF,QAG0B,GAE5CgU,EAAmB,IAAIC,IAAK,IAC9BN,MACAG,EAAAA,EAAAA,WAAWJ,KAGfxN,EACEpE,SAAUqE,EAAAA,OACVC,IAAK,iBAAkB,mBAAoB,IACxC4N,KAUME,GACVlP,GACF,QAAE,SAAElD,GAAJ,SACCA,EAAU,CACTc,KAAM,+BACNoC,qBAAAA,KAMUmP,GACZ,IACAC,MAAAA,IAA4C,IAApC,SAAElO,EAAF,OAAYhF,EAAZ,SAAoBY,GAAgB,EAC3CA,EAAU,CACTc,KAAM,6BAIFrC,OAAO8T,SACX9T,OAAO8T,QAAQC,cAKhB,MAAMC,EAAOrO,EAAShF,OAAQkD,EAAAA,OAAcoQ,iBACtCC,EAAiB,GACtBF,EAAKG,gBACF,CAAE,iBAAkBH,EAAKG,kBAE5BH,EAAKI,aAAc,CAAE,cAAeJ,EAAKI,eACzCJ,EAAKK,QAAS,CAAE,SAAUL,EAAKK,UAC/BL,EAAKM,QAAS,CAAE,cAAeN,EAAKM,SACnCvC,OAAQwC,SAOJC,EAAkB,CAJH,IAAIxU,OAAOyU,SAC/BtI,SAASkB,cAAe,0BAEM1M,EAAO+T,4BAGXtE,KACvBuE,GACD,IAAI3U,OAAOyU,SCrXqBE,CAAAA,GACvBxI,SAASkB,cACpB,iCAAiCsH,uBAAgCA,MAM5DxI,SAASkB,cAAe,gCAAkCsH,GD6WxCC,CAAqBD,OAKvCE,GAAWzF,EAAAA,EAAAA,QAChBoF,GACA,CAAEM,EAAMC,KACP,IAAM,MAAQ3W,EAAK2B,KAAWgV,EAC7BD,EAAKE,OAAQ5W,EAAK2B,GAEnB,OAAO+U,IAER,IAAI9U,OAAOyU,UAEZP,EAAee,SAAS,QAAI7W,EAAK2B,GAAT,SACvB8U,EAASG,OAAQ5W,EAAK2B,MAGvB,UAEOmV,GAAAA,CAAU,CACfC,IAAKnV,OAAOoV,cACZC,OAAQ,OACRjJ,KAAMyI,EACNS,OAAO,IAER/T,EAASgU,wBACR,MACDhU,EAASiU,0BASL,SAASD,KACf,MAAO,CACNlT,KAAM,4BASD,SAASmT,KACf,MAAO,CACNnT,KAAM,4BAWD,SAASoT,GAAoCzQ,GACnD,MAAO,CACN3C,KAAM,0BACN2C,WAAAA,GAgBK,SAAS0Q,GAAqB3V,GACpC,MAAO,CACNsC,KAAM,yBACNtC,MAAAA,GAUK,SAAS4V,GAAqBzQ,GACpC,MAAO,CACN7C,KAAM,0BACN6C,OAAAA,GAUK,SAAS0Q,GAAsB7V,GACrC,MAAO,CACNsC,KAAM,0BACNtC,MAAAA,GASK,MAAM8V,GACZ,eAAEC,EAAF,+DACA,IAAsC,IAApC,SAAEnQ,EAAF,OAAYhF,EAAZ,SAAoBY,GAAgB,EAKrC,GAJAA,EAAUqU,IAAsB,KACHjV,EAAOuG,gBACnC,wBAE6B,CAC7B,MAAMwL,EAAUoD,GACbhT,EAAAA,EAAAA,IAAI,0DACJA,EAAAA,EAAAA,IACA,yFAEH6C,EAASpE,SAAUmC,EAAAA,OAAeqS,oBAAqBrD,EAAS,CAC/DrQ,KAAM,gBAUG2T,GACVC,GACFpC,MAAAA,IAA0B,IAAlB,SAAElO,GAAgB,EACzB,MAAMuQ,QAAsBvQ,EAC1BpE,SAAU4U,GAAAA,OACVC,iBAAkB,WAAY,cAAeH,GACzCjC,EAAOrO,EAAShF,OAAQkD,EAAAA,OAAcoQ,iBAC5CtO,EACEpE,SAAU4U,GAAAA,OACVE,iBAAkB,WAAYrC,EAAK3R,KAAM2R,EAAKsC,GAAI,CAClDL,SAAUC,EAAcK,QAI5B,IAAIC,IAAuB,EAKpB,MAAMC,GACZ,IACA,IAAsC,IAApC,SAAE9Q,EAAF,OAAYhF,EAAZ,SAAoBY,GAAgB,EAKrC,IAJsBoE,EACpBhF,OAAQkD,EAAAA,OACR6S,0BAGD,OAGD,GAAKF,GACJ,OAED,MAAMG,EAAWhR,EAAShF,OAAQkD,EAAAA,OAAc+S,qBAC3C5W,OAAO6W,UAAUC,OAASH,GAC9B3W,OAAO6W,UAAUE,oBAAqBJ,GAGvCH,IAAuB,EAEvB,IAAIQ,EAAgBrR,EAAShF,OAAQkD,EAAAA,OAAcoT,eAC/CC,EAAoBvR,EACtBhF,OAAQkD,EAAAA,OACRsT,mBACF,MAAMC,EAAezW,EAAOyW,eAG5BzR,EAAS0R,WAAWxD,UACnB,MAAMoD,EAAetR,EAAShF,OAAQkD,EAAAA,OAAcoT,eAC9CE,EAAmBxR,EACvBhF,OAAQkD,EAAAA,OACRsT,mBAQIG,EACLF,GACAJ,IACEC,IACAC,EAGHF,EAAgBC,EAChBC,EAAoBC,EAEfG,SACE/V,EAASqS,2BAIjBrS,EAAU,CACTc,KAAM,4BEhjBT,IAAIkV,GAAW,GAWf,SAASC,GAAQzX,GAChB,MAAO,CAACA,GAyCT,SAAS0X,GAAerY,EAAGsY,EAAGC,GAC7B,IAAIpa,EAEJ,GAAI6B,EAAE3B,SAAWia,EAAEja,OAClB,OAAO,EAGR,IAAKF,EAAIoa,EAAWpa,EAAI6B,EAAE3B,OAAQF,IACjC,GAAI6B,EAAE7B,KAAOma,EAAEna,GACd,OAAO,EAIT,OAAO,EAiBO,SAAS,GAACqa,EAAUC,GAElC,IAAIC,EAGAC,EAA0BF,GAAgCL,GAoB9D,SAASQ,EAASC,GACjB,IAEC1a,EACA2a,EACA9H,EACA+H,EA3FmBpY,EAsFhBqY,EAASN,EACZO,GAAuB,EAMxB,IAAK9a,EAAI,EAAGA,EAAI0a,EAAWxa,OAAQF,IAAK,CAIvC,KAjGmBwC,EA8FnBmY,EAAYD,EAAW1a,KA7FP,iBAAoBwC,EAgGN,CAC7BsY,GAAuB,EACvB,MAIGD,EAAOE,IAAIJ,GAEdE,EAASA,EAAO3Y,IAAIyY,IAGpB9H,EAAM,IAAImI,QACVH,EAAOvS,IAAIqS,EAAW9H,GACtBgI,EAAShI,GAYX,OANKgI,EAAOE,IAAIf,OACfY,EA5GH,WAEC,IAAIA,EAAQ,CACXK,MAAO,WACNL,EAAMM,KAAO,OAIf,OAAON,EAoGGO,IACFL,qBAAuBA,EAC7BD,EAAOvS,IAAI0R,GAAUY,IAGfC,EAAO3Y,IAAI8X,IAMnB,SAASiB,IACRV,EAAY,IAAIS,QAcjB,SAASI,IACR,IACCR,EACAS,EACArb,EACAsb,EACAZ,EALGa,EAAMtb,UAAUC,OASpB,IADAob,EAAO,IAAIhb,MAAMib,GACZvb,EAAI,EAAGA,EAAIub,EAAKvb,IACpBsb,EAAKtb,GAAKC,UAAUD,GAqBrB,KAjBA4a,EAAQH,EADRC,EAAaF,EAAwB/Z,MAAM,KAAM6a,KAMtCR,uBAETF,EAAMY,iBACLtB,GAAeQ,EAAYE,EAAMY,eAAgB,IAElDZ,EAAMK,QAGPL,EAAMY,eAAiBd,GAGxBW,EAAOT,EAAMM,KACNG,GAAM,CAEZ,GAAKnB,GAAemB,EAAKC,KAAMA,EAAM,GAsBrC,OAdID,IAAST,EAAMM,OAEQG,EAAS,KAAEI,KAAOJ,EAAKI,KAC7CJ,EAAKI,OACRJ,EAAKI,KAAKC,KAAOL,EAAKK,MAGvBL,EAAKI,KAAOb,EAAMM,KAClBG,EAAKK,KAAO,KACcd,EAAU,KAAEc,KAAOL,EAC7CT,EAAMM,KAAOG,GAIPA,EAAKM,IArBXN,EAAOA,EAAKI,KA8Cd,OApBAJ,EAAgC,CAE/BM,IAAKtB,EAAS5Z,MAAM,KAAM6a,IAI3BA,EAAK,GAAK,KACVD,EAAKC,KAAOA,EAMRV,EAAMM,OACTN,EAAMM,KAAKQ,KAAOL,EAClBA,EAAKI,KAAOb,EAAMM,MAGnBN,EAAMM,KAAOG,EAENA,EAAKM,IAOb,OAJAP,EAAad,cAAgBE,EAC7BY,EAAaH,MAAQA,EACrBA,IAE2C,ECvR5C,MAAMW,GAAc,GACdC,GAAe,GASRC,IAAgBvS,EAAAA,EAAAA,yBAC1BnG,GAAY,4BACbA,EAAQiF,EAAAA,OAAmBnG,IAAK,iBAAkB,qBADrC,QAEb,YAUW6Z,IAAwBxS,EAAAA,EAAAA,yBAClCnG,GAAY,KACb,MAAM4Y,EACL5Y,EAAQuH,IAAiBrB,2BACxB,kBAEF,MAAO,CAAE,qBAAsB,mBAAoB/B,SAClDyU,MAYUC,IAAwB1S,EAAAA,EAAAA,yBAClCnG,GAAY,KACb,MAAM4Y,EACL5Y,EAAQuH,IAAiBrB,2BACxB,kBAEF,QACI0S,IACD,CAAE,qBAAsB,mBAAoBzU,SAC7CyU,MAoBSE,IAA8B3S,EAAAA,EAAAA,yBACxCnG,GAAY,IACNA,EAAQuH,IAAiBrB,2BAC/B,oBAgEU6S,IAAiB5S,EAAAA,EAAAA,yBAA0BnG,GAAY,KACnE0F,GAAAA,CAAa,4CAA4C,CACxDC,MAAO,MACPC,YAAc,qCAoCR,IA9Ba,CACnB,mBACA,aACA,4BACC6I,QAAQ,CAAEuK,EAAkBC,KAMtB,IACHD,EACH,CAAEC,GAPWjZ,EAAQiF,EAAAA,OAAmBnG,IACxC,iBACAma,MAOC,IAkBFC,OAhFF,SAAmChI,EAAgBK,GAAa,MAE/D,MAAM4H,EAAyBjI,MAAAA,OAAH,EAAGA,EAAgBzC,QAC9C,CAAE2K,EAAmBhV,KAArB,IACIgV,EACH,CAAEhV,GAAa,CACdiV,SAAS,MAGX,IAMKH,EAAS3H,MAAAA,OAAH,EAAGA,EAAY9C,QAAQ,CAAE2K,EAAmBhV,KACvD,MAAMkV,EAAoBF,MAAAA,OAAH,EAAGA,EAAqBhV,GAC/C,MAAO,IACHgV,EACH,CAAEhV,GAAa,IACXkV,EACHC,QAAQ,MAGRJ,MAAAA,EAAAA,EAA0B,IAK7B,iBAAOD,MAAAA,EAAAA,EAAUC,SAAjB,QAA2CV,GA+C5Be,CARQxZ,EAAQiF,EAAAA,OAAmBnG,IACjD,iBACA,kBAEkBkB,EAAQiF,EAAAA,OAAmBnG,IAC7C,iBACA,mBAkBK,SAAS2a,GAAe9V,EAAOsV,EAAeS,GACpDhU,GAAAA,CAAa,2CAA2C,CACvDC,MAAO,MACPC,YAAc,qCAIf,MACMxG,EADc2Z,GAAgBpV,GACTsV,GAC3B,YAAiB9a,IAAViB,EAAsBsa,EAAeta,EAQtC,MAAMua,IAAsBxT,EAAAA,EAAAA,yBAA0BnG,GAAY,KAAM,MAC9E,iBACCA,EAAQiF,EAAAA,OAAmBnG,IAC1B,iBACA,2BAHF,QAIM0Z,MAWA,SAASoB,GAAwBjW,GACvC,OAAOA,EAAMM,qBAYP,SAAS4V,GAAsBlW,EAAOS,GAC5C,OAAOT,EAAMO,cAAcC,SAAUC,GAY/B,MAAM0V,IAAuB3T,EAAAA,EAAAA,yBACjCnG,GAAY,CAAE2D,EAAOS,KACtB,MAAM8M,EAAiBlR,EAAQiF,EAAAA,OAAmBnG,IACjD,iBACA,kBAED,QACG+a,GAAsBlW,EAAOS,IAC7B8M,MAAAA,GAAAA,EAAgB/M,SAAUC,OAclB2V,IAAsB5T,EAAAA,EAAAA,yBAChCnG,GAAY,CAAE2D,EAAOS,KACtB,MAAMmN,EAAavR,EAAQiF,EAAAA,OAAmBnG,IAC7C,iBACA,cAED,QAAUyS,MAAAA,IAAAA,EAAYpN,SAAUC,OAY3B,SAAS4V,GAAerW,EAAOsW,GACrC,OAAOtW,EAAMK,cAAgBiW,EAWvB,MAAM1T,IAAkBJ,EAAAA,EAAAA,yBAC5BnG,GAAY,CAAE2D,EAAOgO,MACZ3R,EAAQiF,EAAAA,OAAmBnG,IAAK,iBAAkB6S,KAajDuI,IAAqB/T,EAAAA,EAAAA,yBAC/BnG,GAAY,CAAE2D,EAAOuO,IACflS,EAAQuH,IAAiBjB,aAC/B,iBACA4L,KAYU6B,GAA4BoG,IACtCxW,GACMpG,OAAO6c,KAAMzW,EAAMH,UAAUK,WAAYuN,QAAU4C,GACzDqG,GAAyB1W,EAAOqQ,OAGhCrQ,GAAW,CAAEA,EAAMH,UAAUK,aAWzB,SAASyW,GAA0B3W,EAAOqQ,GAAW,MAC3D,OACCqG,GAAyB1W,EAAOqQ,KAAhC,UACAuG,GAAyB5W,EAAOqQ,UADhC,aACA,EAA4CwG,MAAM,IAAc,IAAZ,GAAE7E,GAAU,EAC/D,OAAOmE,GAAsBnW,EAAQ,YAAYgS,SAc7C,SAAS0E,GAAyB1W,EAAOqQ,GAC/C,MAAMxQ,EAAY+W,GAAyB5W,EAAOqQ,GAClD,QAAUxQ,GAAkC,IAArBA,EAAU1G,OAW3B,SAASyd,GAAyB5W,EAAOqQ,GAC/C,OAAOrQ,EAAMH,UAAUK,UAAWmQ,GAU5B,MAAMyG,GAAkBN,IAC5BxW,GACMpG,OAAOmd,OAAQ/W,EAAMH,UAAUK,WAAY8W,SAEjDhX,GAAW,CAAEA,EAAMH,UAAUK,aAUzB,SAAS4S,GAAc9S,GAC7B,OAAOoQ,GAA2BpQ,GAAQ7G,OAAS,EAU7C,SAAS8d,GAAmBjX,GAClC,OAAOA,EAAMH,UAAUE,SAUjB,SAASmX,GAAoClX,GACnD,OAAOA,EAAMU,WAUP,SAASyW,GAAkBnX,GACjC,QAAUA,EAAMW,mBAUV,SAASyW,GAAiCpX,GAChD,MAAM,aAAEqX,EAAF,eAAgBC,EAAhB,YAAgCC,GACrCvX,EAAMW,mBACP,MAAO,CAAE0W,aAAAA,EAAcC,eAAAA,EAAgBC,YAAAA,GAUjC,SAASC,GAAkBxX,GACjC,OAAOA,EAAMa,cAUP,SAASC,GAAmBd,GAClC,OAAOA,EAAMc,kBAUP,SAAS2W,GAAyBzX,GACxC,OAAOA,EAAMH,UAAUO,YAQjB,MAAMsX,IAAwBlV,EAAAA,EAAAA,yBAClCnG,GAAY,KACb,MAAMsb,EACLtb,EAAQkD,EAAAA,OAAcC,uBAAwB,YAC/C,GAAKmY,EAAkB,OACtB,MAAMC,EAAoB,UAAGvb,EAAQwV,GAAAA,OACnCgG,iBAAkB,WAAY,cAAe,CAAEC,UAAW,WADlC,aAAG,EAE1Bjb,MAAQ8U,GAAcA,EAASM,OAAS0F,IAC3C,OAAOC,EAGAvb,EAAQwV,GAAAA,OAAYkG,sBAC1B,WACA,cACAH,EAAqB5F,IALd4F,EAST,MAAMlI,EAAOrT,EAAQkD,EAAAA,OAAcoQ,iBACnC,OAAKD,EAAKsI,KACF3b,EAAQwV,GAAAA,OAAYoG,iCAC1BvI,EAAKsI,MAIA,QCjhBIE,GAAa,iBCebrV,IAAQC,EAAAA,EAAAA,kBAAkBoV,GAAY,CAClDnV,QADkD,EAElD3E,QAFkD,EAGlD4E,UAASA,KAGVC,EAAAA,EAAAA,UAAUJ,ICAV,UAAe7F,EAAAA,EAAAA,eAAgBC,IAC9B,MAAM,UAAEiQ,GAAcjQ,EAAU+P,IAEhC,MAAO,CACNE,UAAAA,KAJF,EAbO,YAAwD,IAAhB,UAAEA,GAAc,EAC9D,OACC,mBAAC,EAAAtN,SAAD,CACCrB,QAAU,KACT2O,EAAW,qCAEZ1F,SAAW2Q,EAAAA,gBAAAA,OAAwB,OAEjC3Z,EAAAA,EAAAA,IAAI,2BCVDgG,KAAM4T,GAAR,KAA4B1T,KACjC2T,EAAAA,EAAAA,gBAAgB,sBAEjBD,GAAmB1T,KAAO,QAAE,UAAEE,GAAJ,SACzB,mBAACF,GAAD,CAAME,UAAYA,IACbE,KACDwT,EAAAA,EAAAA,SAASxT,KACV,mBAAC,EAAAyT,UAAD,CAAWlR,OAAQ7I,EAAAA,EAAAA,IAAI,UAAcsG,MAMzC,YCZe,SAAS0T,KACvB,MAAMC,GAAiBnZ,EAAAA,EAAAA,YACpBjD,GAAYA,EAAQ2Q,IAAgBlM,qBACtC,IAGD,OACC,mBAAC,EAAA4X,yBAAD,CACCxX,MAAM,iBACN1E,KAAOic,EAAiB,uBAAyB,eACjDpR,OAAQ7I,EAAAA,EAAAA,IAAI,oBCLfma,EAAAA,EAAAA,gBAAgB,YAAa,CAC5BC,OAAM,KAEJ,oCACC,mBAAC,GAAD,MACG,QAAE,QAAErR,GAAJ,SACD,oCACC,mBAAC,EAAA3H,SAAD,CACC4F,KAAK,WACLqT,MAAOC,EAAAA,EAAAA,cAAc,WAAY,CAChCC,UAAW,eAGVva,EAAAA,EAAAA,IAAI,4BAEP,mBAAC,GAAD,CACC+M,SAAWhE,KAEZ,mBAACiR,GAAD,OACA,mBAACvZ,EAAD,OACA,mBAAC,EAAAW,SAAD,CACC4F,KAAK,WACLnC,KAAO2V,EACPH,MAAOra,EAAAA,EAAAA,IACN,2DAED3C,OAAO,SACPod,IAAI,wBAEFza,EAAAA,EAAAA,IAAI,SACN,mBAAC,EAAA0a,eAAD,CAAgB1V,GAAG;;CAGjBhF,EAAAA,EAAAA,IAAI,iCClDd,MAAM,GAA+B9C,OAAW,GAAqB,kBCmBtD,SAASyd,KACvB,MAAMC,GAAuB9Z,EAAAA,EAAAA,YAAajD,GAClCA,EAAQkD,EAAAA,OAAc8Z,oBAAoBC,oBAC/C,KACG,iBAAErL,IAAqB9O,EAAAA,EAAAA,aAAa6N,IAE1C,OACC,0BAAKjJ,UAAU,0BACd,mBAAC,EAAAwV,kCAAD,MACEH,IACD,0BAAKrV,UAAU,mCACd,8BAAMvF,EAAAA,EAAAA,IAAI,kBACV,mBAAC,EAAAH,OAAD,CACCC,QAAQ,WACRC,QAAU,IAAM0P,EAAkB,UAClCzG,SAAW2Q,EAAAA,gBAAAA,UAA2B,OAEpC3Z,EAAAA,EAAAA,IAAI,uBAIT,0BAAKuF,UAAU,gCACd,mBAAC,EAAAyV,UAAD,OACA,mBAAC,EAAAC,eAAD,QCrCJ,MAMA,IALC,mBAAC,EAAA5a,IAAD,CAAKC,MAAM,6BAA6BC,QAAQ,cAC/C,mBAAC,EAAAC,KAAD,CAAMnE,EAAE,oECOJwJ,GAAO,OA4Cb,GA1CO,YAAmE,IAApC,QAAE9F,EAAU8F,GAAZ,MAAkBqV,GAAQ,GAAU,EACzE,MAAM,SAAElS,EAAF,0BAAYmS,IAA8Bra,EAAAA,EAAAA,YAC7CjD,IAAF,CACCmL,SAAUnL,EACTud,GAAAA,OACCC,0BAA2B,iCAC7BF,0BAEC,oBADAtd,EAAQ2Q,IAAgBmI,iCAG1B,KAEK,mBAAEpI,EAAF,oBAAsBE,IAC3B9N,EAAAA,EAAAA,aAAa6N,IAER3F,EAAQsS,GACXnb,EAAAA,EAAAA,IAAI,uBACJA,EAAAA,EAAAA,IAAI,sBAEP,OACC,mBAAC,EAAAoB,SAAD,CACCrB,QAAU,KACJob,GACJ1M,KACAoB,EAAAA,GAAAA,QAAO7P,EAAAA,EAAAA,IAAI,4BAEXuO,EAAoB,oBACpBsB,EAAAA,GAAAA,QACC7P,EAAAA,EAAAA,IACC,gFAIHD,KAEDiJ,SAAWA,IAEPkS,GAASrS,ICThB,SAASyS,GAAT,GAOI,IAPkB,SACrBhW,EADqB,WAErBiW,EAFqB,aAGrBC,EAHqB,OAIrBC,EAJqB,OAKrBC,EALqB,MAMrBjc,GACG,EACH,MAAMwB,GAAM0a,EAAAA,EAAAA,qCAEZ,OAAOH,GAiBN,mBAAC,mBAAD,CACC7F,MAAO,mBAAC,yBAAD,CAAc8F,OAASA,IAC9BC,OAASA,EACTza,IAAMA,EACNsa,WAAaA,EACb9b,MAAQ,CAAE+L,MAAO,OAAQC,OAAQ,OAAQmQ,QAAS,SAClD5d,KAAK,iBAEHsH,IAvBF,oCACC,mBAAC,yBAAD,CAAcmW,OAASA,KACvB,mBAAC,EAAAI,YAAD,CACC5a,IAAMsa,EACNhW,UAAU,wBACV9F,MAAQ,CAAEqc,KAAM,OAAQrc,GACxBmG,UAAY,GAEVN,IAoBQ,SAASyW,GAAT,GAAoC,IAAb,OAAEN,GAAW,EAClD,MAAM,WACLvZ,EADK,sBAEL8Z,EAFK,eAGL/B,EAHK,iBAILgC,EAJK,gBAKLC,IACGpb,EAAAA,EAAAA,YAAajD,IAChB,MAAM,gBACLuG,EADK,kBAEL9B,EAFK,mCAGLoW,GACG7a,EAAQ2Q,KACN,iBAAE2N,EAAF,mBAAoBrI,GAAuBjW,EAAQkD,EAAAA,OACnDqb,EAAkB9Z,IACxB,IAAI+Z,EAQJ,MAN8B,aAAzBvI,IACJuI,EAAoB,aACPD,IACbC,EAAoB,qBAGd,CACNna,WAAYwW,IACZsD,sBAAuB5X,EAAiB,gBACxC6V,eAAgBmC,EAChBH,iBAAkBI,EAClBH,gBAAiBC,OAEhB,KACG,eAAEG,IAAmBxb,EAAAA,EAAAA,WAAWC,EAAAA,OAChCuT,GAAexT,EAAAA,EAAAA,YAClBjD,GAAYA,EAAQ2Q,IAAgB8F,gBACtC,KAEK,6BAAEiI,EAAF,oBAAgCC,EAAhC,OAAqDd,IAC1D5a,EAAAA,EAAAA,YAAajD,IACZ,MAAM4e,EAAY5e,EAAQK,EAAAA,OAAmBwe,cAC7C,MAAO,CACNH,6BAA8BE,EAAUE,oBACxCH,oBAAqBC,EAAUG,eAC/BlB,OAAQe,EAAUI,4BAEjB,KACE,mBAAElN,IAAuBhP,EAAAA,EAAAA,aAAazC,EAAAA,QACtC,qBAAE4U,IAAyBnS,EAAAA,EAAAA,aAAa6N,IACxCsO,EAAsB,CAC3BrR,OAAQ,OACRD,MAAO,OACPuR,OAAQ,EACRnB,QAAS,OACToB,SAAU,SAGVC,WAAY,SAEPC,EAAqB,IACvBJ,EACHK,aAAc,cACdC,OAAQ,iBACRC,aAAc,GAETC,GAAsBC,EAAAA,EAAAA,+BAAiBrb,EAAY+X,GACnDuD,GAAgBC,EAAAA,EAAAA,YAAY,UAC5BC,EAAc,MAAQxb,EAAWyb,cAAgB,WAEvD,IAOIC,EAPAC,EAAiB5D,EAClBiD,EACAJ,EACEQ,IACJO,EAAiBP,GAOXhJ,GAAkBgJ,GAAyBrD,IACjD2D,EAAgB,QAGjB,MAAM3c,GAAMsH,EAAAA,EAAAA,UACNgT,GAAa7Q,EAAAA,EAAAA,cAAc,CAChCzJ,GACA6c,EAAAA,EAAAA,kCACAC,EAAAA,EAAAA,4BACAC,EAAAA,EAAAA,gCACAC,EAAAA,EAAAA,wCAGKC,GAA2BD,EAAAA,EAAAA,sCAE3BE,GAAS/R,EAAAA,EAAAA,UAAS,IAClB6N,EACG,CAAE1a,KAAM,WAGXid,EAGG,IAAKgB,EAAeje,KAAM,eAG3B,CAAEA,KAAM,gBACb,CAAE0a,EAAgBuC,EAAqBgB,IAEpCY,GAAW7V,EAAAA,EAAAA,UAQjB,OAPAE,EAAAA,EAAAA,YAAW,KAAM,OACXuT,GAA2BM,MAGhC8B,MAAAA,GAAA,UAAAA,EAAU1V,eAAV,SAAmB2V,WACjB,CAAErC,EAAuBM,KAG3B,mBAAC,EAAAgC,WAAD,CACCC,qBAAuBtd,EACvBsE,UAAYI,GAAAA,CAAY,0BAA2B,CAClD,mBAAoBsU,MAGrB,mBAAC,EAAAuE,oCAAD,OACA,mBAAC,uBAAD,CACCjZ,UAAU,wCACVkZ,QAAU,CACTC,QAASzE,EAAiB,cAAgB,KAE3ChZ,IAAMid,GAEJjE,IACD,mBAAC,EAAApa,OAAD,CACC0F,UAAU,8CACVV,KAAO8Z,GACP5e,QAAU,KACT4P,IACAmD,GAAsB,MAGrB9S,EAAAA,EAAAA,IAAI,UAGR,mBAAC,uBAAD,CACCye,QAAUZ,EACVe,QAAU9B,EACVvX,UAAYmY,IAEZ,mBAACpC,GAAD,CACCE,aACCvB,GACe,WAAf/X,GACe,WAAfA,EAEDqZ,WAAaA,EACbE,OAASA,EACTC,OAASA,EACTjc,MAAQ,CAAEme,cAAAA,IAERpB,IACCD,IACAtC,IACD,mBAAC,4BAAD,CACCnF,SAAS,mGACTqJ,OAASA,EACTU,kBACCrB,MAAAA,OADgB,EAChBA,EAAesB,eAIf7E,IACH,0BACC1U,UAAU,8CACVwZ,iBAAkB,IAElB,mBAAC,EAAA/D,UAAD,CAAW/Z,IAAMmd,MAGnB,mBAAC,kCAAD,CACCjf,UAAY8c,EACZ+C,SAAW9C,IAEX,mBAAC,EAAA+C,UAAD,CACC1Z,UACC0U,EACG,iBACA,wBAEJiF,qBAAuBf,SAM5B,mBAAC,EAAAgB,qCAAD,MACG,QAAE,QAAEpW,GAAJ,SACD,mBAAC,GAAD,CAAsBhJ,QAAUgJ,QCxHrC,SA7IA,WACC,MAAM,uBAAEqW,IAA2Bte,EAAAA,EAAAA,WAAW5C,EAAAA,QACxC,cAAEqY,EAAF,sBAAiBC,EAAjB,iBAAwCwC,IAC7ClY,EAAAA,EAAAA,WAAW0N,IACN6Q,GAAuBve,EAAAA,EAAAA,YAAajD,IACzC,MAAM,mBAAEid,EAAF,mBAAsBwE,GAC3BzhB,EAAQkD,EAAAA,OAAc8Z,oBACvB,OAASC,IAAwBwE,IAC/B,KAEG,iBACL7P,EADK,mBAELlB,EAFK,oBAGLE,EAHK,cAILpL,EAJK,oBAKLwP,IACGlS,EAAAA,EAAAA,aAAa6N,KACX,iBAAE+Q,IAAqB5e,EAAAA,EAAAA,aAAaya,GAAAA,OAyH1C,OAvHA3S,EAAAA,EAAAA,YAAW,KACV8W,EAAkB,CACjBvhB,KAAM,6BACNwhB,SAAU,SACVvR,aAAajO,EAAAA,EAAAA,IAAI,iDACjByf,eAAgB,CACfC,SAAU,YACVC,UAAW,OAIbJ,EAAkB,CACjBvhB,KAAM,mCACNwhB,SAAU,SACVvR,aAAajO,EAAAA,EAAAA,IAAI,2BACjByf,eAAgB,CACfC,SAAU,YACVC,UAAW,OAIbJ,EAAkB,CACjBvhB,KAAM,kCACNwhB,SAAU,SACVvR,aAAajO,EAAAA,EAAAA,IAAI,6BACjByf,eAAgB,CACfC,SAAU,SACVC,UAAW,OAIbJ,EAAkB,CACjBvhB,KAAM,gCACNwhB,SAAU,SACVvR,aAAajO,EAAAA,EAAAA,IAAI,sCACjByf,eAAgB,CACfC,SAAU,eACVC,UAAW,OAIbJ,EAAkB,CACjBvhB,KAAM,6BACNwhB,SAAU,SACVvR,aAAajO,EAAAA,EAAAA,IAAI,4CACjByf,eAAgB,CACfC,SAAU,OACVC,UAAW,KAEZC,QAAS,CACR,CACCF,SAAU,SACVC,UAAW,QAKdJ,EAAkB,CACjBvhB,KAAM,iCACNwhB,SAAU,SACVvR,aAAajO,EAAAA,EAAAA,IAAI,gDACjByf,eAAgB,CACfC,SAAU,YACVC,UAAW,KAEZC,QAAS,CACR,CACCF,SAAU,SACVC,UAAW,QAKdJ,EAAkB,CACjBvhB,KAAM,oCACNwhB,SAAU,OACVvR,aAAajO,EAAAA,EAAAA,IAAI,qCACjByf,eAAgB,CACfC,SAAU,SACVC,UAAW,SAGX,KAEHE,EAAAA,GAAAA,aACC,8BACA,KACCpQ,EACqB,WAApB8G,IAA+B,OAAS,YAG1C,CACCuJ,WAAYT,KAIdQ,EAAAA,GAAAA,aAAa,oCAAoC,KAChDxc,EAAe,sBAGhBwc,EAAAA,GAAAA,aAAa,iCAAmCE,IAK/C,GAFAA,EAAMC,iBAEDxJ,IACJ/H,QACM,CACN,MAAMwR,EAAgBb,IACnB,kBACA,qBACH7Q,EAAoB0R,QAItBJ,EAAAA,GAAAA,aAAa,mCAAmC,IAC/ChN,GAAuBmG,OAGjB,MCvJKkH,GAA0B,CACtC,CACCT,eAAgB,CAAEC,SAAU,UAAWC,UAAW,KAClD1R,aAAajO,EAAAA,EAAAA,IAAI,iCAElB,CACCyf,eAAgB,CAAEC,SAAU,UAAWC,UAAW,KAClD1R,aAAajO,EAAAA,EAAAA,IAAI,mCAElB,CACCyf,eAAgB,CAAEC,SAAU,UAAWC,UAAW,KAClD1R,aAAajO,EAAAA,EAAAA,IAAI,2CAElB,CACCyf,eAAgB,CAAEC,SAAU,eAAgBC,UAAW,KACvD1R,aAAajO,EAAAA,EAAAA,IAAI,mBAElB,CACCyf,eAAgB,CAAEE,UAAW,MAC7B1R,aAAajO,EAAAA,EAAAA,IAAI,oCAElB,CACCyf,eAAgB,CAAEC,SAAU,UAAWC,UAAW,KAClD1R,aAAajO,EAAAA,EAAAA,IAAI,iCAElB,CACCyf,eAAgB,CAAEC,SAAU,SAAUC,UAAW,KACjD1R,aAAajO,EAAAA,EAAAA,IAAI,qCAElB,CACCyf,eAAgB,CAAEC,SAAU,SAAUC,UAAW,KACjD1R,aAAajO,EAAAA,EAAAA,IAAI,yCCzBnB,SAASmgB,GAAT,GAA8D,IAArC,eAAEV,EAAF,eAAkBW,GAAmB,EAC7D,MAAMpX,EAAWyW,EAAeC,SAC7BW,EAAAA,oBAAqBZ,EAAeC,UACpCD,EAAeE,WAEfF,EAAeE,UACZW,EAAYb,EAAeC,SAC9Ba,EAAAA,kBAAmBd,EAAeC,UAClCD,EAAeE,WAEfF,EAAeE,UAElB,OACC,0BACCpa,UAAU,mEACV,aAAa6a,GAAkBE,IAE7B7P,EAAAA,EAAAA,WAAWzH,GAAWsE,KAAK,CAAEqS,EAAWa,IACtB,MAAdb,GACG,mBAAC,EAAAc,SAAD,CAAUnlB,IAAMklB,GAAUb,IAIjC,0BACCrkB,IAAMklB,EACNjb,UAAU,wDAERoa,MA+BR,SAvBA,YAA8E,IAA3D,YAAE1R,EAAF,eAAewR,EAAf,QAA+BG,EAAU,GAAzC,UAA6CU,GAAc,EAC7E,OACC,oCACC,0BAAK/a,UAAU,gEACZ0I,IAEH,0BAAK1I,UAAU,0DACd,mBAAC4a,GAAD,CACCV,eAAiBA,EACjBW,eAAiBE,IAEhBV,EAAQtS,KAAK,CAAEoT,EAAOF,KACvB,mBAACL,GAAD,CACCV,eAAiBiB,EACjBN,eAAiBE,EACjBhlB,IAAMklB,SCnBZ,GA/BA,YAAqC,IAAX,KAAExiB,GAAS,EACpC,MAAM,eAAEyhB,EAAF,YAAkBxR,EAAlB,QAA+B2R,IAAY9e,EAAAA,EAAAA,YAC9CjD,IACD,MAAM,0BACL8iB,EADK,uBAELC,EAFK,mBAGLC,GACGhjB,EAAQud,GAAAA,OAEZ,MAAO,CACNqE,eAAgBkB,EAA2B3iB,GAC3C4hB,QAASiB,EAAoB7iB,GAC7BiQ,YAAa2S,EAAwB5iB,MAGvC,CAAEA,IAGH,OAAOyhB,GAKN,mBAAC,GAAD,CACCA,eAAiBA,EACjBxR,YAAcA,EACd2R,QAAUA,IAPJ,MCLHkB,GAAa,mCAEbC,GAAe,QAAE,UAAE5W,GAAJ,SAMpB,yBACC5E,UAAU,wDACVyB,KAAK,QAEHmD,EAAUmD,KAAK,CAAEtE,EAAUwX,KAC5B,yBACCjb,UAAU,mDACVjK,IAAMklB,GAEgB,iBAAbxX,GACR,mBAAC,GAAD,CAAiBhL,KAAOgL,KAExB,mBAAC,GAAcA,QAQdgY,GAAkB,QAAE,MAAE5gB,EAAF,UAAS+J,EAAT,UAAoB5E,GAAtB,SACvB,8BACCA,UAAYI,GAAAA,CACX,kDACAJ,MAGInF,IACJ,yBAAImF,UAAU,yDACXnF,IAGJ,mBAAC2gB,GAAD,CAAc5W,UAAYA,MAItB8W,GAA0B,IAIzB,IAJ2B,MACjC7gB,EADiC,aAEjC8gB,EAFiC,oBAGjCC,EAAsB,IAChB,EACN,MAAMC,GAAoBtgB,EAAAA,EAAAA,YACvBjD,GACMA,EAAQud,GAAAA,OAAyBiG,qBACvCH,IAGF,CAAEA,IAGH,OACC,mBAACF,GAAD,CACC5gB,MAAQA,EACR+J,UAAYiX,EAAkBE,OAAQH,MAuDzC,IAAexjB,EAAAA,EAAAA,SAAS,EACvBC,EAAAA,EAAAA,aAAcC,IAAF,CACXga,cAAeha,EAAQ2Q,IAAgBqJ,cAAeiJ,SAEvDtiB,EAAAA,EAAAA,eAAc,CAAEC,EAAF,KAAmC,IAAvB,cAAEoZ,GAAqB,EAChD,MAAM,UAAEnJ,EAAF,WAAavD,GAAe1M,EAAU+P,IAE5C,MAAO,CACN+S,YAAa,IACZ1J,EAAgB1M,IAAeuD,EAAWoS,SAT9C,EAlDO,YAAqE,IAAjC,cAAEjJ,EAAF,YAAiB0J,GAAgB,EAG3E,OAFA1B,EAAAA,GAAAA,aAAa,oCAAqC0B,GAE3C1J,GAKN,mBAAC,EAAAzM,MAAD,CACC7F,UAAU,yCACVnF,OAAQJ,EAAAA,EAAAA,IAAI,sBACZsH,YAAatH,EAAAA,EAAAA,IAAI,SACjBqL,eAAiBkW,IAEjB,mBAACP,GAAD,CACCzb,UAAU,yDACV4E,UAAY,CAAE,wCAEf,mBAAC8W,GAAD,CACC7gB,OAAQJ,EAAAA,EAAAA,IAAI,oBACZkhB,aAAa,YAGd,mBAACD,GAAD,CACC7gB,OAAQJ,EAAAA,EAAAA,IAAI,uBACZkhB,aAAa,eAGd,mBAACD,GAAD,CACC7gB,OAAQJ,EAAAA,EAAAA,IAAI,mBACZkhB,aAAa,QACbC,oBAAsB,CACrB,CACC1B,eAAgB,CAAEE,UAAW,KAC7B1R,aAAajO,EAAAA,EAAAA,IACZ;;AAGDsgB,WAAWtgB,EAAAA,EAAAA,IAAI,sBAIlB,mBAACghB,GAAD,CACC5gB,OAAQJ,EAAAA,EAAAA,IAAI,mBACZmK,UAAY+V,MAxCP,QCrFF,SAASsB,GAAT,GAAoD,IAAjB,WAAEC,GAAe,EAC1D,MAAQC,EAAaC,IAAmB1V,EAAAA,EAAAA,WAAU,GAElD,OACC,oCACC,wBAAG1G,UAAU,oEACVvF,EAAAA,EAAAA,IACD,kGAGF,mBAAC,EAAAH,OAAD,CACC0F,UAAU,iEACVzF,QAAQ,YACR8hB,OAASF,EACTG,SAAWH,EACX3hB,QAAU,KACT4hB,GAAgB,GAChBtY,SACEyY,eAAgB,6BAChBC,WAGDN,GACCzhB,EAAAA,EAAAA,IAAI,oBACJA,EAAAA,EAAAA,IAAI,sBAsBX,UAAepC,EAAAA,EAAAA,aAAcC,IAAF,CAC1BmkB,yBACInkB,EAAQkD,EAAAA,OAAc8Z,oBAAoBoH,sBAF/C,EAhBO,YAAuE,IAApC,MAAEpZ,EAAF,uBAASmZ,GAA2B,EAC7E,MAAQ7T,EAAW+T,IAAiBjW,EAAAA,EAAAA,UAAU+V,GAE9C,OACC,mBAAC,GAAD,CACCnZ,MAAQA,EACRsF,UAAYA,EACZC,SAAW8T,GAET/T,IAAc6T,IACf,mBAACR,GAAD,CAA0BC,WAAatT,QCtC3C,IAAexQ,EAAAA,EAAAA,UACdC,EAAAA,EAAAA,aAAY,CAAEC,EAAF,KAA6B,IAAnB,UAAEoE,GAAiB,EACxC,MAAM,qBAAE0V,EAAF,qBAAwBD,GAC7B7Z,EAAQ2Q,IACT,MAAO,CACN2T,UAAWzK,EAAsBzV,GACjCkM,UAAWwJ,EAAsB1V,QAGnCmgB,EAAAA,EAAAA,cAAa,QAAE,UAAED,GAAJ,SAAuBA,MACpC3jB,EAAAA,EAAAA,eAAc,CAAEC,EAAF,SAAY,UAAEwD,GAAd,QAAiC,CAC9CmM,SAAU,IACT3P,EAAU+P,IAAgBM,yBAA0B7M,OAZvD,CAcGogB,KChBG,KAAErc,GAAME,KAAIA,KAAK2T,EAAAA,EAAAA,gBACtB,0CAGKyI,GAAyC,QAAE,MAAEzZ,EAAF,UAAS5G,GAAX,SAC9C,mBAAC+D,GAAD,MACC,mBAAC,GAAD,CAAmB6C,MAAQA,EAAQ5G,UAAYA,MAIjDqgB,GAAuCpc,KAAOA,GAE9C,YCbA,IAAevI,EAAAA,EAAAA,UACdC,EAAAA,EAAAA,aAAcC,IAAF,CACXsQ,UAAWtQ,EAAQkD,EAAAA,OAAcwhB,+BAElC/jB,EAAAA,EAAAA,eAAgBC,IACf,MAAM,qBAAE+jB,EAAF,sBAAwBC,GAC7BhkB,EAAUsC,EAAAA,OACX,MAAO,CACNqN,SAAYsU,GACXA,EAAYF,IAAyBC,SAKxCE,EAAAA,EAAAA,mBAAmB,UAdpB,CAeGN,ICZH,IAAe1kB,EAAAA,EAAAA,UACdC,EAAAA,EAAAA,aAAY,CAAEC,EAAF,KAA+B,IAArB,YAAEyF,GAAmB,EAC1C,MAAM,gBAAEc,GAAoBvG,EAAQ2Q,IACpC,MAAO,CACNL,UAAW/J,EAAiBd,QAG9B9E,EAAAA,EAAAA,eAAc,CAAEC,EAAF,SAAY,YAAE6E,GAAd,QAAmC,CAChD8K,SAAU,IAAM3P,EAAU+P,IAAgBnL,cAAeC,OAR3D,CAUG+e,IC4BH,IAAezkB,EAAAA,EAAAA,aAAcC,IAC5B,MAAM,kBAAEgd,GAAsBhd,EAAQkD,EAAAA,QAChC,gBAAEuX,GAAoBza,EAAQ2Q,IAEpC,MAAO,CAENoU,+BAC4C5mB,IAA3C6e,IAAoBoH,mBACrB5gB,UAAWiX,OARb,EA/BO,YAIH,IAJ8B,0BACjCsK,EADiC,UAEjCvhB,KACGwhB,GACA,EAEH,MAAMC,GAAsB7T,EAAAA,EAAAA,QAC3B5N,GACA,QAAE,GAAEmS,GAAJ,QAAqB,eAAPA,KAGf,OAAOoP,GAA4D,IAA/BE,EAAoBnoB,QAKvD,mBAAC,GAA6BkoB,EAC3BD,IACD,mBAAC,GAAD,CAA0B/Z,OAAQ7I,EAAAA,EAAAA,IAAI,oBAErCsN,EAAAA,EAAAA,KAAKwV,GAAqB,QAAE,GAAEtP,EAAF,MAAMpT,GAAR,SAC3B,mBAAC,GAAD,CACC9E,IAAMkY,EACN3K,MAAQzI,EACR6B,UAAa,YAAYuR,UAZrB,QCIT,GAxBA,YAAoE,IAAtC,WAAEuP,EAAF,MAAc9lB,EAAd,aAAqB+lB,GAAiB,EACnE,OACC,yBAAIzd,UAAU,sCACXwd,EAAWzV,KAAOtO,IACnB,yBACC1D,IAAM0D,EAAUhB,KAChBuH,UAAU,4CAEV,mBAAC,EAAA0d,gBAAD,CACCpa,OACC,mCACG7J,EAAUoB,OACZ,mBAAC,EAAA8iB,UAAD,CAAWre,KAAO7F,EAAU6F,QAG9ByJ,QAAUrR,EAAM+E,SAAUhD,EAAUhB,MACpCoQ,UAAW+U,EAAAA,EAAAA,SAASH,EAAchkB,EAAUhB,aC+ElD,GAtFA,SAASolB,EAAT,GAAuD,IAAxB,MAAEhjB,EAAF,WAAS2iB,GAAe,EACtD,MAAMM,GAAaC,EAAAA,EAAAA,eAAeF,IAC5B,yBAAEG,EAAF,iBAA4BC,IAAqB1iB,EAAAA,EAAAA,YACpDjD,IACD,MAAM,kBAAEgd,GAAsBhd,EAAQkD,EAAAA,QAChC,oBAAEyW,GAAwB3Z,EAAQ2Q,IACxC,MAAO,CACN+U,yBACC1I,IAAoB0I,yBACrBC,iBAAkBhM,OAGpB,IAEKiM,GAAqBrX,EAAAA,EAAAA,UAAS,KACD,IAA7BmX,EACGR,EAEDA,EAAW9T,QAAQ,IAAgB,IAAd,KAAEjR,GAAY,EACzC,OAAOgE,EAAAA,EAAAA,UAAUuhB,GAA4B,GAAIvlB,OAEhD,CAAEulB,EAA0BR,KACzB,eAAE3S,EAAF,eAAkBM,IAAmB/P,EAAAA,EAAAA,aAAa6N,IAClDkV,GAAgBhX,EAAAA,EAAAA,cAAa,CAAEvN,EAAWwkB,KAC1CA,EACJvT,EAAgBjR,GAEhBuR,EAAgBvR,KAEf,IACGykB,GAAmBlX,EAAAA,EAAAA,cACtBiX,IACD,MAAMtT,GAAa/C,EAAAA,EAAAA,KAAKyV,EAAY,QAC/BY,EACJvT,EAAgBC,GAEhBK,EAAgBL,KAGlB,CAAE0S,IAGH,IAAOU,EAAmB9oB,OACzB,OAAO,KAGR,MAAMkpB,GAAoBrT,EAAAA,EAAAA,UACzBlD,EAAAA,EAAAA,KAAKmW,EAAoB,WACtBD,GAGEM,EAAU,2CAA6CT,EAEvDU,EAAeF,EAAkBlpB,SAAW8oB,EAAmB9oB,OAErE,IAAIqpB,EASJ,OAPCA,EADID,EACU,OACHF,EAAkBlpB,OAAS,EACxB,QAEA,SAId,0BACCqM,KAAK,QACL,kBAAkB8c,EAClBve,UAAU,sCAEV,mBAAC,EAAA0d,gBAAD,CACC3U,QAAUyV,EACV3V,SAAWwV,EACXre,UAAU,0CACV,eAAeye,EACfnb,OAAQ,2BAAM2K,GAAKsQ,GAAY1jB,MAEhC,mBAAC,GAAD,CACC2iB,WAAaU,EACbxmB,MAAQ4mB,EACRb,aAAeU,MCWnB,IAAe9lB,EAAAA,EAAAA,aAAcC,IAC5B,MAAM,cACLomB,EADK,cAELC,EAFK,gBAGLnmB,EAHK,qBAILomB,GACGtmB,EAAQumB,EAAAA,QACN,oBAAE5M,GAAwB3Z,EAAQ2Q,IAOlCuU,EAAakB,IACbT,EAAmBhM,IAAsBvI,QAAUoV,GACjDtB,EAAW1K,MACfiM,GAAqBA,EAAgBtmB,OAASqmB,MAG5CE,EACLxpB,MAAMC,QAASwoB,IAAsBA,EAAiB7oB,OAEvD,MAAO,CACNooB,WAAAA,EACAyB,WAAYN,IACZnmB,gBAAAA,EACAomB,qBAAAA,EACAI,qBAAAA,KA5BF,EAzFA,YAMI,IANmB,WACtBxB,EADsB,WAEtByB,EAFsB,gBAGtBzmB,EAHsB,qBAItBomB,EAJsB,qBAKtBI,GACG,EACH,MAAME,GAAiBC,EAAAA,EAAAA,aAAa7U,GAAAA,MAAO,MACnC8U,EAAQC,IAAc3Y,EAAAA,EAAAA,UAAU,IA2BxC,OAtBA8W,EAAaA,EAAW9T,QACrBjQ,GACDjB,EAAiBiB,EAAW,YAAY,MACpC2lB,GAAUR,EAAsBnlB,EAAW2lB,OAC3C3lB,EAAU6lB,SACb7iB,EAAAA,EAAAA,UAAUhD,EAAU6lB,OAAQ,yBAI/Bpc,EAAAA,EAAAA,YAAW,KACV,IAAOkc,EACN,OAED,MAAMG,EAAQ/B,EAAWpoB,OACnBoqB,GAAsBC,EAAAA,EAAAA;;CAE3BC,EAAAA,EAAAA,IAAI,mBAAoB,oBAAqBH,GAC7CA,GAEDL,EAAgBM,KACd,CAAEhC,EAAWpoB,OAAQgqB,EAAQF,KAG/B,0BAAKlf,UAAU,sCACTgf,IACJ,0BAAKhf,UAAU,mDACZyf,EAAAA,EAAAA;;CAEDC,EAAAA,EAAAA,IACC,sBACA,wBACAV,GAEDA,KAIH,mBAAC,EAAAW,cAAD,CACCrc,OAAQ7I,EAAAA,EAAAA,IAAI,sBACZmlB,aAAcnlB,EAAAA,EAAAA,IAAI,sBAClB/C,MAAQ0nB,EACRvW,SAAagX,GAAgBR,EAAWQ,GACxC7f,UAAU,qCAEX,0BACCK,SAAS,IACToB,KAAK,SACL,cAAahH,EAAAA,EAAAA,IAAI,yBACjBuF,UAAU,oCAEc,IAAtBwd,EAAWpoB,SACZ,wBAAG4K,UAAU,wCACVvF,EAAAA,EAAAA,IAAI,qBAGNwkB,EAAWlX,KAAOkS,IACnB,mBAAC,GAAD,CACClkB,IAAMkkB,EAAS/L,KACfrT,MAAQof,EAASpf,MACjB2iB,YAAa9T,EAAAA,EAAAA,QAAQ8T,EAAY,CAChCvD,SAAUA,EAAS/L,YAItB,mBAAC,GAAD,CACCrT,OAAQJ,EAAAA,EAAAA,IAAI,iBACZ+iB,YAAa9T,EAAAA,EAAAA,QACZ8T,GACA,QAAE,SAAEvD,GAAJ,SAAsBA,YC5Db,SAAS6F,KACvB,MAAMxZ,GAAkBC,EAAAA,EAAAA,kBAAkB,WACpC,WAAEX,IAAexK,EAAAA,EAAAA,aAAa6N,IAC9BqJ,GAAgB/W,EAAAA,EAAAA,YACnBjD,GAAYA,EAAQ2Q,IAAgBqJ,cANrB,0BAOjB,IAEKyN,GAA6BxkB,EAAAA,EAAAA,YAChCjD,IACD,MAAM,kBAAEgd,GAAsBhd,EAAQkD,EAAAA,QAChC,cAAEwV,EAAF,gBAAiBnS,GAAoBvG,EAAQ2Q,IAC7CkB,EAAO6G,IACPqE,EAAuBC,IAAoBC,mBAEjD,OADqB1W,EAAiB,cAGrCyH,GACA+O,GACS,WAATlL,IAGF,CAAE7D,IAEGD,GAAWQ,EAAAA,EAAAA,UAChB,IAAM,CACL,CACCpO,KAAM,UACNwO,UAAUxM,EAAAA,EAAAA,IAAI,WACdgK,SACC,mCACG6B,IACD,mBAAC,GAAD,CACCzL,OAAQJ,EAAAA,EAAAA,IAAI,cACZiO,aAAcjO,EAAAA,EAAAA,IACb,2CAGD,mBAAC,GAAD,CACCkO,MAAOlO,EAAAA,EAAAA,IACN,iDAED6I,OAAQ7I,EAAAA,EAAAA,IACP,qCAMJ,mBAAC,GAAD,CACCI,OAAQJ,EAAAA,EAAAA,IAAI,cACZiO,aAAcjO,EAAAA,EAAAA,IACb,+EAGD,mBAAC,GAAD,CACCsD,YAAY,YACZ4K,MAAOlO,EAAAA,EAAAA,IACN,yDAED6I,OAAQ7I,EAAAA,EAAAA,IAAI,qBAEb,mBAAC,GAAD,CACCsD,YAAY,iBACZuF,OAAQ7I,EAAAA,EAAAA,IAAI,2BACZkO,MAAOlO,EAAAA,EAAAA,IACN,6CAGF,mBAAC,GAAD,CACCsD,YAAY,wBACZ4K,MAAOlO,EAAAA,EAAAA,IACN,iDAED6I,OAAQ7I,EAAAA,EAAAA,IAAI,4BAEb,mBAAC,GAAD,CACCsD,YAAY,YACZ4K,MAAOlO,EAAAA,EAAAA,IACN,iDAED6I,OAAQ7I,EAAAA,EAAAA,IAAI,2BAEb,mBAAC,GAAD,CACCsD,YAAY,cACZ4K,MAAOlO,EAAAA,EAAAA,IACN,yCAED6I,OAAQ7I,EAAAA,EAAAA,IAAI,sBAEXslB,IACD,mBAAC,GAAD,CACChiB,YAAY,uBACZ4K,MAAOlO,EAAAA,EAAAA,IACN,wDAED6I,OAAQ7I,EAAAA,EAAAA,IAAI,kCAOlB,CACChC,KAAM,SACNwO,UAAUxM,EAAAA,EAAAA,IAAI,UACdgK,SACC,oCACC,mBAAC,GAAD,CACC5J,OAAQJ,EAAAA,EAAAA,IAAI,sBACZiO,aAAcjO,EAAAA,EAAAA,IACb,qFAGD,mBAAC,GAAD,CACCsD,YAAY,iBACZ4K,MAAOlO,EAAAA,EAAAA,IACN,yDAED6I,OAAQ7I,EAAAA,EAAAA,IAAI,4BAEb,mBAAC,GAAD,CACCsD,YAAY,uBACZ4K,MAAOlO,EAAAA,EAAAA,IACN,mEAED6I,OAAQ7I,EAAAA,EAAAA,IACP,wCAIH,mBAAC,GAAD,CACCI,OAAQJ,EAAAA,EAAAA,IAAI,kBACZiO,aAAcjO,EAAAA,EAAAA,IACb,6GAGD,mBAAC,GAAD,SAKJ,CACChC,KAAM,SACNwO,UAAUxM,EAAAA,EAAAA,IAAI,UACdgK,SACC,oCACC,mBAAC,GAAD,CACC5J,OAAQJ,EAAAA,EAAAA,IAAI,qBACZiO,aAAcjO,EAAAA,EAAAA,IACb,wCAGD,mBAAC,QAAD,OACA,mBAAC,EAAAulB,eAAD,CACCC,gBAAkB,CAAExb,EAASyb,KAC5B,mBAAC,GAAD,CACC5c,OAAQlM,EAAAA,EAAAA,KAAK8oB,EAAU,CACtB,SACA,cAEDxjB,UAAa,kBAAkBwjB,EAAShS,YAI3C,mBAAC,EAAAiS,uBAAD,MACC,mBAAC,GAAD,CACC7c,OAAQ7I,EAAAA,EAAAA,IAAI,kBACZiC,UAAU,qBAGZ,mBAAC,EAAA0jB,iBAAD,MACC,mBAAC,GAAD,CACC9c,OAAQ7I,EAAAA,EAAAA,IAAI,WACZiC,UAAU,mBAGZ,mBAAC,EAAA2jB,qBAAD,CACCC,YAAc,CAAE,WAAY,gBAE5B,mBAAC,GAAD,CACChd,OAAQ7I,EAAAA,EAAAA,IAAI,cACZiC,UAAU,uBAGZ,mBAAC,EAAA6jB,oBAAD,MACC,mBAAC,GAAD,CACCjd,OAAQ7I,EAAAA,EAAAA,IAAI,mBACZiC,UAAU,uBAIb,mBAAC,GAAD,CACC7B,OAAQJ,EAAAA,EAAAA,IAAI,cACZiO,aAAcjO,EAAAA,EAAAA,IACb,wCAON,CAAE6L,EAAiByZ,IAGpB,OAAOzN,GAKN,mBAAC3M,GAAD,CAAkBC,WAAaA,IAC9B,mBAACQ,GAAD,CAAsBC,SAAWA,KAL3B,KCrNF,MAAMma,WAAmBhgB,EAAAA,UAC/BigB,cACCC,SAAUvrB,WAEV6C,KAAKiE,MAAQ,CACZ0kB,UAAW,MAIbC,mBAAoBC,GACnB,MAAM,OAAEC,EAAF,WAAUC,EAAV,SAAsBzS,EAAtB,aAAgCM,GAAiB5W,KAAKwB,OACtD,UAAEmnB,GAAc3oB,KAAKiE,MAIP,UAAf8kB,GAA4BnS,EAM9BkS,IAAWD,EAAUC,QAAUA,IAAWH,GAC7B,eAAfI,IACAD,GAEA9oB,KAAKgpB,cAAeF,GATpB9oB,KAAKipB,YAAaH,EAAQxS,GAmB5B2S,YAAaH,EAAQxS,GACpB3W,OAAO2U,SAASwI,KA5CX,SAA4BgM,EAAQxS,GAC1C,OAAOyG,EAAAA,EAAAA,cAAc,WAAY,CAChCmM,QAAS,EACTlM,UAAW1G,EACX6S,IAAKL,IAwCkBM,CAAmBN,EAAQxS,GAYnD0S,cAAeF,GACdnpB,OAAO0pB,QAAQC,aACd,CAAErT,GAAI6S,GACN,QAAUA,EAvEN,SAAyBA,GAC/B,OAAO/L,EAAAA,EAAAA,cAAc,WAAY,CAAEpJ,KAAMmV,EAAQ5kB,OAAQ,SAuEvDqlB,CAAgBT,IAGjB9oB,KAAKwpB,UAAU,KAAM,CACpBb,UAAWG,MAIbjM,SACC,OAAO,MAIT,UAAexc,EAAAA,EAAAA,aAAcC,IAC5B,MAAM,eAAEsT,EAAF,aAAkBgD,GAAiBtW,EAAQkD,EAAAA,OAC3CmQ,EAAOC,IACb,IAAI,GAAEqC,EAAF,OAAMwT,EAAN,KAAcznB,GAAS2R,EAM3B,MALmB,CAAE,cAAe,oBAAqBlP,SAAUzC,KAElEiU,EAAKtC,EAAK+V,OAGJ,CACNZ,OAAQ7S,EACR8S,WAAYU,EACZnT,SAAUtU,EACV4U,aAAcA,OAbhB,CAeK4R,ICxGL,IALC,mBAAC,EAAA1lB,IAAD,CAAKC,MAAM,6BAA6BC,QAAQ,gBAC/C,mBAAC,EAAAC,KAAD,CAAMnE,EAAE,sxBC2GV,GAvFA,YAA4D,IAA9B,YAAEyM,EAAF,KAAejE,EAAf,KAAqBwV,GAAS,EAC3D,MAAM,SAAEvS,EAAF,qBAAYof,EAAZ,SAAkCrT,EAAlC,YAA4CsT,IAAgBrmB,EAAAA,EAAAA,YAC/DjD,IACD,MAAM,mBAAEiW,GAAuBjW,EAAQkD,EAAAA,QACjC,gBAAEqD,GAAoBvG,EAAQ2Q,KAC9B,gBAAE4Y,EAAF,YAAmBC,EAAnB,YAAgCC,GACrCzpB,EAAQwV,GAAAA,OACHkU,EACLH,EAAiB,OAAQ,sBAAkBprB,IAAe,GAE3D,MAAO,CACN8L,SAAU1D,EAAiB,kBAC3B8iB,qBAAsBI,EAAa,kBAAmB,CACrD,OACA,sBACAtrB,IAED6X,SAAUwT,EAAavT,KACvBqT,YAAaI,EAASC,iBAGxB,IAGKC,GAAgBC,EAAAA,EAAAA,oBAEtB,IAAO5f,IAAc+L,EACpB,OAAO,KAGR,IAAI8T,GAAa,mBAAC,EAAAC,KAAD,CAAMtc,KAAK,OAAOzG,KAAOgjB,KASrCV,IACJQ,GACC,mBAAC,uBAAD,CACCG,UAAaL,GAVD,CACdM,OAAQ,CACPC,MAAO,KACPC,WAAY,CAAE1oB,KAAM,QAAS2oB,SAAU,SAQtCC,KAAMnoB,EAAAA,EAAAA,IAAI,aACVuF,UAAU,4CACV6iB,IAAMjB,KAKJD,IACJS,EAAa,MAIT9iB,IACJ8iB,GAAa,mBAAC,EAAAC,KAAD,CAAMtc,KAAK,OAAOzG,KAAOA,KAGvC,MAAMrK,EAAUmL,GAAAA,CAAY,CAC3B,mCAAmC,EACnC,WAAYwhB,IAGb,OACC,mBAAC,uBAAD,CAAYkB,WAAW,WACtB,mBAAC,EAAAxoB,OAAD,CACC0F,UAAY/K,EACZ6f,KACCA,MAAAA,EAAAA,GACAC,EAAAA,EAAAA,cAAc,WAAY,CACzBC,UAAW1G,EAASJ,OAGtB5K,OAAQlM,EAAAA,EAAAA,KACPkX,EACA,CAAE,SAAU,eACZ7T,EAAAA,EAAAA,IAAI,SAEL8I,YAAcA,GAEZ6e,KCjGN,IALC,mBAAC,EAAAtnB,IAAD,CAAKE,QAAQ,YAAYD,MAAM,+BAC9B,mBAAC,EAAAE,KAAD,CAAMnE,EAAE,kFCIV,IALC,mBAAC,EAAAgE,IAAD,CAAKC,MAAM,6BAA6BC,QAAQ,cAC/C,mBAAC,EAAAC,KAAD,CAAMnE,EAAE,wDCoBJ2jB,GAAmBD,IACxBA,EAAMC,kBA0IP,GAvIA,WACC,MAAMsI,GAAiB/f,EAAAA,EAAAA,WACjB,oBAAEqK,EAAF,oBAAuBC,IAC5BlS,EAAAA,EAAAA,aAAa6N,KACR,kBACL+Z,EADK,iBAEL5P,EAFK,kBAGL6P,EAHK,eAIL3gB,EAJK,eAKL4gB,EALK,iBAMLC,IACG5nB,EAAAA,EAAAA,YAAajD,IAChB,MAAM,iBAAE8qB,EAAF,qBAAoBC,EAApB,qBAA0CC,GAC/ChrB,EAAQK,EAAAA,QACH,kBAAE2c,GAAsBhd,EAAQkD,EAAAA,QAChC,cAAEwV,EAAF,gBAAiBnS,EAAjB,iBAAkC4U,GACvCnb,EAAQ2Q,KACH,0BAAE6M,GAA8Bxd,EAAQud,GAAAA,OAE9C,MAAO,CAENmN,kBACqB,WAApBhS,KACAsE,IAAoBC,oBACpB6N,EACCC,EAAsBC,MAExBlQ,iBAAkB9a,EAAQ2Q,IAAgBmK,mBAC1C6P,kBAAuC,SAApBjS,IACnB1O,eAAgBzD,EAAiB,kBACjCqkB,eAAgBzP,IAChB0P,iBAAkBrN,EACjB,sCAGA,IACGxP,GAAkBC,EAAAA,EAAAA,kBAAkB,UACpCgd,GAAiBhd,EAAAA,EAAAA,kBAAkB,QAGnCid,GAAmB/oB,EAAAA,EAAAA,IAAI,kBAEvBgpB,GAAiBtc,EAAAA,EAAAA,cACtB,IAAMmG,GAAuB4V,IAC7B,CAAE5V,EAAqB4V,IAElBQ,GACL,oCACC,mBAAC,EAAAC,YAAD,CACClkB,GAAKmkB,EAAAA,gBACLC,wBAA0BZ,EAC1Ba,mBAAqBxhB,IAAoBihB,EACzChgB,aAAgBjB,EAChB/H,QAAU+H,EAAiB,gBAAa7L,KAEzC,mBAAC,EAAAktB,YAAD,CACClkB,GAAKnF,EAAAA,OACL0F,UAAU,6CACVV,KAAOykB,GACPzH,SAAW2G,EACX5f,UAAY6f;kFAEZ5f,OAAQ7I,EAAAA,EAAAA,IAAI,aACZD,QAAUipB,EACVhgB,SAAW0f,EACX5f,aAAgBjB,EAChB/H,QAAU+H,EAAiB,gBAAa7L,KAIrCutB,GAAe7c,EAAAA,EAAAA,cAAa,KAC5BiM,EAEJ2P,EAAe5f,QAAQ2V,QAEvBzL,GAAqB,KAEpB,CAAE+F,EAAkB/F,IAGjB4W,GAAYC,EAAAA,EAAAA,IACjB,wBACA,2CAEKC,EAAe/Q,GAAiC3Y,EAAAA,EAAAA,IAAI,UAAlBA,EAAAA,EAAAA,IAAI,OAE5C,OACC,mBAAC,EAAA2pB,iBAAD,CACCpkB,UAAU,2BACV,aAAawjB,IAEb,0BAAKxjB,UAAU,mCACd,mBAAC,EAAA2jB,YAAD,CACCjoB,IAAMqnB,EACNtjB,GAAKnF,EAAAA,OACL0F,UAAU,4CACVzF,QAAQ,UACR8I,UAAY+P,EACZiR,YAAc5J,GACdjgB,QAAUwpB,EACV1H,UAAa0G,EACb1jB,KAAOglB,GACPhhB,MAAQhB,EAAiB6hB,EAAaF,EACtC1gB,aAAgBjB,KAEbihB,IAAoBjhB,KACvB,mCACGgE,IACD,mBAAC,EAAAqd,YAAD,CACClkB,GAAK8kB,EAAAA,aACLhhB,aAAgBjB,EAChB/H,QACC+H,EAAiB,gBAAa7L,EAE/B6lB,SAAW2G,KAGb,mBAAC,EAAAU,YAAD,CACClkB,GAAK+kB,EAAAA,kBACLjhB,aAAgBjB,EAChB/H,QAAU+H,EAAiB,gBAAa7L,KAEzC,mBAAC,EAAAktB,YAAD,CACClkB,GAAKglB,EAAAA,kBACLlhB,aAAgBjB,EAChB/H,QAAU+H,EAAiB,gBAAa7L,IAEvCitB,MC3IFgB,GAAQ,CACb,CACChtB,MAAO,SACP4L,OAAO7I,EAAAA,EAAAA,IAAI,kBAEZ,CACC/C,MAAO,OACP4L,OAAO7I,EAAAA,EAAAA,IAAI,iBAqDb,GAjDA,WACC,MAAM,SACLgJ,EADK,qBAEL4R,EAFK,qBAGLsP,EAHK,kBAIL5nB,EAJK,KAKLoN,IACG5O,EAAAA,EAAAA,YACDjD,IAAF,CACCmL,SAAUnL,EACTud,GAAAA,OACCC,0BAA2B,8BAC7BT,qBACC/c,EAAQkD,EAAAA,OAAc8Z,oBAAoBC,mBAC3CoP,qBACCrsB,EAAQkD,EAAAA,OAAc8Z,oBAAoByE,mBAC3Chd,kBAAmBzE,EAAQ2Q,IAAgBlM,oBAC3CoN,KAAM7R,EAAQ2Q,IAAgB+H,mBAE/B,KAEK,iBAAE9G,IAAqB9O,EAAAA,EAAAA,aAAa6N,IAE1C,GAAKlM,EACJ,OAAO,KAGR,IAAOsY,IAA0BsP,EAChC,OAAO,KAGR,MAAMC,EAAUF,GAAM3c,KAAO8c,GACvBA,EAAOntB,QAAUyS,EACd,IAAK0a,EAAQphB,SAAAA,GAEdohB,IAGR,OACC,mBAAC,EAAArQ,UAAD,CAAWlR,OAAQ7I,EAAAA,EAAAA,IAAI,YACtB,mBAAC,EAAAqqB,gBAAD,CACCF,QAAUA,EACVltB,MAAQyS,EACR3C,SAAW0C,MC7DA,SAAS6a,KACvB,MAAM,UAAE5b,IAAc/N,EAAAA,EAAAA,aAAa6N,IACnC,OACC,mBAAC,EAAApN,SAAD,CACCrB,QAAU,KACT2O,EAAW,4BAGV1O,EAAAA,EAAAA,IAAI,gBC4BT,SAvCA,WAEC,OADwB8L,EAAAA,EAAAA,kBAAkB,WAMzC,mBAAC,EAAAiO,UAAD,CAAWlR,OAAQ4gB,EAAAA,EAAAA,IAAI,OAAQ,UAC9B,mBAAC,EAAAvP,yBAAD,CACCxX,MAAM,iBACN1E,KAAK,eACL6K,OAAQ7I,EAAAA,EAAAA,IAAI,eACZuqB,MAAOvqB,EAAAA,EAAAA,IACN,yDAEDwqB,kBAAmBxqB,EAAAA,EAAAA,IAAI,yBACvByqB,oBAAqBzqB,EAAAA,EAAAA,IAAI,8BAE1B,mBAAC,EAAAka,yBAAD,CACCxX,MAAM,iBACN1E,KAAK,YACL6K,OAAQ7I,EAAAA,EAAAA,IAAI,kBACZuqB,MAAOvqB,EAAAA,EAAAA,IAAI,gCACXwqB,kBAAmBxqB,EAAAA,EAAAA,IAAI,4BACvByqB,oBAAqBzqB,EAAAA,EAAAA,IAAI,iCAE1B,mBAAC,EAAAka,yBAAD,CACCxX,MAAM,iBACN1E,KAAK,iBACL6K,OAAQ7I,EAAAA,EAAAA,IAAI,mBACZuqB,MAAOvqB,EAAAA,EAAAA,IAAI,4BACXwqB,kBAAmBxqB,EAAAA,EAAAA,IAAI,6BACvByqB,oBAAqBzqB,EAAAA,EAAAA,IAAI,+BACzBgJ,SAAW2Q,EAAAA,gBAAAA,UAA2B,QA9BjC,MC4CT,GApCiB,IAA0B,IAAxB,eAAE9R,GAAsB,EAC1C,MAAMgE,GAAkBC,EAAAA,EAAAA,kBAAkB,SAE1C,OACC,mBAACnB,GAAD,CACC5D,YAAc,CACb+B,aAAejB,KACVA,GAAkB,CAAE/H,QAAS,eAGjC,QAAE,QAAEiJ,GAAJ,SACD,mCACGlB,IAAoBgE,IACrB,mBAAC,QAAD,CACCtG,UAAYsC,GAAkB,mBAC9BnF,MAAM,oBAGR,mBAAC,GAAD,OACA,mBAAC,GAAD,OACA,mBAAC,QAAD,CACC1E,KAAK,kCACL6K,OAAQ7I,EAAAA,EAAAA,IAAI,WACZgF,GAAK+U,EAAAA,UACL3T,UAAY,CAAErG,QAASgJ,MAExB,mBAAC,QAAD,CAAyB3C,UAAY,CAAE2C,QAAAA,MACvC,mBAAC,EAAAgR,UAAD,MACC,mBAACuQ,GAAD,YCmCN,IAAe3sB,EAAAA,EAAAA,UACdC,EAAAA,EAAAA,aAAcC,IAAF,CACX6sB,kBAAkB/tB,EAAAA,EAAAA,KACjBkB,EAAQkD,EAAAA,OAAcoQ,iBACtB,CAAE,SAAU,sBACZ,GAEDwZ,iBAAkB9sB,EAAQkD,EAAAA,OAAc6pB,6BACxCC,UAAWhtB,EAAQkD,EAAAA,OAAc+pB,uBACjCC,YAAaltB,EAAQkD,EAAAA,OAAciqB,yBACnCzI,wBACC1kB,EAAQkD,EAAAA,OAAcwhB,0BACvB9K,uBACC5Z,EAAQ2Q,IAAgBiJ,yBACzBwT,YAAaptB,EAAQkD,EAAAA,OAAcmqB,8BAEpC1sB,EAAAA,EAAAA,eAAgBC,IACf,MAAM,qBAAEoQ,GAAyBpQ,EAAU+P,IAC3C,MAAO,CACNK,qBAAAA,MAnBH,EAlEO,YAYH,IAZuC,aAC1Csc,EAD0C,cAE1CC,EAF0C,iBAG1CV,EAH0C,iBAI1CC,EAJ0C,UAK1CE,EAL0C,YAM1CE,EAN0C,wBAO1CxI,EAP0C,uBAQ1C9K,EAR0C,YAS1CwT,EAT0C,qBAU1Cpc,EAV0C,+BAW1Cwc,GACG,EACH,MAAMC,EAAY,SACZC,EAAY,SACZC,GAA8B1f,EAAAA,EAAAA,kBAAkB,SAAU,KAChE,IAAI2f,EAsCJ,OATCA,EAJAV,GACEE,GAAeN,GACfE,IAAeH,IAAsBc,EAE3BD,EACDC,GAEAjJ,EADC+I,EAIAC,GAIZ,mBAAC,EAAAG,kBAAD,CACCP,aAAeA,EACfC,cAAgBA,EAChBhpB,OAASqV,EACTkU,SAAWF,IAAcH,EACzBM,SAAW/c,EACXwc,+BAAiCA,OCzDrB,SAASQ,KACvB,MAAM,mBACLC,EADK,eAELC,EAFK,SAGLxqB,EAHK,WAILyqB,EAJK,WAKL9pB,IACGpB,EAAAA,EAAAA,YAAajD,IAChB,MAAM,uBAAEmD,GAA2BnD,EAAQkD,EAAAA,QACrC,YAAEsmB,GAAgBxpB,EAAQwV,GAAAA,OAC1BQ,EAAWwT,EAAarmB,EAAwB,SAEtD,MAAO,CACN8qB,mBAAoBjuB,EAAQ2Q,IAAgB8F,eAC5C/S,SAAU1D,EAAQ2Q,IAAgBiK,oBAClCsT,eAAgBluB,EAAQkD,EAAAA,OAAckrB,uBACtCD,YAAYrvB,EAAAA,EAAAA,KAAKkX,EAAU,CAAE,aAAc,GAC3C3R,WACCrE,EAAQ2Q,IAAgBkK,wCAExB,KACK/F,mCAAoCuZ,IAC3CvrB,EAAAA,EAAAA,aAAa6N,IAEd,OACC,mBAAC,+BAAD,CACCkU,UAAYqJ,EACZxmB,UAAU,kCACVrD,WAAaA,EACbiqB,cAAgBD,GAEdF,IACD,mBAAC,EAAAjS,UAAD,MACC,0BAAKxU,UAAU,gDACd,mBAAC,EAAA6mB,kBAAD,CACC7mB,UACC,4CAEDyB,KAAK,WACLqlB,oBAAsBP,EACtBQ,iBAAmB/qB,EAAW,UAAOvF,EACrCuwB,aACC,oCACGvsB,EAAAA,EAAAA,IAAI,uBACN,mBAAC,EAAA4nB,KAAD,CAAM/iB,KAAO2V,UCzDtB,MAAMgS,GAAW,qCAETxmB,KAAF,GAAQE,KAAMumB,KAA4B5S,EAAAA,EAAAA,gBAAgB2S,IAE1DE,GAAsB1mB,GAa5B0mB,GAAoBxmB,KAXP,IAAoB,IAAlB,SAAEZ,GAAgB,EAChC,MAAMqnB,GAAOC,EAAAA,EAAAA,uBAASJ,IAGtB,OAFiB/a,QAASkb,EAAKrmB,OAASqmB,EAAKrmB,MAAM3L,SAM5C,mBAAC8xB,GAAD,CAAyBpmB,kBAAgB,IAHxCf,GAQT,YChBA,IALC,mBAAC,EAAAjF,IAAD,CAAKE,QAAQ,YAAYD,MAAM,+BAC9B,mBAAC,EAAAE,KAAD,CAAMnE,EAAE,0DCkBK,SAASwwB,KACvB,MAAM,mBAAEld,IAAuBhP,EAAAA,EAAAA,aAAazC,EAAAA,QACtC,qBAAE4U,IAAyBnS,EAAAA,EAAAA,aAAa6N,KACxC,kBAAEqM,IAAsB/Z,EAAAA,EAAAA,WAAWC,EAAAA,QACnC,qBAAE+rB,EAAF,SAAwBC,IAAapsB,EAAAA,EAAAA,aAAaI,EAAAA,QAClD,mBAAEisB,IAAuBrsB,EAAAA,EAAAA,aAAa0S,GAAAA,QACtC,SAAEF,IAAarS,EAAAA,EAAAA,YAAajD,IACjC,MAAM,kBAAEyE,EAAF,sBAAqB4W,GAC1Brb,EAAQ2Q,IAET,MAAO,CACN2E,SAFkB7Q,IAEK4W,IAA0B,QAEhD,KACK+T,EAAmBC,IAAyBjhB,EAAAA,EAAAA,WAAU,GAE9D,IAAOkH,IAAcA,EAAS8T,MAC7B,OAAO,KAER,IAAIkG,EAAgBha,EAASM,KACxBN,MAAAA,GAAAA,EAAU/S,QACd+sB,EAAgBha,EAAS/S,OAG1B,MAAMgtB,EAAeja,MAAAA,OAAH,EAAGA,EAAUka,eA0B/B,OACC,mBAAC,EAAAtT,UAAD,CAAWxU,UAAU,mDACpB,oCACC,mBAAC,EAAAnE,SAAD,CACCmE,UAAU,sDACV+nB,eAAkBF,EAClBrtB,QAAU,KACTmtB,GAAsB,IAEvB3C,KACC6C,GACGptB,EAAAA,EAAAA,IAAI,mDACJhE,GAGFoxB,GACCptB,EAAAA,EAAAA,IAAI,yBACJA,EAAAA,EAAAA,IAAI,qBAER,mBAAC,8BAAD,CACCoC,OAAS6qB,EACTM,UA7Ca,KAChB5d,IACAmD,GAAsB,GACtBoa,GAAsB,GAEtBH,EAAU,CACT5Z,SAAU,KAEX,MAAMqa,EAAW3S,IACX4S,GAAwBC,EAAAA,EAAAA,QAC7BF,EAASG,oBACT,CAAEC,EAAQpa,IACFA,IAAOL,EAASM,OAGzBqZ,EAAsB,IAClBU,EACHG,mBAAoBF,IAErBT,EAAoB,WAAY,cAAe7Z,EAASK,GAAI,CAC3Dqa,cAAc,KA0BZC,SAAW,KACVZ,GAAsB,MAGrBlI,EAAAA,EAAAA;;CAEDhlB,EAAAA,EAAAA,IACC,4FAEDmtB,MCtFS,SAASY,KACvB,MAAQC,EAAYC,IAAkBhiB,EAAAA,EAAAA,WAAU,IAC1C,SAAEkH,IAAarS,EAAAA,EAAAA,YAAajD,IACjC,MAAM,sBAAEqb,GAA0Brb,EAAQ2Q,IAC1C,MAAO,CACN2E,SAAU+F,OAET,KAEG,iBAAE3F,IAAqB5S,EAAAA,EAAAA,aAAa0S,GAAAA,QACpC,kBAAEwH,IAAsB/Z,EAAAA,EAAAA,WAAWC,EAAAA,QACnC,qBAAE+rB,IAAyBnsB,EAAAA,EAAAA,aAAaI,EAAAA,OAG9C,IAAOoS,EAAS+a,WAAa/a,EAASka,eACrC,OAAO,KAGR,IAAIF,GAAgBntB,EAAAA,EAAAA,IAAI,WAOxB,OANKmT,MAAAA,GAAAA,EAAU/S,MACd+sB,EAAgBha,EAAS/S,MACX+S,IACdga,EAAgBha,EAASM,OAIzB,0BAAKlO,UAAU,sCACd,mBAAC,EAAA4oB,YAAD,CACCtlB,OAAQ7I,EAAAA,EAAAA,IAAI,SACZ/C,MAAQ+wB,EAAa,GAAKb,EAC1Bjf,MAAOlO,EAAAA,EAAAA,IACN,4EAEDoO,SAAaggB,IAEZ,IAAOA,IAAcJ,EAEpB,YADAC,GAAe,GAGhBA,GAAe,GAEf,MAAMT,EAAW3S,IACX4S,GAAwBY,EAAAA,EAAAA,WAC7Bb,EAASG,oBACT,CAAEW,EAAe9a,IACXA,IAAOL,EAASM,KACb6a,EAEDF,IAGTtB,EAAsB,IAClBU,EACHG,mBAAoBF,IAErBla,EAAkB,WAAY,cAAeJ,EAASK,GAAI,CACzDpT,MAAOguB,KAGTG,OAAS,IAAMN,GAAe,MCjEnB,SAASO,KACvB,MAAM,YAAEvgB,EAAF,MAAe7N,IAAUU,EAAAA,EAAAA,YAAajD,IAC3C,MAAM,sBAAEqb,GAA0Brb,EAAQ2Q,IAC1C,MAAO,CACNpO,MAAO8Y,IAAwB9Y,MAC/B6N,YAAaiL,IAAwBjL,eAEpC,IACH,OAAOA,GAKN,0BAAK1I,UAAU,sCACd,mBAAC,wBAAD,CAASkpB,MAAQ,EAAIC,OAAS,KAC3BtuB,IAEH,mBAAC,qBAAD,CACCmF,UAAU,0CACV+F,KAAK,OACLtG,GAAG,IACHvF,MAAQ,CAAEkvB,UAAW,SAEnB1gB,IAdG,KC2FT,SA5FA,WACC,MAAM,SAAEkF,EAAF,UAAYyb,EAAZ,MAAuBxuB,IAAUU,EAAAA,EAAAA,YAAajD,IACnD,MAAM,kBAAEyE,EAAF,sBAAqB4W,GAC1Brb,EAAQ2Q,KACH,uBAAExN,GAA2BnD,EAAQkD,EAAAA,OAErC8tB,EAAavsB,IAEnB,MAAO,CACN6Q,SAAU0b,EAAa3V,IAA0B,KACjD0V,UAAWC,EACXzuB,MAAOY,EAAwB,SAC5BA,EAAwB,UACxBhB,EAAAA,EAAAA,IAAI,eAEN,KAEG,mBAAE2P,IAAuBhP,EAAAA,EAAAA,aAAazC,EAAAA,QACtC,qBAAE4U,IAAyBnS,EAAAA,EAAAA,aAAa6N,IAE9C,IAAOogB,IAAezb,EACrB,OAAO,KAGR,IAAIga,GAAgBntB,EAAAA,EAAAA,IAAI,WACnBmT,MAAAA,GAAAA,EAAU/S,MACd+sB,EAAgBha,EAAS/S,MACX+S,IACdga,EAAgBha,EAASM,MAG1B,MAAMqb,KACL3b,EAAS4b,QACT5b,EAAS8T,OACT9T,EAASlF,aAGV,OACC,0BAAK1I,UAAU,gCACd,mBAAC,EAAA1F,OAAD,CACC0F,UAAU,gCACVypB,QAAM,EACNlmB,aAAW,EACXD,OAAQmc,EAAAA,EAAAA;;CAEPhlB,EAAAA,EAAAA,IAAI,WACJI,GAEDL,QAAU,KACT4P,IACAmD,GAAsB,KAGrB1S,GAED0uB,GACD,mBAAC,EAAAG,SAAD,CACCjkB,SAAS,gBACTkkB,iBAAiB,uCACjBC,aAAe,QAAE,SAAEvD,GAAJ,SACd,mBAAC,EAAA/rB,OAAD,CACC0F,UAAU,2BACVypB,QAAM,EACNnqB,KAAOuqB,GACPtmB,aAAW,EACX/I,QAAU6rB,EACV/iB,OAAQ7I,EAAAA,EAAAA,IAAI,qBAEVmtB,IAGJkC,cAAgB,KACf,oCACC,mBAACtB,GAAD,OACA,mBAACS,GAAD,OACA,mBAAC3B,GAAD,UAKH,mBAAC,qBAAD,CACCtnB,UAAU,2BACV+F,KAAK,OACL7L,MAAQ,CAAE6vB,WAAY,SAEpBnC,KCPP,GA3EA,YAAsD,IAArC,+BAAE9B,GAAmC,EACrD,MAAM,mBACLS,EADK,uBAELrU,EAFK,SAGLlW,EAHK,eAILsG,EAJK,aAKL0nB,IACGzuB,EAAAA,EAAAA,YACDjD,IAAF,CACCiuB,mBAAoBjuB,EAAQ2Q,IAAgB8F,eAC5CmD,uBACC5Z,EAAQ2Q,IAAgBiJ,yBACzBlW,SAAU1D,EAAQ2Q,IAAgBiK,oBAClC5Q,eACChK,EAAQ2Q,IAAgBpK,gBAAiB,kBAC1CmrB,aACC1xB,EAAQ2Q,IAAgBpK,gBAAiB,gBAE3C,IAGKyH,GAAkBC,EAAAA,EAAAA,kBAAkB,SAEpCtR,EAAUmL,GAAAA,CAAY,mBAAoB,CAC/C,iBAAkB4pB,IAGnB,OACC,0BAAKhqB,UAAY/K,IAChB,mBAAC,QAAD,MACC,mBAAC,GAAD,CAAqBsO,aAAW,MAEjC,0BAAKvD,UAAU,8BACd,mBAAC,GAAD,OACA,mBAAC,GAAD,QAED,0BAAKA,UAAU,+BACVkS,IAMH,mBAAC,EAAA+X,eAAD,CACCrE,aAAeW,EACfV,cAAgB7pB,EAChBsG,eAAiBA,KAGnB,mBAACgkB,GAAD,OACA,mBAAC,EAAAO,kBAAD,CACCC,oBAAsBP,EACtBQ,iBAAmB/qB,EAAW,UAAOvF,KAEtC,mBAAC,GAAD,CACCmvB,aAAeW,EACfV,cAAgB7pB,EAChB8pB,+BACCA,KAGExf,IAAqBhE,KACxB,oCACC,mBAAC,QAAD,CAAkBnF,MAAM,oBACxB,mBAAC,GAAD,CAAUmF,eAAiBA,KAG3BA,IAAoBgE,IACrB,mBAAC,GAAD,CAAUhE,eAAiBA,OClFhC,IALC,mBAAC,EAAAxH,IAAD,CAAKC,MAAM,6BAA6BC,QAAQ,cAC/C,mBAAC,EAAAC,KAAD,CAAMnE,EAAE,uFCYK,SAASozB,KACvB,MAAM,eAAEC,EAAF,mBAAkBC,IAAuB7uB,EAAAA,EAAAA,YAAajD,IAC3D,MAAM,gBAAEuG,EAAF,gCAAmBwU,GACxB/a,EAAQ2Q,IACT,MAAO,CACNkhB,eAAgB9W,IAChB+W,mBAAoBvrB,EAAiB,qBAEpC,KACG,oBAAEwO,IAAwBjS,EAAAA,EAAAA,aAAa6N,IAEvCohB,GAAmB9jB,EAAAA,EAAAA,kBAAkB,SAAU,KAC/C+jB,EAAYD,EAAoC,MAAjBlV,EAAAA,gBAC7BoV,EAAmBC,IAAwBC,EAAAA,EAAAA,yBAAW,CAC7DjnB,QAAS,IAAM6J,GAAqB,GACpCqd,aAAc,OAGTC,GAAa3nB,EAAAA,EAAAA,UAKnB,OAJAE,EAAAA,EAAAA,YAAW,KACVynB,EAAWxnB,QAAQynB,gBACjB,KAGF,4BACClvB,IAAM6uB,GACDC,EAFN,CAGCxqB,UAAU,sCAEV,mBAACsqB,EAAD,CAAStqB,UAAU,4CAClB,mBAAC,EAAA1F,OAAD,CACCgF,KAAOurB,GACPvnB,OAAQ7I,EAAAA,EAAAA,IAAI,wBACZD,QAAU,IAAM6S,GAAqB,OAGvC,0BAAKrN,UAAU,6CACd,mBAAC,wBAAD,CACCoqB,mBAAqBA,EACrBU,uBAAqB,EACrBC,iBAAmBV,EACnB/W,aAAe6W,EAAe7W,aAC9B0X,6BACCb,EAAe5W,eAEhB0X,0BAA4Bd,EAAe3W,YAC3C9X,IAAMivB,MC5CI,SAASO,KACvB,MAAM,oBAAE5d,IAAwBlS,EAAAA,EAAAA,aAAa6N,IAEvCkiB,GAAkBC,EAAAA,EAAAA,iBAAiB,gBACnCC,GAAuBC,EAAAA,EAAAA,kBACvBC,GAAwBD,EAAAA,EAAAA,kBASxBE,EAAW,4CADEzN,EAAAA,EAAAA,eAAemN,MAGlC,OAEC,0BACC,kBAAkBM,EAClBxrB,UAAU,oCACVyrB,UAfF,SAAwBjR,GAClBA,EAAMkR,UAAYC,EAAAA,QAAYnR,EAAMoR,mBACxCpR,EAAMC,iBACNnN,GAAqB,OAcrB,0BACCtN,UAAU,2CACVtE,IAAM2vB,IAEN,6BAAQpd,GAAKud,IAAY/wB,EAAAA,EAAAA,IAAI,eAC7B,mBAAC,EAAAH,OAAD,CACCgF,KAAOa,EACPmD,OAAQ7I,EAAAA,EAAAA,IAAI,2BACZD,QAAU,IAAM8S,GAAqB,OAGvC,0BACCtN,UAAU,4CACVtE,KAAMyJ,EAAAA,EAAAA,cAAc,CACnBomB,EACAJ,MAGD,mBAAC,yBAAD,QCzDJ,MAUA,IATC,mBAAC,EAAArwB,IAAD,CAAKC,MAAM,6BAA6BC,QAAQ,cAC/C,mBAAC,EAAAC,KAAD,CACC+B,SAAS,UACTlG,EAAE,snBACFmG,SAAS,aCkFZ,GA/EuB,IAAuB,IAArB,YAAE4uB,GAAmB,EAC7C,MAAM,mBAAE7iB,IAAuB5N,EAAAA,EAAAA,aAAa6N,IACtC6iB,EAAuB,IAC5B9iB,EAAoB,uBAGf,cAAE+iB,EAAF,eAAiBrX,IAAmBnZ,EAAAA,EAAAA,YAAajD,IAG/C;;AAENyzB,cAJqBzzB,EAAQkD,EAAAA,OAAcwwB,qBAIX9H,EAAAA,EAAAA,IAAI,WAAY,QAChDxP,eAAgBpc,EAAQ2Q,IAAgBlM,uBAEvC,KAEKkvB,EAAmBC,GACV,uBAAhBL;AAEG,EAAEpM,EAAAA,EAAAA,UAAShlB,EAAAA,EAAAA,IAAI,iBAAmBsxB,GAAiB,aACnD,CAAEA,EAAe,KAEbI,EAAgBC,GACP,oBAAhBP;AAEG,EAAEpxB,EAAAA,EAAAA,IAAI,oBAAsB;AAE5B,EAAEA,EAAAA,EAAAA,IAAI,SAAW,KAEb4xB,EAAmBC,GACV,uBAAhBT,EACG,EAAEpxB,EAAAA,EAAAA,IAAI,uBAAyB,aAC/B,EAAEA,EAAAA,EAAAA,IAAI,YAAc,IAGxB,OACC,8BACKia,IACH,8BACC,mBAAC,EAAApa,OAAD,CACCE,QAAUsxB,EACV9rB,UAAa,gCAAgCksB,IAC7C,aAAaD,EACb,aAAaF,GAEXA,IAIHrX,IACD,8BACC,mBAAC,EAAApa,OAAD,CACCE,QAAUsxB,EACV9rB,UAAa,gCAAgCssB,IAC7C,aAAaD,EACb,cAAa5xB,EAAAA,EAAAA,IAAI,cAEfA,EAAAA,EAAAA,IAAI,eAIT,8BACC,mBAAC,EAAAH,OAAD,CACCE,QA3DsB,IAAMwO,EAAoB,mBA4DhDhJ,UAAa,gCAAgCosB,IAC7C,aAAaD,EAEb,cAAa1xB,EAAAA,EAAAA,IAAI;CAIhBA,EAAAA,EAAAA,IAAI,aC/BV,SAAS8xB,GAAT,GAAqD,IAAtB,OAAE1vB,EAAF,QAAUrC,GAAY,EACpD,MAAM8I,GAAQkpB,EAAAA,EAAAA,0BACd,OACC,mBAAC,EAAAlyB,OAAD,CACC0F,UAAU,oCACVzF,QAAQ,WACR,gBAAgBsC,EAEhB,cAAa4iB,EAAAA,EAAAA,UAAShlB,EAAAA,EAAAA,IAAI,yBAA2B6I,GACrD9I,QAAUA,GAER8I,GAKL,SAxDO,WACN,MAAMmpB,GAASzpB,EAAAA,EAAAA,UACf,OACC,mBAAC,EAAA0pB,oBAAD,CACC7X,OAAS,QAAE,QAAE8X,GAAJ,SACR,mBAAC,EAAAC,SAAD,CAAUlxB,IAAM+wB,EAASzsB,UAAU,8BAClC,gCAAQvF,EAAAA,EAAAA,IAAI,gBACRkyB,IACH,gCACC,mBAAC,EAAAE,oBAAD,OAGAF,IACD,mBAAC,EAAAjD,SAAD,CACCjkB,SAAS,cACTkkB,iBAAiB,oCACjBpkB,aAAe,CAIdunB,UAAWL,EAAOtpB,SAEnBunB,cAAY,EACZd,aAAe,QAAE,OAAE/sB,EAAF,SAAUwpB,GAAZ,SACd,mBAACkG,GAAD,CACC1vB,OAASA,EACTrC,QAAU6rB,KAGZyD,cAAgB,QAAE,QAAEtmB,GAAJ,SACf,mBAAC,EAAAupB,eAAD,CAAoBvpB,QAAUA,YCrCvB,SAASwpB,KACvB,OACC,mBAAC,EAAAC,eAAD,MACC,mBAAC,EAAAL,SAAD,MACC,mBAAC,EAAAI,UAAD,QCEW,SAASE,KACvB,MAAMJ,GAAY9pB,EAAAA,EAAAA,UAClB,OACC,mBAAC,EAAAmqB,kBAAD,MACC,mBAAC,EAAAP,SAAD,CAAU5sB,UAAU,0BAA0BtE,IAAMoxB,IACnD,gCAAQryB,EAAAA,EAAAA,IAAI,aACZ,mBAAC,EAAAivB,SAAD,CACCnkB,aAAe,CAAEunB,UAAAA,GACjBrnB,SAAS,cACTkkB,iBAAiB,kCACjBe,cAAY,EACZd,aAAe,QAAE,OAAE/sB,EAAF,SAAUwpB,GAAZ,SACd,mBAAC+G,GAAD,CACCvwB,OAASA,EACTrC,QAAU6rB,KAGZyD,cAAgB,QAAE,QAAEtmB,GAAJ,SACf,mBAAC,EAAA0pB,aAAD,CAAkB1pB,QAAUA,SAQlC,SAAS4pB,GAAT,GAAmD,IAAtB,OAAEvwB,EAAF,QAAUrC,GAAY,EAClD,MAAM8I,GAAQ+pB,EAAAA,EAAAA,wBACRC,GAAYD,EAAAA,EAAAA,sBAAsB,CAAEE,MAAM,IAChD,OACC,mBAAC,EAAAjzB,OAAD,CACC0F,UAAU,kCACVzF,QAAQ,WACR+I,MAAQgqB,EACR/pB,aAAW,EACX,gBAAgB1G,EAEhB,cAAa4iB,EAAAA,EAAAA,UAAShlB,EAAAA,EAAAA,IAAI,mBAAqB6I,GAC/C9I,QAAUA,GAER8I,GCjCL,SAVO,WACN,OACC,mBAAC,EAAAkqB,gBAAD,MACC,mBAAC,EAAAZ,SAAD,MACC,mBAAC,EAAAa,WAAD,SCMJ,GAVO,WACN,OACC,mBAAC,EAAAC,gBAAD,MACC,mBAAC,EAAAd,SAAD,CAAU5sB,UAAU,0BACnB,mBAAC,EAAA2tB,WAAD,SCGJ,GAVO,WACN,OACC,mBAAC,EAAAC,cAAD,MACC,mBAAC,EAAAhB,SAAD,CAAU5sB,UAAU,wBACnB,mBAAC,EAAA6tB,SAAD,SCSJ,GAVO,WACN,OACC,mBAAC,EAAAC,gBAAD,MACC,mBAAC,EAAAlB,SAAD,CAAU5sB,UAAU,0BACnB,mBAAC,EAAA+tB,WAAD,SCMJ,GAVO,WACN,OACC,mBAAC,EAAAC,uBAAD,MACC,mBAAC,EAAApB,SAAD,MACC,mBAAC,EAAAqB,kBAAD,UCJWxtB,KAAF,GAAQE,KAAIA,KAAK2T,EAAAA,EAAAA,gBAAgB,wBA6CxC4Z,GAAuB,QAAE,SAAEnuB,EAAF,UAAYC,GAAd,SAC5B,mBAAC,GAAD,MACC,mBAAC,EAAA4sB,SAAD,CAAU5sB,UAAYA,GAAcD,KAItCmuB,GAAqBvtB,KAAOA,GAE5B,YC/CA,IATC,mBAAC,EAAA7F,IAAD,CAAKE,QAAQ,YAAYD,MAAM,+BAC9B,mBAAC,EAAAE,KAAD,CACC+B,SAAS,UACTC,SAAS,UACTnG,EAAE,6XCYCq3B,IAAgB1zB,EAAAA,EAAAA,IAAI,mBAEX,SAAS2zB,GAAT,GAAgD,IAAd,QAAE5qB,GAAY,EAC9D,MAAM6qB,GAAuB9yB,EAAAA,EAAAA,YAC1BjD,GACDA,EAAQkD,EAAAA,OAAc8Z,oBAAoB+Y,sBAC3C,KAGK,yBAAE1gB,EAAF,+BAA4BH,IACjCpS,EAAAA,EAAAA,aAAa6N,KAENpO,EAAOyzB,IAAa5nB,EAAAA,EAAAA,UAAU,KAE9B2V,EAAQkS,IAAc7nB,EAAAA,EAAAA,WAAU,GAElC8nB,EAAS,KACdF,EAAU,IACV9qB,KA2DD,OACC,mBAAC,EAAAqC,MAAD,CACChL,OAAQJ,EAAAA,EAAAA,IAAI,0BACZsH,YAAatH,EAAAA,EAAAA,IAAI,SACjBqL,eAAiB0oB,EACjBxuB,UAAU,0CAEV,2BACCA,UAAU,uCACVyuB,SAjEYjjB,MAAAA,IAGd,GAFAgP,EAAMC,iBAED4B,EACJ,OAGDkS,GAAW,GAEX,MAAMG,EACLL,MAAAA,EAAAA,GACAM,EAAAA,EAAAA,WAAW,EACVh0B,EAAAA,EAAAA,aACC,aACA,CACCi0B,QAAS,SACThW,OAAQ,CAAEiW,SAAS,IAEpB,EACCl0B,EAAAA,EAAAA,aAAa,oBACbA,EAAAA,EAAAA,aAAa,wBAGfA,EAAAA,EAAAA,aAAa,mBACbA,EAAAA,EAAAA,aACC,aACA,CACCi0B,QAAS,QAEV,EACCj0B,EAAAA,EAAAA,aACC,aACA,CACCie,OAAQ,CAAEiW,SAAS,IAEpB,EAAEl0B,EAAAA,EAAAA,aAAa,sBAEhBA,EAAAA,EAAAA,aAAa,oBAAqB,CACjCie,OAAQ,CAAEiW,SAAS,eAMlBlhB,EAA0B,CAC/BO,MAAM4gB,EAAAA,EAAAA,cAAcj0B,GAASszB,IAC7B1pB,QAASiqB,EACT7zB,MAAOA,GAASszB,KAGjBI,GAAW,GACXC,IAEAhhB,GAAgC,MAc9B,mBAAC,EAAAuhB,KAAD,CAAMC,MAAM,aAAavmB,IAAM,IAC9B,mBAAC,EAAAN,SAAD,MACC,mBAAC,EAAAygB,YAAD,CACCtlB,OAAQ7I,EAAAA,EAAAA,IAAI,QACZ/C,MAAQmD,EACRgO,SAAWylB,EACX1O,YAAcuO,GACd7R,SAAWD,EACX1T,MAAOlO,EAAAA,EAAAA,IACN,8GAMJ,mBAAC,EAAAs0B,KAAD,CAAM7mB,QAAQ,WAAW+mB,UAAW,IACnC,mBAAC,EAAA9mB,SAAD,MACC,mBAAC,EAAA7N,OAAD,CAAQC,QAAQ,WAAWC,QAAUg0B,IAClC/zB,EAAAA,EAAAA,IAAI,aAGR,mBAAC,EAAA0N,SAAD,MACC,mBAAC,EAAA7N,OAAD,CACCC,QAAQ,UACRP,KAAK,SACLqiB,OAASA,EACT,gBAAgBA,IAEd5hB,EAAAA,EAAAA,IAAI,eCxHE,SAASy0B,GAAT,GAAyC,YAAd,QAAE1rB,GAAY,EACvD,MAAM,YACL2rB,EADK,mBAEL/G,EAFK,iBAGLgH,EAHK,qBAILC,EAJK,UAKLC,EALK,QAML3C,IACGpxB,EAAAA,EAAAA,YAAajD,IAChB,MAAM,QAAEi3B,EAAF,gBAAW1N,EAAX,iBAA4B/N,GACjCxb,EAAQwV,GAAAA,OACH0hB,EAAiBl3B,EAAQkD,EAAAA,OAAc8Z,oBACvCma,EAAeF,EAAS,OAAQ,YACnC1N,EAAiB,OAAQ,aACzBprB,EACGi5B,EACLp3B,EAAQkD,EAAAA,OAAcob,sBACtB6Y,MAAAA,OADA,EACAA,EAAcE,gBACTC,EAAqBL,EAAS,SAAU,aAE9C,MAAO,CACNJ,YAAaO,EACbtH,mBAAoBoH,EAAepH,mBACnCgH,iBAAkBQ,EACf9b,EAAkB,WAAY,cAAe,CAC7CkB,UAAW1c,EAAQkD,EAAAA,OAAc+S,qBACjCwF,UAAW,SAEXtd,EACH44B,qBACC/2B,EAAQkD,EAAAA,OAAcC,uBAAwB,YAC/C6zB,UACCM,IACEF,GACFF,EAAeK,qBAChBlD,QACCiD,GACAJ,EAAeK,wBACZv3B,EAAQ2Q,IAAgB0K,2BAE3B,IAEGmc,GAAUjpB,EAAAA,EAAAA,UACf,IACChR,OAAOk6B,QAAS,IACZ3H,KACAvyB,OAAOm6B,aACPZ,MAAAA,EAAAA,EAAoB,IAAKrnB,KAAK,QAAE,KAAEmG,EAAF,MAAQrT,GAAV,QAAuB,CACtDqT,EACArT,EAAMo1B,gBAGLloB,KAAK,QAAImG,EAAMrT,GAAV,QAAyB,CAAEnD,MAAOwW,EAAM5K,MAAOzI,OACzD,CAAEutB,EAAoBgH,IAGjBc,EAAc,UACnBJ,EAAQh3B,MAAQq3B,GAAYA,EAAOz4B,QAAU23B,WAD1B,QAEnBS,EAAQh3B,MAAQq3B,IAAcA,EAAOz4B,SAEhC,SAAE8vB,IAAapsB,EAAAA,EAAAA,aAAaI,EAAAA,QAC5B,+BAAEgS,IAAmCpS,EAAAA,EAAAA,aAAa6N,KAEhDmnB,EAAmBC,IAAyB3pB,EAAAA,EAAAA,WAAU,GAE9D,OACC,0BAAK1G,UAAU,kCACd,mBAAC,uCAAD,CACCnF,OAAQJ,EAAAA,EAAAA,IAAI,YACZkO,MAAOlO,EAAAA,EAAAA,IACN,yEAEDJ,QACCi1B,EACG,CACA,CACChwB,KAAMgxB,GACNhtB,OAAO7I,EAAAA,EAAAA,IAAI,gBACXD,QAAS,IAAM61B,GAAsB,KAGtC,GAEJ7sB,QAAUA,IAET2rB,GACD,mBAAC,EAAAoB,OAAD,CACCvwB,UAAU,kCACVyhB,OAAO,UACP7lB,eAAgB,IAEdnB,EAAAA,EAAAA,IAAI,gDAGP,mBAAC,EAAA+1B,cAAD,CACCC,qBAAmB,EACnBntB,OAAQ7I,EAAAA,EAAAA,IAAI,YACZ/C,MAAK,UAAGw4B,MAAAA,OAAH,EAAGA,EAAgBx4B,aAAnB,QAA4B,GACjCo4B,QAAUA,EACVjnB,SAAaqF,GACZsZ,EAAU,CAAE5Z,SAAUM,GAAQ,OAI/Bye,IACD,6BACC,mBAAC,EAAAryB,OAAD,CACCC,QAAQ,OACRC,QAAU,IAAMgT,MAEd/S,EAAAA,EAAAA,IAAI,mBAIP21B,IACD,mBAAChC,GAAD,CACC5qB,QAAU,IAAM6sB,GAAsB,MCtH5B,SAASK,KACvB,MAAM5D,GAAY9pB,EAAAA,EAAAA,UA0BlB,OAxBkBzH,EAAAA,EAAAA,YAAajD,IAAY,MAC1C,MAAMq4B,EAAer4B,EAAQkD,EAAAA,OAAc+S,qBACrCD,EAAWhW,EAAQwV,GAAAA,OAAYgU,YAAa6O,GAClD,GAAOriB,MAAAA,IAAAA,EAAUsiB,SAChB,OAAO,EAGR,MAAM3I,EAAW3vB,EAAQkD,EAAAA,OAAc8Z,oBAIvC,SAFI2S,EAASG,oBACZvyB,OAAO6c,KAAMuV,EAASG,oBAAqBhzB,OAAS,MAK9C6yB,EAAS4H,uBAIQ,UACvBv3B,EAAQwV,GAAAA,OAAYyhB,QAAS,SAAU,oBADhB,YAGtB,KAOF,mBAAC,EAAA3C,SAAD,CAAU5sB,UAAU,0BAA0BtE,IAAMoxB,IACnD,gCAAQryB,EAAAA,EAAAA,IAAI,cACZ,mBAAC,EAAAivB,SAAD,CACCnkB,aAAe,CAAEunB,UAAAA,GACjBrnB,SAAS,cACTzF,UAAU,oCACV2pB,iBAAiB,kCACjBe,cAAY,EACZd,aAAe,QAAE,OAAE/sB,EAAF,SAAUwpB,GAAZ,SACd,mBAACwK,GAAD,CACCh0B,OAASA,EACTrC,QAAU6rB,KAGZyD,cAAgB,QAAE,QAAEtmB,GAAJ,SACf,mBAAC0rB,GAAD,CAAkB1rB,QAAUA,QAnBxB,KA0BT,SAASqtB,GAAT,GAAmD,IAAtB,OAAEh0B,EAAF,QAAUrC,GAAY,EAClD,MAAMotB,GAAgBrsB,EAAAA,EAAAA,YAAajD,IAAY,MAC9C,MAAMw4B,EACLx4B,EAAQkD,EAAAA,OAAcC,uBAAwB,aAEzC,qBAAEo0B,EAAF,mBAAwBzH,GAC7B9vB,EAAQkD,EAAAA,OAAc8Z,oBACvB,IAAOua,GAAwBzH,EAAoB0I,GAClD,OAAO1I,EAAoB0I,GAG5B,MAAMljB,EAAWtV,EAAQ2Q,IAAgB0K,wBACzC,iBAAO/F,MAAAA,OAAP,EAAOA,EAAU/S,aAAjB,QAA0B+S,MAAAA,OAA1B,EAA0BA,EAAUM,OAClC,IAEH,OACC,mBAAC,EAAA5T,OAAD,CACC0F,UAAU,kCACVzF,QAAQ,WACR,gBAAgBsC,EAChB,aACC+qB,GACGnI,EAAAA,EAAAA;CAEAhlB,EAAAA,EAAAA,IAAI,uBACJmtB,IAEAntB,EAAAA,EAAAA,IAAI,mBAERD,QAAUA,GAERotB,MAAAA,EAAAA,GAAiBntB,EAAAA,EAAAA,IAAI,qBCzFX,SAASs2B,KACvB,MAAMjE,GAAY9pB,EAAAA,EAAAA,UAClB,OACC,mBAAC,EAAAguB,aAAD,MACC,mBAAC,EAAApE,SAAD,CAAU5sB,UAAU,qBAAqBtE,IAAMoxB,IAC9C,gCAAQryB,EAAAA,EAAAA,IAAI,SACZ,mBAAC,EAAAivB,SAAD,CACCnkB,aAAe,CAAEunB,UAAAA,GACjBrnB,SAAS,cACTzF,UAAU,+BACV2pB,iBAAiB,6BACjBe,cAAY,EACZd,aAAe,QAAE,OAAE/sB,EAAF,SAAUwpB,GAAZ,SACd,mBAAC4K,GAAD,CAAep0B,OAASA,EAASrC,QAAU6rB,KAE5CyD,cAAgB,QAAE,QAAEtmB,GAAJ,SACf,mBAAC,EAAAutB,QAAD,CAAavtB,QAAUA,SAQ7B,SAASytB,GAAT,GAA8C,IAAtB,OAAEp0B,EAAF,QAAUrC,GAAY,EAC7C,MAAM8I,GAAQ4tB,EAAAA,EAAAA,mBACd,OACC,mBAAC,EAAA52B,OAAD,CACC0F,UAAU,6BACVzF,QAAQ,WACR,gBAAgBsC,EAEhB,cAAa4iB,EAAAA,EAAAA,UAAShlB,EAAAA,EAAAA,IAAI,kBAAoB6I,GAC9C9I,QAAUA,GAER8I,GCpBL,MAAM6tB,GAAa,cA+BnB,IAAe/4B,EAAAA,EAAAA,SAAS,EACvBC,EAAAA,EAAAA,aAAcC,IAGb,MAAM,qBAAE6Z,EAAF,oBAAwBE,GAC7B/Z,EAAQ2Q,IACT,MAAO,CACN2T,UAAWzK,EAAsBgf,IACjCC,SAAU/e,EAAqB8e,SAGjCtU,EAAAA,EAAAA,cAAa,QAAE,UAAED,GAAJ,SAAuBA,MACpC3jB,EAAAA,EAAAA,eAAgBC,IAAF,CACbm4B,cAAa,IACLn4B,EAAU+P,IAAgBW,wBAChCunB,SAfJ,EA7BA,YAAmD,IAA9B,SAAEC,EAAF,cAAYC,GAAkB,EAClD,OACC,mBAAC,EAAAC,UAAD,CACCtxB,UAAU,wBACVnF,OAAQJ,EAAAA,EAAAA,IAAI,WACZoX,OAASuf,EACT/K,SAAWgL,IAEX,mBAAC,QAAD,MACKtwB,IACH,oCACC,mBAAC,GAAD,OACA,mBAACmsB,GAAD,OACA,mBAAC6D,GAAD,OACA,mBAACL,GAAD,OACA,mBAAC,GAAD,OACA,mBAAC,GAAD,OACA,mBAAC,GAAD,OACA,mBAAC,GAAD,OACA,mBAAC,GAAD,MACE3vB,GACF,mBAACisB,GAAD,aClCN,GAVA,WACC,OACC,mBAAC,EAAAuE,sBAAD,MACC,mBAAC,EAAAD,UAAD,CAAWtxB,UAAU,mCACpB,mBAAC,EAAAwxB,iBAAD,SCkCJ,IAAep5B,EAAAA,EAAAA,UACdC,EAAAA,EAAAA,aAAY,CAAEC,EAAQ+G,KACrB,MAAM6O,GAAO9W,EAAAA,EAAAA,KAAKiI,EAAS6gB,SAAU,CAAE,SACjCxjB,EAAYwR,EAAQ,kBAAkBA,IAAU,GACtD,MAAO,CACNxR,UAAAA,EACAygB,YAAWjP,GACR5V,EAAQ2Q,IAAgBmJ,qBAAsB1V,GAEjD00B,WAAUljB,GACP5V,EAAQ2Q,IAAgBoJ,oBAAqB3V,QAIlDzD,EAAAA,EAAAA,eAAc,CAAEC,EAAUmG,KAAZ,CACbgyB,cAAe,KACdn4B,EAAU+P,IAAgBW,wBACzBvK,EAAS3C,gBAjBb,EA3BA,YAMI,IANoB,UACvBygB,EADuB,SAEvB+C,EAFuB,SAGvBkR,EAHuB,cAIvBC,EAJuB,SAKvBtxB,GACG,EACH,IAAOod,EACN,OAAO,KAGR,MAAMsU,GAAmBr6B,EAAAA,EAAAA,KAAK8oB,EAAU,CAAE,SAAU,cACpD,OAAOuR,GAKN,mBAAC,EAAAH,UAAD,CACCz2B,MAAQ42B,EACR5f,OAASuf,EACT/K,SAAWgL,GAETtxB,GATI,QCDT,GAhBA,WACC,OACC,mBAAC,EAAA2xB,oBAAD,MACC,mBAAC,EAAA1R,eAAD,CACCC,gBAAkB,CAAExb,EAASyb,KAE3B,mBAAC,GAAD,CAAeA,SAAWA,GACvBzb,OCOH0sB,GAAa,iBAwBbQ,IAAkBt5B,EAAAA,EAAAA,aAAcC,IACrC,MAAM,uBAAEmD,GAA2BnD,EAAQkD,EAAAA,QACrC,YAAEsmB,GAAgBxpB,EAAQwV,GAAAA,QAC1B,qBAAEsE,EAAF,oBAAwBC,GAC7B/Z,EAAQ2Q,IAET,MAAO,CACNqF,SAAUwT,EAAarmB,EAAwB,SAC/C0hB,UAAW/K,EAAsB+e,IACjCC,SAAU/e,EAAqB8e,QAI3BS,IAAoB34B,EAAAA,EAAAA,eAAgBC,IACzC,MAAM,wBAAE0Q,GAA4B1Q,EAAU+P,IAE9C,MAAO,CACNooB,eAAezT,EAAAA,EAAAA,SAAShU,EAAyBunB,QAInD,IAAe/4B,EAAAA,EAAAA,SAASu5B,GAAiBC,GAAzC,EA3CA,YAA2E,IAAnD,UAAEzU,EAAF,SAAaiU,EAAb,SAAuB9iB,EAAvB,cAAiC+iB,GAAkB,EAC1E,OAAOlU,GAKN,mBAAC,EAAAgD,uBAAD,MACC,mBAAC,EAAAmR,UAAD,CACCz2B,OAAQzD,EAAAA,EAAAA,KACPkX,EACA,CAAE,SAAU,mBACZ7T,EAAAA,EAAAA,IAAI,mBAELoX,OAASuf,EACT/K,SAAWgL,IAEX,mBAAC,EAAAQ,kBAAD,QAdK,QCXHV,GAAa,eAoBnB,IAAe/4B,EAAAA,EAAAA,SAAS,EACvBC,EAAAA,EAAAA,aAAcC,IACN,CACN6kB,UACC7kB,EAAQ2Q,IAAgBmJ,qBAAsB+e,IAC/CC,SAAU94B,EAAQ2Q,IAAgBoJ,oBAAqB8e,SAGzDl4B,EAAAA,EAAAA,eAAgBC,IAAF,CACbm4B,cAAa,IACLn4B,EAAU+P,IAAgBW,wBAChCunB,SAXJ,EAlBA,YAA+D,IAAzC,UAAEhU,EAAF,SAAaiU,EAAb,cAAuBC,GAAkB,EAC9D,OAAOlU,GAKN,mBAAC,EAAAiD,iBAAD,MACC,mBAAC,EAAAkR,UAAD,CACCz2B,OAAQJ,EAAAA,EAAAA,IAAI,WACZoX,OAASuf,EACT/K,SAAWgL,IAEX,mBAAC,EAAAS,YAAD,QAVK,QCHHX,GAAa,mBA8BnB,IAAe/4B,EAAAA,EAAAA,SAAS,EACvBC,EAAAA,EAAAA,aAAcC,IACN,CACN6kB,UACC7kB,EAAQ2Q,IAAgBmJ,qBAAsB+e,IAC/CC,SAAU94B,EAAQ2Q,IAAgBoJ,oBAAqB8e,SAGzDl4B,EAAAA,EAAAA,eAAgBC,IAAF,CACbm4B,cAAa,IACLn4B,EAAU+P,IAAgBW,wBAChCunB,SAXJ,EA5BA,YAAmE,IAAzC,UAAEhU,EAAF,SAAaiU,EAAb,cAAuBC,GAAkB,EAClE,OAAOlU,GAKN,mBAAC,EAAAkD,qBAAD,CAAsBC,YAAc,CAAE,WAAY,gBACjD,mBAAC,EAAAgR,UAAD,CACCz2B,OAAQJ,EAAAA,EAAAA,IAAI,cACZoX,OAASuf,EACT/K,SAAWgL,IAEX,mBAAC,EAAAhR,qBAAD,CAAsBC,YAAY,aACjC,mBAAC,EAAAsM,SAAD,MACC,mBAAC,EAAAmF,aAAD,SAIF,mBAAC,EAAA1R,qBAAD,CAAsBC,YAAY,eACjC,mBAAC,EAAAsM,SAAD,MACC,mBAAC,EAAAoF,cAAD,UAlBG,QCEHb,GAAa,kBA2CnB,GAzCO,WACN,MAAM,UAAEhU,EAAF,SAAaiU,EAAb,SAAuB9iB,IAAa/S,EAAAA,EAAAA,YAAajD,IACtD,MAAM,uBAAEmD,GAA2BnD,EAAQkD,EAAAA,QACrC,qBAAE4W,EAAF,oBAAwBC,GAC7B/Z,EAAQ2Q,KACH,YAAE6Y,GAAgBxpB,EAAQwV,GAAAA,OAChC,MAAO,CACNqP,UAAW/K,EAAsB+e,IACjCC,SAAU/e,EAAqB8e,IAC/B7iB,SAAUwT,EAAarmB,EAAwB,YAE9C,KAEG,wBAAEmO,IAA4BxO,EAAAA,EAAAA,aAAa6N,IAEjD,IAAOkU,IAAe7O,EACrB,OAAO,KAGR,MAAM+iB,GAAgBzT,EAAAA,EAAAA,SAAShU,EAAyBunB,IAExD,OACC,mBAAC,EAAA5Q,oBAAD,MACC,mBAAC,EAAA+Q,UAAD,CACCz2B,OAAQzD,EAAAA,EAAAA,KACPkX,EACA,CAAE,SAAU,eACZ7T,EAAAA,EAAAA,IAAI,oBAELoX,OAASuf,EACT/K,SAAWgL,IAEX,mBAAC,EAAAY,qBAAD,OACA,mBAAC,EAAArF,SAAD,MACC,mBAAC,EAAAsF,oBAAD,UCOL,GA9CA,YAAuC,IAAf,SAAE5lB,GAAa,EACtC,MAAM6lB,GAAYnvB,EAAAA,EAAAA,QAAQ,MACpBovB,GAAUpvB,EAAAA,EAAAA,QAAQ,OAExBE,EAAAA,EAAAA,YAAW,KACVkvB,EAAQjvB,QAAUW,SAASkB,cAC1B,qBAAuBsH,GAGnB8lB,EAAQjvB,SACZgvB,EAAUhvB,QAAQkvB,YAAaD,EAAQjvB,SAGjC,KACDivB,EAAQjvB,SACZW,SACEkB,cAAe,cACfqtB,YAAaD,EAAQjvB,YAGvB,CAAEmJ,IAEL,MAAMtQ,GAAWT,EAAAA,EAAAA,YAAajD,GACtBA,EAAQ2Q,IAAgBiK,qBAC7B,IAEGje,EAAUmL,GAAAA,CACf,4BACC,MAAMkM,IACP,CACC,aAActQ,IAIhB,OACC,0BAAKgE,UAAY/K,GACd+G,IAAY,mBAAC,EAAAs2B,QAAD,OACd,0BACCtyB,UAAU,uCACVtE,IAAMy2B,KAEP,0BAAKnyB,UAAU,uCCtDlB,MAAMuyB,WAA0B/xB,EAAAA,UAC/BgyB,oBACCx6B,KAAKy6B,YAGN7R,mBAAoBC,GACd7oB,KAAKwB,MAAMk5B,YAAc7R,EAAU6R,WACvC16B,KAAKy6B,YAIPA,YACC,MAAM,GAAExkB,EAAF,UAAMykB,GAAc16B,KAAKwB,MAEzBuL,EAAUjB,SAASyY,eAAgBtO,GAClClJ,IAIF2tB,EACJ3tB,EAAQf,UAAUE,OAAQ,aAE1Ba,EAAQf,UAAUG,IAAK,cAIzB0Q,SACC,OAAO,MAIT,UAAexc,EAAAA,EAAAA,aAAY,CAAEC,EAAF,SAAU,GAAE2V,GAAZ,QAAwB,CAClDykB,UAAWp6B,EAAQ2Q,IAAgBmJ,qBACjC,YAAYnE,QAFf,CAIOskB,IC3BQ,SAASI,GAAT,GAAmC,IAAf,SAAErmB,GAAa,EACjD,MAAMhP,GAAWs1B,EAAAA,EAAAA,gBACX,UAAE92B,EAAF,wBAAa4X,EAAb,cAAsCmf,IAAkBt3B,EAAAA,EAAAA,YAC3DjD,IACD,MAAM,wBAAE+V,GAA4B/V,EAAQkD,EAAAA,QACtC,wBACLqX,EACAa,wBAAyBof,GACtBx6B,EAAQ2Q,IACZ,MAAO,CACNnN,UAAW+W,EAAyBvG,GACpCoH,wBAAyBof,IACzBD,cAAexkB,OAGjB,CAAE/B,IAYH,OANApJ,EAAAA,EAAAA,YAAW,KACL2vB,IAAmBnf,GACvBpW,EAASpE,SAAU+P,IAAgBmF,wBAElC,CAAEykB,EAAenf,IAEbA,GAKN,oCACG3L,EAAAA,EAAAA,KAAKjM,GAAW,QAAE,GAAEmS,GAAJ,SACjB,mBAAC,GAAD,CAAmBlY,IAAMkY,EAAKA,GAAKA,QAEpC,mBAAC,GAAD,CAAe3B,SAAWA,KARpB,KC/C4B3U,OAAW,GAAW,QAA3D,MCmBe8I,KAAF,GAAQE,KAAIA,KAAK2T,EAAAA,EAAAA,gBAAgB,8BAqFxCye,IAA6B36B,EAAAA,EAAAA,UAClC+G,EAAAA,EAAAA,oBAAmB,CAAEC,EAASC,UACxB5I,IAAc4I,EAAS5G,MAC3B,yCAEM,CACNiE,UAAY,GAAG0C,EAAQ3G,QAAU4G,EAAS5G,YAG5CJ,EAAAA,EAAAA,aAAY,CAAEC,EAAF,KAA6B,IAAnB,UAAEoE,GAAiB,EACxC,MAAO,CACNmV,OAAQvZ,EAAQ2Q,IAAgBoJ,oBAAqB3V,GACrDygB,UACC7kB,EAAQ2Q,IAAgBmJ,qBAAsB1V,QAGjDzD,EAAAA,EAAAA,eAAc,CAAEC,EAAF,SAAY,UAAEwD,GAAd,QAAiC,CAC9C2pB,SAAQ,IACAntB,EAAU+P,IAAgBW,wBAChClN,OAnB+BtE,EAnFD,IAS3B,IAT6B,UACnC+kB,EADmC,UAEnCzgB,EAFmC,OAGnCmV,EAHmC,SAInCwU,EAJmC,UAKnCrmB,EALmC,MAMnCnF,EANmC,KAOnCyE,EAPmC,SAQnCS,GACM,EACN,OACC,oCACC,mBAAC,GAAD,CACCuD,MAAQzI,EACR6B,UAAYA,KAEb,mBAAC,GAAD,KACGygB,IACD,mBAAC,EAAAmU,UAAD,CACCtxB,UAAYA,EACZnF,MAAQA,EACRyE,KAAOA,EACPuS,OAASA,EACTwU,SAAWA,GAETtmB,QAmFRgzB,GAA2BpyB,KAAOA,GAElC,YCpDe,SAASqyB,GAAT,GAA0D,IAA1B,UAAEhzB,KAAcxG,GAAU,EACxE,MAAM,UAAEy5B,EAAF,SAAaxvB,EAAb,eAAuBnB,IAAmB/G,EAAAA,EAAAA,YAAajD,IACrD,CACN26B,UAAW36B,EAAQkD,EAAAA,OAAcC,uBAAwB,SACzDgI,SAAUnL,EACTud,GAAAA,OACCC,0BAA2B,iCAC7BxT,eACChK,EAAQ2Q,IAAgBpK,gBAAiB,qBAEzC,IACH,OACC,mBAAC,GAAD,GACCsD,eAAiBnC,EACjBA,UAAU,oBACVF,iBAAmBmzB,IAAax4B,EAAAA,EAAAA,IAAI,cACpC0C,MAAM,iBACNiF,eAAiBqB,EACjBnB,eAAiBA,GACZ9I,IC7FR,MAMA,IALC,mBAAC,EAAAsB,IAAD,CAAKC,MAAM,6BAA6BC,QAAQ,cAC/C,mBAAC,EAAAC,KAAD,CAAMnE,EAAE,0LCiCV,GA5BA,WACC,MAAM8W,GAAWrS,EAAAA,EAAAA,YAAajD,IAC7B,MAAM,sBAAEqb,GAA0Brb,EAAQ2Q,IAC1C,OAAO0K,MACL,IAEH,OAAO/F,GAKN,mBAAC,EAAA0jB,UAAD,MACC,mBAAC,EAAAvC,KAAD,CAAMC,MAAM,aAAavmB,IAAI,MAC5B,mBAAC,EAAAN,SAAD,MACC,mBAAC,GAAD,CAAM7I,KAAOsZ,OAGd,mBAAC,EAAAsa,UAAD,MACC,yBAAIlzB,UAAU,sCACX4N,MAAAA,OAAA,EAAAA,EAAU/S,SAAS+S,MAAAA,OAAnB,EAAmBA,EAAUM,QAEhC,4BAAKN,MAAAA,OAAL,EAAKA,EAAUlF,gBAdX,MCYHyqB,GAA4BC,EAAAA,SAAAA,OAAiB,CAClDC,KAAK,EACLC,QAAQ,IAuET,GApEwB,KACvB,MAAM,YAAEzH,EAAF,iBAAe0H,EAAf,eAAiC7e,IAAmBnZ,EAAAA,EAAAA,YACvDjD,IAQD,IAAIgM,EAAUhM,EAAQuH,IAAiBrB,2BACtCyK,GAAAA,MAeD,MAZG,CAAE,qBAAsB,mBAAoBxM,SAC7C6H,KAGIhM,EAAQK,EAAAA,OAAmBkhB,2BAC/BvV,EAAU,mBAEXA,EAAU,sBAKJ,CACNunB,YAAavnB,EACbivB,iBALgBj7B,EAChBud,GAAAA,OACCC,0BAA2B,iCAI5BpB,eAAgBpc,EAAQ2Q,IAAgBlM,uBAG1C,IAGD,OACC,mBAACi2B,GAAD,CACCzzB,WAAassB,EACb7pB,QAAS,mBAAC,GAAD,CAAgB6pB,YAAcA,IACvC9pB,YAAatH,EAAAA,EAAAA,IAAI,kBACjBwH,gBAAgB;kFAEhBpH,OAAQJ,EAAAA,EAAAA,IAAI,YACZ2H,eAAiBmxB,EACjBj0B,KAAOk0B,GACPnxB,kBAAoB8wB,KAEhBze,GAAkC,uBAAhBmX,IACrB,oCACC,mBAAC,GAAD,OACA,mBAAC,QAAD,OACA,mBAAC,GAAD,OACA,mBAAC,GAAD,OACA,mBAAC,GAAD,OACA,mBAAC,GAAD,OACA,mBAAC,GAAD,OACA,mBAAC,GAAD,OACA,mBAAC8G,GAAD,CAAWrmB,SAAS,UAGpBoI,GAAkC,uBAAhBmX,IACnB,mBAAC,GAAD,MAEiB,oBAAhBA,IAAqC,mBAAC,EAAA4H,eAAD,QCnG3B,SAASC,GAAT,GAA8D,IAAlC,eAAEC,EAAF,YAAkBC,GAAgB,EAC5E,OACC,8BAAS5zB,UAAU,mCAClB,6BACC6zB,OAASF,EACTG,MAAM,sCAEP,0BAAKjR,IAAM+Q,EAAc3tB,MAAM,MAAMC,OAAO,MAAM0c,IAAI,MCO1C,SAASmR,KACvB,MAAM,cAAEj2B,IAAkB1C,EAAAA,EAAAA,aAAa6N,IAEvC,OACC,mBAAC,EAAA+qB,MAAD,CACCh0B,UAAU,0BACVi0B,cAAex5B,EAAAA,EAAAA,IAAI,+BACnBy5B,kBAAmBz5B,EAAAA,EAAAA,IAAI,eACvB05B,SAAW,IAAMr2B,EAAe,gBAChCs2B,MAAQ,CACP,CACCC,OACC,mBAACX,GAAD,CACCC,eAAe,yDACfC,YAAY,2DAGdnvB,SACC,oCACC,yBAAIzE,UAAU,qCACXvF,EAAAA,EAAAA,IAAI,iCAEP,wBAAGuF,UAAU,kCACVvF,EAAAA,EAAAA,IACD,8GAML,CACC45B,OACC,mBAACX,GAAD,CACCC,eAAe,yDACfC,YAAY,2DAGdnvB,SACC,oCACC,yBAAIzE,UAAU,qCACXvF,EAAAA,EAAAA,IAAI,8BAEP,wBAAGuF,UAAU,kCACVvF,EAAAA,EAAAA,IACD,iLAML,CACC45B,OACC,mBAACX,GAAD,CACCC,eAAe,0DACfC,YAAY,4DAGdnvB,SACC,oCACC,yBAAIzE,UAAU,qCACXvF,EAAAA,EAAAA,IAAI,mCAEP,wBAAGuF,UAAU,kCACVs0B,EAAAA,EAAAA,2BACD75B,EAAAA,EAAAA,IACC,iIAED,CACC85B,mBACC,0BACC3R,KAAMnoB,EAAAA,EAAAA,IAAI,YACVooB,IAAI,mRASZ,CACCwR,OACC,mBAACX,GAAD,CACCC,eAAe,gEACfC,YAAY,kEAGdnvB,SACC,oCACC,yBAAIzE,UAAU,qCACXvF,EAAAA,EAAAA,IAAI,uCAEP,wBAAGuF,UAAU,kCACVvF,EAAAA,EAAAA,IACD,iEAED,mBAAC,EAAA+5B,aAAD,CACC1f,MAAOra,EAAAA,EAAAA,IACN,6DAGCA,EAAAA,EAAAA,IAAI,mCCtGA,SAASg6B,KACvB,MAAM,cAAE32B,IAAkB1C,EAAAA,EAAAA,aAAa6N,IAEvC,OACC,mBAAC,EAAA+qB,MAAD,CACCh0B,UAAU,8BACVi0B,cAAex5B,EAAAA,EAAAA,IAAI,kCACnBy5B,kBAAmBz5B,EAAAA,EAAAA,IAAI,eACvB05B,SAAW,IAAMr2B,EAAe,wBAChCs2B,MAAQ,CACP,CACCC,OACC,mBAACX,GAAD,CACCC,eAAe,kEACfC,YAAY,oEAGdnvB,SACC,oCACC,yBAAIzE,UAAU,qCACXvF,EAAAA,EAAAA,IAAI,oCAEP,wBAAGuF,UAAU,kCACVvF,EAAAA,EAAAA,IACD,uJCzBM,SAASi6B,KACvB,MAAM,SAAEnyB,EAAF,eAAYmS,IAAmBnZ,EAAAA,EAAAA,YAAajD,IACjD,MAAM,gBAAEuG,EAAF,kBAAmB9B,GAAsBzE,EAAQ2Q,IACjD4N,EAAkB9Z,IAKxB,MAAO,CACNwF,SAAU1D,EALKgY,EACb,uBACA,gBAIFnC,eAAgBmC,KAEf,IAEH,OAAOtU,EAIAmS,GAAiB,mBAAC+f,GAAD,OAA2B,mBAACV,GAAD,MAH3C,KCpBT,MAAQtzB,KAAF,GAAQE,KAAIA,KAAK2T,EAAAA,EAAAA,gBAAgB,0BAqEjCqgB,IAAyBv8B,EAAAA,EAAAA,UAC9B+G,EAAAA,EAAAA,oBAAmB,CAAEC,EAASC,KACtB,CACNC,KAAMD,EAASC,MAAQF,EAAQE,SAHHlH,EAnEI,QAAE,SACpC2H,EADoC,UAEpCC,EAFoC,MAGpCnF,EAHoC,YAIpC+5B,GAAc,EAJsB,KAKpCt1B,GALkC,SAOlC,mBAAC,GAAD,MACC,mBAAC,EAAAgyB,UAAD,CACCtxB,UAAYA,EACZ40B,YAAcA,IAAiB/5B,EAC/BA,MAAQA,EACRyE,KAAOA,GAELS,OA6DL40B,GAAuBh0B,KAAOA,GAE9B,aChFQF,KAAF,GAAQE,KAAIA,KAAK2T,EAAAA,EAAAA,gBAAgB,yBAwEjCugB,IAAwBz8B,EAAAA,EAAAA,UAC7B+G,EAAAA,EAAAA,oBAAmB,CAAEC,EAASC,KACtB,CACNC,KAAMD,EAASC,MAAQF,EAAQE,SAHJlH,EAtEI,QAAE,SACnC2H,EADmC,UAEnCC,EAFmC,MAGnCnF,EAHmC,YAInC+5B,GAAc,EAJqB,KAKnCt1B,GALiC,SAOjC,mBAAC,GAAD,MACC,mBAAC,EAAAgyB,UAAD,CACCtxB,UAAYA,EACZ40B,YAAcA,IAAiB/5B,EAC/BA,MAAQA,EACRyE,KAAOA,GAELS,OAgEL80B,GAAsBl0B,KAAOA,GAE7B,aCrEQF,KAAF,GAAQE,KAAIA,KAAK2T,EAAAA,EAAAA,gBAAgB,gBAIxB,SAASwgB,GAAT,GAIX,IAJkC,+BACrChP,EADqC,yBAErCiP,EAFqC,0BAGrCC,GACG,EACH,MAAM,oBAAE3rB,EAAF,qBAAuBC,IAC5BlO,EAAAA,EAAAA,aAAa6N,KACR,qBACLgsB,EADK,mBAEL1O,EAFK,kBAGLrT,EAHK,wBAILgiB,IACG35B,EAAAA,EAAAA,YAAajD,IACT,CACN28B,qBACC38B,EAAQ2Q,IAAgBiJ,yBACzBqU,mBAAoBjuB,EAAQ2Q,IAAgB8F,eAC5CmE,kBAAmB5a,EAAQ2Q,IAAgBiK,oBAC3CgiB,wBACC58B,EAAQkD,EAAAA,OAAc05B,6BAEtB,IAEGC,GAA0BhuB,EAAAA,EAAAA,cAC/B,IAAM2e,GAAgC,IACtC,IAKD,IAAIsP,EAyCJ,OAvCCA,EADIH,GAEH,mBAAC,EAAAI,iBAAD,CACC7xB,QAAU6F,EACVuc,aAAeW,EACfV,cAAgB3S,EAChBoiB,oBAAsBT,GAAAA,KACtBU,qBAAuBZ,GAAAA,OAGdO,GAEV,0BAAKl1B,UAAU,yDACd,mBAAC,EAAA1F,OAAD,CACCC,QAAQ,YACRyF,UAAU,8DACVxF,QAAU26B,EACV,iBAAgB,IAEd16B,EAAAA,EAAAA,IAAI,sBAMR,0BAAKuF,UAAU,2CACd,mBAAC,EAAA1F,OAAD,CACCC,QAAQ,YACRyF,UAAU,gDACVxF,QAAU8O,EACV,iBAAgB,IAEd7O,EAAAA,EAAAA,IAAI,yBAST,mCACGu6B,IACD,mBAAC,EAAAQ,oBAAD,CAAqB3K,MAAQkK,KAE9B,mBAAC,GAAD,CAAMj0B,kBAAgB,KAClBk0B,GAA6BI,GCjFpC,SAASK,KAIR,MAAM,sCAAEC,EAAF,SAAyCpnB,IAAa/S,EAAAA,EAAAA,YACzDjD,IACD,MAAM,sCAAEq9B,GACPr9B,EAAQK,EAAAA,QACH,mBAAE4V,GAAuBjW,EAAQkD,EAAAA,OACvC,MAAO,CAENk6B,sCACCC,EACC,qBAEFrnB,SAAUC,OAGZ,IAGD,OAAO1H,EAAAA,EAAAA,UAAS,IAGR6uB,EAAsChsB,QAAUksB,GAEtC,SAAbtnB,IAAyBsnB,EAAQC,WACjCrgC,MAAMC,QAASmgC,EAAQC,YACxBD,EAAQC,UAAUp5B,SAAU6R,MAG7B,CAAEA,EAAUonB,IAGhB,SAASI,GAAT,GAAiD,IAAtB,gBAAEC,GAAoB,EAChD,MAAMC,EAAgBP,KAChBQ,GAAqBC,EAAAA,EAAAA,cAAcF,IACnC,kBAAEG,IAAsB/6B,EAAAA,EAAAA,aAAaI,EAAAA,OAC3C,OACC,mBAAC,kCAAD,CACCw6B,cAAgBA,EAChBI,cAAgBH,EAChBI,eAAiB,CAAEC,EAAU59B,KAC5By9B,EAAmBz9B,GACnBq9B,OAMJ,MAAMQ,GACI,UADJA,GAEI,UAFJA,GAGG,SAGM,SAASC,KACvB,MAAQC,EAAYC,IAAkBhwB,EAAAA,EAAAA,UACrC6vB,IAGKI,EADgBlB,KACgBrgC,OAAS,EACzCwhC,GAAkBr7B,EAAAA,EAAAA,YACrBjD,IACD,IACGq+B,GACFF,IAAeF,GAEf,OAAO,EAER,MAAM,qBAAEM,EAAF,qBAAwBnQ,GAC7BpuB,EAAQkD,EAAAA,QACH,kBAAEuB,EAAF,gBAAqB8B,GAC1BvG,EAAQ2Q,IACT,OACGyd,KACF,KAAOmQ,MACL95B,MACA8B,EAAiB,kBAGrB,CAAE43B,EAAYE,IASf,OANAzzB,EAAAA,EAAAA,YAAW,KACL0zB,GACJF,EAAeH,MAEd,CAAEK,IAGJH,IAAeF,IACfE,IAAeF,GAER,MAGP,mBAAC,EAAA1wB,MAAD,CACC7F,UAAU,sCACVnF,OAAQJ,EAAAA,EAAAA,IAAI,oBACZsH,YAAatH,EAAAA,EAAAA,IAAI,UACjBqL,eAAiB,KAChB4wB,EAAeH,OAGhB,0BAAKv2B,UAAU,+CACZy2B,IAAeF,KAChB,mBAACT,GAAD,CACCC,gBAAkB,KACjBW,EAAeH,SC5EtB,MAAMO,GAAkB;;AAEvB90B,QAAQvH,EAAAA,EAAAA,IAAI;;AAEZsJ,MAAMtJ,EAAAA,EAAAA,IAAI;;AAEV6J,SAAS7J,EAAAA,EAAAA,IAAI;;AAEbJ,SAASI,EAAAA,EAAAA,IAAI;;AAEb4J,QAAQ5J,EAAAA,EAAAA,IAAI,kBAwOb,GArOA,YAA8B,IAAb,OAAEyb,GAAW,EAC7B,MAAMmU,GAAmB9jB,EAAAA,EAAAA,kBAAkB,SAAU,KAC/CwwB,GAAiBxwB,EAAAA,EAAAA,kBAAkB,OAAQ,OAC3C,mBAAEyC,EAAF,oBAAsBE,EAAtB,oBAA2CmE,IAChDjS,EAAAA,EAAAA,aAAa6N,KACR,kBAAE+tB,IAAsB57B,EAAAA,EAAAA,aAAaC,EAAAA,QACrC,KACL8O,EADK,mBAEL8sB,EAFK,qBAGL5hB,EAHK,gBAIL6hB,EAJK,mBAKL3Q,EALK,gBAML4Q,EANK,iBAOLC,EAPK,aAQLC,EARK,iBASLC,EATK,iBAULlkB,EAVK,iBAWLK,EAXK,eAYLnR,EAZK,aAaL0nB,EAbK,qBAcLuN,EAdK,eAeL7iB,EAfK,cAgBLqX,IACGxwB,EAAAA,EAAAA,YAAajD,IAChB,MAAM,kBAAEgd,EAAF,iBAAqB0W,GAAqB1zB,EAAQkD,EAAAA,OAClDg0B,EAAiBla,IACjBkiB,EAAgBxL,IAEtB,MAAO,CACNtX,eAAgBpc,EAAQ2Q,IAAgBlM,oBACxCo6B,gBACC7+B,EAAQ2Q,IAAgBpK,gBAAiB,gBAC1Cq4B,mBACC5+B,EAAQuH,IAAiBrB,2BACxByK,GAAAA,QACI3Q,EAAQ2Q,IAAgBiJ,0BAE9B+kB,mBACC3+B,EAAQ2Q,IAAgBpK,gBAAiB,kBAC1CuU,iBAAkB9a,EAAQ2Q,IAAgBmK,mBAC1CK,iBAAkBnb,EAAQ2Q,IAAgBwK,mBAC1CtJ,KAAM7R,EAAQ2Q,IAAgB+H,gBAC9BqE,qBAAsBma,EAAeja,mBACrCgR,mBAAoBjuB,EAAQ2Q,IAAgB8F,eAC5CqoB,iBAAkB9+B,EACjBud,GAAAA,OACC4hB,8BAA+B,kCACjCJ,aAAc/+B,EACbud,GAAAA,OACC4hB,8BAA+B,8BACjCn1B,eACChK,EAAQ2Q,IAAgBpK,gBAAiB,kBAC1CmrB,aACC1xB,EAAQ2Q,IAAgBpK,gBAAiB,aAC1C04B,qBAAsBj/B,EAAQ2Q,IAAgBpK,gBAC7C;;AAGDktB,cAAeyL,IAAiBtT,EAAAA,EAAAA,IAAI,WAAY,WAE/C,IACGlkB,EAAYI,GAAAA,CAAY,mBAAoB,WAAa+J,EAAM,CACpE,oBAAqB+sB,EACrB,oBAAqBC,EACrB,gBAAiB5Q,EACjB,mBAAoBjkB,KAQrBY,EAAAA,EAAAA,YAAW,KACLg0B,IAAqBH,GACzB1pB,GAAqB,KAEpB,CAAE6pB,EAAiBH,KACtB7zB,EAAAA,EAAAA,YAAW,KACLkQ,IAAsB2jB,GAC1B7tB,MAEC,CAAEkK,EAAkB2jB,IAIvB,MAAQW,EAA6B5R,IACpCpf,EAAAA,EAAAA,WAAU,GACLquB,GAA2B5tB,EAAAA,EAAAA,cAC9B9R,IAC2C,mBAAhCqiC,GACXA,EAA6BriC,GAE9BywB,GAAgC,KAEjC,CAAE4R,IAGGC,EAAwBlkB,GAC3BhZ,EAAAA,EAAAA,IAAI,cACJA,EAAAA,EAAAA,IAAI,iBAyBP,OACC,oCACC,mBAAC,GAAD,CAAgB8H,SAAW00B,KAC3B,mBAAC,GAAD,OACA,mBAAC,EAAAW,sBAAD,OACA,mBAAC,EAAAC,gBAAD,OACA,mBAAC,EAAAC,qBAAD,OACA,mBAAC,GAAD,OACA,mBAAC,EAAAC,gCAAD,OACA,mBAAC,GAAD,OACA,mBAAC,GAAD,CACC/3B,UAAYA,EACZ2E,OAAS,IACLmyB,GACHvyB,iBAAkBozB,GAEnB31B,QACC,mBAAC,GAAD,CACC8jB,+BACCA,IAIHvhB,iBA7CY,WAAT4F,GAAqBiJ,GAClB,mBAAC8W,GAAD,MAEM,WAAT/f,GAAqBsJ,GAClB,mBAACyX,GAAD,MAGD,KAuCL5mB,UACK+lB,GAAoB6M,KACvB,oCACK7M,IAAsB6M,IACzB,0BAAKl3B,UAAU,2CACd,mBAAC,EAAA1F,OAAD,CACCC,QAAQ,YACRyF,UAAU,gDACVxF,QA1FgB,IACxBwO,EACCsuB,EAAmB,kBAAoB,sBAyFhC,iBAAgB,GAEdA,GACC78B,EAAAA,EAAAA,IAAI,wBACJA,EAAAA,EAAAA,IAAI,6BAIV,mBAAC,QAAD,CAAwB0C,MAAM,oBAIjCqH,SAAU,mBAAC,EAAAwzB,gBAAD,MACVvzB,SACC,oCACC,mBAAC,EAAAwzB,cAAD,OACa,SAAT9tB,IAAqBkL,KACxB,mBAACD,GAAD,MAECC,GAAiC,WAATlL,IACzB,mBAACqM,GAAD,CAAcN,OAASA,KAEpBxB,IACH,0BAAK1U,UAAU,gCACd,mBAAC2yB,GAAD,CAAWrmB,SAAS,YACpB,mBAACqmB,GAAD,CAAWrmB,SAAS,cAGpB+d,GAAoB6M,IACrB,mBAAC,EAAAgB,WAAD,OAED,mBAAC,EAAAC,YAAA,KAAD,CAAkBh7B,MAAM,0BAG1BkH,QACG2lB,GACFuN,IACElN,GACFhV,GACS,WAATlL,IACC,0BAAKnK,UAAU,6BACd,mBAAC,EAAAo4B,gBAAD,CAAiBC,cAAgBtM,KAIpC1xB,SACC,mBAACy6B,GAAD,CACCC,yBAA2BA,EAC3BC,0BACC0C,EAED5R,+BACCA,IAIHlhB,UAAY,CACX0zB,SAAUlB,EACVzmB,KAAM0mB,MAGR,mBAACvX,GAAD,OACA,mBAAC,GAAD,OACA,mBAAC4U,GAAD,OACA,mBAAC8B,GAAD,OACA,mBAAC,EAAA+B,QAAA,KAAD,OACA,mBAAC,EAAAC,WAAD,CAAYC,QA/Gd,SAA4BhgC,GAC3Bu+B,GACCvX,EAAAA,EAAAA;;CAEChlB,EAAAA,EAAAA,IACC,oEAEDhC,SC1KW,SAASigC,GAAT,GAA4C,IAAb,OAAE5X,GAAW,EAG1D,MCK0CA,CAAAA,IAC1C,MAAM,kBAAE6X,EAAF,sBAAqB1nB,IAA0B1V,EAAAA,EAAAA,YAClDjD,IAAF,CACCqgC,oBACIrgC,EAAQK,EAAAA,OAAmBkhB,yBAC/B5I,sBAAuB3Y,EAAQ6b,IAAalD,2BAE7C,CAAE6P,KAGG,mBAAE9X,IAAuB5N,EAAAA,EAAAA,aAAa+Y,KAE5CjR,EAAAA,EAAAA,YAAW,KACH+N,GAINjI,EADI2vB,EACgB,kBAEA,wBAEnB,CAAEA,EAAmB1nB,KD5BxB2nB,CAA2B9X,GCqCeA,CAAAA,IAC1C,MAAM,aAAE+X,IAAiBt9B,EAAAA,EAAAA,YACtBjD,IAAF,CACCugC,aAAcvgC,EAAQkD,EAAAA,OAAcoQ,iBAAiBqI,QAEtD,CAAE6M,IAEGgY,GAAe91B,EAAAA,EAAAA,WAErBE,EAAAA,EAAAA,YAAW,KACV41B,EAAa31B,QACZW,SAASkB,c3F7CiC,4B2F8C1ClB,SAASkB,c3FrDyB,0B2FsDjC,CAAE8b,KAEL5d,EAAAA,EAAAA,YAAW,KACH21B,GAAkBC,EAAa31B,SAGtC21B,EAAa31B,QAAQ41B,aAAc,OAAQF,KACzC,CAAEA,KDxDLG,CAA2BlY,GACpB,KEgMR,SArLA,YAOI,IAPa,OAChBA,EADgB,SAEhBxS,EAFgB,SAGhB2Z,EAHgB,aAIhBgR,EAJgB,QAKhBR,KACGj/B,GACA,EACH,MAAM,gBACL29B,EADK,UAEL+B,EAFK,aAGLlP,EAHK,iBAILmP,EAJK,eAKLC,EALK,KAMLztB,EANK,yBAOL0tB,EAPK,iBAQLpb,EARK,WASLT,EATK,qBAUL8b,EAVK,eAWL5kB,EAXK,SAYL9G,IACGrS,EAAAA,EAAAA,YACDjD,IAAY,QACb,MAAM,gBACLuG,EADK,mCAELsU,EAFK,kBAGLpW,EAHK,sBAIL4W,EAJK,oBAKL1B,GACG3Z,EAAQ2Q,KACN,gBAAE4Y,EAAF,YAAmBC,EAAnB,iBAAgChO,EAAhC,QAAkDyb,GACvDj3B,EAAQwV,GAAAA,QACH,kBAAEwH,GAAsBhd,EAAQkD,EAAAA,QAChC,cAAEkjB,GAAkBpmB,EAAQumB,EAAAA,OAMlC,IAAI0a,EACJ,GANmB,CAAE,cAAe,oBAAqB98B,SACxD6R,GAKiB,CACjB,MAAMkrB,EAAQ1lB,EAAkB,WAAYxF,EAAU,CACrDoT,MAAOZ,IAERyY,EAAaC,MAAAA,OAAH,EAAGA,EAAS,QAEtBD,EAAa1X,EAAiB,WAAYvT,EAAUwS,GAErD,MAAM+O,EACLva,IAAoBua,qBACfpJ,EAAU,oBAAG3E,EAAaxT,UAAhB,aAAG,EAAyBsiB,gBAA5B,SACV6I,EAAkBlK,EAAS,SAAU,aAE3C,MAAO,CACN4H,gBACCt4B,EAAiB,iBACwB,YAAzCsU,IACD+lB,UAAWr6B,EAAiB,aAC5BmrB,aAAcnrB,EAAiB,aAC/Bs6B,iBAAkBt6B,EAAiB,iBACnCu6B,eAAgBv6B,EAAiB,eACjCw6B,yBAA0B/gC,EAAQiF,EAAAA,OAAmBnG,IACpD,iBACA,4BAED6mB,iBAAkBhM,IAClBuL,WAAYkB,IACZ4a,qBAAsBz6B,EAAiB,wBACvC6V,eAAgB3X,IAChB6Q,SACCiiB,GAAwBpJ,GAAcgT,EACnC9lB,IACA,KACJhI,KAAM4tB,KAGR,CAAEjrB,EAAUwS,KAGP,+BAAErW,EAAF,oBAAkC4C,IACvCjS,EAAAA,EAAAA,aAAa6N,IAERumB,GAAiB3oB,EAAAA,EAAAA,UAAS,KAC/B,MAAM6yB,EAAS,IACXzR,EACH0R,uCAAwC,CACvCjiC,MAAO2hC,EACPxwB,SAAU4B,GAEX0sB,gBAAAA,EACA+B,UAAAA,EACAlP,aAAAA,EACAmP,iBAAAA,EAGAS,kCAAmCvsB,EACnCisB,qBAAAA,EAGAtb,yBAA0BiK,EAAS4R,mBAIpC,GAAK5b,EAAiB7oB,OAAS,EAAI,CAIlC,MAAM4oB,GACL,IAASiK,EAAS4R,mBACf9xB,EAAAA,EAAAA,KAAKyV,EAAY,QACjByK,EAAS4R,mBAAqB,GAElCH,EAAOG,mBAAoB5uB,EAAAA,EAAAA,SAC1B+S,KACGC,GAIL,OAAOyb,IACL,CACFzR,EACAkP,EACA+B,EACAlP,EACA/L,EACAT,EACA6b,EACAhsB,EACA5C,EACA6uB,IAGKpjB,GAASrP,EAAAA,EAAAA,UAAS,KACvB,MAAMizB,EAAc,GACdC,EAAe,IACrBntB,EAAAA,EAAAA,SAASqb,EAAS/R,QAAUhc,IACpBA,EAAM8/B,gBAA2C,UAAzB9/B,EAAM8/B,eAGpCD,EAAaxkC,KAAM2E,GAFnB4/B,EAAYvkC,KAAM2E,MAKpB,MAAM+/B,EAAsB,IACxBhS,EAASgS,uBACTF,GAEJ,OAAOX,GAAkBU,EAAY1kC,OAClC6yB,EAAS/R,OACT+jB,IACD,CAAEhS,EAAUmR,IAEf,OAAOztB,GAKN,mBAAC,EAAAuuB,WAAD,MACC,mBAAC,GAAAC,iBAAD,MACC,mBAAC,EAAAC,iBAAD,MACC,mBAAC,EAAAC,eAAD,GACCpS,SAAWuH,EACX7jB,KAAOA,EACPstB,aAAeA,EACfqB,gBAAiB,EACjBC,mBACC7lB,EAAiB9G,OAAWnX,GAExB+C,IAEL,mBAAC,EAAAghC,cAAD,CAAe/B,QAAUA,IACxB,mBAACC,GAAD,CAAsB5X,OAASA,KAC/B,mBAAC,GAAD,CAAQ5K,OAASA,MAElB,mBAAC,EAAAukB,gBAAD,UArBG,MC1ET,GA3BoC,QAAE,cACrCC,EADqC,KAErCp7B,EAFqC,MAGrCgE,EAHqC,QAIrC9I,EAJqC,MAKrCmb,EALqC,KAMrClU,GANmC,SAQnC,mBAAC,EAAAk5B,0BAAD,MACG,IAAmC,IAAjC,eAAEC,EAAF,QAAkBp3B,GAAe,EACpC,MArEsB,EAAEo3B,EAAgBF,KAC1C,OAAEllC,MAAMC,QAASilC,KAf8BG,EAgBFH,EAfoB,IAepCE,EAfpBlxB,QAAUuE,IAAU4sB,EAAQp+B,SAAUwR,KAAO7Y,QADnB,IAAYylC,GAmFtCC,CAAkBF,EAAgBF,IAIxC,mBAAC,EAAA7+B,SAAD,CACCrB,SAAUpC,EAAAA,EAAAA,SAASoC,EAASgJ,GAC5BlE,KAAOA,EACPgE,MAAQqS,EAAQrS,OAAQ7M,EACxBgL,KAAOA,IAEHkU,GAASrS,GATP,SC3BX,IAAelL,EAAAA,EAAAA,UACd+G,EAAAA,EAAAA,oBAAmB,CAAEC,EAASC,KAAc,MAC3C,MAAO,CACNI,GAAE,UAAEJ,EAASI,UAAX,QAAiB5D,EAAAA,SACnByD,KAAMD,EAASC,MAAQF,EAAQE,KAC/B7G,KAAM,sCALT,CAQG8H,ICnBY,SAASw6B,GAA2BvhC,GAClD,OACC,mBAAC+H,GAAD,GAGCL,4BAA0B,EAC1B/D,MAAM,kBACD3D,IC1BD,SAASwhC,GACf1sB,EACAwS,EACAhpB,EACAmwB,EACAgR,IAEAgC,EAAAA,EAAAA,wBAAwBnjC,GACxB,MAAMojC,EAASF,GAAmBG,KACjC,KACA7sB,EACAwS,EACAhpB,EACAmwB,EACAgR,IAGDpkB,EAAAA,EAAAA,SACC,mBAAC,GAAD,CACCoT,SAAWA,EACXwQ,QAAUyC,EACVpa,OAASA,EACTxS,SAAWA,EACX2qB,aAAeA,EACfmC,UAAQ,IAETtjC,GAeK,SAASujC,GACfptB,EACAK,EACAwS,EACAmH,EACAgR,IAIAhhC,EAAAA,EAAAA,WACC,2CACA,mCACA,CAAEqjC,EAAK7hC,QAEHnB,EAAAA,EAAAA,QAAQ2Q,IAAgBlM,qBACP,uBAAnBtD,EAAUhB,OAIJ6iC,IAIT,MAAMxjC,EAASgM,SAASyY,eAAgBtO,GAClCitB,EAASF,GAAmBG,KACjC,KACA7sB,EACAwS,EACAhpB,EACAmwB,EACAgR,IAGD//B,EAAAA,EAAAA,UAAUqE,EAAAA,OAAmBgB,YAAa,iBAAkB,CAC3Dg9B,WAAY,SACZC,cAAc,EACdC,gBAAgB,EAChBxd,iBAAkB,GAClBzU,eAAgB,GAChBwT,yBAAyB,EACzBnT,WAAY,CAAE,eACdwvB,yBAA0B,GAC1B9B,sBAAsB,EACtBj1B,gBAAgB,EAChBo5B,uBAAuB,EACvB5B,aAAa,EACb6B,cAAc,EACdC,sBAAsB,KAGvB1iC,EAAAA,EAAAA,UAAU2lB,EAAAA,OAAcgd,yCAGnBvjC,EAAAA,EAAAA,QAAQ2Q,IAAgBpK,gBAAiB,2BAC7C3F,EAAAA,EAAAA,UAAU+P,IAAgBqE,qBAAqB,IAGhDwuB,EAAAA,EAAAA,uBAECC,EAAAA,EAAAA,8CAA8C,CAC7CC,gBAAiB/T,EAASgU,wCAON,cADG,eAAxBn4B,SAASo4B,WAA8B,YAAc,WAGrDC,QAAQC,KACP,yXAWmE,IAApDzkC,OAAO0kC,UAAUC,UAAUC,QAAS,WAEpD5kC,OAAO6kC,iBAAkB,UAAYhiB,IACpC,MAAMiiB,EAAwB34B,SAAS44B,uBACtC,sCACE,GACEliB,EAAM1iB,SAAWgM,WAGhBnM,OAAOglC,QAAU,MACrBF,EAAsBG,UACrBH,EAAsBG,UAAYjlC,OAAOglC,SAI1C74B,SAAS44B,uBAAwB,kBAAoB,IAErD/kC,OAAOklC,SAAU,EAAG,QAMxBhoB,EAAAA,EAAAA,SACC,mBAAC,GAAD,CACCoT,SAAWA,EACXwQ,QAAUyC,EACVpa,OAASA,EACTxS,SAAWA,EACX2qB,aAAeA,IAEhBnhC,K","sources":["webpack://wp/./node_modules/classnames/index.js","webpack://wp/webpack/bootstrap","webpack://wp/webpack/runtime/compat get default export","webpack://wp/webpack/runtime/define property getters","webpack://wp/webpack/runtime/hasOwnProperty shorthand","webpack://wp/webpack/runtime/make namespace object","webpack://wp/external window [\"wp\",\"element\"]","webpack://wp/external window [\"wp\",\"blocks\"]","webpack://wp/external window [\"wp\",\"blockLibrary\"]","webpack://wp/external window [\"wp\",\"data\"]","webpack://wp/external window [\"wp\",\"hooks\"]","webpack://wp/external window [\"wp\",\"preferences\"]","webpack://wp/external window [\"wp\",\"mediaUtils\"]","webpack://wp/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://wp/./packages/edit-post/build-module/hooks/components/@wordpress/edit-post/src/hooks/components/index.js","webpack://wp/external window \"lodash\"","webpack://wp/external window [\"wp\",\"components\"]","webpack://wp/external window [\"wp\",\"blockEditor\"]","webpack://wp/external window [\"wp\",\"i18n\"]","webpack://wp/external window [\"wp\",\"compose\"]","webpack://wp/./packages/edit-post/build-module/hooks/validate-multiple-use/@wordpress/edit-post/src/hooks/validate-multiple-use/index.js","webpack://wp/external window [\"wp\",\"primitives\"]","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/external.js","webpack://wp/external window [\"wp\",\"plugins\"]","webpack://wp/external window [\"wp\",\"url\"]","webpack://wp/external window [\"wp\",\"notices\"]","webpack://wp/external window [\"wp\",\"editor\"]","webpack://wp/./packages/edit-post/build-module/plugins/copy-content-menu-item/@wordpress/edit-post/src/plugins/copy-content-menu-item/index.js","webpack://wp/external window [\"wp\",\"keycodes\"]","webpack://wp/./packages/edit-post/build-module/store/@wordpress/edit-post/src/store/reducer.js","webpack://wp/external window [\"wp\",\"apiFetch\"]","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/check.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/star-filled.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/star-empty.js","webpack://wp/external window [\"wp\",\"viewport\"]","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/close-small.js","webpack://wp/external window [\"wp\",\"deprecated\"]","webpack://wp/./packages/interface/build-module/store/@wordpress/interface/src/store/actions.js","webpack://wp/./packages/interface/build-module/store/@wordpress/interface/src/store/selectors.js","webpack://wp/./packages/interface/build-module/store/@wordpress/interface/src/store/reducer.js","webpack://wp/./packages/interface/build-module/store/@wordpress/interface/src/store/index.js","webpack://wp/./packages/interface/build-module/store/@wordpress/interface/src/store/constants.js","webpack://wp/./packages/interface/build-module/components/complementary-area-context/@wordpress/interface/src/components/complementary-area-context/index.js","webpack://wp/./packages/interface/build-module/components/complementary-area-toggle/@wordpress/interface/src/components/complementary-area-toggle/index.js","webpack://wp/./packages/interface/build-module/components/complementary-area-header/@wordpress/interface/src/components/complementary-area-header/index.js","webpack://wp/./packages/interface/build-module/components/action-item/@wordpress/interface/src/components/action-item/index.js","webpack://wp/./packages/interface/build-module/components/complementary-area-more-menu-item/@wordpress/interface/src/components/complementary-area-more-menu-item/index.js","webpack://wp/./packages/interface/build-module/components/pinned-items/@wordpress/interface/src/components/pinned-items/index.js","webpack://wp/./packages/interface/build-module/components/complementary-area/@wordpress/interface/src/components/complementary-area/index.js","webpack://wp/./packages/interface/build-module/components/fullscreen-mode/@wordpress/interface/src/components/fullscreen-mode/index.js","webpack://wp/./packages/interface/build-module/components/interface-skeleton/@wordpress/interface/src/components/interface-skeleton/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/more-vertical.js","webpack://wp/./packages/interface/build-module/components/more-menu-dropdown/@wordpress/interface/src/components/more-menu-dropdown/index.js","webpack://wp/./packages/interface/build-module/components/preferences-modal/@wordpress/interface/src/components/preferences-modal/index.js","webpack://wp/./packages/icons/build-module/icon/@wordpress/icons/src/icon/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/chevron-left.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/chevron-right.js","webpack://wp/./packages/interface/build-module/components/preferences-modal-tabs/@wordpress/interface/src/components/preferences-modal-tabs/index.js","webpack://wp/./packages/interface/build-module/components/preferences-modal-section/@wordpress/interface/src/components/preferences-modal-section/index.js","webpack://wp/./packages/interface/build-module/components/preferences-modal-base-option/@wordpress/interface/src/components/preferences-modal-base-option/index.js","webpack://wp/external window [\"wp\",\"a11y\"]","webpack://wp/external window [\"wp\",\"coreData\"]","webpack://wp/./packages/edit-post/build-module/store/@wordpress/edit-post/src/store/actions.js","webpack://wp/./packages/edit-post/build-module/utils/@wordpress/edit-post/src/utils/meta-boxes.js","webpack://wp/./node_modules/rememo/es/rememo.js","webpack://wp/./packages/edit-post/build-module/store/@wordpress/edit-post/src/store/selectors.js","webpack://wp/./packages/edit-post/build-module/store/@wordpress/edit-post/src/store/constants.js","webpack://wp/./packages/edit-post/build-module/store/@wordpress/edit-post/src/store/index.js","webpack://wp/./packages/edit-post/build-module/plugins/keyboard-shortcuts-help-menu-item/@wordpress/edit-post/src/plugins/keyboard-shortcuts-help-menu-item/index.js","webpack://wp/./packages/edit-post/build-module/components/header/tools-more-menu-group/@wordpress/edit-post/src/components/header/tools-more-menu-group/index.js","webpack://wp/./packages/edit-post/build-module/plugins/welcome-guide-menu-item/@wordpress/edit-post/src/plugins/welcome-guide-menu-item/index.js","webpack://wp/./packages/edit-post/build-module/plugins/@wordpress/edit-post/src/plugins/index.js","webpack://wp/external window [\"wp\",\"keyboardShortcuts\"]","webpack://wp/./packages/edit-post/build-module/components/text-editor/@wordpress/edit-post/src/components/text-editor/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/arrow-left.js","webpack://wp/./packages/edit-post/build-module/components/visual-editor/@wordpress/edit-post/src/components/visual-editor/block-inspector-button.js","webpack://wp/./packages/edit-post/build-module/components/visual-editor/@wordpress/edit-post/src/components/visual-editor/index.js","webpack://wp/./packages/edit-post/build-module/components/keyboard-shortcuts/@wordpress/edit-post/src/components/keyboard-shortcuts/index.js","webpack://wp/./packages/edit-post/build-module/components/keyboard-shortcut-help-modal/@wordpress/edit-post/src/components/keyboard-shortcut-help-modal/config.js","webpack://wp/./packages/edit-post/build-module/components/keyboard-shortcut-help-modal/@wordpress/edit-post/src/components/keyboard-shortcut-help-modal/shortcut.js","webpack://wp/./packages/edit-post/build-module/components/keyboard-shortcut-help-modal/@wordpress/edit-post/src/components/keyboard-shortcut-help-modal/dynamic-shortcut.js","webpack://wp/./packages/edit-post/build-module/components/keyboard-shortcut-help-modal/@wordpress/edit-post/src/components/keyboard-shortcut-help-modal/index.js","webpack://wp/./packages/edit-post/build-module/components/preferences-modal/options/@wordpress/edit-post/src/components/preferences-modal/options/enable-custom-fields.js","webpack://wp/./packages/edit-post/build-module/components/preferences-modal/options/@wordpress/edit-post/src/components/preferences-modal/options/enable-panel.js","webpack://wp/./packages/edit-post/build-module/components/preferences-modal/options/@wordpress/edit-post/src/components/preferences-modal/options/enable-plugin-document-setting-panel.js","webpack://wp/./packages/edit-post/build-module/components/preferences-modal/options/@wordpress/edit-post/src/components/preferences-modal/options/enable-publish-sidebar.js","webpack://wp/./packages/edit-post/build-module/components/preferences-modal/options/@wordpress/edit-post/src/components/preferences-modal/options/enable-feature.js","webpack://wp/./packages/edit-post/build-module/components/preferences-modal/@wordpress/edit-post/src/components/preferences-modal/meta-boxes-section.js","webpack://wp/./packages/edit-post/build-module/components/block-manager/@wordpress/edit-post/src/components/block-manager/checklist.js","webpack://wp/./packages/edit-post/build-module/components/block-manager/@wordpress/edit-post/src/components/block-manager/category.js","webpack://wp/./packages/edit-post/build-module/components/block-manager/@wordpress/edit-post/src/components/block-manager/index.js","webpack://wp/./packages/edit-post/build-module/components/preferences-modal/@wordpress/edit-post/src/components/preferences-modal/index.js","webpack://wp/./packages/edit-post/build-module/components/browser-url/@wordpress/edit-post/src/components/browser-url/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/wordpress.js","webpack://wp/./packages/edit-post/build-module/components/header/fullscreen-mode-close/@wordpress/edit-post/src/components/header/fullscreen-mode-close/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/list-view.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/plus.js","webpack://wp/./packages/edit-post/build-module/components/header/header-toolbar/@wordpress/edit-post/src/components/header/header-toolbar/index.js","webpack://wp/./packages/edit-post/build-module/components/header/mode-switcher/@wordpress/edit-post/src/components/header/mode-switcher/index.js","webpack://wp/./packages/edit-post/build-module/components/header/preferences-menu-item/@wordpress/edit-post/src/components/header/preferences-menu-item/index.js","webpack://wp/./packages/edit-post/build-module/components/header/writing-menu/@wordpress/edit-post/src/components/header/writing-menu/index.js","webpack://wp/./packages/edit-post/build-module/components/header/more-menu/@wordpress/edit-post/src/components/header/more-menu/index.js","webpack://wp/./packages/edit-post/build-module/components/header/@wordpress/edit-post/src/components/header/post-publish-button-or-toggle.js","webpack://wp/./packages/edit-post/build-module/components/device-preview/@wordpress/edit-post/src/components/device-preview/index.js","webpack://wp/./packages/edit-post/build-module/components/header/main-dashboard-button/@wordpress/edit-post/src/components/header/main-dashboard-button/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/chevron-down.js","webpack://wp/./packages/edit-post/build-module/components/header/template-title/@wordpress/edit-post/src/components/header/template-title/delete-template.js","webpack://wp/./packages/edit-post/build-module/components/header/template-title/@wordpress/edit-post/src/components/header/template-title/edit-template-title.js","webpack://wp/./packages/edit-post/build-module/components/header/template-title/@wordpress/edit-post/src/components/header/template-title/template-description.js","webpack://wp/./packages/edit-post/build-module/components/header/template-title/@wordpress/edit-post/src/components/header/template-title/index.js","webpack://wp/./packages/edit-post/build-module/components/header/@wordpress/edit-post/src/components/header/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/close.js","webpack://wp/./packages/edit-post/build-module/components/secondary-sidebar/@wordpress/edit-post/src/components/secondary-sidebar/inserter-sidebar.js","webpack://wp/./packages/edit-post/build-module/components/secondary-sidebar/@wordpress/edit-post/src/components/secondary-sidebar/list-view-sidebar.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/cog.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/settings-header/@wordpress/edit-post/src/components/sidebar/settings-header/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-visibility/@wordpress/edit-post/src/components/sidebar/post-visibility/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-trash/@wordpress/edit-post/src/components/sidebar/post-trash/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-schedule/@wordpress/edit-post/src/components/sidebar/post-schedule/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-sticky/@wordpress/edit-post/src/components/sidebar/post-sticky/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-author/@wordpress/edit-post/src/components/sidebar/post-author/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-slug/@wordpress/edit-post/src/components/sidebar/post-slug/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-format/@wordpress/edit-post/src/components/sidebar/post-format/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-pending-status/@wordpress/edit-post/src/components/sidebar/post-pending-status/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/plugin-post-status-info/@wordpress/edit-post/src/components/sidebar/plugin-post-status-info/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/add-template.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-template/@wordpress/edit-post/src/components/sidebar/post-template/create-modal.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-template/@wordpress/edit-post/src/components/sidebar/post-template/form.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-template/@wordpress/edit-post/src/components/sidebar/post-template/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-url/@wordpress/edit-post/src/components/sidebar/post-url/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-status/@wordpress/edit-post/src/components/sidebar/post-status/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/last-revision/@wordpress/edit-post/src/components/sidebar/last-revision/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-taxonomies/@wordpress/edit-post/src/components/sidebar/post-taxonomies/taxonomy-panel.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-taxonomies/@wordpress/edit-post/src/components/sidebar/post-taxonomies/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/featured-image/@wordpress/edit-post/src/components/sidebar/featured-image/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-excerpt/@wordpress/edit-post/src/components/sidebar/post-excerpt/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/discussion-panel/@wordpress/edit-post/src/components/sidebar/discussion-panel/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/page-attributes/@wordpress/edit-post/src/components/sidebar/page-attributes/index.js","webpack://wp/./packages/edit-post/build-module/components/meta-boxes/meta-boxes-area/@wordpress/edit-post/src/components/meta-boxes/meta-boxes-area/index.js","webpack://wp/./packages/edit-post/build-module/components/meta-boxes/@wordpress/edit-post/src/components/meta-boxes/meta-box-visibility.js","webpack://wp/./packages/edit-post/build-module/components/meta-boxes/@wordpress/edit-post/src/components/meta-boxes/index.js","webpack://wp/external window [\"wp\",\"warning\"]","webpack://wp/./packages/edit-post/build-module/components/sidebar/plugin-document-setting-panel/@wordpress/edit-post/src/components/sidebar/plugin-document-setting-panel/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/plugin-sidebar/@wordpress/edit-post/src/components/sidebar/plugin-sidebar/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/layout.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/template-summary/@wordpress/edit-post/src/components/sidebar/template-summary/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/settings-sidebar/@wordpress/edit-post/src/components/sidebar/settings-sidebar/index.js","webpack://wp/./packages/edit-post/build-module/components/welcome-guide/@wordpress/edit-post/src/components/welcome-guide/image.js","webpack://wp/./packages/edit-post/build-module/components/welcome-guide/@wordpress/edit-post/src/components/welcome-guide/default.js","webpack://wp/./packages/edit-post/build-module/components/welcome-guide/@wordpress/edit-post/src/components/welcome-guide/template.js","webpack://wp/./packages/edit-post/build-module/components/welcome-guide/@wordpress/edit-post/src/components/welcome-guide/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/plugin-post-publish-panel/@wordpress/edit-post/src/components/sidebar/plugin-post-publish-panel/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/plugin-pre-publish-panel/@wordpress/edit-post/src/components/sidebar/plugin-pre-publish-panel/index.js","webpack://wp/./packages/edit-post/build-module/components/layout/@wordpress/edit-post/src/components/layout/actions-panel.js","webpack://wp/./packages/edit-post/build-module/components/start-page-options/@wordpress/edit-post/src/components/start-page-options/index.js","webpack://wp/./packages/edit-post/build-module/components/layout/@wordpress/edit-post/src/components/layout/index.js","webpack://wp/./packages/edit-post/build-module/components/editor-initialization/@wordpress/edit-post/src/components/editor-initialization/index.js","webpack://wp/./packages/edit-post/build-module/components/editor-initialization/@wordpress/edit-post/src/components/editor-initialization/listener-hooks.js","webpack://wp/./packages/edit-post/build-module/@wordpress/edit-post/src/editor.js","webpack://wp/./packages/edit-post/build-module/components/block-settings-menu/@wordpress/edit-post/src/components/block-settings-menu/plugin-block-settings-menu-item.js","webpack://wp/./packages/edit-post/build-module/components/header/plugin-more-menu-item/@wordpress/edit-post/src/components/header/plugin-more-menu-item/index.js","webpack://wp/./packages/edit-post/build-module/components/header/plugin-sidebar-more-menu-item/@wordpress/edit-post/src/components/header/plugin-sidebar-more-menu-item/index.js","webpack://wp/./packages/edit-post/build-module/@wordpress/edit-post/src/index.js"],"sourcesContent":["/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"element\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"blocks\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"blockLibrary\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"data\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"hooks\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"preferences\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"mediaUtils\"];","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { MediaUpload } from '@wordpress/media-utils';\n\nconst replaceMediaUpload = () => MediaUpload;\n\naddFilter(\n\t'editor.MediaUpload',\n\t'core/edit-post/replace-media-upload',\n\treplaceMediaUpload\n);\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"lodash\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"components\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"blockEditor\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"i18n\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"compose\"];","/**\n * External dependencies\n */\nimport { find } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreateBlock,\n\tfindTransform,\n\tgetBlockTransforms,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport { Button } from '@wordpress/components';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { Warning, store as blockEditorStore } from '@wordpress/block-editor';\nimport { addFilter } from '@wordpress/hooks';\nimport { __ } from '@wordpress/i18n';\nimport { compose, createHigherOrderComponent } from '@wordpress/compose';\n\nconst enhance = compose(\n\t/**\n\t * For blocks whose block type doesn't support `multiple`, provides the\n\t * wrapped component with `originalBlockClientId` -- a reference to the\n\t * first block of the same type in the content -- if and only if that\n\t * \"original\" block is not the current one. Thus, an inexisting\n\t * `originalBlockClientId` prop signals that the block is valid.\n\t *\n\t * @param {WPComponent} WrappedBlockEdit A filtered BlockEdit instance.\n\t *\n\t * @return {WPComponent} Enhanced component with merged state data props.\n\t */\n\twithSelect( ( select, block ) => {\n\t\tconst multiple = hasBlockSupport( block.name, 'multiple', true );\n\n\t\t// For block types with `multiple` support, there is no \"original\n\t\t// block\" to be found in the content, as the block itself is valid.\n\t\tif ( multiple ) {\n\t\t\treturn {};\n\t\t}\n\n\t\t// Otherwise, only pass `originalBlockClientId` if it refers to a different\n\t\t// block from the current one.\n\t\tconst blocks = select( blockEditorStore ).getBlocks();\n\t\tconst firstOfSameType = find(\n\t\t\tblocks,\n\t\t\t( { name } ) => block.name === name\n\t\t);\n\t\tconst isInvalid =\n\t\t\tfirstOfSameType && firstOfSameType.clientId !== block.clientId;\n\t\treturn {\n\t\t\toriginalBlockClientId: isInvalid && firstOfSameType.clientId,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, { originalBlockClientId } ) => ( {\n\t\tselectFirst: () =>\n\t\t\tdispatch( blockEditorStore ).selectBlock( originalBlockClientId ),\n\t} ) )\n);\n\nconst withMultipleValidation = createHigherOrderComponent( ( BlockEdit ) => {\n\treturn enhance( ( { originalBlockClientId, selectFirst, ...props } ) => {\n\t\tif ( ! originalBlockClientId ) {\n\t\t\treturn <BlockEdit { ...props } />;\n\t\t}\n\n\t\tconst blockType = getBlockType( props.name );\n\t\tconst outboundType = getOutboundType( props.name );\n\n\t\treturn [\n\t\t\t<div key=\"invalid-preview\" style={ { minHeight: '60px' } }>\n\t\t\t\t<BlockEdit key=\"block-edit\" { ...props } />\n\t\t\t</div>,\n\t\t\t<Warning\n\t\t\t\tkey=\"multiple-use-warning\"\n\t\t\t\tactions={ [\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey=\"find-original\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tonClick={ selectFirst }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Find original' ) }\n\t\t\t\t\t</Button>,\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey=\"remove\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tonClick={ () => props.onReplace( [] ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t</Button>,\n\t\t\t\t\toutboundType && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey=\"transform\"\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\tprops.onReplace(\n\t\t\t\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t\t\t\toutboundType.name,\n\t\t\t\t\t\t\t\t\t\tprops.attributes\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>\n\t\t\t\t\t\t\t{ __( 'Transform into:' ) } { outboundType.title }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t),\n\t\t\t\t] }\n\t\t\t>\n\t\t\t\t<strong>{ blockType?.title }: </strong>\n\t\t\t\t{ __( 'This block can only be used once.' ) }\n\t\t\t</Warning>,\n\t\t];\n\t} );\n}, 'withMultipleValidation' );\n\n/**\n * Given a base block name, returns the default block type to which to offer\n * transforms.\n *\n * @param {string} blockName Base block name.\n *\n * @return {?Object} The chosen default block type.\n */\nfunction getOutboundType( blockName ) {\n\t// Grab the first outbound transform.\n\tconst transform = findTransform(\n\t\tgetBlockTransforms( 'to', blockName ),\n\t\t( { type, blocks } ) => type === 'block' && blocks.length === 1 // What about when .length > 1?\n\t);\n\n\tif ( ! transform ) {\n\t\treturn null;\n\t}\n\n\treturn getBlockType( transform.blocks[ 0 ] );\n}\n\naddFilter(\n\t'editor.BlockEdit',\n\t'core/edit-post/validate-multiple-use/with-multiple-validation',\n\twithMultipleValidation\n);\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"primitives\"];","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst external = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18.2 17c0 .7-.6 1.2-1.2 1.2H7c-.7 0-1.2-.6-1.2-1.2V7c0-.7.6-1.2 1.2-1.2h3.2V4.2H7C5.5 4.2 4.2 5.5 4.2 7v10c0 1.5 1.2 2.8 2.8 2.8h10c1.5 0 2.8-1.2 2.8-2.8v-3.6h-1.5V17zM14.9 3v1.5h3.7l-6.4 6.4 1.1 1.1 6.4-6.4v3.7h1.5V3h-6.3z\" />\n\t</SVG>\n);\n\nexport default external;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"plugins\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"url\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"notices\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"editor\"];","/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { useCopyToClipboard } from '@wordpress/compose';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as editorStore } from '@wordpress/editor';\n\nexport default function CopyContentMenuItem() {\n\tconst { createNotice } = useDispatch( noticesStore );\n\tconst getText = useSelect(\n\t\t( select ) => () =>\n\t\t\tselect( editorStore ).getEditedPostAttribute( 'content' ),\n\t\t[]\n\t);\n\n\tfunction onSuccess() {\n\t\tcreateNotice( 'info', __( 'All content copied.' ), {\n\t\t\tisDismissible: true,\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t}\n\n\tconst ref = useCopyToClipboard( getText, onSuccess );\n\n\treturn <MenuItem ref={ ref }>{ __( 'Copy all blocks' ) }</MenuItem>;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"keycodes\"];","/**\n * External dependencies\n */\nimport { includes } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\n\n/**\n * Reducer storing the list of all programmatically removed panels.\n *\n * @param {Array} state Current state.\n * @param {Object} action Action object.\n *\n * @return {Array} Updated state.\n */\nexport function removedPanels( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'REMOVE_PANEL':\n\t\t\tif ( ! includes( state, action.panelName ) ) {\n\t\t\t\treturn [ ...state, action.panelName ];\n\t\t\t}\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer for storing the name of the open modal, or null if no modal is open.\n *\n * @param {Object} state Previous state.\n * @param {Object} action Action object containing the `name` of the modal\n *\n * @return {Object} Updated state\n */\nexport function activeModal( state = null, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'OPEN_MODAL':\n\t\t\treturn action.name;\n\t\tcase 'CLOSE_MODAL':\n\t\t\treturn null;\n\t}\n\n\treturn state;\n}\n\nexport function publishSidebarActive( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'OPEN_PUBLISH_SIDEBAR':\n\t\t\treturn true;\n\t\tcase 'CLOSE_PUBLISH_SIDEBAR':\n\t\t\treturn false;\n\t\tcase 'TOGGLE_PUBLISH_SIDEBAR':\n\t\t\treturn ! state;\n\t}\n\treturn state;\n}\n\n/**\n * Reducer keeping track of the meta boxes isSaving state.\n * A \"true\" value means the meta boxes saving request is in-flight.\n *\n *\n * @param {boolean} state Previous state.\n * @param {Object} action Action Object.\n *\n * @return {Object} Updated state.\n */\nexport function isSavingMetaBoxes( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'REQUEST_META_BOX_UPDATES':\n\t\t\treturn true;\n\t\tcase 'META_BOX_UPDATES_SUCCESS':\n\t\tcase 'META_BOX_UPDATES_FAILURE':\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn state;\n\t}\n}\n\n/**\n * Reducer keeping track of the meta boxes per location.\n *\n * @param {boolean} state Previous state.\n * @param {Object} action Action Object.\n *\n * @return {Object} Updated state.\n */\nexport function metaBoxLocations( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_META_BOXES_PER_LOCATIONS':\n\t\t\treturn action.metaBoxesPerLocation;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning the editing canvas device type.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function deviceType( state = 'Desktop', action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_PREVIEW_DEVICE_TYPE':\n\t\t\treturn action.deviceType;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer to set the block inserter panel open or closed.\n *\n * Note: this reducer interacts with the list view panel reducer\n * to make sure that only one of the two panels is open at the same time.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n */\nexport function blockInserterPanel( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_IS_LIST_VIEW_OPENED':\n\t\t\treturn action.isOpen ? false : state;\n\t\tcase 'SET_IS_INSERTER_OPENED':\n\t\t\treturn action.value;\n\t}\n\treturn state;\n}\n\n/**\n * Reducer to set the list view panel open or closed.\n *\n * Note: this reducer interacts with the inserter panel reducer\n * to make sure that only one of the two panels is open at the same time.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n */\nexport function listViewPanel( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_IS_INSERTER_OPENED':\n\t\t\treturn action.value ? false : state;\n\t\tcase 'SET_IS_LIST_VIEW_OPENED':\n\t\t\treturn action.isOpen;\n\t}\n\treturn state;\n}\n\n/**\n * Reducer tracking whether the inserter is open.\n *\n * @param {boolean} state\n * @param {Object} action\n */\nfunction isEditingTemplate( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_IS_EDITING_TEMPLATE':\n\t\t\treturn action.value;\n\t}\n\treturn state;\n}\n\n/**\n * Reducer tracking whether meta boxes are initialized.\n *\n * @param {boolean} state\n * @param {Object} action\n *\n * @return {boolean} Updated state.\n */\nfunction metaBoxesInitialized( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'META_BOXES_INITIALIZED':\n\t\t\treturn true;\n\t}\n\treturn state;\n}\n\nconst metaBoxes = combineReducers( {\n\tisSaving: isSavingMetaBoxes,\n\tlocations: metaBoxLocations,\n\tinitialized: metaBoxesInitialized,\n} );\n\nexport default combineReducers( {\n\tactiveModal,\n\tmetaBoxes,\n\tpublishSidebarActive,\n\tremovedPanels,\n\tdeviceType,\n\tblockInserterPanel,\n\tlistViewPanel,\n\tisEditingTemplate,\n} );\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"apiFetch\"];","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst check = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z\" />\n\t</SVG>\n);\n\nexport default check;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst starFilled = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M11.776 4.454a.25.25 0 01.448 0l2.069 4.192a.25.25 0 00.188.137l4.626.672a.25.25 0 01.139.426l-3.348 3.263a.25.25 0 00-.072.222l.79 4.607a.25.25 0 01-.362.263l-4.138-2.175a.25.25 0 00-.232 0l-4.138 2.175a.25.25 0 01-.363-.263l.79-4.607a.25.25 0 00-.071-.222L4.754 9.881a.25.25 0 01.139-.426l4.626-.672a.25.25 0 00.188-.137l2.069-4.192z\" />\n\t</SVG>\n);\n\nexport default starFilled;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst starEmpty = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\td=\"M9.706 8.646a.25.25 0 01-.188.137l-4.626.672a.25.25 0 00-.139.427l3.348 3.262a.25.25 0 01.072.222l-.79 4.607a.25.25 0 00.362.264l4.138-2.176a.25.25 0 01.233 0l4.137 2.175a.25.25 0 00.363-.263l-.79-4.607a.25.25 0 01.072-.222l3.347-3.262a.25.25 0 00-.139-.427l-4.626-.672a.25.25 0 01-.188-.137l-2.069-4.192a.25.25 0 00-.448 0L9.706 8.646zM12 7.39l-.948 1.921a1.75 1.75 0 01-1.317.957l-2.12.308 1.534 1.495c.412.402.6.982.503 1.55l-.362 2.11 1.896-.997a1.75 1.75 0 011.629 0l1.895.997-.362-2.11a1.75 1.75 0 01.504-1.55l1.533-1.495-2.12-.308a1.75 1.75 0 01-1.317-.957L12 7.39z\"\n\t\t\tclipRule=\"evenodd\"\n\t\t/>\n\t</SVG>\n);\n\nexport default starEmpty;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"viewport\"];","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst closeSmall = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z\" />\n\t</SVG>\n);\n\nexport default closeSmall;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"deprecated\"];","/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Set a default complementary area.\n *\n * @param {string} scope Complementary area scope.\n * @param {string} area Area identifier.\n *\n * @return {Object} Action object.\n */\nexport const setDefaultComplementaryArea = ( scope, area ) => ( {\n\ttype: 'SET_DEFAULT_COMPLEMENTARY_AREA',\n\tscope,\n\tarea,\n} );\n\n/**\n * Enable the complementary area.\n *\n * @param {string} scope Complementary area scope.\n * @param {string} area Area identifier.\n */\nexport const enableComplementaryArea =\n\t( scope, area ) =>\n\t( { registry, dispatch } ) => {\n\t\t// Return early if there's no area.\n\t\tif ( ! area ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isComplementaryAreaVisible = registry\n\t\t\t.select( preferencesStore )\n\t\t\t.get( scope, 'isComplementaryAreaVisible' );\n\n\t\tif ( ! isComplementaryAreaVisible ) {\n\t\t\tregistry\n\t\t\t\t.dispatch( preferencesStore )\n\t\t\t\t.set( scope, 'isComplementaryAreaVisible', true );\n\t\t}\n\n\t\tdispatch( {\n\t\t\ttype: 'ENABLE_COMPLEMENTARY_AREA',\n\t\t\tscope,\n\t\t\tarea,\n\t\t} );\n\t};\n\n/**\n * Disable the complementary area.\n *\n * @param {string} scope Complementary area scope.\n */\nexport const disableComplementaryArea =\n\t( scope ) =>\n\t( { registry } ) => {\n\t\tconst isComplementaryAreaVisible = registry\n\t\t\t.select( preferencesStore )\n\t\t\t.get( scope, 'isComplementaryAreaVisible' );\n\n\t\tif ( isComplementaryAreaVisible ) {\n\t\t\tregistry\n\t\t\t\t.dispatch( preferencesStore )\n\t\t\t\t.set( scope, 'isComplementaryAreaVisible', false );\n\t\t}\n\t};\n\n/**\n * Pins an item.\n *\n * @param {string} scope Item scope.\n * @param {string} item Item identifier.\n *\n * @return {Object} Action object.\n */\nexport const pinItem =\n\t( scope, item ) =>\n\t( { registry } ) => {\n\t\t// Return early if there's no item.\n\t\tif ( ! item ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst pinnedItems = registry\n\t\t\t.select( preferencesStore )\n\t\t\t.get( scope, 'pinnedItems' );\n\n\t\t// The item is already pinned, there's nothing to do.\n\t\tif ( pinnedItems?.[ item ] === true ) {\n\t\t\treturn;\n\t\t}\n\n\t\tregistry.dispatch( preferencesStore ).set( scope, 'pinnedItems', {\n\t\t\t...pinnedItems,\n\t\t\t[ item ]: true,\n\t\t} );\n\t};\n\n/**\n * Unpins an item.\n *\n * @param {string} scope Item scope.\n * @param {string} item Item identifier.\n */\nexport const unpinItem =\n\t( scope, item ) =>\n\t( { registry } ) => {\n\t\t// Return early if there's no item.\n\t\tif ( ! item ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst pinnedItems = registry\n\t\t\t.select( preferencesStore )\n\t\t\t.get( scope, 'pinnedItems' );\n\n\t\tregistry.dispatch( preferencesStore ).set( scope, 'pinnedItems', {\n\t\t\t...pinnedItems,\n\t\t\t[ item ]: false,\n\t\t} );\n\t};\n\n/**\n * Returns an action object used in signalling that a feature should be toggled.\n *\n * @param {string} scope The feature scope (e.g. core/edit-post).\n * @param {string} featureName The feature name.\n */\nexport function toggleFeature( scope, featureName ) {\n\treturn function ( { registry } ) {\n\t\tdeprecated( `dispatch( 'core/interface' ).toggleFeature`, {\n\t\t\tsince: '6.0',\n\t\t\talternative: `dispatch( 'core/preferences' ).toggle`,\n\t\t} );\n\n\t\tregistry.dispatch( preferencesStore ).toggle( scope, featureName );\n\t};\n}\n\n/**\n * Returns an action object used in signalling that a feature should be set to\n * a true or false value\n *\n * @param {string} scope The feature scope (e.g. core/edit-post).\n * @param {string} featureName The feature name.\n * @param {boolean} value The value to set.\n *\n * @return {Object} Action object.\n */\nexport function setFeatureValue( scope, featureName, value ) {\n\treturn function ( { registry } ) {\n\t\tdeprecated( `dispatch( 'core/interface' ).setFeatureValue`, {\n\t\t\tsince: '6.0',\n\t\t\talternative: `dispatch( 'core/preferences' ).set`,\n\t\t} );\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( scope, featureName, !! value );\n\t};\n}\n\n/**\n * Returns an action object used in signalling that defaults should be set for features.\n *\n * @param {string} scope The feature scope (e.g. core/edit-post).\n * @param {Object<string, boolean>} defaults A key/value map of feature names to values.\n *\n * @return {Object} Action object.\n */\nexport function setFeatureDefaults( scope, defaults ) {\n\treturn function ( { registry } ) {\n\t\tdeprecated( `dispatch( 'core/interface' ).setFeatureDefaults`, {\n\t\t\tsince: '6.0',\n\t\t\talternative: `dispatch( 'core/preferences' ).setDefaults`,\n\t\t} );\n\n\t\tregistry.dispatch( preferencesStore ).setDefaults( scope, defaults );\n\t};\n}\n","/**\n * WordPress dependencies\n */\nimport { createRegistrySelector } from '@wordpress/data';\nimport deprecated from '@wordpress/deprecated';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Returns the complementary area that is active in a given scope.\n *\n * @param {Object} state Global application state.\n * @param {string} scope Item scope.\n *\n * @return {string | null | undefined} The complementary area that is active in the given scope.\n */\nexport const getActiveComplementaryArea = createRegistrySelector(\n\t( select ) => ( state, scope ) => {\n\t\tconst isComplementaryAreaVisible = select( preferencesStore ).get(\n\t\t\tscope,\n\t\t\t'isComplementaryAreaVisible'\n\t\t);\n\n\t\t// Return `undefined` to indicate that the user has never toggled\n\t\t// visibility, this is the vanilla default. Other code relies on this\n\t\t// nuance in the return value.\n\t\tif ( isComplementaryAreaVisible === undefined ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Return `null` to indicate the user hid the complementary area.\n\t\tif ( ! isComplementaryAreaVisible ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn state?.complementaryAreas?.[ scope ];\n\t}\n);\n\n/**\n * Returns a boolean indicating if an item is pinned or not.\n *\n * @param {Object} state Global application state.\n * @param {string} scope Scope.\n * @param {string} item Item to check.\n *\n * @return {boolean} True if the item is pinned and false otherwise.\n */\nexport const isItemPinned = createRegistrySelector(\n\t( select ) => ( state, scope, item ) => {\n\t\tconst pinnedItems = select( preferencesStore ).get(\n\t\t\tscope,\n\t\t\t'pinnedItems'\n\t\t);\n\t\treturn pinnedItems?.[ item ] ?? true;\n\t}\n);\n\n/**\n * Returns a boolean indicating whether a feature is active for a particular\n * scope.\n *\n * @param {Object} state The store state.\n * @param {string} scope The scope of the feature (e.g. core/edit-post).\n * @param {string} featureName The name of the feature.\n *\n * @return {boolean} Is the feature enabled?\n */\nexport const isFeatureActive = createRegistrySelector(\n\t( select ) => ( state, scope, featureName ) => {\n\t\tdeprecated(\n\t\t\t`select( 'core/interface' ).isFeatureActive( scope, featureName )`,\n\t\t\t{\n\t\t\t\tsince: '6.0',\n\t\t\t\talternative: `select( 'core/preferences' ).get( scope, featureName )`,\n\t\t\t}\n\t\t);\n\n\t\treturn !! select( preferencesStore ).get( scope, featureName );\n\t}\n);\n","/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\n\nexport function complementaryAreas( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_DEFAULT_COMPLEMENTARY_AREA': {\n\t\t\tconst { scope, area } = action;\n\n\t\t\t// If there's already an area, don't overwrite it.\n\t\t\tif ( state[ scope ] ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ scope ]: area,\n\t\t\t};\n\t\t}\n\t\tcase 'ENABLE_COMPLEMENTARY_AREA': {\n\t\t\tconst { scope, area } = action;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ scope ]: area,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn state;\n}\n\nexport default combineReducers( {\n\tcomplementaryAreas,\n} );\n","/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport * as actions from './actions';\nimport * as selectors from './selectors';\nimport reducer from './reducer';\nimport { STORE_NAME } from './constants';\n\n/**\n * Store definition for the interface namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore( STORE_NAME, {\n\treducer,\n\tactions,\n\tselectors,\n} );\n\n// Once we build a more generic persistence plugin that works across types of stores\n// we'd be able to replace this with a register call.\nregister( store );\n","/**\n * The identifier for the data store.\n *\n * @type {string}\n */\nexport const STORE_NAME = 'core/interface';\n","/**\n * WordPress dependencies\n */\nimport { withPluginContext } from '@wordpress/plugins';\n\nexport default withPluginContext( ( context, ownProps ) => {\n\treturn {\n\t\ticon: ownProps.icon || context.icon,\n\t\tidentifier:\n\t\t\townProps.identifier || `${ context.name }/${ ownProps.name }`,\n\t};\n} );\n","/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as interfaceStore } from '../../store';\nimport complementaryAreaContext from '../complementary-area-context';\n\nfunction ComplementaryAreaToggle( {\n\tas = Button,\n\tscope,\n\tidentifier,\n\ticon,\n\tselectedIcon,\n\tname,\n\t...props\n} ) {\n\tconst ComponentToUse = as;\n\tconst isSelected = useSelect(\n\t\t( select ) =>\n\t\t\tselect( interfaceStore ).getActiveComplementaryArea( scope ) ===\n\t\t\tidentifier,\n\t\t[ identifier ]\n\t);\n\tconst { enableComplementaryArea, disableComplementaryArea } =\n\t\tuseDispatch( interfaceStore );\n\treturn (\n\t\t<ComponentToUse\n\t\t\ticon={ selectedIcon && isSelected ? selectedIcon : icon }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( isSelected ) {\n\t\t\t\t\tdisableComplementaryArea( scope );\n\t\t\t\t} else {\n\t\t\t\t\tenableComplementaryArea( scope, identifier );\n\t\t\t\t}\n\t\t\t} }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n\nexport default complementaryAreaContext( ComplementaryAreaToggle );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ComplementaryAreaToggle from '../complementary-area-toggle';\n\nconst ComplementaryAreaHeader = ( {\n\tsmallScreenTitle,\n\tchildren,\n\tclassName,\n\ttoggleButtonProps,\n} ) => {\n\tconst toggleButton = (\n\t\t<ComplementaryAreaToggle icon={ closeSmall } { ...toggleButtonProps } />\n\t);\n\treturn (\n\t\t<>\n\t\t\t<div className=\"components-panel__header interface-complementary-area-header__small\">\n\t\t\t\t{ smallScreenTitle && (\n\t\t\t\t\t<span className=\"interface-complementary-area-header__small-title\">\n\t\t\t\t\t\t{ smallScreenTitle }\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t{ toggleButton }\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'components-panel__header',\n\t\t\t\t\t'interface-complementary-area-header',\n\t\t\t\t\tclassName\n\t\t\t\t) }\n\t\t\t\ttabIndex={ -1 }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t\t{ toggleButton }\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default ComplementaryAreaHeader;\n","/**\n * WordPress dependencies\n */\nimport { ButtonGroup, Button, Slot, Fill } from '@wordpress/components';\nimport { Children } from '@wordpress/element';\n\nconst noop = () => {};\n\nfunction ActionItemSlot( {\n\tname,\n\tas: Component = ButtonGroup,\n\tfillProps = {},\n\tbubblesVirtually,\n\t...props\n} ) {\n\treturn (\n\t\t<Slot\n\t\t\tname={ name }\n\t\t\tbubblesVirtually={ bubblesVirtually }\n\t\t\tfillProps={ fillProps }\n\t\t>\n\t\t\t{ ( fills ) => {\n\t\t\t\tif ( ! Children.toArray( fills ).length ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// Special handling exists for backward compatibility.\n\t\t\t\t// It ensures that menu items created by plugin authors aren't\n\t\t\t\t// duplicated with automatically injected menu items coming\n\t\t\t\t// from pinnable plugin sidebars.\n\t\t\t\t// @see https://github.com/WordPress/gutenberg/issues/14457\n\t\t\t\tconst initializedByPlugins = [];\n\t\t\t\tChildren.forEach(\n\t\t\t\t\tfills,\n\t\t\t\t\t( {\n\t\t\t\t\t\tprops: { __unstableExplicitMenuItem, __unstableTarget },\n\t\t\t\t\t} ) => {\n\t\t\t\t\t\tif ( __unstableTarget && __unstableExplicitMenuItem ) {\n\t\t\t\t\t\t\tinitializedByPlugins.push( __unstableTarget );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\tconst children = Children.map( fills, ( child ) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t! child.props.__unstableExplicitMenuItem &&\n\t\t\t\t\t\tinitializedByPlugins.includes(\n\t\t\t\t\t\t\tchild.props.__unstableTarget\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\treturn child;\n\t\t\t\t} );\n\n\t\t\t\treturn <Component { ...props }>{ children }</Component>;\n\t\t\t} }\n\t\t</Slot>\n\t);\n}\n\nfunction ActionItem( { name, as: Component = Button, onClick, ...props } ) {\n\treturn (\n\t\t<Fill name={ name }>\n\t\t\t{ ( { onClick: fpOnClick } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Component\n\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\tonClick || fpOnClick\n\t\t\t\t\t\t\t\t? ( ...args ) => {\n\t\t\t\t\t\t\t\t\t\t( onClick || noop )( ...args );\n\t\t\t\t\t\t\t\t\t\t( fpOnClick || noop )( ...args );\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t</Fill>\n\t);\n}\n\nActionItem.Slot = ActionItemSlot;\n\nexport default ActionItem;\n","/**\n * WordPress dependencies\n */\nimport { check } from '@wordpress/icons';\nimport { MenuItem } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport ComplementaryAreaToggle from '../complementary-area-toggle';\nimport ActionItem from '../action-item';\n\nconst PluginsMenuItem = ( {\n\t// Menu item is marked with unstable prop for backward compatibility.\n\t// They are removed so they don't leak to DOM elements.\n\t// @see https://github.com/WordPress/gutenberg/issues/14457\n\t__unstableExplicitMenuItem,\n\t__unstableTarget,\n\t...restProps\n} ) => <MenuItem { ...restProps } />;\n\nexport default function ComplementaryAreaMoreMenuItem( {\n\tscope,\n\ttarget,\n\t__unstableExplicitMenuItem,\n\t...props\n} ) {\n\treturn (\n\t\t<ComplementaryAreaToggle\n\t\t\tas={ ( toggleProps ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<ActionItem\n\t\t\t\t\t\t__unstableExplicitMenuItem={\n\t\t\t\t\t\t\t__unstableExplicitMenuItem\n\t\t\t\t\t\t}\n\t\t\t\t\t\t__unstableTarget={ `${ scope }/${ target }` }\n\t\t\t\t\t\tas={ PluginsMenuItem }\n\t\t\t\t\t\tname={ `${ scope }/plugin-more-menu` }\n\t\t\t\t\t\t{ ...toggleProps }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trole=\"menuitemcheckbox\"\n\t\t\tselectedIcon={ check }\n\t\t\tname={ target }\n\t\t\tscope={ scope }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Slot, Fill } from '@wordpress/components';\n\nfunction PinnedItems( { scope, ...props } ) {\n\treturn <Fill name={ `PinnedItems/${ scope }` } { ...props } />;\n}\n\nfunction PinnedItemsSlot( { scope, className, ...props } ) {\n\treturn (\n\t\t<Slot name={ `PinnedItems/${ scope }` } { ...props }>\n\t\t\t{ ( fills ) =>\n\t\t\t\tfills?.length > 0 && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\t'interface-pinned-items'\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ fills }\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t</Slot>\n\t);\n}\n\nPinnedItems.Slot = PinnedItemsSlot;\n\nexport default PinnedItems;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Button, Panel, Slot, Fill } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { check, starEmpty, starFilled } from '@wordpress/icons';\nimport { useEffect, useRef } from '@wordpress/element';\nimport { store as viewportStore } from '@wordpress/viewport';\n\n/**\n * Internal dependencies\n */\nimport ComplementaryAreaHeader from '../complementary-area-header';\nimport ComplementaryAreaMoreMenuItem from '../complementary-area-more-menu-item';\nimport ComplementaryAreaToggle from '../complementary-area-toggle';\nimport withComplementaryAreaContext from '../complementary-area-context';\nimport PinnedItems from '../pinned-items';\nimport { store as interfaceStore } from '../../store';\n\nfunction ComplementaryAreaSlot( { scope, ...props } ) {\n\treturn <Slot name={ `ComplementaryArea/${ scope }` } { ...props } />;\n}\n\nfunction ComplementaryAreaFill( { scope, children, className } ) {\n\treturn (\n\t\t<Fill name={ `ComplementaryArea/${ scope }` }>\n\t\t\t<div className={ className }>{ children }</div>\n\t\t</Fill>\n\t);\n}\n\nfunction useAdjustComplementaryListener(\n\tscope,\n\tidentifier,\n\tactiveArea,\n\tisActive,\n\tisSmall\n) {\n\tconst previousIsSmall = useRef( false );\n\tconst shouldOpenWhenNotSmall = useRef( false );\n\tconst { enableComplementaryArea, disableComplementaryArea } =\n\t\tuseDispatch( interfaceStore );\n\tuseEffect( () => {\n\t\t// If the complementary area is active and the editor is switching from a big to a small window size.\n\t\tif ( isActive && isSmall && ! previousIsSmall.current ) {\n\t\t\t// Disable the complementary area.\n\t\t\tdisableComplementaryArea( scope );\n\t\t\t// Flag the complementary area to be reopened when the window size goes from small to big.\n\t\t\tshouldOpenWhenNotSmall.current = true;\n\t\t} else if (\n\t\t\t// If there is a flag indicating the complementary area should be enabled when we go from small to big window size\n\t\t\t// and we are going from a small to big window size.\n\t\t\tshouldOpenWhenNotSmall.current &&\n\t\t\t! isSmall &&\n\t\t\tpreviousIsSmall.current\n\t\t) {\n\t\t\t// Remove the flag indicating the complementary area should be enabled.\n\t\t\tshouldOpenWhenNotSmall.current = false;\n\t\t\t// Enable the complementary area.\n\t\t\tenableComplementaryArea( scope, identifier );\n\t\t} else if (\n\t\t\t// If the flag is indicating the current complementary should be reopened but another complementary area becomes active,\n\t\t\t// remove the flag.\n\t\t\tshouldOpenWhenNotSmall.current &&\n\t\t\tactiveArea &&\n\t\t\tactiveArea !== identifier\n\t\t) {\n\t\t\tshouldOpenWhenNotSmall.current = false;\n\t\t}\n\t\tif ( isSmall !== previousIsSmall.current ) {\n\t\t\tpreviousIsSmall.current = isSmall;\n\t\t}\n\t}, [ isActive, isSmall, scope, identifier, activeArea ] );\n}\n\nfunction ComplementaryArea( {\n\tchildren,\n\tclassName,\n\tcloseLabel = __( 'Close plugin' ),\n\tidentifier,\n\theader,\n\theaderClassName,\n\ticon,\n\tisPinnable = true,\n\tpanelClassName,\n\tscope,\n\tname,\n\tsmallScreenTitle,\n\ttitle,\n\ttoggleShortcut,\n\tisActiveByDefault,\n\tshowIconLabels = false,\n} ) {\n\tconst { isActive, isPinned, activeArea, isSmall, isLarge } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getActiveComplementaryArea, isItemPinned } =\n\t\t\t\tselect( interfaceStore );\n\t\t\tconst _activeArea = getActiveComplementaryArea( scope );\n\t\t\treturn {\n\t\t\t\tisActive: _activeArea === identifier,\n\t\t\t\tisPinned: isItemPinned( scope, identifier ),\n\t\t\t\tactiveArea: _activeArea,\n\t\t\t\tisSmall: select( viewportStore ).isViewportMatch( '< medium' ),\n\t\t\t\tisLarge: select( viewportStore ).isViewportMatch( 'large' ),\n\t\t\t};\n\t\t},\n\t\t[ identifier, scope ]\n\t);\n\tuseAdjustComplementaryListener(\n\t\tscope,\n\t\tidentifier,\n\t\tactiveArea,\n\t\tisActive,\n\t\tisSmall\n\t);\n\tconst {\n\t\tenableComplementaryArea,\n\t\tdisableComplementaryArea,\n\t\tpinItem,\n\t\tunpinItem,\n\t} = useDispatch( interfaceStore );\n\n\tuseEffect( () => {\n\t\tif ( isActiveByDefault && activeArea === undefined && ! isSmall ) {\n\t\t\tenableComplementaryArea( scope, identifier );\n\t\t}\n\t}, [ activeArea, isActiveByDefault, scope, identifier, isSmall ] );\n\n\treturn (\n\t\t<>\n\t\t\t{ isPinnable && (\n\t\t\t\t<PinnedItems scope={ scope }>\n\t\t\t\t\t{ isPinned && (\n\t\t\t\t\t\t<ComplementaryAreaToggle\n\t\t\t\t\t\t\tscope={ scope }\n\t\t\t\t\t\t\tidentifier={ identifier }\n\t\t\t\t\t\t\tisPressed={\n\t\t\t\t\t\t\t\tisActive && ( ! showIconLabels || isLarge )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taria-expanded={ isActive }\n\t\t\t\t\t\t\tlabel={ title }\n\t\t\t\t\t\t\ticon={ showIconLabels ? check : icon }\n\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PinnedItems>\n\t\t\t) }\n\t\t\t{ name && isPinnable && (\n\t\t\t\t<ComplementaryAreaMoreMenuItem\n\t\t\t\t\ttarget={ name }\n\t\t\t\t\tscope={ scope }\n\t\t\t\t\ticon={ icon }\n\t\t\t\t>\n\t\t\t\t\t{ title }\n\t\t\t\t</ComplementaryAreaMoreMenuItem>\n\t\t\t) }\n\t\t\t{ isActive && (\n\t\t\t\t<ComplementaryAreaFill\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'interface-complementary-area',\n\t\t\t\t\t\tclassName\n\t\t\t\t\t) }\n\t\t\t\t\tscope={ scope }\n\t\t\t\t>\n\t\t\t\t\t<ComplementaryAreaHeader\n\t\t\t\t\t\tclassName={ headerClassName }\n\t\t\t\t\t\tcloseLabel={ closeLabel }\n\t\t\t\t\t\tonClose={ () => disableComplementaryArea( scope ) }\n\t\t\t\t\t\tsmallScreenTitle={ smallScreenTitle }\n\t\t\t\t\t\ttoggleButtonProps={ {\n\t\t\t\t\t\t\tlabel: closeLabel,\n\t\t\t\t\t\t\tshortcut: toggleShortcut,\n\t\t\t\t\t\t\tscope,\n\t\t\t\t\t\t\tidentifier,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ header || (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<strong>{ title }</strong>\n\t\t\t\t\t\t\t\t{ isPinnable && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tclassName=\"interface-complementary-area__pin-unpin-item\"\n\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\tisPinned ? starFilled : starEmpty\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t\tisPinned\n\t\t\t\t\t\t\t\t\t\t\t\t? __( 'Unpin from toolbar' )\n\t\t\t\t\t\t\t\t\t\t\t\t: __( 'Pin to toolbar' )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\t( isPinned ? unpinItem : pinItem )(\n\t\t\t\t\t\t\t\t\t\t\t\tscope,\n\t\t\t\t\t\t\t\t\t\t\t\tidentifier\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\tisPressed={ isPinned }\n\t\t\t\t\t\t\t\t\t\taria-expanded={ isPinned }\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) }\n\t\t\t\t\t</ComplementaryAreaHeader>\n\t\t\t\t\t<Panel className={ panelClassName }>{ children }</Panel>\n\t\t\t\t</ComplementaryAreaFill>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nconst ComplementaryAreaWrapped =\n\twithComplementaryAreaContext( ComplementaryArea );\n\nComplementaryAreaWrapped.Slot = ComplementaryAreaSlot;\n\nexport default ComplementaryAreaWrapped;\n","/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\n\nconst FullscreenMode = ( { isActive } ) => {\n\tuseEffect( () => {\n\t\tlet isSticky = false;\n\t\t// `is-fullscreen-mode` is set in PHP as a body class by Gutenberg, and this causes\n\t\t// `sticky-menu` to be applied by WordPress and prevents the admin menu being scrolled\n\t\t// even if `is-fullscreen-mode` is then removed. Let's remove `sticky-menu` here as\n\t\t// a consequence of the FullscreenMode setup.\n\t\tif ( document.body.classList.contains( 'sticky-menu' ) ) {\n\t\t\tisSticky = true;\n\t\t\tdocument.body.classList.remove( 'sticky-menu' );\n\t\t}\n\n\t\treturn () => {\n\t\t\tif ( isSticky ) {\n\t\t\t\tdocument.body.classList.add( 'sticky-menu' );\n\t\t\t}\n\t\t};\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tif ( isActive ) {\n\t\t\tdocument.body.classList.add( 'is-fullscreen-mode' );\n\t\t} else {\n\t\t\tdocument.body.classList.remove( 'is-fullscreen-mode' );\n\t\t}\n\n\t\treturn () => {\n\t\t\tif ( isActive ) {\n\t\t\t\tdocument.body.classList.remove( 'is-fullscreen-mode' );\n\t\t\t}\n\t\t};\n\t}, [ isActive ] );\n\n\treturn null;\n};\nexport default FullscreenMode;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { forwardRef, useEffect } from '@wordpress/element';\nimport { __unstableUseNavigateRegions as useNavigateRegions } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMergeRefs } from '@wordpress/compose';\n\nfunction useHTMLClass( className ) {\n\tuseEffect( () => {\n\t\tconst element =\n\t\t\tdocument && document.querySelector( `html:not(.${ className })` );\n\t\tif ( ! element ) {\n\t\t\treturn;\n\t\t}\n\t\telement.classList.toggle( className );\n\t\treturn () => {\n\t\t\telement.classList.toggle( className );\n\t\t};\n\t}, [ className ] );\n}\n\nfunction InterfaceSkeleton(\n\t{\n\t\tfooter,\n\t\theader,\n\t\tsidebar,\n\t\tsecondarySidebar,\n\t\tnotices,\n\t\tcontent,\n\t\tdrawer,\n\t\tactions,\n\t\tlabels,\n\t\tclassName,\n\t\tshortcuts,\n\t},\n\tref\n) {\n\tconst navigateRegionsProps = useNavigateRegions( shortcuts );\n\n\tuseHTMLClass( 'interface-interface-skeleton__html-container' );\n\n\tconst defaultLabels = {\n\t\t/* translators: accessibility text for the nav bar landmark region. */\n\t\tdrawer: __( 'Drawer' ),\n\t\t/* translators: accessibility text for the top bar landmark region. */\n\t\theader: __( 'Header' ),\n\t\t/* translators: accessibility text for the content landmark region. */\n\t\tbody: __( 'Content' ),\n\t\t/* translators: accessibility text for the secondary sidebar landmark region. */\n\t\tsecondarySidebar: __( 'Block Library' ),\n\t\t/* translators: accessibility text for the settings landmark region. */\n\t\tsidebar: __( 'Settings' ),\n\t\t/* translators: accessibility text for the publish landmark region. */\n\t\tactions: __( 'Publish' ),\n\t\t/* translators: accessibility text for the footer landmark region. */\n\t\tfooter: __( 'Footer' ),\n\t};\n\n\tconst mergedLabels = { ...defaultLabels, ...labels };\n\n\treturn (\n\t\t<div\n\t\t\t{ ...navigateRegionsProps }\n\t\t\tref={ useMergeRefs( [ ref, navigateRegionsProps.ref ] ) }\n\t\t\tclassName={ classnames(\n\t\t\t\tclassName,\n\t\t\t\t'interface-interface-skeleton',\n\t\t\t\tnavigateRegionsProps.className,\n\t\t\t\t!! footer && 'has-footer'\n\t\t\t) }\n\t\t>\n\t\t\t{ !! drawer && (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"interface-interface-skeleton__drawer\"\n\t\t\t\t\trole=\"region\"\n\t\t\t\t\taria-label={ mergedLabels.drawer }\n\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t>\n\t\t\t\t\t{ drawer }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<div className=\"interface-interface-skeleton__editor\">\n\t\t\t\t{ !! header && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"interface-interface-skeleton__header\"\n\t\t\t\t\t\trole=\"region\"\n\t\t\t\t\t\taria-label={ mergedLabels.header }\n\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ header }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t<div className=\"interface-interface-skeleton__body\">\n\t\t\t\t\t{ !! secondarySidebar && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"interface-interface-skeleton__secondary-sidebar\"\n\t\t\t\t\t\t\trole=\"region\"\n\t\t\t\t\t\t\taria-label={ mergedLabels.secondarySidebar }\n\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ secondarySidebar }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t\t{ !! notices && (\n\t\t\t\t\t\t<div className=\"interface-interface-skeleton__notices\">\n\t\t\t\t\t\t\t{ notices }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"interface-interface-skeleton__content\"\n\t\t\t\t\t\trole=\"region\"\n\t\t\t\t\t\taria-label={ mergedLabels.body }\n\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ content }\n\t\t\t\t\t</div>\n\t\t\t\t\t{ !! sidebar && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"interface-interface-skeleton__sidebar\"\n\t\t\t\t\t\t\trole=\"region\"\n\t\t\t\t\t\t\taria-label={ mergedLabels.sidebar }\n\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ sidebar }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t\t{ !! actions && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"interface-interface-skeleton__actions\"\n\t\t\t\t\t\t\trole=\"region\"\n\t\t\t\t\t\t\taria-label={ mergedLabels.actions }\n\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ actions }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{ !! footer && (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"interface-interface-skeleton__footer\"\n\t\t\t\t\trole=\"region\"\n\t\t\t\t\taria-label={ mergedLabels.footer }\n\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t>\n\t\t\t\t\t{ footer }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default forwardRef( InterfaceSkeleton );\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst moreVertical = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z\" />\n\t</SVG>\n);\n\nexport default moreVertical;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { DropdownMenu } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\n\nexport default function MoreMenuDropdown( {\n\tas: DropdownComponent = DropdownMenu,\n\tclassName,\n\t/* translators: button label text should, if possible, be under 16 characters. */\n\tlabel = __( 'Options' ),\n\tpopoverProps,\n\ttoggleProps,\n\tchildren,\n} ) {\n\treturn (\n\t\t<DropdownComponent\n\t\t\tclassName={ classnames(\n\t\t\t\t'interface-more-menu-dropdown',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t\ticon={ moreVertical }\n\t\t\tlabel={ label }\n\t\t\tpopoverProps={ {\n\t\t\t\tposition: 'bottom left',\n\t\t\t\t...popoverProps,\n\t\t\t\tclassName: classnames(\n\t\t\t\t\t'interface-more-menu-dropdown__content',\n\t\t\t\t\tpopoverProps?.className\n\t\t\t\t),\n\t\t\t} }\n\t\t\ttoggleProps={ {\n\t\t\t\ttooltipPosition: 'bottom',\n\t\t\t\t...toggleProps,\n\t\t\t} }\n\t\t>\n\t\t\t{ ( onClose ) => children( onClose ) }\n\t\t</DropdownComponent>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Modal } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nexport default function PreferencesModal( { closeModal, children } ) {\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"interface-preferences-modal\"\n\t\t\ttitle={ __( 'Preferences' ) }\n\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\tonRequestClose={ closeModal }\n\t\t>\n\t\t\t{ children }\n\t\t</Modal>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { cloneElement } from '@wordpress/element';\n\n/** @typedef {{icon: JSX.Element, size?: number} & import('@wordpress/primitives').SVGProps} IconProps */\n\n/**\n * Return an SVG icon.\n *\n * @param {IconProps} props icon is the SVG component to render\n * size is a number specifiying the icon size in pixels\n * Other props will be passed to wrapped SVG component\n *\n * @return {JSX.Element} Icon component\n */\nfunction Icon( { icon, size = 24, ...props } ) {\n\treturn cloneElement( icon, {\n\t\twidth: size,\n\t\theight: size,\n\t\t...props,\n\t} );\n}\n\nexport default Icon;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst chevronLeft = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z\" />\n\t</SVG>\n);\n\nexport default chevronLeft;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst chevronRight = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z\" />\n\t</SVG>\n);\n\nexport default chevronRight;\n","/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalNavigatorProvider as NavigatorProvider,\n\t__experimentalNavigatorScreen as NavigatorScreen,\n\t__experimentalNavigatorButton as NavigatorButton,\n\t__experimentalNavigatorBackButton as NavigatorBackButton,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\t__experimentalText as Text,\n\t__experimentalTruncate as Truncate,\n\tFlexItem,\n\tTabPanel,\n\tCard,\n\tCardHeader,\n\tCardBody,\n} from '@wordpress/components';\nimport { useMemo, useCallback, useState } from '@wordpress/element';\nimport { chevronLeft, chevronRight, Icon } from '@wordpress/icons';\nimport { isRTL, __ } from '@wordpress/i18n';\n\nconst PREFERENCES_MENU = 'preferences-menu';\n\nexport default function PreferencesModalTabs( { sections } ) {\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\n\t// This is also used to sync the two different rendered components\n\t// between small and large viewports.\n\tconst [ activeMenu, setActiveMenu ] = useState( PREFERENCES_MENU );\n\t/**\n\t * Create helper objects from `sections` for easier data handling.\n\t * `tabs` is used for creating the `TabPanel` and `sectionsContentMap`\n\t * is used for easier access to active tab's content.\n\t */\n\tconst { tabs, sectionsContentMap } = useMemo( () => {\n\t\tlet mappedTabs = {\n\t\t\ttabs: [],\n\t\t\tsectionsContentMap: {},\n\t\t};\n\t\tif ( sections.length ) {\n\t\t\tmappedTabs = sections.reduce(\n\t\t\t\t( accumulator, { name, tabLabel: title, content } ) => {\n\t\t\t\t\taccumulator.tabs.push( { name, title } );\n\t\t\t\t\taccumulator.sectionsContentMap[ name ] = content;\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{ tabs: [], sectionsContentMap: {} }\n\t\t\t);\n\t\t}\n\t\treturn mappedTabs;\n\t}, [ sections ] );\n\n\tconst getCurrentTab = useCallback(\n\t\t( tab ) => sectionsContentMap[ tab.name ] || null,\n\t\t[ sectionsContentMap ]\n\t);\n\n\tlet modalContent;\n\t// We render different components based on the viewport size.\n\tif ( isLargeViewport ) {\n\t\tmodalContent = (\n\t\t\t<TabPanel\n\t\t\t\tclassName=\"interface-preferences__tabs\"\n\t\t\t\ttabs={ tabs }\n\t\t\t\tinitialTabName={\n\t\t\t\t\tactiveMenu !== PREFERENCES_MENU ? activeMenu : undefined\n\t\t\t\t}\n\t\t\t\tonSelect={ setActiveMenu }\n\t\t\t\torientation=\"vertical\"\n\t\t\t>\n\t\t\t\t{ getCurrentTab }\n\t\t\t</TabPanel>\n\t\t);\n\t} else {\n\t\tmodalContent = (\n\t\t\t<NavigatorProvider\n\t\t\t\tinitialPath=\"/\"\n\t\t\t\tclassName=\"interface-preferences__provider\"\n\t\t\t>\n\t\t\t\t<NavigatorScreen path=\"/\">\n\t\t\t\t\t<Card isBorderless size=\"small\">\n\t\t\t\t\t\t<CardBody>\n\t\t\t\t\t\t\t<ItemGroup>\n\t\t\t\t\t\t\t\t{ tabs.map( ( tab ) => {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<NavigatorButton\n\t\t\t\t\t\t\t\t\t\t\tkey={ tab.name }\n\t\t\t\t\t\t\t\t\t\t\tpath={ tab.name }\n\t\t\t\t\t\t\t\t\t\t\tas={ Item }\n\t\t\t\t\t\t\t\t\t\t\tisAction\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Truncate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ tab.title }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Truncate>\n\t\t\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\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\t\t\tisRTL()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? chevronLeft\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: chevronRight\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t\t\t</NavigatorButton>\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</ItemGroup>\n\t\t\t\t\t\t</CardBody>\n\t\t\t\t\t</Card>\n\t\t\t\t</NavigatorScreen>\n\t\t\t\t{ sections.length &&\n\t\t\t\t\tsections.map( ( section ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<NavigatorScreen\n\t\t\t\t\t\t\t\tkey={ `${ section.name }-menu` }\n\t\t\t\t\t\t\t\tpath={ section.name }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Card isBorderless size=\"large\">\n\t\t\t\t\t\t\t\t\t<CardHeader\n\t\t\t\t\t\t\t\t\t\tisBorderless={ false }\n\t\t\t\t\t\t\t\t\t\tjustify=\"left\"\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\tgap=\"6\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<NavigatorBackButton\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tisRTL()\n\t\t\t\t\t\t\t\t\t\t\t\t\t? chevronRight\n\t\t\t\t\t\t\t\t\t\t\t\t\t: chevronLeft\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Navigate to the previous view'\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\t<Text size=\"16\">\n\t\t\t\t\t\t\t\t\t\t\t{ section.tabLabel }\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t</CardHeader>\n\t\t\t\t\t\t\t\t\t<CardBody>{ section.content }</CardBody>\n\t\t\t\t\t\t\t\t</Card>\n\t\t\t\t\t\t\t</NavigatorScreen>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t</NavigatorProvider>\n\t\t);\n\t}\n\n\treturn modalContent;\n}\n","const Section = ( { description, title, children } ) => (\n\t<fieldset className=\"interface-preferences-modal__section\">\n\t\t<legend>\n\t\t\t<h2 className=\"interface-preferences-modal__section-title\">\n\t\t\t\t{ title }\n\t\t\t</h2>\n\t\t\t{ description && (\n\t\t\t\t<p className=\"interface-preferences-modal__section-description\">\n\t\t\t\t\t{ description }\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</legend>\n\t\t{ children }\n\t</fieldset>\n);\n\nexport default Section;\n","/**\n * WordPress dependencies\n */\nimport { ToggleControl } from '@wordpress/components';\n\nfunction BaseOption( { help, label, isChecked, onChange, children } ) {\n\treturn (\n\t\t<div className=\"interface-preferences-modal__option\">\n\t\t\t<ToggleControl\n\t\t\t\thelp={ help }\n\t\t\t\tlabel={ label }\n\t\t\t\tchecked={ isChecked }\n\t\t\t\tonChange={ onChange }\n\t\t\t/>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nexport default BaseOption;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"a11y\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"coreData\"];","/**\n * External dependencies\n */\nimport { castArray, reduce, without } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport apiFetch from '@wordpress/api-fetch';\nimport { store as interfaceStore } from '@wordpress/interface';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { speak } from '@wordpress/a11y';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { getMetaBoxContainer } from '../utils/meta-boxes';\nimport { store as editPostStore } from '.';\n\n/**\n * Returns an action object used in signalling that the user opened an editor sidebar.\n *\n * @param {?string} name Sidebar name to be opened.\n */\nexport const openGeneralSidebar =\n\t( name ) =>\n\t( { registry } ) =>\n\t\tregistry\n\t\t\t.dispatch( interfaceStore )\n\t\t\t.enableComplementaryArea( editPostStore.name, name );\n\n/**\n * Returns an action object signalling that the user closed the sidebar.\n */\nexport const closeGeneralSidebar =\n\t() =>\n\t( { registry } ) =>\n\t\tregistry\n\t\t\t.dispatch( interfaceStore )\n\t\t\t.disableComplementaryArea( editPostStore.name );\n\n/**\n * Returns an action object used in signalling that the user opened a modal.\n *\n * @param {string} name A string that uniquely identifies the modal.\n *\n * @return {Object} Action object.\n */\nexport function openModal( name ) {\n\treturn {\n\t\ttype: 'OPEN_MODAL',\n\t\tname,\n\t};\n}\n\n/**\n * Returns an action object signalling that the user closed a modal.\n *\n * @return {Object} Action object.\n */\nexport function closeModal() {\n\treturn {\n\t\ttype: 'CLOSE_MODAL',\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the user opened the publish\n * sidebar.\n *\n * @return {Object} Action object\n */\nexport function openPublishSidebar() {\n\treturn {\n\t\ttype: 'OPEN_PUBLISH_SIDEBAR',\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the user closed the\n * publish sidebar.\n *\n * @return {Object} Action object.\n */\nexport function closePublishSidebar() {\n\treturn {\n\t\ttype: 'CLOSE_PUBLISH_SIDEBAR',\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the user toggles the publish sidebar.\n *\n * @return {Object} Action object\n */\nexport function togglePublishSidebar() {\n\treturn {\n\t\ttype: 'TOGGLE_PUBLISH_SIDEBAR',\n\t};\n}\n\n/**\n * Returns an action object used to enable or disable a panel in the editor.\n *\n * @param {string} panelName A string that identifies the panel to enable or disable.\n *\n * @return {Object} Action object.\n */\nexport const toggleEditorPanelEnabled =\n\t( panelName ) =>\n\t( { registry } ) => {\n\t\tconst inactivePanels =\n\t\t\tregistry\n\t\t\t\t.select( preferencesStore )\n\t\t\t\t.get( 'core/edit-post', 'inactivePanels' ) ?? [];\n\n\t\tconst isPanelInactive = !! inactivePanels?.includes( panelName );\n\n\t\t// If the panel is inactive, remove it to enable it, else add it to\n\t\t// make it inactive.\n\t\tlet updatedInactivePanels;\n\t\tif ( isPanelInactive ) {\n\t\t\tupdatedInactivePanels = inactivePanels.filter(\n\t\t\t\t( invactivePanelName ) => invactivePanelName !== panelName\n\t\t\t);\n\t\t} else {\n\t\t\tupdatedInactivePanels = [ ...inactivePanels, panelName ];\n\t\t}\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( 'core/edit-post', 'inactivePanels', updatedInactivePanels );\n\t};\n\n/**\n * Opens a closed panel and closes an open panel.\n *\n * @param {string} panelName A string that identifies the panel to open or close.\n */\nexport const toggleEditorPanelOpened =\n\t( panelName ) =>\n\t( { registry } ) => {\n\t\tconst openPanels =\n\t\t\tregistry\n\t\t\t\t.select( preferencesStore )\n\t\t\t\t.get( 'core/edit-post', 'openPanels' ) ?? [];\n\n\t\tconst isPanelOpen = !! openPanels?.includes( panelName );\n\n\t\t// If the panel is open, remove it to close it, else add it to\n\t\t// make it open.\n\t\tlet updatedOpenPanels;\n\t\tif ( isPanelOpen ) {\n\t\t\tupdatedOpenPanels = openPanels.filter(\n\t\t\t\t( openPanelName ) => openPanelName !== panelName\n\t\t\t);\n\t\t} else {\n\t\t\tupdatedOpenPanels = [ ...openPanels, panelName ];\n\t\t}\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( 'core/edit-post', 'openPanels', updatedOpenPanels );\n\t};\n\n/**\n * Returns an action object used to remove a panel from the editor.\n *\n * @param {string} panelName A string that identifies the panel to remove.\n *\n * @return {Object} Action object.\n */\nexport function removeEditorPanel( panelName ) {\n\treturn {\n\t\ttype: 'REMOVE_PANEL',\n\t\tpanelName,\n\t};\n}\n\n/**\n * Triggers an action used to toggle a feature flag.\n *\n * @param {string} feature Feature name.\n */\nexport const toggleFeature =\n\t( feature ) =>\n\t( { registry } ) =>\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.toggle( 'core/edit-post', feature );\n\n/**\n * Triggers an action used to switch editor mode.\n *\n * @param {string} mode The editor mode.\n */\nexport const switchEditorMode =\n\t( mode ) =>\n\t( { registry } ) => {\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( 'core/edit-post', 'editorMode', mode );\n\n\t\t// Unselect blocks when we switch to the code editor.\n\t\tif ( mode !== 'visual' ) {\n\t\t\tregistry.dispatch( blockEditorStore ).clearSelectedBlock();\n\t\t}\n\n\t\tconst message =\n\t\t\tmode === 'visual'\n\t\t\t\t? __( 'Visual editor selected' )\n\t\t\t\t: __( 'Code editor selected' );\n\t\tspeak( message, 'assertive' );\n\t};\n\n/**\n * Triggers an action object used to toggle a plugin name flag.\n *\n * @param {string} pluginName Plugin name.\n */\nexport const togglePinnedPluginItem =\n\t( pluginName ) =>\n\t( { registry } ) => {\n\t\tconst isPinned = registry\n\t\t\t.select( interfaceStore )\n\t\t\t.isItemPinned( 'core/edit-post', pluginName );\n\n\t\tregistry\n\t\t\t.dispatch( interfaceStore )\n\t\t\t[ isPinned ? 'unpinItem' : 'pinItem' ](\n\t\t\t\t'core/edit-post',\n\t\t\t\tpluginName\n\t\t\t);\n\t};\n\n/**\n * Returns an action object used in signaling that a style should be auto-applied when a block is created.\n *\n * @param {string} blockName Name of the block.\n * @param {?string} blockStyle Name of the style that should be auto applied. If undefined, the \"auto apply\" setting of the block is removed.\n */\nexport const updatePreferredStyleVariations =\n\t( blockName, blockStyle ) =>\n\t( { registry } ) => {\n\t\tif ( ! blockName ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst existingVariations =\n\t\t\tregistry\n\t\t\t\t.select( preferencesStore )\n\t\t\t\t.get( 'core/edit-post', 'preferredStyleVariations' ) ?? {};\n\n\t\t// When the blockStyle is omitted, remove the block's preferred variation.\n\t\tif ( ! blockStyle ) {\n\t\t\tconst updatedVariations = {\n\t\t\t\t...existingVariations,\n\t\t\t};\n\n\t\t\tdelete updatedVariations[ blockName ];\n\n\t\t\tregistry\n\t\t\t\t.dispatch( preferencesStore )\n\t\t\t\t.set(\n\t\t\t\t\t'core/edit-post',\n\t\t\t\t\t'preferredStyleVariations',\n\t\t\t\t\tupdatedVariations\n\t\t\t\t);\n\t\t} else {\n\t\t\t// Else add the variation.\n\t\t\tregistry\n\t\t\t\t.dispatch( preferencesStore )\n\t\t\t\t.set( 'core/edit-post', 'preferredStyleVariations', {\n\t\t\t\t\t...existingVariations,\n\t\t\t\t\t[ blockName ]: blockStyle,\n\t\t\t\t} );\n\t\t}\n\t};\n\n/**\n * Update the provided block types to be visible.\n *\n * @param {string[]} blockNames Names of block types to show.\n */\nexport const showBlockTypes =\n\t( blockNames ) =>\n\t( { registry } ) => {\n\t\tconst existingBlockNames =\n\t\t\tregistry\n\t\t\t\t.select( preferencesStore )\n\t\t\t\t.get( 'core/edit-post', 'hiddenBlockTypes' ) ?? [];\n\n\t\tconst newBlockNames = without(\n\t\t\texistingBlockNames,\n\t\t\t...castArray( blockNames )\n\t\t);\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( 'core/edit-post', 'hiddenBlockTypes', newBlockNames );\n\t};\n\n/**\n * Update the provided block types to be hidden.\n *\n * @param {string[]} blockNames Names of block types to hide.\n */\nexport const hideBlockTypes =\n\t( blockNames ) =>\n\t( { registry } ) => {\n\t\tconst existingBlockNames =\n\t\t\tregistry\n\t\t\t\t.select( preferencesStore )\n\t\t\t\t.get( 'core/edit-post', 'hiddenBlockTypes' ) ?? [];\n\n\t\tconst mergedBlockNames = new Set( [\n\t\t\t...existingBlockNames,\n\t\t\t...castArray( blockNames ),\n\t\t] );\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( 'core/edit-post', 'hiddenBlockTypes', [\n\t\t\t\t...mergedBlockNames,\n\t\t\t] );\n\t};\n\n/**\n * Returns an action object used in signaling\n * what Meta boxes are available in which location.\n *\n * @param {Object} metaBoxesPerLocation Meta boxes per location.\n */\nexport const setAvailableMetaBoxesPerLocation =\n\t( metaBoxesPerLocation ) =>\n\t( { dispatch } ) =>\n\t\tdispatch( {\n\t\t\ttype: 'SET_META_BOXES_PER_LOCATIONS',\n\t\t\tmetaBoxesPerLocation,\n\t\t} );\n\n/**\n * Update a metabox.\n */\nexport const requestMetaBoxUpdates =\n\t() =>\n\tasync ( { registry, select, dispatch } ) => {\n\t\tdispatch( {\n\t\t\ttype: 'REQUEST_META_BOX_UPDATES',\n\t\t} );\n\n\t\t// Saves the wp_editor fields.\n\t\tif ( window.tinyMCE ) {\n\t\t\twindow.tinyMCE.triggerSave();\n\t\t}\n\n\t\t// Additional data needed for backward compatibility.\n\t\t// If we do not provide this data, the post will be overridden with the default values.\n\t\tconst post = registry.select( editorStore ).getCurrentPost();\n\t\tconst additionalData = [\n\t\t\tpost.comment_status\n\t\t\t\t? [ 'comment_status', post.comment_status ]\n\t\t\t\t: false,\n\t\t\tpost.ping_status ? [ 'ping_status', post.ping_status ] : false,\n\t\t\tpost.sticky ? [ 'sticky', post.sticky ] : false,\n\t\t\tpost.author ? [ 'post_author', post.author ] : false,\n\t\t].filter( Boolean );\n\n\t\t// We gather all the metaboxes locations data and the base form data.\n\t\tconst baseFormData = new window.FormData(\n\t\t\tdocument.querySelector( '.metabox-base-form' )\n\t\t);\n\t\tconst activeMetaBoxLocations = select.getActiveMetaBoxLocations();\n\t\tconst formDataToMerge = [\n\t\t\tbaseFormData,\n\t\t\t...activeMetaBoxLocations.map(\n\t\t\t\t( location ) =>\n\t\t\t\t\tnew window.FormData( getMetaBoxContainer( location ) )\n\t\t\t),\n\t\t];\n\n\t\t// Merge all form data objects into a single one.\n\t\tconst formData = reduce(\n\t\t\tformDataToMerge,\n\t\t\t( memo, currentFormData ) => {\n\t\t\t\tfor ( const [ key, value ] of currentFormData ) {\n\t\t\t\t\tmemo.append( key, value );\n\t\t\t\t}\n\t\t\t\treturn memo;\n\t\t\t},\n\t\t\tnew window.FormData()\n\t\t);\n\t\tadditionalData.forEach( ( [ key, value ] ) =>\n\t\t\tformData.append( key, value )\n\t\t);\n\n\t\ttry {\n\t\t\t// Save the metaboxes.\n\t\t\tawait apiFetch( {\n\t\t\t\turl: window._wpMetaBoxUrl,\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: formData,\n\t\t\t\tparse: false,\n\t\t\t} );\n\t\t\tdispatch.metaBoxUpdatesSuccess();\n\t\t} catch {\n\t\t\tdispatch.metaBoxUpdatesFailure();\n\t\t}\n\t};\n\n/**\n * Returns an action object used to signal a successful meta box update.\n *\n * @return {Object} Action object.\n */\nexport function metaBoxUpdatesSuccess() {\n\treturn {\n\t\ttype: 'META_BOX_UPDATES_SUCCESS',\n\t};\n}\n\n/**\n * Returns an action object used to signal a failed meta box update.\n *\n * @return {Object} Action object.\n */\nexport function metaBoxUpdatesFailure() {\n\treturn {\n\t\ttype: 'META_BOX_UPDATES_FAILURE',\n\t};\n}\n\n/**\n * Returns an action object used to toggle the width of the editing canvas.\n *\n * @param {string} deviceType\n *\n * @return {Object} Action object.\n */\nexport function __experimentalSetPreviewDeviceType( deviceType ) {\n\treturn {\n\t\ttype: 'SET_PREVIEW_DEVICE_TYPE',\n\t\tdeviceType,\n\t};\n}\n\n/**\n * Returns an action object used to open/close the inserter.\n *\n * @param {boolean|Object} value Whether the inserter should be\n * opened (true) or closed (false).\n * To specify an insertion point,\n * use an object.\n * @param {string} value.rootClientId The root client ID to insert at.\n * @param {number} value.insertionIndex The index to insert at.\n *\n * @return {Object} Action object.\n */\nexport function setIsInserterOpened( value ) {\n\treturn {\n\t\ttype: 'SET_IS_INSERTER_OPENED',\n\t\tvalue,\n\t};\n}\n\n/**\n * Returns an action object used to open/close the list view.\n *\n * @param {boolean} isOpen A boolean representing whether the list view should be opened or closed.\n * @return {Object} Action object.\n */\nexport function setIsListViewOpened( isOpen ) {\n\treturn {\n\t\ttype: 'SET_IS_LIST_VIEW_OPENED',\n\t\tisOpen,\n\t};\n}\n\n/**\n * Returns an action object used to switch to template editing.\n *\n * @param {boolean} value Is editing template.\n * @return {Object} Action object.\n */\nexport function setIsEditingTemplate( value ) {\n\treturn {\n\t\ttype: 'SET_IS_EDITING_TEMPLATE',\n\t\tvalue,\n\t};\n}\n\n/**\n * Switches to the template mode.\n *\n * @param {boolean} newTemplate Is new template.\n */\nexport const __unstableSwitchToTemplateMode =\n\t( newTemplate = false ) =>\n\t( { registry, select, dispatch } ) => {\n\t\tdispatch( setIsEditingTemplate( true ) );\n\t\tconst isWelcomeGuideActive = select.isFeatureActive(\n\t\t\t'welcomeGuideTemplate'\n\t\t);\n\t\tif ( ! isWelcomeGuideActive ) {\n\t\t\tconst message = newTemplate\n\t\t\t\t? __( \"Custom template created. You're in template mode now.\" )\n\t\t\t\t: __(\n\t\t\t\t\t\t'Editing template. Changes made here affect all posts and pages that use the template.'\n\t\t\t\t );\n\t\t\tregistry.dispatch( noticesStore ).createSuccessNotice( message, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t}\n\t};\n\n/**\n * Create a block based template.\n *\n * @param {Object?} template Template to create and assign.\n */\nexport const __unstableCreateTemplate =\n\t( template ) =>\n\tasync ( { registry } ) => {\n\t\tconst savedTemplate = await registry\n\t\t\t.dispatch( coreStore )\n\t\t\t.saveEntityRecord( 'postType', 'wp_template', template );\n\t\tconst post = registry.select( editorStore ).getCurrentPost();\n\t\tregistry\n\t\t\t.dispatch( coreStore )\n\t\t\t.editEntityRecord( 'postType', post.type, post.id, {\n\t\t\t\ttemplate: savedTemplate.slug,\n\t\t\t} );\n\t};\n\nlet metaBoxesInitialized = false;\n\n/**\n * Initializes WordPress `postboxes` script and the logic for saving meta boxes.\n */\nexport const initializeMetaBoxes =\n\t() =>\n\t( { registry, select, dispatch } ) => {\n\t\tconst isEditorReady = registry\n\t\t\t.select( editorStore )\n\t\t\t.__unstableIsEditorReady();\n\n\t\tif ( ! isEditorReady ) {\n\t\t\treturn;\n\t\t}\n\t\t// Only initialize once.\n\t\tif ( metaBoxesInitialized ) {\n\t\t\treturn;\n\t\t}\n\t\tconst postType = registry.select( editorStore ).getCurrentPostType();\n\t\tif ( window.postboxes.page !== postType ) {\n\t\t\twindow.postboxes.add_postbox_toggles( postType );\n\t\t}\n\n\t\tmetaBoxesInitialized = true;\n\n\t\tlet wasSavingPost = registry.select( editorStore ).isSavingPost();\n\t\tlet wasAutosavingPost = registry\n\t\t\t.select( editorStore )\n\t\t\t.isAutosavingPost();\n\t\tconst hasMetaBoxes = select.hasMetaBoxes();\n\n\t\t// Save metaboxes when performing a full save on the post.\n\t\tregistry.subscribe( async () => {\n\t\t\tconst isSavingPost = registry.select( editorStore ).isSavingPost();\n\t\t\tconst isAutosavingPost = registry\n\t\t\t\t.select( editorStore )\n\t\t\t\t.isAutosavingPost();\n\n\t\t\t// Save metaboxes on save completion, except for autosaves that are not a post preview.\n\t\t\t//\n\t\t\t// Meta boxes are initialized once at page load. It is not necessary to\n\t\t\t// account for updates on each state change.\n\t\t\t//\n\t\t\t// See: https://github.com/WordPress/WordPress/blob/5.1.1/wp-admin/includes/post.php#L2307-L2309.\n\t\t\tconst shouldTriggerMetaboxesSave =\n\t\t\t\thasMetaBoxes &&\n\t\t\t\twasSavingPost &&\n\t\t\t\t! isSavingPost &&\n\t\t\t\t! wasAutosavingPost;\n\n\t\t\t// Save current state for next inspection.\n\t\t\twasSavingPost = isSavingPost;\n\t\t\twasAutosavingPost = isAutosavingPost;\n\n\t\t\tif ( shouldTriggerMetaboxesSave ) {\n\t\t\t\tawait dispatch.requestMetaBoxUpdates();\n\t\t\t}\n\t\t} );\n\n\t\tdispatch( {\n\t\t\ttype: 'META_BOXES_INITIALIZED',\n\t\t} );\n\t};\n","/**\n * Function returning the current Meta Boxes DOM Node in the editor\n * whether the meta box area is opened or not.\n * If the MetaBox Area is visible returns it, and returns the original container instead.\n *\n * @param {string} location Meta Box location.\n *\n * @return {string} HTML content.\n */\nexport const getMetaBoxContainer = ( location ) => {\n\tconst area = document.querySelector(\n\t\t`.edit-post-meta-boxes-area.is-${ location } .metabox-location-${ location }`\n\t);\n\tif ( area ) {\n\t\treturn area;\n\t}\n\n\treturn document.querySelector( '#metaboxes .metabox-location-' + location );\n};\n","'use strict';\n\n/** @typedef {(...args: any[]) => *[]} GetDependants */\n\n/** @typedef {() => void} Clear */\n\n/**\n * @typedef {{\n * getDependants: GetDependants,\n * clear: Clear\n * }} EnhancedSelector\n */\n\n/**\n * Internal cache entry.\n *\n * @typedef CacheNode\n *\n * @property {?CacheNode|undefined} [prev] Previous node.\n * @property {?CacheNode|undefined} [next] Next node.\n * @property {*[]} args Function arguments for cache entry.\n * @property {*} val Function result.\n */\n\n/**\n * @typedef Cache\n *\n * @property {Clear} clear Function to clear cache.\n * @property {boolean} [isUniqueByDependants] Whether dependants are valid in\n * considering cache uniqueness. A cache is unique if dependents are all arrays\n * or objects.\n * @property {CacheNode?} [head] Cache head.\n * @property {*[]} [lastDependants] Dependants from previous invocation.\n */\n\n/**\n * Arbitrary value used as key for referencing cache object in WeakMap tree.\n *\n * @type {{}}\n */\nvar LEAF_KEY = {};\n\n/**\n * Returns the first argument as the sole entry in an array.\n *\n * @template T\n *\n * @param {T} value Value to return.\n *\n * @return {[T]} Value returned as entry in array.\n */\nfunction arrayOf(value) {\n\treturn [value];\n}\n\n/**\n * Returns true if the value passed is object-like, or false otherwise. A value\n * is object-like if it can support property assignment, e.g. object or array.\n *\n * @param {*} value Value to test.\n *\n * @return {boolean} Whether value is object-like.\n */\nfunction isObjectLike(value) {\n\treturn !!value && 'object' === typeof value;\n}\n\n/**\n * Creates and returns a new cache object.\n *\n * @return {Cache} Cache object.\n */\nfunction createCache() {\n\t/** @type {Cache} */\n\tvar cache = {\n\t\tclear: function () {\n\t\t\tcache.head = null;\n\t\t},\n\t};\n\n\treturn cache;\n}\n\n/**\n * Returns true if entries within the two arrays are strictly equal by\n * reference from a starting index.\n *\n * @param {*[]} a First array.\n * @param {*[]} b Second array.\n * @param {number} fromIndex Index from which to start comparison.\n *\n * @return {boolean} Whether arrays are shallowly equal.\n */\nfunction isShallowEqual(a, b, fromIndex) {\n\tvar i;\n\n\tif (a.length !== b.length) {\n\t\treturn false;\n\t}\n\n\tfor (i = fromIndex; i < a.length; i++) {\n\t\tif (a[i] !== b[i]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Returns a memoized selector function. The getDependants function argument is\n * called before the memoized selector and is expected to return an immutable\n * reference or array of references on which the selector depends for computing\n * its own return value. The memoize cache is preserved only as long as those\n * dependant references remain the same. If getDependants returns a different\n * reference(s), the cache is cleared and the selector value regenerated.\n *\n * @template {(...args: *[]) => *} S\n *\n * @param {S} selector Selector function.\n * @param {GetDependants=} getDependants Dependant getter returning an array of\n * references used in cache bust consideration.\n */\nexport default function (selector, getDependants) {\n\t/** @type {WeakMap<*,*>} */\n\tvar rootCache;\n\n\t/** @type {GetDependants} */\n\tvar normalizedGetDependants = getDependants ? getDependants : arrayOf;\n\n\t/**\n\t * Returns the cache for a given dependants array. When possible, a WeakMap\n\t * will be used to create a unique cache for each set of dependants. This\n\t * is feasible due to the nature of WeakMap in allowing garbage collection\n\t * to occur on entries where the key object is no longer referenced. Since\n\t * WeakMap requires the key to be an object, this is only possible when the\n\t * dependant is object-like. The root cache is created as a hierarchy where\n\t * each top-level key is the first entry in a dependants set, the value a\n\t * WeakMap where each key is the next dependant, and so on. This continues\n\t * so long as the dependants are object-like. If no dependants are object-\n\t * like, then the cache is shared across all invocations.\n\t *\n\t * @see isObjectLike\n\t *\n\t * @param {*[]} dependants Selector dependants.\n\t *\n\t * @return {Cache} Cache object.\n\t */\n\tfunction getCache(dependants) {\n\t\tvar caches = rootCache,\n\t\t\tisUniqueByDependants = true,\n\t\t\ti,\n\t\t\tdependant,\n\t\t\tmap,\n\t\t\tcache;\n\n\t\tfor (i = 0; i < dependants.length; i++) {\n\t\t\tdependant = dependants[i];\n\n\t\t\t// Can only compose WeakMap from object-like key.\n\t\t\tif (!isObjectLike(dependant)) {\n\t\t\t\tisUniqueByDependants = false;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Does current segment of cache already have a WeakMap?\n\t\t\tif (caches.has(dependant)) {\n\t\t\t\t// Traverse into nested WeakMap.\n\t\t\t\tcaches = caches.get(dependant);\n\t\t\t} else {\n\t\t\t\t// Create, set, and traverse into a new one.\n\t\t\t\tmap = new WeakMap();\n\t\t\t\tcaches.set(dependant, map);\n\t\t\t\tcaches = map;\n\t\t\t}\n\t\t}\n\n\t\t// We use an arbitrary (but consistent) object as key for the last item\n\t\t// in the WeakMap to serve as our running cache.\n\t\tif (!caches.has(LEAF_KEY)) {\n\t\t\tcache = createCache();\n\t\t\tcache.isUniqueByDependants = isUniqueByDependants;\n\t\t\tcaches.set(LEAF_KEY, cache);\n\t\t}\n\n\t\treturn caches.get(LEAF_KEY);\n\t}\n\n\t/**\n\t * Resets root memoization cache.\n\t */\n\tfunction clear() {\n\t\trootCache = new WeakMap();\n\t}\n\n\t/* eslint-disable jsdoc/check-param-names */\n\t/**\n\t * The augmented selector call, considering first whether dependants have\n\t * changed before passing it to underlying memoize function.\n\t *\n\t * @param {*} source Source object for derivation.\n\t * @param {...*} extraArgs Additional arguments to pass to selector.\n\t *\n\t * @return {*} Selector result.\n\t */\n\t/* eslint-enable jsdoc/check-param-names */\n\tfunction callSelector(/* source, ...extraArgs */) {\n\t\tvar len = arguments.length,\n\t\t\tcache,\n\t\t\tnode,\n\t\t\ti,\n\t\t\targs,\n\t\t\tdependants;\n\n\t\t// Create copy of arguments (avoid leaking deoptimization).\n\t\targs = new Array(len);\n\t\tfor (i = 0; i < len; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\n\t\tdependants = normalizedGetDependants.apply(null, args);\n\t\tcache = getCache(dependants);\n\n\t\t// If not guaranteed uniqueness by dependants (primitive type), shallow\n\t\t// compare against last dependants and, if references have changed,\n\t\t// destroy cache to recalculate result.\n\t\tif (!cache.isUniqueByDependants) {\n\t\t\tif (\n\t\t\t\tcache.lastDependants &&\n\t\t\t\t!isShallowEqual(dependants, cache.lastDependants, 0)\n\t\t\t) {\n\t\t\t\tcache.clear();\n\t\t\t}\n\n\t\t\tcache.lastDependants = dependants;\n\t\t}\n\n\t\tnode = cache.head;\n\t\twhile (node) {\n\t\t\t// Check whether node arguments match arguments\n\t\t\tif (!isShallowEqual(node.args, args, 1)) {\n\t\t\t\tnode = node.next;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// At this point we can assume we've found a match\n\n\t\t\t// Surface matched node to head if not already\n\t\t\tif (node !== cache.head) {\n\t\t\t\t// Adjust siblings to point to each other.\n\t\t\t\t/** @type {CacheNode} */ (node.prev).next = node.next;\n\t\t\t\tif (node.next) {\n\t\t\t\t\tnode.next.prev = node.prev;\n\t\t\t\t}\n\n\t\t\t\tnode.next = cache.head;\n\t\t\t\tnode.prev = null;\n\t\t\t\t/** @type {CacheNode} */ (cache.head).prev = node;\n\t\t\t\tcache.head = node;\n\t\t\t}\n\n\t\t\t// Return immediately\n\t\t\treturn node.val;\n\t\t}\n\n\t\t// No cached value found. Continue to insertion phase:\n\n\t\tnode = /** @type {CacheNode} */ ({\n\t\t\t// Generate the result from original function\n\t\t\tval: selector.apply(null, args),\n\t\t});\n\n\t\t// Avoid including the source object in the cache.\n\t\targs[0] = null;\n\t\tnode.args = args;\n\n\t\t// Don't need to check whether node is already head, since it would\n\t\t// have been returned above already if it was\n\n\t\t// Shift existing head down list\n\t\tif (cache.head) {\n\t\t\tcache.head.prev = node;\n\t\t\tnode.next = cache.head;\n\t\t}\n\n\t\tcache.head = node;\n\n\t\treturn node.val;\n\t}\n\n\tcallSelector.getDependants = normalizedGetDependants;\n\tcallSelector.clear = clear;\n\tclear();\n\n\treturn /** @type {S & EnhancedSelector} */ (callSelector);\n}\n","/**\n * External dependencies\n */\nimport createSelector from 'rememo';\n\n/**\n * WordPress dependencies\n */\nimport { createRegistrySelector } from '@wordpress/data';\nimport { store as interfaceStore } from '@wordpress/interface';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as editorStore } from '@wordpress/editor';\nimport deprecated from '@wordpress/deprecated';\n\nconst EMPTY_ARRAY = [];\nconst EMPTY_OBJECT = {};\n\n/**\n * Returns the current editing mode.\n *\n * @param {Object} state Global application state.\n *\n * @return {string} Editing mode.\n */\nexport const getEditorMode = createRegistrySelector(\n\t( select ) => () =>\n\t\tselect( preferencesStore ).get( 'core/edit-post', 'editorMode' ) ??\n\t\t'visual'\n);\n\n/**\n * Returns true if the editor sidebar is opened.\n *\n * @param {Object} state Global application state\n *\n * @return {boolean} Whether the editor sidebar is opened.\n */\nexport const isEditorSidebarOpened = createRegistrySelector(\n\t( select ) => () => {\n\t\tconst activeGeneralSidebar =\n\t\t\tselect( interfaceStore ).getActiveComplementaryArea(\n\t\t\t\t'core/edit-post'\n\t\t\t);\n\t\treturn [ 'edit-post/document', 'edit-post/block' ].includes(\n\t\t\tactiveGeneralSidebar\n\t\t);\n\t}\n);\n\n/**\n * Returns true if the plugin sidebar is opened.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the plugin sidebar is opened.\n */\nexport const isPluginSidebarOpened = createRegistrySelector(\n\t( select ) => () => {\n\t\tconst activeGeneralSidebar =\n\t\t\tselect( interfaceStore ).getActiveComplementaryArea(\n\t\t\t\t'core/edit-post'\n\t\t\t);\n\t\treturn (\n\t\t\t!! activeGeneralSidebar &&\n\t\t\t! [ 'edit-post/document', 'edit-post/block' ].includes(\n\t\t\t\tactiveGeneralSidebar\n\t\t\t)\n\t\t);\n\t}\n);\n\n/**\n * Returns the current active general sidebar name, or null if there is no\n * general sidebar active. The active general sidebar is a unique name to\n * identify either an editor or plugin sidebar.\n *\n * Examples:\n *\n * - `edit-post/document`\n * - `my-plugin/insert-image-sidebar`\n *\n * @param {Object} state Global application state.\n *\n * @return {?string} Active general sidebar name.\n */\nexport const getActiveGeneralSidebarName = createRegistrySelector(\n\t( select ) => () => {\n\t\treturn select( interfaceStore ).getActiveComplementaryArea(\n\t\t\t'core/edit-post'\n\t\t);\n\t}\n);\n\n/**\n * Converts panels from the new preferences store format to the old format\n * that the post editor previously used.\n *\n * The resultant converted data should look like this:\n * {\n * panelName: {\n * enabled: false,\n * opened: true,\n * },\n * anotherPanelName: {\n * opened: true\n * },\n * }\n *\n * @param {string[] | undefined} inactivePanels An array of inactive panel names.\n * @param {string[] | undefined} openPanels An array of open panel names.\n *\n * @return {Object} The converted panel data.\n */\nfunction convertPanelsToOldFormat( inactivePanels, openPanels ) {\n\t// First reduce the inactive panels.\n\tconst panelsWithEnabledState = inactivePanels?.reduce(\n\t\t( accumulatedPanels, panelName ) => ( {\n\t\t\t...accumulatedPanels,\n\t\t\t[ panelName ]: {\n\t\t\t\tenabled: false,\n\t\t\t},\n\t\t} ),\n\t\t{}\n\t);\n\n\t// Then reduce the open panels, passing in the result of the previous\n\t// reduction as the initial value so that both open and inactive\n\t// panel state is combined.\n\tconst panels = openPanels?.reduce( ( accumulatedPanels, panelName ) => {\n\t\tconst currentPanelState = accumulatedPanels?.[ panelName ];\n\t\treturn {\n\t\t\t...accumulatedPanels,\n\t\t\t[ panelName ]: {\n\t\t\t\t...currentPanelState,\n\t\t\t\topened: true,\n\t\t\t},\n\t\t};\n\t}, panelsWithEnabledState ?? {} );\n\n\t// The panels variable will only be set if openPanels wasn't `undefined`.\n\t// If it isn't set just return `panelsWithEnabledState`, and if that isn't\n\t// set return an empty object.\n\treturn panels ?? panelsWithEnabledState ?? EMPTY_OBJECT;\n}\n\n/**\n * Returns the preferences (these preferences are persisted locally).\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} Preferences Object.\n */\nexport const getPreferences = createRegistrySelector( ( select ) => () => {\n\tdeprecated( `select( 'core/edit-post' ).getPreferences`, {\n\t\tsince: '6.0',\n\t\talternative: `select( 'core/preferences' ).get`,\n\t} );\n\n\t// These preferences now exist in the preferences store.\n\t// Fetch them so that they can be merged into the post\n\t// editor preferences.\n\tconst preferences = [\n\t\t'hiddenBlockTypes',\n\t\t'editorMode',\n\t\t'preferredStyleVariations',\n\t].reduce( ( accumulatedPrefs, preferenceKey ) => {\n\t\tconst value = select( preferencesStore ).get(\n\t\t\t'core/edit-post',\n\t\t\tpreferenceKey\n\t\t);\n\n\t\treturn {\n\t\t\t...accumulatedPrefs,\n\t\t\t[ preferenceKey ]: value,\n\t\t};\n\t}, {} );\n\n\t// Panels were a preference, but the data structure changed when the state\n\t// was migrated to the preferences store. They need to be converted from\n\t// the new preferences store format to old format to ensure no breaking\n\t// changes for plugins.\n\tconst inactivePanels = select( preferencesStore ).get(\n\t\t'core/edit-post',\n\t\t'inactivePanels'\n\t);\n\tconst openPanels = select( preferencesStore ).get(\n\t\t'core/edit-post',\n\t\t'openPanels'\n\t);\n\tconst panels = convertPanelsToOldFormat( inactivePanels, openPanels );\n\n\treturn {\n\t\t...preferences,\n\t\tpanels,\n\t};\n} );\n\n/**\n *\n * @param {Object} state Global application state.\n * @param {string} preferenceKey Preference Key.\n * @param {*} defaultValue Default Value.\n *\n * @return {*} Preference Value.\n */\nexport function getPreference( state, preferenceKey, defaultValue ) {\n\tdeprecated( `select( 'core/edit-post' ).getPreference`, {\n\t\tsince: '6.0',\n\t\talternative: `select( 'core/preferences' ).get`,\n\t} );\n\n\t// Avoid using the `getPreferences` registry selector where possible.\n\tconst preferences = getPreferences( state );\n\tconst value = preferences[ preferenceKey ];\n\treturn value === undefined ? defaultValue : value;\n}\n\n/**\n * Returns an array of blocks that are hidden.\n *\n * @return {Array} A list of the hidden block types\n */\nexport const getHiddenBlockTypes = createRegistrySelector( ( select ) => () => {\n\treturn (\n\t\tselect( preferencesStore ).get(\n\t\t\t'core/edit-post',\n\t\t\t'hiddenBlockTypes'\n\t\t) ?? EMPTY_ARRAY\n\t);\n} );\n\n/**\n * Returns true if the publish sidebar is opened.\n *\n * @param {Object} state Global application state\n *\n * @return {boolean} Whether the publish sidebar is open.\n */\nexport function isPublishSidebarOpened( state ) {\n\treturn state.publishSidebarActive;\n}\n\n/**\n * Returns true if the given panel was programmatically removed, or false otherwise.\n * All panels are not removed by default.\n *\n * @param {Object} state Global application state.\n * @param {string} panelName A string that identifies the panel.\n *\n * @return {boolean} Whether or not the panel is removed.\n */\nexport function isEditorPanelRemoved( state, panelName ) {\n\treturn state.removedPanels.includes( panelName );\n}\n\n/**\n * Returns true if the given panel is enabled, or false otherwise. Panels are\n * enabled by default.\n *\n * @param {Object} state Global application state.\n * @param {string} panelName A string that identifies the panel.\n *\n * @return {boolean} Whether or not the panel is enabled.\n */\nexport const isEditorPanelEnabled = createRegistrySelector(\n\t( select ) => ( state, panelName ) => {\n\t\tconst inactivePanels = select( preferencesStore ).get(\n\t\t\t'core/edit-post',\n\t\t\t'inactivePanels'\n\t\t);\n\t\treturn (\n\t\t\t! isEditorPanelRemoved( state, panelName ) &&\n\t\t\t! inactivePanels?.includes( panelName )\n\t\t);\n\t}\n);\n\n/**\n * Returns true if the given panel is open, or false otherwise. Panels are\n * closed by default.\n *\n * @param {Object} state Global application state.\n * @param {string} panelName A string that identifies the panel.\n *\n * @return {boolean} Whether or not the panel is open.\n */\nexport const isEditorPanelOpened = createRegistrySelector(\n\t( select ) => ( state, panelName ) => {\n\t\tconst openPanels = select( preferencesStore ).get(\n\t\t\t'core/edit-post',\n\t\t\t'openPanels'\n\t\t);\n\t\treturn !! openPanels?.includes( panelName );\n\t}\n);\n\n/**\n * Returns true if a modal is active, or false otherwise.\n *\n * @param {Object} state Global application state.\n * @param {string} modalName A string that uniquely identifies the modal.\n *\n * @return {boolean} Whether the modal is active.\n */\nexport function isModalActive( state, modalName ) {\n\treturn state.activeModal === modalName;\n}\n\n/**\n * Returns whether the given feature is enabled or not.\n *\n * @param {Object} state Global application state.\n * @param {string} feature Feature slug.\n *\n * @return {boolean} Is active.\n */\nexport const isFeatureActive = createRegistrySelector(\n\t( select ) => ( state, feature ) => {\n\t\treturn !! select( preferencesStore ).get( 'core/edit-post', feature );\n\t}\n);\n\n/**\n * Returns true if the plugin item is pinned to the header.\n * When the value is not set it defaults to true.\n *\n * @param {Object} state Global application state.\n * @param {string} pluginName Plugin item name.\n *\n * @return {boolean} Whether the plugin item is pinned.\n */\nexport const isPluginItemPinned = createRegistrySelector(\n\t( select ) => ( state, pluginName ) => {\n\t\treturn select( interfaceStore ).isItemPinned(\n\t\t\t'core/edit-post',\n\t\t\tpluginName\n\t\t);\n\t}\n);\n\n/**\n * Returns an array of active meta box locations.\n *\n * @param {Object} state Post editor state.\n *\n * @return {string[]} Active meta box locations.\n */\nexport const getActiveMetaBoxLocations = createSelector(\n\t( state ) => {\n\t\treturn Object.keys( state.metaBoxes.locations ).filter( ( location ) =>\n\t\t\tisMetaBoxLocationActive( state, location )\n\t\t);\n\t},\n\t( state ) => [ state.metaBoxes.locations ]\n);\n\n/**\n * Returns true if a metabox location is active and visible\n *\n * @param {Object} state Post editor state.\n * @param {string} location Meta box location to test.\n *\n * @return {boolean} Whether the meta box location is active and visible.\n */\nexport function isMetaBoxLocationVisible( state, location ) {\n\treturn (\n\t\tisMetaBoxLocationActive( state, location ) &&\n\t\tgetMetaBoxesPerLocation( state, location )?.some( ( { id } ) => {\n\t\t\treturn isEditorPanelEnabled( state, `meta-box-${ id }` );\n\t\t} )\n\t);\n}\n\n/**\n * Returns true if there is an active meta box in the given location, or false\n * otherwise.\n *\n * @param {Object} state Post editor state.\n * @param {string} location Meta box location to test.\n *\n * @return {boolean} Whether the meta box location is active.\n */\nexport function isMetaBoxLocationActive( state, location ) {\n\tconst metaBoxes = getMetaBoxesPerLocation( state, location );\n\treturn !! metaBoxes && metaBoxes.length !== 0;\n}\n\n/**\n * Returns the list of all the available meta boxes for a given location.\n *\n * @param {Object} state Global application state.\n * @param {string} location Meta box location to test.\n *\n * @return {?Array} List of meta boxes.\n */\nexport function getMetaBoxesPerLocation( state, location ) {\n\treturn state.metaBoxes.locations[ location ];\n}\n\n/**\n * Returns the list of all the available meta boxes.\n *\n * @param {Object} state Global application state.\n *\n * @return {Array} List of meta boxes.\n */\nexport const getAllMetaBoxes = createSelector(\n\t( state ) => {\n\t\treturn Object.values( state.metaBoxes.locations ).flat();\n\t},\n\t( state ) => [ state.metaBoxes.locations ]\n);\n\n/**\n * Returns true if the post is using Meta Boxes\n *\n * @param {Object} state Global application state\n *\n * @return {boolean} Whether there are metaboxes or not.\n */\nexport function hasMetaBoxes( state ) {\n\treturn getActiveMetaBoxLocations( state ).length > 0;\n}\n\n/**\n * Returns true if the Meta Boxes are being saved.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the metaboxes are being saved.\n */\nexport function isSavingMetaBoxes( state ) {\n\treturn state.metaBoxes.isSaving;\n}\n\n/**\n * Returns the current editing canvas device type.\n *\n * @param {Object} state Global application state.\n *\n * @return {string} Device type.\n */\nexport function __experimentalGetPreviewDeviceType( state ) {\n\treturn state.deviceType;\n}\n\n/**\n * Returns true if the inserter is opened.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the inserter is opened.\n */\nexport function isInserterOpened( state ) {\n\treturn !! state.blockInserterPanel;\n}\n\n/**\n * Get the insertion point for the inserter.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} The root client ID, index to insert at and starting filter value.\n */\nexport function __experimentalGetInsertionPoint( state ) {\n\tconst { rootClientId, insertionIndex, filterValue } =\n\t\tstate.blockInserterPanel;\n\treturn { rootClientId, insertionIndex, filterValue };\n}\n\n/**\n * Returns true if the list view is opened.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the list view is opened.\n */\nexport function isListViewOpened( state ) {\n\treturn state.listViewPanel;\n}\n\n/**\n * Returns true if the template editing mode is enabled.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether we're editing the template.\n */\nexport function isEditingTemplate( state ) {\n\treturn state.isEditingTemplate;\n}\n\n/**\n * Returns true if meta boxes are initialized.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether meta boxes are initialized.\n */\nexport function areMetaBoxesInitialized( state ) {\n\treturn state.metaBoxes.initialized;\n}\n\n/**\n * Retrieves the template of the currently edited post.\n *\n * @return {Object?} Post Template.\n */\nexport const getEditedPostTemplate = createRegistrySelector(\n\t( select ) => () => {\n\t\tconst currentTemplate =\n\t\t\tselect( editorStore ).getEditedPostAttribute( 'template' );\n\t\tif ( currentTemplate ) {\n\t\t\tconst templateWithSameSlug = select( coreStore )\n\t\t\t\t.getEntityRecords( 'postType', 'wp_template', { per_page: -1 } )\n\t\t\t\t?.find( ( template ) => template.slug === currentTemplate );\n\t\t\tif ( ! templateWithSameSlug ) {\n\t\t\t\treturn templateWithSameSlug;\n\t\t\t}\n\t\t\treturn select( coreStore ).getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template',\n\t\t\t\ttemplateWithSameSlug.id\n\t\t\t);\n\t\t}\n\n\t\tconst post = select( editorStore ).getCurrentPost();\n\t\tif ( post.link ) {\n\t\t\treturn select( coreStore ).__experimentalGetTemplateForLink(\n\t\t\t\tpost.link\n\t\t\t);\n\t\t}\n\n\t\treturn null;\n\t}\n);\n","/**\n * The identifier for the data store.\n *\n * @type {string}\n */\nexport const STORE_NAME = 'core/edit-post';\n\n/**\n * CSS selector string for the admin bar view post link anchor tag.\n *\n * @type {string}\n */\nexport const VIEW_AS_LINK_SELECTOR = '#wp-admin-bar-view a';\n\n/**\n * CSS selector string for the admin bar preview post link anchor tag.\n *\n * @type {string}\n */\nexport const VIEW_AS_PREVIEW_LINK_SELECTOR = '#wp-admin-bar-preview a';\n","/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport * as actions from './actions';\nimport * as selectors from './selectors';\nimport { STORE_NAME } from './constants';\n\n/**\n * Store definition for the edit post namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore( STORE_NAME, {\n\treducer,\n\tactions,\n\tselectors,\n} );\n\nregister( store );\n","/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { withDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { displayShortcut } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nexport function KeyboardShortcutsHelpMenuItem( { openModal } ) {\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => {\n\t\t\t\topenModal( 'edit-post/keyboard-shortcut-help' );\n\t\t\t} }\n\t\t\tshortcut={ displayShortcut.access( 'h' ) }\n\t\t>\n\t\t\t{ __( 'Keyboard shortcuts' ) }\n\t\t</MenuItem>\n\t);\n}\n\nexport default withDispatch( ( dispatch ) => {\n\tconst { openModal } = dispatch( editPostStore );\n\n\treturn {\n\t\topenModal,\n\t};\n} )( KeyboardShortcutsHelpMenuItem );\n","/**\n * External dependencies\n */\nimport { isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createSlotFill, MenuGroup } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nconst { Fill: ToolsMoreMenuGroup, Slot } =\n\tcreateSlotFill( 'ToolsMoreMenuGroup' );\n\nToolsMoreMenuGroup.Slot = ( { fillProps } ) => (\n\t<Slot fillProps={ fillProps }>\n\t\t{ ( fills ) =>\n\t\t\t! isEmpty( fills ) && (\n\t\t\t\t<MenuGroup label={ __( 'Tools' ) }>{ fills }</MenuGroup>\n\t\t\t)\n\t\t}\n\t</Slot>\n);\n\nexport default ToolsMoreMenuGroup;\n","/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { PreferenceToggleMenuItem } from '@wordpress/preferences';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nexport default function WelcomeGuideMenuItem() {\n\tconst isTemplateMode = useSelect(\n\t\t( select ) => select( editPostStore ).isEditingTemplate(),\n\t\t[]\n\t);\n\n\treturn (\n\t\t<PreferenceToggleMenuItem\n\t\t\tscope=\"core/edit-post\"\n\t\t\tname={ isTemplateMode ? 'welcomeGuideTemplate' : 'welcomeGuide' }\n\t\t\tlabel={ __( 'Welcome Guide' ) }\n\t\t/>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { MenuItem, VisuallyHidden } from '@wordpress/components';\nimport { external } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport { registerPlugin } from '@wordpress/plugins';\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport CopyContentMenuItem from './copy-content-menu-item';\nimport KeyboardShortcutsHelpMenuItem from './keyboard-shortcuts-help-menu-item';\nimport ToolsMoreMenuGroup from '../components/header/tools-more-menu-group';\nimport WelcomeGuideMenuItem from './welcome-guide-menu-item';\n\nregisterPlugin( 'edit-post', {\n\trender() {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<ToolsMoreMenuGroup>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\t\t\thref={ addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Manage Reusable blocks' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t<KeyboardShortcutsHelpMenuItem\n\t\t\t\t\t\t\t\tonSelect={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<WelcomeGuideMenuItem />\n\t\t\t\t\t\t\t<CopyContentMenuItem />\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t\t\t'https://wordpress.org/support/article/wordpress-editor/'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Help' ) }\n\t\t\t\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t/* translators: accessibility text */\n\t\t\t\t\t\t\t\t\t\t__( '(opens in a new tab)' )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsMoreMenuGroup>\n\t\t\t</>\n\t\t);\n\t},\n} );\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"keyboardShortcuts\"];","/**\n * WordPress dependencies\n */\nimport {\n\tPostTextEditor,\n\tPostTitle,\n\tTextEditorGlobalKeyboardShortcuts,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport { Button } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { displayShortcut } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nexport default function TextEditor() {\n\tconst isRichEditingEnabled = useSelect( ( select ) => {\n\t\treturn select( editorStore ).getEditorSettings().richEditingEnabled;\n\t}, [] );\n\tconst { switchEditorMode } = useDispatch( editPostStore );\n\n\treturn (\n\t\t<div className=\"edit-post-text-editor\">\n\t\t\t<TextEditorGlobalKeyboardShortcuts />\n\t\t\t{ isRichEditingEnabled && (\n\t\t\t\t<div className=\"edit-post-text-editor__toolbar\">\n\t\t\t\t\t<h2>{ __( 'Editing code' ) }</h2>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => switchEditorMode( 'visual' ) }\n\t\t\t\t\t\tshortcut={ displayShortcut.secondary( 'm' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Exit code editor' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<div className=\"edit-post-text-editor__body\">\n\t\t\t\t<PostTitle />\n\t\t\t\t<PostTextEditor />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst arrowLeft = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M20 10.8H6.7l4.1-4.5-1.1-1.1-5.8 6.3 5.8 5.8 1.1-1.1-4-3.9H20z\" />\n\t</SVG>\n);\n\nexport default arrowLeft;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { speak } from '@wordpress/a11y';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nconst noop = () => {};\n\nexport function BlockInspectorButton( { onClick = noop, small = false } ) {\n\tconst { shortcut, areAdvancedSettingsOpened } = useSelect(\n\t\t( select ) => ( {\n\t\t\tshortcut: select(\n\t\t\t\tkeyboardShortcutsStore\n\t\t\t).getShortcutRepresentation( 'core/edit-post/toggle-sidebar' ),\n\t\t\tareAdvancedSettingsOpened:\n\t\t\t\tselect( editPostStore ).getActiveGeneralSidebarName() ===\n\t\t\t\t'edit-post/block',\n\t\t} ),\n\t\t[]\n\t);\n\tconst { openGeneralSidebar, closeGeneralSidebar } =\n\t\tuseDispatch( editPostStore );\n\n\tconst label = areAdvancedSettingsOpened\n\t\t? __( 'Hide more settings' )\n\t\t: __( 'Show more settings' );\n\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => {\n\t\t\t\tif ( areAdvancedSettingsOpened ) {\n\t\t\t\t\tcloseGeneralSidebar();\n\t\t\t\t\tspeak( __( 'Block settings closed' ) );\n\t\t\t\t} else {\n\t\t\t\t\topenGeneralSidebar( 'edit-post/block' );\n\t\t\t\t\tspeak(\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Additional settings are now available in the Editor block settings sidebar'\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tonClick();\n\t\t\t} }\n\t\t\tshortcut={ shortcut }\n\t\t>\n\t\t\t{ ! small && label }\n\t\t</MenuItem>\n\t);\n}\n\nexport default BlockInspectorButton;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tVisualEditorGlobalKeyboardShortcuts,\n\tPostTitle,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport {\n\tWritingFlow,\n\tBlockList,\n\tBlockTools,\n\tstore as blockEditorStore,\n\t__unstableUseBlockSelectionClearer as useBlockSelectionClearer,\n\t__unstableUseTypewriter as useTypewriter,\n\t__unstableUseClipboardHandler as useClipboardHandler,\n\t__unstableUseTypingObserver as useTypingObserver,\n\t__unstableBlockSettingsMenuFirstItem,\n\t__experimentalUseResizeCanvas as useResizeCanvas,\n\t__unstableEditorStyles as EditorStyles,\n\tuseSetting,\n\t__experimentalLayoutStyle as LayoutStyle,\n\t__unstableUseMouseMoveTypingReset as useMouseMoveTypingReset,\n\t__unstableIframe as Iframe,\n\t__experimentalRecursionProvider as RecursionProvider,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useMemo } from '@wordpress/element';\nimport { Button, __unstableMotion as motion } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMergeRefs } from '@wordpress/compose';\nimport { arrowLeft } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BlockInspectorButton from './block-inspector-button';\nimport { store as editPostStore } from '../../store';\n\nfunction MaybeIframe( {\n\tchildren,\n\tcontentRef,\n\tshouldIframe,\n\tstyles,\n\tassets,\n\tstyle,\n} ) {\n\tconst ref = useMouseMoveTypingReset();\n\n\tif ( ! shouldIframe ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<EditorStyles styles={ styles } />\n\t\t\t\t<WritingFlow\n\t\t\t\t\tref={ contentRef }\n\t\t\t\t\tclassName=\"editor-styles-wrapper\"\n\t\t\t\t\tstyle={ { flex: '1', ...style } }\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</WritingFlow>\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Iframe\n\t\t\thead={ <EditorStyles styles={ styles } /> }\n\t\t\tassets={ assets }\n\t\t\tref={ ref }\n\t\t\tcontentRef={ contentRef }\n\t\t\tstyle={ { width: '100%', height: '100%', display: 'block' } }\n\t\t\tname=\"editor-canvas\"\n\t\t>\n\t\t\t{ children }\n\t\t</Iframe>\n\t);\n}\n\nexport default function VisualEditor( { styles } ) {\n\tconst {\n\t\tdeviceType,\n\t\tisWelcomeGuideVisible,\n\t\tisTemplateMode,\n\t\twrapperBlockName,\n\t\twrapperUniqueId,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tisFeatureActive,\n\t\t\tisEditingTemplate,\n\t\t\t__experimentalGetPreviewDeviceType,\n\t\t} = select( editPostStore );\n\t\tconst { getCurrentPostId, getCurrentPostType } = select( editorStore );\n\t\tconst _isTemplateMode = isEditingTemplate();\n\t\tlet _wrapperBlockName;\n\n\t\tif ( getCurrentPostType() === 'wp_block' ) {\n\t\t\t_wrapperBlockName = 'core/block';\n\t\t} else if ( ! _isTemplateMode ) {\n\t\t\t_wrapperBlockName = 'core/post-content';\n\t\t}\n\n\t\treturn {\n\t\t\tdeviceType: __experimentalGetPreviewDeviceType(),\n\t\t\tisWelcomeGuideVisible: isFeatureActive( 'welcomeGuide' ),\n\t\t\tisTemplateMode: _isTemplateMode,\n\t\t\twrapperBlockName: _wrapperBlockName,\n\t\t\twrapperUniqueId: getCurrentPostId(),\n\t\t};\n\t}, [] );\n\tconst { isCleanNewPost } = useSelect( editorStore );\n\tconst hasMetaBoxes = useSelect(\n\t\t( select ) => select( editPostStore ).hasMetaBoxes(),\n\t\t[]\n\t);\n\tconst { themeHasDisabledLayoutStyles, themeSupportsLayout, assets } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst _settings = select( blockEditorStore ).getSettings();\n\t\t\treturn {\n\t\t\t\tthemeHasDisabledLayoutStyles: _settings.disableLayoutStyles,\n\t\t\t\tthemeSupportsLayout: _settings.supportsLayout,\n\t\t\t\tassets: _settings.__unstableResolvedAssets,\n\t\t\t};\n\t\t}, [] );\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst { setIsEditingTemplate } = useDispatch( editPostStore );\n\tconst desktopCanvasStyles = {\n\t\theight: '100%',\n\t\twidth: '100%',\n\t\tmargin: 0,\n\t\tdisplay: 'flex',\n\t\tflexFlow: 'column',\n\t\t// Default background color so that grey\n\t\t// .edit-post-editor-regions__content color doesn't show through.\n\t\tbackground: 'white',\n\t};\n\tconst templateModeStyles = {\n\t\t...desktopCanvasStyles,\n\t\tborderRadius: '2px 2px 0 0',\n\t\tborder: '1px solid #ddd',\n\t\tborderBottom: 0,\n\t};\n\tconst resizedCanvasStyles = useResizeCanvas( deviceType, isTemplateMode );\n\tconst defaultLayout = useSetting( 'layout' );\n\tconst previewMode = 'is-' + deviceType.toLowerCase() + '-preview';\n\n\tlet animatedStyles = isTemplateMode\n\t\t? templateModeStyles\n\t\t: desktopCanvasStyles;\n\tif ( resizedCanvasStyles ) {\n\t\tanimatedStyles = resizedCanvasStyles;\n\t}\n\n\tlet paddingBottom;\n\n\t// Add a constant padding for the typewritter effect. When typing at the\n\t// bottom, there needs to be room to scroll up.\n\tif ( ! hasMetaBoxes && ! resizedCanvasStyles && ! isTemplateMode ) {\n\t\tpaddingBottom = '40vh';\n\t}\n\n\tconst ref = useRef();\n\tconst contentRef = useMergeRefs( [\n\t\tref,\n\t\tuseClipboardHandler(),\n\t\tuseTypewriter(),\n\t\tuseTypingObserver(),\n\t\tuseBlockSelectionClearer(),\n\t] );\n\n\tconst blockSelectionClearerRef = useBlockSelectionClearer();\n\n\tconst layout = useMemo( () => {\n\t\tif ( isTemplateMode ) {\n\t\t\treturn { type: 'default' };\n\t\t}\n\n\t\tif ( themeSupportsLayout ) {\n\t\t\t// We need to ensure support for wide and full alignments,\n\t\t\t// so we add the constrained type.\n\t\t\treturn { ...defaultLayout, type: 'constrained' };\n\t\t}\n\t\t// Set constrained layout for classic themes so all alignments are supported.\n\t\treturn { type: 'constrained' };\n\t}, [ isTemplateMode, themeSupportsLayout, defaultLayout ] );\n\n\tconst titleRef = useRef();\n\tuseEffect( () => {\n\t\tif ( isWelcomeGuideVisible || ! isCleanNewPost() ) {\n\t\t\treturn;\n\t\t}\n\t\ttitleRef?.current?.focus();\n\t}, [ isWelcomeGuideVisible, isCleanNewPost ] );\n\n\treturn (\n\t\t<BlockTools\n\t\t\t__unstableContentRef={ ref }\n\t\t\tclassName={ classnames( 'edit-post-visual-editor', {\n\t\t\t\t'is-template-mode': isTemplateMode,\n\t\t\t} ) }\n\t\t>\n\t\t\t<VisualEditorGlobalKeyboardShortcuts />\n\t\t\t<motion.div\n\t\t\t\tclassName=\"edit-post-visual-editor__content-area\"\n\t\t\t\tanimate={ {\n\t\t\t\t\tpadding: isTemplateMode ? '48px 48px 0' : '0',\n\t\t\t\t} }\n\t\t\t\tref={ blockSelectionClearerRef }\n\t\t\t>\n\t\t\t\t{ isTemplateMode && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"edit-post-visual-editor__exit-template-mode\"\n\t\t\t\t\t\ticon={ arrowLeft }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t\t\tsetIsEditingTemplate( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\t<motion.div\n\t\t\t\t\tanimate={ animatedStyles }\n\t\t\t\t\tinitial={ desktopCanvasStyles }\n\t\t\t\t\tclassName={ previewMode }\n\t\t\t\t>\n\t\t\t\t\t<MaybeIframe\n\t\t\t\t\t\tshouldIframe={\n\t\t\t\t\t\t\tisTemplateMode ||\n\t\t\t\t\t\t\tdeviceType === 'Tablet' ||\n\t\t\t\t\t\t\tdeviceType === 'Mobile'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontentRef={ contentRef }\n\t\t\t\t\t\tstyles={ styles }\n\t\t\t\t\t\tassets={ assets }\n\t\t\t\t\t\tstyle={ { paddingBottom } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ themeSupportsLayout &&\n\t\t\t\t\t\t\t! themeHasDisabledLayoutStyles &&\n\t\t\t\t\t\t\t! isTemplateMode && (\n\t\t\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\t\t\tselector=\".edit-post-visual-editor__post-title-wrapper, .block-editor-block-list__layout.is-root-container\"\n\t\t\t\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t\t\t\t\tlayoutDefinitions={\n\t\t\t\t\t\t\t\t\t\tdefaultLayout?.definitions\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{ ! isTemplateMode && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"edit-post-visual-editor__post-title-wrapper\"\n\t\t\t\t\t\t\t\tcontentEditable={ false }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<PostTitle ref={ titleRef } />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<RecursionProvider\n\t\t\t\t\t\t\tblockName={ wrapperBlockName }\n\t\t\t\t\t\t\tuniqueId={ wrapperUniqueId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockList\n\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\tisTemplateMode\n\t\t\t\t\t\t\t\t\t\t? 'wp-site-blocks'\n\t\t\t\t\t\t\t\t\t\t: 'is-layout-constrained' // Ensure root level blocks receive default/flow blockGap styling rules.\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t__experimentalLayout={ layout }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</RecursionProvider>\n\t\t\t\t\t</MaybeIframe>\n\t\t\t\t</motion.div>\n\t\t\t</motion.div>\n\t\t\t<__unstableBlockSettingsMenuFirstItem>\n\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t<BlockInspectorButton onClick={ onClose } />\n\t\t\t\t) }\n\t\t\t</__unstableBlockSettingsMenuFirstItem>\n\t\t</BlockTools>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tuseShortcut,\n\tstore as keyboardShortcutsStore,\n} from '@wordpress/keyboard-shortcuts';\nimport { __ } from '@wordpress/i18n';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nfunction KeyboardShortcuts() {\n\tconst { getBlockSelectionStart } = useSelect( blockEditorStore );\n\tconst { getEditorMode, isEditorSidebarOpened, isListViewOpened } =\n\t\tuseSelect( editPostStore );\n\tconst isModeToggleDisabled = useSelect( ( select ) => {\n\t\tconst { richEditingEnabled, codeEditingEnabled } =\n\t\t\tselect( editorStore ).getEditorSettings();\n\t\treturn ! richEditingEnabled || ! codeEditingEnabled;\n\t}, [] );\n\n\tconst {\n\t\tswitchEditorMode,\n\t\topenGeneralSidebar,\n\t\tcloseGeneralSidebar,\n\t\ttoggleFeature,\n\t\tsetIsListViewOpened,\n\t} = useDispatch( editPostStore );\n\tconst { registerShortcut } = useDispatch( keyboardShortcutsStore );\n\n\tuseEffect( () => {\n\t\tregisterShortcut( {\n\t\t\tname: 'core/edit-post/toggle-mode',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Switch between visual editor and code editor.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'secondary',\n\t\t\t\tcharacter: 'm',\n\t\t\t},\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/edit-post/toggle-fullscreen',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Toggle fullscreen mode.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'secondary',\n\t\t\t\tcharacter: 'f',\n\t\t\t},\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/edit-post/toggle-list-view',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Open the block list view.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'access',\n\t\t\t\tcharacter: 'o',\n\t\t\t},\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/edit-post/toggle-sidebar',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Show or hide the settings sidebar.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primaryShift',\n\t\t\t\tcharacter: ',',\n\t\t\t},\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/edit-post/next-region',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Navigate to the next part of the editor.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'ctrl',\n\t\t\t\tcharacter: '`',\n\t\t\t},\n\t\t\taliases: [\n\t\t\t\t{\n\t\t\t\t\tmodifier: 'access',\n\t\t\t\t\tcharacter: 'n',\n\t\t\t\t},\n\t\t\t],\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/edit-post/previous-region',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Navigate to the previous part of the editor.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'ctrlShift',\n\t\t\t\tcharacter: '`',\n\t\t\t},\n\t\t\taliases: [\n\t\t\t\t{\n\t\t\t\t\tmodifier: 'access',\n\t\t\t\t\tcharacter: 'p',\n\t\t\t\t},\n\t\t\t],\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/edit-post/keyboard-shortcuts',\n\t\t\tcategory: 'main',\n\t\t\tdescription: __( 'Display these keyboard shortcuts.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'access',\n\t\t\t\tcharacter: 'h',\n\t\t\t},\n\t\t} );\n\t}, [] );\n\n\tuseShortcut(\n\t\t'core/edit-post/toggle-mode',\n\t\t() => {\n\t\t\tswitchEditorMode(\n\t\t\t\tgetEditorMode() === 'visual' ? 'text' : 'visual'\n\t\t\t);\n\t\t},\n\t\t{\n\t\t\tisDisabled: isModeToggleDisabled,\n\t\t}\n\t);\n\n\tuseShortcut( 'core/edit-post/toggle-fullscreen', () => {\n\t\ttoggleFeature( 'fullscreenMode' );\n\t} );\n\n\tuseShortcut( 'core/edit-post/toggle-sidebar', ( event ) => {\n\t\t// This shortcut has no known clashes, but use preventDefault to prevent any\n\t\t// obscure shortcuts from triggering.\n\t\tevent.preventDefault();\n\n\t\tif ( isEditorSidebarOpened() ) {\n\t\t\tcloseGeneralSidebar();\n\t\t} else {\n\t\t\tconst sidebarToOpen = getBlockSelectionStart()\n\t\t\t\t? 'edit-post/block'\n\t\t\t\t: 'edit-post/document';\n\t\t\topenGeneralSidebar( sidebarToOpen );\n\t\t}\n\t} );\n\n\tuseShortcut( 'core/edit-post/toggle-list-view', () =>\n\t\tsetIsListViewOpened( ! isListViewOpened() )\n\t);\n\n\treturn null;\n}\n\nexport default KeyboardShortcuts;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nexport const textFormattingShortcuts = [\n\t{\n\t\tkeyCombination: { modifier: 'primary', character: 'b' },\n\t\tdescription: __( 'Make the selected text bold.' ),\n\t},\n\t{\n\t\tkeyCombination: { modifier: 'primary', character: 'i' },\n\t\tdescription: __( 'Make the selected text italic.' ),\n\t},\n\t{\n\t\tkeyCombination: { modifier: 'primary', character: 'k' },\n\t\tdescription: __( 'Convert the selected text into a link.' ),\n\t},\n\t{\n\t\tkeyCombination: { modifier: 'primaryShift', character: 'k' },\n\t\tdescription: __( 'Remove a link.' ),\n\t},\n\t{\n\t\tkeyCombination: { character: '[[' },\n\t\tdescription: __( 'Insert a link to a post or page' ),\n\t},\n\t{\n\t\tkeyCombination: { modifier: 'primary', character: 'u' },\n\t\tdescription: __( 'Underline the selected text.' ),\n\t},\n\t{\n\t\tkeyCombination: { modifier: 'access', character: 'd' },\n\t\tdescription: __( 'Strikethrough the selected text.' ),\n\t},\n\t{\n\t\tkeyCombination: { modifier: 'access', character: 'x' },\n\t\tdescription: __( 'Make the selected text inline code.' ),\n\t},\n];\n","/**\n * External dependencies\n */\nimport { castArray } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Fragment } from '@wordpress/element';\nimport { displayShortcutList, shortcutAriaLabel } from '@wordpress/keycodes';\n\nfunction KeyCombination( { keyCombination, forceAriaLabel } ) {\n\tconst shortcut = keyCombination.modifier\n\t\t? displayShortcutList[ keyCombination.modifier ](\n\t\t\t\tkeyCombination.character\n\t\t )\n\t\t: keyCombination.character;\n\tconst ariaLabel = keyCombination.modifier\n\t\t? shortcutAriaLabel[ keyCombination.modifier ](\n\t\t\t\tkeyCombination.character\n\t\t )\n\t\t: keyCombination.character;\n\n\treturn (\n\t\t<kbd\n\t\t\tclassName=\"edit-post-keyboard-shortcut-help-modal__shortcut-key-combination\"\n\t\t\taria-label={ forceAriaLabel || ariaLabel }\n\t\t>\n\t\t\t{ castArray( shortcut ).map( ( character, index ) => {\n\t\t\t\tif ( character === '+' ) {\n\t\t\t\t\treturn <Fragment key={ index }>{ character }</Fragment>;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<kbd\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\tclassName=\"edit-post-keyboard-shortcut-help-modal__shortcut-key\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ character }\n\t\t\t\t\t</kbd>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</kbd>\n\t);\n}\n\nfunction Shortcut( { description, keyCombination, aliases = [], ariaLabel } ) {\n\treturn (\n\t\t<>\n\t\t\t<div className=\"edit-post-keyboard-shortcut-help-modal__shortcut-description\">\n\t\t\t\t{ description }\n\t\t\t</div>\n\t\t\t<div className=\"edit-post-keyboard-shortcut-help-modal__shortcut-term\">\n\t\t\t\t<KeyCombination\n\t\t\t\t\tkeyCombination={ keyCombination }\n\t\t\t\t\tforceAriaLabel={ ariaLabel }\n\t\t\t\t/>\n\t\t\t\t{ aliases.map( ( alias, index ) => (\n\t\t\t\t\t<KeyCombination\n\t\t\t\t\t\tkeyCombination={ alias }\n\t\t\t\t\t\tforceAriaLabel={ ariaLabel }\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default Shortcut;\n","/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\n\n/**\n * Internal dependencies\n */\nimport Shortcut from './shortcut';\n\nfunction DynamicShortcut( { name } ) {\n\tconst { keyCombination, description, aliases } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetShortcutKeyCombination,\n\t\t\t\tgetShortcutDescription,\n\t\t\t\tgetShortcutAliases,\n\t\t\t} = select( keyboardShortcutsStore );\n\n\t\t\treturn {\n\t\t\t\tkeyCombination: getShortcutKeyCombination( name ),\n\t\t\t\taliases: getShortcutAliases( name ),\n\t\t\t\tdescription: getShortcutDescription( name ),\n\t\t\t};\n\t\t},\n\t\t[ name ]\n\t);\n\n\tif ( ! keyCombination ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Shortcut\n\t\t\tkeyCombination={ keyCombination }\n\t\t\tdescription={ description }\n\t\t\taliases={ aliases }\n\t\t/>\n\t);\n}\n\nexport default DynamicShortcut;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Modal } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseShortcut,\n\tstore as keyboardShortcutsStore,\n} from '@wordpress/keyboard-shortcuts';\nimport { withSelect, withDispatch, useSelect } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { textFormattingShortcuts } from './config';\nimport Shortcut from './shortcut';\nimport DynamicShortcut from './dynamic-shortcut';\nimport { store as editPostStore } from '../../store';\n\nconst MODAL_NAME = 'edit-post/keyboard-shortcut-help';\n\nconst ShortcutList = ( { shortcuts } ) => (\n\t/*\n\t * Disable reason: The `list` ARIA role is redundant but\n\t * Safari+VoiceOver won't announce the list otherwise.\n\t */\n\t/* eslint-disable jsx-a11y/no-redundant-roles */\n\t<ul\n\t\tclassName=\"edit-post-keyboard-shortcut-help-modal__shortcut-list\"\n\t\trole=\"list\"\n\t>\n\t\t{ shortcuts.map( ( shortcut, index ) => (\n\t\t\t<li\n\t\t\t\tclassName=\"edit-post-keyboard-shortcut-help-modal__shortcut\"\n\t\t\t\tkey={ index }\n\t\t\t>\n\t\t\t\t{ typeof shortcut === 'string' ? (\n\t\t\t\t\t<DynamicShortcut name={ shortcut } />\n\t\t\t\t) : (\n\t\t\t\t\t<Shortcut { ...shortcut } />\n\t\t\t\t) }\n\t\t\t</li>\n\t\t) ) }\n\t</ul>\n\t/* eslint-enable jsx-a11y/no-redundant-roles */\n);\n\nconst ShortcutSection = ( { title, shortcuts, className } ) => (\n\t<section\n\t\tclassName={ classnames(\n\t\t\t'edit-post-keyboard-shortcut-help-modal__section',\n\t\t\tclassName\n\t\t) }\n\t>\n\t\t{ !! title && (\n\t\t\t<h2 className=\"edit-post-keyboard-shortcut-help-modal__section-title\">\n\t\t\t\t{ title }\n\t\t\t</h2>\n\t\t) }\n\t\t<ShortcutList shortcuts={ shortcuts } />\n\t</section>\n);\n\nconst ShortcutCategorySection = ( {\n\ttitle,\n\tcategoryName,\n\tadditionalShortcuts = [],\n} ) => {\n\tconst categoryShortcuts = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( keyboardShortcutsStore ).getCategoryShortcuts(\n\t\t\t\tcategoryName\n\t\t\t);\n\t\t},\n\t\t[ categoryName ]\n\t);\n\n\treturn (\n\t\t<ShortcutSection\n\t\t\ttitle={ title }\n\t\t\tshortcuts={ categoryShortcuts.concat( additionalShortcuts ) }\n\t\t/>\n\t);\n};\n\nexport function KeyboardShortcutHelpModal( { isModalActive, toggleModal } ) {\n\tuseShortcut( 'core/edit-post/keyboard-shortcuts', toggleModal );\n\n\tif ( ! isModalActive ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"edit-post-keyboard-shortcut-help-modal\"\n\t\t\ttitle={ __( 'Keyboard shortcuts' ) }\n\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\tonRequestClose={ toggleModal }\n\t\t>\n\t\t\t<ShortcutSection\n\t\t\t\tclassName=\"edit-post-keyboard-shortcut-help-modal__main-shortcuts\"\n\t\t\t\tshortcuts={ [ 'core/edit-post/keyboard-shortcuts' ] }\n\t\t\t/>\n\t\t\t<ShortcutCategorySection\n\t\t\t\ttitle={ __( 'Global shortcuts' ) }\n\t\t\t\tcategoryName=\"global\"\n\t\t\t/>\n\n\t\t\t<ShortcutCategorySection\n\t\t\t\ttitle={ __( 'Selection shortcuts' ) }\n\t\t\t\tcategoryName=\"selection\"\n\t\t\t/>\n\n\t\t\t<ShortcutCategorySection\n\t\t\t\ttitle={ __( 'Block shortcuts' ) }\n\t\t\t\tcategoryName=\"block\"\n\t\t\t\tadditionalShortcuts={ [\n\t\t\t\t\t{\n\t\t\t\t\t\tkeyCombination: { character: '/' },\n\t\t\t\t\t\tdescription: __(\n\t\t\t\t\t\t\t'Change the block type after adding a new paragraph.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t/* translators: The forward-slash character. e.g. '/'. */\n\t\t\t\t\t\tariaLabel: __( 'Forward-slash' ),\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t/>\n\t\t\t<ShortcutSection\n\t\t\t\ttitle={ __( 'Text formatting' ) }\n\t\t\t\tshortcuts={ textFormattingShortcuts }\n\t\t\t/>\n\t\t</Modal>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => ( {\n\t\tisModalActive: select( editPostStore ).isModalActive( MODAL_NAME ),\n\t} ) ),\n\twithDispatch( ( dispatch, { isModalActive } ) => {\n\t\tconst { openModal, closeModal } = dispatch( editPostStore );\n\n\t\treturn {\n\t\t\ttoggleModal: () =>\n\t\t\t\tisModalActive ? closeModal() : openModal( MODAL_NAME ),\n\t\t};\n\t} ),\n] )( KeyboardShortcutHelpModal );\n","/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Button } from '@wordpress/components';\nimport { withSelect } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { ___unstablePreferencesModalBaseOption as BaseOption } from '@wordpress/interface';\n\nexport function CustomFieldsConfirmation( { willEnable } ) {\n\tconst [ isReloading, setIsReloading ] = useState( false );\n\n\treturn (\n\t\t<>\n\t\t\t<p className=\"edit-post-preferences-modal__custom-fields-confirmation-message\">\n\t\t\t\t{ __(\n\t\t\t\t\t'A page reload is required for this change. Make sure your content is saved before reloading.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<Button\n\t\t\t\tclassName=\"edit-post-preferences-modal__custom-fields-confirmation-button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tisBusy={ isReloading }\n\t\t\t\tdisabled={ isReloading }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetIsReloading( true );\n\t\t\t\t\tdocument\n\t\t\t\t\t\t.getElementById( 'toggle-custom-fields-form' )\n\t\t\t\t\t\t.submit();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ willEnable\n\t\t\t\t\t? __( 'Enable & Reload' )\n\t\t\t\t\t: __( 'Disable & Reload' ) }\n\t\t\t</Button>\n\t\t</>\n\t);\n}\n\nexport function EnableCustomFieldsOption( { label, areCustomFieldsEnabled } ) {\n\tconst [ isChecked, setIsChecked ] = useState( areCustomFieldsEnabled );\n\n\treturn (\n\t\t<BaseOption\n\t\t\tlabel={ label }\n\t\t\tisChecked={ isChecked }\n\t\t\tonChange={ setIsChecked }\n\t\t>\n\t\t\t{ isChecked !== areCustomFieldsEnabled && (\n\t\t\t\t<CustomFieldsConfirmation willEnable={ isChecked } />\n\t\t\t) }\n\t\t</BaseOption>\n\t);\n}\n\nexport default withSelect( ( select ) => ( {\n\tareCustomFieldsEnabled:\n\t\t!! select( editorStore ).getEditorSettings().enableCustomFields,\n} ) )( EnableCustomFieldsOption );\n","/**\n * WordPress dependencies\n */\nimport { compose, ifCondition } from '@wordpress/compose';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { ___unstablePreferencesModalBaseOption as BaseOption } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nexport default compose(\n\twithSelect( ( select, { panelName } ) => {\n\t\tconst { isEditorPanelEnabled, isEditorPanelRemoved } =\n\t\t\tselect( editPostStore );\n\t\treturn {\n\t\t\tisRemoved: isEditorPanelRemoved( panelName ),\n\t\t\tisChecked: isEditorPanelEnabled( panelName ),\n\t\t};\n\t} ),\n\tifCondition( ( { isRemoved } ) => ! isRemoved ),\n\twithDispatch( ( dispatch, { panelName } ) => ( {\n\t\tonChange: () =>\n\t\t\tdispatch( editPostStore ).toggleEditorPanelEnabled( panelName ),\n\t} ) )\n)( BaseOption );\n","/**\n * WordPress dependencies\n */\nimport { createSlotFill } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { EnablePanelOption } from './index';\n\nconst { Fill, Slot } = createSlotFill(\n\t'EnablePluginDocumentSettingPanelOption'\n);\n\nconst EnablePluginDocumentSettingPanelOption = ( { label, panelName } ) => (\n\t<Fill>\n\t\t<EnablePanelOption label={ label } panelName={ panelName } />\n\t</Fill>\n);\n\nEnablePluginDocumentSettingPanelOption.Slot = Slot;\n\nexport default EnablePluginDocumentSettingPanelOption;\n","/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { ifViewportMatches } from '@wordpress/viewport';\nimport { store as editorStore } from '@wordpress/editor';\nimport { ___unstablePreferencesModalBaseOption as BaseOption } from '@wordpress/interface';\n\nexport default compose(\n\twithSelect( ( select ) => ( {\n\t\tisChecked: select( editorStore ).isPublishSidebarEnabled(),\n\t} ) ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { enablePublishSidebar, disablePublishSidebar } =\n\t\t\tdispatch( editorStore );\n\t\treturn {\n\t\t\tonChange: ( isEnabled ) =>\n\t\t\t\tisEnabled ? enablePublishSidebar() : disablePublishSidebar(),\n\t\t};\n\t} ),\n\t// In < medium viewports we override this option and always show the publish sidebar.\n\t// See the edit-post's header component for the specific logic.\n\tifViewportMatches( 'medium' )\n)( BaseOption );\n","/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { ___unstablePreferencesModalBaseOption as BaseOption } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nexport default compose(\n\twithSelect( ( select, { featureName } ) => {\n\t\tconst { isFeatureActive } = select( editPostStore );\n\t\treturn {\n\t\t\tisChecked: isFeatureActive( featureName ),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, { featureName } ) => ( {\n\t\tonChange: () => dispatch( editPostStore ).toggleFeature( featureName ),\n\t} ) )\n)( BaseOption );\n","/**\n * External dependencies\n */\nimport { filter, map } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { withSelect } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { PreferencesModalSection } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport { EnableCustomFieldsOption, EnablePanelOption } from './options';\nimport { store as editPostStore } from '../../store';\n\nexport function MetaBoxesSection( {\n\tareCustomFieldsRegistered,\n\tmetaBoxes,\n\t...sectionProps\n} ) {\n\t// The 'Custom Fields' meta box is a special case that we handle separately.\n\tconst thirdPartyMetaBoxes = filter(\n\t\tmetaBoxes,\n\t\t( { id } ) => id !== 'postcustom'\n\t);\n\n\tif ( ! areCustomFieldsRegistered && thirdPartyMetaBoxes.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PreferencesModalSection { ...sectionProps }>\n\t\t\t{ areCustomFieldsRegistered && (\n\t\t\t\t<EnableCustomFieldsOption label={ __( 'Custom fields' ) } />\n\t\t\t) }\n\t\t\t{ map( thirdPartyMetaBoxes, ( { id, title } ) => (\n\t\t\t\t<EnablePanelOption\n\t\t\t\t\tkey={ id }\n\t\t\t\t\tlabel={ title }\n\t\t\t\t\tpanelName={ `meta-box-${ id }` }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</PreferencesModalSection>\n\t);\n}\n\nexport default withSelect( ( select ) => {\n\tconst { getEditorSettings } = select( editorStore );\n\tconst { getAllMetaBoxes } = select( editPostStore );\n\n\treturn {\n\t\t// This setting should not live in the block editor's store.\n\t\tareCustomFieldsRegistered:\n\t\t\tgetEditorSettings().enableCustomFields !== undefined,\n\t\tmetaBoxes: getAllMetaBoxes(),\n\t};\n} )( MetaBoxesSection );\n","/**\n * External dependencies\n */\nimport { partial } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { BlockIcon } from '@wordpress/block-editor';\nimport { CheckboxControl } from '@wordpress/components';\n\nfunction BlockTypesChecklist( { blockTypes, value, onItemChange } ) {\n\treturn (\n\t\t<ul className=\"edit-post-block-manager__checklist\">\n\t\t\t{ blockTypes.map( ( blockType ) => (\n\t\t\t\t<li\n\t\t\t\t\tkey={ blockType.name }\n\t\t\t\t\tclassName=\"edit-post-block-manager__checklist-item\"\n\t\t\t\t>\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{ blockType.title }\n\t\t\t\t\t\t\t\t<BlockIcon icon={ blockType.icon } />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchecked={ value.includes( blockType.name ) }\n\t\t\t\t\t\tonChange={ partial( onItemChange, blockType.name ) }\n\t\t\t\t\t/>\n\t\t\t\t</li>\n\t\t\t) ) }\n\t\t</ul>\n\t);\n}\n\nexport default BlockTypesChecklist;\n","/**\n * External dependencies\n */\nimport { includes, map, without } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo, useCallback } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useInstanceId } from '@wordpress/compose';\nimport { CheckboxControl } from '@wordpress/components';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport BlockTypesChecklist from './checklist';\nimport { store as editPostStore } from '../../store';\n\nfunction BlockManagerCategory( { title, blockTypes } ) {\n\tconst instanceId = useInstanceId( BlockManagerCategory );\n\tconst { defaultAllowedBlockTypes, hiddenBlockTypes } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditorSettings } = select( editorStore );\n\t\t\tconst { getHiddenBlockTypes } = select( editPostStore );\n\t\t\treturn {\n\t\t\t\tdefaultAllowedBlockTypes:\n\t\t\t\t\tgetEditorSettings().defaultAllowedBlockTypes,\n\t\t\t\thiddenBlockTypes: getHiddenBlockTypes(),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst filteredBlockTypes = useMemo( () => {\n\t\tif ( defaultAllowedBlockTypes === true ) {\n\t\t\treturn blockTypes;\n\t\t}\n\t\treturn blockTypes.filter( ( { name } ) => {\n\t\t\treturn includes( defaultAllowedBlockTypes || [], name );\n\t\t} );\n\t}, [ defaultAllowedBlockTypes, blockTypes ] );\n\tconst { showBlockTypes, hideBlockTypes } = useDispatch( editPostStore );\n\tconst toggleVisible = useCallback( ( blockName, nextIsChecked ) => {\n\t\tif ( nextIsChecked ) {\n\t\t\tshowBlockTypes( blockName );\n\t\t} else {\n\t\t\thideBlockTypes( blockName );\n\t\t}\n\t}, [] );\n\tconst toggleAllVisible = useCallback(\n\t\t( nextIsChecked ) => {\n\t\t\tconst blockNames = map( blockTypes, 'name' );\n\t\t\tif ( nextIsChecked ) {\n\t\t\t\tshowBlockTypes( blockNames );\n\t\t\t} else {\n\t\t\t\thideBlockTypes( blockNames );\n\t\t\t}\n\t\t},\n\t\t[ blockTypes ]\n\t);\n\n\tif ( ! filteredBlockTypes.length ) {\n\t\treturn null;\n\t}\n\n\tconst checkedBlockNames = without(\n\t\tmap( filteredBlockTypes, 'name' ),\n\t\t...hiddenBlockTypes\n\t);\n\n\tconst titleId = 'edit-post-block-manager__category-title-' + instanceId;\n\n\tconst isAllChecked = checkedBlockNames.length === filteredBlockTypes.length;\n\n\tlet ariaChecked;\n\tif ( isAllChecked ) {\n\t\tariaChecked = 'true';\n\t} else if ( checkedBlockNames.length > 0 ) {\n\t\tariaChecked = 'mixed';\n\t} else {\n\t\tariaChecked = 'false';\n\t}\n\n\treturn (\n\t\t<div\n\t\t\trole=\"group\"\n\t\t\taria-labelledby={ titleId }\n\t\t\tclassName=\"edit-post-block-manager__category\"\n\t\t>\n\t\t\t<CheckboxControl\n\t\t\t\tchecked={ isAllChecked }\n\t\t\t\tonChange={ toggleAllVisible }\n\t\t\t\tclassName=\"edit-post-block-manager__category-title\"\n\t\t\t\taria-checked={ ariaChecked }\n\t\t\t\tlabel={ <span id={ titleId }>{ title }</span> }\n\t\t\t/>\n\t\t\t<BlockTypesChecklist\n\t\t\t\tblockTypes={ filteredBlockTypes }\n\t\t\t\tvalue={ checkedBlockNames }\n\t\t\t\tonItemChange={ toggleVisible }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default BlockManagerCategory;\n","/**\n * External dependencies\n */\nimport { filter, includes } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { withSelect } from '@wordpress/data';\nimport { SearchControl } from '@wordpress/components';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { useEffect, useState } from '@wordpress/element';\nimport { useDebounce } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport BlockManagerCategory from './category';\nimport { store as editPostStore } from '../../store';\n\nfunction BlockManager( {\n\tblockTypes,\n\tcategories,\n\thasBlockSupport,\n\tisMatchingSearchTerm,\n\tnumberOfHiddenBlocks,\n} ) {\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\tconst [ search, setSearch ] = useState( '' );\n\n\t// Filtering occurs here (as opposed to `withSelect`) to avoid\n\t// wasted renders by consequence of `Array#filter` producing\n\t// a new value reference on each call.\n\tblockTypes = blockTypes.filter(\n\t\t( blockType ) =>\n\t\t\thasBlockSupport( blockType, 'inserter', true ) &&\n\t\t\t( ! search || isMatchingSearchTerm( blockType, search ) ) &&\n\t\t\t( ! blockType.parent ||\n\t\t\t\tincludes( blockType.parent, 'core/post-content' ) )\n\t);\n\n\t// Announce search results on change\n\tuseEffect( () => {\n\t\tif ( ! search ) {\n\t\t\treturn;\n\t\t}\n\t\tconst count = blockTypes.length;\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results. */\n\t\t\t_n( '%d result found.', '%d results found.', count ),\n\t\t\tcount\n\t\t);\n\t\tdebouncedSpeak( resultsFoundMessage );\n\t}, [ blockTypes.length, search, debouncedSpeak ] );\n\n\treturn (\n\t\t<div className=\"edit-post-block-manager__content\">\n\t\t\t{ !! numberOfHiddenBlocks && (\n\t\t\t\t<div className=\"edit-post-block-manager__disabled-blocks-count\">\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t'%d block is hidden.',\n\t\t\t\t\t\t\t'%d blocks are hidden.',\n\t\t\t\t\t\t\tnumberOfHiddenBlocks\n\t\t\t\t\t\t),\n\t\t\t\t\t\tnumberOfHiddenBlocks\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<SearchControl\n\t\t\t\tlabel={ __( 'Search for a block' ) }\n\t\t\t\tplaceholder={ __( 'Search for a block' ) }\n\t\t\t\tvalue={ search }\n\t\t\t\tonChange={ ( nextSearch ) => setSearch( nextSearch ) }\n\t\t\t\tclassName=\"edit-post-block-manager__search\"\n\t\t\t/>\n\t\t\t<div\n\t\t\t\ttabIndex=\"0\"\n\t\t\t\trole=\"region\"\n\t\t\t\taria-label={ __( 'Available block types' ) }\n\t\t\t\tclassName=\"edit-post-block-manager__results\"\n\t\t\t>\n\t\t\t\t{ blockTypes.length === 0 && (\n\t\t\t\t\t<p className=\"edit-post-block-manager__no-results\">\n\t\t\t\t\t\t{ __( 'No blocks found.' ) }\n\t\t\t\t\t</p>\n\t\t\t\t) }\n\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t<BlockManagerCategory\n\t\t\t\t\t\tkey={ category.slug }\n\t\t\t\t\t\ttitle={ category.title }\n\t\t\t\t\t\tblockTypes={ filter( blockTypes, {\n\t\t\t\t\t\t\tcategory: category.slug,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t\t<BlockManagerCategory\n\t\t\t\t\ttitle={ __( 'Uncategorized' ) }\n\t\t\t\t\tblockTypes={ filter(\n\t\t\t\t\t\tblockTypes,\n\t\t\t\t\t\t( { category } ) => ! category\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default withSelect( ( select ) => {\n\tconst {\n\t\tgetBlockTypes,\n\t\tgetCategories,\n\t\thasBlockSupport,\n\t\tisMatchingSearchTerm,\n\t} = select( blocksStore );\n\tconst { getHiddenBlockTypes } = select( editPostStore );\n\n\t// Some hidden blocks become unregistered\n\t// by removing for instance the plugin that registered them, yet\n\t// they're still remain as hidden by the user's action.\n\t// We consider \"hidden\", blocks which were hidden and\n\t// are still registered.\n\tconst blockTypes = getBlockTypes();\n\tconst hiddenBlockTypes = getHiddenBlockTypes().filter( ( hiddenBlock ) => {\n\t\treturn blockTypes.some(\n\t\t\t( registeredBlock ) => registeredBlock.name === hiddenBlock\n\t\t);\n\t} );\n\tconst numberOfHiddenBlocks =\n\t\tArray.isArray( hiddenBlockTypes ) && hiddenBlockTypes.length;\n\n\treturn {\n\t\tblockTypes,\n\t\tcategories: getCategories(),\n\t\thasBlockSupport,\n\t\tisMatchingSearchTerm,\n\t\tnumberOfHiddenBlocks,\n\t};\n} )( BlockManager );\n","/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\n\nimport { __ } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport {\n\tPostTaxonomies,\n\tPostExcerptCheck,\n\tPageAttributesCheck,\n\tPostFeaturedImageCheck,\n\tPostTypeSupportCheck,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport {\n\tPreferencesModal,\n\tPreferencesModalTabs,\n\tPreferencesModalSection,\n} from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\n\nimport {\n\tEnablePluginDocumentSettingPanelOption,\n\tEnablePublishSidebarOption,\n\tEnablePanelOption,\n\tEnableFeature,\n} from './options';\nimport MetaBoxesSection from './meta-boxes-section';\nimport { store as editPostStore } from '../../store';\nimport BlockManager from '../block-manager';\n\nconst MODAL_NAME = 'edit-post/preferences';\n\nexport default function EditPostPreferencesModal() {\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst { closeModal } = useDispatch( editPostStore );\n\tconst isModalActive = useSelect(\n\t\t( select ) => select( editPostStore ).isModalActive( MODAL_NAME ),\n\t\t[]\n\t);\n\tconst showBlockBreadcrumbsOption = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditorSettings } = select( editorStore );\n\t\t\tconst { getEditorMode, isFeatureActive } = select( editPostStore );\n\t\t\tconst mode = getEditorMode();\n\t\t\tconst isRichEditingEnabled = getEditorSettings().richEditingEnabled;\n\t\t\tconst hasReducedUI = isFeatureActive( 'reducedUI' );\n\t\t\treturn (\n\t\t\t\t! hasReducedUI &&\n\t\t\t\tisLargeViewport &&\n\t\t\t\tisRichEditingEnabled &&\n\t\t\t\tmode === 'visual'\n\t\t\t);\n\t\t},\n\t\t[ isLargeViewport ]\n\t);\n\tconst sections = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tname: 'general',\n\t\t\t\ttabLabel: __( 'General' ),\n\t\t\t\tcontent: (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ isLargeViewport && (\n\t\t\t\t\t\t\t<PreferencesModalSection\n\t\t\t\t\t\t\t\ttitle={ __( 'Publishing' ) }\n\t\t\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t\t\t'Change options related to publishing.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<EnablePublishSidebarOption\n\t\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t\t'Review settings, such as visibility and tags.'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tlabel={ __(\n\t\t\t\t\t\t\t\t\t\t'Include pre-publish checklist'\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</PreferencesModalSection>\n\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t<PreferencesModalSection\n\t\t\t\t\t\t\ttitle={ __( 'Appearance' ) }\n\t\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t\t'Customize options related to the block editor interface and editing flow.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<EnableFeature\n\t\t\t\t\t\t\t\tfeatureName=\"focusMode\"\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Highlights the current block and fades other content.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tlabel={ __( 'Spotlight mode' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<EnableFeature\n\t\t\t\t\t\t\t\tfeatureName=\"showIconLabels\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Show button text labels' ) }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Show text instead of icons on buttons.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<EnableFeature\n\t\t\t\t\t\t\t\tfeatureName=\"showListViewByDefault\"\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Opens the block list view sidebar by default.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tlabel={ __( 'Always open list view' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<EnableFeature\n\t\t\t\t\t\t\t\tfeatureName=\"reducedUI\"\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Compacts options and outlines in the toolbar.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tlabel={ __( 'Reduce the interface' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<EnableFeature\n\t\t\t\t\t\t\t\tfeatureName=\"themeStyles\"\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Make the editor look like your theme.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tlabel={ __( 'Use theme styles' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ showBlockBreadcrumbsOption && (\n\t\t\t\t\t\t\t\t<EnableFeature\n\t\t\t\t\t\t\t\t\tfeatureName=\"showBlockBreadcrumbs\"\n\t\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t\t'Shows block breadcrumbs at the bottom of the editor.'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Display block breadcrumbs' ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</PreferencesModalSection>\n\t\t\t\t\t</>\n\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'blocks',\n\t\t\t\ttabLabel: __( 'Blocks' ),\n\t\t\t\tcontent: (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PreferencesModalSection\n\t\t\t\t\t\t\ttitle={ __( 'Block interactions' ) }\n\t\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t\t'Customize how you interact with blocks in the block library and editing canvas.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<EnableFeature\n\t\t\t\t\t\t\t\tfeatureName=\"mostUsedBlocks\"\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Places the most frequent blocks in the block library.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tlabel={ __( 'Show most used blocks' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<EnableFeature\n\t\t\t\t\t\t\t\tfeatureName=\"keepCaretInsideBlock\"\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Aids screen readers by stopping text caret from leaving blocks.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tlabel={ __(\n\t\t\t\t\t\t\t\t\t'Contain text cursor inside block'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PreferencesModalSection>\n\t\t\t\t\t\t<PreferencesModalSection\n\t\t\t\t\t\t\ttitle={ __( 'Visible blocks' ) }\n\t\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t\t\"Disable blocks that you don't want to appear in the inserter. They can always be toggled back on later.\"\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockManager />\n\t\t\t\t\t\t</PreferencesModalSection>\n\t\t\t\t\t</>\n\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'panels',\n\t\t\t\ttabLabel: __( 'Panels' ),\n\t\t\t\tcontent: (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PreferencesModalSection\n\t\t\t\t\t\t\ttitle={ __( 'Document settings' ) }\n\t\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t\t'Choose what displays in the panel.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<EnablePluginDocumentSettingPanelOption.Slot />\n\t\t\t\t\t\t\t<PostTaxonomies\n\t\t\t\t\t\t\t\ttaxonomyWrapper={ ( content, taxonomy ) => (\n\t\t\t\t\t\t\t\t\t<EnablePanelOption\n\t\t\t\t\t\t\t\t\t\tlabel={ get( taxonomy, [\n\t\t\t\t\t\t\t\t\t\t\t'labels',\n\t\t\t\t\t\t\t\t\t\t\t'menu_name',\n\t\t\t\t\t\t\t\t\t\t] ) }\n\t\t\t\t\t\t\t\t\t\tpanelName={ `taxonomy-panel-${ taxonomy.slug }` }\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\t<PostFeaturedImageCheck>\n\t\t\t\t\t\t\t\t<EnablePanelOption\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Featured image' ) }\n\t\t\t\t\t\t\t\t\tpanelName=\"featured-image\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PostFeaturedImageCheck>\n\t\t\t\t\t\t\t<PostExcerptCheck>\n\t\t\t\t\t\t\t\t<EnablePanelOption\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Excerpt' ) }\n\t\t\t\t\t\t\t\t\tpanelName=\"post-excerpt\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PostExcerptCheck>\n\t\t\t\t\t\t\t<PostTypeSupportCheck\n\t\t\t\t\t\t\t\tsupportKeys={ [ 'comments', 'trackbacks' ] }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<EnablePanelOption\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Discussion' ) }\n\t\t\t\t\t\t\t\t\tpanelName=\"discussion-panel\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PostTypeSupportCheck>\n\t\t\t\t\t\t\t<PageAttributesCheck>\n\t\t\t\t\t\t\t\t<EnablePanelOption\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Page attributes' ) }\n\t\t\t\t\t\t\t\t\tpanelName=\"page-attributes\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PageAttributesCheck>\n\t\t\t\t\t\t</PreferencesModalSection>\n\t\t\t\t\t\t<MetaBoxesSection\n\t\t\t\t\t\t\ttitle={ __( 'Additional' ) }\n\t\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t\t'Add extra areas to the editor.'\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),\n\t\t\t},\n\t\t],\n\t\t[ isLargeViewport, showBlockBreadcrumbsOption ]\n\t);\n\n\tif ( ! isModalActive ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PreferencesModal closeModal={ closeModal }>\n\t\t\t<PreferencesModalTabs sections={ sections } />\n\t\t</PreferencesModal>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { withSelect } from '@wordpress/data';\nimport { addQueryArgs } from '@wordpress/url';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Returns the Post's Edit URL.\n *\n * @param {number} postId Post ID.\n *\n * @return {string} Post edit URL.\n */\nexport function getPostEditURL( postId ) {\n\treturn addQueryArgs( 'post.php', { post: postId, action: 'edit' } );\n}\n\n/**\n * Returns the Post's Trashed URL.\n *\n * @param {number} postId Post ID.\n * @param {string} postType Post Type.\n *\n * @return {string} Post trashed URL.\n */\nexport function getPostTrashedURL( postId, postType ) {\n\treturn addQueryArgs( 'edit.php', {\n\t\ttrashed: 1,\n\t\tpost_type: postType,\n\t\tids: postId,\n\t} );\n}\n\nexport class BrowserURL extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.state = {\n\t\t\thistoryId: null,\n\t\t};\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tconst { postId, postStatus, postType, isSavingPost } = this.props;\n\t\tconst { historyId } = this.state;\n\n\t\t// Posts are still dirty while saving so wait for saving to finish\n\t\t// to avoid the unsaved changes warning when trashing posts.\n\t\tif ( postStatus === 'trash' && ! isSavingPost ) {\n\t\t\tthis.setTrashURL( postId, postType );\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\t( postId !== prevProps.postId || postId !== historyId ) &&\n\t\t\tpostStatus !== 'auto-draft' &&\n\t\t\tpostId\n\t\t) {\n\t\t\tthis.setBrowserURL( postId );\n\t\t}\n\t}\n\n\t/**\n\t * Navigates the browser to the post trashed URL to show a notice about the trashed post.\n\t *\n\t * @param {number} postId Post ID.\n\t * @param {string} postType Post Type.\n\t */\n\tsetTrashURL( postId, postType ) {\n\t\twindow.location.href = getPostTrashedURL( postId, postType );\n\t}\n\n\t/**\n\t * Replaces the browser URL with a post editor link for the given post ID.\n\t *\n\t * Note it is important that, since this function may be called when the\n\t * editor first loads, the result generated `getPostEditURL` matches that\n\t * produced by the server. Otherwise, the URL will change unexpectedly.\n\t *\n\t * @param {number} postId Post ID for which to generate post editor URL.\n\t */\n\tsetBrowserURL( postId ) {\n\t\twindow.history.replaceState(\n\t\t\t{ id: postId },\n\t\t\t'Post ' + postId,\n\t\t\tgetPostEditURL( postId )\n\t\t);\n\n\t\tthis.setState( () => ( {\n\t\t\thistoryId: postId,\n\t\t} ) );\n\t}\n\n\trender() {\n\t\treturn null;\n\t}\n}\n\nexport default withSelect( ( select ) => {\n\tconst { getCurrentPost, isSavingPost } = select( editorStore );\n\tconst post = getCurrentPost();\n\tlet { id, status, type } = post;\n\tconst isTemplate = [ 'wp_template', 'wp_template_part' ].includes( type );\n\tif ( isTemplate ) {\n\t\tid = post.wp_id;\n\t}\n\n\treturn {\n\t\tpostId: id,\n\t\tpostStatus: status,\n\t\tpostType: type,\n\t\tisSavingPost: isSavingPost(),\n\t};\n} )( BrowserURL );\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst wordpress = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-2 -2 24 24\">\n\t\t<Path d=\"M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z\" />\n\t</SVG>\n);\n\nexport default wordpress;\n","/**\n * External dependencies\n */\nimport { get } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tButton,\n\tIcon,\n\t__unstableMotion as motion,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { addQueryArgs } from '@wordpress/url';\nimport { wordpress } from '@wordpress/icons';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useReducedMotion } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nfunction FullscreenModeClose( { showTooltip, icon, href } ) {\n\tconst { isActive, isRequestingSiteIcon, postType, siteIconUrl } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPostType } = select( editorStore );\n\t\t\tconst { isFeatureActive } = select( editPostStore );\n\t\t\tconst { getEntityRecord, getPostType, isResolving } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst siteData =\n\t\t\t\tgetEntityRecord( 'root', '__unstableBase', undefined ) || {};\n\n\t\t\treturn {\n\t\t\t\tisActive: isFeatureActive( 'fullscreenMode' ),\n\t\t\t\tisRequestingSiteIcon: isResolving( 'getEntityRecord', [\n\t\t\t\t\t'root',\n\t\t\t\t\t'__unstableBase',\n\t\t\t\t\tundefined,\n\t\t\t\t] ),\n\t\t\t\tpostType: getPostType( getCurrentPostType() ),\n\t\t\t\tsiteIconUrl: siteData.site_icon_url,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst disableMotion = useReducedMotion();\n\n\tif ( ! isActive || ! postType ) {\n\t\treturn null;\n\t}\n\n\tlet buttonIcon = <Icon size=\"36px\" icon={ wordpress } />;\n\n\tconst effect = {\n\t\texpand: {\n\t\t\tscale: 1.25,\n\t\t\ttransition: { type: 'tween', duration: '0.3' },\n\t\t},\n\t};\n\n\tif ( siteIconUrl ) {\n\t\tbuttonIcon = (\n\t\t\t<motion.img\n\t\t\t\tvariants={ ! disableMotion && effect }\n\t\t\t\talt={ __( 'Site Icon' ) }\n\t\t\t\tclassName=\"edit-post-fullscreen-mode-close_site-icon\"\n\t\t\t\tsrc={ siteIconUrl }\n\t\t\t/>\n\t\t);\n\t}\n\n\tif ( isRequestingSiteIcon ) {\n\t\tbuttonIcon = null;\n\t}\n\n\t// Override default icon if custom icon is provided via props.\n\tif ( icon ) {\n\t\tbuttonIcon = <Icon size=\"36px\" icon={ icon } />;\n\t}\n\n\tconst classes = classnames( {\n\t\t'edit-post-fullscreen-mode-close': true,\n\t\t'has-icon': siteIconUrl,\n\t} );\n\n\treturn (\n\t\t<motion.div whileHover=\"expand\">\n\t\t\t<Button\n\t\t\t\tclassName={ classes }\n\t\t\t\thref={\n\t\t\t\t\thref ??\n\t\t\t\t\taddQueryArgs( 'edit.php', {\n\t\t\t\t\t\tpost_type: postType.slug,\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t\tlabel={ get(\n\t\t\t\t\tpostType,\n\t\t\t\t\t[ 'labels', 'view_items' ],\n\t\t\t\t\t__( 'Back' )\n\t\t\t\t) }\n\t\t\t\tshowTooltip={ showTooltip }\n\t\t\t>\n\t\t\t\t{ buttonIcon }\n\t\t\t</Button>\n\t\t</motion.div>\n\t);\n}\n\nexport default FullscreenModeClose;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst listView = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M13.8 5.2H3v1.5h10.8V5.2zm-3.6 12v1.5H21v-1.5H10.2zm7.2-6H6.6v1.5h10.8v-1.5z\" />\n\t</SVG>\n);\n\nexport default listView;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst plus = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18 11.2h-5.2V6h-1.6v5.2H6v1.6h5.2V18h1.6v-5.2H18z\" />\n\t</SVG>\n);\n\nexport default plus;\n","/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\tNavigableToolbar,\n\tToolSelector,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\tTableOfContents,\n\tEditorHistoryRedo,\n\tEditorHistoryUndo,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport { Button, ToolbarItem } from '@wordpress/components';\nimport { listView, plus } from '@wordpress/icons';\nimport { useRef, useCallback } from '@wordpress/element';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nconst preventDefault = ( event ) => {\n\tevent.preventDefault();\n};\n\nfunction HeaderToolbar() {\n\tconst inserterButton = useRef();\n\tconst { setIsInserterOpened, setIsListViewOpened } =\n\t\tuseDispatch( editPostStore );\n\tconst {\n\t\tisInserterEnabled,\n\t\tisInserterOpened,\n\t\tisTextModeEnabled,\n\t\tshowIconLabels,\n\t\tisListViewOpen,\n\t\tlistViewShortcut,\n\t} = useSelect( ( select ) => {\n\t\tconst { hasInserterItems, getBlockRootClientId, getBlockSelectionEnd } =\n\t\t\tselect( blockEditorStore );\n\t\tconst { getEditorSettings } = select( editorStore );\n\t\tconst { getEditorMode, isFeatureActive, isListViewOpened } =\n\t\t\tselect( editPostStore );\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\n\t\treturn {\n\t\t\t// This setting (richEditingEnabled) should not live in the block editor's setting.\n\t\t\tisInserterEnabled:\n\t\t\t\tgetEditorMode() === 'visual' &&\n\t\t\t\tgetEditorSettings().richEditingEnabled &&\n\t\t\t\thasInserterItems(\n\t\t\t\t\tgetBlockRootClientId( getBlockSelectionEnd() )\n\t\t\t\t),\n\t\t\tisInserterOpened: select( editPostStore ).isInserterOpened(),\n\t\t\tisTextModeEnabled: getEditorMode() === 'text',\n\t\t\tshowIconLabels: isFeatureActive( 'showIconLabels' ),\n\t\t\tisListViewOpen: isListViewOpened(),\n\t\t\tlistViewShortcut: getShortcutRepresentation(\n\t\t\t\t'core/edit-post/toggle-list-view'\n\t\t\t),\n\t\t};\n\t}, [] );\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst isWideViewport = useViewportMatch( 'wide' );\n\n\t/* translators: accessibility text for the editor toolbar */\n\tconst toolbarAriaLabel = __( 'Document tools' );\n\n\tconst toggleListView = useCallback(\n\t\t() => setIsListViewOpened( ! isListViewOpen ),\n\t\t[ setIsListViewOpened, isListViewOpen ]\n\t);\n\tconst overflowItems = (\n\t\t<>\n\t\t\t<ToolbarItem\n\t\t\t\tas={ TableOfContents }\n\t\t\t\thasOutlineItemsDisabled={ isTextModeEnabled }\n\t\t\t\trepositionDropdown={ showIconLabels && ! isWideViewport }\n\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t/>\n\t\t\t<ToolbarItem\n\t\t\t\tas={ Button }\n\t\t\t\tclassName=\"edit-post-header-toolbar__list-view-toggle\"\n\t\t\t\ticon={ listView }\n\t\t\t\tdisabled={ isTextModeEnabled }\n\t\t\t\tisPressed={ isListViewOpen }\n\t\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\t\tlabel={ __( 'List View' ) }\n\t\t\t\tonClick={ toggleListView }\n\t\t\t\tshortcut={ listViewShortcut }\n\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t/>\n\t\t</>\n\t);\n\tconst openInserter = useCallback( () => {\n\t\tif ( isInserterOpened ) {\n\t\t\t// Focusing the inserter button closes the inserter popover.\n\t\t\tinserterButton.current.focus();\n\t\t} else {\n\t\t\tsetIsInserterOpened( true );\n\t\t}\n\t}, [ isInserterOpened, setIsInserterOpened ] );\n\n\t/* translators: button label text should, if possible, be under 16 characters. */\n\tconst longLabel = _x(\n\t\t'Toggle block inserter',\n\t\t'Generic label for block inserter button'\n\t);\n\tconst shortLabel = ! isInserterOpened ? __( 'Add' ) : __( 'Close' );\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tclassName=\"edit-post-header-toolbar\"\n\t\t\taria-label={ toolbarAriaLabel }\n\t\t>\n\t\t\t<div className=\"edit-post-header-toolbar__left\">\n\t\t\t\t<ToolbarItem\n\t\t\t\t\tref={ inserterButton }\n\t\t\t\t\tas={ Button }\n\t\t\t\t\tclassName=\"edit-post-header-toolbar__inserter-toggle\"\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tisPressed={ isInserterOpened }\n\t\t\t\t\tonMouseDown={ preventDefault }\n\t\t\t\t\tonClick={ openInserter }\n\t\t\t\t\tdisabled={ ! isInserterEnabled }\n\t\t\t\t\ticon={ plus }\n\t\t\t\t\tlabel={ showIconLabels ? shortLabel : longLabel }\n\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t/>\n\t\t\t\t{ ( isWideViewport || ! showIconLabels ) && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ isLargeViewport && (\n\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\tas={ ToolSelector }\n\t\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tshowIconLabels ? 'tertiary' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdisabled={ isTextModeEnabled }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\tas={ EditorHistoryUndo }\n\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\tas={ EditorHistoryRedo }\n\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ overflowItems }\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</NavigableToolbar>\n\t);\n}\n\nexport default HeaderToolbar;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItemsChoice, MenuGroup } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Set of available mode options.\n *\n * @type {Array}\n */\nconst MODES = [\n\t{\n\t\tvalue: 'visual',\n\t\tlabel: __( 'Visual editor' ),\n\t},\n\t{\n\t\tvalue: 'text',\n\t\tlabel: __( 'Code editor' ),\n\t},\n];\n\nfunction ModeSwitcher() {\n\tconst {\n\t\tshortcut,\n\t\tisRichEditingEnabled,\n\t\tisCodeEditingEnabled,\n\t\tisEditingTemplate,\n\t\tmode,\n\t} = useSelect(\n\t\t( select ) => ( {\n\t\t\tshortcut: select(\n\t\t\t\tkeyboardShortcutsStore\n\t\t\t).getShortcutRepresentation( 'core/edit-post/toggle-mode' ),\n\t\t\tisRichEditingEnabled:\n\t\t\t\tselect( editorStore ).getEditorSettings().richEditingEnabled,\n\t\t\tisCodeEditingEnabled:\n\t\t\t\tselect( editorStore ).getEditorSettings().codeEditingEnabled,\n\t\t\tisEditingTemplate: select( editPostStore ).isEditingTemplate(),\n\t\t\tmode: select( editPostStore ).getEditorMode(),\n\t\t} ),\n\t\t[]\n\t);\n\tconst { switchEditorMode } = useDispatch( editPostStore );\n\n\tif ( isEditingTemplate ) {\n\t\treturn null;\n\t}\n\n\tif ( ! isRichEditingEnabled || ! isCodeEditingEnabled ) {\n\t\treturn null;\n\t}\n\n\tconst choices = MODES.map( ( choice ) => {\n\t\tif ( choice.value !== mode ) {\n\t\t\treturn { ...choice, shortcut };\n\t\t}\n\t\treturn choice;\n\t} );\n\n\treturn (\n\t\t<MenuGroup label={ __( 'Editor' ) }>\n\t\t\t<MenuItemsChoice\n\t\t\t\tchoices={ choices }\n\t\t\t\tvalue={ mode }\n\t\t\t\tonSelect={ switchEditorMode }\n\t\t\t/>\n\t\t</MenuGroup>\n\t);\n}\n\nexport default ModeSwitcher;\n","/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nexport default function PreferencesMenuItem() {\n\tconst { openModal } = useDispatch( editPostStore );\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => {\n\t\t\t\topenModal( 'edit-post/preferences' );\n\t\t\t} }\n\t\t>\n\t\t\t{ __( 'Preferences' ) }\n\t\t</MenuItem>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { MenuGroup } from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { displayShortcut } from '@wordpress/keycodes';\nimport { PreferenceToggleMenuItem } from '@wordpress/preferences';\n\nfunction WritingMenu() {\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tif ( ! isLargeViewport ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<MenuGroup label={ _x( 'View', 'noun' ) }>\n\t\t\t<PreferenceToggleMenuItem\n\t\t\t\tscope=\"core/edit-post\"\n\t\t\t\tname=\"fixedToolbar\"\n\t\t\t\tlabel={ __( 'Top toolbar' ) }\n\t\t\t\tinfo={ __(\n\t\t\t\t\t'Access all block and document tools in a single place'\n\t\t\t\t) }\n\t\t\t\tmessageActivated={ __( 'Top toolbar activated' ) }\n\t\t\t\tmessageDeactivated={ __( 'Top toolbar deactivated' ) }\n\t\t\t/>\n\t\t\t<PreferenceToggleMenuItem\n\t\t\t\tscope=\"core/edit-post\"\n\t\t\t\tname=\"focusMode\"\n\t\t\t\tlabel={ __( 'Spotlight mode' ) }\n\t\t\t\tinfo={ __( 'Focus on one block at a time' ) }\n\t\t\t\tmessageActivated={ __( 'Spotlight mode activated' ) }\n\t\t\t\tmessageDeactivated={ __( 'Spotlight mode deactivated' ) }\n\t\t\t/>\n\t\t\t<PreferenceToggleMenuItem\n\t\t\t\tscope=\"core/edit-post\"\n\t\t\t\tname=\"fullscreenMode\"\n\t\t\t\tlabel={ __( 'Fullscreen mode' ) }\n\t\t\t\tinfo={ __( 'Work without distraction' ) }\n\t\t\t\tmessageActivated={ __( 'Fullscreen mode activated' ) }\n\t\t\t\tmessageDeactivated={ __( 'Fullscreen mode deactivated' ) }\n\t\t\t\tshortcut={ displayShortcut.secondary( 'f' ) }\n\t\t\t/>\n\t\t</MenuGroup>\n\t);\n}\n\nexport default WritingMenu;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuGroup } from '@wordpress/components';\nimport {\n\tActionItem,\n\tMoreMenuDropdown,\n\tPinnedItems,\n} from '@wordpress/interface';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport ModeSwitcher from '../mode-switcher';\nimport PreferencesMenuItem from '../preferences-menu-item';\nimport ToolsMoreMenuGroup from '../tools-more-menu-group';\nimport WritingMenu from '../writing-menu';\n\nconst MoreMenu = ( { showIconLabels } ) => {\n\tconst isLargeViewport = useViewportMatch( 'large' );\n\n\treturn (\n\t\t<MoreMenuDropdown\n\t\t\ttoggleProps={ {\n\t\t\t\tshowTooltip: ! showIconLabels,\n\t\t\t\t...( showIconLabels && { variant: 'tertiary' } ),\n\t\t\t} }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t{ showIconLabels && ! isLargeViewport && (\n\t\t\t\t\t\t<PinnedItems.Slot\n\t\t\t\t\t\t\tclassName={ showIconLabels && 'show-icon-labels' }\n\t\t\t\t\t\t\tscope=\"core/edit-post\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<WritingMenu />\n\t\t\t\t\t<ModeSwitcher />\n\t\t\t\t\t<ActionItem.Slot\n\t\t\t\t\t\tname=\"core/edit-post/plugin-more-menu\"\n\t\t\t\t\t\tlabel={ __( 'Plugins' ) }\n\t\t\t\t\t\tas={ MenuGroup }\n\t\t\t\t\t\tfillProps={ { onClick: onClose } }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToolsMoreMenuGroup.Slot fillProps={ { onClose } } />\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<PreferencesMenuItem />\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</MoreMenuDropdown>\n\t);\n};\n\nexport default MoreMenu;\n","/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useViewportMatch, compose } from '@wordpress/compose';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { PostPublishButton, store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nexport function PostPublishButtonOrToggle( {\n\tforceIsDirty,\n\tforceIsSaving,\n\thasPublishAction,\n\tisBeingScheduled,\n\tisPending,\n\tisPublished,\n\tisPublishSidebarEnabled,\n\tisPublishSidebarOpened,\n\tisScheduled,\n\ttogglePublishSidebar,\n\tsetEntitiesSavedStatesCallback,\n} ) {\n\tconst IS_TOGGLE = 'toggle';\n\tconst IS_BUTTON = 'button';\n\tconst isSmallerThanMediumViewport = useViewportMatch( 'medium', '<' );\n\tlet component;\n\n\t/**\n\t * Conditions to show a BUTTON (publish directly) or a TOGGLE (open publish sidebar):\n\t *\n\t * 1) We want to show a BUTTON when the post status is at the _final stage_\n\t * for a particular role (see https://wordpress.org/support/article/post-status/):\n\t *\n\t * - is published\n\t * - is scheduled to be published\n\t * - is pending and can't be published (but only for viewports >= medium).\n\t * \t Originally, we considered showing a button for pending posts that couldn't be published\n\t * \t (for example, for an author with the contributor role). Some languages can have\n\t * \t long translations for \"Submit for review\", so given the lack of UI real estate available\n\t * \t we decided to take into account the viewport in that case.\n\t * \t See: https://github.com/WordPress/gutenberg/issues/10475\n\t *\n\t * 2) Then, in small viewports, we'll show a TOGGLE.\n\t *\n\t * 3) Finally, we'll use the publish sidebar status to decide:\n\t *\n\t * - if it is enabled, we show a TOGGLE\n\t * - if it is disabled, we show a BUTTON\n\t */\n\tif (\n\t\tisPublished ||\n\t\t( isScheduled && isBeingScheduled ) ||\n\t\t( isPending && ! hasPublishAction && ! isSmallerThanMediumViewport )\n\t) {\n\t\tcomponent = IS_BUTTON;\n\t} else if ( isSmallerThanMediumViewport ) {\n\t\tcomponent = IS_TOGGLE;\n\t} else if ( isPublishSidebarEnabled ) {\n\t\tcomponent = IS_TOGGLE;\n\t} else {\n\t\tcomponent = IS_BUTTON;\n\t}\n\n\treturn (\n\t\t<PostPublishButton\n\t\t\tforceIsDirty={ forceIsDirty }\n\t\t\tforceIsSaving={ forceIsSaving }\n\t\t\tisOpen={ isPublishSidebarOpened }\n\t\t\tisToggle={ component === IS_TOGGLE }\n\t\t\tonToggle={ togglePublishSidebar }\n\t\t\tsetEntitiesSavedStatesCallback={ setEntitiesSavedStatesCallback }\n\t\t/>\n\t);\n}\n\nexport default compose(\n\twithSelect( ( select ) => ( {\n\t\thasPublishAction: get(\n\t\t\tselect( editorStore ).getCurrentPost(),\n\t\t\t[ '_links', 'wp:action-publish' ],\n\t\t\tfalse\n\t\t),\n\t\tisBeingScheduled: select( editorStore ).isEditedPostBeingScheduled(),\n\t\tisPending: select( editorStore ).isCurrentPostPending(),\n\t\tisPublished: select( editorStore ).isCurrentPostPublished(),\n\t\tisPublishSidebarEnabled:\n\t\t\tselect( editorStore ).isPublishSidebarEnabled(),\n\t\tisPublishSidebarOpened:\n\t\t\tselect( editPostStore ).isPublishSidebarOpened(),\n\t\tisScheduled: select( editorStore ).isCurrentPostScheduled(),\n\t} ) ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { togglePublishSidebar } = dispatch( editPostStore );\n\t\treturn {\n\t\t\ttogglePublishSidebar,\n\t\t};\n\t} )\n)( PostPublishButtonOrToggle );\n","/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Icon, MenuGroup } from '@wordpress/components';\nimport { PostPreviewButton, store as editorStore } from '@wordpress/editor';\nimport { external } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport { __experimentalPreviewOptions as PreviewOptions } from '@wordpress/block-editor';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nexport default function DevicePreview() {\n\tconst {\n\t\thasActiveMetaboxes,\n\t\tisPostSaveable,\n\t\tisSaving,\n\t\tisViewable,\n\t\tdeviceType,\n\t} = useSelect( ( select ) => {\n\t\tconst { getEditedPostAttribute } = select( editorStore );\n\t\tconst { getPostType } = select( coreStore );\n\t\tconst postType = getPostType( getEditedPostAttribute( 'type' ) );\n\n\t\treturn {\n\t\t\thasActiveMetaboxes: select( editPostStore ).hasMetaBoxes(),\n\t\t\tisSaving: select( editPostStore ).isSavingMetaBoxes(),\n\t\t\tisPostSaveable: select( editorStore ).isEditedPostSaveable(),\n\t\t\tisViewable: get( postType, [ 'viewable' ], false ),\n\t\t\tdeviceType:\n\t\t\t\tselect( editPostStore ).__experimentalGetPreviewDeviceType(),\n\t\t};\n\t}, [] );\n\tconst { __experimentalSetPreviewDeviceType: setPreviewDeviceType } =\n\t\tuseDispatch( editPostStore );\n\n\treturn (\n\t\t<PreviewOptions\n\t\t\tisEnabled={ isPostSaveable }\n\t\t\tclassName=\"edit-post-post-preview-dropdown\"\n\t\t\tdeviceType={ deviceType }\n\t\t\tsetDeviceType={ setPreviewDeviceType }\n\t\t>\n\t\t\t{ isViewable && (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<div className=\"edit-post-header-preview__grouping-external\">\n\t\t\t\t\t\t<PostPreviewButton\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t'edit-post-header-preview__button-external'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\t\tforceIsAutosaveable={ hasActiveMetaboxes }\n\t\t\t\t\t\t\tforcePreviewLink={ isSaving ? null : undefined }\n\t\t\t\t\t\t\ttextContent={\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{ __( 'Preview in new tab' ) }\n\t\t\t\t\t\t\t\t\t<Icon icon={ external } />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</PreviewOptions>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalUseSlot as useSlot,\n\tcreateSlotFill,\n} from '@wordpress/components';\n\nconst slotName = '__experimentalMainDashboardButton';\n\nconst { Fill, Slot: MainDashboardButtonSlot } = createSlotFill( slotName );\n\nconst MainDashboardButton = Fill;\n\nconst Slot = ( { children } ) => {\n\tconst slot = useSlot( slotName );\n\tconst hasFills = Boolean( slot.fills && slot.fills.length );\n\n\tif ( ! hasFills ) {\n\t\treturn children;\n\t}\n\n\treturn <MainDashboardButtonSlot bubblesVirtually />;\n};\n\nMainDashboardButton.Slot = Slot;\n\nexport default MainDashboardButton;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst chevronDown = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z\" />\n\t</SVG>\n);\n\nexport default chevronDown;\n","/**\n * External dependencies\n */\nimport { pickBy } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tMenuGroup,\n\tMenuItem,\n\t__experimentalConfirmDialog as ConfirmDialog,\n} from '@wordpress/components';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nexport default function DeleteTemplate() {\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst { setIsEditingTemplate } = useDispatch( editPostStore );\n\tconst { getEditorSettings } = useSelect( editorStore );\n\tconst { updateEditorSettings, editPost } = useDispatch( editorStore );\n\tconst { deleteEntityRecord } = useDispatch( coreStore );\n\tconst { template } = useSelect( ( select ) => {\n\t\tconst { isEditingTemplate, getEditedPostTemplate } =\n\t\t\tselect( editPostStore );\n\t\tconst _isEditing = isEditingTemplate();\n\t\treturn {\n\t\t\ttemplate: _isEditing ? getEditedPostTemplate() : null,\n\t\t};\n\t}, [] );\n\tconst [ showConfirmDialog, setShowConfirmDialog ] = useState( false );\n\n\tif ( ! template || ! template.wp_id ) {\n\t\treturn null;\n\t}\n\tlet templateTitle = template.slug;\n\tif ( template?.title ) {\n\t\ttemplateTitle = template.title;\n\t}\n\n\tconst isRevertable = template?.has_theme_file;\n\n\tconst onDelete = () => {\n\t\tclearSelectedBlock();\n\t\tsetIsEditingTemplate( false );\n\t\tsetShowConfirmDialog( false );\n\n\t\teditPost( {\n\t\t\ttemplate: '',\n\t\t} );\n\t\tconst settings = getEditorSettings();\n\t\tconst newAvailableTemplates = pickBy(\n\t\t\tsettings.availableTemplates,\n\t\t\t( _title, id ) => {\n\t\t\t\treturn id !== template.slug;\n\t\t\t}\n\t\t);\n\t\tupdateEditorSettings( {\n\t\t\t...settings,\n\t\t\tavailableTemplates: newAvailableTemplates,\n\t\t} );\n\t\tdeleteEntityRecord( 'postType', 'wp_template', template.id, {\n\t\t\tthrowOnError: true,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<MenuGroup className=\"edit-post-template-top-area__second-menu-group\">\n\t\t\t<>\n\t\t\t\t<MenuItem\n\t\t\t\t\tclassName=\"edit-post-template-top-area__delete-template-button\"\n\t\t\t\t\tisDestructive={ ! isRevertable }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tsetShowConfirmDialog( true );\n\t\t\t\t\t} }\n\t\t\t\t\tinfo={\n\t\t\t\t\t\tisRevertable\n\t\t\t\t\t\t\t? __( 'Use the template as supplied by the theme.' )\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ isRevertable\n\t\t\t\t\t\t? __( 'Clear customizations' )\n\t\t\t\t\t\t: __( 'Delete template' ) }\n\t\t\t\t</MenuItem>\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tisOpen={ showConfirmDialog }\n\t\t\t\t\tonConfirm={ onDelete }\n\t\t\t\t\tonCancel={ () => {\n\t\t\t\t\t\tsetShowConfirmDialog( false );\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %s: template name */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Are you sure you want to delete the %s template? It may be used by other pages or posts.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttemplateTitle\n\t\t\t\t\t) }\n\t\t\t\t</ConfirmDialog>\n\t\t\t</>\n\t\t</MenuGroup>\n\t);\n}\n","/**\n * External dependencies\n */\nimport { mapValues } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { TextControl } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nexport default function EditTemplateTitle() {\n\tconst [ forceEmpty, setForceEmpty ] = useState( false );\n\tconst { template } = useSelect( ( select ) => {\n\t\tconst { getEditedPostTemplate } = select( editPostStore );\n\t\treturn {\n\t\t\ttemplate: getEditedPostTemplate(),\n\t\t};\n\t}, [] );\n\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\tconst { getEditorSettings } = useSelect( editorStore );\n\tconst { updateEditorSettings } = useDispatch( editorStore );\n\n\t// Only user-created and non-default templates can change the name.\n\tif ( ! template.is_custom || template.has_theme_file ) {\n\t\treturn null;\n\t}\n\n\tlet templateTitle = __( 'Default' );\n\tif ( template?.title ) {\n\t\ttemplateTitle = template.title;\n\t} else if ( !! template ) {\n\t\ttemplateTitle = template.slug;\n\t}\n\n\treturn (\n\t\t<div className=\"edit-site-template-details__group\">\n\t\t\t<TextControl\n\t\t\t\tlabel={ __( 'Title' ) }\n\t\t\t\tvalue={ forceEmpty ? '' : templateTitle }\n\t\t\t\thelp={ __(\n\t\t\t\t\t'Give the template a title that indicates its purpose, e.g. \"Full Width\".'\n\t\t\t\t) }\n\t\t\t\tonChange={ ( newTitle ) => {\n\t\t\t\t\t// Allow having the field temporarily empty while typing.\n\t\t\t\t\tif ( ! newTitle && ! forceEmpty ) {\n\t\t\t\t\t\tsetForceEmpty( true );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsetForceEmpty( false );\n\n\t\t\t\t\tconst settings = getEditorSettings();\n\t\t\t\t\tconst newAvailableTemplates = mapValues(\n\t\t\t\t\t\tsettings.availableTemplates,\n\t\t\t\t\t\t( existingTitle, id ) => {\n\t\t\t\t\t\t\tif ( id !== template.slug ) {\n\t\t\t\t\t\t\t\treturn existingTitle;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn newTitle;\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\tupdateEditorSettings( {\n\t\t\t\t\t\t...settings,\n\t\t\t\t\t\tavailableTemplates: newAvailableTemplates,\n\t\t\t\t\t} );\n\t\t\t\t\teditEntityRecord( 'postType', 'wp_template', template.id, {\n\t\t\t\t\t\ttitle: newTitle,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tonBlur={ () => setForceEmpty( false ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nexport default function TemplateDescription() {\n\tconst { description, title } = useSelect( ( select ) => {\n\t\tconst { getEditedPostTemplate } = select( editPostStore );\n\t\treturn {\n\t\t\ttitle: getEditedPostTemplate().title,\n\t\t\tdescription: getEditedPostTemplate().description,\n\t\t};\n\t}, [] );\n\tif ( ! description ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"edit-site-template-details__group\">\n\t\t\t<Heading level={ 4 } weight={ 600 }>\n\t\t\t\t{ title }\n\t\t\t</Heading>\n\t\t\t<Text\n\t\t\t\tclassName=\"edit-post-template-details__description\"\n\t\t\t\tsize=\"body\"\n\t\t\t\tas=\"p\"\n\t\t\t\tstyle={ { marginTop: '12px' } }\n\t\t\t>\n\t\t\t\t{ description }\n\t\t\t</Text>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tDropdown,\n\tButton,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { chevronDown } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as editorStore } from '@wordpress/editor';\nimport DeleteTemplate from './delete-template';\nimport EditTemplateTitle from './edit-template-title';\nimport TemplateDescription from './template-description';\n\nfunction TemplateTitle() {\n\tconst { template, isEditing, title } = useSelect( ( select ) => {\n\t\tconst { isEditingTemplate, getEditedPostTemplate } =\n\t\t\tselect( editPostStore );\n\t\tconst { getEditedPostAttribute } = select( editorStore );\n\n\t\tconst _isEditing = isEditingTemplate();\n\n\t\treturn {\n\t\t\ttemplate: _isEditing ? getEditedPostTemplate() : null,\n\t\t\tisEditing: _isEditing,\n\t\t\ttitle: getEditedPostAttribute( 'title' )\n\t\t\t\t? getEditedPostAttribute( 'title' )\n\t\t\t\t: __( 'Untitled' ),\n\t\t};\n\t}, [] );\n\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst { setIsEditingTemplate } = useDispatch( editPostStore );\n\n\tif ( ! isEditing || ! template ) {\n\t\treturn null;\n\t}\n\n\tlet templateTitle = __( 'Default' );\n\tif ( template?.title ) {\n\t\ttemplateTitle = template.title;\n\t} else if ( !! template ) {\n\t\ttemplateTitle = template.slug;\n\t}\n\n\tconst hasOptions = !! (\n\t\ttemplate.custom ||\n\t\ttemplate.wp_id ||\n\t\ttemplate.description\n\t);\n\n\treturn (\n\t\t<div className=\"edit-post-template-top-area\">\n\t\t\t<Button\n\t\t\t\tclassName=\"edit-post-template-post-title\"\n\t\t\t\tisLink\n\t\t\t\tshowTooltip\n\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t/* translators: %s: Title of the referring post, e.g: \"Hello World!\" */\n\t\t\t\t\t__( 'Edit %s' ),\n\t\t\t\t\ttitle\n\t\t\t\t) }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\tsetIsEditingTemplate( false );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ title }\n\t\t\t</Button>\n\t\t\t{ hasOptions ? (\n\t\t\t\t<Dropdown\n\t\t\t\t\tposition=\"bottom center\"\n\t\t\t\t\tcontentClassName=\"edit-post-template-top-area__popover\"\n\t\t\t\t\trenderToggle={ ( { onToggle } ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"edit-post-template-title\"\n\t\t\t\t\t\t\tisLink\n\t\t\t\t\t\t\ticon={ chevronDown }\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\tlabel={ __( 'Template Options' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ templateTitle }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t\trenderContent={ () => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<EditTemplateTitle />\n\t\t\t\t\t\t\t<TemplateDescription />\n\t\t\t\t\t\t\t<DeleteTemplate />\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<Text\n\t\t\t\t\tclassName=\"edit-post-template-title\"\n\t\t\t\t\tsize=\"body\"\n\t\t\t\t\tstyle={ { lineHeight: '24px' } }\n\t\t\t\t>\n\t\t\t\t\t{ templateTitle }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default TemplateTitle;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { PostSavedState, PostPreviewButton } from '@wordpress/editor';\nimport { useSelect } from '@wordpress/data';\nimport { PinnedItems } from '@wordpress/interface';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport FullscreenModeClose from './fullscreen-mode-close';\nimport HeaderToolbar from './header-toolbar';\nimport MoreMenu from './more-menu';\nimport PostPublishButtonOrToggle from './post-publish-button-or-toggle';\nimport { default as DevicePreview } from '../device-preview';\nimport MainDashboardButton from './main-dashboard-button';\nimport { store as editPostStore } from '../../store';\nimport TemplateTitle from './template-title';\n\nfunction Header( { setEntitiesSavedStatesCallback } ) {\n\tconst {\n\t\thasActiveMetaboxes,\n\t\tisPublishSidebarOpened,\n\t\tisSaving,\n\t\tshowIconLabels,\n\t\thasReducedUI,\n\t} = useSelect(\n\t\t( select ) => ( {\n\t\t\thasActiveMetaboxes: select( editPostStore ).hasMetaBoxes(),\n\t\t\tisPublishSidebarOpened:\n\t\t\t\tselect( editPostStore ).isPublishSidebarOpened(),\n\t\t\tisSaving: select( editPostStore ).isSavingMetaBoxes(),\n\t\t\tshowIconLabels:\n\t\t\t\tselect( editPostStore ).isFeatureActive( 'showIconLabels' ),\n\t\t\thasReducedUI:\n\t\t\t\tselect( editPostStore ).isFeatureActive( 'reducedUI' ),\n\t\t} ),\n\t\t[]\n\t);\n\n\tconst isLargeViewport = useViewportMatch( 'large' );\n\n\tconst classes = classnames( 'edit-post-header', {\n\t\t'has-reduced-ui': hasReducedUI,\n\t} );\n\n\treturn (\n\t\t<div className={ classes }>\n\t\t\t<MainDashboardButton.Slot>\n\t\t\t\t<FullscreenModeClose showTooltip />\n\t\t\t</MainDashboardButton.Slot>\n\t\t\t<div className=\"edit-post-header__toolbar\">\n\t\t\t\t<HeaderToolbar />\n\t\t\t\t<TemplateTitle />\n\t\t\t</div>\n\t\t\t<div className=\"edit-post-header__settings\">\n\t\t\t\t{ ! isPublishSidebarOpened && (\n\t\t\t\t\t// This button isn't completely hidden by the publish sidebar.\n\t\t\t\t\t// We can't hide the whole toolbar when the publish sidebar is open because\n\t\t\t\t\t// we want to prevent mounting/unmounting the PostPublishButtonOrToggle DOM node.\n\t\t\t\t\t// We track that DOM node to return focus to the PostPublishButtonOrToggle\n\t\t\t\t\t// when the publish sidebar has been closed.\n\t\t\t\t\t<PostSavedState\n\t\t\t\t\t\tforceIsDirty={ hasActiveMetaboxes }\n\t\t\t\t\t\tforceIsSaving={ isSaving }\n\t\t\t\t\t\tshowIconLabels={ showIconLabels }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<DevicePreview />\n\t\t\t\t<PostPreviewButton\n\t\t\t\t\tforceIsAutosaveable={ hasActiveMetaboxes }\n\t\t\t\t\tforcePreviewLink={ isSaving ? null : undefined }\n\t\t\t\t/>\n\t\t\t\t<PostPublishButtonOrToggle\n\t\t\t\t\tforceIsDirty={ hasActiveMetaboxes }\n\t\t\t\t\tforceIsSaving={ isSaving }\n\t\t\t\t\tsetEntitiesSavedStatesCallback={\n\t\t\t\t\t\tsetEntitiesSavedStatesCallback\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t{ ( isLargeViewport || ! showIconLabels ) && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PinnedItems.Slot scope=\"core/edit-post\" />\n\t\t\t\t\t\t<MoreMenu showIconLabels={ showIconLabels } />\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t{ showIconLabels && ! isLargeViewport && (\n\t\t\t\t\t<MoreMenu showIconLabels={ showIconLabels } />\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default Header;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst close = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z\" />\n\t</SVG>\n);\n\nexport default close;\n","/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { Button, VisuallyHidden } from '@wordpress/components';\nimport { __experimentalLibrary as Library } from '@wordpress/block-editor';\nimport { close } from '@wordpress/icons';\nimport {\n\tuseViewportMatch,\n\t__experimentalUseDialog as useDialog,\n} from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nexport default function InserterSidebar() {\n\tconst { insertionPoint, showMostUsedBlocks } = useSelect( ( select ) => {\n\t\tconst { isFeatureActive, __experimentalGetInsertionPoint } =\n\t\t\tselect( editPostStore );\n\t\treturn {\n\t\t\tinsertionPoint: __experimentalGetInsertionPoint(),\n\t\t\tshowMostUsedBlocks: isFeatureActive( 'mostUsedBlocks' ),\n\t\t};\n\t}, [] );\n\tconst { setIsInserterOpened } = useDispatch( editPostStore );\n\n\tconst isMobileViewport = useViewportMatch( 'medium', '<' );\n\tconst TagName = ! isMobileViewport ? VisuallyHidden : 'div';\n\tconst [ inserterDialogRef, inserterDialogProps ] = useDialog( {\n\t\tonClose: () => setIsInserterOpened( false ),\n\t\tfocusOnMount: null,\n\t} );\n\n\tconst libraryRef = useRef();\n\tuseEffect( () => {\n\t\tlibraryRef.current.focusSearch();\n\t}, [] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ inserterDialogRef }\n\t\t\t{ ...inserterDialogProps }\n\t\t\tclassName=\"edit-post-editor__inserter-panel\"\n\t\t>\n\t\t\t<TagName className=\"edit-post-editor__inserter-panel-header\">\n\t\t\t\t<Button\n\t\t\t\t\ticon={ close }\n\t\t\t\t\tlabel={ __( 'Close block inserter' ) }\n\t\t\t\t\tonClick={ () => setIsInserterOpened( false ) }\n\t\t\t\t/>\n\t\t\t</TagName>\n\t\t\t<div className=\"edit-post-editor__inserter-panel-content\">\n\t\t\t\t<Library\n\t\t\t\t\tshowMostUsedBlocks={ showMostUsedBlocks }\n\t\t\t\t\tshowInserterHelpPanel\n\t\t\t\t\tshouldFocusBlock={ isMobileViewport }\n\t\t\t\t\trootClientId={ insertionPoint.rootClientId }\n\t\t\t\t\t__experimentalInsertionIndex={\n\t\t\t\t\t\tinsertionPoint.insertionIndex\n\t\t\t\t\t}\n\t\t\t\t\t__experimentalFilterValue={ insertionPoint.filterValue }\n\t\t\t\t\tref={ libraryRef }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { __experimentalListView as ListView } from '@wordpress/block-editor';\nimport { Button } from '@wordpress/components';\nimport {\n\tuseFocusOnMount,\n\tuseFocusReturn,\n\tuseInstanceId,\n\tuseMergeRefs,\n} from '@wordpress/compose';\nimport { useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { closeSmall } from '@wordpress/icons';\nimport { ESCAPE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nexport default function ListViewSidebar() {\n\tconst { setIsListViewOpened } = useDispatch( editPostStore );\n\n\tconst focusOnMountRef = useFocusOnMount( 'firstElement' );\n\tconst headerFocusReturnRef = useFocusReturn();\n\tconst contentFocusReturnRef = useFocusReturn();\n\tfunction closeOnEscape( event ) {\n\t\tif ( event.keyCode === ESCAPE && ! event.defaultPrevented ) {\n\t\t\tevent.preventDefault();\n\t\t\tsetIsListViewOpened( false );\n\t\t}\n\t}\n\n\tconst instanceId = useInstanceId( ListViewSidebar );\n\tconst labelId = `edit-post-editor__list-view-panel-label-${ instanceId }`;\n\n\treturn (\n\t\t// eslint-disable-next-line jsx-a11y/no-static-element-interactions\n\t\t<div\n\t\t\taria-labelledby={ labelId }\n\t\t\tclassName=\"edit-post-editor__list-view-panel\"\n\t\t\tonKeyDown={ closeOnEscape }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"edit-post-editor__list-view-panel-header\"\n\t\t\t\tref={ headerFocusReturnRef }\n\t\t\t>\n\t\t\t\t<strong id={ labelId }>{ __( 'List View' ) }</strong>\n\t\t\t\t<Button\n\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\tlabel={ __( 'Close List View Sidebar' ) }\n\t\t\t\t\tonClick={ () => setIsListViewOpened( false ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclassName=\"edit-post-editor__list-view-panel-content\"\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tcontentFocusReturnRef,\n\t\t\t\t\tfocusOnMountRef,\n\t\t\t\t] ) }\n\t\t\t>\n\t\t\t\t<ListView />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst cog = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\td=\"M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z\"\n\t\t\tclipRule=\"evenodd\"\n\t\t/>\n\t</SVG>\n);\n\nexport default cog;\n","/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nconst SettingsHeader = ( { sidebarName } ) => {\n\tconst { openGeneralSidebar } = useDispatch( editPostStore );\n\tconst openDocumentSettings = () =>\n\t\topenGeneralSidebar( 'edit-post/document' );\n\tconst openBlockSettings = () => openGeneralSidebar( 'edit-post/block' );\n\n\tconst { documentLabel, isTemplateMode } = useSelect( ( select ) => {\n\t\tconst postTypeLabel = select( editorStore ).getPostTypeLabel();\n\n\t\treturn {\n\t\t\t// translators: Default label for the Document sidebar tab, not selected.\n\t\t\tdocumentLabel: postTypeLabel || _x( 'Document', 'noun' ),\n\t\t\tisTemplateMode: select( editPostStore ).isEditingTemplate(),\n\t\t};\n\t}, [] );\n\n\tconst [ documentAriaLabel, documentActiveClass ] =\n\t\tsidebarName === 'edit-post/document'\n\t\t\t? // translators: ARIA label for the Document sidebar tab, selected. %s: Document label.\n\t\t\t [ sprintf( __( '%s (selected)' ), documentLabel ), 'is-active' ]\n\t\t\t: [ documentLabel, '' ];\n\n\tconst [ blockAriaLabel, blockActiveClass ] =\n\t\tsidebarName === 'edit-post/block'\n\t\t\t? // translators: ARIA label for the Block Settings Sidebar tab, selected.\n\t\t\t [ __( 'Block (selected)' ), 'is-active' ]\n\t\t\t: // translators: ARIA label for the Block Settings Sidebar tab, not selected.\n\t\t\t [ __( 'Block' ), '' ];\n\n\tconst [ templateAriaLabel, templateActiveClass ] =\n\t\tsidebarName === 'edit-post/document'\n\t\t\t? [ __( 'Template (selected)' ), 'is-active' ]\n\t\t\t: [ __( 'Template' ), '' ];\n\n\t/* Use a list so screen readers will announce how many tabs there are. */\n\treturn (\n\t\t<ul>\n\t\t\t{ ! isTemplateMode && (\n\t\t\t\t<li>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ openDocumentSettings }\n\t\t\t\t\t\tclassName={ `edit-post-sidebar__panel-tab ${ documentActiveClass }` }\n\t\t\t\t\t\taria-label={ documentAriaLabel }\n\t\t\t\t\t\tdata-label={ documentLabel }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ documentLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</li>\n\t\t\t) }\n\t\t\t{ isTemplateMode && (\n\t\t\t\t<li>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ openDocumentSettings }\n\t\t\t\t\t\tclassName={ `edit-post-sidebar__panel-tab ${ templateActiveClass }` }\n\t\t\t\t\t\taria-label={ templateAriaLabel }\n\t\t\t\t\t\tdata-label={ __( 'Template' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Template' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</li>\n\t\t\t) }\n\t\t\t<li>\n\t\t\t\t<Button\n\t\t\t\t\tonClick={ openBlockSettings }\n\t\t\t\t\tclassName={ `edit-post-sidebar__panel-tab ${ blockActiveClass }` }\n\t\t\t\t\taria-label={ blockAriaLabel }\n\t\t\t\t\t// translators: Data label for the Block Settings Sidebar tab.\n\t\t\t\t\tdata-label={ __( 'Block' ) }\n\t\t\t\t>\n\t\t\t\t\t{\n\t\t\t\t\t\t// translators: Text label for the Block Settings Sidebar tab.\n\t\t\t\t\t\t__( 'Block' )\n\t\t\t\t\t}\n\t\t\t\t</Button>\n\t\t\t</li>\n\t\t</ul>\n\t);\n};\n\nexport default SettingsHeader;\n","/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { PanelRow, Dropdown, Button } from '@wordpress/components';\nimport {\n\tPostVisibility as PostVisibilityForm,\n\tPostVisibilityLabel,\n\tPostVisibilityCheck,\n\tusePostVisibilityLabel,\n} from '@wordpress/editor';\nimport { useRef } from '@wordpress/element';\n\nexport function PostVisibility() {\n\tconst rowRef = useRef();\n\treturn (\n\t\t<PostVisibilityCheck\n\t\t\trender={ ( { canEdit } ) => (\n\t\t\t\t<PanelRow ref={ rowRef } className=\"edit-post-post-visibility\">\n\t\t\t\t\t<span>{ __( 'Visibility' ) }</span>\n\t\t\t\t\t{ ! canEdit && (\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<PostVisibilityLabel />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t\t{ canEdit && (\n\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\tposition=\"bottom left\"\n\t\t\t\t\t\t\tcontentClassName=\"edit-post-post-visibility__dialog\"\n\t\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\t\t// Anchor the popover to the middle of the\n\t\t\t\t\t\t\t\t// entire row so that it doesn't move around\n\t\t\t\t\t\t\t\t// when the label changes.\n\t\t\t\t\t\t\t\tanchorRef: rowRef.current,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tfocusOnMount\n\t\t\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t\t\t<PostVisibilityToggle\n\t\t\t\t\t\t\t\t\tisOpen={ isOpen }\n\t\t\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t\t\t<PostVisibilityForm onClose={ onClose } />\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</PanelRow>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction PostVisibilityToggle( { isOpen, onClick } ) {\n\tconst label = usePostVisibilityLabel();\n\treturn (\n\t\t<Button\n\t\t\tclassName=\"edit-post-post-visibility__toggle\"\n\t\t\tvariant=\"tertiary\"\n\t\t\taria-expanded={ isOpen }\n\t\t\t// translators: %s: Current post visibility.\n\t\t\taria-label={ sprintf( __( 'Select visibility: %s' ), label ) }\n\t\t\tonClick={ onClick }\n\t\t>\n\t\t\t{ label }\n\t\t</Button>\n\t);\n}\n\nexport default PostVisibility;\n","/**\n * WordPress dependencies\n */\nimport { PanelRow } from '@wordpress/components';\nimport { PostTrash as PostTrashLink, PostTrashCheck } from '@wordpress/editor';\n\nexport default function PostTrash() {\n\treturn (\n\t\t<PostTrashCheck>\n\t\t\t<PanelRow>\n\t\t\t\t<PostTrashLink />\n\t\t\t</PanelRow>\n\t\t</PostTrashCheck>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { PanelRow, Dropdown, Button } from '@wordpress/components';\nimport { useRef } from '@wordpress/element';\nimport {\n\tPostSchedule as PostScheduleForm,\n\tPostScheduleCheck,\n\tusePostScheduleLabel,\n} from '@wordpress/editor';\n\nexport default function PostSchedule() {\n\tconst anchorRef = useRef();\n\treturn (\n\t\t<PostScheduleCheck>\n\t\t\t<PanelRow className=\"edit-post-post-schedule\" ref={ anchorRef }>\n\t\t\t\t<span>{ __( 'Publish' ) }</span>\n\t\t\t\t<Dropdown\n\t\t\t\t\tpopoverProps={ { anchorRef } }\n\t\t\t\t\tposition=\"bottom left\"\n\t\t\t\t\tcontentClassName=\"edit-post-post-schedule__dialog\"\n\t\t\t\t\tfocusOnMount\n\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t<PostScheduleToggle\n\t\t\t\t\t\t\tisOpen={ isOpen }\n\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t<PostScheduleForm onClose={ onClose } />\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</PanelRow>\n\t\t</PostScheduleCheck>\n\t);\n}\n\nfunction PostScheduleToggle( { isOpen, onClick } ) {\n\tconst label = usePostScheduleLabel();\n\tconst fullLabel = usePostScheduleLabel( { full: true } );\n\treturn (\n\t\t<Button\n\t\t\tclassName=\"edit-post-post-schedule__toggle\"\n\t\t\tvariant=\"tertiary\"\n\t\t\tlabel={ fullLabel }\n\t\t\tshowTooltip\n\t\t\taria-expanded={ isOpen }\n\t\t\t// translators: %s: Current post date.\n\t\t\taria-label={ sprintf( __( 'Change date: %s' ), label ) }\n\t\t\tonClick={ onClick }\n\t\t>\n\t\t\t{ label }\n\t\t</Button>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { PanelRow } from '@wordpress/components';\nimport {\n\tPostSticky as PostStickyForm,\n\tPostStickyCheck,\n} from '@wordpress/editor';\n\nexport function PostSticky() {\n\treturn (\n\t\t<PostStickyCheck>\n\t\t\t<PanelRow>\n\t\t\t\t<PostStickyForm />\n\t\t\t</PanelRow>\n\t\t</PostStickyCheck>\n\t);\n}\n\nexport default PostSticky;\n","/**\n * WordPress dependencies\n */\nimport { PanelRow } from '@wordpress/components';\nimport {\n\tPostAuthor as PostAuthorForm,\n\tPostAuthorCheck,\n} from '@wordpress/editor';\n\nexport function PostAuthor() {\n\treturn (\n\t\t<PostAuthorCheck>\n\t\t\t<PanelRow className=\"edit-post-post-author\">\n\t\t\t\t<PostAuthorForm />\n\t\t\t</PanelRow>\n\t\t</PostAuthorCheck>\n\t);\n}\n\nexport default PostAuthor;\n","/**\n * WordPress dependencies\n */\nimport { PanelRow } from '@wordpress/components';\nimport { PostSlug as PostSlugForm, PostSlugCheck } from '@wordpress/editor';\n\nexport function PostSlug() {\n\treturn (\n\t\t<PostSlugCheck>\n\t\t\t<PanelRow className=\"edit-post-post-slug\">\n\t\t\t\t<PostSlugForm />\n\t\t\t</PanelRow>\n\t\t</PostSlugCheck>\n\t);\n}\n\nexport default PostSlug;\n","/**\n * WordPress dependencies\n */\nimport { PanelRow } from '@wordpress/components';\nimport {\n\tPostFormat as PostFormatForm,\n\tPostFormatCheck,\n} from '@wordpress/editor';\n\nexport function PostFormat() {\n\treturn (\n\t\t<PostFormatCheck>\n\t\t\t<PanelRow className=\"edit-post-post-format\">\n\t\t\t\t<PostFormatForm />\n\t\t\t</PanelRow>\n\t\t</PostFormatCheck>\n\t);\n}\n\nexport default PostFormat;\n","/**\n * WordPress dependencies\n */\nimport { PanelRow } from '@wordpress/components';\nimport {\n\tPostPendingStatus as PostPendingStatusForm,\n\tPostPendingStatusCheck,\n} from '@wordpress/editor';\n\nexport function PostPendingStatus() {\n\treturn (\n\t\t<PostPendingStatusCheck>\n\t\t\t<PanelRow>\n\t\t\t\t<PostPendingStatusForm />\n\t\t\t</PanelRow>\n\t\t</PostPendingStatusCheck>\n\t);\n}\n\nexport default PostPendingStatus;\n","/**\n * Defines as extensibility slot for the Summary panel.\n */\n\n/**\n * WordPress dependencies\n */\nimport { createSlotFill, PanelRow } from '@wordpress/components';\n\nexport const { Fill, Slot } = createSlotFill( 'PluginPostStatusInfo' );\n\n/**\n * Renders a row in the Summary panel of the Document sidebar.\n * It should be noted that this is named and implemented around the function it serves\n * and not its location, which may change in future iterations.\n *\n * @param {Object} props Component properties.\n * @param {string} [props.className] An optional class name added to the row.\n * @param {WPElement} props.children Children to be rendered.\n *\n * @example\n * ```js\n * // Using ES5 syntax\n * var __ = wp.i18n.__;\n * var PluginPostStatusInfo = wp.editPost.PluginPostStatusInfo;\n *\n * function MyPluginPostStatusInfo() {\n * \treturn wp.element.createElement(\n * \t\tPluginPostStatusInfo,\n * \t\t{\n * \t\t\tclassName: 'my-plugin-post-status-info',\n * \t\t},\n * \t\t__( 'My post status info' )\n * \t)\n * }\n * ```\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { __ } from '@wordpress/i18n';\n * import { PluginPostStatusInfo } from '@wordpress/edit-post';\n *\n * const MyPluginPostStatusInfo = () => (\n * \t<PluginPostStatusInfo\n * \t\tclassName=\"my-plugin-post-status-info\"\n * \t>\n * \t\t{ __( 'My post status info' ) }\n * \t</PluginPostStatusInfo>\n * );\n * ```\n *\n * @return {WPComponent} The component to be rendered.\n */\nconst PluginPostStatusInfo = ( { children, className } ) => (\n\t<Fill>\n\t\t<PanelRow className={ className }>{ children }</PanelRow>\n\t</Fill>\n);\n\nPluginPostStatusInfo.Slot = Slot;\n\nexport default PluginPostStatusInfo;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst addTemplate = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M18.5 5.5V8H20V5.5H22.5V4H20V1.5H18.5V4H16V5.5H18.5ZM13.9624 4H6C4.89543 4 4 4.89543 4 6V18C4 19.1046 4.89543 20 6 20H18C19.1046 20 20 19.1046 20 18V10.0391H18.5V18C18.5 18.2761 18.2761 18.5 18 18.5H10L10 10.4917L16.4589 10.5139L16.4641 9.01389L5.5 8.97618V6C5.5 5.72386 5.72386 5.5 6 5.5H13.9624V4ZM5.5 10.4762V18C5.5 18.2761 5.72386 18.5 6 18.5H8.5L8.5 10.4865L5.5 10.4762Z\"\n\t\t/>\n\t</SVG>\n);\n\nexport default addTemplate;\n","/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { useState } from '@wordpress/element';\nimport { serialize, createBlock } from '@wordpress/blocks';\nimport {\n\tModal,\n\tFlex,\n\tFlexItem,\n\tTextControl,\n\tButton,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { cleanForSlug } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nconst DEFAULT_TITLE = __( 'Custom Template' );\n\nexport default function PostTemplateCreateModal( { onClose } ) {\n\tconst defaultBlockTemplate = useSelect(\n\t\t( select ) =>\n\t\t\tselect( editorStore ).getEditorSettings().defaultBlockTemplate,\n\t\t[]\n\t);\n\n\tconst { __unstableCreateTemplate, __unstableSwitchToTemplateMode } =\n\t\tuseDispatch( editPostStore );\n\n\tconst [ title, setTitle ] = useState( '' );\n\n\tconst [ isBusy, setIsBusy ] = useState( false );\n\n\tconst cancel = () => {\n\t\tsetTitle( '' );\n\t\tonClose();\n\t};\n\n\tconst submit = async ( event ) => {\n\t\tevent.preventDefault();\n\n\t\tif ( isBusy ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetIsBusy( true );\n\n\t\tconst newTemplateContent =\n\t\t\tdefaultBlockTemplate ??\n\t\t\tserialize( [\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/group',\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: 'header',\n\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t},\n\t\t\t\t\t[\n\t\t\t\t\t\tcreateBlock( 'core/site-title' ),\n\t\t\t\t\t\tcreateBlock( 'core/site-tagline' ),\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t\t\tcreateBlock( 'core/separator' ),\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/group',\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: 'main',\n\t\t\t\t\t},\n\t\t\t\t\t[\n\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t'core/group',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t[ createBlock( 'core/post-title' ) ]\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcreateBlock( 'core/post-content', {\n\t\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t\t} ),\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t\t] );\n\n\t\tawait __unstableCreateTemplate( {\n\t\t\tslug: cleanForSlug( title || DEFAULT_TITLE ),\n\t\t\tcontent: newTemplateContent,\n\t\t\ttitle: title || DEFAULT_TITLE,\n\t\t} );\n\n\t\tsetIsBusy( false );\n\t\tcancel();\n\n\t\t__unstableSwitchToTemplateMode( true );\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Create custom template' ) }\n\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\tonRequestClose={ cancel }\n\t\t\tclassName=\"edit-post-post-template__create-modal\"\n\t\t>\n\t\t\t<form\n\t\t\t\tclassName=\"edit-post-post-template__create-form\"\n\t\t\t\tonSubmit={ submit }\n\t\t\t>\n\t\t\t\t<Flex align=\"flex-start\" gap={ 8 }>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t\tplaceholder={ DEFAULT_TITLE }\n\t\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Describe the template, e.g. \"Post with sidebar\". Custom templates can be applied to any post or page.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\n\t\t\t\t<Flex justify=\"flex-end\" expanded={ false }>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button variant=\"tertiary\" onClick={ cancel }>\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\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\t\taria-disabled={ isBusy }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Create' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useState, useMemo } from '@wordpress/element';\nimport { __experimentalInspectorPopoverHeader as InspectorPopoverHeader } from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { addTemplate } from '@wordpress/icons';\nimport { Notice, SelectControl, Button } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\nimport PostTemplateCreateModal from './create-modal';\n\nexport default function PostTemplateForm( { onClose } ) {\n\tconst {\n\t\tisPostsPage,\n\t\tavailableTemplates,\n\t\tfetchedTemplates,\n\t\tselectedTemplateSlug,\n\t\tcanCreate,\n\t\tcanEdit,\n\t} = useSelect( ( select ) => {\n\t\tconst { canUser, getEntityRecord, getEntityRecords } =\n\t\t\tselect( coreStore );\n\t\tconst editorSettings = select( editorStore ).getEditorSettings();\n\t\tconst siteSettings = canUser( 'read', 'settings' )\n\t\t\t? getEntityRecord( 'root', 'site' )\n\t\t\t: undefined;\n\t\tconst _isPostsPage =\n\t\t\tselect( editorStore ).getCurrentPostId() ===\n\t\t\tsiteSettings?.page_for_posts;\n\t\tconst canCreateTemplates = canUser( 'create', 'templates' );\n\n\t\treturn {\n\t\t\tisPostsPage: _isPostsPage,\n\t\t\tavailableTemplates: editorSettings.availableTemplates,\n\t\t\tfetchedTemplates: canCreateTemplates\n\t\t\t\t? getEntityRecords( 'postType', 'wp_template', {\n\t\t\t\t\t\tpost_type: select( editorStore ).getCurrentPostType(),\n\t\t\t\t\t\tper_page: -1,\n\t\t\t\t } )\n\t\t\t\t: undefined,\n\t\t\tselectedTemplateSlug:\n\t\t\t\tselect( editorStore ).getEditedPostAttribute( 'template' ),\n\t\t\tcanCreate:\n\t\t\t\tcanCreateTemplates &&\n\t\t\t\t! _isPostsPage &&\n\t\t\t\teditorSettings.supportsTemplateMode,\n\t\t\tcanEdit:\n\t\t\t\tcanCreateTemplates &&\n\t\t\t\teditorSettings.supportsTemplateMode &&\n\t\t\t\t!! select( editPostStore ).getEditedPostTemplate(),\n\t\t};\n\t}, [] );\n\n\tconst options = useMemo(\n\t\t() =>\n\t\t\tObject.entries( {\n\t\t\t\t...availableTemplates,\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\t( fetchedTemplates ?? [] ).map( ( { slug, title } ) => [\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\ttitle.rendered,\n\t\t\t\t\t] )\n\t\t\t\t),\n\t\t\t} ).map( ( [ slug, title ] ) => ( { value: slug, label: title } ) ),\n\t\t[ availableTemplates, fetchedTemplates ]\n\t);\n\n\tconst selectedOption =\n\t\toptions.find( ( option ) => option.value === selectedTemplateSlug ) ??\n\t\toptions.find( ( option ) => ! option.value ); // The default option has '' value.\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { __unstableSwitchToTemplateMode } = useDispatch( editPostStore );\n\n\tconst [ isCreateModalOpen, setIsCreateModalOpen ] = useState( false );\n\n\treturn (\n\t\t<div className=\"edit-post-post-template__form\">\n\t\t\t<InspectorPopoverHeader\n\t\t\t\ttitle={ __( 'Template' ) }\n\t\t\t\thelp={ __(\n\t\t\t\t\t'Templates define the way content is displayed when viewing your site.'\n\t\t\t\t) }\n\t\t\t\tactions={\n\t\t\t\t\tcanCreate\n\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ticon: addTemplate,\n\t\t\t\t\t\t\t\t\tlabel: __( 'Add template' ),\n\t\t\t\t\t\t\t\t\tonClick: () => setIsCreateModalOpen( true ),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t ]\n\t\t\t\t\t\t: []\n\t\t\t\t}\n\t\t\t\tonClose={ onClose }\n\t\t\t/>\n\t\t\t{ isPostsPage ? (\n\t\t\t\t<Notice\n\t\t\t\t\tclassName=\"edit-post-post-template__notice\"\n\t\t\t\t\tstatus=\"warning\"\n\t\t\t\t\tisDismissible={ false }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'The posts page template cannot be changed.' ) }\n\t\t\t\t</Notice>\n\t\t\t) : (\n\t\t\t\t<SelectControl\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t\tlabel={ __( 'Template' ) }\n\t\t\t\t\tvalue={ selectedOption?.value ?? '' }\n\t\t\t\t\toptions={ options }\n\t\t\t\t\tonChange={ ( slug ) =>\n\t\t\t\t\t\teditPost( { template: slug || '' } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ canEdit && (\n\t\t\t\t<p>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\tonClick={ () => __unstableSwitchToTemplateMode() }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Edit template' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</p>\n\t\t\t) }\n\t\t\t{ isCreateModalOpen && (\n\t\t\t\t<PostTemplateCreateModal\n\t\t\t\t\tonClose={ () => setIsCreateModalOpen( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { PanelRow, Dropdown, Button } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport PostTemplateForm from './form';\nimport { store as editPostStore } from '../../../store';\n\nexport default function PostTemplate() {\n\tconst anchorRef = useRef();\n\n\tconst isVisible = useSelect( ( select ) => {\n\t\tconst postTypeSlug = select( editorStore ).getCurrentPostType();\n\t\tconst postType = select( coreStore ).getPostType( postTypeSlug );\n\t\tif ( ! postType?.viewable ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst settings = select( editorStore ).getEditorSettings();\n\t\tconst hasTemplates =\n\t\t\t!! settings.availableTemplates &&\n\t\t\tObject.keys( settings.availableTemplates ).length > 0;\n\t\tif ( hasTemplates ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( ! settings.supportsTemplateMode ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst canCreateTemplates =\n\t\t\tselect( coreStore ).canUser( 'create', 'templates' ) ?? false;\n\t\treturn canCreateTemplates;\n\t}, [] );\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelRow className=\"edit-post-post-template\" ref={ anchorRef }>\n\t\t\t<span>{ __( 'Template' ) }</span>\n\t\t\t<Dropdown\n\t\t\t\tpopoverProps={ { anchorRef } }\n\t\t\t\tposition=\"bottom left\"\n\t\t\t\tclassName=\"edit-post-post-template__dropdown\"\n\t\t\t\tcontentClassName=\"edit-post-post-template__dialog\"\n\t\t\t\tfocusOnMount\n\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t<PostTemplateToggle\n\t\t\t\t\t\tisOpen={ isOpen }\n\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t<PostTemplateForm onClose={ onClose } />\n\t\t\t\t) }\n\t\t\t/>\n\t\t</PanelRow>\n\t);\n}\n\nfunction PostTemplateToggle( { isOpen, onClick } ) {\n\tconst templateTitle = useSelect( ( select ) => {\n\t\tconst templateSlug =\n\t\t\tselect( editorStore ).getEditedPostAttribute( 'template' );\n\n\t\tconst { supportsTemplateMode, availableTemplates } =\n\t\t\tselect( editorStore ).getEditorSettings();\n\t\tif ( ! supportsTemplateMode && availableTemplates[ templateSlug ] ) {\n\t\t\treturn availableTemplates[ templateSlug ];\n\t\t}\n\n\t\tconst template = select( editPostStore ).getEditedPostTemplate();\n\t\treturn template?.title ?? template?.slug;\n\t}, [] );\n\n\treturn (\n\t\t<Button\n\t\t\tclassName=\"edit-post-post-template__toggle\"\n\t\t\tvariant=\"tertiary\"\n\t\t\taria-expanded={ isOpen }\n\t\t\taria-label={\n\t\t\t\ttemplateTitle\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the currently selected template.\n\t\t\t\t\t\t\t__( 'Select template: %s' ),\n\t\t\t\t\t\t\ttemplateTitle\n\t\t\t\t\t )\n\t\t\t\t\t: __( 'Select template' )\n\t\t\t}\n\t\t\tonClick={ onClick }\n\t\t>\n\t\t\t{ templateTitle ?? __( 'Default template' ) }\n\t\t</Button>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { PanelRow, Dropdown, Button } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tPostURLCheck,\n\tPostURL as PostURLForm,\n\tusePostURLLabel,\n} from '@wordpress/editor';\n\nexport default function PostURL() {\n\tconst anchorRef = useRef();\n\treturn (\n\t\t<PostURLCheck>\n\t\t\t<PanelRow className=\"edit-post-post-url\" ref={ anchorRef }>\n\t\t\t\t<span>{ __( 'URL' ) }</span>\n\t\t\t\t<Dropdown\n\t\t\t\t\tpopoverProps={ { anchorRef } }\n\t\t\t\t\tposition=\"bottom left\"\n\t\t\t\t\tclassName=\"edit-post-post-url__dropdown\"\n\t\t\t\t\tcontentClassName=\"edit-post-post-url__dialog\"\n\t\t\t\t\tfocusOnMount\n\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t<PostURLToggle isOpen={ isOpen } onClick={ onToggle } />\n\t\t\t\t\t) }\n\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t<PostURLForm onClose={ onClose } />\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</PanelRow>\n\t\t</PostURLCheck>\n\t);\n}\n\nfunction PostURLToggle( { isOpen, onClick } ) {\n\tconst label = usePostURLLabel();\n\treturn (\n\t\t<Button\n\t\t\tclassName=\"edit-post-post-url__toggle\"\n\t\t\tvariant=\"tertiary\"\n\t\t\taria-expanded={ isOpen }\n\t\t\t// translators: %s: Current post URL.\n\t\t\taria-label={ sprintf( __( 'Change URL: %s' ), label ) }\n\t\t\tonClick={ onClick }\n\t\t>\n\t\t\t{ label }\n\t\t</Button>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { PanelBody } from '@wordpress/components';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose, ifCondition } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport PostVisibility from '../post-visibility';\nimport PostTrash from '../post-trash';\nimport PostSchedule from '../post-schedule';\nimport PostSticky from '../post-sticky';\nimport PostAuthor from '../post-author';\nimport PostSlug from '../post-slug';\nimport PostFormat from '../post-format';\nimport PostPendingStatus from '../post-pending-status';\nimport PluginPostStatusInfo from '../plugin-post-status-info';\nimport { store as editPostStore } from '../../../store';\nimport PostTemplate from '../post-template';\nimport PostURL from '../post-url';\n\n/**\n * Module Constants\n */\nconst PANEL_NAME = 'post-status';\n\nfunction PostStatus( { isOpened, onTogglePanel } ) {\n\treturn (\n\t\t<PanelBody\n\t\t\tclassName=\"edit-post-post-status\"\n\t\t\ttitle={ __( 'Summary' ) }\n\t\t\topened={ isOpened }\n\t\t\tonToggle={ onTogglePanel }\n\t\t>\n\t\t\t<PluginPostStatusInfo.Slot>\n\t\t\t\t{ ( fills ) => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PostVisibility />\n\t\t\t\t\t\t<PostSchedule />\n\t\t\t\t\t\t<PostURL />\n\t\t\t\t\t\t<PostTemplate />\n\t\t\t\t\t\t<PostSticky />\n\t\t\t\t\t\t<PostPendingStatus />\n\t\t\t\t\t\t<PostFormat />\n\t\t\t\t\t\t<PostSlug />\n\t\t\t\t\t\t<PostAuthor />\n\t\t\t\t\t\t{ fills }\n\t\t\t\t\t\t<PostTrash />\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</PluginPostStatusInfo.Slot>\n\t\t</PanelBody>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\t// We use isEditorPanelRemoved to hide the panel if it was programatically removed. We do\n\t\t// not use isEditorPanelEnabled since this panel should not be disabled through the UI.\n\t\tconst { isEditorPanelRemoved, isEditorPanelOpened } =\n\t\t\tselect( editPostStore );\n\t\treturn {\n\t\t\tisRemoved: isEditorPanelRemoved( PANEL_NAME ),\n\t\t\tisOpened: isEditorPanelOpened( PANEL_NAME ),\n\t\t};\n\t} ),\n\tifCondition( ( { isRemoved } ) => ! isRemoved ),\n\twithDispatch( ( dispatch ) => ( {\n\t\tonTogglePanel() {\n\t\t\treturn dispatch( editPostStore ).toggleEditorPanelOpened(\n\t\t\t\tPANEL_NAME\n\t\t\t);\n\t\t},\n\t} ) ),\n] )( PostStatus );\n","/**\n * WordPress dependencies\n */\nimport { PanelBody } from '@wordpress/components';\nimport { PostLastRevision, PostLastRevisionCheck } from '@wordpress/editor';\n\nfunction LastRevision() {\n\treturn (\n\t\t<PostLastRevisionCheck>\n\t\t\t<PanelBody className=\"edit-post-last-revision__panel\">\n\t\t\t\t<PostLastRevision />\n\t\t\t</PanelBody>\n\t\t</PostLastRevisionCheck>\n\t);\n}\n\nexport default LastRevision;\n","/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport { PanelBody } from '@wordpress/components';\nimport { withSelect, withDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nfunction TaxonomyPanel( {\n\tisEnabled,\n\ttaxonomy,\n\tisOpened,\n\tonTogglePanel,\n\tchildren,\n} ) {\n\tif ( ! isEnabled ) {\n\t\treturn null;\n\t}\n\n\tconst taxonomyMenuName = get( taxonomy, [ 'labels', 'menu_name' ] );\n\tif ( ! taxonomyMenuName ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody\n\t\t\ttitle={ taxonomyMenuName }\n\t\t\topened={ isOpened }\n\t\t\tonToggle={ onTogglePanel }\n\t\t>\n\t\t\t{ children }\n\t\t</PanelBody>\n\t);\n}\n\nexport default compose(\n\twithSelect( ( select, ownProps ) => {\n\t\tconst slug = get( ownProps.taxonomy, [ 'slug' ] );\n\t\tconst panelName = slug ? `taxonomy-panel-${ slug }` : '';\n\t\treturn {\n\t\t\tpanelName,\n\t\t\tisEnabled: slug\n\t\t\t\t? select( editPostStore ).isEditorPanelEnabled( panelName )\n\t\t\t\t: false,\n\t\t\tisOpened: slug\n\t\t\t\t? select( editPostStore ).isEditorPanelOpened( panelName )\n\t\t\t\t: false,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, ownProps ) => ( {\n\t\tonTogglePanel: () => {\n\t\t\tdispatch( editPostStore ).toggleEditorPanelOpened(\n\t\t\t\townProps.panelName\n\t\t\t);\n\t\t},\n\t} ) )\n)( TaxonomyPanel );\n","/**\n * WordPress dependencies\n */\nimport {\n\tPostTaxonomies as PostTaxonomiesForm,\n\tPostTaxonomiesCheck,\n} from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport TaxonomyPanel from './taxonomy-panel';\n\nfunction PostTaxonomies() {\n\treturn (\n\t\t<PostTaxonomiesCheck>\n\t\t\t<PostTaxonomiesForm\n\t\t\t\ttaxonomyWrapper={ ( content, taxonomy ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<TaxonomyPanel taxonomy={ taxonomy }>\n\t\t\t\t\t\t\t{ content }\n\t\t\t\t\t\t</TaxonomyPanel>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PostTaxonomiesCheck>\n\t);\n}\n\nexport default PostTaxonomies;\n","/**\n * External dependencies\n */\nimport { get, partial } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { PanelBody } from '@wordpress/components';\nimport {\n\tPostFeaturedImage,\n\tPostFeaturedImageCheck,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport { compose } from '@wordpress/compose';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Module Constants\n */\nconst PANEL_NAME = 'featured-image';\n\nfunction FeaturedImage( { isEnabled, isOpened, postType, onTogglePanel } ) {\n\tif ( ! isEnabled ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PostFeaturedImageCheck>\n\t\t\t<PanelBody\n\t\t\t\ttitle={ get(\n\t\t\t\t\tpostType,\n\t\t\t\t\t[ 'labels', 'featured_image' ],\n\t\t\t\t\t__( 'Featured image' )\n\t\t\t\t) }\n\t\t\t\topened={ isOpened }\n\t\t\t\tonToggle={ onTogglePanel }\n\t\t\t>\n\t\t\t\t<PostFeaturedImage />\n\t\t\t</PanelBody>\n\t\t</PostFeaturedImageCheck>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select ) => {\n\tconst { getEditedPostAttribute } = select( editorStore );\n\tconst { getPostType } = select( coreStore );\n\tconst { isEditorPanelEnabled, isEditorPanelOpened } =\n\t\tselect( editPostStore );\n\n\treturn {\n\t\tpostType: getPostType( getEditedPostAttribute( 'type' ) ),\n\t\tisEnabled: isEditorPanelEnabled( PANEL_NAME ),\n\t\tisOpened: isEditorPanelOpened( PANEL_NAME ),\n\t};\n} );\n\nconst applyWithDispatch = withDispatch( ( dispatch ) => {\n\tconst { toggleEditorPanelOpened } = dispatch( editPostStore );\n\n\treturn {\n\t\tonTogglePanel: partial( toggleEditorPanelOpened, PANEL_NAME ),\n\t};\n} );\n\nexport default compose( applyWithSelect, applyWithDispatch )( FeaturedImage );\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { PanelBody } from '@wordpress/components';\nimport {\n\tPostExcerpt as PostExcerptForm,\n\tPostExcerptCheck,\n} from '@wordpress/editor';\nimport { compose } from '@wordpress/compose';\nimport { withSelect, withDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Module Constants\n */\nconst PANEL_NAME = 'post-excerpt';\n\nfunction PostExcerpt( { isEnabled, isOpened, onTogglePanel } ) {\n\tif ( ! isEnabled ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PostExcerptCheck>\n\t\t\t<PanelBody\n\t\t\t\ttitle={ __( 'Excerpt' ) }\n\t\t\t\topened={ isOpened }\n\t\t\t\tonToggle={ onTogglePanel }\n\t\t\t>\n\t\t\t\t<PostExcerptForm />\n\t\t\t</PanelBody>\n\t\t</PostExcerptCheck>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\treturn {\n\t\t\tisEnabled:\n\t\t\t\tselect( editPostStore ).isEditorPanelEnabled( PANEL_NAME ),\n\t\t\tisOpened: select( editPostStore ).isEditorPanelOpened( PANEL_NAME ),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => ( {\n\t\tonTogglePanel() {\n\t\t\treturn dispatch( editPostStore ).toggleEditorPanelOpened(\n\t\t\t\tPANEL_NAME\n\t\t\t);\n\t\t},\n\t} ) ),\n] )( PostExcerpt );\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { PanelBody, PanelRow } from '@wordpress/components';\nimport {\n\tPostComments,\n\tPostPingbacks,\n\tPostTypeSupportCheck,\n} from '@wordpress/editor';\nimport { compose } from '@wordpress/compose';\nimport { withSelect, withDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Module Constants\n */\nconst PANEL_NAME = 'discussion-panel';\n\nfunction DiscussionPanel( { isEnabled, isOpened, onTogglePanel } ) {\n\tif ( ! isEnabled ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PostTypeSupportCheck supportKeys={ [ 'comments', 'trackbacks' ] }>\n\t\t\t<PanelBody\n\t\t\t\ttitle={ __( 'Discussion' ) }\n\t\t\t\topened={ isOpened }\n\t\t\t\tonToggle={ onTogglePanel }\n\t\t\t>\n\t\t\t\t<PostTypeSupportCheck supportKeys=\"comments\">\n\t\t\t\t\t<PanelRow>\n\t\t\t\t\t\t<PostComments />\n\t\t\t\t\t</PanelRow>\n\t\t\t\t</PostTypeSupportCheck>\n\n\t\t\t\t<PostTypeSupportCheck supportKeys=\"trackbacks\">\n\t\t\t\t\t<PanelRow>\n\t\t\t\t\t\t<PostPingbacks />\n\t\t\t\t\t</PanelRow>\n\t\t\t\t</PostTypeSupportCheck>\n\t\t\t</PanelBody>\n\t\t</PostTypeSupportCheck>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\treturn {\n\t\t\tisEnabled:\n\t\t\t\tselect( editPostStore ).isEditorPanelEnabled( PANEL_NAME ),\n\t\t\tisOpened: select( editPostStore ).isEditorPanelOpened( PANEL_NAME ),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => ( {\n\t\tonTogglePanel() {\n\t\t\treturn dispatch( editPostStore ).toggleEditorPanelOpened(\n\t\t\t\tPANEL_NAME\n\t\t\t);\n\t\t},\n\t} ) ),\n] )( DiscussionPanel );\n","/**\n * External dependencies\n */\nimport { get, partial } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { PanelBody, PanelRow } from '@wordpress/components';\nimport {\n\tstore as editorStore,\n\tPageAttributesCheck,\n\tPageAttributesOrder,\n\tPageAttributesParent,\n} from '@wordpress/editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Module Constants\n */\nconst PANEL_NAME = 'page-attributes';\n\nexport function PageAttributes() {\n\tconst { isEnabled, isOpened, postType } = useSelect( ( select ) => {\n\t\tconst { getEditedPostAttribute } = select( editorStore );\n\t\tconst { isEditorPanelEnabled, isEditorPanelOpened } =\n\t\t\tselect( editPostStore );\n\t\tconst { getPostType } = select( coreStore );\n\t\treturn {\n\t\t\tisEnabled: isEditorPanelEnabled( PANEL_NAME ),\n\t\t\tisOpened: isEditorPanelOpened( PANEL_NAME ),\n\t\t\tpostType: getPostType( getEditedPostAttribute( 'type' ) ),\n\t\t};\n\t}, [] );\n\n\tconst { toggleEditorPanelOpened } = useDispatch( editPostStore );\n\n\tif ( ! isEnabled || ! postType ) {\n\t\treturn null;\n\t}\n\n\tconst onTogglePanel = partial( toggleEditorPanelOpened, PANEL_NAME );\n\n\treturn (\n\t\t<PageAttributesCheck>\n\t\t\t<PanelBody\n\t\t\t\ttitle={ get(\n\t\t\t\t\tpostType,\n\t\t\t\t\t[ 'labels', 'attributes' ],\n\t\t\t\t\t__( 'Page attributes' )\n\t\t\t\t) }\n\t\t\t\topened={ isOpened }\n\t\t\t\tonToggle={ onTogglePanel }\n\t\t\t>\n\t\t\t\t<PageAttributesParent />\n\t\t\t\t<PanelRow>\n\t\t\t\t\t<PageAttributesOrder />\n\t\t\t\t</PanelRow>\n\t\t\t</PanelBody>\n\t\t</PageAttributesCheck>\n\t);\n}\n\nexport default PageAttributes;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRef, useEffect } from '@wordpress/element';\nimport { Spinner } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Render metabox area.\n *\n * @param {Object} props Component props.\n * @param {string} props.location metabox location.\n * @return {WPComponent} The component to be rendered.\n */\nfunction MetaBoxesArea( { location } ) {\n\tconst container = useRef( null );\n\tconst formRef = useRef( null );\n\n\tuseEffect( () => {\n\t\tformRef.current = document.querySelector(\n\t\t\t'.metabox-location-' + location\n\t\t);\n\n\t\tif ( formRef.current ) {\n\t\t\tcontainer.current.appendChild( formRef.current );\n\t\t}\n\n\t\treturn () => {\n\t\t\tif ( formRef.current ) {\n\t\t\t\tdocument\n\t\t\t\t\t.querySelector( '#metaboxes' )\n\t\t\t\t\t.appendChild( formRef.current );\n\t\t\t}\n\t\t};\n\t}, [ location ] );\n\n\tconst isSaving = useSelect( ( select ) => {\n\t\treturn select( editPostStore ).isSavingMetaBoxes();\n\t}, [] );\n\n\tconst classes = classnames(\n\t\t'edit-post-meta-boxes-area',\n\t\t`is-${ location }`,\n\t\t{\n\t\t\t'is-loading': isSaving,\n\t\t}\n\t);\n\n\treturn (\n\t\t<div className={ classes }>\n\t\t\t{ isSaving && <Spinner /> }\n\t\t\t<div\n\t\t\t\tclassName=\"edit-post-meta-boxes-area__container\"\n\t\t\t\tref={ container }\n\t\t\t/>\n\t\t\t<div className=\"edit-post-meta-boxes-area__clear\" />\n\t\t</div>\n\t);\n}\n\nexport default MetaBoxesArea;\n","/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { withSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nclass MetaBoxVisibility extends Component {\n\tcomponentDidMount() {\n\t\tthis.updateDOM();\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tif ( this.props.isVisible !== prevProps.isVisible ) {\n\t\t\tthis.updateDOM();\n\t\t}\n\t}\n\n\tupdateDOM() {\n\t\tconst { id, isVisible } = this.props;\n\n\t\tconst element = document.getElementById( id );\n\t\tif ( ! element ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isVisible ) {\n\t\t\telement.classList.remove( 'is-hidden' );\n\t\t} else {\n\t\t\telement.classList.add( 'is-hidden' );\n\t\t}\n\t}\n\n\trender() {\n\t\treturn null;\n\t}\n}\n\nexport default withSelect( ( select, { id } ) => ( {\n\tisVisible: select( editPostStore ).isEditorPanelEnabled(\n\t\t`meta-box-${ id }`\n\t),\n} ) )( MetaBoxVisibility );\n","/**\n * External dependencies\n */\nimport { map } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useRegistry } from '@wordpress/data';\nimport { useEffect } from '@wordpress/element';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport MetaBoxesArea from './meta-boxes-area';\nimport MetaBoxVisibility from './meta-box-visibility';\nimport { store as editPostStore } from '../../store';\n\nexport default function MetaBoxes( { location } ) {\n\tconst registry = useRegistry();\n\tconst { metaBoxes, areMetaBoxesInitialized, isEditorReady } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __unstableIsEditorReady } = select( editorStore );\n\t\t\tconst {\n\t\t\t\tgetMetaBoxesPerLocation,\n\t\t\t\tareMetaBoxesInitialized: _areMetaBoxesInitialized,\n\t\t\t} = select( editPostStore );\n\t\t\treturn {\n\t\t\t\tmetaBoxes: getMetaBoxesPerLocation( location ),\n\t\t\t\tareMetaBoxesInitialized: _areMetaBoxesInitialized(),\n\t\t\t\tisEditorReady: __unstableIsEditorReady(),\n\t\t\t};\n\t\t},\n\t\t[ location ]\n\t);\n\n\t// When editor is ready, initialize postboxes (wp core script) and metabox\n\t// saving. This initializes all meta box locations, not just this specific\n\t// one.\n\tuseEffect( () => {\n\t\tif ( isEditorReady && ! areMetaBoxesInitialized ) {\n\t\t\tregistry.dispatch( editPostStore ).initializeMetaBoxes();\n\t\t}\n\t}, [ isEditorReady, areMetaBoxesInitialized ] );\n\n\tif ( ! areMetaBoxesInitialized ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ map( metaBoxes, ( { id } ) => (\n\t\t\t\t<MetaBoxVisibility key={ id } id={ id } />\n\t\t\t) ) }\n\t\t\t<MetaBoxesArea location={ location } />\n\t\t</>\n\t);\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"warning\"];","/**\n * Defines as extensibility slot for the Settings sidebar\n */\n\n/**\n * WordPress dependencies\n */\nimport { createSlotFill, PanelBody } from '@wordpress/components';\nimport { compose } from '@wordpress/compose';\nimport { withPluginContext } from '@wordpress/plugins';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport warning from '@wordpress/warning';\n\n/**\n * Internal dependencies\n */\nimport { EnablePluginDocumentSettingPanelOption } from '../../preferences-modal/options';\nimport { store as editPostStore } from '../../../store';\n\nexport const { Fill, Slot } = createSlotFill( 'PluginDocumentSettingPanel' );\n\nconst PluginDocumentSettingFill = ( {\n\tisEnabled,\n\tpanelName,\n\topened,\n\tonToggle,\n\tclassName,\n\ttitle,\n\ticon,\n\tchildren,\n} ) => {\n\treturn (\n\t\t<>\n\t\t\t<EnablePluginDocumentSettingPanelOption\n\t\t\t\tlabel={ title }\n\t\t\t\tpanelName={ panelName }\n\t\t\t/>\n\t\t\t<Fill>\n\t\t\t\t{ isEnabled && (\n\t\t\t\t\t<PanelBody\n\t\t\t\t\t\tclassName={ className }\n\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\topened={ opened }\n\t\t\t\t\t\tonToggle={ onToggle }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</PanelBody>\n\t\t\t\t) }\n\t\t\t</Fill>\n\t\t</>\n\t);\n};\n\n/**\n * Renders items below the Status & Availability panel in the Document Sidebar.\n *\n * @param {Object} props Component properties.\n * @param {string} [props.name] The machine-friendly name for the panel.\n * @param {string} [props.className] An optional class name added to the row.\n * @param {string} [props.title] The title of the panel\n * @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered when the sidebar is pinned to toolbar.\n *\n * @example\n * ```js\n * // Using ES5 syntax\n * var el = wp.element.createElement;\n * var __ = wp.i18n.__;\n * var registerPlugin = wp.plugins.registerPlugin;\n * var PluginDocumentSettingPanel = wp.editPost.PluginDocumentSettingPanel;\n *\n * function MyDocumentSettingPlugin() {\n * \treturn el(\n * \t\tPluginDocumentSettingPanel,\n * \t\t{\n * \t\t\tclassName: 'my-document-setting-plugin',\n * \t\t\ttitle: 'My Panel',\n * \t\t},\n * \t\t__( 'My Document Setting Panel' )\n * \t);\n * }\n *\n * registerPlugin( 'my-document-setting-plugin', {\n * \t\trender: MyDocumentSettingPlugin\n * } );\n * ```\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { registerPlugin } from '@wordpress/plugins';\n * import { PluginDocumentSettingPanel } from '@wordpress/edit-post';\n *\n * const MyDocumentSettingTest = () => (\n * \t\t<PluginDocumentSettingPanel className=\"my-document-setting-plugin\" title=\"My Panel\">\n *\t\t\t<p>My Document Setting Panel</p>\n *\t\t</PluginDocumentSettingPanel>\n *\t);\n *\n * registerPlugin( 'document-setting-test', { render: MyDocumentSettingTest } );\n * ```\n *\n * @return {WPComponent} The component to be rendered.\n */\nconst PluginDocumentSettingPanel = compose(\n\twithPluginContext( ( context, ownProps ) => {\n\t\tif ( undefined === ownProps.name ) {\n\t\t\twarning( 'PluginDocumentSettingPanel requires a name property.' );\n\t\t}\n\t\treturn {\n\t\t\tpanelName: `${ context.name }/${ ownProps.name }`,\n\t\t};\n\t} ),\n\twithSelect( ( select, { panelName } ) => {\n\t\treturn {\n\t\t\topened: select( editPostStore ).isEditorPanelOpened( panelName ),\n\t\t\tisEnabled:\n\t\t\t\tselect( editPostStore ).isEditorPanelEnabled( panelName ),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, { panelName } ) => ( {\n\t\tonToggle() {\n\t\t\treturn dispatch( editPostStore ).toggleEditorPanelOpened(\n\t\t\t\tpanelName\n\t\t\t);\n\t\t},\n\t} ) )\n)( PluginDocumentSettingFill );\n\nPluginDocumentSettingPanel.Slot = Slot;\n\nexport default PluginDocumentSettingPanel;\n","/**\n * WordPress dependencies\n */\nimport { ComplementaryArea } from '@wordpress/interface';\nimport { useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Renders a sidebar when activated. The contents within the `PluginSidebar` will appear as content within the sidebar.\n * It also automatically renders a corresponding `PluginSidebarMenuItem` component when `isPinnable` flag is set to `true`.\n * If you wish to display the sidebar, you can with use the `PluginSidebarMoreMenuItem` component or the `wp.data.dispatch` API:\n *\n * ```js\n * wp.data.dispatch( 'core/edit-post' ).openGeneralSidebar( 'plugin-name/sidebar-name' );\n * ```\n *\n * @see PluginSidebarMoreMenuItem\n *\n * @param {Object} props Element props.\n * @param {string} props.name A string identifying the sidebar. Must be unique for every sidebar registered within the scope of your plugin.\n * @param {string} [props.className] An optional class name added to the sidebar body.\n * @param {string} props.title Title displayed at the top of the sidebar.\n * @param {boolean} [props.isPinnable=true] Whether to allow to pin sidebar to the toolbar. When set to `true` it also automatically renders a corresponding menu item.\n * @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered when the sidebar is pinned to toolbar.\n *\n * @example\n * ```js\n * // Using ES5 syntax\n * var __ = wp.i18n.__;\n * var el = wp.element.createElement;\n * var PanelBody = wp.components.PanelBody;\n * var PluginSidebar = wp.editPost.PluginSidebar;\n * var moreIcon = wp.element.createElement( 'svg' ); //... svg element.\n *\n * function MyPluginSidebar() {\n * \treturn el(\n * \t\t\tPluginSidebar,\n * \t\t\t{\n * \t\t\t\tname: 'my-sidebar',\n * \t\t\t\ttitle: 'My sidebar title',\n * \t\t\t\ticon: moreIcon,\n * \t\t\t},\n * \t\t\tel(\n * \t\t\t\tPanelBody,\n * \t\t\t\t{},\n * \t\t\t\t__( 'My sidebar content' )\n * \t\t\t)\n * \t);\n * }\n * ```\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { __ } from '@wordpress/i18n';\n * import { PanelBody } from '@wordpress/components';\n * import { PluginSidebar } from '@wordpress/edit-post';\n * import { more } from '@wordpress/icons';\n *\n * const MyPluginSidebar = () => (\n * \t<PluginSidebar\n * \t\tname=\"my-sidebar\"\n * \t\ttitle=\"My sidebar title\"\n * \t\ticon={ more }\n * \t>\n * \t\t<PanelBody>\n * \t\t\t{ __( 'My sidebar content' ) }\n * \t\t</PanelBody>\n * \t</PluginSidebar>\n * );\n * ```\n */\nexport default function PluginSidebarEditPost( { className, ...props } ) {\n\tconst { postTitle, shortcut, showIconLabels } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tpostTitle: select( editorStore ).getEditedPostAttribute( 'title' ),\n\t\t\tshortcut: select(\n\t\t\t\tkeyboardShortcutsStore\n\t\t\t).getShortcutRepresentation( 'core/edit-post/toggle-sidebar' ),\n\t\t\tshowIconLabels:\n\t\t\t\tselect( editPostStore ).isFeatureActive( 'showIconLabels' ),\n\t\t};\n\t}, [] );\n\treturn (\n\t\t<ComplementaryArea\n\t\t\tpanelClassName={ className }\n\t\t\tclassName=\"edit-post-sidebar\"\n\t\t\tsmallScreenTitle={ postTitle || __( '(no title)' ) }\n\t\t\tscope=\"core/edit-post\"\n\t\t\ttoggleShortcut={ shortcut }\n\t\t\tshowIconLabels={ showIconLabels }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst layout = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z\" />\n\t</SVG>\n);\n\nexport default layout;\n","/**\n * WordPress dependencies\n */\nimport { Icon, layout } from '@wordpress/icons';\nimport { useSelect } from '@wordpress/data';\nimport { Flex, FlexItem, FlexBlock, PanelBody } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nfunction TemplateSummary() {\n\tconst template = useSelect( ( select ) => {\n\t\tconst { getEditedPostTemplate } = select( editPostStore );\n\t\treturn getEditedPostTemplate();\n\t}, [] );\n\n\tif ( ! template ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody>\n\t\t\t<Flex align=\"flex-start\" gap=\"3\">\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Icon icon={ layout } />\n\t\t\t\t</FlexItem>\n\n\t\t\t\t<FlexBlock>\n\t\t\t\t\t<h2 className=\"edit-post-template-summary__title\">\n\t\t\t\t\t\t{ template?.title || template?.slug }\n\t\t\t\t\t</h2>\n\t\t\t\t\t<p>{ template?.description }</p>\n\t\t\t\t</FlexBlock>\n\t\t\t</Flex>\n\t\t</PanelBody>\n\t);\n}\n\nexport default TemplateSummary;\n","/**\n * WordPress dependencies\n */\nimport {\n\tBlockInspector,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { cog } from '@wordpress/icons';\nimport { Platform } from '@wordpress/element';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { store as interfaceStore } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport SettingsHeader from '../settings-header';\nimport PostStatus from '../post-status';\nimport LastRevision from '../last-revision';\nimport PostTaxonomies from '../post-taxonomies';\nimport FeaturedImage from '../featured-image';\nimport PostExcerpt from '../post-excerpt';\nimport DiscussionPanel from '../discussion-panel';\nimport PageAttributes from '../page-attributes';\nimport MetaBoxes from '../../meta-boxes';\nimport PluginDocumentSettingPanel from '../plugin-document-setting-panel';\nimport PluginSidebarEditPost from '../plugin-sidebar';\nimport TemplateSummary from '../template-summary';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { store as editPostStore } from '../../../store';\n\nconst SIDEBAR_ACTIVE_BY_DEFAULT = Platform.select( {\n\tweb: true,\n\tnative: false,\n} );\n\nconst SettingsSidebar = () => {\n\tconst { sidebarName, keyboardShortcut, isTemplateMode } = useSelect(\n\t\t( select ) => {\n\t\t\t// The settings sidebar is used by the edit-post/document and edit-post/block sidebars.\n\t\t\t// sidebarName represents the sidebar that is active or that should be active when the SettingsSidebar toggle button is pressed.\n\t\t\t// If one of the two sidebars is active the component will contain the content of that sidebar.\n\t\t\t// When neither of the two sidebars is active we can not simply return null, because the PluginSidebarEditPost\n\t\t\t// component, besides being used to render the sidebar, also renders the toggle button. In that case sidebarName\n\t\t\t// should contain the sidebar that will be active when the toggle button is pressed. If a block\n\t\t\t// is selected, that should be edit-post/block otherwise it's edit-post/document.\n\t\t\tlet sidebar = select( interfaceStore ).getActiveComplementaryArea(\n\t\t\t\teditPostStore.name\n\t\t\t);\n\t\t\tif (\n\t\t\t\t! [ 'edit-post/document', 'edit-post/block' ].includes(\n\t\t\t\t\tsidebar\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif ( select( blockEditorStore ).getBlockSelectionStart() ) {\n\t\t\t\t\tsidebar = 'edit-post/block';\n\t\t\t\t}\n\t\t\t\tsidebar = 'edit-post/document';\n\t\t\t}\n\t\t\tconst shortcut = select(\n\t\t\t\tkeyboardShortcutsStore\n\t\t\t).getShortcutRepresentation( 'core/edit-post/toggle-sidebar' );\n\t\t\treturn {\n\t\t\t\tsidebarName: sidebar,\n\t\t\t\tkeyboardShortcut: shortcut,\n\t\t\t\tisTemplateMode: select( editPostStore ).isEditingTemplate(),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\treturn (\n\t\t<PluginSidebarEditPost\n\t\t\tidentifier={ sidebarName }\n\t\t\theader={ <SettingsHeader sidebarName={ sidebarName } /> }\n\t\t\tcloseLabel={ __( 'Close settings' ) }\n\t\t\theaderClassName=\"edit-post-sidebar__panel-tabs\"\n\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\ttitle={ __( 'Settings' ) }\n\t\t\ttoggleShortcut={ keyboardShortcut }\n\t\t\ticon={ cog }\n\t\t\tisActiveByDefault={ SIDEBAR_ACTIVE_BY_DEFAULT }\n\t\t>\n\t\t\t{ ! isTemplateMode && sidebarName === 'edit-post/document' && (\n\t\t\t\t<>\n\t\t\t\t\t<PostStatus />\n\t\t\t\t\t<PluginDocumentSettingPanel.Slot />\n\t\t\t\t\t<LastRevision />\n\t\t\t\t\t<PostTaxonomies />\n\t\t\t\t\t<FeaturedImage />\n\t\t\t\t\t<PostExcerpt />\n\t\t\t\t\t<DiscussionPanel />\n\t\t\t\t\t<PageAttributes />\n\t\t\t\t\t<MetaBoxes location=\"side\" />\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ isTemplateMode && sidebarName === 'edit-post/document' && (\n\t\t\t\t<TemplateSummary />\n\t\t\t) }\n\t\t\t{ sidebarName === 'edit-post/block' && <BlockInspector /> }\n\t\t</PluginSidebarEditPost>\n\t);\n};\n\nexport default SettingsSidebar;\n","export default function WelcomeGuideImage( { nonAnimatedSrc, animatedSrc } ) {\n\treturn (\n\t\t<picture className=\"edit-post-welcome-guide__image\">\n\t\t\t<source\n\t\t\t\tsrcSet={ nonAnimatedSrc }\n\t\t\t\tmedia=\"(prefers-reduced-motion: reduce)\"\n\t\t\t/>\n\t\t\t<img src={ animatedSrc } width=\"312\" height=\"240\" alt=\"\" />\n\t\t</picture>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { ExternalLink, Guide } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { createInterpolateElement } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport WelcomeGuideImage from './image';\nimport { store as editPostStore } from '../../store';\n\nexport default function WelcomeGuideDefault() {\n\tconst { toggleFeature } = useDispatch( editPostStore );\n\n\treturn (\n\t\t<Guide\n\t\t\tclassName=\"edit-post-welcome-guide\"\n\t\t\tcontentLabel={ __( 'Welcome to the block editor' ) }\n\t\t\tfinishButtonText={ __( 'Get started' ) }\n\t\t\tonFinish={ () => toggleFeature( 'welcomeGuide' ) }\n\t\t\tpages={ [\n\t\t\t\t{\n\t\t\t\t\timage: (\n\t\t\t\t\t\t<WelcomeGuideImage\n\t\t\t\t\t\t\tnonAnimatedSrc=\"https://s.w.org/images/block-editor/welcome-canvas.svg\"\n\t\t\t\t\t\t\tanimatedSrc=\"https://s.w.org/images/block-editor/welcome-canvas.gif\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"edit-post-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Welcome to the block editor' ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<p className=\"edit-post-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'In the WordPress editor, each paragraph, image, or video is presented as a distinct “block” of content.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\timage: (\n\t\t\t\t\t\t<WelcomeGuideImage\n\t\t\t\t\t\t\tnonAnimatedSrc=\"https://s.w.org/images/block-editor/welcome-editor.svg\"\n\t\t\t\t\t\t\tanimatedSrc=\"https://s.w.org/images/block-editor/welcome-editor.gif\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"edit-post-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Make each block your own' ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<p className=\"edit-post-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Each block comes with its own set of controls for changing things like color, width, and alignment. These will show and hide automatically when you have a block selected.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\timage: (\n\t\t\t\t\t\t<WelcomeGuideImage\n\t\t\t\t\t\t\tnonAnimatedSrc=\"https://s.w.org/images/block-editor/welcome-library.svg\"\n\t\t\t\t\t\t\tanimatedSrc=\"https://s.w.org/images/block-editor/welcome-library.gif\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"edit-post-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Get to know the block library' ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<p className=\"edit-post-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t'All of the blocks available to you live in the block library. You’ll find it wherever you see the <InserterIconImage /> icon.'\n\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\t\tInserterIconImage: (\n\t\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\t\talt={ __( 'inserter' ) }\n\t\t\t\t\t\t\t\t\t\t\t\tsrc=\"data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='18' height='18' rx='2' fill='%231E1E1E'/%3E%3Cpath d='M9.22727 4V14M4 8.77273H14' stroke='white' stroke-width='1.5'/%3E%3C/svg%3E%0A\"\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</p>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\timage: (\n\t\t\t\t\t\t<WelcomeGuideImage\n\t\t\t\t\t\t\tnonAnimatedSrc=\"https://s.w.org/images/block-editor/welcome-documentation.svg\"\n\t\t\t\t\t\t\tanimatedSrc=\"https://s.w.org/images/block-editor/welcome-documentation.gif\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"edit-post-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Learn how to use the block editor' ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<p className=\"edit-post-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'New to the block editor? Want to learn more about using it? '\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t\t\t\t'https://wordpress.org/support/article/wordpress-editor/'\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\t\t{ __( \"Here's a detailed guide.\" ) }\n\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t</p>\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/>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { Guide } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport WelcomeGuideImage from './image';\nimport { store as editPostStore } from '../../store';\n\nexport default function WelcomeGuideTemplate() {\n\tconst { toggleFeature } = useDispatch( editPostStore );\n\n\treturn (\n\t\t<Guide\n\t\t\tclassName=\"edit-template-welcome-guide\"\n\t\t\tcontentLabel={ __( 'Welcome to the template editor' ) }\n\t\t\tfinishButtonText={ __( 'Get started' ) }\n\t\t\tonFinish={ () => toggleFeature( 'welcomeGuideTemplate' ) }\n\t\t\tpages={ [\n\t\t\t\t{\n\t\t\t\t\timage: (\n\t\t\t\t\t\t<WelcomeGuideImage\n\t\t\t\t\t\t\tnonAnimatedSrc=\"https://s.w.org/images/block-editor/welcome-template-editor.svg\"\n\t\t\t\t\t\t\tanimatedSrc=\"https://s.w.org/images/block-editor/welcome-template-editor.gif\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"edit-post-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Welcome to the template editor' ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<p className=\"edit-post-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Templates help define the layout of the site. You can customize all aspects of your posts and pages using blocks and patterns in this editor.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</p>\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/>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport WelcomeGuideDefault from './default';\nimport WelcomeGuideTemplate from './template';\nimport { store as editPostStore } from '../../store';\n\nexport default function WelcomeGuide() {\n\tconst { isActive, isTemplateMode } = useSelect( ( select ) => {\n\t\tconst { isFeatureActive, isEditingTemplate } = select( editPostStore );\n\t\tconst _isTemplateMode = isEditingTemplate();\n\t\tconst feature = _isTemplateMode\n\t\t\t? 'welcomeGuideTemplate'\n\t\t\t: 'welcomeGuide';\n\n\t\treturn {\n\t\t\tisActive: isFeatureActive( feature ),\n\t\t\tisTemplateMode: _isTemplateMode,\n\t\t};\n\t}, [] );\n\n\tif ( ! isActive ) {\n\t\treturn null;\n\t}\n\n\treturn isTemplateMode ? <WelcomeGuideTemplate /> : <WelcomeGuideDefault />;\n}\n","/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport { withPluginContext } from '@wordpress/plugins';\nimport { createSlotFill, PanelBody } from '@wordpress/components';\n\nconst { Fill, Slot } = createSlotFill( 'PluginPostPublishPanel' );\n\nconst PluginPostPublishPanelFill = ( {\n\tchildren,\n\tclassName,\n\ttitle,\n\tinitialOpen = false,\n\ticon,\n} ) => (\n\t<Fill>\n\t\t<PanelBody\n\t\t\tclassName={ className }\n\t\t\tinitialOpen={ initialOpen || ! title }\n\t\t\ttitle={ title }\n\t\t\ticon={ icon }\n\t\t>\n\t\t\t{ children }\n\t\t</PanelBody>\n\t</Fill>\n);\n/**\n * Renders provided content to the post-publish panel in the publish flow\n * (side panel that opens after a user publishes the post).\n *\n * @param {Object} props Component properties.\n * @param {string} [props.className] An optional class name added to the panel.\n * @param {string} [props.title] Title displayed at the top of the panel.\n * @param {boolean} [props.initialOpen=false] Whether to have the panel initially opened. When no title is provided it is always opened.\n * @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered when the sidebar is pinned to toolbar.\n *\n * @example\n * ```js\n * // Using ES5 syntax\n * var __ = wp.i18n.__;\n * var PluginPostPublishPanel = wp.editPost.PluginPostPublishPanel;\n *\n * function MyPluginPostPublishPanel() {\n * \treturn wp.element.createElement(\n * \t\tPluginPostPublishPanel,\n * \t\t{\n * \t\t\tclassName: 'my-plugin-post-publish-panel',\n * \t\t\ttitle: __( 'My panel title' ),\n * \t\t\tinitialOpen: true,\n * \t\t},\n * \t\t__( 'My panel content' )\n * \t);\n * }\n * ```\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { __ } from '@wordpress/i18n';\n * import { PluginPostPublishPanel } from '@wordpress/edit-post';\n *\n * const MyPluginPostPublishPanel = () => (\n * \t<PluginPostPublishPanel\n * \t\tclassName=\"my-plugin-post-publish-panel\"\n * \t\ttitle={ __( 'My panel title' ) }\n * \t\tinitialOpen={ true }\n * \t>\n * { __( 'My panel content' ) }\n * \t</PluginPostPublishPanel>\n * );\n * ```\n *\n * @return {WPComponent} The component to be rendered.\n */\n\nconst PluginPostPublishPanel = compose(\n\twithPluginContext( ( context, ownProps ) => {\n\t\treturn {\n\t\t\ticon: ownProps.icon || context.icon,\n\t\t};\n\t} )\n)( PluginPostPublishPanelFill );\n\nPluginPostPublishPanel.Slot = Slot;\n\nexport default PluginPostPublishPanel;\n","/**\n * WordPress dependencies\n */\nimport { createSlotFill, PanelBody } from '@wordpress/components';\nimport { compose } from '@wordpress/compose';\nimport { withPluginContext } from '@wordpress/plugins';\nconst { Fill, Slot } = createSlotFill( 'PluginPrePublishPanel' );\n\nconst PluginPrePublishPanelFill = ( {\n\tchildren,\n\tclassName,\n\ttitle,\n\tinitialOpen = false,\n\ticon,\n} ) => (\n\t<Fill>\n\t\t<PanelBody\n\t\t\tclassName={ className }\n\t\t\tinitialOpen={ initialOpen || ! title }\n\t\t\ttitle={ title }\n\t\t\ticon={ icon }\n\t\t>\n\t\t\t{ children }\n\t\t</PanelBody>\n\t</Fill>\n);\n\n/**\n * Renders provided content to the pre-publish side panel in the publish flow\n * (side panel that opens when a user first pushes \"Publish\" from the main editor).\n *\n * @param {Object} props Component props.\n * @param {string} [props.className] An optional class name added to the panel.\n * @param {string} [props.title] Title displayed at the top of the panel.\n * @param {boolean} [props.initialOpen=false] Whether to have the panel initially opened.\n * When no title is provided it is always opened.\n * @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/)\n * icon slug string, or an SVG WP element, to be rendered when\n * the sidebar is pinned to toolbar.\n *\n * @example\n * ```js\n * // Using ES5 syntax\n * var __ = wp.i18n.__;\n * var PluginPrePublishPanel = wp.editPost.PluginPrePublishPanel;\n *\n * function MyPluginPrePublishPanel() {\n * \treturn wp.element.createElement(\n * \t\tPluginPrePublishPanel,\n * \t\t{\n * \t\t\tclassName: 'my-plugin-pre-publish-panel',\n * \t\t\ttitle: __( 'My panel title' ),\n * \t\t\tinitialOpen: true,\n * \t\t},\n * \t\t__( 'My panel content' )\n * \t);\n * }\n * ```\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { __ } from '@wordpress/i18n';\n * import { PluginPrePublishPanel } from '@wordpress/edit-post';\n *\n * const MyPluginPrePublishPanel = () => (\n * \t<PluginPrePublishPanel\n * \t\tclassName=\"my-plugin-pre-publish-panel\"\n * \t\ttitle={ __( 'My panel title' ) }\n * \t\tinitialOpen={ true }\n * \t>\n * \t { __( 'My panel content' ) }\n * \t</PluginPrePublishPanel>\n * );\n * ```\n *\n * @return {WPComponent} The component to be rendered.\n */\nconst PluginPrePublishPanel = compose(\n\twithPluginContext( ( context, ownProps ) => {\n\t\treturn {\n\t\t\ticon: ownProps.icon || context.icon,\n\t\t};\n\t} )\n)( PluginPrePublishPanelFill );\n\nPluginPrePublishPanel.Slot = Slot;\n\nexport default PluginPrePublishPanel;\n","/**\n * WordPress dependencies\n */\nimport {\n\tEntitiesSavedStates,\n\tPostPublishPanel,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { Button, createSlotFill } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useCallback } from '@wordpress/element';\n/**\n * Internal dependencies\n */\nimport PluginPostPublishPanel from '../sidebar/plugin-post-publish-panel';\nimport PluginPrePublishPanel from '../sidebar/plugin-pre-publish-panel';\nimport { store as editPostStore } from '../../store';\n\nconst { Fill, Slot } = createSlotFill( 'ActionsPanel' );\n\nexport const ActionsPanelFill = Fill;\n\nexport default function ActionsPanel( {\n\tsetEntitiesSavedStatesCallback,\n\tcloseEntitiesSavedStates,\n\tisEntitiesSavedStatesOpen,\n} ) {\n\tconst { closePublishSidebar, togglePublishSidebar } =\n\t\tuseDispatch( editPostStore );\n\tconst {\n\t\tpublishSidebarOpened,\n\t\thasActiveMetaboxes,\n\t\tisSavingMetaBoxes,\n\t\thasNonPostEntityChanges,\n\t} = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tpublishSidebarOpened:\n\t\t\t\tselect( editPostStore ).isPublishSidebarOpened(),\n\t\t\thasActiveMetaboxes: select( editPostStore ).hasMetaBoxes(),\n\t\t\tisSavingMetaBoxes: select( editPostStore ).isSavingMetaBoxes(),\n\t\t\thasNonPostEntityChanges:\n\t\t\t\tselect( editorStore ).hasNonPostEntityChanges(),\n\t\t};\n\t}, [] );\n\n\tconst openEntitiesSavedStates = useCallback(\n\t\t() => setEntitiesSavedStatesCallback( true ),\n\t\t[]\n\t);\n\n\t// It is ok for these components to be unmounted when not in visual use.\n\t// We don't want more than one present at a time, decide which to render.\n\tlet unmountableContent;\n\tif ( publishSidebarOpened ) {\n\t\tunmountableContent = (\n\t\t\t<PostPublishPanel\n\t\t\t\tonClose={ closePublishSidebar }\n\t\t\t\tforceIsDirty={ hasActiveMetaboxes }\n\t\t\t\tforceIsSaving={ isSavingMetaBoxes }\n\t\t\t\tPrePublishExtension={ PluginPrePublishPanel.Slot }\n\t\t\t\tPostPublishExtension={ PluginPostPublishPanel.Slot }\n\t\t\t/>\n\t\t);\n\t} else if ( hasNonPostEntityChanges ) {\n\t\tunmountableContent = (\n\t\t\t<div className=\"edit-post-layout__toggle-entities-saved-states-panel\">\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tclassName=\"edit-post-layout__toggle-entities-saved-states-panel-button\"\n\t\t\t\t\tonClick={ openEntitiesSavedStates }\n\t\t\t\t\taria-expanded={ false }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Open save panel' ) }\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t);\n\t} else {\n\t\tunmountableContent = (\n\t\t\t<div className=\"edit-post-layout__toggle-publish-panel\">\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tclassName=\"edit-post-layout__toggle-publish-panel-button\"\n\t\t\t\t\tonClick={ togglePublishSidebar }\n\t\t\t\t\taria-expanded={ false }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Open publish panel' ) }\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Since EntitiesSavedStates controls its own panel, we can keep it\n\t// always mounted to retain its own component state (such as checkboxes).\n\treturn (\n\t\t<>\n\t\t\t{ isEntitiesSavedStatesOpen && (\n\t\t\t\t<EntitiesSavedStates close={ closeEntitiesSavedStates } />\n\t\t\t) }\n\t\t\t<Slot bubblesVirtually />\n\t\t\t{ ! isEntitiesSavedStatesOpen && unmountableContent }\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Modal } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState, useEffect, useMemo } from '@wordpress/element';\nimport {\n\tstore as blockEditorStore,\n\t__experimentalBlockPatternsList as BlockPatternsList,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useAsyncList } from '@wordpress/compose';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nfunction useStartPatterns() {\n\t// A pattern is a start pattern if it includes 'core/post-content' in its blockTypes,\n\t// and it has no postTypes declares and the current post type is page or if\n\t// the current post type is part of the postTypes declared.\n\tconst { blockPatternsWithPostContentBlockType, postType } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalGetPatternsByBlockTypes } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { getCurrentPostType } = select( editorStore );\n\t\t\treturn {\n\t\t\t\t// get pa\n\t\t\t\tblockPatternsWithPostContentBlockType:\n\t\t\t\t\t__experimentalGetPatternsByBlockTypes(\n\t\t\t\t\t\t'core/post-content'\n\t\t\t\t\t),\n\t\t\t\tpostType: getCurrentPostType(),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\treturn useMemo( () => {\n\t\t// filter patterns without postTypes declared if the current postType is page\n\t\t// or patterns that declare the current postType in its post type array.\n\t\treturn blockPatternsWithPostContentBlockType.filter( ( pattern ) => {\n\t\t\treturn (\n\t\t\t\t( postType === 'page' && ! pattern.postTypes ) ||\n\t\t\t\t( Array.isArray( pattern.postTypes ) &&\n\t\t\t\t\tpattern.postTypes.includes( postType ) )\n\t\t\t);\n\t\t} );\n\t}, [ postType, blockPatternsWithPostContentBlockType ] );\n}\n\nfunction PatternSelection( { onChoosePattern } ) {\n\tconst blockPatterns = useStartPatterns();\n\tconst shownBlockPatterns = useAsyncList( blockPatterns );\n\tconst { resetEditorBlocks } = useDispatch( editorStore );\n\treturn (\n\t\t<BlockPatternsList\n\t\t\tblockPatterns={ blockPatterns }\n\t\t\tshownPatterns={ shownBlockPatterns }\n\t\t\tonClickPattern={ ( _pattern, blocks ) => {\n\t\t\t\tresetEditorBlocks( blocks );\n\t\t\t\tonChoosePattern();\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nconst START_PAGE_MODAL_STATES = {\n\tINITIAL: 'INITIAL',\n\tPATTERN: 'PATTERN',\n\tCLOSED: 'CLOSED',\n};\n\nexport default function StartPageOptions() {\n\tconst [ modalState, setModalState ] = useState(\n\t\tSTART_PAGE_MODAL_STATES.INITIAL\n\t);\n\tconst blockPatterns = useStartPatterns();\n\tconst hasStartPattern = blockPatterns.length > 0;\n\tconst shouldOpenModel = useSelect(\n\t\t( select ) => {\n\t\t\tif (\n\t\t\t\t! hasStartPattern ||\n\t\t\t\tmodalState !== START_PAGE_MODAL_STATES.INITIAL\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst { getEditedPostContent, isEditedPostSaveable } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { isEditingTemplate, isFeatureActive } =\n\t\t\t\tselect( editPostStore );\n\t\t\treturn (\n\t\t\t\t! isEditedPostSaveable() &&\n\t\t\t\t'' === getEditedPostContent() &&\n\t\t\t\t! isEditingTemplate() &&\n\t\t\t\t! isFeatureActive( 'welcomeGuide' )\n\t\t\t);\n\t\t},\n\t\t[ modalState, hasStartPattern ]\n\t);\n\n\tuseEffect( () => {\n\t\tif ( shouldOpenModel ) {\n\t\t\tsetModalState( START_PAGE_MODAL_STATES.PATTERN );\n\t\t}\n\t}, [ shouldOpenModel ] );\n\n\tif (\n\t\tmodalState === START_PAGE_MODAL_STATES.INITIAL ||\n\t\tmodalState === START_PAGE_MODAL_STATES.CLOSED\n\t) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"edit-post-start-page-options__modal\"\n\t\t\ttitle={ __( 'Choose a pattern' ) }\n\t\t\tcloseLabel={ __( 'Cancel' ) }\n\t\t\tonRequestClose={ () => {\n\t\t\t\tsetModalState( START_PAGE_MODAL_STATES.CLOSED );\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"edit-post-start-page-options__modal-content\">\n\t\t\t\t{ modalState === START_PAGE_MODAL_STATES.PATTERN && (\n\t\t\t\t\t<PatternSelection\n\t\t\t\t\t\tonChoosePattern={ () => {\n\t\t\t\t\t\t\tsetModalState( START_PAGE_MODAL_STATES.CLOSED );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</Modal>\n\t);\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAutosaveMonitor,\n\tLocalAutosaveMonitor,\n\tUnsavedChangesWarning,\n\tEditorNotices,\n\tEditorKeyboardShortcutsRegister,\n\tEditorSnackbars,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { BlockBreadcrumb, BlockStyles } from '@wordpress/block-editor';\nimport { Button, ScrollLock, Popover } from '@wordpress/components';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { PluginArea } from '@wordpress/plugins';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport {\n\tComplementaryArea,\n\tFullscreenMode,\n\tInterfaceSkeleton,\n\tstore as interfaceStore,\n} from '@wordpress/interface';\nimport { useState, useEffect, useCallback } from '@wordpress/element';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport TextEditor from '../text-editor';\nimport VisualEditor from '../visual-editor';\nimport EditPostKeyboardShortcuts from '../keyboard-shortcuts';\nimport KeyboardShortcutHelpModal from '../keyboard-shortcut-help-modal';\nimport EditPostPreferencesModal from '../preferences-modal';\nimport BrowserURL from '../browser-url';\nimport Header from '../header';\nimport InserterSidebar from '../secondary-sidebar/inserter-sidebar';\nimport ListViewSidebar from '../secondary-sidebar/list-view-sidebar';\nimport SettingsSidebar from '../sidebar/settings-sidebar';\nimport MetaBoxes from '../meta-boxes';\nimport WelcomeGuide from '../welcome-guide';\nimport ActionsPanel from './actions-panel';\nimport StartPageOptions from '../start-page-options';\nimport { store as editPostStore } from '../../store';\n\nconst interfaceLabels = {\n\t/* translators: accessibility text for the editor top bar landmark region. */\n\theader: __( 'Editor top bar' ),\n\t/* translators: accessibility text for the editor content landmark region. */\n\tbody: __( 'Editor content' ),\n\t/* translators: accessibility text for the editor settings landmark region. */\n\tsidebar: __( 'Editor settings' ),\n\t/* translators: accessibility text for the editor publish landmark region. */\n\tactions: __( 'Editor publish' ),\n\t/* translators: accessibility text for the editor footer landmark region. */\n\tfooter: __( 'Editor footer' ),\n};\n\nfunction Layout( { styles } ) {\n\tconst isMobileViewport = useViewportMatch( 'medium', '<' );\n\tconst isHugeViewport = useViewportMatch( 'huge', '>=' );\n\tconst { openGeneralSidebar, closeGeneralSidebar, setIsInserterOpened } =\n\t\tuseDispatch( editPostStore );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst {\n\t\tmode,\n\t\tisFullscreenActive,\n\t\tisRichEditingEnabled,\n\t\tsidebarIsOpened,\n\t\thasActiveMetaboxes,\n\t\thasFixedToolbar,\n\t\tpreviousShortcut,\n\t\tnextShortcut,\n\t\thasBlockSelected,\n\t\tisInserterOpened,\n\t\tisListViewOpened,\n\t\tshowIconLabels,\n\t\thasReducedUI,\n\t\tshowBlockBreadcrumbs,\n\t\tisTemplateMode,\n\t\tdocumentLabel,\n\t} = useSelect( ( select ) => {\n\t\tconst { getEditorSettings, getPostTypeLabel } = select( editorStore );\n\t\tconst editorSettings = getEditorSettings();\n\t\tconst postTypeLabel = getPostTypeLabel();\n\n\t\treturn {\n\t\t\tisTemplateMode: select( editPostStore ).isEditingTemplate(),\n\t\t\thasFixedToolbar:\n\t\t\t\tselect( editPostStore ).isFeatureActive( 'fixedToolbar' ),\n\t\t\tsidebarIsOpened: !! (\n\t\t\t\tselect( interfaceStore ).getActiveComplementaryArea(\n\t\t\t\t\teditPostStore.name\n\t\t\t\t) || select( editPostStore ).isPublishSidebarOpened()\n\t\t\t),\n\t\t\tisFullscreenActive:\n\t\t\t\tselect( editPostStore ).isFeatureActive( 'fullscreenMode' ),\n\t\t\tisInserterOpened: select( editPostStore ).isInserterOpened(),\n\t\t\tisListViewOpened: select( editPostStore ).isListViewOpened(),\n\t\t\tmode: select( editPostStore ).getEditorMode(),\n\t\t\tisRichEditingEnabled: editorSettings.richEditingEnabled,\n\t\t\thasActiveMetaboxes: select( editPostStore ).hasMetaBoxes(),\n\t\t\tpreviousShortcut: select(\n\t\t\t\tkeyboardShortcutsStore\n\t\t\t).getAllShortcutKeyCombinations( 'core/edit-post/previous-region' ),\n\t\t\tnextShortcut: select(\n\t\t\t\tkeyboardShortcutsStore\n\t\t\t).getAllShortcutKeyCombinations( 'core/edit-post/next-region' ),\n\t\t\tshowIconLabels:\n\t\t\t\tselect( editPostStore ).isFeatureActive( 'showIconLabels' ),\n\t\t\thasReducedUI:\n\t\t\t\tselect( editPostStore ).isFeatureActive( 'reducedUI' ),\n\t\t\tshowBlockBreadcrumbs: select( editPostStore ).isFeatureActive(\n\t\t\t\t'showBlockBreadcrumbs'\n\t\t\t),\n\t\t\t// translators: Default label for the Document in the Block Breadcrumb.\n\t\t\tdocumentLabel: postTypeLabel || _x( 'Document', 'noun' ),\n\t\t};\n\t}, [] );\n\tconst className = classnames( 'edit-post-layout', 'is-mode-' + mode, {\n\t\t'is-sidebar-opened': sidebarIsOpened,\n\t\t'has-fixed-toolbar': hasFixedToolbar,\n\t\t'has-metaboxes': hasActiveMetaboxes,\n\t\t'show-icon-labels': showIconLabels,\n\t} );\n\tconst openSidebarPanel = () =>\n\t\topenGeneralSidebar(\n\t\t\thasBlockSelected ? 'edit-post/block' : 'edit-post/document'\n\t\t);\n\n\t// Inserter and Sidebars are mutually exclusive\n\tuseEffect( () => {\n\t\tif ( sidebarIsOpened && ! isHugeViewport ) {\n\t\t\tsetIsInserterOpened( false );\n\t\t}\n\t}, [ sidebarIsOpened, isHugeViewport ] );\n\tuseEffect( () => {\n\t\tif ( isInserterOpened && ! isHugeViewport ) {\n\t\t\tcloseGeneralSidebar();\n\t\t}\n\t}, [ isInserterOpened, isHugeViewport ] );\n\n\t// Local state for save panel.\n\t// Note 'truthy' callback implies an open panel.\n\tconst [ entitiesSavedStatesCallback, setEntitiesSavedStatesCallback ] =\n\t\tuseState( false );\n\tconst closeEntitiesSavedStates = useCallback(\n\t\t( arg ) => {\n\t\t\tif ( typeof entitiesSavedStatesCallback === 'function' ) {\n\t\t\t\tentitiesSavedStatesCallback( arg );\n\t\t\t}\n\t\t\tsetEntitiesSavedStatesCallback( false );\n\t\t},\n\t\t[ entitiesSavedStatesCallback ]\n\t);\n\n\tconst secondarySidebarLabel = isListViewOpened\n\t\t? __( 'List View' )\n\t\t: __( 'Block Library' );\n\n\tconst secondarySidebar = () => {\n\t\tif ( mode === 'visual' && isInserterOpened ) {\n\t\t\treturn <InserterSidebar />;\n\t\t}\n\t\tif ( mode === 'visual' && isListViewOpened ) {\n\t\t\treturn <ListViewSidebar />;\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tfunction onPluginAreaError( name ) {\n\t\tcreateErrorNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: plugin name */\n\t\t\t\t__(\n\t\t\t\t\t'The \"%s\" plugin has encountered an error and cannot be rendered.'\n\t\t\t\t),\n\t\t\t\tname\n\t\t\t)\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<FullscreenMode isActive={ isFullscreenActive } />\n\t\t\t<BrowserURL />\n\t\t\t<UnsavedChangesWarning />\n\t\t\t<AutosaveMonitor />\n\t\t\t<LocalAutosaveMonitor />\n\t\t\t<EditPostKeyboardShortcuts />\n\t\t\t<EditorKeyboardShortcutsRegister />\n\t\t\t<SettingsSidebar />\n\t\t\t<InterfaceSkeleton\n\t\t\t\tclassName={ className }\n\t\t\t\tlabels={ {\n\t\t\t\t\t...interfaceLabels,\n\t\t\t\t\tsecondarySidebar: secondarySidebarLabel,\n\t\t\t\t} }\n\t\t\t\theader={\n\t\t\t\t\t<Header\n\t\t\t\t\t\tsetEntitiesSavedStatesCallback={\n\t\t\t\t\t\t\tsetEntitiesSavedStatesCallback\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tsecondarySidebar={ secondarySidebar() }\n\t\t\t\tsidebar={\n\t\t\t\t\t( ! isMobileViewport || sidebarIsOpened ) && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ ! isMobileViewport && ! sidebarIsOpened && (\n\t\t\t\t\t\t\t\t<div className=\"edit-post-layout__toggle-sidebar-panel\">\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"edit-post-layout__toggle-sidebar-panel-button\"\n\t\t\t\t\t\t\t\t\t\tonClick={ openSidebarPanel }\n\t\t\t\t\t\t\t\t\t\taria-expanded={ false }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ hasBlockSelected\n\t\t\t\t\t\t\t\t\t\t\t? __( 'Open block settings' )\n\t\t\t\t\t\t\t\t\t\t\t: __( 'Open document settings' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<ComplementaryArea.Slot scope=\"core/edit-post\" />\n\t\t\t\t\t\t</>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tnotices={ <EditorSnackbars /> }\n\t\t\t\tcontent={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<EditorNotices />\n\t\t\t\t\t\t{ ( mode === 'text' || ! isRichEditingEnabled ) && (\n\t\t\t\t\t\t\t<TextEditor />\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ isRichEditingEnabled && mode === 'visual' && (\n\t\t\t\t\t\t\t<VisualEditor styles={ styles } />\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! isTemplateMode && (\n\t\t\t\t\t\t\t<div className=\"edit-post-layout__metaboxes\">\n\t\t\t\t\t\t\t\t<MetaBoxes location=\"normal\" />\n\t\t\t\t\t\t\t\t<MetaBoxes location=\"advanced\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ isMobileViewport && sidebarIsOpened && (\n\t\t\t\t\t\t\t<ScrollLock />\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<BlockStyles.Slot scope=\"core/block-inspector\" />\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\tfooter={\n\t\t\t\t\t! hasReducedUI &&\n\t\t\t\t\tshowBlockBreadcrumbs &&\n\t\t\t\t\t! isMobileViewport &&\n\t\t\t\t\tisRichEditingEnabled &&\n\t\t\t\t\tmode === 'visual' && (\n\t\t\t\t\t\t<div className=\"edit-post-layout__footer\">\n\t\t\t\t\t\t\t<BlockBreadcrumb rootLabelText={ documentLabel } />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tactions={\n\t\t\t\t\t<ActionsPanel\n\t\t\t\t\t\tcloseEntitiesSavedStates={ closeEntitiesSavedStates }\n\t\t\t\t\t\tisEntitiesSavedStatesOpen={\n\t\t\t\t\t\t\tentitiesSavedStatesCallback\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetEntitiesSavedStatesCallback={\n\t\t\t\t\t\t\tsetEntitiesSavedStatesCallback\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tshortcuts={ {\n\t\t\t\t\tprevious: previousShortcut,\n\t\t\t\t\tnext: nextShortcut,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<EditPostPreferencesModal />\n\t\t\t<KeyboardShortcutHelpModal />\n\t\t\t<WelcomeGuide />\n\t\t\t<StartPageOptions />\n\t\t\t<Popover.Slot />\n\t\t\t<PluginArea onError={ onPluginAreaError } />\n\t\t</>\n\t);\n}\n\nexport default Layout;\n","/**\n * Internal dependencies\n */\nimport {\n\tuseBlockSelectionListener,\n\tuseUpdatePostLinkListener,\n} from './listener-hooks';\n\n/**\n * Data component used for initializing the editor and re-initializes\n * when postId changes or on unmount.\n *\n * @param {number} postId The id of the post.\n * @return {null} This is a data component so does not render any ui.\n */\nexport default function EditorInitialization( { postId } ) {\n\tuseBlockSelectionListener( postId );\n\tuseUpdatePostLinkListener( postId );\n\treturn null;\n}\n","/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEffect, useRef } from '@wordpress/element';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport {\n\tSTORE_NAME,\n\tVIEW_AS_LINK_SELECTOR,\n\tVIEW_AS_PREVIEW_LINK_SELECTOR,\n} from '../../store/constants';\n\n/**\n * This listener hook monitors for block selection and triggers the appropriate\n * sidebar state.\n *\n * @param {number} postId The current post id.\n */\nexport const useBlockSelectionListener = ( postId ) => {\n\tconst { hasBlockSelection, isEditorSidebarOpened } = useSelect(\n\t\t( select ) => ( {\n\t\t\thasBlockSelection:\n\t\t\t\t!! select( blockEditorStore ).getBlockSelectionStart(),\n\t\t\tisEditorSidebarOpened: select( STORE_NAME ).isEditorSidebarOpened(),\n\t\t} ),\n\t\t[ postId ]\n\t);\n\n\tconst { openGeneralSidebar } = useDispatch( STORE_NAME );\n\n\tuseEffect( () => {\n\t\tif ( ! isEditorSidebarOpened ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( hasBlockSelection ) {\n\t\t\topenGeneralSidebar( 'edit-post/block' );\n\t\t} else {\n\t\t\topenGeneralSidebar( 'edit-post/document' );\n\t\t}\n\t}, [ hasBlockSelection, isEditorSidebarOpened ] );\n};\n\n/**\n * This listener hook monitors any change in permalink and updates the view\n * post link in the admin bar.\n *\n * @param {number} postId\n */\nexport const useUpdatePostLinkListener = ( postId ) => {\n\tconst { newPermalink } = useSelect(\n\t\t( select ) => ( {\n\t\t\tnewPermalink: select( editorStore ).getCurrentPost().link,\n\t\t} ),\n\t\t[ postId ]\n\t);\n\tconst nodeToUpdate = useRef();\n\n\tuseEffect( () => {\n\t\tnodeToUpdate.current =\n\t\t\tdocument.querySelector( VIEW_AS_PREVIEW_LINK_SELECTOR ) ||\n\t\t\tdocument.querySelector( VIEW_AS_LINK_SELECTOR );\n\t}, [ postId ] );\n\n\tuseEffect( () => {\n\t\tif ( ! newPermalink || ! nodeToUpdate.current ) {\n\t\t\treturn;\n\t\t}\n\t\tnodeToUpdate.current.setAttribute( 'href', newPermalink );\n\t}, [ newPermalink ] );\n};\n","/**\n * External dependencies\n */\nimport { forEach, map, without } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tEditorProvider,\n\tErrorBoundary,\n\tPostLockedModal,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport { StrictMode, useMemo } from '@wordpress/element';\nimport { SlotFillProvider } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { ShortcutProvider } from '@wordpress/keyboard-shortcuts';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport Layout from './components/layout';\nimport EditorInitialization from './components/editor-initialization';\nimport { store as editPostStore } from './store';\n\nfunction Editor( {\n\tpostId,\n\tpostType,\n\tsettings,\n\tinitialEdits,\n\tonError,\n\t...props\n} ) {\n\tconst {\n\t\thasFixedToolbar,\n\t\tfocusMode,\n\t\thasReducedUI,\n\t\thasInlineToolbar,\n\t\thasThemeStyles,\n\t\tpost,\n\t\tpreferredStyleVariations,\n\t\thiddenBlockTypes,\n\t\tblockTypes,\n\t\tkeepCaretInsideBlock,\n\t\tisTemplateMode,\n\t\ttemplate,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisFeatureActive,\n\t\t\t\t__experimentalGetPreviewDeviceType,\n\t\t\t\tisEditingTemplate,\n\t\t\t\tgetEditedPostTemplate,\n\t\t\t\tgetHiddenBlockTypes,\n\t\t\t} = select( editPostStore );\n\t\t\tconst { getEntityRecord, getPostType, getEntityRecords, canUser } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst { getEditorSettings } = select( editorStore );\n\t\t\tconst { getBlockTypes } = select( blocksStore );\n\t\t\tconst isTemplate = [ 'wp_template', 'wp_template_part' ].includes(\n\t\t\t\tpostType\n\t\t\t);\n\t\t\t// Ideally the initializeEditor function should be called using the ID of the REST endpoint.\n\t\t\t// to avoid the special case.\n\t\t\tlet postObject;\n\t\t\tif ( isTemplate ) {\n\t\t\t\tconst posts = getEntityRecords( 'postType', postType, {\n\t\t\t\t\twp_id: postId,\n\t\t\t\t} );\n\t\t\t\tpostObject = posts?.[ 0 ];\n\t\t\t} else {\n\t\t\t\tpostObject = getEntityRecord( 'postType', postType, postId );\n\t\t\t}\n\t\t\tconst supportsTemplateMode =\n\t\t\t\tgetEditorSettings().supportsTemplateMode;\n\t\t\tconst isViewable = getPostType( postType )?.viewable ?? false;\n\t\t\tconst canEditTemplate = canUser( 'create', 'templates' );\n\n\t\t\treturn {\n\t\t\t\thasFixedToolbar:\n\t\t\t\t\tisFeatureActive( 'fixedToolbar' ) ||\n\t\t\t\t\t__experimentalGetPreviewDeviceType() !== 'Desktop',\n\t\t\t\tfocusMode: isFeatureActive( 'focusMode' ),\n\t\t\t\thasReducedUI: isFeatureActive( 'reducedUI' ),\n\t\t\t\thasInlineToolbar: isFeatureActive( 'inlineToolbar' ),\n\t\t\t\thasThemeStyles: isFeatureActive( 'themeStyles' ),\n\t\t\t\tpreferredStyleVariations: select( preferencesStore ).get(\n\t\t\t\t\t'core/edit-post',\n\t\t\t\t\t'preferredStyleVariations'\n\t\t\t\t),\n\t\t\t\thiddenBlockTypes: getHiddenBlockTypes(),\n\t\t\t\tblockTypes: getBlockTypes(),\n\t\t\t\tkeepCaretInsideBlock: isFeatureActive( 'keepCaretInsideBlock' ),\n\t\t\t\tisTemplateMode: isEditingTemplate(),\n\t\t\t\ttemplate:\n\t\t\t\t\tsupportsTemplateMode && isViewable && canEditTemplate\n\t\t\t\t\t\t? getEditedPostTemplate()\n\t\t\t\t\t\t: null,\n\t\t\t\tpost: postObject,\n\t\t\t};\n\t\t},\n\t\t[ postType, postId ]\n\t);\n\n\tconst { updatePreferredStyleVariations, setIsInserterOpened } =\n\t\tuseDispatch( editPostStore );\n\n\tconst editorSettings = useMemo( () => {\n\t\tconst result = {\n\t\t\t...settings,\n\t\t\t__experimentalPreferredStyleVariations: {\n\t\t\t\tvalue: preferredStyleVariations,\n\t\t\t\tonChange: updatePreferredStyleVariations,\n\t\t\t},\n\t\t\thasFixedToolbar,\n\t\t\tfocusMode,\n\t\t\thasReducedUI,\n\t\t\thasInlineToolbar,\n\n\t\t\t// This is marked as experimental to give time for the quick inserter to mature.\n\t\t\t__experimentalSetIsInserterOpened: setIsInserterOpened,\n\t\t\tkeepCaretInsideBlock,\n\t\t\t// Keep a reference of the `allowedBlockTypes` from the server to handle use cases\n\t\t\t// where we need to differentiate if a block is disabled by the user or some plugin.\n\t\t\tdefaultAllowedBlockTypes: settings.allowedBlockTypes,\n\t\t};\n\n\t\t// Omit hidden block types if exists and non-empty.\n\t\tif ( hiddenBlockTypes.length > 0 ) {\n\t\t\t// Defer to passed setting for `allowedBlockTypes` if provided as\n\t\t\t// anything other than `true` (where `true` is equivalent to allow\n\t\t\t// all block types).\n\t\t\tconst defaultAllowedBlockTypes =\n\t\t\t\ttrue === settings.allowedBlockTypes\n\t\t\t\t\t? map( blockTypes, 'name' )\n\t\t\t\t\t: settings.allowedBlockTypes || [];\n\n\t\t\tresult.allowedBlockTypes = without(\n\t\t\t\tdefaultAllowedBlockTypes,\n\t\t\t\t...hiddenBlockTypes\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}, [\n\t\tsettings,\n\t\thasFixedToolbar,\n\t\tfocusMode,\n\t\thasReducedUI,\n\t\thiddenBlockTypes,\n\t\tblockTypes,\n\t\tpreferredStyleVariations,\n\t\tsetIsInserterOpened,\n\t\tupdatePreferredStyleVariations,\n\t\tkeepCaretInsideBlock,\n\t] );\n\n\tconst styles = useMemo( () => {\n\t\tconst themeStyles = [];\n\t\tconst presetStyles = [];\n\t\tforEach( settings.styles, ( style ) => {\n\t\t\tif ( ! style.__unstableType || style.__unstableType === 'theme' ) {\n\t\t\t\tthemeStyles.push( style );\n\t\t\t} else {\n\t\t\t\tpresetStyles.push( style );\n\t\t\t}\n\t\t} );\n\t\tconst defaultEditorStyles = [\n\t\t\t...settings.defaultEditorStyles,\n\t\t\t...presetStyles,\n\t\t];\n\t\treturn hasThemeStyles && themeStyles.length\n\t\t\t? settings.styles\n\t\t\t: defaultEditorStyles;\n\t}, [ settings, hasThemeStyles ] );\n\n\tif ( ! post ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StrictMode>\n\t\t\t<ShortcutProvider>\n\t\t\t\t<SlotFillProvider>\n\t\t\t\t\t<EditorProvider\n\t\t\t\t\t\tsettings={ editorSettings }\n\t\t\t\t\t\tpost={ post }\n\t\t\t\t\t\tinitialEdits={ initialEdits }\n\t\t\t\t\t\tuseSubRegistry={ false }\n\t\t\t\t\t\t__unstableTemplate={\n\t\t\t\t\t\t\tisTemplateMode ? template : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ErrorBoundary onError={ onError }>\n\t\t\t\t\t\t\t<EditorInitialization postId={ postId } />\n\t\t\t\t\t\t\t<Layout styles={ styles } />\n\t\t\t\t\t\t</ErrorBoundary>\n\t\t\t\t\t\t<PostLockedModal />\n\t\t\t\t\t</EditorProvider>\n\t\t\t\t</SlotFillProvider>\n\t\t\t</ShortcutProvider>\n\t\t</StrictMode>\n\t);\n}\n\nexport default Editor;\n","/**\n * WordPress dependencies\n */\nimport { BlockSettingsMenuControls } from '@wordpress/block-editor';\nimport { MenuItem } from '@wordpress/components';\nimport { compose } from '@wordpress/compose';\n\nconst isEverySelectedBlockAllowed = ( selected, allowed ) =>\n\tselected.filter( ( id ) => ! allowed.includes( id ) ).length === 0;\n\n/**\n * Plugins may want to add an item to the menu either for every block\n * or only for the specific ones provided in the `allowedBlocks` component property.\n *\n * If there are multiple blocks selected the item will be rendered if every block\n * is of one allowed type (not necessarily the same).\n *\n * @param {string[]} selectedBlocks Array containing the names of the blocks selected\n * @param {string[]} allowedBlocks Array containing the names of the blocks allowed\n * @return {boolean} Whether the item will be rendered or not.\n */\nconst shouldRenderItem = ( selectedBlocks, allowedBlocks ) =>\n\t! Array.isArray( allowedBlocks ) ||\n\tisEverySelectedBlockAllowed( selectedBlocks, allowedBlocks );\n\n/**\n * Renders a new item in the block settings menu.\n *\n * @param {Object} props Component props.\n * @param {Array} [props.allowedBlocks] An array containing a list of block names for which the item should be shown. If not present, it'll be rendered for any block. If multiple blocks are selected, it'll be shown if and only if all of them are in the allowed list.\n * @param {WPBlockTypeIconRender} [props.icon] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element.\n * @param {string} props.label The menu item text.\n * @param {Function} props.onClick Callback function to be executed when the user click the menu item.\n * @param {boolean} [props.small] Whether to render the label or not.\n * @param {string} [props.role] The ARIA role for the menu item.\n *\n * @example\n * ```js\n * // Using ES5 syntax\n * var __ = wp.i18n.__;\n * var PluginBlockSettingsMenuItem = wp.editPost.PluginBlockSettingsMenuItem;\n *\n * function doOnClick(){\n * \t// To be called when the user clicks the menu item.\n * }\n *\n * function MyPluginBlockSettingsMenuItem() {\n * \treturn wp.element.createElement(\n * \t\tPluginBlockSettingsMenuItem,\n * \t\t{\n * \t\t\tallowedBlocks: [ 'core/paragraph' ],\n * \t\t\ticon: 'dashicon-name',\n * \t\t\tlabel: __( 'Menu item text' ),\n * \t\t\tonClick: doOnClick,\n * \t\t}\n * \t);\n * }\n * ```\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { __ } from '@wordpress/i18n';\n * import { PluginBlockSettingsMenuItem } from '@wordpress/edit-post';\n *\n * const doOnClick = ( ) => {\n * // To be called when the user clicks the menu item.\n * };\n *\n * const MyPluginBlockSettingsMenuItem = () => (\n * <PluginBlockSettingsMenuItem\n * \t\tallowedBlocks={ [ 'core/paragraph' ] }\n * \t\ticon='dashicon-name'\n * \t\tlabel={ __( 'Menu item text' ) }\n * \t\tonClick={ doOnClick } />\n * );\n * ```\n *\n * @return {WPComponent} The component to be rendered.\n */\nconst PluginBlockSettingsMenuItem = ( {\n\tallowedBlocks,\n\ticon,\n\tlabel,\n\tonClick,\n\tsmall,\n\trole,\n} ) => (\n\t<BlockSettingsMenuControls>\n\t\t{ ( { selectedBlocks, onClose } ) => {\n\t\t\tif ( ! shouldRenderItem( selectedBlocks, allowedBlocks ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={ compose( onClick, onClose ) }\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tlabel={ small ? label : undefined }\n\t\t\t\t\trole={ role }\n\t\t\t\t>\n\t\t\t\t\t{ ! small && label }\n\t\t\t\t</MenuItem>\n\t\t\t);\n\t\t} }\n\t</BlockSettingsMenuControls>\n);\n\nexport default PluginBlockSettingsMenuItem;\n","/**\n * WordPress dependencies\n */\nimport { ActionItem } from '@wordpress/interface';\nimport { compose } from '@wordpress/compose';\nimport { MenuItem } from '@wordpress/components';\nimport { withPluginContext } from '@wordpress/plugins';\n\n/**\n * Renders a menu item in `Plugins` group in `More Menu` drop down, and can be used to as a button or link depending on the props provided.\n * The text within the component appears as the menu item label.\n *\n * @param {Object} props Component properties.\n * @param {string} [props.href] When `href` is provided then the menu item is represented as an anchor rather than button. It corresponds to the `href` attribute of the anchor.\n * @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered to the left of the menu item label.\n * @param {Function} [props.onClick=noop] The callback function to be executed when the user clicks the menu item.\n * @param {...*} [props.other] Any additional props are passed through to the underlying [MenuItem](https://github.com/WordPress/gutenberg/tree/HEAD/packages/components/src/menu-item/README.md) component.\n *\n * @example\n * ```js\n * // Using ES5 syntax\n * var __ = wp.i18n.__;\n * var PluginMoreMenuItem = wp.editPost.PluginMoreMenuItem;\n * var moreIcon = wp.element.createElement( 'svg' ); //... svg element.\n *\n * function onButtonClick() {\n * \talert( 'Button clicked.' );\n * }\n *\n * function MyButtonMoreMenuItem() {\n * \treturn wp.element.createElement(\n * \t\tPluginMoreMenuItem,\n * \t\t{\n * \t\t\ticon: moreIcon,\n * \t\t\tonClick: onButtonClick,\n * \t\t},\n * \t\t__( 'My button title' )\n * \t);\n * }\n * ```\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { __ } from '@wordpress/i18n';\n * import { PluginMoreMenuItem } from '@wordpress/edit-post';\n * import { more } from '@wordpress/icons';\n *\n * function onButtonClick() {\n * \talert( 'Button clicked.' );\n * }\n *\n * const MyButtonMoreMenuItem = () => (\n * \t<PluginMoreMenuItem\n * \t\ticon={ more }\n * \t\tonClick={ onButtonClick }\n * \t>\n * \t\t{ __( 'My button title' ) }\n * \t</PluginMoreMenuItem>\n * );\n * ```\n *\n * @return {WPComponent} The component to be rendered.\n */\nexport default compose(\n\twithPluginContext( ( context, ownProps ) => {\n\t\treturn {\n\t\t\tas: ownProps.as ?? MenuItem,\n\t\t\ticon: ownProps.icon || context.icon,\n\t\t\tname: 'core/edit-post/plugin-more-menu',\n\t\t};\n\t} )\n)( ActionItem );\n","/**\n * WordPress dependencies\n */\nimport { ComplementaryAreaMoreMenuItem } from '@wordpress/interface';\n\n/**\n * Renders a menu item in `Plugins` group in `More Menu` drop down,\n * and can be used to activate the corresponding `PluginSidebar` component.\n * The text within the component appears as the menu item label.\n *\n * @param {Object} props Component props.\n * @param {string} props.target A string identifying the target sidebar you wish to be activated by this menu item. Must be the same as the `name` prop you have given to that sidebar.\n * @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered to the left of the menu item label.\n *\n * @example\n * ```js\n * // Using ES5 syntax\n * var __ = wp.i18n.__;\n * var PluginSidebarMoreMenuItem = wp.editPost.PluginSidebarMoreMenuItem;\n * var moreIcon = wp.element.createElement( 'svg' ); //... svg element.\n *\n * function MySidebarMoreMenuItem() {\n * \treturn wp.element.createElement(\n * \t\tPluginSidebarMoreMenuItem,\n * \t\t{\n * \t\t\ttarget: 'my-sidebar',\n * \t\t\ticon: moreIcon,\n * \t\t},\n * \t\t__( 'My sidebar title' )\n * \t)\n * }\n * ```\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { __ } from '@wordpress/i18n';\n * import { PluginSidebarMoreMenuItem } from '@wordpress/edit-post';\n * import { more } from '@wordpress/icons';\n *\n * const MySidebarMoreMenuItem = () => (\n * \t<PluginSidebarMoreMenuItem\n * \t\ttarget=\"my-sidebar\"\n * \t\ticon={ more }\n * \t>\n * \t\t{ __( 'My sidebar title' ) }\n * \t</PluginSidebarMoreMenuItem>\n * );\n * ```\n *\n * @return {WPComponent} The component to be rendered.\n */\n\nexport default function PluginSidebarMoreMenuItem( props ) {\n\treturn (\n\t\t<ComplementaryAreaMoreMenuItem\n\t\t\t// Menu item is marked with unstable prop for backward compatibility.\n\t\t\t// @see https://github.com/WordPress/gutenberg/issues/14457\n\t\t\t__unstableExplicitMenuItem\n\t\t\tscope=\"core/edit-post\"\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport {\n\tregisterCoreBlocks,\n\t__experimentalRegisterExperimentalCoreBlocks,\n} from '@wordpress/block-library';\nimport { render, unmountComponentAtNode } from '@wordpress/element';\nimport { dispatch, select } from '@wordpress/data';\nimport { addFilter } from '@wordpress/hooks';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport './hooks';\nimport './plugins';\nimport Editor from './editor';\nimport { store as editPostStore } from './store';\n\n/**\n * Reinitializes the editor after the user chooses to reboot the editor after\n * an unhandled error occurs, replacing previously mounted editor element using\n * an initial state from prior to the crash.\n *\n * @param {Object} postType Post type of the post to edit.\n * @param {Object} postId ID of the post to edit.\n * @param {Element} target DOM node in which editor is rendered.\n * @param {?Object} settings Editor settings object.\n * @param {Object} initialEdits Programmatic edits to apply initially, to be\n * considered as non-user-initiated (bypass for\n * unsaved changes prompt).\n */\nexport function reinitializeEditor(\n\tpostType,\n\tpostId,\n\ttarget,\n\tsettings,\n\tinitialEdits\n) {\n\tunmountComponentAtNode( target );\n\tconst reboot = reinitializeEditor.bind(\n\t\tnull,\n\t\tpostType,\n\t\tpostId,\n\t\ttarget,\n\t\tsettings,\n\t\tinitialEdits\n\t);\n\n\trender(\n\t\t<Editor\n\t\t\tsettings={ settings }\n\t\t\tonError={ reboot }\n\t\t\tpostId={ postId }\n\t\t\tpostType={ postType }\n\t\t\tinitialEdits={ initialEdits }\n\t\t\trecovery\n\t\t/>,\n\t\ttarget\n\t);\n}\n\n/**\n * Initializes and returns an instance of Editor.\n *\n * @param {string} id Unique identifier for editor instance.\n * @param {string} postType Post type of the post to edit.\n * @param {Object} postId ID of the post to edit.\n * @param {?Object} settings Editor settings object.\n * @param {Object} initialEdits Programmatic edits to apply initially, to be\n * considered as non-user-initiated (bypass for\n * unsaved changes prompt).\n */\nexport function initializeEditor(\n\tid,\n\tpostType,\n\tpostId,\n\tsettings,\n\tinitialEdits\n) {\n\t// Prevent adding template part in the post editor.\n\t// Only add the filter when the post editor is initialized, not imported.\n\taddFilter(\n\t\t'blockEditor.__unstableCanInsertBlockType',\n\t\t'removeTemplatePartsFromInserter',\n\t\t( can, blockType ) => {\n\t\t\tif (\n\t\t\t\t! select( editPostStore ).isEditingTemplate() &&\n\t\t\t\tblockType.name === 'core/template-part'\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn can;\n\t\t}\n\t);\n\n\tconst target = document.getElementById( id );\n\tconst reboot = reinitializeEditor.bind(\n\t\tnull,\n\t\tpostType,\n\t\tpostId,\n\t\ttarget,\n\t\tsettings,\n\t\tinitialEdits\n\t);\n\n\tdispatch( preferencesStore ).setDefaults( 'core/edit-post', {\n\t\teditorMode: 'visual',\n\t\tfixedToolbar: false,\n\t\tfullscreenMode: true,\n\t\thiddenBlockTypes: [],\n\t\tinactivePanels: [],\n\t\tisPublishSidebarEnabled: true,\n\t\topenPanels: [ 'post-status' ],\n\t\tpreferredStyleVariations: {},\n\t\tshowBlockBreadcrumbs: true,\n\t\tshowIconLabels: false,\n\t\tshowListViewByDefault: false,\n\t\tthemeStyles: true,\n\t\twelcomeGuide: true,\n\t\twelcomeGuideTemplate: true,\n\t} );\n\n\tdispatch( blocksStore ).__experimentalReapplyBlockTypeFilters();\n\n\t// Check if the block list view should be open by default.\n\tif ( select( editPostStore ).isFeatureActive( 'showListViewByDefault' ) ) {\n\t\tdispatch( editPostStore ).setIsListViewOpened( true );\n\t}\n\n\tregisterCoreBlocks();\n\tif ( process.env.IS_GUTENBERG_PLUGIN ) {\n\t\t__experimentalRegisterExperimentalCoreBlocks( {\n\t\t\tenableFSEBlocks: settings.__unstableEnableFullSiteEditingBlocks,\n\t\t} );\n\t}\n\n\t// Show a console log warning if the browser is not in Standards rendering mode.\n\tconst documentMode =\n\t\tdocument.compatMode === 'CSS1Compat' ? 'Standards' : 'Quirks';\n\tif ( documentMode !== 'Standards' ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn(\n\t\t\t\"Your browser is using Quirks Mode. \\nThis can cause rendering issues such as blocks overlaying meta boxes in the editor. Quirks Mode can be triggered by PHP errors or HTML code appearing before the opening <!DOCTYPE html>. Try checking the raw page source or your site's PHP error log and resolving errors there, removing any HTML before the doctype, or disabling plugins.\"\n\t\t);\n\t}\n\n\t// This is a temporary fix for a couple of issues specific to Webkit on iOS.\n\t// Without this hack the browser scrolls the mobile toolbar off-screen.\n\t// Once supported in Safari we can replace this in favor of preventScroll.\n\t// For details see issue #18632 and PR #18686\n\t// Specifically, we scroll `interface-interface-skeleton__body` to enable a fixed top toolbar.\n\t// But Mobile Safari forces the `html` element to scroll upwards, hiding the toolbar.\n\n\tconst isIphone = window.navigator.userAgent.indexOf( 'iPhone' ) !== -1;\n\tif ( isIphone ) {\n\t\twindow.addEventListener( 'scroll', ( event ) => {\n\t\t\tconst editorScrollContainer = document.getElementsByClassName(\n\t\t\t\t'interface-interface-skeleton__body'\n\t\t\t)[ 0 ];\n\t\t\tif ( event.target === document ) {\n\t\t\t\t// Scroll element into view by scrolling the editor container by the same amount\n\t\t\t\t// that Mobile Safari tried to scroll the html element upwards.\n\t\t\t\tif ( window.scrollY > 100 ) {\n\t\t\t\t\teditorScrollContainer.scrollTop =\n\t\t\t\t\t\teditorScrollContainer.scrollTop + window.scrollY;\n\t\t\t\t}\n\t\t\t\t// Undo unwanted scroll on html element, but only in the visual editor.\n\t\t\t\tif (\n\t\t\t\t\tdocument.getElementsByClassName( 'is-mode-visual' )[ 0 ]\n\t\t\t\t) {\n\t\t\t\t\twindow.scrollTo( 0, 0 );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\trender(\n\t\t<Editor\n\t\t\tsettings={ settings }\n\t\t\tonError={ reboot }\n\t\t\tpostId={ postId }\n\t\t\tpostType={ postType }\n\t\t\tinitialEdits={ initialEdits }\n\t\t/>,\n\t\ttarget\n\t);\n}\n\nexport { default as PluginBlockSettingsMenuItem } from './components/block-settings-menu/plugin-block-settings-menu-item';\nexport { default as PluginDocumentSettingPanel } from './components/sidebar/plugin-document-setting-panel';\nexport { default as PluginMoreMenuItem } from './components/header/plugin-more-menu-item';\nexport { default as PluginPostPublishPanel } from './components/sidebar/plugin-post-publish-panel';\nexport { default as PluginPostStatusInfo } from './components/sidebar/plugin-post-status-info';\nexport { default as PluginPrePublishPanel } from './components/sidebar/plugin-pre-publish-panel';\nexport { default as PluginSidebar } from './components/sidebar/plugin-sidebar';\nexport { default as PluginSidebarMoreMenuItem } from './components/header/plugin-sidebar-more-menu-item';\nexport { default as __experimentalFullscreenModeClose } from './components/header/fullscreen-mode-close';\nexport { default as __experimentalMainDashboardButton } from './components/header/main-dashboard-button';\nexport { store } from './store';\n"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","key","call","join","module","exports","default","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","obj","prop","r","Symbol","toStringTag","value","window","_extends","assign","target","source","this","addFilter","MediaUpload","enhance","compose","withSelect","select","block","hasBlockSupport","name","blocks","blockEditorStore","getBlocks","firstOfSameType","find","originalBlockClientId","clientId","withDispatch","dispatch","selectFirst","selectBlock","withMultipleValidation","createHigherOrderComponent","BlockEdit","props","blockType","getBlockType","outboundType","blockName","transform","findTransform","getBlockTransforms","type","getOutboundType","style","minHeight","Warning","actions","Button","variant","onClick","__","onReplace","createBlock","attributes","title","SVG","xmlns","viewBox","Path","CopyContentMenuItem","createNotice","useDispatch","noticesStore","getText","useSelect","editorStore","getEditedPostAttribute","ref","useCopyToClipboard","isDismissible","MenuItem","metaBoxes","combineReducers","isSaving","state","action","locations","metaBoxesPerLocation","initialized","activeModal","publishSidebarActive","removedPanels","includes","panelName","deviceType","blockInserterPanel","isOpen","listViewPanel","isEditingTemplate","fillRule","clipRule","setDefaultComplementaryArea","scope","area","enableComplementaryArea","registry","preferencesStore","set","disableComplementaryArea","pinItem","item","pinnedItems","unpinItem","toggleFeature","featureName","deprecated","since","alternative","toggle","setFeatureValue","setFeatureDefaults","defaults","setDefaults","getActiveComplementaryArea","createRegistrySelector","isComplementaryAreaVisible","complementaryAreas","isItemPinned","isFeatureActive","store","createReduxStore","reducer","selectors","register","withPluginContext","context","ownProps","icon","identifier","complementaryAreaContext","as","selectedIcon","ComponentToUse","isSelected","interfaceStore","smallScreenTitle","children","className","toggleButtonProps","toggleButton","closeSmall","classnames","tabIndex","noop","ActionItem","Component","Fill","fpOnClick","Slot","ButtonGroup","fillProps","bubblesVirtually","fills","Children","initializedByPlugins","__unstableExplicitMenuItem","__unstableTarget","child","PluginsMenuItem","restProps","ComplementaryAreaMoreMenuItem","toggleProps","role","check","PinnedItems","ComplementaryAreaFill","ComplementaryAreaWrapped","withComplementaryAreaContext","closeLabel","header","headerClassName","isPinnable","panelClassName","toggleShortcut","isActiveByDefault","showIconLabels","isActive","isPinned","activeArea","isSmall","isLarge","_activeArea","viewportStore","isViewportMatch","previousIsSmall","useRef","shouldOpenWhenNotSmall","useEffect","current","useAdjustComplementaryListener","isPressed","label","showTooltip","onClose","shortcut","starFilled","starEmpty","Panel","isSticky","document","body","classList","contains","remove","add","forwardRef","footer","sidebar","secondarySidebar","notices","content","drawer","labels","shortcuts","navigateRegionsProps","useNavigateRegions","element","querySelector","useHTMLClass","mergedLabels","useMergeRefs","MoreMenuDropdown","DropdownComponent","DropdownMenu","popoverProps","moreVertical","position","tooltipPosition","PreferencesModal","closeModal","Modal","onRequestClose","size","cloneElement","width","height","PREFERENCES_MENU","PreferencesModalTabs","sections","isLargeViewport","useViewportMatch","activeMenu","setActiveMenu","useState","tabs","sectionsContentMap","useMemo","mappedTabs","reduce","accumulator","tabLabel","getCurrentTab","useCallback","tab","modalContent","TabPanel","initialTabName","onSelect","orientation","initialPath","path","Card","isBorderless","CardBody","map","Item","isAction","justify","FlexItem","isRTL","chevronLeft","chevronRight","section","CardHeader","gap","description","help","isChecked","onChange","ToggleControl","checked","openGeneralSidebar","editPostStore","closeGeneralSidebar","openModal","openPublishSidebar","closePublishSidebar","togglePublishSidebar","toggleEditorPanelEnabled","inactivePanels","updatedInactivePanels","filter","invactivePanelName","toggleEditorPanelOpened","openPanels","updatedOpenPanels","openPanelName","removeEditorPanel","feature","switchEditorMode","mode","clearSelectedBlock","message","speak","togglePinnedPluginItem","pluginName","updatePreferredStyleVariations","blockStyle","existingVariations","updatedVariations","showBlockTypes","blockNames","existingBlockNames","newBlockNames","without","castArray","hideBlockTypes","mergedBlockNames","Set","setAvailableMetaBoxesPerLocation","requestMetaBoxUpdates","async","tinyMCE","triggerSave","post","getCurrentPost","additionalData","comment_status","ping_status","sticky","author","Boolean","formDataToMerge","FormData","getActiveMetaBoxLocations","location","getMetaBoxContainer","formData","memo","currentFormData","append","forEach","apiFetch","url","_wpMetaBoxUrl","method","parse","metaBoxUpdatesSuccess","metaBoxUpdatesFailure","__experimentalSetPreviewDeviceType","setIsInserterOpened","setIsListViewOpened","setIsEditingTemplate","__unstableSwitchToTemplateMode","newTemplate","createSuccessNotice","__unstableCreateTemplate","template","savedTemplate","coreStore","saveEntityRecord","editEntityRecord","id","slug","metaBoxesInitialized","initializeMetaBoxes","__unstableIsEditorReady","postType","getCurrentPostType","postboxes","page","add_postbox_toggles","wasSavingPost","isSavingPost","wasAutosavingPost","isAutosavingPost","hasMetaBoxes","subscribe","shouldTriggerMetaboxesSave","LEAF_KEY","arrayOf","isShallowEqual","b","fromIndex","selector","getDependants","rootCache","normalizedGetDependants","getCache","dependants","dependant","cache","caches","isUniqueByDependants","has","WeakMap","clear","head","createCache","callSelector","node","args","len","lastDependants","next","prev","val","EMPTY_ARRAY","EMPTY_OBJECT","getEditorMode","isEditorSidebarOpened","activeGeneralSidebar","isPluginSidebarOpened","getActiveGeneralSidebarName","getPreferences","accumulatedPrefs","preferenceKey","panels","panelsWithEnabledState","accumulatedPanels","enabled","currentPanelState","opened","convertPanelsToOldFormat","getPreference","defaultValue","getHiddenBlockTypes","isPublishSidebarOpened","isEditorPanelRemoved","isEditorPanelEnabled","isEditorPanelOpened","isModalActive","modalName","isPluginItemPinned","createSelector","keys","isMetaBoxLocationActive","isMetaBoxLocationVisible","getMetaBoxesPerLocation","some","getAllMetaBoxes","values","flat","isSavingMetaBoxes","__experimentalGetPreviewDeviceType","isInserterOpened","__experimentalGetInsertionPoint","rootClientId","insertionIndex","filterValue","isListViewOpened","areMetaBoxesInitialized","getEditedPostTemplate","currentTemplate","templateWithSameSlug","getEntityRecords","per_page","getEditedEntityRecord","link","__experimentalGetTemplateForLink","STORE_NAME","displayShortcut","ToolsMoreMenuGroup","createSlotFill","isEmpty","MenuGroup","WelcomeGuideMenuItem","isTemplateMode","PreferenceToggleMenuItem","registerPlugin","render","href","addQueryArgs","post_type","external","rel","VisuallyHidden","TextEditor","isRichEditingEnabled","getEditorSettings","richEditingEnabled","TextEditorGlobalKeyboardShortcuts","PostTitle","PostTextEditor","small","areAdvancedSettingsOpened","keyboardShortcutsStore","getShortcutRepresentation","MaybeIframe","contentRef","shouldIframe","styles","assets","useMouseMoveTypingReset","display","WritingFlow","flex","VisualEditor","isWelcomeGuideVisible","wrapperBlockName","wrapperUniqueId","getCurrentPostId","_isTemplateMode","_wrapperBlockName","isCleanNewPost","themeHasDisabledLayoutStyles","themeSupportsLayout","_settings","getSettings","disableLayoutStyles","supportsLayout","__unstableResolvedAssets","desktopCanvasStyles","margin","flexFlow","background","templateModeStyles","borderRadius","border","borderBottom","resizedCanvasStyles","useResizeCanvas","defaultLayout","useSetting","previewMode","toLowerCase","paddingBottom","animatedStyles","useClipboardHandler","useTypewriter","useTypingObserver","useBlockSelectionClearer","blockSelectionClearerRef","layout","titleRef","focus","BlockTools","__unstableContentRef","VisualEditorGlobalKeyboardShortcuts","animate","padding","arrowLeft","initial","layoutDefinitions","definitions","contentEditable","uniqueId","BlockList","__experimentalLayout","__unstableBlockSettingsMenuFirstItem","getBlockSelectionStart","isModeToggleDisabled","codeEditingEnabled","registerShortcut","category","keyCombination","modifier","character","aliases","useShortcut","isDisabled","event","preventDefault","sidebarToOpen","textFormattingShortcuts","KeyCombination","forceAriaLabel","displayShortcutList","ariaLabel","shortcutAriaLabel","index","Fragment","alias","getShortcutKeyCombination","getShortcutDescription","getShortcutAliases","MODAL_NAME","ShortcutList","ShortcutSection","ShortcutCategorySection","categoryName","additionalShortcuts","categoryShortcuts","getCategoryShortcuts","concat","toggleModal","CustomFieldsConfirmation","willEnable","isReloading","setIsReloading","isBusy","disabled","getElementById","submit","areCustomFieldsEnabled","enableCustomFields","setIsChecked","isRemoved","ifCondition","BaseOption","EnablePluginDocumentSettingPanelOption","isPublishSidebarEnabled","enablePublishSidebar","disablePublishSidebar","isEnabled","ifViewportMatches","areCustomFieldsRegistered","sectionProps","thirdPartyMetaBoxes","blockTypes","onItemChange","CheckboxControl","BlockIcon","partial","BlockManagerCategory","instanceId","useInstanceId","defaultAllowedBlockTypes","hiddenBlockTypes","filteredBlockTypes","toggleVisible","nextIsChecked","toggleAllVisible","checkedBlockNames","titleId","isAllChecked","ariaChecked","getBlockTypes","getCategories","isMatchingSearchTerm","blocksStore","hiddenBlock","registeredBlock","numberOfHiddenBlocks","categories","debouncedSpeak","useDebounce","search","setSearch","parent","count","resultsFoundMessage","sprintf","_n","SearchControl","placeholder","nextSearch","EditPostPreferencesModal","showBlockBreadcrumbsOption","PostTaxonomies","taxonomyWrapper","taxonomy","PostFeaturedImageCheck","PostExcerptCheck","PostTypeSupportCheck","supportKeys","PageAttributesCheck","BrowserURL","constructor","super","historyId","componentDidUpdate","prevProps","postId","postStatus","setBrowserURL","setTrashURL","trashed","ids","getPostTrashedURL","history","replaceState","getPostEditURL","setState","status","wp_id","isRequestingSiteIcon","siteIconUrl","getEntityRecord","getPostType","isResolving","siteData","site_icon_url","disableMotion","useReducedMotion","buttonIcon","Icon","wordpress","variants","expand","scale","transition","duration","alt","src","whileHover","inserterButton","isInserterEnabled","isTextModeEnabled","isListViewOpen","listViewShortcut","hasInserterItems","getBlockRootClientId","getBlockSelectionEnd","isWideViewport","toolbarAriaLabel","toggleListView","overflowItems","ToolbarItem","TableOfContents","hasOutlineItemsDisabled","repositionDropdown","listView","openInserter","longLabel","_x","shortLabel","NavigableToolbar","onMouseDown","plus","ToolSelector","EditorHistoryUndo","EditorHistoryRedo","MODES","isCodeEditingEnabled","choices","choice","MenuItemsChoice","PreferencesMenuItem","info","messageActivated","messageDeactivated","hasPublishAction","isBeingScheduled","isEditedPostBeingScheduled","isPending","isCurrentPostPending","isPublished","isCurrentPostPublished","isScheduled","isCurrentPostScheduled","forceIsDirty","forceIsSaving","setEntitiesSavedStatesCallback","IS_TOGGLE","IS_BUTTON","isSmallerThanMediumViewport","component","PostPublishButton","isToggle","onToggle","DevicePreview","hasActiveMetaboxes","isPostSaveable","isViewable","isEditedPostSaveable","setPreviewDeviceType","setDeviceType","PostPreviewButton","forceIsAutosaveable","forcePreviewLink","textContent","slotName","MainDashboardButtonSlot","MainDashboardButton","slot","useSlot","DeleteTemplate","updateEditorSettings","editPost","deleteEntityRecord","showConfirmDialog","setShowConfirmDialog","templateTitle","isRevertable","has_theme_file","isDestructive","onConfirm","settings","newAvailableTemplates","pickBy","availableTemplates","_title","throwOnError","onCancel","EditTemplateTitle","forceEmpty","setForceEmpty","is_custom","TextControl","newTitle","mapValues","existingTitle","onBlur","TemplateDescription","level","weight","marginTop","isEditing","_isEditing","hasOptions","custom","isLink","Dropdown","contentClassName","renderToggle","chevronDown","renderContent","lineHeight","hasReducedUI","PostSavedState","InserterSidebar","insertionPoint","showMostUsedBlocks","isMobileViewport","TagName","inserterDialogRef","inserterDialogProps","useDialog","focusOnMount","libraryRef","focusSearch","close","showInserterHelpPanel","shouldFocusBlock","__experimentalInsertionIndex","__experimentalFilterValue","ListViewSidebar","focusOnMountRef","useFocusOnMount","headerFocusReturnRef","useFocusReturn","contentFocusReturnRef","labelId","onKeyDown","keyCode","ESCAPE","defaultPrevented","sidebarName","openDocumentSettings","documentLabel","getPostTypeLabel","documentAriaLabel","documentActiveClass","blockAriaLabel","blockActiveClass","templateAriaLabel","templateActiveClass","PostVisibilityToggle","usePostVisibilityLabel","rowRef","PostVisibilityCheck","canEdit","PanelRow","PostVisibilityLabel","anchorRef","PostVisibility","PostTrash","PostTrashCheck","PostSchedule","PostScheduleCheck","PostScheduleToggle","usePostScheduleLabel","fullLabel","full","PostStickyCheck","PostSticky","PostAuthorCheck","PostAuthor","PostSlugCheck","PostSlug","PostFormatCheck","PostFormat","PostPendingStatusCheck","PostPendingStatus","PluginPostStatusInfo","DEFAULT_TITLE","PostTemplateCreateModal","defaultBlockTemplate","setTitle","setIsBusy","cancel","onSubmit","newTemplateContent","serialize","tagName","inherit","cleanForSlug","Flex","align","expanded","PostTemplateForm","isPostsPage","fetchedTemplates","selectedTemplateSlug","canCreate","canUser","editorSettings","siteSettings","_isPostsPage","page_for_posts","canCreateTemplates","supportsTemplateMode","options","entries","fromEntries","rendered","selectedOption","option","isCreateModalOpen","setIsCreateModalOpen","addTemplate","Notice","SelectControl","hideLabelFromVision","PostTemplate","postTypeSlug","viewable","PostTemplateToggle","templateSlug","PostURL","PostURLCheck","PostURLToggle","usePostURLLabel","PANEL_NAME","isOpened","onTogglePanel","PanelBody","PostLastRevisionCheck","PostLastRevision","taxonomyMenuName","PostTaxonomiesCheck","applyWithSelect","applyWithDispatch","PostFeaturedImage","PostExcerpt","PostComments","PostPingbacks","PageAttributesParent","PageAttributesOrder","container","formRef","appendChild","Spinner","MetaBoxVisibility","componentDidMount","updateDOM","isVisible","MetaBoxes","useRegistry","isEditorReady","_areMetaBoxesInitialized","PluginDocumentSettingPanel","PluginSidebarEditPost","postTitle","FlexBlock","SIDEBAR_ACTIVE_BY_DEFAULT","Platform","web","native","keyboardShortcut","cog","BlockInspector","WelcomeGuideImage","nonAnimatedSrc","animatedSrc","srcSet","media","WelcomeGuideDefault","Guide","contentLabel","finishButtonText","onFinish","pages","image","createInterpolateElement","InserterIconImage","ExternalLink","WelcomeGuideTemplate","WelcomeGuide","PluginPostPublishPanel","initialOpen","PluginPrePublishPanel","ActionsPanel","closeEntitiesSavedStates","isEntitiesSavedStatesOpen","publishSidebarOpened","hasNonPostEntityChanges","openEntitiesSavedStates","unmountableContent","PostPublishPanel","PrePublishExtension","PostPublishExtension","EntitiesSavedStates","useStartPatterns","blockPatternsWithPostContentBlockType","__experimentalGetPatternsByBlockTypes","pattern","postTypes","PatternSelection","onChoosePattern","blockPatterns","shownBlockPatterns","useAsyncList","resetEditorBlocks","shownPatterns","onClickPattern","_pattern","START_PAGE_MODAL_STATES","StartPageOptions","modalState","setModalState","hasStartPattern","shouldOpenModel","getEditedPostContent","interfaceLabels","isHugeViewport","createErrorNotice","isFullscreenActive","sidebarIsOpened","hasFixedToolbar","previousShortcut","nextShortcut","hasBlockSelected","showBlockBreadcrumbs","postTypeLabel","getAllShortcutKeyCombinations","entitiesSavedStatesCallback","secondarySidebarLabel","UnsavedChangesWarning","AutosaveMonitor","LocalAutosaveMonitor","EditorKeyboardShortcutsRegister","EditorSnackbars","EditorNotices","ScrollLock","BlockStyles","BlockBreadcrumb","rootLabelText","previous","Popover","PluginArea","onError","EditorInitialization","hasBlockSelection","useBlockSelectionListener","newPermalink","nodeToUpdate","setAttribute","useUpdatePostLinkListener","initialEdits","focusMode","hasInlineToolbar","hasThemeStyles","preferredStyleVariations","keepCaretInsideBlock","postObject","posts","canEditTemplate","result","__experimentalPreferredStyleVariations","__experimentalSetIsInserterOpened","allowedBlockTypes","themeStyles","presetStyles","__unstableType","defaultEditorStyles","StrictMode","ShortcutProvider","SlotFillProvider","EditorProvider","useSubRegistry","__unstableTemplate","ErrorBoundary","PostLockedModal","allowedBlocks","BlockSettingsMenuControls","selectedBlocks","allowed","shouldRenderItem","PluginSidebarMoreMenuItem","reinitializeEditor","unmountComponentAtNode","reboot","bind","recovery","initializeEditor","can","editorMode","fixedToolbar","fullscreenMode","showListViewByDefault","welcomeGuide","welcomeGuideTemplate","__experimentalReapplyBlockTypeFilters","registerCoreBlocks","__experimentalRegisterExperimentalCoreBlocks","enableFSEBlocks","__unstableEnableFullSiteEditingBlocks","compatMode","console","warn","navigator","userAgent","indexOf","addEventListener","editorScrollContainer","getElementsByClassName","scrollY","scrollTop","scrollTo"],"sourceRoot":""}
|
1 |
+
{"version":3,"file":"./build/edit-post/index.min.js","mappings":"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","sources":["webpack://wp/./node_modules/classnames/index.js","webpack://wp/webpack/bootstrap","webpack://wp/webpack/runtime/compat get default export","webpack://wp/webpack/runtime/define property getters","webpack://wp/webpack/runtime/hasOwnProperty shorthand","webpack://wp/webpack/runtime/make namespace object","webpack://wp/external window [\"wp\",\"element\"]","webpack://wp/external window [\"wp\",\"blocks\"]","webpack://wp/external window [\"wp\",\"blockLibrary\"]","webpack://wp/external window [\"wp\",\"data\"]","webpack://wp/external window [\"wp\",\"hooks\"]","webpack://wp/external window [\"wp\",\"preferences\"]","webpack://wp/external window [\"wp\",\"mediaUtils\"]","webpack://wp/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://wp/./packages/edit-post/build-module/hooks/components/@wordpress/edit-post/src/hooks/components/index.js","webpack://wp/external window \"lodash\"","webpack://wp/external window [\"wp\",\"components\"]","webpack://wp/external window [\"wp\",\"blockEditor\"]","webpack://wp/external window [\"wp\",\"i18n\"]","webpack://wp/external window [\"wp\",\"compose\"]","webpack://wp/./packages/edit-post/build-module/hooks/validate-multiple-use/@wordpress/edit-post/src/hooks/validate-multiple-use/index.js","webpack://wp/external window [\"wp\",\"primitives\"]","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/external.js","webpack://wp/external window [\"wp\",\"plugins\"]","webpack://wp/external window [\"wp\",\"url\"]","webpack://wp/external window [\"wp\",\"notices\"]","webpack://wp/external window [\"wp\",\"editor\"]","webpack://wp/./packages/edit-post/build-module/plugins/copy-content-menu-item/@wordpress/edit-post/src/plugins/copy-content-menu-item/index.js","webpack://wp/external window [\"wp\",\"keycodes\"]","webpack://wp/./packages/edit-post/build-module/store/@wordpress/edit-post/src/store/reducer.js","webpack://wp/external window [\"wp\",\"apiFetch\"]","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/check.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/star-filled.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/star-empty.js","webpack://wp/external window [\"wp\",\"viewport\"]","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/close-small.js","webpack://wp/external window [\"wp\",\"deprecated\"]","webpack://wp/./packages/interface/build-module/store/@wordpress/interface/src/store/actions.js","webpack://wp/./packages/interface/build-module/store/@wordpress/interface/src/store/selectors.js","webpack://wp/./packages/interface/build-module/store/@wordpress/interface/src/store/reducer.js","webpack://wp/./packages/interface/build-module/store/@wordpress/interface/src/store/index.js","webpack://wp/./packages/interface/build-module/store/@wordpress/interface/src/store/constants.js","webpack://wp/./packages/interface/build-module/components/complementary-area-context/@wordpress/interface/src/components/complementary-area-context/index.js","webpack://wp/./packages/interface/build-module/components/complementary-area-toggle/@wordpress/interface/src/components/complementary-area-toggle/index.js","webpack://wp/./packages/interface/build-module/components/complementary-area-header/@wordpress/interface/src/components/complementary-area-header/index.js","webpack://wp/./packages/interface/build-module/components/action-item/@wordpress/interface/src/components/action-item/index.js","webpack://wp/./packages/interface/build-module/components/complementary-area-more-menu-item/@wordpress/interface/src/components/complementary-area-more-menu-item/index.js","webpack://wp/./packages/interface/build-module/components/pinned-items/@wordpress/interface/src/components/pinned-items/index.js","webpack://wp/./packages/interface/build-module/components/complementary-area/@wordpress/interface/src/components/complementary-area/index.js","webpack://wp/./packages/interface/build-module/components/fullscreen-mode/@wordpress/interface/src/components/fullscreen-mode/index.js","webpack://wp/./packages/interface/build-module/components/interface-skeleton/@wordpress/interface/src/components/interface-skeleton/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/more-vertical.js","webpack://wp/./packages/interface/build-module/components/more-menu-dropdown/@wordpress/interface/src/components/more-menu-dropdown/index.js","webpack://wp/./packages/interface/build-module/components/preferences-modal/@wordpress/interface/src/components/preferences-modal/index.js","webpack://wp/./packages/icons/build-module/icon/@wordpress/icons/src/icon/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/chevron-left.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/chevron-right.js","webpack://wp/./packages/interface/build-module/components/preferences-modal-tabs/@wordpress/interface/src/components/preferences-modal-tabs/index.js","webpack://wp/./packages/interface/build-module/components/preferences-modal-section/@wordpress/interface/src/components/preferences-modal-section/index.js","webpack://wp/./packages/interface/build-module/components/preferences-modal-base-option/@wordpress/interface/src/components/preferences-modal-base-option/index.js","webpack://wp/external window [\"wp\",\"a11y\"]","webpack://wp/external window [\"wp\",\"coreData\"]","webpack://wp/./packages/edit-post/build-module/store/@wordpress/edit-post/src/store/actions.js","webpack://wp/./packages/edit-post/build-module/utils/@wordpress/edit-post/src/utils/meta-boxes.js","webpack://wp/./node_modules/rememo/es/rememo.js","webpack://wp/./packages/edit-post/build-module/store/@wordpress/edit-post/src/store/selectors.js","webpack://wp/./packages/edit-post/build-module/store/@wordpress/edit-post/src/store/constants.js","webpack://wp/./packages/edit-post/build-module/store/@wordpress/edit-post/src/store/index.js","webpack://wp/./packages/edit-post/build-module/plugins/keyboard-shortcuts-help-menu-item/@wordpress/edit-post/src/plugins/keyboard-shortcuts-help-menu-item/index.js","webpack://wp/./packages/edit-post/build-module/components/header/tools-more-menu-group/@wordpress/edit-post/src/components/header/tools-more-menu-group/index.js","webpack://wp/./packages/edit-post/build-module/plugins/welcome-guide-menu-item/@wordpress/edit-post/src/plugins/welcome-guide-menu-item/index.js","webpack://wp/./packages/edit-post/build-module/plugins/@wordpress/edit-post/src/plugins/index.js","webpack://wp/external window [\"wp\",\"keyboardShortcuts\"]","webpack://wp/./packages/edit-post/build-module/components/text-editor/@wordpress/edit-post/src/components/text-editor/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/arrow-left.js","webpack://wp/./packages/edit-post/build-module/components/visual-editor/@wordpress/edit-post/src/components/visual-editor/block-inspector-button.js","webpack://wp/./packages/edit-post/build-module/components/visual-editor/@wordpress/edit-post/src/components/visual-editor/index.js","webpack://wp/./packages/edit-post/build-module/components/keyboard-shortcuts/@wordpress/edit-post/src/components/keyboard-shortcuts/index.js","webpack://wp/./packages/edit-post/build-module/components/keyboard-shortcut-help-modal/@wordpress/edit-post/src/components/keyboard-shortcut-help-modal/config.js","webpack://wp/./packages/edit-post/build-module/components/keyboard-shortcut-help-modal/@wordpress/edit-post/src/components/keyboard-shortcut-help-modal/shortcut.js","webpack://wp/./packages/edit-post/build-module/components/keyboard-shortcut-help-modal/@wordpress/edit-post/src/components/keyboard-shortcut-help-modal/dynamic-shortcut.js","webpack://wp/./packages/edit-post/build-module/components/keyboard-shortcut-help-modal/@wordpress/edit-post/src/components/keyboard-shortcut-help-modal/index.js","webpack://wp/./packages/edit-post/build-module/components/preferences-modal/options/@wordpress/edit-post/src/components/preferences-modal/options/enable-custom-fields.js","webpack://wp/./packages/edit-post/build-module/components/preferences-modal/options/@wordpress/edit-post/src/components/preferences-modal/options/enable-panel.js","webpack://wp/./packages/edit-post/build-module/components/preferences-modal/options/@wordpress/edit-post/src/components/preferences-modal/options/enable-plugin-document-setting-panel.js","webpack://wp/./packages/edit-post/build-module/components/preferences-modal/options/@wordpress/edit-post/src/components/preferences-modal/options/enable-publish-sidebar.js","webpack://wp/./packages/edit-post/build-module/components/preferences-modal/options/@wordpress/edit-post/src/components/preferences-modal/options/enable-feature.js","webpack://wp/./packages/edit-post/build-module/components/preferences-modal/@wordpress/edit-post/src/components/preferences-modal/meta-boxes-section.js","webpack://wp/./packages/edit-post/build-module/components/block-manager/@wordpress/edit-post/src/components/block-manager/checklist.js","webpack://wp/./packages/edit-post/build-module/components/block-manager/@wordpress/edit-post/src/components/block-manager/category.js","webpack://wp/./packages/edit-post/build-module/components/block-manager/@wordpress/edit-post/src/components/block-manager/index.js","webpack://wp/./packages/edit-post/build-module/components/preferences-modal/@wordpress/edit-post/src/components/preferences-modal/index.js","webpack://wp/./packages/edit-post/build-module/components/browser-url/@wordpress/edit-post/src/components/browser-url/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/wordpress.js","webpack://wp/./packages/edit-post/build-module/components/header/fullscreen-mode-close/@wordpress/edit-post/src/components/header/fullscreen-mode-close/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/list-view.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/plus.js","webpack://wp/./packages/edit-post/build-module/components/header/header-toolbar/@wordpress/edit-post/src/components/header/header-toolbar/index.js","webpack://wp/./packages/edit-post/build-module/components/header/mode-switcher/@wordpress/edit-post/src/components/header/mode-switcher/index.js","webpack://wp/./packages/edit-post/build-module/components/header/preferences-menu-item/@wordpress/edit-post/src/components/header/preferences-menu-item/index.js","webpack://wp/./packages/edit-post/build-module/components/header/writing-menu/@wordpress/edit-post/src/components/header/writing-menu/index.js","webpack://wp/./packages/edit-post/build-module/components/header/more-menu/@wordpress/edit-post/src/components/header/more-menu/index.js","webpack://wp/./packages/edit-post/build-module/components/header/@wordpress/edit-post/src/components/header/post-publish-button-or-toggle.js","webpack://wp/./packages/edit-post/build-module/components/device-preview/@wordpress/edit-post/src/components/device-preview/index.js","webpack://wp/./packages/edit-post/build-module/components/header/main-dashboard-button/@wordpress/edit-post/src/components/header/main-dashboard-button/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/chevron-down.js","webpack://wp/./packages/edit-post/build-module/components/header/template-title/@wordpress/edit-post/src/components/header/template-title/delete-template.js","webpack://wp/./packages/edit-post/build-module/components/header/template-title/@wordpress/edit-post/src/components/header/template-title/edit-template-title.js","webpack://wp/./packages/edit-post/build-module/components/header/template-title/@wordpress/edit-post/src/components/header/template-title/template-description.js","webpack://wp/./packages/edit-post/build-module/components/header/template-title/@wordpress/edit-post/src/components/header/template-title/index.js","webpack://wp/./packages/edit-post/build-module/components/header/@wordpress/edit-post/src/components/header/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/close.js","webpack://wp/./packages/edit-post/build-module/components/secondary-sidebar/@wordpress/edit-post/src/components/secondary-sidebar/inserter-sidebar.js","webpack://wp/./packages/edit-post/build-module/components/secondary-sidebar/@wordpress/edit-post/src/components/secondary-sidebar/list-view-sidebar.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/cog.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/settings-header/@wordpress/edit-post/src/components/sidebar/settings-header/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-visibility/@wordpress/edit-post/src/components/sidebar/post-visibility/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-trash/@wordpress/edit-post/src/components/sidebar/post-trash/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-schedule/@wordpress/edit-post/src/components/sidebar/post-schedule/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-sticky/@wordpress/edit-post/src/components/sidebar/post-sticky/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-author/@wordpress/edit-post/src/components/sidebar/post-author/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-slug/@wordpress/edit-post/src/components/sidebar/post-slug/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-format/@wordpress/edit-post/src/components/sidebar/post-format/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-pending-status/@wordpress/edit-post/src/components/sidebar/post-pending-status/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/plugin-post-status-info/@wordpress/edit-post/src/components/sidebar/plugin-post-status-info/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/add-template.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-template/@wordpress/edit-post/src/components/sidebar/post-template/create-modal.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-template/@wordpress/edit-post/src/components/sidebar/post-template/form.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-template/@wordpress/edit-post/src/components/sidebar/post-template/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-url/@wordpress/edit-post/src/components/sidebar/post-url/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-status/@wordpress/edit-post/src/components/sidebar/post-status/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/last-revision/@wordpress/edit-post/src/components/sidebar/last-revision/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-taxonomies/@wordpress/edit-post/src/components/sidebar/post-taxonomies/taxonomy-panel.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-taxonomies/@wordpress/edit-post/src/components/sidebar/post-taxonomies/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/featured-image/@wordpress/edit-post/src/components/sidebar/featured-image/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/post-excerpt/@wordpress/edit-post/src/components/sidebar/post-excerpt/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/discussion-panel/@wordpress/edit-post/src/components/sidebar/discussion-panel/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/page-attributes/@wordpress/edit-post/src/components/sidebar/page-attributes/index.js","webpack://wp/./packages/edit-post/build-module/components/meta-boxes/meta-boxes-area/@wordpress/edit-post/src/components/meta-boxes/meta-boxes-area/index.js","webpack://wp/./packages/edit-post/build-module/components/meta-boxes/@wordpress/edit-post/src/components/meta-boxes/meta-box-visibility.js","webpack://wp/./packages/edit-post/build-module/components/meta-boxes/@wordpress/edit-post/src/components/meta-boxes/index.js","webpack://wp/external window [\"wp\",\"warning\"]","webpack://wp/./packages/edit-post/build-module/components/sidebar/plugin-document-setting-panel/@wordpress/edit-post/src/components/sidebar/plugin-document-setting-panel/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/plugin-sidebar/@wordpress/edit-post/src/components/sidebar/plugin-sidebar/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/layout.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/template-summary/@wordpress/edit-post/src/components/sidebar/template-summary/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/settings-sidebar/@wordpress/edit-post/src/components/sidebar/settings-sidebar/index.js","webpack://wp/./packages/edit-post/build-module/components/welcome-guide/@wordpress/edit-post/src/components/welcome-guide/image.js","webpack://wp/./packages/edit-post/build-module/components/welcome-guide/@wordpress/edit-post/src/components/welcome-guide/default.js","webpack://wp/./packages/edit-post/build-module/components/welcome-guide/@wordpress/edit-post/src/components/welcome-guide/template.js","webpack://wp/./packages/edit-post/build-module/components/welcome-guide/@wordpress/edit-post/src/components/welcome-guide/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/plugin-post-publish-panel/@wordpress/edit-post/src/components/sidebar/plugin-post-publish-panel/index.js","webpack://wp/./packages/edit-post/build-module/components/sidebar/plugin-pre-publish-panel/@wordpress/edit-post/src/components/sidebar/plugin-pre-publish-panel/index.js","webpack://wp/./packages/edit-post/build-module/components/layout/@wordpress/edit-post/src/components/layout/actions-panel.js","webpack://wp/./packages/edit-post/build-module/components/start-page-options/@wordpress/edit-post/src/components/start-page-options/index.js","webpack://wp/./packages/edit-post/build-module/components/layout/@wordpress/edit-post/src/components/layout/index.js","webpack://wp/./packages/edit-post/build-module/components/editor-initialization/@wordpress/edit-post/src/components/editor-initialization/index.js","webpack://wp/./packages/edit-post/build-module/components/editor-initialization/@wordpress/edit-post/src/components/editor-initialization/listener-hooks.js","webpack://wp/./packages/edit-post/build-module/@wordpress/edit-post/src/editor.js","webpack://wp/./packages/edit-post/build-module/components/block-settings-menu/@wordpress/edit-post/src/components/block-settings-menu/plugin-block-settings-menu-item.js","webpack://wp/./packages/edit-post/build-module/components/header/plugin-more-menu-item/@wordpress/edit-post/src/components/header/plugin-more-menu-item/index.js","webpack://wp/./packages/edit-post/build-module/components/header/plugin-sidebar-more-menu-item/@wordpress/edit-post/src/components/header/plugin-sidebar-more-menu-item/index.js","webpack://wp/./packages/edit-post/build-module/@wordpress/edit-post/src/index.js"],"sourcesContent":["/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"element\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"blocks\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"blockLibrary\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"data\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"hooks\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"preferences\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"mediaUtils\"];","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { MediaUpload } from '@wordpress/media-utils';\n\nconst replaceMediaUpload = () => MediaUpload;\n\naddFilter(\n\t'editor.MediaUpload',\n\t'core/edit-post/replace-media-upload',\n\treplaceMediaUpload\n);\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"lodash\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"components\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"blockEditor\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"i18n\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"compose\"];","/**\n * External dependencies\n */\nimport { find } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreateBlock,\n\tfindTransform,\n\tgetBlockTransforms,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport { Button } from '@wordpress/components';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { Warning, store as blockEditorStore } from '@wordpress/block-editor';\nimport { addFilter } from '@wordpress/hooks';\nimport { __ } from '@wordpress/i18n';\nimport { compose, createHigherOrderComponent } from '@wordpress/compose';\n\nconst enhance = compose(\n\t/**\n\t * For blocks whose block type doesn't support `multiple`, provides the\n\t * wrapped component with `originalBlockClientId` -- a reference to the\n\t * first block of the same type in the content -- if and only if that\n\t * \"original\" block is not the current one. Thus, an inexisting\n\t * `originalBlockClientId` prop signals that the block is valid.\n\t *\n\t * @param {WPComponent} WrappedBlockEdit A filtered BlockEdit instance.\n\t *\n\t * @return {WPComponent} Enhanced component with merged state data props.\n\t */\n\twithSelect( ( select, block ) => {\n\t\tconst multiple = hasBlockSupport( block.name, 'multiple', true );\n\n\t\t// For block types with `multiple` support, there is no \"original\n\t\t// block\" to be found in the content, as the block itself is valid.\n\t\tif ( multiple ) {\n\t\t\treturn {};\n\t\t}\n\n\t\t// Otherwise, only pass `originalBlockClientId` if it refers to a different\n\t\t// block from the current one.\n\t\tconst blocks = select( blockEditorStore ).getBlocks();\n\t\tconst firstOfSameType = find(\n\t\t\tblocks,\n\t\t\t( { name } ) => block.name === name\n\t\t);\n\t\tconst isInvalid =\n\t\t\tfirstOfSameType && firstOfSameType.clientId !== block.clientId;\n\t\treturn {\n\t\t\toriginalBlockClientId: isInvalid && firstOfSameType.clientId,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, { originalBlockClientId } ) => ( {\n\t\tselectFirst: () =>\n\t\t\tdispatch( blockEditorStore ).selectBlock( originalBlockClientId ),\n\t} ) )\n);\n\nconst withMultipleValidation = createHigherOrderComponent( ( BlockEdit ) => {\n\treturn enhance( ( { originalBlockClientId, selectFirst, ...props } ) => {\n\t\tif ( ! originalBlockClientId ) {\n\t\t\treturn <BlockEdit { ...props } />;\n\t\t}\n\n\t\tconst blockType = getBlockType( props.name );\n\t\tconst outboundType = getOutboundType( props.name );\n\n\t\treturn [\n\t\t\t<div key=\"invalid-preview\" style={ { minHeight: '60px' } }>\n\t\t\t\t<BlockEdit key=\"block-edit\" { ...props } />\n\t\t\t</div>,\n\t\t\t<Warning\n\t\t\t\tkey=\"multiple-use-warning\"\n\t\t\t\tactions={ [\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey=\"find-original\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tonClick={ selectFirst }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Find original' ) }\n\t\t\t\t\t</Button>,\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey=\"remove\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tonClick={ () => props.onReplace( [] ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t</Button>,\n\t\t\t\t\toutboundType && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey=\"transform\"\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\tprops.onReplace(\n\t\t\t\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t\t\t\toutboundType.name,\n\t\t\t\t\t\t\t\t\t\tprops.attributes\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>\n\t\t\t\t\t\t\t{ __( 'Transform into:' ) } { outboundType.title }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t),\n\t\t\t\t] }\n\t\t\t>\n\t\t\t\t<strong>{ blockType?.title }: </strong>\n\t\t\t\t{ __( 'This block can only be used once.' ) }\n\t\t\t</Warning>,\n\t\t];\n\t} );\n}, 'withMultipleValidation' );\n\n/**\n * Given a base block name, returns the default block type to which to offer\n * transforms.\n *\n * @param {string} blockName Base block name.\n *\n * @return {?Object} The chosen default block type.\n */\nfunction getOutboundType( blockName ) {\n\t// Grab the first outbound transform.\n\tconst transform = findTransform(\n\t\tgetBlockTransforms( 'to', blockName ),\n\t\t( { type, blocks } ) => type === 'block' && blocks.length === 1 // What about when .length > 1?\n\t);\n\n\tif ( ! transform ) {\n\t\treturn null;\n\t}\n\n\treturn getBlockType( transform.blocks[ 0 ] );\n}\n\naddFilter(\n\t'editor.BlockEdit',\n\t'core/edit-post/validate-multiple-use/with-multiple-validation',\n\twithMultipleValidation\n);\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"primitives\"];","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst external = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18.2 17c0 .7-.6 1.2-1.2 1.2H7c-.7 0-1.2-.6-1.2-1.2V7c0-.7.6-1.2 1.2-1.2h3.2V4.2H7C5.5 4.2 4.2 5.5 4.2 7v10c0 1.5 1.2 2.8 2.8 2.8h10c1.5 0 2.8-1.2 2.8-2.8v-3.6h-1.5V17zM14.9 3v1.5h3.7l-6.4 6.4 1.1 1.1 6.4-6.4v3.7h1.5V3h-6.3z\" />\n\t</SVG>\n);\n\nexport default external;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"plugins\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"url\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"notices\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"editor\"];","/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { useCopyToClipboard } from '@wordpress/compose';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as editorStore } from '@wordpress/editor';\n\nexport default function CopyContentMenuItem() {\n\tconst { createNotice } = useDispatch( noticesStore );\n\tconst getText = useSelect(\n\t\t( select ) => () =>\n\t\t\tselect( editorStore ).getEditedPostAttribute( 'content' ),\n\t\t[]\n\t);\n\n\tfunction onSuccess() {\n\t\tcreateNotice( 'info', __( 'All content copied.' ), {\n\t\t\tisDismissible: true,\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t}\n\n\tconst ref = useCopyToClipboard( getText, onSuccess );\n\n\treturn <MenuItem ref={ ref }>{ __( 'Copy all blocks' ) }</MenuItem>;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"keycodes\"];","/**\n * External dependencies\n */\nimport { includes } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\n\n/**\n * Reducer storing the list of all programmatically removed panels.\n *\n * @param {Array} state Current state.\n * @param {Object} action Action object.\n *\n * @return {Array} Updated state.\n */\nexport function removedPanels( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'REMOVE_PANEL':\n\t\t\tif ( ! includes( state, action.panelName ) ) {\n\t\t\t\treturn [ ...state, action.panelName ];\n\t\t\t}\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer for storing the name of the open modal, or null if no modal is open.\n *\n * @param {Object} state Previous state.\n * @param {Object} action Action object containing the `name` of the modal\n *\n * @return {Object} Updated state\n */\nexport function activeModal( state = null, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'OPEN_MODAL':\n\t\t\treturn action.name;\n\t\tcase 'CLOSE_MODAL':\n\t\t\treturn null;\n\t}\n\n\treturn state;\n}\n\nexport function publishSidebarActive( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'OPEN_PUBLISH_SIDEBAR':\n\t\t\treturn true;\n\t\tcase 'CLOSE_PUBLISH_SIDEBAR':\n\t\t\treturn false;\n\t\tcase 'TOGGLE_PUBLISH_SIDEBAR':\n\t\t\treturn ! state;\n\t}\n\treturn state;\n}\n\n/**\n * Reducer keeping track of the meta boxes isSaving state.\n * A \"true\" value means the meta boxes saving request is in-flight.\n *\n *\n * @param {boolean} state Previous state.\n * @param {Object} action Action Object.\n *\n * @return {Object} Updated state.\n */\nexport function isSavingMetaBoxes( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'REQUEST_META_BOX_UPDATES':\n\t\t\treturn true;\n\t\tcase 'META_BOX_UPDATES_SUCCESS':\n\t\tcase 'META_BOX_UPDATES_FAILURE':\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn state;\n\t}\n}\n\n/**\n * Reducer keeping track of the meta boxes per location.\n *\n * @param {boolean} state Previous state.\n * @param {Object} action Action Object.\n *\n * @return {Object} Updated state.\n */\nexport function metaBoxLocations( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_META_BOXES_PER_LOCATIONS':\n\t\t\treturn action.metaBoxesPerLocation;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning the editing canvas device type.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function deviceType( state = 'Desktop', action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_PREVIEW_DEVICE_TYPE':\n\t\t\treturn action.deviceType;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer to set the block inserter panel open or closed.\n *\n * Note: this reducer interacts with the list view panel reducer\n * to make sure that only one of the two panels is open at the same time.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n */\nexport function blockInserterPanel( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_IS_LIST_VIEW_OPENED':\n\t\t\treturn action.isOpen ? false : state;\n\t\tcase 'SET_IS_INSERTER_OPENED':\n\t\t\treturn action.value;\n\t}\n\treturn state;\n}\n\n/**\n * Reducer to set the list view panel open or closed.\n *\n * Note: this reducer interacts with the inserter panel reducer\n * to make sure that only one of the two panels is open at the same time.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n */\nexport function listViewPanel( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_IS_INSERTER_OPENED':\n\t\t\treturn action.value ? false : state;\n\t\tcase 'SET_IS_LIST_VIEW_OPENED':\n\t\t\treturn action.isOpen;\n\t}\n\treturn state;\n}\n\n/**\n * Reducer tracking whether the inserter is open.\n *\n * @param {boolean} state\n * @param {Object} action\n */\nfunction isEditingTemplate( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_IS_EDITING_TEMPLATE':\n\t\t\treturn action.value;\n\t}\n\treturn state;\n}\n\n/**\n * Reducer tracking whether meta boxes are initialized.\n *\n * @param {boolean} state\n * @param {Object} action\n *\n * @return {boolean} Updated state.\n */\nfunction metaBoxesInitialized( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'META_BOXES_INITIALIZED':\n\t\t\treturn true;\n\t}\n\treturn state;\n}\n\nconst metaBoxes = combineReducers( {\n\tisSaving: isSavingMetaBoxes,\n\tlocations: metaBoxLocations,\n\tinitialized: metaBoxesInitialized,\n} );\n\nexport default combineReducers( {\n\tactiveModal,\n\tmetaBoxes,\n\tpublishSidebarActive,\n\tremovedPanels,\n\tdeviceType,\n\tblockInserterPanel,\n\tlistViewPanel,\n\tisEditingTemplate,\n} );\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"apiFetch\"];","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst check = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z\" />\n\t</SVG>\n);\n\nexport default check;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst starFilled = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M11.776 4.454a.25.25 0 01.448 0l2.069 4.192a.25.25 0 00.188.137l4.626.672a.25.25 0 01.139.426l-3.348 3.263a.25.25 0 00-.072.222l.79 4.607a.25.25 0 01-.362.263l-4.138-2.175a.25.25 0 00-.232 0l-4.138 2.175a.25.25 0 01-.363-.263l.79-4.607a.25.25 0 00-.071-.222L4.754 9.881a.25.25 0 01.139-.426l4.626-.672a.25.25 0 00.188-.137l2.069-4.192z\" />\n\t</SVG>\n);\n\nexport default starFilled;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst starEmpty = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\td=\"M9.706 8.646a.25.25 0 01-.188.137l-4.626.672a.25.25 0 00-.139.427l3.348 3.262a.25.25 0 01.072.222l-.79 4.607a.25.25 0 00.362.264l4.138-2.176a.25.25 0 01.233 0l4.137 2.175a.25.25 0 00.363-.263l-.79-4.607a.25.25 0 01.072-.222l3.347-3.262a.25.25 0 00-.139-.427l-4.626-.672a.25.25 0 01-.188-.137l-2.069-4.192a.25.25 0 00-.448 0L9.706 8.646zM12 7.39l-.948 1.921a1.75 1.75 0 01-1.317.957l-2.12.308 1.534 1.495c.412.402.6.982.503 1.55l-.362 2.11 1.896-.997a1.75 1.75 0 011.629 0l1.895.997-.362-2.11a1.75 1.75 0 01.504-1.55l1.533-1.495-2.12-.308a1.75 1.75 0 01-1.317-.957L12 7.39z\"\n\t\t\tclipRule=\"evenodd\"\n\t\t/>\n\t</SVG>\n);\n\nexport default starEmpty;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"viewport\"];","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst closeSmall = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z\" />\n\t</SVG>\n);\n\nexport default closeSmall;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"deprecated\"];","/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Set a default complementary area.\n *\n * @param {string} scope Complementary area scope.\n * @param {string} area Area identifier.\n *\n * @return {Object} Action object.\n */\nexport const setDefaultComplementaryArea = ( scope, area ) => ( {\n\ttype: 'SET_DEFAULT_COMPLEMENTARY_AREA',\n\tscope,\n\tarea,\n} );\n\n/**\n * Enable the complementary area.\n *\n * @param {string} scope Complementary area scope.\n * @param {string} area Area identifier.\n */\nexport const enableComplementaryArea =\n\t( scope, area ) =>\n\t( { registry, dispatch } ) => {\n\t\t// Return early if there's no area.\n\t\tif ( ! area ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isComplementaryAreaVisible = registry\n\t\t\t.select( preferencesStore )\n\t\t\t.get( scope, 'isComplementaryAreaVisible' );\n\n\t\tif ( ! isComplementaryAreaVisible ) {\n\t\t\tregistry\n\t\t\t\t.dispatch( preferencesStore )\n\t\t\t\t.set( scope, 'isComplementaryAreaVisible', true );\n\t\t}\n\n\t\tdispatch( {\n\t\t\ttype: 'ENABLE_COMPLEMENTARY_AREA',\n\t\t\tscope,\n\t\t\tarea,\n\t\t} );\n\t};\n\n/**\n * Disable the complementary area.\n *\n * @param {string} scope Complementary area scope.\n */\nexport const disableComplementaryArea =\n\t( scope ) =>\n\t( { registry } ) => {\n\t\tconst isComplementaryAreaVisible = registry\n\t\t\t.select( preferencesStore )\n\t\t\t.get( scope, 'isComplementaryAreaVisible' );\n\n\t\tif ( isComplementaryAreaVisible ) {\n\t\t\tregistry\n\t\t\t\t.dispatch( preferencesStore )\n\t\t\t\t.set( scope, 'isComplementaryAreaVisible', false );\n\t\t}\n\t};\n\n/**\n * Pins an item.\n *\n * @param {string} scope Item scope.\n * @param {string} item Item identifier.\n *\n * @return {Object} Action object.\n */\nexport const pinItem =\n\t( scope, item ) =>\n\t( { registry } ) => {\n\t\t// Return early if there's no item.\n\t\tif ( ! item ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst pinnedItems = registry\n\t\t\t.select( preferencesStore )\n\t\t\t.get( scope, 'pinnedItems' );\n\n\t\t// The item is already pinned, there's nothing to do.\n\t\tif ( pinnedItems?.[ item ] === true ) {\n\t\t\treturn;\n\t\t}\n\n\t\tregistry.dispatch( preferencesStore ).set( scope, 'pinnedItems', {\n\t\t\t...pinnedItems,\n\t\t\t[ item ]: true,\n\t\t} );\n\t};\n\n/**\n * Unpins an item.\n *\n * @param {string} scope Item scope.\n * @param {string} item Item identifier.\n */\nexport const unpinItem =\n\t( scope, item ) =>\n\t( { registry } ) => {\n\t\t// Return early if there's no item.\n\t\tif ( ! item ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst pinnedItems = registry\n\t\t\t.select( preferencesStore )\n\t\t\t.get( scope, 'pinnedItems' );\n\n\t\tregistry.dispatch( preferencesStore ).set( scope, 'pinnedItems', {\n\t\t\t...pinnedItems,\n\t\t\t[ item ]: false,\n\t\t} );\n\t};\n\n/**\n * Returns an action object used in signalling that a feature should be toggled.\n *\n * @param {string} scope The feature scope (e.g. core/edit-post).\n * @param {string} featureName The feature name.\n */\nexport function toggleFeature( scope, featureName ) {\n\treturn function ( { registry } ) {\n\t\tdeprecated( `dispatch( 'core/interface' ).toggleFeature`, {\n\t\t\tsince: '6.0',\n\t\t\talternative: `dispatch( 'core/preferences' ).toggle`,\n\t\t} );\n\n\t\tregistry.dispatch( preferencesStore ).toggle( scope, featureName );\n\t};\n}\n\n/**\n * Returns an action object used in signalling that a feature should be set to\n * a true or false value\n *\n * @param {string} scope The feature scope (e.g. core/edit-post).\n * @param {string} featureName The feature name.\n * @param {boolean} value The value to set.\n *\n * @return {Object} Action object.\n */\nexport function setFeatureValue( scope, featureName, value ) {\n\treturn function ( { registry } ) {\n\t\tdeprecated( `dispatch( 'core/interface' ).setFeatureValue`, {\n\t\t\tsince: '6.0',\n\t\t\talternative: `dispatch( 'core/preferences' ).set`,\n\t\t} );\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( scope, featureName, !! value );\n\t};\n}\n\n/**\n * Returns an action object used in signalling that defaults should be set for features.\n *\n * @param {string} scope The feature scope (e.g. core/edit-post).\n * @param {Object<string, boolean>} defaults A key/value map of feature names to values.\n *\n * @return {Object} Action object.\n */\nexport function setFeatureDefaults( scope, defaults ) {\n\treturn function ( { registry } ) {\n\t\tdeprecated( `dispatch( 'core/interface' ).setFeatureDefaults`, {\n\t\t\tsince: '6.0',\n\t\t\talternative: `dispatch( 'core/preferences' ).setDefaults`,\n\t\t} );\n\n\t\tregistry.dispatch( preferencesStore ).setDefaults( scope, defaults );\n\t};\n}\n","/**\n * WordPress dependencies\n */\nimport { createRegistrySelector } from '@wordpress/data';\nimport deprecated from '@wordpress/deprecated';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Returns the complementary area that is active in a given scope.\n *\n * @param {Object} state Global application state.\n * @param {string} scope Item scope.\n *\n * @return {string | null | undefined} The complementary area that is active in the given scope.\n */\nexport const getActiveComplementaryArea = createRegistrySelector(\n\t( select ) => ( state, scope ) => {\n\t\tconst isComplementaryAreaVisible = select( preferencesStore ).get(\n\t\t\tscope,\n\t\t\t'isComplementaryAreaVisible'\n\t\t);\n\n\t\t// Return `undefined` to indicate that the user has never toggled\n\t\t// visibility, this is the vanilla default. Other code relies on this\n\t\t// nuance in the return value.\n\t\tif ( isComplementaryAreaVisible === undefined ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Return `null` to indicate the user hid the complementary area.\n\t\tif ( ! isComplementaryAreaVisible ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn state?.complementaryAreas?.[ scope ];\n\t}\n);\n\n/**\n * Returns a boolean indicating if an item is pinned or not.\n *\n * @param {Object} state Global application state.\n * @param {string} scope Scope.\n * @param {string} item Item to check.\n *\n * @return {boolean} True if the item is pinned and false otherwise.\n */\nexport const isItemPinned = createRegistrySelector(\n\t( select ) => ( state, scope, item ) => {\n\t\tconst pinnedItems = select( preferencesStore ).get(\n\t\t\tscope,\n\t\t\t'pinnedItems'\n\t\t);\n\t\treturn pinnedItems?.[ item ] ?? true;\n\t}\n);\n\n/**\n * Returns a boolean indicating whether a feature is active for a particular\n * scope.\n *\n * @param {Object} state The store state.\n * @param {string} scope The scope of the feature (e.g. core/edit-post).\n * @param {string} featureName The name of the feature.\n *\n * @return {boolean} Is the feature enabled?\n */\nexport const isFeatureActive = createRegistrySelector(\n\t( select ) => ( state, scope, featureName ) => {\n\t\tdeprecated(\n\t\t\t`select( 'core/interface' ).isFeatureActive( scope, featureName )`,\n\t\t\t{\n\t\t\t\tsince: '6.0',\n\t\t\t\talternative: `select( 'core/preferences' ).get( scope, featureName )`,\n\t\t\t}\n\t\t);\n\n\t\treturn !! select( preferencesStore ).get( scope, featureName );\n\t}\n);\n","/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\n\nexport function complementaryAreas( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_DEFAULT_COMPLEMENTARY_AREA': {\n\t\t\tconst { scope, area } = action;\n\n\t\t\t// If there's already an area, don't overwrite it.\n\t\t\tif ( state[ scope ] ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ scope ]: area,\n\t\t\t};\n\t\t}\n\t\tcase 'ENABLE_COMPLEMENTARY_AREA': {\n\t\t\tconst { scope, area } = action;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ scope ]: area,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn state;\n}\n\nexport default combineReducers( {\n\tcomplementaryAreas,\n} );\n","/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport * as actions from './actions';\nimport * as selectors from './selectors';\nimport reducer from './reducer';\nimport { STORE_NAME } from './constants';\n\n/**\n * Store definition for the interface namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore( STORE_NAME, {\n\treducer,\n\tactions,\n\tselectors,\n} );\n\n// Once we build a more generic persistence plugin that works across types of stores\n// we'd be able to replace this with a register call.\nregister( store );\n","/**\n * The identifier for the data store.\n *\n * @type {string}\n */\nexport const STORE_NAME = 'core/interface';\n","/**\n * WordPress dependencies\n */\nimport { withPluginContext } from '@wordpress/plugins';\n\nexport default withPluginContext( ( context, ownProps ) => {\n\treturn {\n\t\ticon: ownProps.icon || context.icon,\n\t\tidentifier:\n\t\t\townProps.identifier || `${ context.name }/${ ownProps.name }`,\n\t};\n} );\n","/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as interfaceStore } from '../../store';\nimport complementaryAreaContext from '../complementary-area-context';\n\nfunction ComplementaryAreaToggle( {\n\tas = Button,\n\tscope,\n\tidentifier,\n\ticon,\n\tselectedIcon,\n\tname,\n\t...props\n} ) {\n\tconst ComponentToUse = as;\n\tconst isSelected = useSelect(\n\t\t( select ) =>\n\t\t\tselect( interfaceStore ).getActiveComplementaryArea( scope ) ===\n\t\t\tidentifier,\n\t\t[ identifier ]\n\t);\n\tconst { enableComplementaryArea, disableComplementaryArea } =\n\t\tuseDispatch( interfaceStore );\n\treturn (\n\t\t<ComponentToUse\n\t\t\ticon={ selectedIcon && isSelected ? selectedIcon : icon }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( isSelected ) {\n\t\t\t\t\tdisableComplementaryArea( scope );\n\t\t\t\t} else {\n\t\t\t\t\tenableComplementaryArea( scope, identifier );\n\t\t\t\t}\n\t\t\t} }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n\nexport default complementaryAreaContext( ComplementaryAreaToggle );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ComplementaryAreaToggle from '../complementary-area-toggle';\n\nconst ComplementaryAreaHeader = ( {\n\tsmallScreenTitle,\n\tchildren,\n\tclassName,\n\ttoggleButtonProps,\n} ) => {\n\tconst toggleButton = (\n\t\t<ComplementaryAreaToggle icon={ closeSmall } { ...toggleButtonProps } />\n\t);\n\treturn (\n\t\t<>\n\t\t\t<div className=\"components-panel__header interface-complementary-area-header__small\">\n\t\t\t\t{ smallScreenTitle && (\n\t\t\t\t\t<span className=\"interface-complementary-area-header__small-title\">\n\t\t\t\t\t\t{ smallScreenTitle }\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t{ toggleButton }\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'components-panel__header',\n\t\t\t\t\t'interface-complementary-area-header',\n\t\t\t\t\tclassName\n\t\t\t\t) }\n\t\t\t\ttabIndex={ -1 }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t\t{ toggleButton }\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default ComplementaryAreaHeader;\n","/**\n * WordPress dependencies\n */\nimport { ButtonGroup, Button, Slot, Fill } from '@wordpress/components';\nimport { Children } from '@wordpress/element';\n\nconst noop = () => {};\n\nfunction ActionItemSlot( {\n\tname,\n\tas: Component = ButtonGroup,\n\tfillProps = {},\n\tbubblesVirtually,\n\t...props\n} ) {\n\treturn (\n\t\t<Slot\n\t\t\tname={ name }\n\t\t\tbubblesVirtually={ bubblesVirtually }\n\t\t\tfillProps={ fillProps }\n\t\t>\n\t\t\t{ ( fills ) => {\n\t\t\t\tif ( ! Children.toArray( fills ).length ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// Special handling exists for backward compatibility.\n\t\t\t\t// It ensures that menu items created by plugin authors aren't\n\t\t\t\t// duplicated with automatically injected menu items coming\n\t\t\t\t// from pinnable plugin sidebars.\n\t\t\t\t// @see https://github.com/WordPress/gutenberg/issues/14457\n\t\t\t\tconst initializedByPlugins = [];\n\t\t\t\tChildren.forEach(\n\t\t\t\t\tfills,\n\t\t\t\t\t( {\n\t\t\t\t\t\tprops: { __unstableExplicitMenuItem, __unstableTarget },\n\t\t\t\t\t} ) => {\n\t\t\t\t\t\tif ( __unstableTarget && __unstableExplicitMenuItem ) {\n\t\t\t\t\t\t\tinitializedByPlugins.push( __unstableTarget );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\tconst children = Children.map( fills, ( child ) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t! child.props.__unstableExplicitMenuItem &&\n\t\t\t\t\t\tinitializedByPlugins.includes(\n\t\t\t\t\t\t\tchild.props.__unstableTarget\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\treturn child;\n\t\t\t\t} );\n\n\t\t\t\treturn <Component { ...props }>{ children }</Component>;\n\t\t\t} }\n\t\t</Slot>\n\t);\n}\n\nfunction ActionItem( { name, as: Component = Button, onClick, ...props } ) {\n\treturn (\n\t\t<Fill name={ name }>\n\t\t\t{ ( { onClick: fpOnClick } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Component\n\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\tonClick || fpOnClick\n\t\t\t\t\t\t\t\t? ( ...args ) => {\n\t\t\t\t\t\t\t\t\t\t( onClick || noop )( ...args );\n\t\t\t\t\t\t\t\t\t\t( fpOnClick || noop )( ...args );\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t</Fill>\n\t);\n}\n\nActionItem.Slot = ActionItemSlot;\n\nexport default ActionItem;\n","/**\n * WordPress dependencies\n */\nimport { check } from '@wordpress/icons';\nimport { MenuItem } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport ComplementaryAreaToggle from '../complementary-area-toggle';\nimport ActionItem from '../action-item';\n\nconst PluginsMenuItem = ( {\n\t// Menu item is marked with unstable prop for backward compatibility.\n\t// They are removed so they don't leak to DOM elements.\n\t// @see https://github.com/WordPress/gutenberg/issues/14457\n\t__unstableExplicitMenuItem,\n\t__unstableTarget,\n\t...restProps\n} ) => <MenuItem { ...restProps } />;\n\nexport default function ComplementaryAreaMoreMenuItem( {\n\tscope,\n\ttarget,\n\t__unstableExplicitMenuItem,\n\t...props\n} ) {\n\treturn (\n\t\t<ComplementaryAreaToggle\n\t\t\tas={ ( toggleProps ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<ActionItem\n\t\t\t\t\t\t__unstableExplicitMenuItem={\n\t\t\t\t\t\t\t__unstableExplicitMenuItem\n\t\t\t\t\t\t}\n\t\t\t\t\t\t__unstableTarget={ `${ scope }/${ target }` }\n\t\t\t\t\t\tas={ PluginsMenuItem }\n\t\t\t\t\t\tname={ `${ scope }/plugin-more-menu` }\n\t\t\t\t\t\t{ ...toggleProps }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trole=\"menuitemcheckbox\"\n\t\t\tselectedIcon={ check }\n\t\t\tname={ target }\n\t\t\tscope={ scope }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Slot, Fill } from '@wordpress/components';\n\nfunction PinnedItems( { scope, ...props } ) {\n\treturn <Fill name={ `PinnedItems/${ scope }` } { ...props } />;\n}\n\nfunction PinnedItemsSlot( { scope, className, ...props } ) {\n\treturn (\n\t\t<Slot name={ `PinnedItems/${ scope }` } { ...props }>\n\t\t\t{ ( fills ) =>\n\t\t\t\tfills?.length > 0 && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\t'interface-pinned-items'\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ fills }\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t</Slot>\n\t);\n}\n\nPinnedItems.Slot = PinnedItemsSlot;\n\nexport default PinnedItems;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Button, Panel, Slot, Fill } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { check, starEmpty, starFilled } from '@wordpress/icons';\nimport { useEffect, useRef } from '@wordpress/element';\nimport { store as viewportStore } from '@wordpress/viewport';\n\n/**\n * Internal dependencies\n */\nimport ComplementaryAreaHeader from '../complementary-area-header';\nimport ComplementaryAreaMoreMenuItem from '../complementary-area-more-menu-item';\nimport ComplementaryAreaToggle from '../complementary-area-toggle';\nimport withComplementaryAreaContext from '../complementary-area-context';\nimport PinnedItems from '../pinned-items';\nimport { store as interfaceStore } from '../../store';\n\nfunction ComplementaryAreaSlot( { scope, ...props } ) {\n\treturn <Slot name={ `ComplementaryArea/${ scope }` } { ...props } />;\n}\n\nfunction ComplementaryAreaFill( { scope, children, className } ) {\n\treturn (\n\t\t<Fill name={ `ComplementaryArea/${ scope }` }>\n\t\t\t<div className={ className }>{ children }</div>\n\t\t</Fill>\n\t);\n}\n\nfunction useAdjustComplementaryListener(\n\tscope,\n\tidentifier,\n\tactiveArea,\n\tisActive,\n\tisSmall\n) {\n\tconst previousIsSmall = useRef( false );\n\tconst shouldOpenWhenNotSmall = useRef( false );\n\tconst { enableComplementaryArea, disableComplementaryArea } =\n\t\tuseDispatch( interfaceStore );\n\tuseEffect( () => {\n\t\t// If the complementary area is active and the editor is switching from a big to a small window size.\n\t\tif ( isActive && isSmall && ! previousIsSmall.current ) {\n\t\t\t// Disable the complementary area.\n\t\t\tdisableComplementaryArea( scope );\n\t\t\t// Flag the complementary area to be reopened when the window size goes from small to big.\n\t\t\tshouldOpenWhenNotSmall.current = true;\n\t\t} else if (\n\t\t\t// If there is a flag indicating the complementary area should be enabled when we go from small to big window size\n\t\t\t// and we are going from a small to big window size.\n\t\t\tshouldOpenWhenNotSmall.current &&\n\t\t\t! isSmall &&\n\t\t\tpreviousIsSmall.current\n\t\t) {\n\t\t\t// Remove the flag indicating the complementary area should be enabled.\n\t\t\tshouldOpenWhenNotSmall.current = false;\n\t\t\t// Enable the complementary area.\n\t\t\tenableComplementaryArea( scope, identifier );\n\t\t} else if (\n\t\t\t// If the flag is indicating the current complementary should be reopened but another complementary area becomes active,\n\t\t\t// remove the flag.\n\t\t\tshouldOpenWhenNotSmall.current &&\n\t\t\tactiveArea &&\n\t\t\tactiveArea !== identifier\n\t\t) {\n\t\t\tshouldOpenWhenNotSmall.current = false;\n\t\t}\n\t\tif ( isSmall !== previousIsSmall.current ) {\n\t\t\tpreviousIsSmall.current = isSmall;\n\t\t}\n\t}, [ isActive, isSmall, scope, identifier, activeArea ] );\n}\n\nfunction ComplementaryArea( {\n\tchildren,\n\tclassName,\n\tcloseLabel = __( 'Close plugin' ),\n\tidentifier,\n\theader,\n\theaderClassName,\n\ticon,\n\tisPinnable = true,\n\tpanelClassName,\n\tscope,\n\tname,\n\tsmallScreenTitle,\n\ttitle,\n\ttoggleShortcut,\n\tisActiveByDefault,\n\tshowIconLabels = false,\n} ) {\n\tconst { isActive, isPinned, activeArea, isSmall, isLarge } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getActiveComplementaryArea, isItemPinned } =\n\t\t\t\tselect( interfaceStore );\n\t\t\tconst _activeArea = getActiveComplementaryArea( scope );\n\t\t\treturn {\n\t\t\t\tisActive: _activeArea === identifier,\n\t\t\t\tisPinned: isItemPinned( scope, identifier ),\n\t\t\t\tactiveArea: _activeArea,\n\t\t\t\tisSmall: select( viewportStore ).isViewportMatch( '< medium' ),\n\t\t\t\tisLarge: select( viewportStore ).isViewportMatch( 'large' ),\n\t\t\t};\n\t\t},\n\t\t[ identifier, scope ]\n\t);\n\tuseAdjustComplementaryListener(\n\t\tscope,\n\t\tidentifier,\n\t\tactiveArea,\n\t\tisActive,\n\t\tisSmall\n\t);\n\tconst {\n\t\tenableComplementaryArea,\n\t\tdisableComplementaryArea,\n\t\tpinItem,\n\t\tunpinItem,\n\t} = useDispatch( interfaceStore );\n\n\tuseEffect( () => {\n\t\tif ( isActiveByDefault && activeArea === undefined && ! isSmall ) {\n\t\t\tenableComplementaryArea( scope, identifier );\n\t\t}\n\t}, [ activeArea, isActiveByDefault, scope, identifier, isSmall ] );\n\n\treturn (\n\t\t<>\n\t\t\t{ isPinnable && (\n\t\t\t\t<PinnedItems scope={ scope }>\n\t\t\t\t\t{ isPinned && (\n\t\t\t\t\t\t<ComplementaryAreaToggle\n\t\t\t\t\t\t\tscope={ scope }\n\t\t\t\t\t\t\tidentifier={ identifier }\n\t\t\t\t\t\t\tisPressed={\n\t\t\t\t\t\t\t\tisActive && ( ! showIconLabels || isLarge )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taria-expanded={ isActive }\n\t\t\t\t\t\t\tlabel={ title }\n\t\t\t\t\t\t\ticon={ showIconLabels ? check : icon }\n\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PinnedItems>\n\t\t\t) }\n\t\t\t{ name && isPinnable && (\n\t\t\t\t<ComplementaryAreaMoreMenuItem\n\t\t\t\t\ttarget={ name }\n\t\t\t\t\tscope={ scope }\n\t\t\t\t\ticon={ icon }\n\t\t\t\t>\n\t\t\t\t\t{ title }\n\t\t\t\t</ComplementaryAreaMoreMenuItem>\n\t\t\t) }\n\t\t\t{ isActive && (\n\t\t\t\t<ComplementaryAreaFill\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'interface-complementary-area',\n\t\t\t\t\t\tclassName\n\t\t\t\t\t) }\n\t\t\t\t\tscope={ scope }\n\t\t\t\t>\n\t\t\t\t\t<ComplementaryAreaHeader\n\t\t\t\t\t\tclassName={ headerClassName }\n\t\t\t\t\t\tcloseLabel={ closeLabel }\n\t\t\t\t\t\tonClose={ () => disableComplementaryArea( scope ) }\n\t\t\t\t\t\tsmallScreenTitle={ smallScreenTitle }\n\t\t\t\t\t\ttoggleButtonProps={ {\n\t\t\t\t\t\t\tlabel: closeLabel,\n\t\t\t\t\t\t\tshortcut: toggleShortcut,\n\t\t\t\t\t\t\tscope,\n\t\t\t\t\t\t\tidentifier,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ header || (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<strong>{ title }</strong>\n\t\t\t\t\t\t\t\t{ isPinnable && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tclassName=\"interface-complementary-area__pin-unpin-item\"\n\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\tisPinned ? starFilled : starEmpty\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t\tisPinned\n\t\t\t\t\t\t\t\t\t\t\t\t? __( 'Unpin from toolbar' )\n\t\t\t\t\t\t\t\t\t\t\t\t: __( 'Pin to toolbar' )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\t( isPinned ? unpinItem : pinItem )(\n\t\t\t\t\t\t\t\t\t\t\t\tscope,\n\t\t\t\t\t\t\t\t\t\t\t\tidentifier\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\tisPressed={ isPinned }\n\t\t\t\t\t\t\t\t\t\taria-expanded={ isPinned }\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) }\n\t\t\t\t\t</ComplementaryAreaHeader>\n\t\t\t\t\t<Panel className={ panelClassName }>{ children }</Panel>\n\t\t\t\t</ComplementaryAreaFill>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nconst ComplementaryAreaWrapped =\n\twithComplementaryAreaContext( ComplementaryArea );\n\nComplementaryAreaWrapped.Slot = ComplementaryAreaSlot;\n\nexport default ComplementaryAreaWrapped;\n","/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\n\nconst FullscreenMode = ( { isActive } ) => {\n\tuseEffect( () => {\n\t\tlet isSticky = false;\n\t\t// `is-fullscreen-mode` is set in PHP as a body class by Gutenberg, and this causes\n\t\t// `sticky-menu` to be applied by WordPress and prevents the admin menu being scrolled\n\t\t// even if `is-fullscreen-mode` is then removed. Let's remove `sticky-menu` here as\n\t\t// a consequence of the FullscreenMode setup.\n\t\tif ( document.body.classList.contains( 'sticky-menu' ) ) {\n\t\t\tisSticky = true;\n\t\t\tdocument.body.classList.remove( 'sticky-menu' );\n\t\t}\n\n\t\treturn () => {\n\t\t\tif ( isSticky ) {\n\t\t\t\tdocument.body.classList.add( 'sticky-menu' );\n\t\t\t}\n\t\t};\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tif ( isActive ) {\n\t\t\tdocument.body.classList.add( 'is-fullscreen-mode' );\n\t\t} else {\n\t\t\tdocument.body.classList.remove( 'is-fullscreen-mode' );\n\t\t}\n\n\t\treturn () => {\n\t\t\tif ( isActive ) {\n\t\t\t\tdocument.body.classList.remove( 'is-fullscreen-mode' );\n\t\t\t}\n\t\t};\n\t}, [ isActive ] );\n\n\treturn null;\n};\nexport default FullscreenMode;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { forwardRef, useEffect } from '@wordpress/element';\nimport { __unstableUseNavigateRegions as useNavigateRegions } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMergeRefs } from '@wordpress/compose';\n\nfunction useHTMLClass( className ) {\n\tuseEffect( () => {\n\t\tconst element =\n\t\t\tdocument && document.querySelector( `html:not(.${ className })` );\n\t\tif ( ! element ) {\n\t\t\treturn;\n\t\t}\n\t\telement.classList.toggle( className );\n\t\treturn () => {\n\t\t\telement.classList.toggle( className );\n\t\t};\n\t}, [ className ] );\n}\n\nfunction InterfaceSkeleton(\n\t{\n\t\tfooter,\n\t\theader,\n\t\tsidebar,\n\t\tsecondarySidebar,\n\t\tnotices,\n\t\tcontent,\n\t\tdrawer,\n\t\tactions,\n\t\tlabels,\n\t\tclassName,\n\t\tshortcuts,\n\t},\n\tref\n) {\n\tconst navigateRegionsProps = useNavigateRegions( shortcuts );\n\n\tuseHTMLClass( 'interface-interface-skeleton__html-container' );\n\n\tconst defaultLabels = {\n\t\t/* translators: accessibility text for the nav bar landmark region. */\n\t\tdrawer: __( 'Drawer' ),\n\t\t/* translators: accessibility text for the top bar landmark region. */\n\t\theader: __( 'Header' ),\n\t\t/* translators: accessibility text for the content landmark region. */\n\t\tbody: __( 'Content' ),\n\t\t/* translators: accessibility text for the secondary sidebar landmark region. */\n\t\tsecondarySidebar: __( 'Block Library' ),\n\t\t/* translators: accessibility text for the settings landmark region. */\n\t\tsidebar: __( 'Settings' ),\n\t\t/* translators: accessibility text for the publish landmark region. */\n\t\tactions: __( 'Publish' ),\n\t\t/* translators: accessibility text for the footer landmark region. */\n\t\tfooter: __( 'Footer' ),\n\t};\n\n\tconst mergedLabels = { ...defaultLabels, ...labels };\n\n\treturn (\n\t\t<div\n\t\t\t{ ...navigateRegionsProps }\n\t\t\tref={ useMergeRefs( [ ref, navigateRegionsProps.ref ] ) }\n\t\t\tclassName={ classnames(\n\t\t\t\tclassName,\n\t\t\t\t'interface-interface-skeleton',\n\t\t\t\tnavigateRegionsProps.className,\n\t\t\t\t!! footer && 'has-footer'\n\t\t\t) }\n\t\t>\n\t\t\t{ !! drawer && (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"interface-interface-skeleton__drawer\"\n\t\t\t\t\trole=\"region\"\n\t\t\t\t\taria-label={ mergedLabels.drawer }\n\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t>\n\t\t\t\t\t{ drawer }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<div className=\"interface-interface-skeleton__editor\">\n\t\t\t\t{ !! header && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"interface-interface-skeleton__header\"\n\t\t\t\t\t\trole=\"region\"\n\t\t\t\t\t\taria-label={ mergedLabels.header }\n\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ header }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t<div className=\"interface-interface-skeleton__body\">\n\t\t\t\t\t{ !! secondarySidebar && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"interface-interface-skeleton__secondary-sidebar\"\n\t\t\t\t\t\t\trole=\"region\"\n\t\t\t\t\t\t\taria-label={ mergedLabels.secondarySidebar }\n\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ secondarySidebar }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t\t{ !! notices && (\n\t\t\t\t\t\t<div className=\"interface-interface-skeleton__notices\">\n\t\t\t\t\t\t\t{ notices }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"interface-interface-skeleton__content\"\n\t\t\t\t\t\trole=\"region\"\n\t\t\t\t\t\taria-label={ mergedLabels.body }\n\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ content }\n\t\t\t\t\t</div>\n\t\t\t\t\t{ !! sidebar && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"interface-interface-skeleton__sidebar\"\n\t\t\t\t\t\t\trole=\"region\"\n\t\t\t\t\t\t\taria-label={ mergedLabels.sidebar }\n\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ sidebar }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t\t{ !! actions && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"interface-interface-skeleton__actions\"\n\t\t\t\t\t\t\trole=\"region\"\n\t\t\t\t\t\t\taria-label={ mergedLabels.actions }\n\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ actions }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{ !! footer && (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"interface-interface-skeleton__footer\"\n\t\t\t\t\trole=\"region\"\n\t\t\t\t\taria-label={ mergedLabels.footer }\n\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t>\n\t\t\t\t\t{ footer }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default forwardRef( InterfaceSkeleton );\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst moreVertical = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z\" />\n\t</SVG>\n);\n\nexport default moreVertical;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { DropdownMenu } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\n\nexport default function MoreMenuDropdown( {\n\tas: DropdownComponent = DropdownMenu,\n\tclassName,\n\t/* translators: button label text should, if possible, be under 16 characters. */\n\tlabel = __( 'Options' ),\n\tpopoverProps,\n\ttoggleProps,\n\tchildren,\n} ) {\n\treturn (\n\t\t<DropdownComponent\n\t\t\tclassName={ classnames(\n\t\t\t\t'interface-more-menu-dropdown',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t\ticon={ moreVertical }\n\t\t\tlabel={ label }\n\t\t\tpopoverProps={ {\n\t\t\t\tposition: 'bottom left',\n\t\t\t\t...popoverProps,\n\t\t\t\tclassName: classnames(\n\t\t\t\t\t'interface-more-menu-dropdown__content',\n\t\t\t\t\tpopoverProps?.className\n\t\t\t\t),\n\t\t\t} }\n\t\t\ttoggleProps={ {\n\t\t\t\ttooltipPosition: 'bottom',\n\t\t\t\t...toggleProps,\n\t\t\t} }\n\t\t>\n\t\t\t{ ( onClose ) => children( onClose ) }\n\t\t</DropdownComponent>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Modal } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nexport default function PreferencesModal( { closeModal, children } ) {\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"interface-preferences-modal\"\n\t\t\ttitle={ __( 'Preferences' ) }\n\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\tonRequestClose={ closeModal }\n\t\t>\n\t\t\t{ children }\n\t\t</Modal>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { cloneElement } from '@wordpress/element';\n\n/** @typedef {{icon: JSX.Element, size?: number} & import('@wordpress/primitives').SVGProps} IconProps */\n\n/**\n * Return an SVG icon.\n *\n * @param {IconProps} props icon is the SVG component to render\n * size is a number specifiying the icon size in pixels\n * Other props will be passed to wrapped SVG component\n *\n * @return {JSX.Element} Icon component\n */\nfunction Icon( { icon, size = 24, ...props } ) {\n\treturn cloneElement( icon, {\n\t\twidth: size,\n\t\theight: size,\n\t\t...props,\n\t} );\n}\n\nexport default Icon;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst chevronLeft = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z\" />\n\t</SVG>\n);\n\nexport default chevronLeft;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst chevronRight = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z\" />\n\t</SVG>\n);\n\nexport default chevronRight;\n","/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalNavigatorProvider as NavigatorProvider,\n\t__experimentalNavigatorScreen as NavigatorScreen,\n\t__experimentalNavigatorButton as NavigatorButton,\n\t__experimentalNavigatorBackButton as NavigatorBackButton,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\t__experimentalText as Text,\n\t__experimentalTruncate as Truncate,\n\tFlexItem,\n\tTabPanel,\n\tCard,\n\tCardHeader,\n\tCardBody,\n} from '@wordpress/components';\nimport { useMemo, useCallback, useState } from '@wordpress/element';\nimport { chevronLeft, chevronRight, Icon } from '@wordpress/icons';\nimport { isRTL, __ } from '@wordpress/i18n';\n\nconst PREFERENCES_MENU = 'preferences-menu';\n\nexport default function PreferencesModalTabs( { sections } ) {\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\n\t// This is also used to sync the two different rendered components\n\t// between small and large viewports.\n\tconst [ activeMenu, setActiveMenu ] = useState( PREFERENCES_MENU );\n\t/**\n\t * Create helper objects from `sections` for easier data handling.\n\t * `tabs` is used for creating the `TabPanel` and `sectionsContentMap`\n\t * is used for easier access to active tab's content.\n\t */\n\tconst { tabs, sectionsContentMap } = useMemo( () => {\n\t\tlet mappedTabs = {\n\t\t\ttabs: [],\n\t\t\tsectionsContentMap: {},\n\t\t};\n\t\tif ( sections.length ) {\n\t\t\tmappedTabs = sections.reduce(\n\t\t\t\t( accumulator, { name, tabLabel: title, content } ) => {\n\t\t\t\t\taccumulator.tabs.push( { name, title } );\n\t\t\t\t\taccumulator.sectionsContentMap[ name ] = content;\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{ tabs: [], sectionsContentMap: {} }\n\t\t\t);\n\t\t}\n\t\treturn mappedTabs;\n\t}, [ sections ] );\n\n\tconst getCurrentTab = useCallback(\n\t\t( tab ) => sectionsContentMap[ tab.name ] || null,\n\t\t[ sectionsContentMap ]\n\t);\n\n\tlet modalContent;\n\t// We render different components based on the viewport size.\n\tif ( isLargeViewport ) {\n\t\tmodalContent = (\n\t\t\t<TabPanel\n\t\t\t\tclassName=\"interface-preferences__tabs\"\n\t\t\t\ttabs={ tabs }\n\t\t\t\tinitialTabName={\n\t\t\t\t\tactiveMenu !== PREFERENCES_MENU ? activeMenu : undefined\n\t\t\t\t}\n\t\t\t\tonSelect={ setActiveMenu }\n\t\t\t\torientation=\"vertical\"\n\t\t\t>\n\t\t\t\t{ getCurrentTab }\n\t\t\t</TabPanel>\n\t\t);\n\t} else {\n\t\tmodalContent = (\n\t\t\t<NavigatorProvider\n\t\t\t\tinitialPath=\"/\"\n\t\t\t\tclassName=\"interface-preferences__provider\"\n\t\t\t>\n\t\t\t\t<NavigatorScreen path=\"/\">\n\t\t\t\t\t<Card isBorderless size=\"small\">\n\t\t\t\t\t\t<CardBody>\n\t\t\t\t\t\t\t<ItemGroup>\n\t\t\t\t\t\t\t\t{ tabs.map( ( tab ) => {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<NavigatorButton\n\t\t\t\t\t\t\t\t\t\t\tkey={ tab.name }\n\t\t\t\t\t\t\t\t\t\t\tpath={ tab.name }\n\t\t\t\t\t\t\t\t\t\t\tas={ Item }\n\t\t\t\t\t\t\t\t\t\t\tisAction\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Truncate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ tab.title }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Truncate>\n\t\t\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\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\t\t\tisRTL()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? chevronLeft\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: chevronRight\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t\t\t</NavigatorButton>\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</ItemGroup>\n\t\t\t\t\t\t</CardBody>\n\t\t\t\t\t</Card>\n\t\t\t\t</NavigatorScreen>\n\t\t\t\t{ sections.length &&\n\t\t\t\t\tsections.map( ( section ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<NavigatorScreen\n\t\t\t\t\t\t\t\tkey={ `${ section.name }-menu` }\n\t\t\t\t\t\t\t\tpath={ section.name }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Card isBorderless size=\"large\">\n\t\t\t\t\t\t\t\t\t<CardHeader\n\t\t\t\t\t\t\t\t\t\tisBorderless={ false }\n\t\t\t\t\t\t\t\t\t\tjustify=\"left\"\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\tgap=\"6\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<NavigatorBackButton\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tisRTL()\n\t\t\t\t\t\t\t\t\t\t\t\t\t? chevronRight\n\t\t\t\t\t\t\t\t\t\t\t\t\t: chevronLeft\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Navigate to the previous view'\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\t<Text size=\"16\">\n\t\t\t\t\t\t\t\t\t\t\t{ section.tabLabel }\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t</CardHeader>\n\t\t\t\t\t\t\t\t\t<CardBody>{ section.content }</CardBody>\n\t\t\t\t\t\t\t\t</Card>\n\t\t\t\t\t\t\t</NavigatorScreen>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t</NavigatorProvider>\n\t\t);\n\t}\n\n\treturn modalContent;\n}\n","const Section = ( { description, title, children } ) => (\n\t<fieldset className=\"interface-preferences-modal__section\">\n\t\t<legend>\n\t\t\t<h2 className=\"interface-preferences-modal__section-title\">\n\t\t\t\t{ title }\n\t\t\t</h2>\n\t\t\t{ description && (\n\t\t\t\t<p className=\"interface-preferences-modal__section-description\">\n\t\t\t\t\t{ description }\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</legend>\n\t\t{ children }\n\t</fieldset>\n);\n\nexport default Section;\n","/**\n * WordPress dependencies\n */\nimport { ToggleControl } from '@wordpress/components';\n\nfunction BaseOption( { help, label, isChecked, onChange, children } ) {\n\treturn (\n\t\t<div className=\"interface-preferences-modal__option\">\n\t\t\t<ToggleControl\n\t\t\t\thelp={ help }\n\t\t\t\tlabel={ label }\n\t\t\t\tchecked={ isChecked }\n\t\t\t\tonChange={ onChange }\n\t\t\t/>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nexport default BaseOption;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"a11y\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"coreData\"];","/**\n * External dependencies\n */\nimport { castArray, reduce, without } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport apiFetch from '@wordpress/api-fetch';\nimport { store as interfaceStore } from '@wordpress/interface';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { speak } from '@wordpress/a11y';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { getMetaBoxContainer } from '../utils/meta-boxes';\nimport { store as editPostStore } from '.';\n\n/**\n * Returns an action object used in signalling that the user opened an editor sidebar.\n *\n * @param {?string} name Sidebar name to be opened.\n */\nexport const openGeneralSidebar =\n\t( name ) =>\n\t( { registry } ) =>\n\t\tregistry\n\t\t\t.dispatch( interfaceStore )\n\t\t\t.enableComplementaryArea( editPostStore.name, name );\n\n/**\n * Returns an action object signalling that the user closed the sidebar.\n */\nexport const closeGeneralSidebar =\n\t() =>\n\t( { registry } ) =>\n\t\tregistry\n\t\t\t.dispatch( interfaceStore )\n\t\t\t.disableComplementaryArea( editPostStore.name );\n\n/**\n * Returns an action object used in signalling that the user opened a modal.\n *\n * @param {string} name A string that uniquely identifies the modal.\n *\n * @return {Object} Action object.\n */\nexport function openModal( name ) {\n\treturn {\n\t\ttype: 'OPEN_MODAL',\n\t\tname,\n\t};\n}\n\n/**\n * Returns an action object signalling that the user closed a modal.\n *\n * @return {Object} Action object.\n */\nexport function closeModal() {\n\treturn {\n\t\ttype: 'CLOSE_MODAL',\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the user opened the publish\n * sidebar.\n *\n * @return {Object} Action object\n */\nexport function openPublishSidebar() {\n\treturn {\n\t\ttype: 'OPEN_PUBLISH_SIDEBAR',\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the user closed the\n * publish sidebar.\n *\n * @return {Object} Action object.\n */\nexport function closePublishSidebar() {\n\treturn {\n\t\ttype: 'CLOSE_PUBLISH_SIDEBAR',\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the user toggles the publish sidebar.\n *\n * @return {Object} Action object\n */\nexport function togglePublishSidebar() {\n\treturn {\n\t\ttype: 'TOGGLE_PUBLISH_SIDEBAR',\n\t};\n}\n\n/**\n * Returns an action object used to enable or disable a panel in the editor.\n *\n * @param {string} panelName A string that identifies the panel to enable or disable.\n *\n * @return {Object} Action object.\n */\nexport const toggleEditorPanelEnabled =\n\t( panelName ) =>\n\t( { registry } ) => {\n\t\tconst inactivePanels =\n\t\t\tregistry\n\t\t\t\t.select( preferencesStore )\n\t\t\t\t.get( 'core/edit-post', 'inactivePanels' ) ?? [];\n\n\t\tconst isPanelInactive = !! inactivePanels?.includes( panelName );\n\n\t\t// If the panel is inactive, remove it to enable it, else add it to\n\t\t// make it inactive.\n\t\tlet updatedInactivePanels;\n\t\tif ( isPanelInactive ) {\n\t\t\tupdatedInactivePanels = inactivePanels.filter(\n\t\t\t\t( invactivePanelName ) => invactivePanelName !== panelName\n\t\t\t);\n\t\t} else {\n\t\t\tupdatedInactivePanels = [ ...inactivePanels, panelName ];\n\t\t}\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( 'core/edit-post', 'inactivePanels', updatedInactivePanels );\n\t};\n\n/**\n * Opens a closed panel and closes an open panel.\n *\n * @param {string} panelName A string that identifies the panel to open or close.\n */\nexport const toggleEditorPanelOpened =\n\t( panelName ) =>\n\t( { registry } ) => {\n\t\tconst openPanels =\n\t\t\tregistry\n\t\t\t\t.select( preferencesStore )\n\t\t\t\t.get( 'core/edit-post', 'openPanels' ) ?? [];\n\n\t\tconst isPanelOpen = !! openPanels?.includes( panelName );\n\n\t\t// If the panel is open, remove it to close it, else add it to\n\t\t// make it open.\n\t\tlet updatedOpenPanels;\n\t\tif ( isPanelOpen ) {\n\t\t\tupdatedOpenPanels = openPanels.filter(\n\t\t\t\t( openPanelName ) => openPanelName !== panelName\n\t\t\t);\n\t\t} else {\n\t\t\tupdatedOpenPanels = [ ...openPanels, panelName ];\n\t\t}\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( 'core/edit-post', 'openPanels', updatedOpenPanels );\n\t};\n\n/**\n * Returns an action object used to remove a panel from the editor.\n *\n * @param {string} panelName A string that identifies the panel to remove.\n *\n * @return {Object} Action object.\n */\nexport function removeEditorPanel( panelName ) {\n\treturn {\n\t\ttype: 'REMOVE_PANEL',\n\t\tpanelName,\n\t};\n}\n\n/**\n * Triggers an action used to toggle a feature flag.\n *\n * @param {string} feature Feature name.\n */\nexport const toggleFeature =\n\t( feature ) =>\n\t( { registry } ) =>\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.toggle( 'core/edit-post', feature );\n\n/**\n * Triggers an action used to switch editor mode.\n *\n * @param {string} mode The editor mode.\n */\nexport const switchEditorMode =\n\t( mode ) =>\n\t( { registry } ) => {\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( 'core/edit-post', 'editorMode', mode );\n\n\t\t// Unselect blocks when we switch to the code editor.\n\t\tif ( mode !== 'visual' ) {\n\t\t\tregistry.dispatch( blockEditorStore ).clearSelectedBlock();\n\t\t}\n\n\t\tconst message =\n\t\t\tmode === 'visual'\n\t\t\t\t? __( 'Visual editor selected' )\n\t\t\t\t: __( 'Code editor selected' );\n\t\tspeak( message, 'assertive' );\n\t};\n\n/**\n * Triggers an action object used to toggle a plugin name flag.\n *\n * @param {string} pluginName Plugin name.\n */\nexport const togglePinnedPluginItem =\n\t( pluginName ) =>\n\t( { registry } ) => {\n\t\tconst isPinned = registry\n\t\t\t.select( interfaceStore )\n\t\t\t.isItemPinned( 'core/edit-post', pluginName );\n\n\t\tregistry\n\t\t\t.dispatch( interfaceStore )\n\t\t\t[ isPinned ? 'unpinItem' : 'pinItem' ](\n\t\t\t\t'core/edit-post',\n\t\t\t\tpluginName\n\t\t\t);\n\t};\n\n/**\n * Returns an action object used in signaling that a style should be auto-applied when a block is created.\n *\n * @param {string} blockName Name of the block.\n * @param {?string} blockStyle Name of the style that should be auto applied. If undefined, the \"auto apply\" setting of the block is removed.\n */\nexport const updatePreferredStyleVariations =\n\t( blockName, blockStyle ) =>\n\t( { registry } ) => {\n\t\tif ( ! blockName ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst existingVariations =\n\t\t\tregistry\n\t\t\t\t.select( preferencesStore )\n\t\t\t\t.get( 'core/edit-post', 'preferredStyleVariations' ) ?? {};\n\n\t\t// When the blockStyle is omitted, remove the block's preferred variation.\n\t\tif ( ! blockStyle ) {\n\t\t\tconst updatedVariations = {\n\t\t\t\t...existingVariations,\n\t\t\t};\n\n\t\t\tdelete updatedVariations[ blockName ];\n\n\t\t\tregistry\n\t\t\t\t.dispatch( preferencesStore )\n\t\t\t\t.set(\n\t\t\t\t\t'core/edit-post',\n\t\t\t\t\t'preferredStyleVariations',\n\t\t\t\t\tupdatedVariations\n\t\t\t\t);\n\t\t} else {\n\t\t\t// Else add the variation.\n\t\t\tregistry\n\t\t\t\t.dispatch( preferencesStore )\n\t\t\t\t.set( 'core/edit-post', 'preferredStyleVariations', {\n\t\t\t\t\t...existingVariations,\n\t\t\t\t\t[ blockName ]: blockStyle,\n\t\t\t\t} );\n\t\t}\n\t};\n\n/**\n * Update the provided block types to be visible.\n *\n * @param {string[]} blockNames Names of block types to show.\n */\nexport const showBlockTypes =\n\t( blockNames ) =>\n\t( { registry } ) => {\n\t\tconst existingBlockNames =\n\t\t\tregistry\n\t\t\t\t.select( preferencesStore )\n\t\t\t\t.get( 'core/edit-post', 'hiddenBlockTypes' ) ?? [];\n\n\t\tconst newBlockNames = without(\n\t\t\texistingBlockNames,\n\t\t\t...castArray( blockNames )\n\t\t);\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( 'core/edit-post', 'hiddenBlockTypes', newBlockNames );\n\t};\n\n/**\n * Update the provided block types to be hidden.\n *\n * @param {string[]} blockNames Names of block types to hide.\n */\nexport const hideBlockTypes =\n\t( blockNames ) =>\n\t( { registry } ) => {\n\t\tconst existingBlockNames =\n\t\t\tregistry\n\t\t\t\t.select( preferencesStore )\n\t\t\t\t.get( 'core/edit-post', 'hiddenBlockTypes' ) ?? [];\n\n\t\tconst mergedBlockNames = new Set( [\n\t\t\t...existingBlockNames,\n\t\t\t...castArray( blockNames ),\n\t\t] );\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( 'core/edit-post', 'hiddenBlockTypes', [\n\t\t\t\t...mergedBlockNames,\n\t\t\t] );\n\t};\n\n/**\n * Returns an action object used in signaling\n * what Meta boxes are available in which location.\n *\n * @param {Object} metaBoxesPerLocation Meta boxes per location.\n */\nexport const setAvailableMetaBoxesPerLocation =\n\t( metaBoxesPerLocation ) =>\n\t( { dispatch } ) =>\n\t\tdispatch( {\n\t\t\ttype: 'SET_META_BOXES_PER_LOCATIONS',\n\t\t\tmetaBoxesPerLocation,\n\t\t} );\n\n/**\n * Update a metabox.\n */\nexport const requestMetaBoxUpdates =\n\t() =>\n\tasync ( { registry, select, dispatch } ) => {\n\t\tdispatch( {\n\t\t\ttype: 'REQUEST_META_BOX_UPDATES',\n\t\t} );\n\n\t\t// Saves the wp_editor fields.\n\t\tif ( window.tinyMCE ) {\n\t\t\twindow.tinyMCE.triggerSave();\n\t\t}\n\n\t\t// Additional data needed for backward compatibility.\n\t\t// If we do not provide this data, the post will be overridden with the default values.\n\t\tconst post = registry.select( editorStore ).getCurrentPost();\n\t\tconst additionalData = [\n\t\t\tpost.comment_status\n\t\t\t\t? [ 'comment_status', post.comment_status ]\n\t\t\t\t: false,\n\t\t\tpost.ping_status ? [ 'ping_status', post.ping_status ] : false,\n\t\t\tpost.sticky ? [ 'sticky', post.sticky ] : false,\n\t\t\tpost.author ? [ 'post_author', post.author ] : false,\n\t\t].filter( Boolean );\n\n\t\t// We gather all the metaboxes locations data and the base form data.\n\t\tconst baseFormData = new window.FormData(\n\t\t\tdocument.querySelector( '.metabox-base-form' )\n\t\t);\n\t\tconst activeMetaBoxLocations = select.getActiveMetaBoxLocations();\n\t\tconst formDataToMerge = [\n\t\t\tbaseFormData,\n\t\t\t...activeMetaBoxLocations.map(\n\t\t\t\t( location ) =>\n\t\t\t\t\tnew window.FormData( getMetaBoxContainer( location ) )\n\t\t\t),\n\t\t];\n\n\t\t// Merge all form data objects into a single one.\n\t\tconst formData = reduce(\n\t\t\tformDataToMerge,\n\t\t\t( memo, currentFormData ) => {\n\t\t\t\tfor ( const [ key, value ] of currentFormData ) {\n\t\t\t\t\tmemo.append( key, value );\n\t\t\t\t}\n\t\t\t\treturn memo;\n\t\t\t},\n\t\t\tnew window.FormData()\n\t\t);\n\t\tadditionalData.forEach( ( [ key, value ] ) =>\n\t\t\tformData.append( key, value )\n\t\t);\n\n\t\ttry {\n\t\t\t// Save the metaboxes.\n\t\t\tawait apiFetch( {\n\t\t\t\turl: window._wpMetaBoxUrl,\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: formData,\n\t\t\t\tparse: false,\n\t\t\t} );\n\t\t\tdispatch.metaBoxUpdatesSuccess();\n\t\t} catch {\n\t\t\tdispatch.metaBoxUpdatesFailure();\n\t\t}\n\t};\n\n/**\n * Returns an action object used to signal a successful meta box update.\n *\n * @return {Object} Action object.\n */\nexport function metaBoxUpdatesSuccess() {\n\treturn {\n\t\ttype: 'META_BOX_UPDATES_SUCCESS',\n\t};\n}\n\n/**\n * Returns an action object used to signal a failed meta box update.\n *\n * @return {Object} Action object.\n */\nexport function metaBoxUpdatesFailure() {\n\treturn {\n\t\ttype: 'META_BOX_UPDATES_FAILURE',\n\t};\n}\n\n/**\n * Returns an action object used to toggle the width of the editing canvas.\n *\n * @param {string} deviceType\n *\n * @return {Object} Action object.\n */\nexport function __experimentalSetPreviewDeviceType( deviceType ) {\n\treturn {\n\t\ttype: 'SET_PREVIEW_DEVICE_TYPE',\n\t\tdeviceType,\n\t};\n}\n\n/**\n * Returns an action object used to open/close the inserter.\n *\n * @param {boolean|Object} value Whether the inserter should be\n * opened (true) or closed (false).\n * To specify an insertion point,\n * use an object.\n * @param {string} value.rootClientId The root client ID to insert at.\n * @param {number} value.insertionIndex The index to insert at.\n *\n * @return {Object} Action object.\n */\nexport function setIsInserterOpened( value ) {\n\treturn {\n\t\ttype: 'SET_IS_INSERTER_OPENED',\n\t\tvalue,\n\t};\n}\n\n/**\n * Returns an action object used to open/close the list view.\n *\n * @param {boolean} isOpen A boolean representing whether the list view should be opened or closed.\n * @return {Object} Action object.\n */\nexport function setIsListViewOpened( isOpen ) {\n\treturn {\n\t\ttype: 'SET_IS_LIST_VIEW_OPENED',\n\t\tisOpen,\n\t};\n}\n\n/**\n * Returns an action object used to switch to template editing.\n *\n * @param {boolean} value Is editing template.\n * @return {Object} Action object.\n */\nexport function setIsEditingTemplate( value ) {\n\treturn {\n\t\ttype: 'SET_IS_EDITING_TEMPLATE',\n\t\tvalue,\n\t};\n}\n\n/**\n * Switches to the template mode.\n *\n * @param {boolean} newTemplate Is new template.\n */\nexport const __unstableSwitchToTemplateMode =\n\t( newTemplate = false ) =>\n\t( { registry, select, dispatch } ) => {\n\t\tdispatch( setIsEditingTemplate( true ) );\n\t\tconst isWelcomeGuideActive = select.isFeatureActive(\n\t\t\t'welcomeGuideTemplate'\n\t\t);\n\t\tif ( ! isWelcomeGuideActive ) {\n\t\t\tconst message = newTemplate\n\t\t\t\t? __( \"Custom template created. You're in template mode now.\" )\n\t\t\t\t: __(\n\t\t\t\t\t\t'Editing template. Changes made here affect all posts and pages that use the template.'\n\t\t\t\t );\n\t\t\tregistry.dispatch( noticesStore ).createSuccessNotice( message, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t}\n\t};\n\n/**\n * Create a block based template.\n *\n * @param {Object?} template Template to create and assign.\n */\nexport const __unstableCreateTemplate =\n\t( template ) =>\n\tasync ( { registry } ) => {\n\t\tconst savedTemplate = await registry\n\t\t\t.dispatch( coreStore )\n\t\t\t.saveEntityRecord( 'postType', 'wp_template', template );\n\t\tconst post = registry.select( editorStore ).getCurrentPost();\n\t\tregistry\n\t\t\t.dispatch( coreStore )\n\t\t\t.editEntityRecord( 'postType', post.type, post.id, {\n\t\t\t\ttemplate: savedTemplate.slug,\n\t\t\t} );\n\t};\n\nlet metaBoxesInitialized = false;\n\n/**\n * Initializes WordPress `postboxes` script and the logic for saving meta boxes.\n */\nexport const initializeMetaBoxes =\n\t() =>\n\t( { registry, select, dispatch } ) => {\n\t\tconst isEditorReady = registry\n\t\t\t.select( editorStore )\n\t\t\t.__unstableIsEditorReady();\n\n\t\tif ( ! isEditorReady ) {\n\t\t\treturn;\n\t\t}\n\t\t// Only initialize once.\n\t\tif ( metaBoxesInitialized ) {\n\t\t\treturn;\n\t\t}\n\t\tconst postType = registry.select( editorStore ).getCurrentPostType();\n\t\tif ( window.postboxes.page !== postType ) {\n\t\t\twindow.postboxes.add_postbox_toggles( postType );\n\t\t}\n\n\t\tmetaBoxesInitialized = true;\n\n\t\tlet wasSavingPost = registry.select( editorStore ).isSavingPost();\n\t\tlet wasAutosavingPost = registry\n\t\t\t.select( editorStore )\n\t\t\t.isAutosavingPost();\n\t\tconst hasMetaBoxes = select.hasMetaBoxes();\n\n\t\t// Save metaboxes when performing a full save on the post.\n\t\tregistry.subscribe( async () => {\n\t\t\tconst isSavingPost = registry.select( editorStore ).isSavingPost();\n\t\t\tconst isAutosavingPost = registry\n\t\t\t\t.select( editorStore )\n\t\t\t\t.isAutosavingPost();\n\n\t\t\t// Save metaboxes on save completion, except for autosaves that are not a post preview.\n\t\t\t//\n\t\t\t// Meta boxes are initialized once at page load. It is not necessary to\n\t\t\t// account for updates on each state change.\n\t\t\t//\n\t\t\t// See: https://github.com/WordPress/WordPress/blob/5.1.1/wp-admin/includes/post.php#L2307-L2309.\n\t\t\tconst shouldTriggerMetaboxesSave =\n\t\t\t\thasMetaBoxes &&\n\t\t\t\twasSavingPost &&\n\t\t\t\t! isSavingPost &&\n\t\t\t\t! wasAutosavingPost;\n\n\t\t\t// Save current state for next inspection.\n\t\t\twasSavingPost = isSavingPost;\n\t\t\twasAutosavingPost = isAutosavingPost;\n\n\t\t\tif ( shouldTriggerMetaboxesSave ) {\n\t\t\t\tawait dispatch.requestMetaBoxUpdates();\n\t\t\t}\n\t\t} );\n\n\t\tdispatch( {\n\t\t\ttype: 'META_BOXES_INITIALIZED',\n\t\t} );\n\t};\n","/**\n * Function returning the current Meta Boxes DOM Node in the editor\n * whether the meta box area is opened or not.\n * If the MetaBox Area is visible returns it, and returns the original container instead.\n *\n * @param {string} location Meta Box location.\n *\n * @return {string} HTML content.\n */\nexport const getMetaBoxContainer = ( location ) => {\n\tconst area = document.querySelector(\n\t\t`.edit-post-meta-boxes-area.is-${ location } .metabox-location-${ location }`\n\t);\n\tif ( area ) {\n\t\treturn area;\n\t}\n\n\treturn document.querySelector( '#metaboxes .metabox-location-' + location );\n};\n","'use strict';\n\n/** @typedef {(...args: any[]) => *[]} GetDependants */\n\n/** @typedef {() => void} Clear */\n\n/**\n * @typedef {{\n * getDependants: GetDependants,\n * clear: Clear\n * }} EnhancedSelector\n */\n\n/**\n * Internal cache entry.\n *\n * @typedef CacheNode\n *\n * @property {?CacheNode|undefined} [prev] Previous node.\n * @property {?CacheNode|undefined} [next] Next node.\n * @property {*[]} args Function arguments for cache entry.\n * @property {*} val Function result.\n */\n\n/**\n * @typedef Cache\n *\n * @property {Clear} clear Function to clear cache.\n * @property {boolean} [isUniqueByDependants] Whether dependants are valid in\n * considering cache uniqueness. A cache is unique if dependents are all arrays\n * or objects.\n * @property {CacheNode?} [head] Cache head.\n * @property {*[]} [lastDependants] Dependants from previous invocation.\n */\n\n/**\n * Arbitrary value used as key for referencing cache object in WeakMap tree.\n *\n * @type {{}}\n */\nvar LEAF_KEY = {};\n\n/**\n * Returns the first argument as the sole entry in an array.\n *\n * @template T\n *\n * @param {T} value Value to return.\n *\n * @return {[T]} Value returned as entry in array.\n */\nfunction arrayOf(value) {\n\treturn [value];\n}\n\n/**\n * Returns true if the value passed is object-like, or false otherwise. A value\n * is object-like if it can support property assignment, e.g. object or array.\n *\n * @param {*} value Value to test.\n *\n * @return {boolean} Whether value is object-like.\n */\nfunction isObjectLike(value) {\n\treturn !!value && 'object' === typeof value;\n}\n\n/**\n * Creates and returns a new cache object.\n *\n * @return {Cache} Cache object.\n */\nfunction createCache() {\n\t/** @type {Cache} */\n\tvar cache = {\n\t\tclear: function () {\n\t\t\tcache.head = null;\n\t\t},\n\t};\n\n\treturn cache;\n}\n\n/**\n * Returns true if entries within the two arrays are strictly equal by\n * reference from a starting index.\n *\n * @param {*[]} a First array.\n * @param {*[]} b Second array.\n * @param {number} fromIndex Index from which to start comparison.\n *\n * @return {boolean} Whether arrays are shallowly equal.\n */\nfunction isShallowEqual(a, b, fromIndex) {\n\tvar i;\n\n\tif (a.length !== b.length) {\n\t\treturn false;\n\t}\n\n\tfor (i = fromIndex; i < a.length; i++) {\n\t\tif (a[i] !== b[i]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Returns a memoized selector function. The getDependants function argument is\n * called before the memoized selector and is expected to return an immutable\n * reference or array of references on which the selector depends for computing\n * its own return value. The memoize cache is preserved only as long as those\n * dependant references remain the same. If getDependants returns a different\n * reference(s), the cache is cleared and the selector value regenerated.\n *\n * @template {(...args: *[]) => *} S\n *\n * @param {S} selector Selector function.\n * @param {GetDependants=} getDependants Dependant getter returning an array of\n * references used in cache bust consideration.\n */\nexport default function (selector, getDependants) {\n\t/** @type {WeakMap<*,*>} */\n\tvar rootCache;\n\n\t/** @type {GetDependants} */\n\tvar normalizedGetDependants = getDependants ? getDependants : arrayOf;\n\n\t/**\n\t * Returns the cache for a given dependants array. When possible, a WeakMap\n\t * will be used to create a unique cache for each set of dependants. This\n\t * is feasible due to the nature of WeakMap in allowing garbage collection\n\t * to occur on entries where the key object is no longer referenced. Since\n\t * WeakMap requires the key to be an object, this is only possible when the\n\t * dependant is object-like. The root cache is created as a hierarchy where\n\t * each top-level key is the first entry in a dependants set, the value a\n\t * WeakMap where each key is the next dependant, and so on. This continues\n\t * so long as the dependants are object-like. If no dependants are object-\n\t * like, then the cache is shared across all invocations.\n\t *\n\t * @see isObjectLike\n\t *\n\t * @param {*[]} dependants Selector dependants.\n\t *\n\t * @return {Cache} Cache object.\n\t */\n\tfunction getCache(dependants) {\n\t\tvar caches = rootCache,\n\t\t\tisUniqueByDependants = true,\n\t\t\ti,\n\t\t\tdependant,\n\t\t\tmap,\n\t\t\tcache;\n\n\t\tfor (i = 0; i < dependants.length; i++) {\n\t\t\tdependant = dependants[i];\n\n\t\t\t// Can only compose WeakMap from object-like key.\n\t\t\tif (!isObjectLike(dependant)) {\n\t\t\t\tisUniqueByDependants = false;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Does current segment of cache already have a WeakMap?\n\t\t\tif (caches.has(dependant)) {\n\t\t\t\t// Traverse into nested WeakMap.\n\t\t\t\tcaches = caches.get(dependant);\n\t\t\t} else {\n\t\t\t\t// Create, set, and traverse into a new one.\n\t\t\t\tmap = new WeakMap();\n\t\t\t\tcaches.set(dependant, map);\n\t\t\t\tcaches = map;\n\t\t\t}\n\t\t}\n\n\t\t// We use an arbitrary (but consistent) object as key for the last item\n\t\t// in the WeakMap to serve as our running cache.\n\t\tif (!caches.has(LEAF_KEY)) {\n\t\t\tcache = createCache();\n\t\t\tcache.isUniqueByDependants = isUniqueByDependants;\n\t\t\tcaches.set(LEAF_KEY, cache);\n\t\t}\n\n\t\treturn caches.get(LEAF_KEY);\n\t}\n\n\t/**\n\t * Resets root memoization cache.\n\t */\n\tfunction clear() {\n\t\trootCache = new WeakMap();\n\t}\n\n\t/* eslint-disable jsdoc/check-param-names */\n\t/**\n\t * The augmented selector call, considering first whether dependants have\n\t * changed before passing it to underlying memoize function.\n\t *\n\t * @param {*} source Source object for derivation.\n\t * @param {...*} extraArgs Additional arguments to pass to selector.\n\t *\n\t * @return {*} Selector result.\n\t */\n\t/* eslint-enable jsdoc/check-param-names */\n\tfunction callSelector(/* source, ...extraArgs */) {\n\t\tvar len = arguments.length,\n\t\t\tcache,\n\t\t\tnode,\n\t\t\ti,\n\t\t\targs,\n\t\t\tdependants;\n\n\t\t// Create copy of arguments (avoid leaking deoptimization).\n\t\targs = new Array(len);\n\t\tfor (i = 0; i < len; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\n\t\tdependants = normalizedGetDependants.apply(null, args);\n\t\tcache = getCache(dependants);\n\n\t\t// If not guaranteed uniqueness by dependants (primitive type), shallow\n\t\t// compare against last dependants and, if references have changed,\n\t\t// destroy cache to recalculate result.\n\t\tif (!cache.isUniqueByDependants) {\n\t\t\tif (\n\t\t\t\tcache.lastDependants &&\n\t\t\t\t!isShallowEqual(dependants, cache.lastDependants, 0)\n\t\t\t) {\n\t\t\t\tcache.clear();\n\t\t\t}\n\n\t\t\tcache.lastDependants = dependants;\n\t\t}\n\n\t\tnode = cache.head;\n\t\twhile (node) {\n\t\t\t// Check whether node arguments match arguments\n\t\t\tif (!isShallowEqual(node.args, args, 1)) {\n\t\t\t\tnode = node.next;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// At this point we can assume we've found a match\n\n\t\t\t// Surface matched node to head if not already\n\t\t\tif (node !== cache.head) {\n\t\t\t\t// Adjust siblings to point to each other.\n\t\t\t\t/** @type {CacheNode} */ (node.prev).next = node.next;\n\t\t\t\tif (node.next) {\n\t\t\t\t\tnode.next.prev = node.prev;\n\t\t\t\t}\n\n\t\t\t\tnode.next = cache.head;\n\t\t\t\tnode.prev = null;\n\t\t\t\t/** @type {CacheNode} */ (cache.head).prev = node;\n\t\t\t\tcache.head = node;\n\t\t\t}\n\n\t\t\t// Return immediately\n\t\t\treturn node.val;\n\t\t}\n\n\t\t// No cached value found. Continue to insertion phase:\n\n\t\tnode = /** @type {CacheNode} */ ({\n\t\t\t// Generate the result from original function\n\t\t\tval: selector.apply(null, args),\n\t\t});\n\n\t\t// Avoid including the source object in the cache.\n\t\targs[0] = null;\n\t\tnode.args = args;\n\n\t\t// Don't need to check whether node is already head, since it would\n\t\t// have been returned above already if it was\n\n\t\t// Shift existing head down list\n\t\tif (cache.head) {\n\t\t\tcache.head.prev = node;\n\t\t\tnode.next = cache.head;\n\t\t}\n\n\t\tcache.head = node;\n\n\t\treturn node.val;\n\t}\n\n\tcallSelector.getDependants = normalizedGetDependants;\n\tcallSelector.clear = clear;\n\tclear();\n\n\treturn /** @type {S & EnhancedSelector} */ (callSelector);\n}\n","/**\n * External dependencies\n */\nimport createSelector from 'rememo';\n\n/**\n * WordPress dependencies\n */\nimport { createRegistrySelector } from '@wordpress/data';\nimport { store as interfaceStore } from '@wordpress/interface';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as editorStore } from '@wordpress/editor';\nimport deprecated from '@wordpress/deprecated';\n\nconst EMPTY_ARRAY = [];\nconst EMPTY_OBJECT = {};\n\n/**\n * Returns the current editing mode.\n *\n * @param {Object} state Global application state.\n *\n * @return {string} Editing mode.\n */\nexport const getEditorMode = createRegistrySelector(\n\t( select ) => () =>\n\t\tselect( preferencesStore ).get( 'core/edit-post', 'editorMode' ) ??\n\t\t'visual'\n);\n\n/**\n * Returns true if the editor sidebar is opened.\n *\n * @param {Object} state Global application state\n *\n * @return {boolean} Whether the editor sidebar is opened.\n */\nexport const isEditorSidebarOpened = createRegistrySelector(\n\t( select ) => () => {\n\t\tconst activeGeneralSidebar =\n\t\t\tselect( interfaceStore ).getActiveComplementaryArea(\n\t\t\t\t'core/edit-post'\n\t\t\t);\n\t\treturn [ 'edit-post/document', 'edit-post/block' ].includes(\n\t\t\tactiveGeneralSidebar\n\t\t);\n\t}\n);\n\n/**\n * Returns true if the plugin sidebar is opened.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the plugin sidebar is opened.\n */\nexport const isPluginSidebarOpened = createRegistrySelector(\n\t( select ) => () => {\n\t\tconst activeGeneralSidebar =\n\t\t\tselect( interfaceStore ).getActiveComplementaryArea(\n\t\t\t\t'core/edit-post'\n\t\t\t);\n\t\treturn (\n\t\t\t!! activeGeneralSidebar &&\n\t\t\t! [ 'edit-post/document', 'edit-post/block' ].includes(\n\t\t\t\tactiveGeneralSidebar\n\t\t\t)\n\t\t);\n\t}\n);\n\n/**\n * Returns the current active general sidebar name, or null if there is no\n * general sidebar active. The active general sidebar is a unique name to\n * identify either an editor or plugin sidebar.\n *\n * Examples:\n *\n * - `edit-post/document`\n * - `my-plugin/insert-image-sidebar`\n *\n * @param {Object} state Global application state.\n *\n * @return {?string} Active general sidebar name.\n */\nexport const getActiveGeneralSidebarName = createRegistrySelector(\n\t( select ) => () => {\n\t\treturn select( interfaceStore ).getActiveComplementaryArea(\n\t\t\t'core/edit-post'\n\t\t);\n\t}\n);\n\n/**\n * Converts panels from the new preferences store format to the old format\n * that the post editor previously used.\n *\n * The resultant converted data should look like this:\n * {\n * panelName: {\n * enabled: false,\n * opened: true,\n * },\n * anotherPanelName: {\n * opened: true\n * },\n * }\n *\n * @param {string[] | undefined} inactivePanels An array of inactive panel names.\n * @param {string[] | undefined} openPanels An array of open panel names.\n *\n * @return {Object} The converted panel data.\n */\nfunction convertPanelsToOldFormat( inactivePanels, openPanels ) {\n\t// First reduce the inactive panels.\n\tconst panelsWithEnabledState = inactivePanels?.reduce(\n\t\t( accumulatedPanels, panelName ) => ( {\n\t\t\t...accumulatedPanels,\n\t\t\t[ panelName ]: {\n\t\t\t\tenabled: false,\n\t\t\t},\n\t\t} ),\n\t\t{}\n\t);\n\n\t// Then reduce the open panels, passing in the result of the previous\n\t// reduction as the initial value so that both open and inactive\n\t// panel state is combined.\n\tconst panels = openPanels?.reduce( ( accumulatedPanels, panelName ) => {\n\t\tconst currentPanelState = accumulatedPanels?.[ panelName ];\n\t\treturn {\n\t\t\t...accumulatedPanels,\n\t\t\t[ panelName ]: {\n\t\t\t\t...currentPanelState,\n\t\t\t\topened: true,\n\t\t\t},\n\t\t};\n\t}, panelsWithEnabledState ?? {} );\n\n\t// The panels variable will only be set if openPanels wasn't `undefined`.\n\t// If it isn't set just return `panelsWithEnabledState`, and if that isn't\n\t// set return an empty object.\n\treturn panels ?? panelsWithEnabledState ?? EMPTY_OBJECT;\n}\n\n/**\n * Returns the preferences (these preferences are persisted locally).\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} Preferences Object.\n */\nexport const getPreferences = createRegistrySelector( ( select ) => () => {\n\tdeprecated( `select( 'core/edit-post' ).getPreferences`, {\n\t\tsince: '6.0',\n\t\talternative: `select( 'core/preferences' ).get`,\n\t} );\n\n\t// These preferences now exist in the preferences store.\n\t// Fetch them so that they can be merged into the post\n\t// editor preferences.\n\tconst preferences = [\n\t\t'hiddenBlockTypes',\n\t\t'editorMode',\n\t\t'preferredStyleVariations',\n\t].reduce( ( accumulatedPrefs, preferenceKey ) => {\n\t\tconst value = select( preferencesStore ).get(\n\t\t\t'core/edit-post',\n\t\t\tpreferenceKey\n\t\t);\n\n\t\treturn {\n\t\t\t...accumulatedPrefs,\n\t\t\t[ preferenceKey ]: value,\n\t\t};\n\t}, {} );\n\n\t// Panels were a preference, but the data structure changed when the state\n\t// was migrated to the preferences store. They need to be converted from\n\t// the new preferences store format to old format to ensure no breaking\n\t// changes for plugins.\n\tconst inactivePanels = select( preferencesStore ).get(\n\t\t'core/edit-post',\n\t\t'inactivePanels'\n\t);\n\tconst openPanels = select( preferencesStore ).get(\n\t\t'core/edit-post',\n\t\t'openPanels'\n\t);\n\tconst panels = convertPanelsToOldFormat( inactivePanels, openPanels );\n\n\treturn {\n\t\t...preferences,\n\t\tpanels,\n\t};\n} );\n\n/**\n *\n * @param {Object} state Global application state.\n * @param {string} preferenceKey Preference Key.\n * @param {*} defaultValue Default Value.\n *\n * @return {*} Preference Value.\n */\nexport function getPreference( state, preferenceKey, defaultValue ) {\n\tdeprecated( `select( 'core/edit-post' ).getPreference`, {\n\t\tsince: '6.0',\n\t\talternative: `select( 'core/preferences' ).get`,\n\t} );\n\n\t// Avoid using the `getPreferences` registry selector where possible.\n\tconst preferences = getPreferences( state );\n\tconst value = preferences[ preferenceKey ];\n\treturn value === undefined ? defaultValue : value;\n}\n\n/**\n * Returns an array of blocks that are hidden.\n *\n * @return {Array} A list of the hidden block types\n */\nexport const getHiddenBlockTypes = createRegistrySelector( ( select ) => () => {\n\treturn (\n\t\tselect( preferencesStore ).get(\n\t\t\t'core/edit-post',\n\t\t\t'hiddenBlockTypes'\n\t\t) ?? EMPTY_ARRAY\n\t);\n} );\n\n/**\n * Returns true if the publish sidebar is opened.\n *\n * @param {Object} state Global application state\n *\n * @return {boolean} Whether the publish sidebar is open.\n */\nexport function isPublishSidebarOpened( state ) {\n\treturn state.publishSidebarActive;\n}\n\n/**\n * Returns true if the given panel was programmatically removed, or false otherwise.\n * All panels are not removed by default.\n *\n * @param {Object} state Global application state.\n * @param {string} panelName A string that identifies the panel.\n *\n * @return {boolean} Whether or not the panel is removed.\n */\nexport function isEditorPanelRemoved( state, panelName ) {\n\treturn state.removedPanels.includes( panelName );\n}\n\n/**\n * Returns true if the given panel is enabled, or false otherwise. Panels are\n * enabled by default.\n *\n * @param {Object} state Global application state.\n * @param {string} panelName A string that identifies the panel.\n *\n * @return {boolean} Whether or not the panel is enabled.\n */\nexport const isEditorPanelEnabled = createRegistrySelector(\n\t( select ) => ( state, panelName ) => {\n\t\tconst inactivePanels = select( preferencesStore ).get(\n\t\t\t'core/edit-post',\n\t\t\t'inactivePanels'\n\t\t);\n\t\treturn (\n\t\t\t! isEditorPanelRemoved( state, panelName ) &&\n\t\t\t! inactivePanels?.includes( panelName )\n\t\t);\n\t}\n);\n\n/**\n * Returns true if the given panel is open, or false otherwise. Panels are\n * closed by default.\n *\n * @param {Object} state Global application state.\n * @param {string} panelName A string that identifies the panel.\n *\n * @return {boolean} Whether or not the panel is open.\n */\nexport const isEditorPanelOpened = createRegistrySelector(\n\t( select ) => ( state, panelName ) => {\n\t\tconst openPanels = select( preferencesStore ).get(\n\t\t\t'core/edit-post',\n\t\t\t'openPanels'\n\t\t);\n\t\treturn !! openPanels?.includes( panelName );\n\t}\n);\n\n/**\n * Returns true if a modal is active, or false otherwise.\n *\n * @param {Object} state Global application state.\n * @param {string} modalName A string that uniquely identifies the modal.\n *\n * @return {boolean} Whether the modal is active.\n */\nexport function isModalActive( state, modalName ) {\n\treturn state.activeModal === modalName;\n}\n\n/**\n * Returns whether the given feature is enabled or not.\n *\n * @param {Object} state Global application state.\n * @param {string} feature Feature slug.\n *\n * @return {boolean} Is active.\n */\nexport const isFeatureActive = createRegistrySelector(\n\t( select ) => ( state, feature ) => {\n\t\treturn !! select( preferencesStore ).get( 'core/edit-post', feature );\n\t}\n);\n\n/**\n * Returns true if the plugin item is pinned to the header.\n * When the value is not set it defaults to true.\n *\n * @param {Object} state Global application state.\n * @param {string} pluginName Plugin item name.\n *\n * @return {boolean} Whether the plugin item is pinned.\n */\nexport const isPluginItemPinned = createRegistrySelector(\n\t( select ) => ( state, pluginName ) => {\n\t\treturn select( interfaceStore ).isItemPinned(\n\t\t\t'core/edit-post',\n\t\t\tpluginName\n\t\t);\n\t}\n);\n\n/**\n * Returns an array of active meta box locations.\n *\n * @param {Object} state Post editor state.\n *\n * @return {string[]} Active meta box locations.\n */\nexport const getActiveMetaBoxLocations = createSelector(\n\t( state ) => {\n\t\treturn Object.keys( state.metaBoxes.locations ).filter( ( location ) =>\n\t\t\tisMetaBoxLocationActive( state, location )\n\t\t);\n\t},\n\t( state ) => [ state.metaBoxes.locations ]\n);\n\n/**\n * Returns true if a metabox location is active and visible\n *\n * @param {Object} state Post editor state.\n * @param {string} location Meta box location to test.\n *\n * @return {boolean} Whether the meta box location is active and visible.\n */\nexport function isMetaBoxLocationVisible( state, location ) {\n\treturn (\n\t\tisMetaBoxLocationActive( state, location ) &&\n\t\tgetMetaBoxesPerLocation( state, location )?.some( ( { id } ) => {\n\t\t\treturn isEditorPanelEnabled( state, `meta-box-${ id }` );\n\t\t} )\n\t);\n}\n\n/**\n * Returns true if there is an active meta box in the given location, or false\n * otherwise.\n *\n * @param {Object} state Post editor state.\n * @param {string} location Meta box location to test.\n *\n * @return {boolean} Whether the meta box location is active.\n */\nexport function isMetaBoxLocationActive( state, location ) {\n\tconst metaBoxes = getMetaBoxesPerLocation( state, location );\n\treturn !! metaBoxes && metaBoxes.length !== 0;\n}\n\n/**\n * Returns the list of all the available meta boxes for a given location.\n *\n * @param {Object} state Global application state.\n * @param {string} location Meta box location to test.\n *\n * @return {?Array} List of meta boxes.\n */\nexport function getMetaBoxesPerLocation( state, location ) {\n\treturn state.metaBoxes.locations[ location ];\n}\n\n/**\n * Returns the list of all the available meta boxes.\n *\n * @param {Object} state Global application state.\n *\n * @return {Array} List of meta boxes.\n */\nexport const getAllMetaBoxes = createSelector(\n\t( state ) => {\n\t\treturn Object.values( state.metaBoxes.locations ).flat();\n\t},\n\t( state ) => [ state.metaBoxes.locations ]\n);\n\n/**\n * Returns true if the post is using Meta Boxes\n *\n * @param {Object} state Global application state\n *\n * @return {boolean} Whether there are metaboxes or not.\n */\nexport function hasMetaBoxes( state ) {\n\treturn getActiveMetaBoxLocations( state ).length > 0;\n}\n\n/**\n * Returns true if the Meta Boxes are being saved.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the metaboxes are being saved.\n */\nexport function isSavingMetaBoxes( state ) {\n\treturn state.metaBoxes.isSaving;\n}\n\n/**\n * Returns the current editing canvas device type.\n *\n * @param {Object} state Global application state.\n *\n * @return {string} Device type.\n */\nexport function __experimentalGetPreviewDeviceType( state ) {\n\treturn state.deviceType;\n}\n\n/**\n * Returns true if the inserter is opened.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the inserter is opened.\n */\nexport function isInserterOpened( state ) {\n\treturn !! state.blockInserterPanel;\n}\n\n/**\n * Get the insertion point for the inserter.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} The root client ID, index to insert at and starting filter value.\n */\nexport function __experimentalGetInsertionPoint( state ) {\n\tconst { rootClientId, insertionIndex, filterValue } =\n\t\tstate.blockInserterPanel;\n\treturn { rootClientId, insertionIndex, filterValue };\n}\n\n/**\n * Returns true if the list view is opened.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the list view is opened.\n */\nexport function isListViewOpened( state ) {\n\treturn state.listViewPanel;\n}\n\n/**\n * Returns true if the template editing mode is enabled.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether we're editing the template.\n */\nexport function isEditingTemplate( state ) {\n\treturn state.isEditingTemplate;\n}\n\n/**\n * Returns true if meta boxes are initialized.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether meta boxes are initialized.\n */\nexport function areMetaBoxesInitialized( state ) {\n\treturn state.metaBoxes.initialized;\n}\n\n/**\n * Retrieves the template of the currently edited post.\n *\n * @return {Object?} Post Template.\n */\nexport const getEditedPostTemplate = createRegistrySelector(\n\t( select ) => () => {\n\t\tconst currentTemplate =\n\t\t\tselect( editorStore ).getEditedPostAttribute( 'template' );\n\t\tif ( currentTemplate ) {\n\t\t\tconst templateWithSameSlug = select( coreStore )\n\t\t\t\t.getEntityRecords( 'postType', 'wp_template', { per_page: -1 } )\n\t\t\t\t?.find( ( template ) => template.slug === currentTemplate );\n\t\t\tif ( ! templateWithSameSlug ) {\n\t\t\t\treturn templateWithSameSlug;\n\t\t\t}\n\t\t\treturn select( coreStore ).getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template',\n\t\t\t\ttemplateWithSameSlug.id\n\t\t\t);\n\t\t}\n\n\t\tconst post = select( editorStore ).getCurrentPost();\n\t\tif ( post.link ) {\n\t\t\treturn select( coreStore ).__experimentalGetTemplateForLink(\n\t\t\t\tpost.link\n\t\t\t);\n\t\t}\n\n\t\treturn null;\n\t}\n);\n","/**\n * The identifier for the data store.\n *\n * @type {string}\n */\nexport const STORE_NAME = 'core/edit-post';\n\n/**\n * CSS selector string for the admin bar view post link anchor tag.\n *\n * @type {string}\n */\nexport const VIEW_AS_LINK_SELECTOR = '#wp-admin-bar-view a';\n\n/**\n * CSS selector string for the admin bar preview post link anchor tag.\n *\n * @type {string}\n */\nexport const VIEW_AS_PREVIEW_LINK_SELECTOR = '#wp-admin-bar-preview a';\n","/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport * as actions from './actions';\nimport * as selectors from './selectors';\nimport { STORE_NAME } from './constants';\n\n/**\n * Store definition for the edit post namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore( STORE_NAME, {\n\treducer,\n\tactions,\n\tselectors,\n} );\n\nregister( store );\n","/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { withDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { displayShortcut } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nexport function KeyboardShortcutsHelpMenuItem( { openModal } ) {\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => {\n\t\t\t\topenModal( 'edit-post/keyboard-shortcut-help' );\n\t\t\t} }\n\t\t\tshortcut={ displayShortcut.access( 'h' ) }\n\t\t>\n\t\t\t{ __( 'Keyboard shortcuts' ) }\n\t\t</MenuItem>\n\t);\n}\n\nexport default withDispatch( ( dispatch ) => {\n\tconst { openModal } = dispatch( editPostStore );\n\n\treturn {\n\t\topenModal,\n\t};\n} )( KeyboardShortcutsHelpMenuItem );\n","/**\n * External dependencies\n */\nimport { isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createSlotFill, MenuGroup } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nconst { Fill: ToolsMoreMenuGroup, Slot } =\n\tcreateSlotFill( 'ToolsMoreMenuGroup' );\n\nToolsMoreMenuGroup.Slot = ( { fillProps } ) => (\n\t<Slot fillProps={ fillProps }>\n\t\t{ ( fills ) =>\n\t\t\t! isEmpty( fills ) && (\n\t\t\t\t<MenuGroup label={ __( 'Tools' ) }>{ fills }</MenuGroup>\n\t\t\t)\n\t\t}\n\t</Slot>\n);\n\nexport default ToolsMoreMenuGroup;\n","/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { PreferenceToggleMenuItem } from '@wordpress/preferences';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nexport default function WelcomeGuideMenuItem() {\n\tconst isTemplateMode = useSelect(\n\t\t( select ) => select( editPostStore ).isEditingTemplate(),\n\t\t[]\n\t);\n\n\treturn (\n\t\t<PreferenceToggleMenuItem\n\t\t\tscope=\"core/edit-post\"\n\t\t\tname={ isTemplateMode ? 'welcomeGuideTemplate' : 'welcomeGuide' }\n\t\t\tlabel={ __( 'Welcome Guide' ) }\n\t\t/>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { MenuItem, VisuallyHidden } from '@wordpress/components';\nimport { external } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport { registerPlugin } from '@wordpress/plugins';\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport CopyContentMenuItem from './copy-content-menu-item';\nimport KeyboardShortcutsHelpMenuItem from './keyboard-shortcuts-help-menu-item';\nimport ToolsMoreMenuGroup from '../components/header/tools-more-menu-group';\nimport WelcomeGuideMenuItem from './welcome-guide-menu-item';\n\nregisterPlugin( 'edit-post', {\n\trender() {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<ToolsMoreMenuGroup>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\t\t\thref={ addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Manage Reusable blocks' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t<KeyboardShortcutsHelpMenuItem\n\t\t\t\t\t\t\t\tonSelect={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<WelcomeGuideMenuItem />\n\t\t\t\t\t\t\t<CopyContentMenuItem />\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t\t\t'https://wordpress.org/support/article/wordpress-editor/'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Help' ) }\n\t\t\t\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t/* translators: accessibility text */\n\t\t\t\t\t\t\t\t\t\t__( '(opens in a new tab)' )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsMoreMenuGroup>\n\t\t\t</>\n\t\t);\n\t},\n} );\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"keyboardShortcuts\"];","/**\n * WordPress dependencies\n */\nimport {\n\tPostTextEditor,\n\tPostTitle,\n\tTextEditorGlobalKeyboardShortcuts,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport { Button } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { displayShortcut } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nexport default function TextEditor() {\n\tconst isRichEditingEnabled = useSelect( ( select ) => {\n\t\treturn select( editorStore ).getEditorSettings().richEditingEnabled;\n\t}, [] );\n\tconst { switchEditorMode } = useDispatch( editPostStore );\n\n\treturn (\n\t\t<div className=\"edit-post-text-editor\">\n\t\t\t<TextEditorGlobalKeyboardShortcuts />\n\t\t\t{ isRichEditingEnabled && (\n\t\t\t\t<div className=\"edit-post-text-editor__toolbar\">\n\t\t\t\t\t<h2>{ __( 'Editing code' ) }</h2>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => switchEditorMode( 'visual' ) }\n\t\t\t\t\t\tshortcut={ displayShortcut.secondary( 'm' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Exit code editor' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<div className=\"edit-post-text-editor__body\">\n\t\t\t\t<PostTitle />\n\t\t\t\t<PostTextEditor />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst arrowLeft = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M20 10.8H6.7l4.1-4.5-1.1-1.1-5.8 6.3 5.8 5.8 1.1-1.1-4-3.9H20z\" />\n\t</SVG>\n);\n\nexport default arrowLeft;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { speak } from '@wordpress/a11y';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nconst noop = () => {};\n\nexport function BlockInspectorButton( { onClick = noop, small = false } ) {\n\tconst { shortcut, areAdvancedSettingsOpened } = useSelect(\n\t\t( select ) => ( {\n\t\t\tshortcut: select(\n\t\t\t\tkeyboardShortcutsStore\n\t\t\t).getShortcutRepresentation( 'core/edit-post/toggle-sidebar' ),\n\t\t\tareAdvancedSettingsOpened:\n\t\t\t\tselect( editPostStore ).getActiveGeneralSidebarName() ===\n\t\t\t\t'edit-post/block',\n\t\t} ),\n\t\t[]\n\t);\n\tconst { openGeneralSidebar, closeGeneralSidebar } =\n\t\tuseDispatch( editPostStore );\n\n\tconst label = areAdvancedSettingsOpened\n\t\t? __( 'Hide more settings' )\n\t\t: __( 'Show more settings' );\n\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => {\n\t\t\t\tif ( areAdvancedSettingsOpened ) {\n\t\t\t\t\tcloseGeneralSidebar();\n\t\t\t\t\tspeak( __( 'Block settings closed' ) );\n\t\t\t\t} else {\n\t\t\t\t\topenGeneralSidebar( 'edit-post/block' );\n\t\t\t\t\tspeak(\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Additional settings are now available in the Editor block settings sidebar'\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tonClick();\n\t\t\t} }\n\t\t\tshortcut={ shortcut }\n\t\t>\n\t\t\t{ ! small && label }\n\t\t</MenuItem>\n\t);\n}\n\nexport default BlockInspectorButton;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tVisualEditorGlobalKeyboardShortcuts,\n\tPostTitle,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport {\n\tWritingFlow,\n\tBlockList,\n\tBlockTools,\n\tstore as blockEditorStore,\n\t__unstableUseBlockSelectionClearer as useBlockSelectionClearer,\n\t__unstableUseTypewriter as useTypewriter,\n\t__unstableUseClipboardHandler as useClipboardHandler,\n\t__unstableUseTypingObserver as useTypingObserver,\n\t__unstableBlockSettingsMenuFirstItem,\n\t__experimentalUseResizeCanvas as useResizeCanvas,\n\t__unstableEditorStyles as EditorStyles,\n\tuseSetting,\n\t__experimentalLayoutStyle as LayoutStyle,\n\t__unstableUseMouseMoveTypingReset as useMouseMoveTypingReset,\n\t__unstableIframe as Iframe,\n\t__experimentalRecursionProvider as RecursionProvider,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useMemo } from '@wordpress/element';\nimport { Button, __unstableMotion as motion } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMergeRefs } from '@wordpress/compose';\nimport { arrowLeft } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BlockInspectorButton from './block-inspector-button';\nimport { store as editPostStore } from '../../store';\n\nfunction MaybeIframe( {\n\tchildren,\n\tcontentRef,\n\tshouldIframe,\n\tstyles,\n\tassets,\n\tstyle,\n} ) {\n\tconst ref = useMouseMoveTypingReset();\n\n\tif ( ! shouldIframe ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<EditorStyles styles={ styles } />\n\t\t\t\t<WritingFlow\n\t\t\t\t\tref={ contentRef }\n\t\t\t\t\tclassName=\"editor-styles-wrapper\"\n\t\t\t\t\tstyle={ { flex: '1', ...style } }\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</WritingFlow>\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Iframe\n\t\t\thead={ <EditorStyles styles={ styles } /> }\n\t\t\tassets={ assets }\n\t\t\tref={ ref }\n\t\t\tcontentRef={ contentRef }\n\t\t\tstyle={ { width: '100%', height: '100%', display: 'block' } }\n\t\t\tname=\"editor-canvas\"\n\t\t>\n\t\t\t{ children }\n\t\t</Iframe>\n\t);\n}\n\nexport default function VisualEditor( { styles } ) {\n\tconst {\n\t\tdeviceType,\n\t\tisWelcomeGuideVisible,\n\t\tisTemplateMode,\n\t\twrapperBlockName,\n\t\twrapperUniqueId,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tisFeatureActive,\n\t\t\tisEditingTemplate,\n\t\t\t__experimentalGetPreviewDeviceType,\n\t\t} = select( editPostStore );\n\t\tconst { getCurrentPostId, getCurrentPostType } = select( editorStore );\n\t\tconst _isTemplateMode = isEditingTemplate();\n\t\tlet _wrapperBlockName;\n\n\t\tif ( getCurrentPostType() === 'wp_block' ) {\n\t\t\t_wrapperBlockName = 'core/block';\n\t\t} else if ( ! _isTemplateMode ) {\n\t\t\t_wrapperBlockName = 'core/post-content';\n\t\t}\n\n\t\treturn {\n\t\t\tdeviceType: __experimentalGetPreviewDeviceType(),\n\t\t\tisWelcomeGuideVisible: isFeatureActive( 'welcomeGuide' ),\n\t\t\tisTemplateMode: _isTemplateMode,\n\t\t\twrapperBlockName: _wrapperBlockName,\n\t\t\twrapperUniqueId: getCurrentPostId(),\n\t\t};\n\t}, [] );\n\tconst { isCleanNewPost } = useSelect( editorStore );\n\tconst hasMetaBoxes = useSelect(\n\t\t( select ) => select( editPostStore ).hasMetaBoxes(),\n\t\t[]\n\t);\n\tconst { themeHasDisabledLayoutStyles, themeSupportsLayout, assets } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst _settings = select( blockEditorStore ).getSettings();\n\t\t\treturn {\n\t\t\t\tthemeHasDisabledLayoutStyles: _settings.disableLayoutStyles,\n\t\t\t\tthemeSupportsLayout: _settings.supportsLayout,\n\t\t\t\tassets: _settings.__unstableResolvedAssets,\n\t\t\t};\n\t\t}, [] );\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst { setIsEditingTemplate } = useDispatch( editPostStore );\n\tconst desktopCanvasStyles = {\n\t\theight: '100%',\n\t\twidth: '100%',\n\t\tmargin: 0,\n\t\tdisplay: 'flex',\n\t\tflexFlow: 'column',\n\t\t// Default background color so that grey\n\t\t// .edit-post-editor-regions__content color doesn't show through.\n\t\tbackground: 'white',\n\t};\n\tconst templateModeStyles = {\n\t\t...desktopCanvasStyles,\n\t\tborderRadius: '2px 2px 0 0',\n\t\tborder: '1px solid #ddd',\n\t\tborderBottom: 0,\n\t};\n\tconst resizedCanvasStyles = useResizeCanvas( deviceType, isTemplateMode );\n\tconst defaultLayout = useSetting( 'layout' );\n\tconst previewMode = 'is-' + deviceType.toLowerCase() + '-preview';\n\n\tlet animatedStyles = isTemplateMode\n\t\t? templateModeStyles\n\t\t: desktopCanvasStyles;\n\tif ( resizedCanvasStyles ) {\n\t\tanimatedStyles = resizedCanvasStyles;\n\t}\n\n\tlet paddingBottom;\n\n\t// Add a constant padding for the typewritter effect. When typing at the\n\t// bottom, there needs to be room to scroll up.\n\tif ( ! hasMetaBoxes && ! resizedCanvasStyles && ! isTemplateMode ) {\n\t\tpaddingBottom = '40vh';\n\t}\n\n\tconst ref = useRef();\n\tconst contentRef = useMergeRefs( [\n\t\tref,\n\t\tuseClipboardHandler(),\n\t\tuseTypewriter(),\n\t\tuseTypingObserver(),\n\t\tuseBlockSelectionClearer(),\n\t] );\n\n\tconst blockSelectionClearerRef = useBlockSelectionClearer();\n\n\tconst layout = useMemo( () => {\n\t\tif ( isTemplateMode ) {\n\t\t\treturn { type: 'default' };\n\t\t}\n\n\t\tif ( themeSupportsLayout ) {\n\t\t\t// We need to ensure support for wide and full alignments,\n\t\t\t// so we add the constrained type.\n\t\t\treturn { ...defaultLayout, type: 'constrained' };\n\t\t}\n\t\t// Set default layout for classic themes so all alignments are supported.\n\t\treturn { type: 'default' };\n\t}, [ isTemplateMode, themeSupportsLayout, defaultLayout ] );\n\n\tconst blockListLayoutClass = themeSupportsLayout\n\t\t? 'is-layout-constrained'\n\t\t: 'is-layout-flow';\n\n\tconst titleRef = useRef();\n\tuseEffect( () => {\n\t\tif ( isWelcomeGuideVisible || ! isCleanNewPost() ) {\n\t\t\treturn;\n\t\t}\n\t\ttitleRef?.current?.focus();\n\t}, [ isWelcomeGuideVisible, isCleanNewPost ] );\n\n\treturn (\n\t\t<BlockTools\n\t\t\t__unstableContentRef={ ref }\n\t\t\tclassName={ classnames( 'edit-post-visual-editor', {\n\t\t\t\t'is-template-mode': isTemplateMode,\n\t\t\t} ) }\n\t\t>\n\t\t\t<VisualEditorGlobalKeyboardShortcuts />\n\t\t\t<motion.div\n\t\t\t\tclassName=\"edit-post-visual-editor__content-area\"\n\t\t\t\tanimate={ {\n\t\t\t\t\tpadding: isTemplateMode ? '48px 48px 0' : '0',\n\t\t\t\t} }\n\t\t\t\tref={ blockSelectionClearerRef }\n\t\t\t>\n\t\t\t\t{ isTemplateMode && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"edit-post-visual-editor__exit-template-mode\"\n\t\t\t\t\t\ticon={ arrowLeft }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t\t\tsetIsEditingTemplate( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\t<motion.div\n\t\t\t\t\tanimate={ animatedStyles }\n\t\t\t\t\tinitial={ desktopCanvasStyles }\n\t\t\t\t\tclassName={ previewMode }\n\t\t\t\t>\n\t\t\t\t\t<MaybeIframe\n\t\t\t\t\t\tshouldIframe={\n\t\t\t\t\t\t\tisTemplateMode ||\n\t\t\t\t\t\t\tdeviceType === 'Tablet' ||\n\t\t\t\t\t\t\tdeviceType === 'Mobile'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontentRef={ contentRef }\n\t\t\t\t\t\tstyles={ styles }\n\t\t\t\t\t\tassets={ assets }\n\t\t\t\t\t\tstyle={ { paddingBottom } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ themeSupportsLayout &&\n\t\t\t\t\t\t\t! themeHasDisabledLayoutStyles &&\n\t\t\t\t\t\t\t! isTemplateMode && (\n\t\t\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\t\t\tselector=\".edit-post-visual-editor__post-title-wrapper, .block-editor-block-list__layout.is-root-container\"\n\t\t\t\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t\t\t\t\tlayoutDefinitions={\n\t\t\t\t\t\t\t\t\t\tdefaultLayout?.definitions\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{ ! isTemplateMode && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"edit-post-visual-editor__post-title-wrapper\"\n\t\t\t\t\t\t\t\tcontentEditable={ false }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<PostTitle ref={ titleRef } />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<RecursionProvider\n\t\t\t\t\t\t\tblockName={ wrapperBlockName }\n\t\t\t\t\t\t\tuniqueId={ wrapperUniqueId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockList\n\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\tisTemplateMode\n\t\t\t\t\t\t\t\t\t\t? 'wp-site-blocks'\n\t\t\t\t\t\t\t\t\t\t: blockListLayoutClass // Ensure root level blocks receive default/flow blockGap styling rules.\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t__experimentalLayout={ layout }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</RecursionProvider>\n\t\t\t\t\t</MaybeIframe>\n\t\t\t\t</motion.div>\n\t\t\t</motion.div>\n\t\t\t<__unstableBlockSettingsMenuFirstItem>\n\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t<BlockInspectorButton onClick={ onClose } />\n\t\t\t\t) }\n\t\t\t</__unstableBlockSettingsMenuFirstItem>\n\t\t</BlockTools>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tuseShortcut,\n\tstore as keyboardShortcutsStore,\n} from '@wordpress/keyboard-shortcuts';\nimport { __ } from '@wordpress/i18n';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nfunction KeyboardShortcuts() {\n\tconst { getBlockSelectionStart } = useSelect( blockEditorStore );\n\tconst { getEditorMode, isEditorSidebarOpened, isListViewOpened } =\n\t\tuseSelect( editPostStore );\n\tconst isModeToggleDisabled = useSelect( ( select ) => {\n\t\tconst { richEditingEnabled, codeEditingEnabled } =\n\t\t\tselect( editorStore ).getEditorSettings();\n\t\treturn ! richEditingEnabled || ! codeEditingEnabled;\n\t}, [] );\n\n\tconst {\n\t\tswitchEditorMode,\n\t\topenGeneralSidebar,\n\t\tcloseGeneralSidebar,\n\t\ttoggleFeature,\n\t\tsetIsListViewOpened,\n\t} = useDispatch( editPostStore );\n\tconst { registerShortcut } = useDispatch( keyboardShortcutsStore );\n\n\tuseEffect( () => {\n\t\tregisterShortcut( {\n\t\t\tname: 'core/edit-post/toggle-mode',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Switch between visual editor and code editor.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'secondary',\n\t\t\t\tcharacter: 'm',\n\t\t\t},\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/edit-post/toggle-fullscreen',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Toggle fullscreen mode.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'secondary',\n\t\t\t\tcharacter: 'f',\n\t\t\t},\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/edit-post/toggle-list-view',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Open the block list view.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'access',\n\t\t\t\tcharacter: 'o',\n\t\t\t},\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/edit-post/toggle-sidebar',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Show or hide the settings sidebar.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primaryShift',\n\t\t\t\tcharacter: ',',\n\t\t\t},\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/edit-post/next-region',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Navigate to the next part of the editor.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'ctrl',\n\t\t\t\tcharacter: '`',\n\t\t\t},\n\t\t\taliases: [\n\t\t\t\t{\n\t\t\t\t\tmodifier: 'access',\n\t\t\t\t\tcharacter: 'n',\n\t\t\t\t},\n\t\t\t],\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/edit-post/previous-region',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Navigate to the previous part of the editor.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'ctrlShift',\n\t\t\t\tcharacter: '`',\n\t\t\t},\n\t\t\taliases: [\n\t\t\t\t{\n\t\t\t\t\tmodifier: 'access',\n\t\t\t\t\tcharacter: 'p',\n\t\t\t\t},\n\t\t\t],\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/edit-post/keyboard-shortcuts',\n\t\t\tcategory: 'main',\n\t\t\tdescription: __( 'Display these keyboard shortcuts.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'access',\n\t\t\t\tcharacter: 'h',\n\t\t\t},\n\t\t} );\n\t}, [] );\n\n\tuseShortcut(\n\t\t'core/edit-post/toggle-mode',\n\t\t() => {\n\t\t\tswitchEditorMode(\n\t\t\t\tgetEditorMode() === 'visual' ? 'text' : 'visual'\n\t\t\t);\n\t\t},\n\t\t{\n\t\t\tisDisabled: isModeToggleDisabled,\n\t\t}\n\t);\n\n\tuseShortcut( 'core/edit-post/toggle-fullscreen', () => {\n\t\ttoggleFeature( 'fullscreenMode' );\n\t} );\n\n\tuseShortcut( 'core/edit-post/toggle-sidebar', ( event ) => {\n\t\t// This shortcut has no known clashes, but use preventDefault to prevent any\n\t\t// obscure shortcuts from triggering.\n\t\tevent.preventDefault();\n\n\t\tif ( isEditorSidebarOpened() ) {\n\t\t\tcloseGeneralSidebar();\n\t\t} else {\n\t\t\tconst sidebarToOpen = getBlockSelectionStart()\n\t\t\t\t? 'edit-post/block'\n\t\t\t\t: 'edit-post/document';\n\t\t\topenGeneralSidebar( sidebarToOpen );\n\t\t}\n\t} );\n\n\tuseShortcut( 'core/edit-post/toggle-list-view', () =>\n\t\tsetIsListViewOpened( ! isListViewOpened() )\n\t);\n\n\treturn null;\n}\n\nexport default KeyboardShortcuts;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nexport const textFormattingShortcuts = [\n\t{\n\t\tkeyCombination: { modifier: 'primary', character: 'b' },\n\t\tdescription: __( 'Make the selected text bold.' ),\n\t},\n\t{\n\t\tkeyCombination: { modifier: 'primary', character: 'i' },\n\t\tdescription: __( 'Make the selected text italic.' ),\n\t},\n\t{\n\t\tkeyCombination: { modifier: 'primary', character: 'k' },\n\t\tdescription: __( 'Convert the selected text into a link.' ),\n\t},\n\t{\n\t\tkeyCombination: { modifier: 'primaryShift', character: 'k' },\n\t\tdescription: __( 'Remove a link.' ),\n\t},\n\t{\n\t\tkeyCombination: { character: '[[' },\n\t\tdescription: __( 'Insert a link to a post or page' ),\n\t},\n\t{\n\t\tkeyCombination: { modifier: 'primary', character: 'u' },\n\t\tdescription: __( 'Underline the selected text.' ),\n\t},\n\t{\n\t\tkeyCombination: { modifier: 'access', character: 'd' },\n\t\tdescription: __( 'Strikethrough the selected text.' ),\n\t},\n\t{\n\t\tkeyCombination: { modifier: 'access', character: 'x' },\n\t\tdescription: __( 'Make the selected text inline code.' ),\n\t},\n];\n","/**\n * External dependencies\n */\nimport { castArray } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Fragment } from '@wordpress/element';\nimport { displayShortcutList, shortcutAriaLabel } from '@wordpress/keycodes';\n\nfunction KeyCombination( { keyCombination, forceAriaLabel } ) {\n\tconst shortcut = keyCombination.modifier\n\t\t? displayShortcutList[ keyCombination.modifier ](\n\t\t\t\tkeyCombination.character\n\t\t )\n\t\t: keyCombination.character;\n\tconst ariaLabel = keyCombination.modifier\n\t\t? shortcutAriaLabel[ keyCombination.modifier ](\n\t\t\t\tkeyCombination.character\n\t\t )\n\t\t: keyCombination.character;\n\n\treturn (\n\t\t<kbd\n\t\t\tclassName=\"edit-post-keyboard-shortcut-help-modal__shortcut-key-combination\"\n\t\t\taria-label={ forceAriaLabel || ariaLabel }\n\t\t>\n\t\t\t{ castArray( shortcut ).map( ( character, index ) => {\n\t\t\t\tif ( character === '+' ) {\n\t\t\t\t\treturn <Fragment key={ index }>{ character }</Fragment>;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<kbd\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\tclassName=\"edit-post-keyboard-shortcut-help-modal__shortcut-key\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ character }\n\t\t\t\t\t</kbd>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</kbd>\n\t);\n}\n\nfunction Shortcut( { description, keyCombination, aliases = [], ariaLabel } ) {\n\treturn (\n\t\t<>\n\t\t\t<div className=\"edit-post-keyboard-shortcut-help-modal__shortcut-description\">\n\t\t\t\t{ description }\n\t\t\t</div>\n\t\t\t<div className=\"edit-post-keyboard-shortcut-help-modal__shortcut-term\">\n\t\t\t\t<KeyCombination\n\t\t\t\t\tkeyCombination={ keyCombination }\n\t\t\t\t\tforceAriaLabel={ ariaLabel }\n\t\t\t\t/>\n\t\t\t\t{ aliases.map( ( alias, index ) => (\n\t\t\t\t\t<KeyCombination\n\t\t\t\t\t\tkeyCombination={ alias }\n\t\t\t\t\t\tforceAriaLabel={ ariaLabel }\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default Shortcut;\n","/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\n\n/**\n * Internal dependencies\n */\nimport Shortcut from './shortcut';\n\nfunction DynamicShortcut( { name } ) {\n\tconst { keyCombination, description, aliases } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetShortcutKeyCombination,\n\t\t\t\tgetShortcutDescription,\n\t\t\t\tgetShortcutAliases,\n\t\t\t} = select( keyboardShortcutsStore );\n\n\t\t\treturn {\n\t\t\t\tkeyCombination: getShortcutKeyCombination( name ),\n\t\t\t\taliases: getShortcutAliases( name ),\n\t\t\t\tdescription: getShortcutDescription( name ),\n\t\t\t};\n\t\t},\n\t\t[ name ]\n\t);\n\n\tif ( ! keyCombination ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Shortcut\n\t\t\tkeyCombination={ keyCombination }\n\t\t\tdescription={ description }\n\t\t\taliases={ aliases }\n\t\t/>\n\t);\n}\n\nexport default DynamicShortcut;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Modal } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseShortcut,\n\tstore as keyboardShortcutsStore,\n} from '@wordpress/keyboard-shortcuts';\nimport { withSelect, withDispatch, useSelect } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { textFormattingShortcuts } from './config';\nimport Shortcut from './shortcut';\nimport DynamicShortcut from './dynamic-shortcut';\nimport { store as editPostStore } from '../../store';\n\nconst MODAL_NAME = 'edit-post/keyboard-shortcut-help';\n\nconst ShortcutList = ( { shortcuts } ) => (\n\t/*\n\t * Disable reason: The `list` ARIA role is redundant but\n\t * Safari+VoiceOver won't announce the list otherwise.\n\t */\n\t/* eslint-disable jsx-a11y/no-redundant-roles */\n\t<ul\n\t\tclassName=\"edit-post-keyboard-shortcut-help-modal__shortcut-list\"\n\t\trole=\"list\"\n\t>\n\t\t{ shortcuts.map( ( shortcut, index ) => (\n\t\t\t<li\n\t\t\t\tclassName=\"edit-post-keyboard-shortcut-help-modal__shortcut\"\n\t\t\t\tkey={ index }\n\t\t\t>\n\t\t\t\t{ typeof shortcut === 'string' ? (\n\t\t\t\t\t<DynamicShortcut name={ shortcut } />\n\t\t\t\t) : (\n\t\t\t\t\t<Shortcut { ...shortcut } />\n\t\t\t\t) }\n\t\t\t</li>\n\t\t) ) }\n\t</ul>\n\t/* eslint-enable jsx-a11y/no-redundant-roles */\n);\n\nconst ShortcutSection = ( { title, shortcuts, className } ) => (\n\t<section\n\t\tclassName={ classnames(\n\t\t\t'edit-post-keyboard-shortcut-help-modal__section',\n\t\t\tclassName\n\t\t) }\n\t>\n\t\t{ !! title && (\n\t\t\t<h2 className=\"edit-post-keyboard-shortcut-help-modal__section-title\">\n\t\t\t\t{ title }\n\t\t\t</h2>\n\t\t) }\n\t\t<ShortcutList shortcuts={ shortcuts } />\n\t</section>\n);\n\nconst ShortcutCategorySection = ( {\n\ttitle,\n\tcategoryName,\n\tadditionalShortcuts = [],\n} ) => {\n\tconst categoryShortcuts = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( keyboardShortcutsStore ).getCategoryShortcuts(\n\t\t\t\tcategoryName\n\t\t\t);\n\t\t},\n\t\t[ categoryName ]\n\t);\n\n\treturn (\n\t\t<ShortcutSection\n\t\t\ttitle={ title }\n\t\t\tshortcuts={ categoryShortcuts.concat( additionalShortcuts ) }\n\t\t/>\n\t);\n};\n\nexport function KeyboardShortcutHelpModal( { isModalActive, toggleModal } ) {\n\tuseShortcut( 'core/edit-post/keyboard-shortcuts', toggleModal );\n\n\tif ( ! isModalActive ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"edit-post-keyboard-shortcut-help-modal\"\n\t\t\ttitle={ __( 'Keyboard shortcuts' ) }\n\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\tonRequestClose={ toggleModal }\n\t\t>\n\t\t\t<ShortcutSection\n\t\t\t\tclassName=\"edit-post-keyboard-shortcut-help-modal__main-shortcuts\"\n\t\t\t\tshortcuts={ [ 'core/edit-post/keyboard-shortcuts' ] }\n\t\t\t/>\n\t\t\t<ShortcutCategorySection\n\t\t\t\ttitle={ __( 'Global shortcuts' ) }\n\t\t\t\tcategoryName=\"global\"\n\t\t\t/>\n\n\t\t\t<ShortcutCategorySection\n\t\t\t\ttitle={ __( 'Selection shortcuts' ) }\n\t\t\t\tcategoryName=\"selection\"\n\t\t\t/>\n\n\t\t\t<ShortcutCategorySection\n\t\t\t\ttitle={ __( 'Block shortcuts' ) }\n\t\t\t\tcategoryName=\"block\"\n\t\t\t\tadditionalShortcuts={ [\n\t\t\t\t\t{\n\t\t\t\t\t\tkeyCombination: { character: '/' },\n\t\t\t\t\t\tdescription: __(\n\t\t\t\t\t\t\t'Change the block type after adding a new paragraph.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t/* translators: The forward-slash character. e.g. '/'. */\n\t\t\t\t\t\tariaLabel: __( 'Forward-slash' ),\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t/>\n\t\t\t<ShortcutSection\n\t\t\t\ttitle={ __( 'Text formatting' ) }\n\t\t\t\tshortcuts={ textFormattingShortcuts }\n\t\t\t/>\n\t\t</Modal>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => ( {\n\t\tisModalActive: select( editPostStore ).isModalActive( MODAL_NAME ),\n\t} ) ),\n\twithDispatch( ( dispatch, { isModalActive } ) => {\n\t\tconst { openModal, closeModal } = dispatch( editPostStore );\n\n\t\treturn {\n\t\t\ttoggleModal: () =>\n\t\t\t\tisModalActive ? closeModal() : openModal( MODAL_NAME ),\n\t\t};\n\t} ),\n] )( KeyboardShortcutHelpModal );\n","/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Button } from '@wordpress/components';\nimport { withSelect } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { ___unstablePreferencesModalBaseOption as BaseOption } from '@wordpress/interface';\n\nexport function CustomFieldsConfirmation( { willEnable } ) {\n\tconst [ isReloading, setIsReloading ] = useState( false );\n\n\treturn (\n\t\t<>\n\t\t\t<p className=\"edit-post-preferences-modal__custom-fields-confirmation-message\">\n\t\t\t\t{ __(\n\t\t\t\t\t'A page reload is required for this change. Make sure your content is saved before reloading.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<Button\n\t\t\t\tclassName=\"edit-post-preferences-modal__custom-fields-confirmation-button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tisBusy={ isReloading }\n\t\t\t\tdisabled={ isReloading }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetIsReloading( true );\n\t\t\t\t\tdocument\n\t\t\t\t\t\t.getElementById( 'toggle-custom-fields-form' )\n\t\t\t\t\t\t.submit();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ willEnable\n\t\t\t\t\t? __( 'Enable & Reload' )\n\t\t\t\t\t: __( 'Disable & Reload' ) }\n\t\t\t</Button>\n\t\t</>\n\t);\n}\n\nexport function EnableCustomFieldsOption( { label, areCustomFieldsEnabled } ) {\n\tconst [ isChecked, setIsChecked ] = useState( areCustomFieldsEnabled );\n\n\treturn (\n\t\t<BaseOption\n\t\t\tlabel={ label }\n\t\t\tisChecked={ isChecked }\n\t\t\tonChange={ setIsChecked }\n\t\t>\n\t\t\t{ isChecked !== areCustomFieldsEnabled && (\n\t\t\t\t<CustomFieldsConfirmation willEnable={ isChecked } />\n\t\t\t) }\n\t\t</BaseOption>\n\t);\n}\n\nexport default withSelect( ( select ) => ( {\n\tareCustomFieldsEnabled:\n\t\t!! select( editorStore ).getEditorSettings().enableCustomFields,\n} ) )( EnableCustomFieldsOption );\n","/**\n * WordPress dependencies\n */\nimport { compose, ifCondition } from '@wordpress/compose';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { ___unstablePreferencesModalBaseOption as BaseOption } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nexport default compose(\n\twithSelect( ( select, { panelName } ) => {\n\t\tconst { isEditorPanelEnabled, isEditorPanelRemoved } =\n\t\t\tselect( editPostStore );\n\t\treturn {\n\t\t\tisRemoved: isEditorPanelRemoved( panelName ),\n\t\t\tisChecked: isEditorPanelEnabled( panelName ),\n\t\t};\n\t} ),\n\tifCondition( ( { isRemoved } ) => ! isRemoved ),\n\twithDispatch( ( dispatch, { panelName } ) => ( {\n\t\tonChange: () =>\n\t\t\tdispatch( editPostStore ).toggleEditorPanelEnabled( panelName ),\n\t} ) )\n)( BaseOption );\n","/**\n * WordPress dependencies\n */\nimport { createSlotFill } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { EnablePanelOption } from './index';\n\nconst { Fill, Slot } = createSlotFill(\n\t'EnablePluginDocumentSettingPanelOption'\n);\n\nconst EnablePluginDocumentSettingPanelOption = ( { label, panelName } ) => (\n\t<Fill>\n\t\t<EnablePanelOption label={ label } panelName={ panelName } />\n\t</Fill>\n);\n\nEnablePluginDocumentSettingPanelOption.Slot = Slot;\n\nexport default EnablePluginDocumentSettingPanelOption;\n","/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { ifViewportMatches } from '@wordpress/viewport';\nimport { store as editorStore } from '@wordpress/editor';\nimport { ___unstablePreferencesModalBaseOption as BaseOption } from '@wordpress/interface';\n\nexport default compose(\n\twithSelect( ( select ) => ( {\n\t\tisChecked: select( editorStore ).isPublishSidebarEnabled(),\n\t} ) ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { enablePublishSidebar, disablePublishSidebar } =\n\t\t\tdispatch( editorStore );\n\t\treturn {\n\t\t\tonChange: ( isEnabled ) =>\n\t\t\t\tisEnabled ? enablePublishSidebar() : disablePublishSidebar(),\n\t\t};\n\t} ),\n\t// In < medium viewports we override this option and always show the publish sidebar.\n\t// See the edit-post's header component for the specific logic.\n\tifViewportMatches( 'medium' )\n)( BaseOption );\n","/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { ___unstablePreferencesModalBaseOption as BaseOption } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nexport default compose(\n\twithSelect( ( select, { featureName } ) => {\n\t\tconst { isFeatureActive } = select( editPostStore );\n\t\treturn {\n\t\t\tisChecked: isFeatureActive( featureName ),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, { featureName } ) => ( {\n\t\tonChange: () => dispatch( editPostStore ).toggleFeature( featureName ),\n\t} ) )\n)( BaseOption );\n","/**\n * External dependencies\n */\nimport { filter, map } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { withSelect } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { PreferencesModalSection } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport { EnableCustomFieldsOption, EnablePanelOption } from './options';\nimport { store as editPostStore } from '../../store';\n\nexport function MetaBoxesSection( {\n\tareCustomFieldsRegistered,\n\tmetaBoxes,\n\t...sectionProps\n} ) {\n\t// The 'Custom Fields' meta box is a special case that we handle separately.\n\tconst thirdPartyMetaBoxes = filter(\n\t\tmetaBoxes,\n\t\t( { id } ) => id !== 'postcustom'\n\t);\n\n\tif ( ! areCustomFieldsRegistered && thirdPartyMetaBoxes.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PreferencesModalSection { ...sectionProps }>\n\t\t\t{ areCustomFieldsRegistered && (\n\t\t\t\t<EnableCustomFieldsOption label={ __( 'Custom fields' ) } />\n\t\t\t) }\n\t\t\t{ map( thirdPartyMetaBoxes, ( { id, title } ) => (\n\t\t\t\t<EnablePanelOption\n\t\t\t\t\tkey={ id }\n\t\t\t\t\tlabel={ title }\n\t\t\t\t\tpanelName={ `meta-box-${ id }` }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</PreferencesModalSection>\n\t);\n}\n\nexport default withSelect( ( select ) => {\n\tconst { getEditorSettings } = select( editorStore );\n\tconst { getAllMetaBoxes } = select( editPostStore );\n\n\treturn {\n\t\t// This setting should not live in the block editor's store.\n\t\tareCustomFieldsRegistered:\n\t\t\tgetEditorSettings().enableCustomFields !== undefined,\n\t\tmetaBoxes: getAllMetaBoxes(),\n\t};\n} )( MetaBoxesSection );\n","/**\n * External dependencies\n */\nimport { partial } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { BlockIcon } from '@wordpress/block-editor';\nimport { CheckboxControl } from '@wordpress/components';\n\nfunction BlockTypesChecklist( { blockTypes, value, onItemChange } ) {\n\treturn (\n\t\t<ul className=\"edit-post-block-manager__checklist\">\n\t\t\t{ blockTypes.map( ( blockType ) => (\n\t\t\t\t<li\n\t\t\t\t\tkey={ blockType.name }\n\t\t\t\t\tclassName=\"edit-post-block-manager__checklist-item\"\n\t\t\t\t>\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{ blockType.title }\n\t\t\t\t\t\t\t\t<BlockIcon icon={ blockType.icon } />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchecked={ value.includes( blockType.name ) }\n\t\t\t\t\t\tonChange={ partial( onItemChange, blockType.name ) }\n\t\t\t\t\t/>\n\t\t\t\t</li>\n\t\t\t) ) }\n\t\t</ul>\n\t);\n}\n\nexport default BlockTypesChecklist;\n","/**\n * External dependencies\n */\nimport { includes, map, without } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo, useCallback } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useInstanceId } from '@wordpress/compose';\nimport { CheckboxControl } from '@wordpress/components';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport BlockTypesChecklist from './checklist';\nimport { store as editPostStore } from '../../store';\n\nfunction BlockManagerCategory( { title, blockTypes } ) {\n\tconst instanceId = useInstanceId( BlockManagerCategory );\n\tconst { defaultAllowedBlockTypes, hiddenBlockTypes } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditorSettings } = select( editorStore );\n\t\t\tconst { getHiddenBlockTypes } = select( editPostStore );\n\t\t\treturn {\n\t\t\t\tdefaultAllowedBlockTypes:\n\t\t\t\t\tgetEditorSettings().defaultAllowedBlockTypes,\n\t\t\t\thiddenBlockTypes: getHiddenBlockTypes(),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst filteredBlockTypes = useMemo( () => {\n\t\tif ( defaultAllowedBlockTypes === true ) {\n\t\t\treturn blockTypes;\n\t\t}\n\t\treturn blockTypes.filter( ( { name } ) => {\n\t\t\treturn includes( defaultAllowedBlockTypes || [], name );\n\t\t} );\n\t}, [ defaultAllowedBlockTypes, blockTypes ] );\n\tconst { showBlockTypes, hideBlockTypes } = useDispatch( editPostStore );\n\tconst toggleVisible = useCallback( ( blockName, nextIsChecked ) => {\n\t\tif ( nextIsChecked ) {\n\t\t\tshowBlockTypes( blockName );\n\t\t} else {\n\t\t\thideBlockTypes( blockName );\n\t\t}\n\t}, [] );\n\tconst toggleAllVisible = useCallback(\n\t\t( nextIsChecked ) => {\n\t\t\tconst blockNames = map( blockTypes, 'name' );\n\t\t\tif ( nextIsChecked ) {\n\t\t\t\tshowBlockTypes( blockNames );\n\t\t\t} else {\n\t\t\t\thideBlockTypes( blockNames );\n\t\t\t}\n\t\t},\n\t\t[ blockTypes ]\n\t);\n\n\tif ( ! filteredBlockTypes.length ) {\n\t\treturn null;\n\t}\n\n\tconst checkedBlockNames = without(\n\t\tmap( filteredBlockTypes, 'name' ),\n\t\t...hiddenBlockTypes\n\t);\n\n\tconst titleId = 'edit-post-block-manager__category-title-' + instanceId;\n\n\tconst isAllChecked = checkedBlockNames.length === filteredBlockTypes.length;\n\n\tlet ariaChecked;\n\tif ( isAllChecked ) {\n\t\tariaChecked = 'true';\n\t} else if ( checkedBlockNames.length > 0 ) {\n\t\tariaChecked = 'mixed';\n\t} else {\n\t\tariaChecked = 'false';\n\t}\n\n\treturn (\n\t\t<div\n\t\t\trole=\"group\"\n\t\t\taria-labelledby={ titleId }\n\t\t\tclassName=\"edit-post-block-manager__category\"\n\t\t>\n\t\t\t<CheckboxControl\n\t\t\t\tchecked={ isAllChecked }\n\t\t\t\tonChange={ toggleAllVisible }\n\t\t\t\tclassName=\"edit-post-block-manager__category-title\"\n\t\t\t\taria-checked={ ariaChecked }\n\t\t\t\tlabel={ <span id={ titleId }>{ title }</span> }\n\t\t\t/>\n\t\t\t<BlockTypesChecklist\n\t\t\t\tblockTypes={ filteredBlockTypes }\n\t\t\t\tvalue={ checkedBlockNames }\n\t\t\t\tonItemChange={ toggleVisible }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default BlockManagerCategory;\n","/**\n * External dependencies\n */\nimport { filter, includes } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { withSelect } from '@wordpress/data';\nimport { SearchControl } from '@wordpress/components';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { useEffect, useState } from '@wordpress/element';\nimport { useDebounce } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport BlockManagerCategory from './category';\nimport { store as editPostStore } from '../../store';\n\nfunction BlockManager( {\n\tblockTypes,\n\tcategories,\n\thasBlockSupport,\n\tisMatchingSearchTerm,\n\tnumberOfHiddenBlocks,\n} ) {\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\tconst [ search, setSearch ] = useState( '' );\n\n\t// Filtering occurs here (as opposed to `withSelect`) to avoid\n\t// wasted renders by consequence of `Array#filter` producing\n\t// a new value reference on each call.\n\tblockTypes = blockTypes.filter(\n\t\t( blockType ) =>\n\t\t\thasBlockSupport( blockType, 'inserter', true ) &&\n\t\t\t( ! search || isMatchingSearchTerm( blockType, search ) ) &&\n\t\t\t( ! blockType.parent ||\n\t\t\t\tincludes( blockType.parent, 'core/post-content' ) )\n\t);\n\n\t// Announce search results on change\n\tuseEffect( () => {\n\t\tif ( ! search ) {\n\t\t\treturn;\n\t\t}\n\t\tconst count = blockTypes.length;\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results. */\n\t\t\t_n( '%d result found.', '%d results found.', count ),\n\t\t\tcount\n\t\t);\n\t\tdebouncedSpeak( resultsFoundMessage );\n\t}, [ blockTypes.length, search, debouncedSpeak ] );\n\n\treturn (\n\t\t<div className=\"edit-post-block-manager__content\">\n\t\t\t{ !! numberOfHiddenBlocks && (\n\t\t\t\t<div className=\"edit-post-block-manager__disabled-blocks-count\">\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t'%d block is hidden.',\n\t\t\t\t\t\t\t'%d blocks are hidden.',\n\t\t\t\t\t\t\tnumberOfHiddenBlocks\n\t\t\t\t\t\t),\n\t\t\t\t\t\tnumberOfHiddenBlocks\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<SearchControl\n\t\t\t\tlabel={ __( 'Search for a block' ) }\n\t\t\t\tplaceholder={ __( 'Search for a block' ) }\n\t\t\t\tvalue={ search }\n\t\t\t\tonChange={ ( nextSearch ) => setSearch( nextSearch ) }\n\t\t\t\tclassName=\"edit-post-block-manager__search\"\n\t\t\t/>\n\t\t\t<div\n\t\t\t\ttabIndex=\"0\"\n\t\t\t\trole=\"region\"\n\t\t\t\taria-label={ __( 'Available block types' ) }\n\t\t\t\tclassName=\"edit-post-block-manager__results\"\n\t\t\t>\n\t\t\t\t{ blockTypes.length === 0 && (\n\t\t\t\t\t<p className=\"edit-post-block-manager__no-results\">\n\t\t\t\t\t\t{ __( 'No blocks found.' ) }\n\t\t\t\t\t</p>\n\t\t\t\t) }\n\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t<BlockManagerCategory\n\t\t\t\t\t\tkey={ category.slug }\n\t\t\t\t\t\ttitle={ category.title }\n\t\t\t\t\t\tblockTypes={ filter( blockTypes, {\n\t\t\t\t\t\t\tcategory: category.slug,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t\t<BlockManagerCategory\n\t\t\t\t\ttitle={ __( 'Uncategorized' ) }\n\t\t\t\t\tblockTypes={ filter(\n\t\t\t\t\t\tblockTypes,\n\t\t\t\t\t\t( { category } ) => ! category\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default withSelect( ( select ) => {\n\tconst {\n\t\tgetBlockTypes,\n\t\tgetCategories,\n\t\thasBlockSupport,\n\t\tisMatchingSearchTerm,\n\t} = select( blocksStore );\n\tconst { getHiddenBlockTypes } = select( editPostStore );\n\n\t// Some hidden blocks become unregistered\n\t// by removing for instance the plugin that registered them, yet\n\t// they're still remain as hidden by the user's action.\n\t// We consider \"hidden\", blocks which were hidden and\n\t// are still registered.\n\tconst blockTypes = getBlockTypes();\n\tconst hiddenBlockTypes = getHiddenBlockTypes().filter( ( hiddenBlock ) => {\n\t\treturn blockTypes.some(\n\t\t\t( registeredBlock ) => registeredBlock.name === hiddenBlock\n\t\t);\n\t} );\n\tconst numberOfHiddenBlocks =\n\t\tArray.isArray( hiddenBlockTypes ) && hiddenBlockTypes.length;\n\n\treturn {\n\t\tblockTypes,\n\t\tcategories: getCategories(),\n\t\thasBlockSupport,\n\t\tisMatchingSearchTerm,\n\t\tnumberOfHiddenBlocks,\n\t};\n} )( BlockManager );\n","/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\n\nimport { __ } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport {\n\tPostTaxonomies,\n\tPostExcerptCheck,\n\tPageAttributesCheck,\n\tPostFeaturedImageCheck,\n\tPostTypeSupportCheck,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport {\n\tPreferencesModal,\n\tPreferencesModalTabs,\n\tPreferencesModalSection,\n} from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\n\nimport {\n\tEnablePluginDocumentSettingPanelOption,\n\tEnablePublishSidebarOption,\n\tEnablePanelOption,\n\tEnableFeature,\n} from './options';\nimport MetaBoxesSection from './meta-boxes-section';\nimport { store as editPostStore } from '../../store';\nimport BlockManager from '../block-manager';\n\nconst MODAL_NAME = 'edit-post/preferences';\n\nexport default function EditPostPreferencesModal() {\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst { closeModal } = useDispatch( editPostStore );\n\tconst isModalActive = useSelect(\n\t\t( select ) => select( editPostStore ).isModalActive( MODAL_NAME ),\n\t\t[]\n\t);\n\tconst showBlockBreadcrumbsOption = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditorSettings } = select( editorStore );\n\t\t\tconst { getEditorMode, isFeatureActive } = select( editPostStore );\n\t\t\tconst mode = getEditorMode();\n\t\t\tconst isRichEditingEnabled = getEditorSettings().richEditingEnabled;\n\t\t\tconst hasReducedUI = isFeatureActive( 'reducedUI' );\n\t\t\treturn (\n\t\t\t\t! hasReducedUI &&\n\t\t\t\tisLargeViewport &&\n\t\t\t\tisRichEditingEnabled &&\n\t\t\t\tmode === 'visual'\n\t\t\t);\n\t\t},\n\t\t[ isLargeViewport ]\n\t);\n\tconst sections = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tname: 'general',\n\t\t\t\ttabLabel: __( 'General' ),\n\t\t\t\tcontent: (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ isLargeViewport && (\n\t\t\t\t\t\t\t<PreferencesModalSection\n\t\t\t\t\t\t\t\ttitle={ __( 'Publishing' ) }\n\t\t\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t\t\t'Change options related to publishing.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<EnablePublishSidebarOption\n\t\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t\t'Review settings, such as visibility and tags.'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tlabel={ __(\n\t\t\t\t\t\t\t\t\t\t'Include pre-publish checklist'\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</PreferencesModalSection>\n\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t<PreferencesModalSection\n\t\t\t\t\t\t\ttitle={ __( 'Appearance' ) }\n\t\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t\t'Customize options related to the block editor interface and editing flow.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<EnableFeature\n\t\t\t\t\t\t\t\tfeatureName=\"focusMode\"\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Highlights the current block and fades other content.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tlabel={ __( 'Spotlight mode' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<EnableFeature\n\t\t\t\t\t\t\t\tfeatureName=\"showIconLabels\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Show button text labels' ) }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Show text instead of icons on buttons.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<EnableFeature\n\t\t\t\t\t\t\t\tfeatureName=\"showListViewByDefault\"\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Opens the block list view sidebar by default.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tlabel={ __( 'Always open list view' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<EnableFeature\n\t\t\t\t\t\t\t\tfeatureName=\"reducedUI\"\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Compacts options and outlines in the toolbar.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tlabel={ __( 'Reduce the interface' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<EnableFeature\n\t\t\t\t\t\t\t\tfeatureName=\"themeStyles\"\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Make the editor look like your theme.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tlabel={ __( 'Use theme styles' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ showBlockBreadcrumbsOption && (\n\t\t\t\t\t\t\t\t<EnableFeature\n\t\t\t\t\t\t\t\t\tfeatureName=\"showBlockBreadcrumbs\"\n\t\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t\t'Shows block breadcrumbs at the bottom of the editor.'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Display block breadcrumbs' ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</PreferencesModalSection>\n\t\t\t\t\t</>\n\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'blocks',\n\t\t\t\ttabLabel: __( 'Blocks' ),\n\t\t\t\tcontent: (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PreferencesModalSection\n\t\t\t\t\t\t\ttitle={ __( 'Block interactions' ) }\n\t\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t\t'Customize how you interact with blocks in the block library and editing canvas.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<EnableFeature\n\t\t\t\t\t\t\t\tfeatureName=\"mostUsedBlocks\"\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Places the most frequent blocks in the block library.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tlabel={ __( 'Show most used blocks' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<EnableFeature\n\t\t\t\t\t\t\t\tfeatureName=\"keepCaretInsideBlock\"\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Aids screen readers by stopping text caret from leaving blocks.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tlabel={ __(\n\t\t\t\t\t\t\t\t\t'Contain text cursor inside block'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PreferencesModalSection>\n\t\t\t\t\t\t<PreferencesModalSection\n\t\t\t\t\t\t\ttitle={ __( 'Visible blocks' ) }\n\t\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t\t\"Disable blocks that you don't want to appear in the inserter. They can always be toggled back on later.\"\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockManager />\n\t\t\t\t\t\t</PreferencesModalSection>\n\t\t\t\t\t</>\n\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'panels',\n\t\t\t\ttabLabel: __( 'Panels' ),\n\t\t\t\tcontent: (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PreferencesModalSection\n\t\t\t\t\t\t\ttitle={ __( 'Document settings' ) }\n\t\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t\t'Choose what displays in the panel.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<EnablePluginDocumentSettingPanelOption.Slot />\n\t\t\t\t\t\t\t<PostTaxonomies\n\t\t\t\t\t\t\t\ttaxonomyWrapper={ ( content, taxonomy ) => (\n\t\t\t\t\t\t\t\t\t<EnablePanelOption\n\t\t\t\t\t\t\t\t\t\tlabel={ get( taxonomy, [\n\t\t\t\t\t\t\t\t\t\t\t'labels',\n\t\t\t\t\t\t\t\t\t\t\t'menu_name',\n\t\t\t\t\t\t\t\t\t\t] ) }\n\t\t\t\t\t\t\t\t\t\tpanelName={ `taxonomy-panel-${ taxonomy.slug }` }\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\t<PostFeaturedImageCheck>\n\t\t\t\t\t\t\t\t<EnablePanelOption\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Featured image' ) }\n\t\t\t\t\t\t\t\t\tpanelName=\"featured-image\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PostFeaturedImageCheck>\n\t\t\t\t\t\t\t<PostExcerptCheck>\n\t\t\t\t\t\t\t\t<EnablePanelOption\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Excerpt' ) }\n\t\t\t\t\t\t\t\t\tpanelName=\"post-excerpt\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PostExcerptCheck>\n\t\t\t\t\t\t\t<PostTypeSupportCheck\n\t\t\t\t\t\t\t\tsupportKeys={ [ 'comments', 'trackbacks' ] }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<EnablePanelOption\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Discussion' ) }\n\t\t\t\t\t\t\t\t\tpanelName=\"discussion-panel\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PostTypeSupportCheck>\n\t\t\t\t\t\t\t<PageAttributesCheck>\n\t\t\t\t\t\t\t\t<EnablePanelOption\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Page attributes' ) }\n\t\t\t\t\t\t\t\t\tpanelName=\"page-attributes\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PageAttributesCheck>\n\t\t\t\t\t\t</PreferencesModalSection>\n\t\t\t\t\t\t<MetaBoxesSection\n\t\t\t\t\t\t\ttitle={ __( 'Additional' ) }\n\t\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t\t'Add extra areas to the editor.'\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),\n\t\t\t},\n\t\t],\n\t\t[ isLargeViewport, showBlockBreadcrumbsOption ]\n\t);\n\n\tif ( ! isModalActive ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PreferencesModal closeModal={ closeModal }>\n\t\t\t<PreferencesModalTabs sections={ sections } />\n\t\t</PreferencesModal>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { withSelect } from '@wordpress/data';\nimport { addQueryArgs } from '@wordpress/url';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Returns the Post's Edit URL.\n *\n * @param {number} postId Post ID.\n *\n * @return {string} Post edit URL.\n */\nexport function getPostEditURL( postId ) {\n\treturn addQueryArgs( 'post.php', { post: postId, action: 'edit' } );\n}\n\n/**\n * Returns the Post's Trashed URL.\n *\n * @param {number} postId Post ID.\n * @param {string} postType Post Type.\n *\n * @return {string} Post trashed URL.\n */\nexport function getPostTrashedURL( postId, postType ) {\n\treturn addQueryArgs( 'edit.php', {\n\t\ttrashed: 1,\n\t\tpost_type: postType,\n\t\tids: postId,\n\t} );\n}\n\nexport class BrowserURL extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.state = {\n\t\t\thistoryId: null,\n\t\t};\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tconst { postId, postStatus, postType, isSavingPost } = this.props;\n\t\tconst { historyId } = this.state;\n\n\t\t// Posts are still dirty while saving so wait for saving to finish\n\t\t// to avoid the unsaved changes warning when trashing posts.\n\t\tif ( postStatus === 'trash' && ! isSavingPost ) {\n\t\t\tthis.setTrashURL( postId, postType );\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\t( postId !== prevProps.postId || postId !== historyId ) &&\n\t\t\tpostStatus !== 'auto-draft' &&\n\t\t\tpostId\n\t\t) {\n\t\t\tthis.setBrowserURL( postId );\n\t\t}\n\t}\n\n\t/**\n\t * Navigates the browser to the post trashed URL to show a notice about the trashed post.\n\t *\n\t * @param {number} postId Post ID.\n\t * @param {string} postType Post Type.\n\t */\n\tsetTrashURL( postId, postType ) {\n\t\twindow.location.href = getPostTrashedURL( postId, postType );\n\t}\n\n\t/**\n\t * Replaces the browser URL with a post editor link for the given post ID.\n\t *\n\t * Note it is important that, since this function may be called when the\n\t * editor first loads, the result generated `getPostEditURL` matches that\n\t * produced by the server. Otherwise, the URL will change unexpectedly.\n\t *\n\t * @param {number} postId Post ID for which to generate post editor URL.\n\t */\n\tsetBrowserURL( postId ) {\n\t\twindow.history.replaceState(\n\t\t\t{ id: postId },\n\t\t\t'Post ' + postId,\n\t\t\tgetPostEditURL( postId )\n\t\t);\n\n\t\tthis.setState( () => ( {\n\t\t\thistoryId: postId,\n\t\t} ) );\n\t}\n\n\trender() {\n\t\treturn null;\n\t}\n}\n\nexport default withSelect( ( select ) => {\n\tconst { getCurrentPost, isSavingPost } = select( editorStore );\n\tconst post = getCurrentPost();\n\tlet { id, status, type } = post;\n\tconst isTemplate = [ 'wp_template', 'wp_template_part' ].includes( type );\n\tif ( isTemplate ) {\n\t\tid = post.wp_id;\n\t}\n\n\treturn {\n\t\tpostId: id,\n\t\tpostStatus: status,\n\t\tpostType: type,\n\t\tisSavingPost: isSavingPost(),\n\t};\n} )( BrowserURL );\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst wordpress = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-2 -2 24 24\">\n\t\t<Path d=\"M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z\" />\n\t</SVG>\n);\n\nexport default wordpress;\n","/**\n * External dependencies\n */\nimport { get } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tButton,\n\tIcon,\n\t__unstableMotion as motion,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { addQueryArgs } from '@wordpress/url';\nimport { wordpress } from '@wordpress/icons';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useReducedMotion } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nfunction FullscreenModeClose( { showTooltip, icon, href } ) {\n\tconst { isActive, isRequestingSiteIcon, postType, siteIconUrl } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPostType } = select( editorStore );\n\t\t\tconst { isFeatureActive } = select( editPostStore );\n\t\t\tconst { getEntityRecord, getPostType, isResolving } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst siteData =\n\t\t\t\tgetEntityRecord( 'root', '__unstableBase', undefined ) || {};\n\n\t\t\treturn {\n\t\t\t\tisActive: isFeatureActive( 'fullscreenMode' ),\n\t\t\t\tisRequestingSiteIcon: isResolving( 'getEntityRecord', [\n\t\t\t\t\t'root',\n\t\t\t\t\t'__unstableBase',\n\t\t\t\t\tundefined,\n\t\t\t\t] ),\n\t\t\t\tpostType: getPostType( getCurrentPostType() ),\n\t\t\t\tsiteIconUrl: siteData.site_icon_url,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst disableMotion = useReducedMotion();\n\n\tif ( ! isActive || ! postType ) {\n\t\treturn null;\n\t}\n\n\tlet buttonIcon = <Icon size=\"36px\" icon={ wordpress } />;\n\n\tconst effect = {\n\t\texpand: {\n\t\t\tscale: 1.25,\n\t\t\ttransition: { type: 'tween', duration: '0.3' },\n\t\t},\n\t};\n\n\tif ( siteIconUrl ) {\n\t\tbuttonIcon = (\n\t\t\t<motion.img\n\t\t\t\tvariants={ ! disableMotion && effect }\n\t\t\t\talt={ __( 'Site Icon' ) }\n\t\t\t\tclassName=\"edit-post-fullscreen-mode-close_site-icon\"\n\t\t\t\tsrc={ siteIconUrl }\n\t\t\t/>\n\t\t);\n\t}\n\n\tif ( isRequestingSiteIcon ) {\n\t\tbuttonIcon = null;\n\t}\n\n\t// Override default icon if custom icon is provided via props.\n\tif ( icon ) {\n\t\tbuttonIcon = <Icon size=\"36px\" icon={ icon } />;\n\t}\n\n\tconst classes = classnames( {\n\t\t'edit-post-fullscreen-mode-close': true,\n\t\t'has-icon': siteIconUrl,\n\t} );\n\n\treturn (\n\t\t<motion.div whileHover=\"expand\">\n\t\t\t<Button\n\t\t\t\tclassName={ classes }\n\t\t\t\thref={\n\t\t\t\t\thref ??\n\t\t\t\t\taddQueryArgs( 'edit.php', {\n\t\t\t\t\t\tpost_type: postType.slug,\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t\tlabel={ get(\n\t\t\t\t\tpostType,\n\t\t\t\t\t[ 'labels', 'view_items' ],\n\t\t\t\t\t__( 'Back' )\n\t\t\t\t) }\n\t\t\t\tshowTooltip={ showTooltip }\n\t\t\t>\n\t\t\t\t{ buttonIcon }\n\t\t\t</Button>\n\t\t</motion.div>\n\t);\n}\n\nexport default FullscreenModeClose;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst listView = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M13.8 5.2H3v1.5h10.8V5.2zm-3.6 12v1.5H21v-1.5H10.2zm7.2-6H6.6v1.5h10.8v-1.5z\" />\n\t</SVG>\n);\n\nexport default listView;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst plus = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18 11.2h-5.2V6h-1.6v5.2H6v1.6h5.2V18h1.6v-5.2H18z\" />\n\t</SVG>\n);\n\nexport default plus;\n","/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\tNavigableToolbar,\n\tToolSelector,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\tTableOfContents,\n\tEditorHistoryRedo,\n\tEditorHistoryUndo,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport { Button, ToolbarItem } from '@wordpress/components';\nimport { listView, plus } from '@wordpress/icons';\nimport { useRef, useCallback } from '@wordpress/element';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nconst preventDefault = ( event ) => {\n\tevent.preventDefault();\n};\n\nfunction HeaderToolbar() {\n\tconst inserterButton = useRef();\n\tconst { setIsInserterOpened, setIsListViewOpened } =\n\t\tuseDispatch( editPostStore );\n\tconst {\n\t\tisInserterEnabled,\n\t\tisInserterOpened,\n\t\tisTextModeEnabled,\n\t\tshowIconLabels,\n\t\tisListViewOpen,\n\t\tlistViewShortcut,\n\t} = useSelect( ( select ) => {\n\t\tconst { hasInserterItems, getBlockRootClientId, getBlockSelectionEnd } =\n\t\t\tselect( blockEditorStore );\n\t\tconst { getEditorSettings } = select( editorStore );\n\t\tconst { getEditorMode, isFeatureActive, isListViewOpened } =\n\t\t\tselect( editPostStore );\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\n\t\treturn {\n\t\t\t// This setting (richEditingEnabled) should not live in the block editor's setting.\n\t\t\tisInserterEnabled:\n\t\t\t\tgetEditorMode() === 'visual' &&\n\t\t\t\tgetEditorSettings().richEditingEnabled &&\n\t\t\t\thasInserterItems(\n\t\t\t\t\tgetBlockRootClientId( getBlockSelectionEnd() )\n\t\t\t\t),\n\t\t\tisInserterOpened: select( editPostStore ).isInserterOpened(),\n\t\t\tisTextModeEnabled: getEditorMode() === 'text',\n\t\t\tshowIconLabels: isFeatureActive( 'showIconLabels' ),\n\t\t\tisListViewOpen: isListViewOpened(),\n\t\t\tlistViewShortcut: getShortcutRepresentation(\n\t\t\t\t'core/edit-post/toggle-list-view'\n\t\t\t),\n\t\t};\n\t}, [] );\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst isWideViewport = useViewportMatch( 'wide' );\n\n\t/* translators: accessibility text for the editor toolbar */\n\tconst toolbarAriaLabel = __( 'Document tools' );\n\n\tconst toggleListView = useCallback(\n\t\t() => setIsListViewOpened( ! isListViewOpen ),\n\t\t[ setIsListViewOpened, isListViewOpen ]\n\t);\n\tconst overflowItems = (\n\t\t<>\n\t\t\t<ToolbarItem\n\t\t\t\tas={ TableOfContents }\n\t\t\t\thasOutlineItemsDisabled={ isTextModeEnabled }\n\t\t\t\trepositionDropdown={ showIconLabels && ! isWideViewport }\n\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t/>\n\t\t\t<ToolbarItem\n\t\t\t\tas={ Button }\n\t\t\t\tclassName=\"edit-post-header-toolbar__list-view-toggle\"\n\t\t\t\ticon={ listView }\n\t\t\t\tdisabled={ isTextModeEnabled }\n\t\t\t\tisPressed={ isListViewOpen }\n\t\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\t\tlabel={ __( 'List View' ) }\n\t\t\t\tonClick={ toggleListView }\n\t\t\t\tshortcut={ listViewShortcut }\n\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t/>\n\t\t</>\n\t);\n\tconst openInserter = useCallback( () => {\n\t\tif ( isInserterOpened ) {\n\t\t\t// Focusing the inserter button closes the inserter popover.\n\t\t\tinserterButton.current.focus();\n\t\t} else {\n\t\t\tsetIsInserterOpened( true );\n\t\t}\n\t}, [ isInserterOpened, setIsInserterOpened ] );\n\n\t/* translators: button label text should, if possible, be under 16 characters. */\n\tconst longLabel = _x(\n\t\t'Toggle block inserter',\n\t\t'Generic label for block inserter button'\n\t);\n\tconst shortLabel = ! isInserterOpened ? __( 'Add' ) : __( 'Close' );\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tclassName=\"edit-post-header-toolbar\"\n\t\t\taria-label={ toolbarAriaLabel }\n\t\t>\n\t\t\t<div className=\"edit-post-header-toolbar__left\">\n\t\t\t\t<ToolbarItem\n\t\t\t\t\tref={ inserterButton }\n\t\t\t\t\tas={ Button }\n\t\t\t\t\tclassName=\"edit-post-header-toolbar__inserter-toggle\"\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tisPressed={ isInserterOpened }\n\t\t\t\t\tonMouseDown={ preventDefault }\n\t\t\t\t\tonClick={ openInserter }\n\t\t\t\t\tdisabled={ ! isInserterEnabled }\n\t\t\t\t\ticon={ plus }\n\t\t\t\t\tlabel={ showIconLabels ? shortLabel : longLabel }\n\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t/>\n\t\t\t\t{ ( isWideViewport || ! showIconLabels ) && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ isLargeViewport && (\n\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\tas={ ToolSelector }\n\t\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tshowIconLabels ? 'tertiary' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdisabled={ isTextModeEnabled }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\tas={ EditorHistoryUndo }\n\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\tas={ EditorHistoryRedo }\n\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ overflowItems }\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</NavigableToolbar>\n\t);\n}\n\nexport default HeaderToolbar;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItemsChoice, MenuGroup } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Set of available mode options.\n *\n * @type {Array}\n */\nconst MODES = [\n\t{\n\t\tvalue: 'visual',\n\t\tlabel: __( 'Visual editor' ),\n\t},\n\t{\n\t\tvalue: 'text',\n\t\tlabel: __( 'Code editor' ),\n\t},\n];\n\nfunction ModeSwitcher() {\n\tconst {\n\t\tshortcut,\n\t\tisRichEditingEnabled,\n\t\tisCodeEditingEnabled,\n\t\tisEditingTemplate,\n\t\tmode,\n\t} = useSelect(\n\t\t( select ) => ( {\n\t\t\tshortcut: select(\n\t\t\t\tkeyboardShortcutsStore\n\t\t\t).getShortcutRepresentation( 'core/edit-post/toggle-mode' ),\n\t\t\tisRichEditingEnabled:\n\t\t\t\tselect( editorStore ).getEditorSettings().richEditingEnabled,\n\t\t\tisCodeEditingEnabled:\n\t\t\t\tselect( editorStore ).getEditorSettings().codeEditingEnabled,\n\t\t\tisEditingTemplate: select( editPostStore ).isEditingTemplate(),\n\t\t\tmode: select( editPostStore ).getEditorMode(),\n\t\t} ),\n\t\t[]\n\t);\n\tconst { switchEditorMode } = useDispatch( editPostStore );\n\n\tif ( isEditingTemplate ) {\n\t\treturn null;\n\t}\n\n\tif ( ! isRichEditingEnabled || ! isCodeEditingEnabled ) {\n\t\treturn null;\n\t}\n\n\tconst choices = MODES.map( ( choice ) => {\n\t\tif ( choice.value !== mode ) {\n\t\t\treturn { ...choice, shortcut };\n\t\t}\n\t\treturn choice;\n\t} );\n\n\treturn (\n\t\t<MenuGroup label={ __( 'Editor' ) }>\n\t\t\t<MenuItemsChoice\n\t\t\t\tchoices={ choices }\n\t\t\t\tvalue={ mode }\n\t\t\t\tonSelect={ switchEditorMode }\n\t\t\t/>\n\t\t</MenuGroup>\n\t);\n}\n\nexport default ModeSwitcher;\n","/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nexport default function PreferencesMenuItem() {\n\tconst { openModal } = useDispatch( editPostStore );\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => {\n\t\t\t\topenModal( 'edit-post/preferences' );\n\t\t\t} }\n\t\t>\n\t\t\t{ __( 'Preferences' ) }\n\t\t</MenuItem>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { MenuGroup } from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { displayShortcut } from '@wordpress/keycodes';\nimport { PreferenceToggleMenuItem } from '@wordpress/preferences';\n\nfunction WritingMenu() {\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tif ( ! isLargeViewport ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<MenuGroup label={ _x( 'View', 'noun' ) }>\n\t\t\t<PreferenceToggleMenuItem\n\t\t\t\tscope=\"core/edit-post\"\n\t\t\t\tname=\"fixedToolbar\"\n\t\t\t\tlabel={ __( 'Top toolbar' ) }\n\t\t\t\tinfo={ __(\n\t\t\t\t\t'Access all block and document tools in a single place'\n\t\t\t\t) }\n\t\t\t\tmessageActivated={ __( 'Top toolbar activated' ) }\n\t\t\t\tmessageDeactivated={ __( 'Top toolbar deactivated' ) }\n\t\t\t/>\n\t\t\t<PreferenceToggleMenuItem\n\t\t\t\tscope=\"core/edit-post\"\n\t\t\t\tname=\"focusMode\"\n\t\t\t\tlabel={ __( 'Spotlight mode' ) }\n\t\t\t\tinfo={ __( 'Focus on one block at a time' ) }\n\t\t\t\tmessageActivated={ __( 'Spotlight mode activated' ) }\n\t\t\t\tmessageDeactivated={ __( 'Spotlight mode deactivated' ) }\n\t\t\t/>\n\t\t\t<PreferenceToggleMenuItem\n\t\t\t\tscope=\"core/edit-post\"\n\t\t\t\tname=\"fullscreenMode\"\n\t\t\t\tlabel={ __( 'Fullscreen mode' ) }\n\t\t\t\tinfo={ __( 'Work without distraction' ) }\n\t\t\t\tmessageActivated={ __( 'Fullscreen mode activated' ) }\n\t\t\t\tmessageDeactivated={ __( 'Fullscreen mode deactivated' ) }\n\t\t\t\tshortcut={ displayShortcut.secondary( 'f' ) }\n\t\t\t/>\n\t\t</MenuGroup>\n\t);\n}\n\nexport default WritingMenu;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuGroup } from '@wordpress/components';\nimport {\n\tActionItem,\n\tMoreMenuDropdown,\n\tPinnedItems,\n} from '@wordpress/interface';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport ModeSwitcher from '../mode-switcher';\nimport PreferencesMenuItem from '../preferences-menu-item';\nimport ToolsMoreMenuGroup from '../tools-more-menu-group';\nimport WritingMenu from '../writing-menu';\n\nconst MoreMenu = ( { showIconLabels } ) => {\n\tconst isLargeViewport = useViewportMatch( 'large' );\n\n\treturn (\n\t\t<MoreMenuDropdown\n\t\t\ttoggleProps={ {\n\t\t\t\tshowTooltip: ! showIconLabels,\n\t\t\t\t...( showIconLabels && { variant: 'tertiary' } ),\n\t\t\t} }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t{ showIconLabels && ! isLargeViewport && (\n\t\t\t\t\t\t<PinnedItems.Slot\n\t\t\t\t\t\t\tclassName={ showIconLabels && 'show-icon-labels' }\n\t\t\t\t\t\t\tscope=\"core/edit-post\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<WritingMenu />\n\t\t\t\t\t<ModeSwitcher />\n\t\t\t\t\t<ActionItem.Slot\n\t\t\t\t\t\tname=\"core/edit-post/plugin-more-menu\"\n\t\t\t\t\t\tlabel={ __( 'Plugins' ) }\n\t\t\t\t\t\tas={ MenuGroup }\n\t\t\t\t\t\tfillProps={ { onClick: onClose } }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToolsMoreMenuGroup.Slot fillProps={ { onClose } } />\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<PreferencesMenuItem />\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</MoreMenuDropdown>\n\t);\n};\n\nexport default MoreMenu;\n","/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useViewportMatch, compose } from '@wordpress/compose';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { PostPublishButton, store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nexport function PostPublishButtonOrToggle( {\n\tforceIsDirty,\n\tforceIsSaving,\n\thasPublishAction,\n\tisBeingScheduled,\n\tisPending,\n\tisPublished,\n\tisPublishSidebarEnabled,\n\tisPublishSidebarOpened,\n\tisScheduled,\n\ttogglePublishSidebar,\n\tsetEntitiesSavedStatesCallback,\n} ) {\n\tconst IS_TOGGLE = 'toggle';\n\tconst IS_BUTTON = 'button';\n\tconst isSmallerThanMediumViewport = useViewportMatch( 'medium', '<' );\n\tlet component;\n\n\t/**\n\t * Conditions to show a BUTTON (publish directly) or a TOGGLE (open publish sidebar):\n\t *\n\t * 1) We want to show a BUTTON when the post status is at the _final stage_\n\t * for a particular role (see https://wordpress.org/support/article/post-status/):\n\t *\n\t * - is published\n\t * - is scheduled to be published\n\t * - is pending and can't be published (but only for viewports >= medium).\n\t * \t Originally, we considered showing a button for pending posts that couldn't be published\n\t * \t (for example, for an author with the contributor role). Some languages can have\n\t * \t long translations for \"Submit for review\", so given the lack of UI real estate available\n\t * \t we decided to take into account the viewport in that case.\n\t * \t See: https://github.com/WordPress/gutenberg/issues/10475\n\t *\n\t * 2) Then, in small viewports, we'll show a TOGGLE.\n\t *\n\t * 3) Finally, we'll use the publish sidebar status to decide:\n\t *\n\t * - if it is enabled, we show a TOGGLE\n\t * - if it is disabled, we show a BUTTON\n\t */\n\tif (\n\t\tisPublished ||\n\t\t( isScheduled && isBeingScheduled ) ||\n\t\t( isPending && ! hasPublishAction && ! isSmallerThanMediumViewport )\n\t) {\n\t\tcomponent = IS_BUTTON;\n\t} else if ( isSmallerThanMediumViewport ) {\n\t\tcomponent = IS_TOGGLE;\n\t} else if ( isPublishSidebarEnabled ) {\n\t\tcomponent = IS_TOGGLE;\n\t} else {\n\t\tcomponent = IS_BUTTON;\n\t}\n\n\treturn (\n\t\t<PostPublishButton\n\t\t\tforceIsDirty={ forceIsDirty }\n\t\t\tforceIsSaving={ forceIsSaving }\n\t\t\tisOpen={ isPublishSidebarOpened }\n\t\t\tisToggle={ component === IS_TOGGLE }\n\t\t\tonToggle={ togglePublishSidebar }\n\t\t\tsetEntitiesSavedStatesCallback={ setEntitiesSavedStatesCallback }\n\t\t/>\n\t);\n}\n\nexport default compose(\n\twithSelect( ( select ) => ( {\n\t\thasPublishAction: get(\n\t\t\tselect( editorStore ).getCurrentPost(),\n\t\t\t[ '_links', 'wp:action-publish' ],\n\t\t\tfalse\n\t\t),\n\t\tisBeingScheduled: select( editorStore ).isEditedPostBeingScheduled(),\n\t\tisPending: select( editorStore ).isCurrentPostPending(),\n\t\tisPublished: select( editorStore ).isCurrentPostPublished(),\n\t\tisPublishSidebarEnabled:\n\t\t\tselect( editorStore ).isPublishSidebarEnabled(),\n\t\tisPublishSidebarOpened:\n\t\t\tselect( editPostStore ).isPublishSidebarOpened(),\n\t\tisScheduled: select( editorStore ).isCurrentPostScheduled(),\n\t} ) ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { togglePublishSidebar } = dispatch( editPostStore );\n\t\treturn {\n\t\t\ttogglePublishSidebar,\n\t\t};\n\t} )\n)( PostPublishButtonOrToggle );\n","/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Icon, MenuGroup } from '@wordpress/components';\nimport { PostPreviewButton, store as editorStore } from '@wordpress/editor';\nimport { external } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport { __experimentalPreviewOptions as PreviewOptions } from '@wordpress/block-editor';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nexport default function DevicePreview() {\n\tconst {\n\t\thasActiveMetaboxes,\n\t\tisPostSaveable,\n\t\tisSaving,\n\t\tisViewable,\n\t\tdeviceType,\n\t} = useSelect( ( select ) => {\n\t\tconst { getEditedPostAttribute } = select( editorStore );\n\t\tconst { getPostType } = select( coreStore );\n\t\tconst postType = getPostType( getEditedPostAttribute( 'type' ) );\n\n\t\treturn {\n\t\t\thasActiveMetaboxes: select( editPostStore ).hasMetaBoxes(),\n\t\t\tisSaving: select( editPostStore ).isSavingMetaBoxes(),\n\t\t\tisPostSaveable: select( editorStore ).isEditedPostSaveable(),\n\t\t\tisViewable: get( postType, [ 'viewable' ], false ),\n\t\t\tdeviceType:\n\t\t\t\tselect( editPostStore ).__experimentalGetPreviewDeviceType(),\n\t\t};\n\t}, [] );\n\tconst { __experimentalSetPreviewDeviceType: setPreviewDeviceType } =\n\t\tuseDispatch( editPostStore );\n\n\treturn (\n\t\t<PreviewOptions\n\t\t\tisEnabled={ isPostSaveable }\n\t\t\tclassName=\"edit-post-post-preview-dropdown\"\n\t\t\tdeviceType={ deviceType }\n\t\t\tsetDeviceType={ setPreviewDeviceType }\n\t\t>\n\t\t\t{ isViewable && (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<div className=\"edit-post-header-preview__grouping-external\">\n\t\t\t\t\t\t<PostPreviewButton\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t'edit-post-header-preview__button-external'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\t\tforceIsAutosaveable={ hasActiveMetaboxes }\n\t\t\t\t\t\t\tforcePreviewLink={ isSaving ? null : undefined }\n\t\t\t\t\t\t\ttextContent={\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{ __( 'Preview in new tab' ) }\n\t\t\t\t\t\t\t\t\t<Icon icon={ external } />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</PreviewOptions>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalUseSlot as useSlot,\n\tcreateSlotFill,\n} from '@wordpress/components';\n\nconst slotName = '__experimentalMainDashboardButton';\n\nconst { Fill, Slot: MainDashboardButtonSlot } = createSlotFill( slotName );\n\nconst MainDashboardButton = Fill;\n\nconst Slot = ( { children } ) => {\n\tconst slot = useSlot( slotName );\n\tconst hasFills = Boolean( slot.fills && slot.fills.length );\n\n\tif ( ! hasFills ) {\n\t\treturn children;\n\t}\n\n\treturn <MainDashboardButtonSlot bubblesVirtually />;\n};\n\nMainDashboardButton.Slot = Slot;\n\nexport default MainDashboardButton;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst chevronDown = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z\" />\n\t</SVG>\n);\n\nexport default chevronDown;\n","/**\n * External dependencies\n */\nimport { pickBy } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tMenuGroup,\n\tMenuItem,\n\t__experimentalConfirmDialog as ConfirmDialog,\n} from '@wordpress/components';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nexport default function DeleteTemplate() {\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst { setIsEditingTemplate } = useDispatch( editPostStore );\n\tconst { getEditorSettings } = useSelect( editorStore );\n\tconst { updateEditorSettings, editPost } = useDispatch( editorStore );\n\tconst { deleteEntityRecord } = useDispatch( coreStore );\n\tconst { template } = useSelect( ( select ) => {\n\t\tconst { isEditingTemplate, getEditedPostTemplate } =\n\t\t\tselect( editPostStore );\n\t\tconst _isEditing = isEditingTemplate();\n\t\treturn {\n\t\t\ttemplate: _isEditing ? getEditedPostTemplate() : null,\n\t\t};\n\t}, [] );\n\tconst [ showConfirmDialog, setShowConfirmDialog ] = useState( false );\n\n\tif ( ! template || ! template.wp_id ) {\n\t\treturn null;\n\t}\n\tlet templateTitle = template.slug;\n\tif ( template?.title ) {\n\t\ttemplateTitle = template.title;\n\t}\n\n\tconst isRevertable = template?.has_theme_file;\n\n\tconst onDelete = () => {\n\t\tclearSelectedBlock();\n\t\tsetIsEditingTemplate( false );\n\t\tsetShowConfirmDialog( false );\n\n\t\teditPost( {\n\t\t\ttemplate: '',\n\t\t} );\n\t\tconst settings = getEditorSettings();\n\t\tconst newAvailableTemplates = pickBy(\n\t\t\tsettings.availableTemplates,\n\t\t\t( _title, id ) => {\n\t\t\t\treturn id !== template.slug;\n\t\t\t}\n\t\t);\n\t\tupdateEditorSettings( {\n\t\t\t...settings,\n\t\t\tavailableTemplates: newAvailableTemplates,\n\t\t} );\n\t\tdeleteEntityRecord( 'postType', 'wp_template', template.id, {\n\t\t\tthrowOnError: true,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<MenuGroup className=\"edit-post-template-top-area__second-menu-group\">\n\t\t\t<>\n\t\t\t\t<MenuItem\n\t\t\t\t\tclassName=\"edit-post-template-top-area__delete-template-button\"\n\t\t\t\t\tisDestructive={ ! isRevertable }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tsetShowConfirmDialog( true );\n\t\t\t\t\t} }\n\t\t\t\t\tinfo={\n\t\t\t\t\t\tisRevertable\n\t\t\t\t\t\t\t? __( 'Use the template as supplied by the theme.' )\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ isRevertable\n\t\t\t\t\t\t? __( 'Clear customizations' )\n\t\t\t\t\t\t: __( 'Delete template' ) }\n\t\t\t\t</MenuItem>\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tisOpen={ showConfirmDialog }\n\t\t\t\t\tonConfirm={ onDelete }\n\t\t\t\t\tonCancel={ () => {\n\t\t\t\t\t\tsetShowConfirmDialog( false );\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %s: template name */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Are you sure you want to delete the %s template? It may be used by other pages or posts.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttemplateTitle\n\t\t\t\t\t) }\n\t\t\t\t</ConfirmDialog>\n\t\t\t</>\n\t\t</MenuGroup>\n\t);\n}\n","/**\n * External dependencies\n */\nimport { mapValues } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { TextControl } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nexport default function EditTemplateTitle() {\n\tconst [ forceEmpty, setForceEmpty ] = useState( false );\n\tconst { template } = useSelect( ( select ) => {\n\t\tconst { getEditedPostTemplate } = select( editPostStore );\n\t\treturn {\n\t\t\ttemplate: getEditedPostTemplate(),\n\t\t};\n\t}, [] );\n\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\tconst { getEditorSettings } = useSelect( editorStore );\n\tconst { updateEditorSettings } = useDispatch( editorStore );\n\n\t// Only user-created and non-default templates can change the name.\n\tif ( ! template.is_custom || template.has_theme_file ) {\n\t\treturn null;\n\t}\n\n\tlet templateTitle = __( 'Default' );\n\tif ( template?.title ) {\n\t\ttemplateTitle = template.title;\n\t} else if ( !! template ) {\n\t\ttemplateTitle = template.slug;\n\t}\n\n\treturn (\n\t\t<div className=\"edit-site-template-details__group\">\n\t\t\t<TextControl\n\t\t\t\tlabel={ __( 'Title' ) }\n\t\t\t\tvalue={ forceEmpty ? '' : templateTitle }\n\t\t\t\thelp={ __(\n\t\t\t\t\t'Give the template a title that indicates its purpose, e.g. \"Full Width\".'\n\t\t\t\t) }\n\t\t\t\tonChange={ ( newTitle ) => {\n\t\t\t\t\t// Allow having the field temporarily empty while typing.\n\t\t\t\t\tif ( ! newTitle && ! forceEmpty ) {\n\t\t\t\t\t\tsetForceEmpty( true );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsetForceEmpty( false );\n\n\t\t\t\t\tconst settings = getEditorSettings();\n\t\t\t\t\tconst newAvailableTemplates = mapValues(\n\t\t\t\t\t\tsettings.availableTemplates,\n\t\t\t\t\t\t( existingTitle, id ) => {\n\t\t\t\t\t\t\tif ( id !== template.slug ) {\n\t\t\t\t\t\t\t\treturn existingTitle;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn newTitle;\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\tupdateEditorSettings( {\n\t\t\t\t\t\t...settings,\n\t\t\t\t\t\tavailableTemplates: newAvailableTemplates,\n\t\t\t\t\t} );\n\t\t\t\t\teditEntityRecord( 'postType', 'wp_template', template.id, {\n\t\t\t\t\t\ttitle: newTitle,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tonBlur={ () => setForceEmpty( false ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nexport default function TemplateDescription() {\n\tconst { description, title } = useSelect( ( select ) => {\n\t\tconst { getEditedPostTemplate } = select( editPostStore );\n\t\treturn {\n\t\t\ttitle: getEditedPostTemplate().title,\n\t\t\tdescription: getEditedPostTemplate().description,\n\t\t};\n\t}, [] );\n\tif ( ! description ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"edit-site-template-details__group\">\n\t\t\t<Heading level={ 4 } weight={ 600 }>\n\t\t\t\t{ title }\n\t\t\t</Heading>\n\t\t\t<Text\n\t\t\t\tclassName=\"edit-post-template-details__description\"\n\t\t\t\tsize=\"body\"\n\t\t\t\tas=\"p\"\n\t\t\t\tstyle={ { marginTop: '12px' } }\n\t\t\t>\n\t\t\t\t{ description }\n\t\t\t</Text>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tDropdown,\n\tButton,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { chevronDown } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as editorStore } from '@wordpress/editor';\nimport DeleteTemplate from './delete-template';\nimport EditTemplateTitle from './edit-template-title';\nimport TemplateDescription from './template-description';\n\nfunction TemplateTitle() {\n\tconst { template, isEditing, title } = useSelect( ( select ) => {\n\t\tconst { isEditingTemplate, getEditedPostTemplate } =\n\t\t\tselect( editPostStore );\n\t\tconst { getEditedPostAttribute } = select( editorStore );\n\n\t\tconst _isEditing = isEditingTemplate();\n\n\t\treturn {\n\t\t\ttemplate: _isEditing ? getEditedPostTemplate() : null,\n\t\t\tisEditing: _isEditing,\n\t\t\ttitle: getEditedPostAttribute( 'title' )\n\t\t\t\t? getEditedPostAttribute( 'title' )\n\t\t\t\t: __( 'Untitled' ),\n\t\t};\n\t}, [] );\n\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst { setIsEditingTemplate } = useDispatch( editPostStore );\n\n\tif ( ! isEditing || ! template ) {\n\t\treturn null;\n\t}\n\n\tlet templateTitle = __( 'Default' );\n\tif ( template?.title ) {\n\t\ttemplateTitle = template.title;\n\t} else if ( !! template ) {\n\t\ttemplateTitle = template.slug;\n\t}\n\n\tconst hasOptions = !! (\n\t\ttemplate.custom ||\n\t\ttemplate.wp_id ||\n\t\ttemplate.description\n\t);\n\n\treturn (\n\t\t<div className=\"edit-post-template-top-area\">\n\t\t\t<Button\n\t\t\t\tclassName=\"edit-post-template-post-title\"\n\t\t\t\tisLink\n\t\t\t\tshowTooltip\n\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t/* translators: %s: Title of the referring post, e.g: \"Hello World!\" */\n\t\t\t\t\t__( 'Edit %s' ),\n\t\t\t\t\ttitle\n\t\t\t\t) }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\tsetIsEditingTemplate( false );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ title }\n\t\t\t</Button>\n\t\t\t{ hasOptions ? (\n\t\t\t\t<Dropdown\n\t\t\t\t\tposition=\"bottom center\"\n\t\t\t\t\tcontentClassName=\"edit-post-template-top-area__popover\"\n\t\t\t\t\trenderToggle={ ( { onToggle } ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"edit-post-template-title\"\n\t\t\t\t\t\t\tisLink\n\t\t\t\t\t\t\ticon={ chevronDown }\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\tlabel={ __( 'Template Options' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ templateTitle }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t\trenderContent={ () => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<EditTemplateTitle />\n\t\t\t\t\t\t\t<TemplateDescription />\n\t\t\t\t\t\t\t<DeleteTemplate />\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<Text\n\t\t\t\t\tclassName=\"edit-post-template-title\"\n\t\t\t\t\tsize=\"body\"\n\t\t\t\t\tstyle={ { lineHeight: '24px' } }\n\t\t\t\t>\n\t\t\t\t\t{ templateTitle }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default TemplateTitle;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { PostSavedState, PostPreviewButton } from '@wordpress/editor';\nimport { useSelect } from '@wordpress/data';\nimport { PinnedItems } from '@wordpress/interface';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport FullscreenModeClose from './fullscreen-mode-close';\nimport HeaderToolbar from './header-toolbar';\nimport MoreMenu from './more-menu';\nimport PostPublishButtonOrToggle from './post-publish-button-or-toggle';\nimport { default as DevicePreview } from '../device-preview';\nimport MainDashboardButton from './main-dashboard-button';\nimport { store as editPostStore } from '../../store';\nimport TemplateTitle from './template-title';\n\nfunction Header( { setEntitiesSavedStatesCallback } ) {\n\tconst {\n\t\thasActiveMetaboxes,\n\t\tisPublishSidebarOpened,\n\t\tisSaving,\n\t\tshowIconLabels,\n\t\thasReducedUI,\n\t} = useSelect(\n\t\t( select ) => ( {\n\t\t\thasActiveMetaboxes: select( editPostStore ).hasMetaBoxes(),\n\t\t\tisPublishSidebarOpened:\n\t\t\t\tselect( editPostStore ).isPublishSidebarOpened(),\n\t\t\tisSaving: select( editPostStore ).isSavingMetaBoxes(),\n\t\t\tshowIconLabels:\n\t\t\t\tselect( editPostStore ).isFeatureActive( 'showIconLabels' ),\n\t\t\thasReducedUI:\n\t\t\t\tselect( editPostStore ).isFeatureActive( 'reducedUI' ),\n\t\t} ),\n\t\t[]\n\t);\n\n\tconst isLargeViewport = useViewportMatch( 'large' );\n\n\tconst classes = classnames( 'edit-post-header', {\n\t\t'has-reduced-ui': hasReducedUI,\n\t} );\n\n\treturn (\n\t\t<div className={ classes }>\n\t\t\t<MainDashboardButton.Slot>\n\t\t\t\t<FullscreenModeClose showTooltip />\n\t\t\t</MainDashboardButton.Slot>\n\t\t\t<div className=\"edit-post-header__toolbar\">\n\t\t\t\t<HeaderToolbar />\n\t\t\t\t<TemplateTitle />\n\t\t\t</div>\n\t\t\t<div className=\"edit-post-header__settings\">\n\t\t\t\t{ ! isPublishSidebarOpened && (\n\t\t\t\t\t// This button isn't completely hidden by the publish sidebar.\n\t\t\t\t\t// We can't hide the whole toolbar when the publish sidebar is open because\n\t\t\t\t\t// we want to prevent mounting/unmounting the PostPublishButtonOrToggle DOM node.\n\t\t\t\t\t// We track that DOM node to return focus to the PostPublishButtonOrToggle\n\t\t\t\t\t// when the publish sidebar has been closed.\n\t\t\t\t\t<PostSavedState\n\t\t\t\t\t\tforceIsDirty={ hasActiveMetaboxes }\n\t\t\t\t\t\tforceIsSaving={ isSaving }\n\t\t\t\t\t\tshowIconLabels={ showIconLabels }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<DevicePreview />\n\t\t\t\t<PostPreviewButton\n\t\t\t\t\tforceIsAutosaveable={ hasActiveMetaboxes }\n\t\t\t\t\tforcePreviewLink={ isSaving ? null : undefined }\n\t\t\t\t/>\n\t\t\t\t<PostPublishButtonOrToggle\n\t\t\t\t\tforceIsDirty={ hasActiveMetaboxes }\n\t\t\t\t\tforceIsSaving={ isSaving }\n\t\t\t\t\tsetEntitiesSavedStatesCallback={\n\t\t\t\t\t\tsetEntitiesSavedStatesCallback\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t{ ( isLargeViewport || ! showIconLabels ) && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PinnedItems.Slot scope=\"core/edit-post\" />\n\t\t\t\t\t\t<MoreMenu showIconLabels={ showIconLabels } />\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t{ showIconLabels && ! isLargeViewport && (\n\t\t\t\t\t<MoreMenu showIconLabels={ showIconLabels } />\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default Header;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst close = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z\" />\n\t</SVG>\n);\n\nexport default close;\n","/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { Button, VisuallyHidden } from '@wordpress/components';\nimport { __experimentalLibrary as Library } from '@wordpress/block-editor';\nimport { close } from '@wordpress/icons';\nimport {\n\tuseViewportMatch,\n\t__experimentalUseDialog as useDialog,\n} from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nexport default function InserterSidebar() {\n\tconst { insertionPoint, showMostUsedBlocks } = useSelect( ( select ) => {\n\t\tconst { isFeatureActive, __experimentalGetInsertionPoint } =\n\t\t\tselect( editPostStore );\n\t\treturn {\n\t\t\tinsertionPoint: __experimentalGetInsertionPoint(),\n\t\t\tshowMostUsedBlocks: isFeatureActive( 'mostUsedBlocks' ),\n\t\t};\n\t}, [] );\n\tconst { setIsInserterOpened } = useDispatch( editPostStore );\n\n\tconst isMobileViewport = useViewportMatch( 'medium', '<' );\n\tconst TagName = ! isMobileViewport ? VisuallyHidden : 'div';\n\tconst [ inserterDialogRef, inserterDialogProps ] = useDialog( {\n\t\tonClose: () => setIsInserterOpened( false ),\n\t\tfocusOnMount: null,\n\t} );\n\n\tconst libraryRef = useRef();\n\tuseEffect( () => {\n\t\tlibraryRef.current.focusSearch();\n\t}, [] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ inserterDialogRef }\n\t\t\t{ ...inserterDialogProps }\n\t\t\tclassName=\"edit-post-editor__inserter-panel\"\n\t\t>\n\t\t\t<TagName className=\"edit-post-editor__inserter-panel-header\">\n\t\t\t\t<Button\n\t\t\t\t\ticon={ close }\n\t\t\t\t\tlabel={ __( 'Close block inserter' ) }\n\t\t\t\t\tonClick={ () => setIsInserterOpened( false ) }\n\t\t\t\t/>\n\t\t\t</TagName>\n\t\t\t<div className=\"edit-post-editor__inserter-panel-content\">\n\t\t\t\t<Library\n\t\t\t\t\tshowMostUsedBlocks={ showMostUsedBlocks }\n\t\t\t\t\tshowInserterHelpPanel\n\t\t\t\t\tshouldFocusBlock={ isMobileViewport }\n\t\t\t\t\trootClientId={ insertionPoint.rootClientId }\n\t\t\t\t\t__experimentalInsertionIndex={\n\t\t\t\t\t\tinsertionPoint.insertionIndex\n\t\t\t\t\t}\n\t\t\t\t\t__experimentalFilterValue={ insertionPoint.filterValue }\n\t\t\t\t\tref={ libraryRef }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { __experimentalListView as ListView } from '@wordpress/block-editor';\nimport { Button } from '@wordpress/components';\nimport {\n\tuseFocusOnMount,\n\tuseFocusReturn,\n\tuseInstanceId,\n\tuseMergeRefs,\n} from '@wordpress/compose';\nimport { useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { closeSmall } from '@wordpress/icons';\nimport { ESCAPE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nexport default function ListViewSidebar() {\n\tconst { setIsListViewOpened } = useDispatch( editPostStore );\n\n\tconst focusOnMountRef = useFocusOnMount( 'firstElement' );\n\tconst headerFocusReturnRef = useFocusReturn();\n\tconst contentFocusReturnRef = useFocusReturn();\n\tfunction closeOnEscape( event ) {\n\t\tif ( event.keyCode === ESCAPE && ! event.defaultPrevented ) {\n\t\t\tevent.preventDefault();\n\t\t\tsetIsListViewOpened( false );\n\t\t}\n\t}\n\n\tconst instanceId = useInstanceId( ListViewSidebar );\n\tconst labelId = `edit-post-editor__list-view-panel-label-${ instanceId }`;\n\n\treturn (\n\t\t// eslint-disable-next-line jsx-a11y/no-static-element-interactions\n\t\t<div\n\t\t\taria-labelledby={ labelId }\n\t\t\tclassName=\"edit-post-editor__list-view-panel\"\n\t\t\tonKeyDown={ closeOnEscape }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"edit-post-editor__list-view-panel-header\"\n\t\t\t\tref={ headerFocusReturnRef }\n\t\t\t>\n\t\t\t\t<strong id={ labelId }>{ __( 'List View' ) }</strong>\n\t\t\t\t<Button\n\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\tlabel={ __( 'Close List View Sidebar' ) }\n\t\t\t\t\tonClick={ () => setIsListViewOpened( false ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclassName=\"edit-post-editor__list-view-panel-content\"\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tcontentFocusReturnRef,\n\t\t\t\t\tfocusOnMountRef,\n\t\t\t\t] ) }\n\t\t\t>\n\t\t\t\t<ListView />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst cog = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\td=\"M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z\"\n\t\t\tclipRule=\"evenodd\"\n\t\t/>\n\t</SVG>\n);\n\nexport default cog;\n","/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nconst SettingsHeader = ( { sidebarName } ) => {\n\tconst { openGeneralSidebar } = useDispatch( editPostStore );\n\tconst openDocumentSettings = () =>\n\t\topenGeneralSidebar( 'edit-post/document' );\n\tconst openBlockSettings = () => openGeneralSidebar( 'edit-post/block' );\n\n\tconst { documentLabel, isTemplateMode } = useSelect( ( select ) => {\n\t\tconst postTypeLabel = select( editorStore ).getPostTypeLabel();\n\n\t\treturn {\n\t\t\t// translators: Default label for the Document sidebar tab, not selected.\n\t\t\tdocumentLabel: postTypeLabel || _x( 'Document', 'noun' ),\n\t\t\tisTemplateMode: select( editPostStore ).isEditingTemplate(),\n\t\t};\n\t}, [] );\n\n\tconst [ documentAriaLabel, documentActiveClass ] =\n\t\tsidebarName === 'edit-post/document'\n\t\t\t? // translators: ARIA label for the Document sidebar tab, selected. %s: Document label.\n\t\t\t [ sprintf( __( '%s (selected)' ), documentLabel ), 'is-active' ]\n\t\t\t: [ documentLabel, '' ];\n\n\tconst [ blockAriaLabel, blockActiveClass ] =\n\t\tsidebarName === 'edit-post/block'\n\t\t\t? // translators: ARIA label for the Block Settings Sidebar tab, selected.\n\t\t\t [ __( 'Block (selected)' ), 'is-active' ]\n\t\t\t: // translators: ARIA label for the Block Settings Sidebar tab, not selected.\n\t\t\t [ __( 'Block' ), '' ];\n\n\tconst [ templateAriaLabel, templateActiveClass ] =\n\t\tsidebarName === 'edit-post/document'\n\t\t\t? [ __( 'Template (selected)' ), 'is-active' ]\n\t\t\t: [ __( 'Template' ), '' ];\n\n\t/* Use a list so screen readers will announce how many tabs there are. */\n\treturn (\n\t\t<ul>\n\t\t\t{ ! isTemplateMode && (\n\t\t\t\t<li>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ openDocumentSettings }\n\t\t\t\t\t\tclassName={ `edit-post-sidebar__panel-tab ${ documentActiveClass }` }\n\t\t\t\t\t\taria-label={ documentAriaLabel }\n\t\t\t\t\t\tdata-label={ documentLabel }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ documentLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</li>\n\t\t\t) }\n\t\t\t{ isTemplateMode && (\n\t\t\t\t<li>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ openDocumentSettings }\n\t\t\t\t\t\tclassName={ `edit-post-sidebar__panel-tab ${ templateActiveClass }` }\n\t\t\t\t\t\taria-label={ templateAriaLabel }\n\t\t\t\t\t\tdata-label={ __( 'Template' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Template' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</li>\n\t\t\t) }\n\t\t\t<li>\n\t\t\t\t<Button\n\t\t\t\t\tonClick={ openBlockSettings }\n\t\t\t\t\tclassName={ `edit-post-sidebar__panel-tab ${ blockActiveClass }` }\n\t\t\t\t\taria-label={ blockAriaLabel }\n\t\t\t\t\t// translators: Data label for the Block Settings Sidebar tab.\n\t\t\t\t\tdata-label={ __( 'Block' ) }\n\t\t\t\t>\n\t\t\t\t\t{\n\t\t\t\t\t\t// translators: Text label for the Block Settings Sidebar tab.\n\t\t\t\t\t\t__( 'Block' )\n\t\t\t\t\t}\n\t\t\t\t</Button>\n\t\t\t</li>\n\t\t</ul>\n\t);\n};\n\nexport default SettingsHeader;\n","/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { PanelRow, Dropdown, Button } from '@wordpress/components';\nimport {\n\tPostVisibility as PostVisibilityForm,\n\tPostVisibilityLabel,\n\tPostVisibilityCheck,\n\tusePostVisibilityLabel,\n} from '@wordpress/editor';\nimport { useRef } from '@wordpress/element';\n\nexport function PostVisibility() {\n\tconst rowRef = useRef();\n\treturn (\n\t\t<PostVisibilityCheck\n\t\t\trender={ ( { canEdit } ) => (\n\t\t\t\t<PanelRow ref={ rowRef } className=\"edit-post-post-visibility\">\n\t\t\t\t\t<span>{ __( 'Visibility' ) }</span>\n\t\t\t\t\t{ ! canEdit && (\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<PostVisibilityLabel />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t\t{ canEdit && (\n\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\tposition=\"bottom left\"\n\t\t\t\t\t\t\tcontentClassName=\"edit-post-post-visibility__dialog\"\n\t\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\t\t// Anchor the popover to the middle of the\n\t\t\t\t\t\t\t\t// entire row so that it doesn't move around\n\t\t\t\t\t\t\t\t// when the label changes.\n\t\t\t\t\t\t\t\tanchorRef: rowRef.current,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tfocusOnMount\n\t\t\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t\t\t<PostVisibilityToggle\n\t\t\t\t\t\t\t\t\tisOpen={ isOpen }\n\t\t\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t\t\t<PostVisibilityForm onClose={ onClose } />\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</PanelRow>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction PostVisibilityToggle( { isOpen, onClick } ) {\n\tconst label = usePostVisibilityLabel();\n\treturn (\n\t\t<Button\n\t\t\tclassName=\"edit-post-post-visibility__toggle\"\n\t\t\tvariant=\"tertiary\"\n\t\t\taria-expanded={ isOpen }\n\t\t\t// translators: %s: Current post visibility.\n\t\t\taria-label={ sprintf( __( 'Select visibility: %s' ), label ) }\n\t\t\tonClick={ onClick }\n\t\t>\n\t\t\t{ label }\n\t\t</Button>\n\t);\n}\n\nexport default PostVisibility;\n","/**\n * WordPress dependencies\n */\nimport { PanelRow } from '@wordpress/components';\nimport { PostTrash as PostTrashLink, PostTrashCheck } from '@wordpress/editor';\n\nexport default function PostTrash() {\n\treturn (\n\t\t<PostTrashCheck>\n\t\t\t<PanelRow>\n\t\t\t\t<PostTrashLink />\n\t\t\t</PanelRow>\n\t\t</PostTrashCheck>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { PanelRow, Dropdown, Button } from '@wordpress/components';\nimport { useRef } from '@wordpress/element';\nimport {\n\tPostSchedule as PostScheduleForm,\n\tPostScheduleCheck,\n\tusePostScheduleLabel,\n} from '@wordpress/editor';\n\nexport default function PostSchedule() {\n\tconst anchorRef = useRef();\n\treturn (\n\t\t<PostScheduleCheck>\n\t\t\t<PanelRow className=\"edit-post-post-schedule\" ref={ anchorRef }>\n\t\t\t\t<span>{ __( 'Publish' ) }</span>\n\t\t\t\t<Dropdown\n\t\t\t\t\tpopoverProps={ { anchorRef } }\n\t\t\t\t\tposition=\"bottom left\"\n\t\t\t\t\tcontentClassName=\"edit-post-post-schedule__dialog\"\n\t\t\t\t\tfocusOnMount\n\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t<PostScheduleToggle\n\t\t\t\t\t\t\tisOpen={ isOpen }\n\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t<PostScheduleForm onClose={ onClose } />\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</PanelRow>\n\t\t</PostScheduleCheck>\n\t);\n}\n\nfunction PostScheduleToggle( { isOpen, onClick } ) {\n\tconst label = usePostScheduleLabel();\n\tconst fullLabel = usePostScheduleLabel( { full: true } );\n\treturn (\n\t\t<Button\n\t\t\tclassName=\"edit-post-post-schedule__toggle\"\n\t\t\tvariant=\"tertiary\"\n\t\t\tlabel={ fullLabel }\n\t\t\tshowTooltip\n\t\t\taria-expanded={ isOpen }\n\t\t\t// translators: %s: Current post date.\n\t\t\taria-label={ sprintf( __( 'Change date: %s' ), label ) }\n\t\t\tonClick={ onClick }\n\t\t>\n\t\t\t{ label }\n\t\t</Button>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { PanelRow } from '@wordpress/components';\nimport {\n\tPostSticky as PostStickyForm,\n\tPostStickyCheck,\n} from '@wordpress/editor';\n\nexport function PostSticky() {\n\treturn (\n\t\t<PostStickyCheck>\n\t\t\t<PanelRow>\n\t\t\t\t<PostStickyForm />\n\t\t\t</PanelRow>\n\t\t</PostStickyCheck>\n\t);\n}\n\nexport default PostSticky;\n","/**\n * WordPress dependencies\n */\nimport { PanelRow } from '@wordpress/components';\nimport {\n\tPostAuthor as PostAuthorForm,\n\tPostAuthorCheck,\n} from '@wordpress/editor';\n\nexport function PostAuthor() {\n\treturn (\n\t\t<PostAuthorCheck>\n\t\t\t<PanelRow className=\"edit-post-post-author\">\n\t\t\t\t<PostAuthorForm />\n\t\t\t</PanelRow>\n\t\t</PostAuthorCheck>\n\t);\n}\n\nexport default PostAuthor;\n","/**\n * WordPress dependencies\n */\nimport { PanelRow } from '@wordpress/components';\nimport { PostSlug as PostSlugForm, PostSlugCheck } from '@wordpress/editor';\n\nexport function PostSlug() {\n\treturn (\n\t\t<PostSlugCheck>\n\t\t\t<PanelRow className=\"edit-post-post-slug\">\n\t\t\t\t<PostSlugForm />\n\t\t\t</PanelRow>\n\t\t</PostSlugCheck>\n\t);\n}\n\nexport default PostSlug;\n","/**\n * WordPress dependencies\n */\nimport { PanelRow } from '@wordpress/components';\nimport {\n\tPostFormat as PostFormatForm,\n\tPostFormatCheck,\n} from '@wordpress/editor';\n\nexport function PostFormat() {\n\treturn (\n\t\t<PostFormatCheck>\n\t\t\t<PanelRow className=\"edit-post-post-format\">\n\t\t\t\t<PostFormatForm />\n\t\t\t</PanelRow>\n\t\t</PostFormatCheck>\n\t);\n}\n\nexport default PostFormat;\n","/**\n * WordPress dependencies\n */\nimport { PanelRow } from '@wordpress/components';\nimport {\n\tPostPendingStatus as PostPendingStatusForm,\n\tPostPendingStatusCheck,\n} from '@wordpress/editor';\n\nexport function PostPendingStatus() {\n\treturn (\n\t\t<PostPendingStatusCheck>\n\t\t\t<PanelRow>\n\t\t\t\t<PostPendingStatusForm />\n\t\t\t</PanelRow>\n\t\t</PostPendingStatusCheck>\n\t);\n}\n\nexport default PostPendingStatus;\n","/**\n * Defines as extensibility slot for the Summary panel.\n */\n\n/**\n * WordPress dependencies\n */\nimport { createSlotFill, PanelRow } from '@wordpress/components';\n\nexport const { Fill, Slot } = createSlotFill( 'PluginPostStatusInfo' );\n\n/**\n * Renders a row in the Summary panel of the Document sidebar.\n * It should be noted that this is named and implemented around the function it serves\n * and not its location, which may change in future iterations.\n *\n * @param {Object} props Component properties.\n * @param {string} [props.className] An optional class name added to the row.\n * @param {WPElement} props.children Children to be rendered.\n *\n * @example\n * ```js\n * // Using ES5 syntax\n * var __ = wp.i18n.__;\n * var PluginPostStatusInfo = wp.editPost.PluginPostStatusInfo;\n *\n * function MyPluginPostStatusInfo() {\n * \treturn wp.element.createElement(\n * \t\tPluginPostStatusInfo,\n * \t\t{\n * \t\t\tclassName: 'my-plugin-post-status-info',\n * \t\t},\n * \t\t__( 'My post status info' )\n * \t)\n * }\n * ```\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { __ } from '@wordpress/i18n';\n * import { PluginPostStatusInfo } from '@wordpress/edit-post';\n *\n * const MyPluginPostStatusInfo = () => (\n * \t<PluginPostStatusInfo\n * \t\tclassName=\"my-plugin-post-status-info\"\n * \t>\n * \t\t{ __( 'My post status info' ) }\n * \t</PluginPostStatusInfo>\n * );\n * ```\n *\n * @return {WPComponent} The component to be rendered.\n */\nconst PluginPostStatusInfo = ( { children, className } ) => (\n\t<Fill>\n\t\t<PanelRow className={ className }>{ children }</PanelRow>\n\t</Fill>\n);\n\nPluginPostStatusInfo.Slot = Slot;\n\nexport default PluginPostStatusInfo;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst addTemplate = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M18.5 5.5V8H20V5.5H22.5V4H20V1.5H18.5V4H16V5.5H18.5ZM13.9624 4H6C4.89543 4 4 4.89543 4 6V18C4 19.1046 4.89543 20 6 20H18C19.1046 20 20 19.1046 20 18V10.0391H18.5V18C18.5 18.2761 18.2761 18.5 18 18.5H10L10 10.4917L16.4589 10.5139L16.4641 9.01389L5.5 8.97618V6C5.5 5.72386 5.72386 5.5 6 5.5H13.9624V4ZM5.5 10.4762V18C5.5 18.2761 5.72386 18.5 6 18.5H8.5L8.5 10.4865L5.5 10.4762Z\"\n\t\t/>\n\t</SVG>\n);\n\nexport default addTemplate;\n","/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { useState } from '@wordpress/element';\nimport { serialize, createBlock } from '@wordpress/blocks';\nimport {\n\tModal,\n\tFlex,\n\tFlexItem,\n\tTextControl,\n\tButton,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { cleanForSlug } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nconst DEFAULT_TITLE = __( 'Custom Template' );\n\nexport default function PostTemplateCreateModal( { onClose } ) {\n\tconst defaultBlockTemplate = useSelect(\n\t\t( select ) =>\n\t\t\tselect( editorStore ).getEditorSettings().defaultBlockTemplate,\n\t\t[]\n\t);\n\n\tconst { __unstableCreateTemplate, __unstableSwitchToTemplateMode } =\n\t\tuseDispatch( editPostStore );\n\n\tconst [ title, setTitle ] = useState( '' );\n\n\tconst [ isBusy, setIsBusy ] = useState( false );\n\n\tconst cancel = () => {\n\t\tsetTitle( '' );\n\t\tonClose();\n\t};\n\n\tconst submit = async ( event ) => {\n\t\tevent.preventDefault();\n\n\t\tif ( isBusy ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetIsBusy( true );\n\n\t\tconst newTemplateContent =\n\t\t\tdefaultBlockTemplate ??\n\t\t\tserialize( [\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/group',\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: 'header',\n\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t},\n\t\t\t\t\t[\n\t\t\t\t\t\tcreateBlock( 'core/site-title' ),\n\t\t\t\t\t\tcreateBlock( 'core/site-tagline' ),\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t\t\tcreateBlock( 'core/separator' ),\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/group',\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: 'main',\n\t\t\t\t\t},\n\t\t\t\t\t[\n\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t'core/group',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t[ createBlock( 'core/post-title' ) ]\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcreateBlock( 'core/post-content', {\n\t\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t\t} ),\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t\t] );\n\n\t\tawait __unstableCreateTemplate( {\n\t\t\tslug: cleanForSlug( title || DEFAULT_TITLE ),\n\t\t\tcontent: newTemplateContent,\n\t\t\ttitle: title || DEFAULT_TITLE,\n\t\t} );\n\n\t\tsetIsBusy( false );\n\t\tcancel();\n\n\t\t__unstableSwitchToTemplateMode( true );\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Create custom template' ) }\n\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\tonRequestClose={ cancel }\n\t\t\tclassName=\"edit-post-post-template__create-modal\"\n\t\t>\n\t\t\t<form\n\t\t\t\tclassName=\"edit-post-post-template__create-form\"\n\t\t\t\tonSubmit={ submit }\n\t\t\t>\n\t\t\t\t<Flex align=\"flex-start\" gap={ 8 }>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t\tplaceholder={ DEFAULT_TITLE }\n\t\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Describe the template, e.g. \"Post with sidebar\". Custom templates can be applied to any post or page.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\n\t\t\t\t<Flex justify=\"flex-end\" expanded={ false }>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button variant=\"tertiary\" onClick={ cancel }>\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\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\t\taria-disabled={ isBusy }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Create' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useState, useMemo } from '@wordpress/element';\nimport { __experimentalInspectorPopoverHeader as InspectorPopoverHeader } from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { addTemplate } from '@wordpress/icons';\nimport { Notice, SelectControl, Button } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\nimport PostTemplateCreateModal from './create-modal';\n\nexport default function PostTemplateForm( { onClose } ) {\n\tconst {\n\t\tisPostsPage,\n\t\tavailableTemplates,\n\t\tfetchedTemplates,\n\t\tselectedTemplateSlug,\n\t\tcanCreate,\n\t\tcanEdit,\n\t} = useSelect( ( select ) => {\n\t\tconst { canUser, getEntityRecord, getEntityRecords } =\n\t\t\tselect( coreStore );\n\t\tconst editorSettings = select( editorStore ).getEditorSettings();\n\t\tconst siteSettings = canUser( 'read', 'settings' )\n\t\t\t? getEntityRecord( 'root', 'site' )\n\t\t\t: undefined;\n\t\tconst _isPostsPage =\n\t\t\tselect( editorStore ).getCurrentPostId() ===\n\t\t\tsiteSettings?.page_for_posts;\n\t\tconst canCreateTemplates = canUser( 'create', 'templates' );\n\n\t\treturn {\n\t\t\tisPostsPage: _isPostsPage,\n\t\t\tavailableTemplates: editorSettings.availableTemplates,\n\t\t\tfetchedTemplates: canCreateTemplates\n\t\t\t\t? getEntityRecords( 'postType', 'wp_template', {\n\t\t\t\t\t\tpost_type: select( editorStore ).getCurrentPostType(),\n\t\t\t\t\t\tper_page: -1,\n\t\t\t\t } )\n\t\t\t\t: undefined,\n\t\t\tselectedTemplateSlug:\n\t\t\t\tselect( editorStore ).getEditedPostAttribute( 'template' ),\n\t\t\tcanCreate:\n\t\t\t\tcanCreateTemplates &&\n\t\t\t\t! _isPostsPage &&\n\t\t\t\teditorSettings.supportsTemplateMode,\n\t\t\tcanEdit:\n\t\t\t\tcanCreateTemplates &&\n\t\t\t\teditorSettings.supportsTemplateMode &&\n\t\t\t\t!! select( editPostStore ).getEditedPostTemplate(),\n\t\t};\n\t}, [] );\n\n\tconst options = useMemo(\n\t\t() =>\n\t\t\tObject.entries( {\n\t\t\t\t...availableTemplates,\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\t( fetchedTemplates ?? [] ).map( ( { slug, title } ) => [\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\ttitle.rendered,\n\t\t\t\t\t] )\n\t\t\t\t),\n\t\t\t} ).map( ( [ slug, title ] ) => ( { value: slug, label: title } ) ),\n\t\t[ availableTemplates, fetchedTemplates ]\n\t);\n\n\tconst selectedOption =\n\t\toptions.find( ( option ) => option.value === selectedTemplateSlug ) ??\n\t\toptions.find( ( option ) => ! option.value ); // The default option has '' value.\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { __unstableSwitchToTemplateMode } = useDispatch( editPostStore );\n\n\tconst [ isCreateModalOpen, setIsCreateModalOpen ] = useState( false );\n\n\treturn (\n\t\t<div className=\"edit-post-post-template__form\">\n\t\t\t<InspectorPopoverHeader\n\t\t\t\ttitle={ __( 'Template' ) }\n\t\t\t\thelp={ __(\n\t\t\t\t\t'Templates define the way content is displayed when viewing your site.'\n\t\t\t\t) }\n\t\t\t\tactions={\n\t\t\t\t\tcanCreate\n\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ticon: addTemplate,\n\t\t\t\t\t\t\t\t\tlabel: __( 'Add template' ),\n\t\t\t\t\t\t\t\t\tonClick: () => setIsCreateModalOpen( true ),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t ]\n\t\t\t\t\t\t: []\n\t\t\t\t}\n\t\t\t\tonClose={ onClose }\n\t\t\t/>\n\t\t\t{ isPostsPage ? (\n\t\t\t\t<Notice\n\t\t\t\t\tclassName=\"edit-post-post-template__notice\"\n\t\t\t\t\tstatus=\"warning\"\n\t\t\t\t\tisDismissible={ false }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'The posts page template cannot be changed.' ) }\n\t\t\t\t</Notice>\n\t\t\t) : (\n\t\t\t\t<SelectControl\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t\tlabel={ __( 'Template' ) }\n\t\t\t\t\tvalue={ selectedOption?.value ?? '' }\n\t\t\t\t\toptions={ options }\n\t\t\t\t\tonChange={ ( slug ) =>\n\t\t\t\t\t\teditPost( { template: slug || '' } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ canEdit && (\n\t\t\t\t<p>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\tonClick={ () => __unstableSwitchToTemplateMode() }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Edit template' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</p>\n\t\t\t) }\n\t\t\t{ isCreateModalOpen && (\n\t\t\t\t<PostTemplateCreateModal\n\t\t\t\t\tonClose={ () => setIsCreateModalOpen( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { PanelRow, Dropdown, Button } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport PostTemplateForm from './form';\nimport { store as editPostStore } from '../../../store';\n\nexport default function PostTemplate() {\n\tconst anchorRef = useRef();\n\n\tconst isVisible = useSelect( ( select ) => {\n\t\tconst postTypeSlug = select( editorStore ).getCurrentPostType();\n\t\tconst postType = select( coreStore ).getPostType( postTypeSlug );\n\t\tif ( ! postType?.viewable ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst settings = select( editorStore ).getEditorSettings();\n\t\tconst hasTemplates =\n\t\t\t!! settings.availableTemplates &&\n\t\t\tObject.keys( settings.availableTemplates ).length > 0;\n\t\tif ( hasTemplates ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( ! settings.supportsTemplateMode ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst canCreateTemplates =\n\t\t\tselect( coreStore ).canUser( 'create', 'templates' ) ?? false;\n\t\treturn canCreateTemplates;\n\t}, [] );\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelRow className=\"edit-post-post-template\" ref={ anchorRef }>\n\t\t\t<span>{ __( 'Template' ) }</span>\n\t\t\t<Dropdown\n\t\t\t\tpopoverProps={ { anchorRef } }\n\t\t\t\tposition=\"bottom left\"\n\t\t\t\tclassName=\"edit-post-post-template__dropdown\"\n\t\t\t\tcontentClassName=\"edit-post-post-template__dialog\"\n\t\t\t\tfocusOnMount\n\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t<PostTemplateToggle\n\t\t\t\t\t\tisOpen={ isOpen }\n\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t<PostTemplateForm onClose={ onClose } />\n\t\t\t\t) }\n\t\t\t/>\n\t\t</PanelRow>\n\t);\n}\n\nfunction PostTemplateToggle( { isOpen, onClick } ) {\n\tconst templateTitle = useSelect( ( select ) => {\n\t\tconst templateSlug =\n\t\t\tselect( editorStore ).getEditedPostAttribute( 'template' );\n\n\t\tconst { supportsTemplateMode, availableTemplates } =\n\t\t\tselect( editorStore ).getEditorSettings();\n\t\tif ( ! supportsTemplateMode && availableTemplates[ templateSlug ] ) {\n\t\t\treturn availableTemplates[ templateSlug ];\n\t\t}\n\n\t\tconst template = select( editPostStore ).getEditedPostTemplate();\n\t\treturn template?.title ?? template?.slug;\n\t}, [] );\n\n\treturn (\n\t\t<Button\n\t\t\tclassName=\"edit-post-post-template__toggle\"\n\t\t\tvariant=\"tertiary\"\n\t\t\taria-expanded={ isOpen }\n\t\t\taria-label={\n\t\t\t\ttemplateTitle\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the currently selected template.\n\t\t\t\t\t\t\t__( 'Select template: %s' ),\n\t\t\t\t\t\t\ttemplateTitle\n\t\t\t\t\t )\n\t\t\t\t\t: __( 'Select template' )\n\t\t\t}\n\t\t\tonClick={ onClick }\n\t\t>\n\t\t\t{ templateTitle ?? __( 'Default template' ) }\n\t\t</Button>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { PanelRow, Dropdown, Button } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tPostURLCheck,\n\tPostURL as PostURLForm,\n\tusePostURLLabel,\n} from '@wordpress/editor';\n\nexport default function PostURL() {\n\tconst anchorRef = useRef();\n\treturn (\n\t\t<PostURLCheck>\n\t\t\t<PanelRow className=\"edit-post-post-url\" ref={ anchorRef }>\n\t\t\t\t<span>{ __( 'URL' ) }</span>\n\t\t\t\t<Dropdown\n\t\t\t\t\tpopoverProps={ { anchorRef } }\n\t\t\t\t\tposition=\"bottom left\"\n\t\t\t\t\tclassName=\"edit-post-post-url__dropdown\"\n\t\t\t\t\tcontentClassName=\"edit-post-post-url__dialog\"\n\t\t\t\t\tfocusOnMount\n\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t<PostURLToggle isOpen={ isOpen } onClick={ onToggle } />\n\t\t\t\t\t) }\n\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t<PostURLForm onClose={ onClose } />\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</PanelRow>\n\t\t</PostURLCheck>\n\t);\n}\n\nfunction PostURLToggle( { isOpen, onClick } ) {\n\tconst label = usePostURLLabel();\n\treturn (\n\t\t<Button\n\t\t\tclassName=\"edit-post-post-url__toggle\"\n\t\t\tvariant=\"tertiary\"\n\t\t\taria-expanded={ isOpen }\n\t\t\t// translators: %s: Current post URL.\n\t\t\taria-label={ sprintf( __( 'Change URL: %s' ), label ) }\n\t\t\tonClick={ onClick }\n\t\t>\n\t\t\t{ label }\n\t\t</Button>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { PanelBody } from '@wordpress/components';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose, ifCondition } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport PostVisibility from '../post-visibility';\nimport PostTrash from '../post-trash';\nimport PostSchedule from '../post-schedule';\nimport PostSticky from '../post-sticky';\nimport PostAuthor from '../post-author';\nimport PostSlug from '../post-slug';\nimport PostFormat from '../post-format';\nimport PostPendingStatus from '../post-pending-status';\nimport PluginPostStatusInfo from '../plugin-post-status-info';\nimport { store as editPostStore } from '../../../store';\nimport PostTemplate from '../post-template';\nimport PostURL from '../post-url';\n\n/**\n * Module Constants\n */\nconst PANEL_NAME = 'post-status';\n\nfunction PostStatus( { isOpened, onTogglePanel } ) {\n\treturn (\n\t\t<PanelBody\n\t\t\tclassName=\"edit-post-post-status\"\n\t\t\ttitle={ __( 'Summary' ) }\n\t\t\topened={ isOpened }\n\t\t\tonToggle={ onTogglePanel }\n\t\t>\n\t\t\t<PluginPostStatusInfo.Slot>\n\t\t\t\t{ ( fills ) => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PostVisibility />\n\t\t\t\t\t\t<PostSchedule />\n\t\t\t\t\t\t<PostURL />\n\t\t\t\t\t\t<PostTemplate />\n\t\t\t\t\t\t<PostSticky />\n\t\t\t\t\t\t<PostPendingStatus />\n\t\t\t\t\t\t<PostFormat />\n\t\t\t\t\t\t<PostSlug />\n\t\t\t\t\t\t<PostAuthor />\n\t\t\t\t\t\t{ fills }\n\t\t\t\t\t\t<PostTrash />\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</PluginPostStatusInfo.Slot>\n\t\t</PanelBody>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\t// We use isEditorPanelRemoved to hide the panel if it was programatically removed. We do\n\t\t// not use isEditorPanelEnabled since this panel should not be disabled through the UI.\n\t\tconst { isEditorPanelRemoved, isEditorPanelOpened } =\n\t\t\tselect( editPostStore );\n\t\treturn {\n\t\t\tisRemoved: isEditorPanelRemoved( PANEL_NAME ),\n\t\t\tisOpened: isEditorPanelOpened( PANEL_NAME ),\n\t\t};\n\t} ),\n\tifCondition( ( { isRemoved } ) => ! isRemoved ),\n\twithDispatch( ( dispatch ) => ( {\n\t\tonTogglePanel() {\n\t\t\treturn dispatch( editPostStore ).toggleEditorPanelOpened(\n\t\t\t\tPANEL_NAME\n\t\t\t);\n\t\t},\n\t} ) ),\n] )( PostStatus );\n","/**\n * WordPress dependencies\n */\nimport { PanelBody } from '@wordpress/components';\nimport { PostLastRevision, PostLastRevisionCheck } from '@wordpress/editor';\n\nfunction LastRevision() {\n\treturn (\n\t\t<PostLastRevisionCheck>\n\t\t\t<PanelBody className=\"edit-post-last-revision__panel\">\n\t\t\t\t<PostLastRevision />\n\t\t\t</PanelBody>\n\t\t</PostLastRevisionCheck>\n\t);\n}\n\nexport default LastRevision;\n","/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport { PanelBody } from '@wordpress/components';\nimport { withSelect, withDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nfunction TaxonomyPanel( {\n\tisEnabled,\n\ttaxonomy,\n\tisOpened,\n\tonTogglePanel,\n\tchildren,\n} ) {\n\tif ( ! isEnabled ) {\n\t\treturn null;\n\t}\n\n\tconst taxonomyMenuName = get( taxonomy, [ 'labels', 'menu_name' ] );\n\tif ( ! taxonomyMenuName ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody\n\t\t\ttitle={ taxonomyMenuName }\n\t\t\topened={ isOpened }\n\t\t\tonToggle={ onTogglePanel }\n\t\t>\n\t\t\t{ children }\n\t\t</PanelBody>\n\t);\n}\n\nexport default compose(\n\twithSelect( ( select, ownProps ) => {\n\t\tconst slug = get( ownProps.taxonomy, [ 'slug' ] );\n\t\tconst panelName = slug ? `taxonomy-panel-${ slug }` : '';\n\t\treturn {\n\t\t\tpanelName,\n\t\t\tisEnabled: slug\n\t\t\t\t? select( editPostStore ).isEditorPanelEnabled( panelName )\n\t\t\t\t: false,\n\t\t\tisOpened: slug\n\t\t\t\t? select( editPostStore ).isEditorPanelOpened( panelName )\n\t\t\t\t: false,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, ownProps ) => ( {\n\t\tonTogglePanel: () => {\n\t\t\tdispatch( editPostStore ).toggleEditorPanelOpened(\n\t\t\t\townProps.panelName\n\t\t\t);\n\t\t},\n\t} ) )\n)( TaxonomyPanel );\n","/**\n * WordPress dependencies\n */\nimport {\n\tPostTaxonomies as PostTaxonomiesForm,\n\tPostTaxonomiesCheck,\n} from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport TaxonomyPanel from './taxonomy-panel';\n\nfunction PostTaxonomies() {\n\treturn (\n\t\t<PostTaxonomiesCheck>\n\t\t\t<PostTaxonomiesForm\n\t\t\t\ttaxonomyWrapper={ ( content, taxonomy ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<TaxonomyPanel taxonomy={ taxonomy }>\n\t\t\t\t\t\t\t{ content }\n\t\t\t\t\t\t</TaxonomyPanel>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PostTaxonomiesCheck>\n\t);\n}\n\nexport default PostTaxonomies;\n","/**\n * External dependencies\n */\nimport { get, partial } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { PanelBody } from '@wordpress/components';\nimport {\n\tPostFeaturedImage,\n\tPostFeaturedImageCheck,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport { compose } from '@wordpress/compose';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Module Constants\n */\nconst PANEL_NAME = 'featured-image';\n\nfunction FeaturedImage( { isEnabled, isOpened, postType, onTogglePanel } ) {\n\tif ( ! isEnabled ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PostFeaturedImageCheck>\n\t\t\t<PanelBody\n\t\t\t\ttitle={ get(\n\t\t\t\t\tpostType,\n\t\t\t\t\t[ 'labels', 'featured_image' ],\n\t\t\t\t\t__( 'Featured image' )\n\t\t\t\t) }\n\t\t\t\topened={ isOpened }\n\t\t\t\tonToggle={ onTogglePanel }\n\t\t\t>\n\t\t\t\t<PostFeaturedImage />\n\t\t\t</PanelBody>\n\t\t</PostFeaturedImageCheck>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select ) => {\n\tconst { getEditedPostAttribute } = select( editorStore );\n\tconst { getPostType } = select( coreStore );\n\tconst { isEditorPanelEnabled, isEditorPanelOpened } =\n\t\tselect( editPostStore );\n\n\treturn {\n\t\tpostType: getPostType( getEditedPostAttribute( 'type' ) ),\n\t\tisEnabled: isEditorPanelEnabled( PANEL_NAME ),\n\t\tisOpened: isEditorPanelOpened( PANEL_NAME ),\n\t};\n} );\n\nconst applyWithDispatch = withDispatch( ( dispatch ) => {\n\tconst { toggleEditorPanelOpened } = dispatch( editPostStore );\n\n\treturn {\n\t\tonTogglePanel: partial( toggleEditorPanelOpened, PANEL_NAME ),\n\t};\n} );\n\nexport default compose( applyWithSelect, applyWithDispatch )( FeaturedImage );\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { PanelBody } from '@wordpress/components';\nimport {\n\tPostExcerpt as PostExcerptForm,\n\tPostExcerptCheck,\n} from '@wordpress/editor';\nimport { compose } from '@wordpress/compose';\nimport { withSelect, withDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Module Constants\n */\nconst PANEL_NAME = 'post-excerpt';\n\nfunction PostExcerpt( { isEnabled, isOpened, onTogglePanel } ) {\n\tif ( ! isEnabled ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PostExcerptCheck>\n\t\t\t<PanelBody\n\t\t\t\ttitle={ __( 'Excerpt' ) }\n\t\t\t\topened={ isOpened }\n\t\t\t\tonToggle={ onTogglePanel }\n\t\t\t>\n\t\t\t\t<PostExcerptForm />\n\t\t\t</PanelBody>\n\t\t</PostExcerptCheck>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\treturn {\n\t\t\tisEnabled:\n\t\t\t\tselect( editPostStore ).isEditorPanelEnabled( PANEL_NAME ),\n\t\t\tisOpened: select( editPostStore ).isEditorPanelOpened( PANEL_NAME ),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => ( {\n\t\tonTogglePanel() {\n\t\t\treturn dispatch( editPostStore ).toggleEditorPanelOpened(\n\t\t\t\tPANEL_NAME\n\t\t\t);\n\t\t},\n\t} ) ),\n] )( PostExcerpt );\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { PanelBody, PanelRow } from '@wordpress/components';\nimport {\n\tPostComments,\n\tPostPingbacks,\n\tPostTypeSupportCheck,\n} from '@wordpress/editor';\nimport { compose } from '@wordpress/compose';\nimport { withSelect, withDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Module Constants\n */\nconst PANEL_NAME = 'discussion-panel';\n\nfunction DiscussionPanel( { isEnabled, isOpened, onTogglePanel } ) {\n\tif ( ! isEnabled ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PostTypeSupportCheck supportKeys={ [ 'comments', 'trackbacks' ] }>\n\t\t\t<PanelBody\n\t\t\t\ttitle={ __( 'Discussion' ) }\n\t\t\t\topened={ isOpened }\n\t\t\t\tonToggle={ onTogglePanel }\n\t\t\t>\n\t\t\t\t<PostTypeSupportCheck supportKeys=\"comments\">\n\t\t\t\t\t<PanelRow>\n\t\t\t\t\t\t<PostComments />\n\t\t\t\t\t</PanelRow>\n\t\t\t\t</PostTypeSupportCheck>\n\n\t\t\t\t<PostTypeSupportCheck supportKeys=\"trackbacks\">\n\t\t\t\t\t<PanelRow>\n\t\t\t\t\t\t<PostPingbacks />\n\t\t\t\t\t</PanelRow>\n\t\t\t\t</PostTypeSupportCheck>\n\t\t\t</PanelBody>\n\t\t</PostTypeSupportCheck>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\treturn {\n\t\t\tisEnabled:\n\t\t\t\tselect( editPostStore ).isEditorPanelEnabled( PANEL_NAME ),\n\t\t\tisOpened: select( editPostStore ).isEditorPanelOpened( PANEL_NAME ),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => ( {\n\t\tonTogglePanel() {\n\t\t\treturn dispatch( editPostStore ).toggleEditorPanelOpened(\n\t\t\t\tPANEL_NAME\n\t\t\t);\n\t\t},\n\t} ) ),\n] )( DiscussionPanel );\n","/**\n * External dependencies\n */\nimport { get, partial } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { PanelBody, PanelRow } from '@wordpress/components';\nimport {\n\tstore as editorStore,\n\tPageAttributesCheck,\n\tPageAttributesOrder,\n\tPageAttributesParent,\n} from '@wordpress/editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Module Constants\n */\nconst PANEL_NAME = 'page-attributes';\n\nexport function PageAttributes() {\n\tconst { isEnabled, isOpened, postType } = useSelect( ( select ) => {\n\t\tconst { getEditedPostAttribute } = select( editorStore );\n\t\tconst { isEditorPanelEnabled, isEditorPanelOpened } =\n\t\t\tselect( editPostStore );\n\t\tconst { getPostType } = select( coreStore );\n\t\treturn {\n\t\t\tisEnabled: isEditorPanelEnabled( PANEL_NAME ),\n\t\t\tisOpened: isEditorPanelOpened( PANEL_NAME ),\n\t\t\tpostType: getPostType( getEditedPostAttribute( 'type' ) ),\n\t\t};\n\t}, [] );\n\n\tconst { toggleEditorPanelOpened } = useDispatch( editPostStore );\n\n\tif ( ! isEnabled || ! postType ) {\n\t\treturn null;\n\t}\n\n\tconst onTogglePanel = partial( toggleEditorPanelOpened, PANEL_NAME );\n\n\treturn (\n\t\t<PageAttributesCheck>\n\t\t\t<PanelBody\n\t\t\t\ttitle={ get(\n\t\t\t\t\tpostType,\n\t\t\t\t\t[ 'labels', 'attributes' ],\n\t\t\t\t\t__( 'Page attributes' )\n\t\t\t\t) }\n\t\t\t\topened={ isOpened }\n\t\t\t\tonToggle={ onTogglePanel }\n\t\t\t>\n\t\t\t\t<PageAttributesParent />\n\t\t\t\t<PanelRow>\n\t\t\t\t\t<PageAttributesOrder />\n\t\t\t\t</PanelRow>\n\t\t\t</PanelBody>\n\t\t</PageAttributesCheck>\n\t);\n}\n\nexport default PageAttributes;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRef, useEffect } from '@wordpress/element';\nimport { Spinner } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Render metabox area.\n *\n * @param {Object} props Component props.\n * @param {string} props.location metabox location.\n * @return {WPComponent} The component to be rendered.\n */\nfunction MetaBoxesArea( { location } ) {\n\tconst container = useRef( null );\n\tconst formRef = useRef( null );\n\n\tuseEffect( () => {\n\t\tformRef.current = document.querySelector(\n\t\t\t'.metabox-location-' + location\n\t\t);\n\n\t\tif ( formRef.current ) {\n\t\t\tcontainer.current.appendChild( formRef.current );\n\t\t}\n\n\t\treturn () => {\n\t\t\tif ( formRef.current ) {\n\t\t\t\tdocument\n\t\t\t\t\t.querySelector( '#metaboxes' )\n\t\t\t\t\t.appendChild( formRef.current );\n\t\t\t}\n\t\t};\n\t}, [ location ] );\n\n\tconst isSaving = useSelect( ( select ) => {\n\t\treturn select( editPostStore ).isSavingMetaBoxes();\n\t}, [] );\n\n\tconst classes = classnames(\n\t\t'edit-post-meta-boxes-area',\n\t\t`is-${ location }`,\n\t\t{\n\t\t\t'is-loading': isSaving,\n\t\t}\n\t);\n\n\treturn (\n\t\t<div className={ classes }>\n\t\t\t{ isSaving && <Spinner /> }\n\t\t\t<div\n\t\t\t\tclassName=\"edit-post-meta-boxes-area__container\"\n\t\t\t\tref={ container }\n\t\t\t/>\n\t\t\t<div className=\"edit-post-meta-boxes-area__clear\" />\n\t\t</div>\n\t);\n}\n\nexport default MetaBoxesArea;\n","/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { withSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nclass MetaBoxVisibility extends Component {\n\tcomponentDidMount() {\n\t\tthis.updateDOM();\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tif ( this.props.isVisible !== prevProps.isVisible ) {\n\t\t\tthis.updateDOM();\n\t\t}\n\t}\n\n\tupdateDOM() {\n\t\tconst { id, isVisible } = this.props;\n\n\t\tconst element = document.getElementById( id );\n\t\tif ( ! element ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isVisible ) {\n\t\t\telement.classList.remove( 'is-hidden' );\n\t\t} else {\n\t\t\telement.classList.add( 'is-hidden' );\n\t\t}\n\t}\n\n\trender() {\n\t\treturn null;\n\t}\n}\n\nexport default withSelect( ( select, { id } ) => ( {\n\tisVisible: select( editPostStore ).isEditorPanelEnabled(\n\t\t`meta-box-${ id }`\n\t),\n} ) )( MetaBoxVisibility );\n","/**\n * External dependencies\n */\nimport { map } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useRegistry } from '@wordpress/data';\nimport { useEffect } from '@wordpress/element';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport MetaBoxesArea from './meta-boxes-area';\nimport MetaBoxVisibility from './meta-box-visibility';\nimport { store as editPostStore } from '../../store';\n\nexport default function MetaBoxes( { location } ) {\n\tconst registry = useRegistry();\n\tconst { metaBoxes, areMetaBoxesInitialized, isEditorReady } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __unstableIsEditorReady } = select( editorStore );\n\t\t\tconst {\n\t\t\t\tgetMetaBoxesPerLocation,\n\t\t\t\tareMetaBoxesInitialized: _areMetaBoxesInitialized,\n\t\t\t} = select( editPostStore );\n\t\t\treturn {\n\t\t\t\tmetaBoxes: getMetaBoxesPerLocation( location ),\n\t\t\t\tareMetaBoxesInitialized: _areMetaBoxesInitialized(),\n\t\t\t\tisEditorReady: __unstableIsEditorReady(),\n\t\t\t};\n\t\t},\n\t\t[ location ]\n\t);\n\n\t// When editor is ready, initialize postboxes (wp core script) and metabox\n\t// saving. This initializes all meta box locations, not just this specific\n\t// one.\n\tuseEffect( () => {\n\t\tif ( isEditorReady && ! areMetaBoxesInitialized ) {\n\t\t\tregistry.dispatch( editPostStore ).initializeMetaBoxes();\n\t\t}\n\t}, [ isEditorReady, areMetaBoxesInitialized ] );\n\n\tif ( ! areMetaBoxesInitialized ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ map( metaBoxes, ( { id } ) => (\n\t\t\t\t<MetaBoxVisibility key={ id } id={ id } />\n\t\t\t) ) }\n\t\t\t<MetaBoxesArea location={ location } />\n\t\t</>\n\t);\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"warning\"];","/**\n * Defines as extensibility slot for the Settings sidebar\n */\n\n/**\n * WordPress dependencies\n */\nimport { createSlotFill, PanelBody } from '@wordpress/components';\nimport { compose } from '@wordpress/compose';\nimport { withPluginContext } from '@wordpress/plugins';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport warning from '@wordpress/warning';\n\n/**\n * Internal dependencies\n */\nimport { EnablePluginDocumentSettingPanelOption } from '../../preferences-modal/options';\nimport { store as editPostStore } from '../../../store';\n\nexport const { Fill, Slot } = createSlotFill( 'PluginDocumentSettingPanel' );\n\nconst PluginDocumentSettingFill = ( {\n\tisEnabled,\n\tpanelName,\n\topened,\n\tonToggle,\n\tclassName,\n\ttitle,\n\ticon,\n\tchildren,\n} ) => {\n\treturn (\n\t\t<>\n\t\t\t<EnablePluginDocumentSettingPanelOption\n\t\t\t\tlabel={ title }\n\t\t\t\tpanelName={ panelName }\n\t\t\t/>\n\t\t\t<Fill>\n\t\t\t\t{ isEnabled && (\n\t\t\t\t\t<PanelBody\n\t\t\t\t\t\tclassName={ className }\n\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\topened={ opened }\n\t\t\t\t\t\tonToggle={ onToggle }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</PanelBody>\n\t\t\t\t) }\n\t\t\t</Fill>\n\t\t</>\n\t);\n};\n\n/**\n * Renders items below the Status & Availability panel in the Document Sidebar.\n *\n * @param {Object} props Component properties.\n * @param {string} [props.name] The machine-friendly name for the panel.\n * @param {string} [props.className] An optional class name added to the row.\n * @param {string} [props.title] The title of the panel\n * @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered when the sidebar is pinned to toolbar.\n *\n * @example\n * ```js\n * // Using ES5 syntax\n * var el = wp.element.createElement;\n * var __ = wp.i18n.__;\n * var registerPlugin = wp.plugins.registerPlugin;\n * var PluginDocumentSettingPanel = wp.editPost.PluginDocumentSettingPanel;\n *\n * function MyDocumentSettingPlugin() {\n * \treturn el(\n * \t\tPluginDocumentSettingPanel,\n * \t\t{\n * \t\t\tclassName: 'my-document-setting-plugin',\n * \t\t\ttitle: 'My Panel',\n * \t\t},\n * \t\t__( 'My Document Setting Panel' )\n * \t);\n * }\n *\n * registerPlugin( 'my-document-setting-plugin', {\n * \t\trender: MyDocumentSettingPlugin\n * } );\n * ```\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { registerPlugin } from '@wordpress/plugins';\n * import { PluginDocumentSettingPanel } from '@wordpress/edit-post';\n *\n * const MyDocumentSettingTest = () => (\n * \t\t<PluginDocumentSettingPanel className=\"my-document-setting-plugin\" title=\"My Panel\">\n *\t\t\t<p>My Document Setting Panel</p>\n *\t\t</PluginDocumentSettingPanel>\n *\t);\n *\n * registerPlugin( 'document-setting-test', { render: MyDocumentSettingTest } );\n * ```\n *\n * @return {WPComponent} The component to be rendered.\n */\nconst PluginDocumentSettingPanel = compose(\n\twithPluginContext( ( context, ownProps ) => {\n\t\tif ( undefined === ownProps.name ) {\n\t\t\twarning( 'PluginDocumentSettingPanel requires a name property.' );\n\t\t}\n\t\treturn {\n\t\t\tpanelName: `${ context.name }/${ ownProps.name }`,\n\t\t};\n\t} ),\n\twithSelect( ( select, { panelName } ) => {\n\t\treturn {\n\t\t\topened: select( editPostStore ).isEditorPanelOpened( panelName ),\n\t\t\tisEnabled:\n\t\t\t\tselect( editPostStore ).isEditorPanelEnabled( panelName ),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, { panelName } ) => ( {\n\t\tonToggle() {\n\t\t\treturn dispatch( editPostStore ).toggleEditorPanelOpened(\n\t\t\t\tpanelName\n\t\t\t);\n\t\t},\n\t} ) )\n)( PluginDocumentSettingFill );\n\nPluginDocumentSettingPanel.Slot = Slot;\n\nexport default PluginDocumentSettingPanel;\n","/**\n * WordPress dependencies\n */\nimport { ComplementaryArea } from '@wordpress/interface';\nimport { useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Renders a sidebar when activated. The contents within the `PluginSidebar` will appear as content within the sidebar.\n * It also automatically renders a corresponding `PluginSidebarMenuItem` component when `isPinnable` flag is set to `true`.\n * If you wish to display the sidebar, you can with use the `PluginSidebarMoreMenuItem` component or the `wp.data.dispatch` API:\n *\n * ```js\n * wp.data.dispatch( 'core/edit-post' ).openGeneralSidebar( 'plugin-name/sidebar-name' );\n * ```\n *\n * @see PluginSidebarMoreMenuItem\n *\n * @param {Object} props Element props.\n * @param {string} props.name A string identifying the sidebar. Must be unique for every sidebar registered within the scope of your plugin.\n * @param {string} [props.className] An optional class name added to the sidebar body.\n * @param {string} props.title Title displayed at the top of the sidebar.\n * @param {boolean} [props.isPinnable=true] Whether to allow to pin sidebar to the toolbar. When set to `true` it also automatically renders a corresponding menu item.\n * @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered when the sidebar is pinned to toolbar.\n *\n * @example\n * ```js\n * // Using ES5 syntax\n * var __ = wp.i18n.__;\n * var el = wp.element.createElement;\n * var PanelBody = wp.components.PanelBody;\n * var PluginSidebar = wp.editPost.PluginSidebar;\n * var moreIcon = wp.element.createElement( 'svg' ); //... svg element.\n *\n * function MyPluginSidebar() {\n * \treturn el(\n * \t\t\tPluginSidebar,\n * \t\t\t{\n * \t\t\t\tname: 'my-sidebar',\n * \t\t\t\ttitle: 'My sidebar title',\n * \t\t\t\ticon: moreIcon,\n * \t\t\t},\n * \t\t\tel(\n * \t\t\t\tPanelBody,\n * \t\t\t\t{},\n * \t\t\t\t__( 'My sidebar content' )\n * \t\t\t)\n * \t);\n * }\n * ```\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { __ } from '@wordpress/i18n';\n * import { PanelBody } from '@wordpress/components';\n * import { PluginSidebar } from '@wordpress/edit-post';\n * import { more } from '@wordpress/icons';\n *\n * const MyPluginSidebar = () => (\n * \t<PluginSidebar\n * \t\tname=\"my-sidebar\"\n * \t\ttitle=\"My sidebar title\"\n * \t\ticon={ more }\n * \t>\n * \t\t<PanelBody>\n * \t\t\t{ __( 'My sidebar content' ) }\n * \t\t</PanelBody>\n * \t</PluginSidebar>\n * );\n * ```\n */\nexport default function PluginSidebarEditPost( { className, ...props } ) {\n\tconst { postTitle, shortcut, showIconLabels } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tpostTitle: select( editorStore ).getEditedPostAttribute( 'title' ),\n\t\t\tshortcut: select(\n\t\t\t\tkeyboardShortcutsStore\n\t\t\t).getShortcutRepresentation( 'core/edit-post/toggle-sidebar' ),\n\t\t\tshowIconLabels:\n\t\t\t\tselect( editPostStore ).isFeatureActive( 'showIconLabels' ),\n\t\t};\n\t}, [] );\n\treturn (\n\t\t<ComplementaryArea\n\t\t\tpanelClassName={ className }\n\t\t\tclassName=\"edit-post-sidebar\"\n\t\t\tsmallScreenTitle={ postTitle || __( '(no title)' ) }\n\t\t\tscope=\"core/edit-post\"\n\t\t\ttoggleShortcut={ shortcut }\n\t\t\tshowIconLabels={ showIconLabels }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst layout = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z\" />\n\t</SVG>\n);\n\nexport default layout;\n","/**\n * WordPress dependencies\n */\nimport { Icon, layout } from '@wordpress/icons';\nimport { useSelect } from '@wordpress/data';\nimport { Flex, FlexItem, FlexBlock, PanelBody } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nfunction TemplateSummary() {\n\tconst template = useSelect( ( select ) => {\n\t\tconst { getEditedPostTemplate } = select( editPostStore );\n\t\treturn getEditedPostTemplate();\n\t}, [] );\n\n\tif ( ! template ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody>\n\t\t\t<Flex align=\"flex-start\" gap=\"3\">\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Icon icon={ layout } />\n\t\t\t\t</FlexItem>\n\n\t\t\t\t<FlexBlock>\n\t\t\t\t\t<h2 className=\"edit-post-template-summary__title\">\n\t\t\t\t\t\t{ template?.title || template?.slug }\n\t\t\t\t\t</h2>\n\t\t\t\t\t<p>{ template?.description }</p>\n\t\t\t\t</FlexBlock>\n\t\t\t</Flex>\n\t\t</PanelBody>\n\t);\n}\n\nexport default TemplateSummary;\n","/**\n * WordPress dependencies\n */\nimport {\n\tBlockInspector,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { cog } from '@wordpress/icons';\nimport { Platform } from '@wordpress/element';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { store as interfaceStore } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport SettingsHeader from '../settings-header';\nimport PostStatus from '../post-status';\nimport LastRevision from '../last-revision';\nimport PostTaxonomies from '../post-taxonomies';\nimport FeaturedImage from '../featured-image';\nimport PostExcerpt from '../post-excerpt';\nimport DiscussionPanel from '../discussion-panel';\nimport PageAttributes from '../page-attributes';\nimport MetaBoxes from '../../meta-boxes';\nimport PluginDocumentSettingPanel from '../plugin-document-setting-panel';\nimport PluginSidebarEditPost from '../plugin-sidebar';\nimport TemplateSummary from '../template-summary';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { store as editPostStore } from '../../../store';\n\nconst SIDEBAR_ACTIVE_BY_DEFAULT = Platform.select( {\n\tweb: true,\n\tnative: false,\n} );\n\nconst SettingsSidebar = () => {\n\tconst { sidebarName, keyboardShortcut, isTemplateMode } = useSelect(\n\t\t( select ) => {\n\t\t\t// The settings sidebar is used by the edit-post/document and edit-post/block sidebars.\n\t\t\t// sidebarName represents the sidebar that is active or that should be active when the SettingsSidebar toggle button is pressed.\n\t\t\t// If one of the two sidebars is active the component will contain the content of that sidebar.\n\t\t\t// When neither of the two sidebars is active we can not simply return null, because the PluginSidebarEditPost\n\t\t\t// component, besides being used to render the sidebar, also renders the toggle button. In that case sidebarName\n\t\t\t// should contain the sidebar that will be active when the toggle button is pressed. If a block\n\t\t\t// is selected, that should be edit-post/block otherwise it's edit-post/document.\n\t\t\tlet sidebar = select( interfaceStore ).getActiveComplementaryArea(\n\t\t\t\teditPostStore.name\n\t\t\t);\n\t\t\tif (\n\t\t\t\t! [ 'edit-post/document', 'edit-post/block' ].includes(\n\t\t\t\t\tsidebar\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif ( select( blockEditorStore ).getBlockSelectionStart() ) {\n\t\t\t\t\tsidebar = 'edit-post/block';\n\t\t\t\t}\n\t\t\t\tsidebar = 'edit-post/document';\n\t\t\t}\n\t\t\tconst shortcut = select(\n\t\t\t\tkeyboardShortcutsStore\n\t\t\t).getShortcutRepresentation( 'core/edit-post/toggle-sidebar' );\n\t\t\treturn {\n\t\t\t\tsidebarName: sidebar,\n\t\t\t\tkeyboardShortcut: shortcut,\n\t\t\t\tisTemplateMode: select( editPostStore ).isEditingTemplate(),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\treturn (\n\t\t<PluginSidebarEditPost\n\t\t\tidentifier={ sidebarName }\n\t\t\theader={ <SettingsHeader sidebarName={ sidebarName } /> }\n\t\t\tcloseLabel={ __( 'Close settings' ) }\n\t\t\theaderClassName=\"edit-post-sidebar__panel-tabs\"\n\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\ttitle={ __( 'Settings' ) }\n\t\t\ttoggleShortcut={ keyboardShortcut }\n\t\t\ticon={ cog }\n\t\t\tisActiveByDefault={ SIDEBAR_ACTIVE_BY_DEFAULT }\n\t\t>\n\t\t\t{ ! isTemplateMode && sidebarName === 'edit-post/document' && (\n\t\t\t\t<>\n\t\t\t\t\t<PostStatus />\n\t\t\t\t\t<PluginDocumentSettingPanel.Slot />\n\t\t\t\t\t<LastRevision />\n\t\t\t\t\t<PostTaxonomies />\n\t\t\t\t\t<FeaturedImage />\n\t\t\t\t\t<PostExcerpt />\n\t\t\t\t\t<DiscussionPanel />\n\t\t\t\t\t<PageAttributes />\n\t\t\t\t\t<MetaBoxes location=\"side\" />\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ isTemplateMode && sidebarName === 'edit-post/document' && (\n\t\t\t\t<TemplateSummary />\n\t\t\t) }\n\t\t\t{ sidebarName === 'edit-post/block' && <BlockInspector /> }\n\t\t</PluginSidebarEditPost>\n\t);\n};\n\nexport default SettingsSidebar;\n","export default function WelcomeGuideImage( { nonAnimatedSrc, animatedSrc } ) {\n\treturn (\n\t\t<picture className=\"edit-post-welcome-guide__image\">\n\t\t\t<source\n\t\t\t\tsrcSet={ nonAnimatedSrc }\n\t\t\t\tmedia=\"(prefers-reduced-motion: reduce)\"\n\t\t\t/>\n\t\t\t<img src={ animatedSrc } width=\"312\" height=\"240\" alt=\"\" />\n\t\t</picture>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { ExternalLink, Guide } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { createInterpolateElement } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport WelcomeGuideImage from './image';\nimport { store as editPostStore } from '../../store';\n\nexport default function WelcomeGuideDefault() {\n\tconst { toggleFeature } = useDispatch( editPostStore );\n\n\treturn (\n\t\t<Guide\n\t\t\tclassName=\"edit-post-welcome-guide\"\n\t\t\tcontentLabel={ __( 'Welcome to the block editor' ) }\n\t\t\tfinishButtonText={ __( 'Get started' ) }\n\t\t\tonFinish={ () => toggleFeature( 'welcomeGuide' ) }\n\t\t\tpages={ [\n\t\t\t\t{\n\t\t\t\t\timage: (\n\t\t\t\t\t\t<WelcomeGuideImage\n\t\t\t\t\t\t\tnonAnimatedSrc=\"https://s.w.org/images/block-editor/welcome-canvas.svg\"\n\t\t\t\t\t\t\tanimatedSrc=\"https://s.w.org/images/block-editor/welcome-canvas.gif\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"edit-post-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Welcome to the block editor' ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<p className=\"edit-post-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'In the WordPress editor, each paragraph, image, or video is presented as a distinct “block” of content.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\timage: (\n\t\t\t\t\t\t<WelcomeGuideImage\n\t\t\t\t\t\t\tnonAnimatedSrc=\"https://s.w.org/images/block-editor/welcome-editor.svg\"\n\t\t\t\t\t\t\tanimatedSrc=\"https://s.w.org/images/block-editor/welcome-editor.gif\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"edit-post-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Make each block your own' ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<p className=\"edit-post-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Each block comes with its own set of controls for changing things like color, width, and alignment. These will show and hide automatically when you have a block selected.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\timage: (\n\t\t\t\t\t\t<WelcomeGuideImage\n\t\t\t\t\t\t\tnonAnimatedSrc=\"https://s.w.org/images/block-editor/welcome-library.svg\"\n\t\t\t\t\t\t\tanimatedSrc=\"https://s.w.org/images/block-editor/welcome-library.gif\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"edit-post-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Get to know the block library' ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<p className=\"edit-post-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t'All of the blocks available to you live in the block library. You’ll find it wherever you see the <InserterIconImage /> icon.'\n\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\t\tInserterIconImage: (\n\t\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\t\talt={ __( 'inserter' ) }\n\t\t\t\t\t\t\t\t\t\t\t\tsrc=\"data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='18' height='18' rx='2' fill='%231E1E1E'/%3E%3Cpath d='M9.22727 4V14M4 8.77273H14' stroke='white' stroke-width='1.5'/%3E%3C/svg%3E%0A\"\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</p>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\timage: (\n\t\t\t\t\t\t<WelcomeGuideImage\n\t\t\t\t\t\t\tnonAnimatedSrc=\"https://s.w.org/images/block-editor/welcome-documentation.svg\"\n\t\t\t\t\t\t\tanimatedSrc=\"https://s.w.org/images/block-editor/welcome-documentation.gif\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"edit-post-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Learn how to use the block editor' ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<p className=\"edit-post-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'New to the block editor? Want to learn more about using it? '\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t\t\t\t'https://wordpress.org/support/article/wordpress-editor/'\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\t\t{ __( \"Here's a detailed guide.\" ) }\n\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t</p>\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/>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { Guide } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport WelcomeGuideImage from './image';\nimport { store as editPostStore } from '../../store';\n\nexport default function WelcomeGuideTemplate() {\n\tconst { toggleFeature } = useDispatch( editPostStore );\n\n\treturn (\n\t\t<Guide\n\t\t\tclassName=\"edit-template-welcome-guide\"\n\t\t\tcontentLabel={ __( 'Welcome to the template editor' ) }\n\t\t\tfinishButtonText={ __( 'Get started' ) }\n\t\t\tonFinish={ () => toggleFeature( 'welcomeGuideTemplate' ) }\n\t\t\tpages={ [\n\t\t\t\t{\n\t\t\t\t\timage: (\n\t\t\t\t\t\t<WelcomeGuideImage\n\t\t\t\t\t\t\tnonAnimatedSrc=\"https://s.w.org/images/block-editor/welcome-template-editor.svg\"\n\t\t\t\t\t\t\tanimatedSrc=\"https://s.w.org/images/block-editor/welcome-template-editor.gif\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"edit-post-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Welcome to the template editor' ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<p className=\"edit-post-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Templates help define the layout of the site. You can customize all aspects of your posts and pages using blocks and patterns in this editor.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</p>\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/>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport WelcomeGuideDefault from './default';\nimport WelcomeGuideTemplate from './template';\nimport { store as editPostStore } from '../../store';\n\nexport default function WelcomeGuide() {\n\tconst { isActive, isTemplateMode } = useSelect( ( select ) => {\n\t\tconst { isFeatureActive, isEditingTemplate } = select( editPostStore );\n\t\tconst _isTemplateMode = isEditingTemplate();\n\t\tconst feature = _isTemplateMode\n\t\t\t? 'welcomeGuideTemplate'\n\t\t\t: 'welcomeGuide';\n\n\t\treturn {\n\t\t\tisActive: isFeatureActive( feature ),\n\t\t\tisTemplateMode: _isTemplateMode,\n\t\t};\n\t}, [] );\n\n\tif ( ! isActive ) {\n\t\treturn null;\n\t}\n\n\treturn isTemplateMode ? <WelcomeGuideTemplate /> : <WelcomeGuideDefault />;\n}\n","/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport { withPluginContext } from '@wordpress/plugins';\nimport { createSlotFill, PanelBody } from '@wordpress/components';\n\nconst { Fill, Slot } = createSlotFill( 'PluginPostPublishPanel' );\n\nconst PluginPostPublishPanelFill = ( {\n\tchildren,\n\tclassName,\n\ttitle,\n\tinitialOpen = false,\n\ticon,\n} ) => (\n\t<Fill>\n\t\t<PanelBody\n\t\t\tclassName={ className }\n\t\t\tinitialOpen={ initialOpen || ! title }\n\t\t\ttitle={ title }\n\t\t\ticon={ icon }\n\t\t>\n\t\t\t{ children }\n\t\t</PanelBody>\n\t</Fill>\n);\n/**\n * Renders provided content to the post-publish panel in the publish flow\n * (side panel that opens after a user publishes the post).\n *\n * @param {Object} props Component properties.\n * @param {string} [props.className] An optional class name added to the panel.\n * @param {string} [props.title] Title displayed at the top of the panel.\n * @param {boolean} [props.initialOpen=false] Whether to have the panel initially opened. When no title is provided it is always opened.\n * @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered when the sidebar is pinned to toolbar.\n *\n * @example\n * ```js\n * // Using ES5 syntax\n * var __ = wp.i18n.__;\n * var PluginPostPublishPanel = wp.editPost.PluginPostPublishPanel;\n *\n * function MyPluginPostPublishPanel() {\n * \treturn wp.element.createElement(\n * \t\tPluginPostPublishPanel,\n * \t\t{\n * \t\t\tclassName: 'my-plugin-post-publish-panel',\n * \t\t\ttitle: __( 'My panel title' ),\n * \t\t\tinitialOpen: true,\n * \t\t},\n * \t\t__( 'My panel content' )\n * \t);\n * }\n * ```\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { __ } from '@wordpress/i18n';\n * import { PluginPostPublishPanel } from '@wordpress/edit-post';\n *\n * const MyPluginPostPublishPanel = () => (\n * \t<PluginPostPublishPanel\n * \t\tclassName=\"my-plugin-post-publish-panel\"\n * \t\ttitle={ __( 'My panel title' ) }\n * \t\tinitialOpen={ true }\n * \t>\n * { __( 'My panel content' ) }\n * \t</PluginPostPublishPanel>\n * );\n * ```\n *\n * @return {WPComponent} The component to be rendered.\n */\n\nconst PluginPostPublishPanel = compose(\n\twithPluginContext( ( context, ownProps ) => {\n\t\treturn {\n\t\t\ticon: ownProps.icon || context.icon,\n\t\t};\n\t} )\n)( PluginPostPublishPanelFill );\n\nPluginPostPublishPanel.Slot = Slot;\n\nexport default PluginPostPublishPanel;\n","/**\n * WordPress dependencies\n */\nimport { createSlotFill, PanelBody } from '@wordpress/components';\nimport { compose } from '@wordpress/compose';\nimport { withPluginContext } from '@wordpress/plugins';\nconst { Fill, Slot } = createSlotFill( 'PluginPrePublishPanel' );\n\nconst PluginPrePublishPanelFill = ( {\n\tchildren,\n\tclassName,\n\ttitle,\n\tinitialOpen = false,\n\ticon,\n} ) => (\n\t<Fill>\n\t\t<PanelBody\n\t\t\tclassName={ className }\n\t\t\tinitialOpen={ initialOpen || ! title }\n\t\t\ttitle={ title }\n\t\t\ticon={ icon }\n\t\t>\n\t\t\t{ children }\n\t\t</PanelBody>\n\t</Fill>\n);\n\n/**\n * Renders provided content to the pre-publish side panel in the publish flow\n * (side panel that opens when a user first pushes \"Publish\" from the main editor).\n *\n * @param {Object} props Component props.\n * @param {string} [props.className] An optional class name added to the panel.\n * @param {string} [props.title] Title displayed at the top of the panel.\n * @param {boolean} [props.initialOpen=false] Whether to have the panel initially opened.\n * When no title is provided it is always opened.\n * @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/)\n * icon slug string, or an SVG WP element, to be rendered when\n * the sidebar is pinned to toolbar.\n *\n * @example\n * ```js\n * // Using ES5 syntax\n * var __ = wp.i18n.__;\n * var PluginPrePublishPanel = wp.editPost.PluginPrePublishPanel;\n *\n * function MyPluginPrePublishPanel() {\n * \treturn wp.element.createElement(\n * \t\tPluginPrePublishPanel,\n * \t\t{\n * \t\t\tclassName: 'my-plugin-pre-publish-panel',\n * \t\t\ttitle: __( 'My panel title' ),\n * \t\t\tinitialOpen: true,\n * \t\t},\n * \t\t__( 'My panel content' )\n * \t);\n * }\n * ```\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { __ } from '@wordpress/i18n';\n * import { PluginPrePublishPanel } from '@wordpress/edit-post';\n *\n * const MyPluginPrePublishPanel = () => (\n * \t<PluginPrePublishPanel\n * \t\tclassName=\"my-plugin-pre-publish-panel\"\n * \t\ttitle={ __( 'My panel title' ) }\n * \t\tinitialOpen={ true }\n * \t>\n * \t { __( 'My panel content' ) }\n * \t</PluginPrePublishPanel>\n * );\n * ```\n *\n * @return {WPComponent} The component to be rendered.\n */\nconst PluginPrePublishPanel = compose(\n\twithPluginContext( ( context, ownProps ) => {\n\t\treturn {\n\t\t\ticon: ownProps.icon || context.icon,\n\t\t};\n\t} )\n)( PluginPrePublishPanelFill );\n\nPluginPrePublishPanel.Slot = Slot;\n\nexport default PluginPrePublishPanel;\n","/**\n * WordPress dependencies\n */\nimport {\n\tEntitiesSavedStates,\n\tPostPublishPanel,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { Button, createSlotFill } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useCallback } from '@wordpress/element';\n/**\n * Internal dependencies\n */\nimport PluginPostPublishPanel from '../sidebar/plugin-post-publish-panel';\nimport PluginPrePublishPanel from '../sidebar/plugin-pre-publish-panel';\nimport { store as editPostStore } from '../../store';\n\nconst { Fill, Slot } = createSlotFill( 'ActionsPanel' );\n\nexport const ActionsPanelFill = Fill;\n\nexport default function ActionsPanel( {\n\tsetEntitiesSavedStatesCallback,\n\tcloseEntitiesSavedStates,\n\tisEntitiesSavedStatesOpen,\n} ) {\n\tconst { closePublishSidebar, togglePublishSidebar } =\n\t\tuseDispatch( editPostStore );\n\tconst {\n\t\tpublishSidebarOpened,\n\t\thasActiveMetaboxes,\n\t\tisSavingMetaBoxes,\n\t\thasNonPostEntityChanges,\n\t} = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tpublishSidebarOpened:\n\t\t\t\tselect( editPostStore ).isPublishSidebarOpened(),\n\t\t\thasActiveMetaboxes: select( editPostStore ).hasMetaBoxes(),\n\t\t\tisSavingMetaBoxes: select( editPostStore ).isSavingMetaBoxes(),\n\t\t\thasNonPostEntityChanges:\n\t\t\t\tselect( editorStore ).hasNonPostEntityChanges(),\n\t\t};\n\t}, [] );\n\n\tconst openEntitiesSavedStates = useCallback(\n\t\t() => setEntitiesSavedStatesCallback( true ),\n\t\t[]\n\t);\n\n\t// It is ok for these components to be unmounted when not in visual use.\n\t// We don't want more than one present at a time, decide which to render.\n\tlet unmountableContent;\n\tif ( publishSidebarOpened ) {\n\t\tunmountableContent = (\n\t\t\t<PostPublishPanel\n\t\t\t\tonClose={ closePublishSidebar }\n\t\t\t\tforceIsDirty={ hasActiveMetaboxes }\n\t\t\t\tforceIsSaving={ isSavingMetaBoxes }\n\t\t\t\tPrePublishExtension={ PluginPrePublishPanel.Slot }\n\t\t\t\tPostPublishExtension={ PluginPostPublishPanel.Slot }\n\t\t\t/>\n\t\t);\n\t} else if ( hasNonPostEntityChanges ) {\n\t\tunmountableContent = (\n\t\t\t<div className=\"edit-post-layout__toggle-entities-saved-states-panel\">\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tclassName=\"edit-post-layout__toggle-entities-saved-states-panel-button\"\n\t\t\t\t\tonClick={ openEntitiesSavedStates }\n\t\t\t\t\taria-expanded={ false }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Open save panel' ) }\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t);\n\t} else {\n\t\tunmountableContent = (\n\t\t\t<div className=\"edit-post-layout__toggle-publish-panel\">\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tclassName=\"edit-post-layout__toggle-publish-panel-button\"\n\t\t\t\t\tonClick={ togglePublishSidebar }\n\t\t\t\t\taria-expanded={ false }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Open publish panel' ) }\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Since EntitiesSavedStates controls its own panel, we can keep it\n\t// always mounted to retain its own component state (such as checkboxes).\n\treturn (\n\t\t<>\n\t\t\t{ isEntitiesSavedStatesOpen && (\n\t\t\t\t<EntitiesSavedStates close={ closeEntitiesSavedStates } />\n\t\t\t) }\n\t\t\t<Slot bubblesVirtually />\n\t\t\t{ ! isEntitiesSavedStatesOpen && unmountableContent }\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Modal } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState, useEffect, useMemo } from '@wordpress/element';\nimport {\n\tstore as blockEditorStore,\n\t__experimentalBlockPatternsList as BlockPatternsList,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useAsyncList } from '@wordpress/compose';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nfunction useStartPatterns() {\n\t// A pattern is a start pattern if it includes 'core/post-content' in its blockTypes,\n\t// and it has no postTypes declares and the current post type is page or if\n\t// the current post type is part of the postTypes declared.\n\tconst { blockPatternsWithPostContentBlockType, postType } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalGetPatternsByBlockTypes } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { getCurrentPostType } = select( editorStore );\n\t\t\treturn {\n\t\t\t\t// get pa\n\t\t\t\tblockPatternsWithPostContentBlockType:\n\t\t\t\t\t__experimentalGetPatternsByBlockTypes(\n\t\t\t\t\t\t'core/post-content'\n\t\t\t\t\t),\n\t\t\t\tpostType: getCurrentPostType(),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\treturn useMemo( () => {\n\t\t// filter patterns without postTypes declared if the current postType is page\n\t\t// or patterns that declare the current postType in its post type array.\n\t\treturn blockPatternsWithPostContentBlockType.filter( ( pattern ) => {\n\t\t\treturn (\n\t\t\t\t( postType === 'page' && ! pattern.postTypes ) ||\n\t\t\t\t( Array.isArray( pattern.postTypes ) &&\n\t\t\t\t\tpattern.postTypes.includes( postType ) )\n\t\t\t);\n\t\t} );\n\t}, [ postType, blockPatternsWithPostContentBlockType ] );\n}\n\nfunction PatternSelection( { onChoosePattern } ) {\n\tconst blockPatterns = useStartPatterns();\n\tconst shownBlockPatterns = useAsyncList( blockPatterns );\n\tconst { resetEditorBlocks } = useDispatch( editorStore );\n\treturn (\n\t\t<BlockPatternsList\n\t\t\tblockPatterns={ blockPatterns }\n\t\t\tshownPatterns={ shownBlockPatterns }\n\t\t\tonClickPattern={ ( _pattern, blocks ) => {\n\t\t\t\tresetEditorBlocks( blocks );\n\t\t\t\tonChoosePattern();\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nconst START_PAGE_MODAL_STATES = {\n\tINITIAL: 'INITIAL',\n\tPATTERN: 'PATTERN',\n\tCLOSED: 'CLOSED',\n};\n\nexport default function StartPageOptions() {\n\tconst [ modalState, setModalState ] = useState(\n\t\tSTART_PAGE_MODAL_STATES.INITIAL\n\t);\n\tconst blockPatterns = useStartPatterns();\n\tconst hasStartPattern = blockPatterns.length > 0;\n\tconst shouldOpenModel = useSelect(\n\t\t( select ) => {\n\t\t\tif (\n\t\t\t\t! hasStartPattern ||\n\t\t\t\tmodalState !== START_PAGE_MODAL_STATES.INITIAL\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst { getEditedPostContent, isEditedPostSaveable } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { isEditingTemplate, isFeatureActive } =\n\t\t\t\tselect( editPostStore );\n\t\t\treturn (\n\t\t\t\t! isEditedPostSaveable() &&\n\t\t\t\t'' === getEditedPostContent() &&\n\t\t\t\t! isEditingTemplate() &&\n\t\t\t\t! isFeatureActive( 'welcomeGuide' )\n\t\t\t);\n\t\t},\n\t\t[ modalState, hasStartPattern ]\n\t);\n\n\tuseEffect( () => {\n\t\tif ( shouldOpenModel ) {\n\t\t\tsetModalState( START_PAGE_MODAL_STATES.PATTERN );\n\t\t}\n\t}, [ shouldOpenModel ] );\n\n\tif (\n\t\tmodalState === START_PAGE_MODAL_STATES.INITIAL ||\n\t\tmodalState === START_PAGE_MODAL_STATES.CLOSED\n\t) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"edit-post-start-page-options__modal\"\n\t\t\ttitle={ __( 'Choose a pattern' ) }\n\t\t\tcloseLabel={ __( 'Cancel' ) }\n\t\t\tonRequestClose={ () => {\n\t\t\t\tsetModalState( START_PAGE_MODAL_STATES.CLOSED );\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"edit-post-start-page-options__modal-content\">\n\t\t\t\t{ modalState === START_PAGE_MODAL_STATES.PATTERN && (\n\t\t\t\t\t<PatternSelection\n\t\t\t\t\t\tonChoosePattern={ () => {\n\t\t\t\t\t\t\tsetModalState( START_PAGE_MODAL_STATES.CLOSED );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</Modal>\n\t);\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAutosaveMonitor,\n\tLocalAutosaveMonitor,\n\tUnsavedChangesWarning,\n\tEditorNotices,\n\tEditorKeyboardShortcutsRegister,\n\tEditorSnackbars,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { BlockBreadcrumb, BlockStyles } from '@wordpress/block-editor';\nimport { Button, ScrollLock, Popover } from '@wordpress/components';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { PluginArea } from '@wordpress/plugins';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport {\n\tComplementaryArea,\n\tFullscreenMode,\n\tInterfaceSkeleton,\n\tstore as interfaceStore,\n} from '@wordpress/interface';\nimport { useState, useEffect, useCallback } from '@wordpress/element';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport TextEditor from '../text-editor';\nimport VisualEditor from '../visual-editor';\nimport EditPostKeyboardShortcuts from '../keyboard-shortcuts';\nimport KeyboardShortcutHelpModal from '../keyboard-shortcut-help-modal';\nimport EditPostPreferencesModal from '../preferences-modal';\nimport BrowserURL from '../browser-url';\nimport Header from '../header';\nimport InserterSidebar from '../secondary-sidebar/inserter-sidebar';\nimport ListViewSidebar from '../secondary-sidebar/list-view-sidebar';\nimport SettingsSidebar from '../sidebar/settings-sidebar';\nimport MetaBoxes from '../meta-boxes';\nimport WelcomeGuide from '../welcome-guide';\nimport ActionsPanel from './actions-panel';\nimport StartPageOptions from '../start-page-options';\nimport { store as editPostStore } from '../../store';\n\nconst interfaceLabels = {\n\t/* translators: accessibility text for the editor top bar landmark region. */\n\theader: __( 'Editor top bar' ),\n\t/* translators: accessibility text for the editor content landmark region. */\n\tbody: __( 'Editor content' ),\n\t/* translators: accessibility text for the editor settings landmark region. */\n\tsidebar: __( 'Editor settings' ),\n\t/* translators: accessibility text for the editor publish landmark region. */\n\tactions: __( 'Editor publish' ),\n\t/* translators: accessibility text for the editor footer landmark region. */\n\tfooter: __( 'Editor footer' ),\n};\n\nfunction Layout( { styles } ) {\n\tconst isMobileViewport = useViewportMatch( 'medium', '<' );\n\tconst isHugeViewport = useViewportMatch( 'huge', '>=' );\n\tconst { openGeneralSidebar, closeGeneralSidebar, setIsInserterOpened } =\n\t\tuseDispatch( editPostStore );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst {\n\t\tmode,\n\t\tisFullscreenActive,\n\t\tisRichEditingEnabled,\n\t\tsidebarIsOpened,\n\t\thasActiveMetaboxes,\n\t\thasFixedToolbar,\n\t\tpreviousShortcut,\n\t\tnextShortcut,\n\t\thasBlockSelected,\n\t\tisInserterOpened,\n\t\tisListViewOpened,\n\t\tshowIconLabels,\n\t\thasReducedUI,\n\t\tshowBlockBreadcrumbs,\n\t\tisTemplateMode,\n\t\tdocumentLabel,\n\t} = useSelect( ( select ) => {\n\t\tconst { getEditorSettings, getPostTypeLabel } = select( editorStore );\n\t\tconst editorSettings = getEditorSettings();\n\t\tconst postTypeLabel = getPostTypeLabel();\n\n\t\treturn {\n\t\t\tisTemplateMode: select( editPostStore ).isEditingTemplate(),\n\t\t\thasFixedToolbar:\n\t\t\t\tselect( editPostStore ).isFeatureActive( 'fixedToolbar' ),\n\t\t\tsidebarIsOpened: !! (\n\t\t\t\tselect( interfaceStore ).getActiveComplementaryArea(\n\t\t\t\t\teditPostStore.name\n\t\t\t\t) || select( editPostStore ).isPublishSidebarOpened()\n\t\t\t),\n\t\t\tisFullscreenActive:\n\t\t\t\tselect( editPostStore ).isFeatureActive( 'fullscreenMode' ),\n\t\t\tisInserterOpened: select( editPostStore ).isInserterOpened(),\n\t\t\tisListViewOpened: select( editPostStore ).isListViewOpened(),\n\t\t\tmode: select( editPostStore ).getEditorMode(),\n\t\t\tisRichEditingEnabled: editorSettings.richEditingEnabled,\n\t\t\thasActiveMetaboxes: select( editPostStore ).hasMetaBoxes(),\n\t\t\tpreviousShortcut: select(\n\t\t\t\tkeyboardShortcutsStore\n\t\t\t).getAllShortcutKeyCombinations( 'core/edit-post/previous-region' ),\n\t\t\tnextShortcut: select(\n\t\t\t\tkeyboardShortcutsStore\n\t\t\t).getAllShortcutKeyCombinations( 'core/edit-post/next-region' ),\n\t\t\tshowIconLabels:\n\t\t\t\tselect( editPostStore ).isFeatureActive( 'showIconLabels' ),\n\t\t\thasReducedUI:\n\t\t\t\tselect( editPostStore ).isFeatureActive( 'reducedUI' ),\n\t\t\tshowBlockBreadcrumbs: select( editPostStore ).isFeatureActive(\n\t\t\t\t'showBlockBreadcrumbs'\n\t\t\t),\n\t\t\t// translators: Default label for the Document in the Block Breadcrumb.\n\t\t\tdocumentLabel: postTypeLabel || _x( 'Document', 'noun' ),\n\t\t};\n\t}, [] );\n\tconst className = classnames( 'edit-post-layout', 'is-mode-' + mode, {\n\t\t'is-sidebar-opened': sidebarIsOpened,\n\t\t'has-fixed-toolbar': hasFixedToolbar,\n\t\t'has-metaboxes': hasActiveMetaboxes,\n\t\t'show-icon-labels': showIconLabels,\n\t} );\n\tconst openSidebarPanel = () =>\n\t\topenGeneralSidebar(\n\t\t\thasBlockSelected ? 'edit-post/block' : 'edit-post/document'\n\t\t);\n\n\t// Inserter and Sidebars are mutually exclusive\n\tuseEffect( () => {\n\t\tif ( sidebarIsOpened && ! isHugeViewport ) {\n\t\t\tsetIsInserterOpened( false );\n\t\t}\n\t}, [ sidebarIsOpened, isHugeViewport ] );\n\tuseEffect( () => {\n\t\tif ( isInserterOpened && ! isHugeViewport ) {\n\t\t\tcloseGeneralSidebar();\n\t\t}\n\t}, [ isInserterOpened, isHugeViewport ] );\n\n\t// Local state for save panel.\n\t// Note 'truthy' callback implies an open panel.\n\tconst [ entitiesSavedStatesCallback, setEntitiesSavedStatesCallback ] =\n\t\tuseState( false );\n\tconst closeEntitiesSavedStates = useCallback(\n\t\t( arg ) => {\n\t\t\tif ( typeof entitiesSavedStatesCallback === 'function' ) {\n\t\t\t\tentitiesSavedStatesCallback( arg );\n\t\t\t}\n\t\t\tsetEntitiesSavedStatesCallback( false );\n\t\t},\n\t\t[ entitiesSavedStatesCallback ]\n\t);\n\n\tconst secondarySidebarLabel = isListViewOpened\n\t\t? __( 'List View' )\n\t\t: __( 'Block Library' );\n\n\tconst secondarySidebar = () => {\n\t\tif ( mode === 'visual' && isInserterOpened ) {\n\t\t\treturn <InserterSidebar />;\n\t\t}\n\t\tif ( mode === 'visual' && isListViewOpened ) {\n\t\t\treturn <ListViewSidebar />;\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tfunction onPluginAreaError( name ) {\n\t\tcreateErrorNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: plugin name */\n\t\t\t\t__(\n\t\t\t\t\t'The \"%s\" plugin has encountered an error and cannot be rendered.'\n\t\t\t\t),\n\t\t\t\tname\n\t\t\t)\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<FullscreenMode isActive={ isFullscreenActive } />\n\t\t\t<BrowserURL />\n\t\t\t<UnsavedChangesWarning />\n\t\t\t<AutosaveMonitor />\n\t\t\t<LocalAutosaveMonitor />\n\t\t\t<EditPostKeyboardShortcuts />\n\t\t\t<EditorKeyboardShortcutsRegister />\n\t\t\t<SettingsSidebar />\n\t\t\t<InterfaceSkeleton\n\t\t\t\tclassName={ className }\n\t\t\t\tlabels={ {\n\t\t\t\t\t...interfaceLabels,\n\t\t\t\t\tsecondarySidebar: secondarySidebarLabel,\n\t\t\t\t} }\n\t\t\t\theader={\n\t\t\t\t\t<Header\n\t\t\t\t\t\tsetEntitiesSavedStatesCallback={\n\t\t\t\t\t\t\tsetEntitiesSavedStatesCallback\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tsecondarySidebar={ secondarySidebar() }\n\t\t\t\tsidebar={\n\t\t\t\t\t( ! isMobileViewport || sidebarIsOpened ) && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ ! isMobileViewport && ! sidebarIsOpened && (\n\t\t\t\t\t\t\t\t<div className=\"edit-post-layout__toggle-sidebar-panel\">\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"edit-post-layout__toggle-sidebar-panel-button\"\n\t\t\t\t\t\t\t\t\t\tonClick={ openSidebarPanel }\n\t\t\t\t\t\t\t\t\t\taria-expanded={ false }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ hasBlockSelected\n\t\t\t\t\t\t\t\t\t\t\t? __( 'Open block settings' )\n\t\t\t\t\t\t\t\t\t\t\t: __( 'Open document settings' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<ComplementaryArea.Slot scope=\"core/edit-post\" />\n\t\t\t\t\t\t</>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tnotices={ <EditorSnackbars /> }\n\t\t\t\tcontent={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<EditorNotices />\n\t\t\t\t\t\t{ ( mode === 'text' || ! isRichEditingEnabled ) && (\n\t\t\t\t\t\t\t<TextEditor />\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ isRichEditingEnabled && mode === 'visual' && (\n\t\t\t\t\t\t\t<VisualEditor styles={ styles } />\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! isTemplateMode && (\n\t\t\t\t\t\t\t<div className=\"edit-post-layout__metaboxes\">\n\t\t\t\t\t\t\t\t<MetaBoxes location=\"normal\" />\n\t\t\t\t\t\t\t\t<MetaBoxes location=\"advanced\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ isMobileViewport && sidebarIsOpened && (\n\t\t\t\t\t\t\t<ScrollLock />\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<BlockStyles.Slot scope=\"core/block-inspector\" />\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\tfooter={\n\t\t\t\t\t! hasReducedUI &&\n\t\t\t\t\tshowBlockBreadcrumbs &&\n\t\t\t\t\t! isMobileViewport &&\n\t\t\t\t\tisRichEditingEnabled &&\n\t\t\t\t\tmode === 'visual' && (\n\t\t\t\t\t\t<div className=\"edit-post-layout__footer\">\n\t\t\t\t\t\t\t<BlockBreadcrumb rootLabelText={ documentLabel } />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tactions={\n\t\t\t\t\t<ActionsPanel\n\t\t\t\t\t\tcloseEntitiesSavedStates={ closeEntitiesSavedStates }\n\t\t\t\t\t\tisEntitiesSavedStatesOpen={\n\t\t\t\t\t\t\tentitiesSavedStatesCallback\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetEntitiesSavedStatesCallback={\n\t\t\t\t\t\t\tsetEntitiesSavedStatesCallback\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tshortcuts={ {\n\t\t\t\t\tprevious: previousShortcut,\n\t\t\t\t\tnext: nextShortcut,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<EditPostPreferencesModal />\n\t\t\t<KeyboardShortcutHelpModal />\n\t\t\t<WelcomeGuide />\n\t\t\t<StartPageOptions />\n\t\t\t<Popover.Slot />\n\t\t\t<PluginArea onError={ onPluginAreaError } />\n\t\t</>\n\t);\n}\n\nexport default Layout;\n","/**\n * Internal dependencies\n */\nimport {\n\tuseBlockSelectionListener,\n\tuseUpdatePostLinkListener,\n} from './listener-hooks';\n\n/**\n * Data component used for initializing the editor and re-initializes\n * when postId changes or on unmount.\n *\n * @param {number} postId The id of the post.\n * @return {null} This is a data component so does not render any ui.\n */\nexport default function EditorInitialization( { postId } ) {\n\tuseBlockSelectionListener( postId );\n\tuseUpdatePostLinkListener( postId );\n\treturn null;\n}\n","/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEffect, useRef } from '@wordpress/element';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport {\n\tSTORE_NAME,\n\tVIEW_AS_LINK_SELECTOR,\n\tVIEW_AS_PREVIEW_LINK_SELECTOR,\n} from '../../store/constants';\n\n/**\n * This listener hook monitors for block selection and triggers the appropriate\n * sidebar state.\n *\n * @param {number} postId The current post id.\n */\nexport const useBlockSelectionListener = ( postId ) => {\n\tconst { hasBlockSelection, isEditorSidebarOpened } = useSelect(\n\t\t( select ) => ( {\n\t\t\thasBlockSelection:\n\t\t\t\t!! select( blockEditorStore ).getBlockSelectionStart(),\n\t\t\tisEditorSidebarOpened: select( STORE_NAME ).isEditorSidebarOpened(),\n\t\t} ),\n\t\t[ postId ]\n\t);\n\n\tconst { openGeneralSidebar } = useDispatch( STORE_NAME );\n\n\tuseEffect( () => {\n\t\tif ( ! isEditorSidebarOpened ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( hasBlockSelection ) {\n\t\t\topenGeneralSidebar( 'edit-post/block' );\n\t\t} else {\n\t\t\topenGeneralSidebar( 'edit-post/document' );\n\t\t}\n\t}, [ hasBlockSelection, isEditorSidebarOpened ] );\n};\n\n/**\n * This listener hook monitors any change in permalink and updates the view\n * post link in the admin bar.\n *\n * @param {number} postId\n */\nexport const useUpdatePostLinkListener = ( postId ) => {\n\tconst { newPermalink } = useSelect(\n\t\t( select ) => ( {\n\t\t\tnewPermalink: select( editorStore ).getCurrentPost().link,\n\t\t} ),\n\t\t[ postId ]\n\t);\n\tconst nodeToUpdate = useRef();\n\n\tuseEffect( () => {\n\t\tnodeToUpdate.current =\n\t\t\tdocument.querySelector( VIEW_AS_PREVIEW_LINK_SELECTOR ) ||\n\t\t\tdocument.querySelector( VIEW_AS_LINK_SELECTOR );\n\t}, [ postId ] );\n\n\tuseEffect( () => {\n\t\tif ( ! newPermalink || ! nodeToUpdate.current ) {\n\t\t\treturn;\n\t\t}\n\t\tnodeToUpdate.current.setAttribute( 'href', newPermalink );\n\t}, [ newPermalink ] );\n};\n","/**\n * External dependencies\n */\nimport { forEach, map, without } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tEditorProvider,\n\tErrorBoundary,\n\tPostLockedModal,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport { StrictMode, useMemo } from '@wordpress/element';\nimport { SlotFillProvider } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { ShortcutProvider } from '@wordpress/keyboard-shortcuts';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport Layout from './components/layout';\nimport EditorInitialization from './components/editor-initialization';\nimport { store as editPostStore } from './store';\n\nfunction Editor( {\n\tpostId,\n\tpostType,\n\tsettings,\n\tinitialEdits,\n\tonError,\n\t...props\n} ) {\n\tconst {\n\t\thasFixedToolbar,\n\t\tfocusMode,\n\t\thasReducedUI,\n\t\thasInlineToolbar,\n\t\thasThemeStyles,\n\t\tpost,\n\t\tpreferredStyleVariations,\n\t\thiddenBlockTypes,\n\t\tblockTypes,\n\t\tkeepCaretInsideBlock,\n\t\tisTemplateMode,\n\t\ttemplate,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisFeatureActive,\n\t\t\t\t__experimentalGetPreviewDeviceType,\n\t\t\t\tisEditingTemplate,\n\t\t\t\tgetEditedPostTemplate,\n\t\t\t\tgetHiddenBlockTypes,\n\t\t\t} = select( editPostStore );\n\t\t\tconst { getEntityRecord, getPostType, getEntityRecords, canUser } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst { getEditorSettings } = select( editorStore );\n\t\t\tconst { getBlockTypes } = select( blocksStore );\n\t\t\tconst isTemplate = [ 'wp_template', 'wp_template_part' ].includes(\n\t\t\t\tpostType\n\t\t\t);\n\t\t\t// Ideally the initializeEditor function should be called using the ID of the REST endpoint.\n\t\t\t// to avoid the special case.\n\t\t\tlet postObject;\n\t\t\tif ( isTemplate ) {\n\t\t\t\tconst posts = getEntityRecords( 'postType', postType, {\n\t\t\t\t\twp_id: postId,\n\t\t\t\t} );\n\t\t\t\tpostObject = posts?.[ 0 ];\n\t\t\t} else {\n\t\t\t\tpostObject = getEntityRecord( 'postType', postType, postId );\n\t\t\t}\n\t\t\tconst supportsTemplateMode =\n\t\t\t\tgetEditorSettings().supportsTemplateMode;\n\t\t\tconst isViewable = getPostType( postType )?.viewable ?? false;\n\t\t\tconst canEditTemplate = canUser( 'create', 'templates' );\n\n\t\t\treturn {\n\t\t\t\thasFixedToolbar:\n\t\t\t\t\tisFeatureActive( 'fixedToolbar' ) ||\n\t\t\t\t\t__experimentalGetPreviewDeviceType() !== 'Desktop',\n\t\t\t\tfocusMode: isFeatureActive( 'focusMode' ),\n\t\t\t\thasReducedUI: isFeatureActive( 'reducedUI' ),\n\t\t\t\thasInlineToolbar: isFeatureActive( 'inlineToolbar' ),\n\t\t\t\thasThemeStyles: isFeatureActive( 'themeStyles' ),\n\t\t\t\tpreferredStyleVariations: select( preferencesStore ).get(\n\t\t\t\t\t'core/edit-post',\n\t\t\t\t\t'preferredStyleVariations'\n\t\t\t\t),\n\t\t\t\thiddenBlockTypes: getHiddenBlockTypes(),\n\t\t\t\tblockTypes: getBlockTypes(),\n\t\t\t\tkeepCaretInsideBlock: isFeatureActive( 'keepCaretInsideBlock' ),\n\t\t\t\tisTemplateMode: isEditingTemplate(),\n\t\t\t\ttemplate:\n\t\t\t\t\tsupportsTemplateMode && isViewable && canEditTemplate\n\t\t\t\t\t\t? getEditedPostTemplate()\n\t\t\t\t\t\t: null,\n\t\t\t\tpost: postObject,\n\t\t\t};\n\t\t},\n\t\t[ postType, postId ]\n\t);\n\n\tconst { updatePreferredStyleVariations, setIsInserterOpened } =\n\t\tuseDispatch( editPostStore );\n\n\tconst editorSettings = useMemo( () => {\n\t\tconst result = {\n\t\t\t...settings,\n\t\t\t__experimentalPreferredStyleVariations: {\n\t\t\t\tvalue: preferredStyleVariations,\n\t\t\t\tonChange: updatePreferredStyleVariations,\n\t\t\t},\n\t\t\thasFixedToolbar,\n\t\t\tfocusMode,\n\t\t\thasReducedUI,\n\t\t\thasInlineToolbar,\n\n\t\t\t// This is marked as experimental to give time for the quick inserter to mature.\n\t\t\t__experimentalSetIsInserterOpened: setIsInserterOpened,\n\t\t\tkeepCaretInsideBlock,\n\t\t\t// Keep a reference of the `allowedBlockTypes` from the server to handle use cases\n\t\t\t// where we need to differentiate if a block is disabled by the user or some plugin.\n\t\t\tdefaultAllowedBlockTypes: settings.allowedBlockTypes,\n\t\t};\n\n\t\t// Omit hidden block types if exists and non-empty.\n\t\tif ( hiddenBlockTypes.length > 0 ) {\n\t\t\t// Defer to passed setting for `allowedBlockTypes` if provided as\n\t\t\t// anything other than `true` (where `true` is equivalent to allow\n\t\t\t// all block types).\n\t\t\tconst defaultAllowedBlockTypes =\n\t\t\t\ttrue === settings.allowedBlockTypes\n\t\t\t\t\t? map( blockTypes, 'name' )\n\t\t\t\t\t: settings.allowedBlockTypes || [];\n\n\t\t\tresult.allowedBlockTypes = without(\n\t\t\t\tdefaultAllowedBlockTypes,\n\t\t\t\t...hiddenBlockTypes\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}, [\n\t\tsettings,\n\t\thasFixedToolbar,\n\t\tfocusMode,\n\t\thasReducedUI,\n\t\thiddenBlockTypes,\n\t\tblockTypes,\n\t\tpreferredStyleVariations,\n\t\tsetIsInserterOpened,\n\t\tupdatePreferredStyleVariations,\n\t\tkeepCaretInsideBlock,\n\t] );\n\n\tconst styles = useMemo( () => {\n\t\tconst themeStyles = [];\n\t\tconst presetStyles = [];\n\t\tforEach( settings.styles, ( style ) => {\n\t\t\tif ( ! style.__unstableType || style.__unstableType === 'theme' ) {\n\t\t\t\tthemeStyles.push( style );\n\t\t\t} else {\n\t\t\t\tpresetStyles.push( style );\n\t\t\t}\n\t\t} );\n\t\tconst defaultEditorStyles = [\n\t\t\t...settings.defaultEditorStyles,\n\t\t\t...presetStyles,\n\t\t];\n\t\treturn hasThemeStyles && themeStyles.length\n\t\t\t? settings.styles\n\t\t\t: defaultEditorStyles;\n\t}, [ settings, hasThemeStyles ] );\n\n\tif ( ! post ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StrictMode>\n\t\t\t<ShortcutProvider>\n\t\t\t\t<SlotFillProvider>\n\t\t\t\t\t<EditorProvider\n\t\t\t\t\t\tsettings={ editorSettings }\n\t\t\t\t\t\tpost={ post }\n\t\t\t\t\t\tinitialEdits={ initialEdits }\n\t\t\t\t\t\tuseSubRegistry={ false }\n\t\t\t\t\t\t__unstableTemplate={\n\t\t\t\t\t\t\tisTemplateMode ? template : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ErrorBoundary onError={ onError }>\n\t\t\t\t\t\t\t<EditorInitialization postId={ postId } />\n\t\t\t\t\t\t\t<Layout styles={ styles } />\n\t\t\t\t\t\t</ErrorBoundary>\n\t\t\t\t\t\t<PostLockedModal />\n\t\t\t\t\t</EditorProvider>\n\t\t\t\t</SlotFillProvider>\n\t\t\t</ShortcutProvider>\n\t\t</StrictMode>\n\t);\n}\n\nexport default Editor;\n","/**\n * WordPress dependencies\n */\nimport { BlockSettingsMenuControls } from '@wordpress/block-editor';\nimport { MenuItem } from '@wordpress/components';\nimport { compose } from '@wordpress/compose';\n\nconst isEverySelectedBlockAllowed = ( selected, allowed ) =>\n\tselected.filter( ( id ) => ! allowed.includes( id ) ).length === 0;\n\n/**\n * Plugins may want to add an item to the menu either for every block\n * or only for the specific ones provided in the `allowedBlocks` component property.\n *\n * If there are multiple blocks selected the item will be rendered if every block\n * is of one allowed type (not necessarily the same).\n *\n * @param {string[]} selectedBlocks Array containing the names of the blocks selected\n * @param {string[]} allowedBlocks Array containing the names of the blocks allowed\n * @return {boolean} Whether the item will be rendered or not.\n */\nconst shouldRenderItem = ( selectedBlocks, allowedBlocks ) =>\n\t! Array.isArray( allowedBlocks ) ||\n\tisEverySelectedBlockAllowed( selectedBlocks, allowedBlocks );\n\n/**\n * Renders a new item in the block settings menu.\n *\n * @param {Object} props Component props.\n * @param {Array} [props.allowedBlocks] An array containing a list of block names for which the item should be shown. If not present, it'll be rendered for any block. If multiple blocks are selected, it'll be shown if and only if all of them are in the allowed list.\n * @param {WPBlockTypeIconRender} [props.icon] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element.\n * @param {string} props.label The menu item text.\n * @param {Function} props.onClick Callback function to be executed when the user click the menu item.\n * @param {boolean} [props.small] Whether to render the label or not.\n * @param {string} [props.role] The ARIA role for the menu item.\n *\n * @example\n * ```js\n * // Using ES5 syntax\n * var __ = wp.i18n.__;\n * var PluginBlockSettingsMenuItem = wp.editPost.PluginBlockSettingsMenuItem;\n *\n * function doOnClick(){\n * \t// To be called when the user clicks the menu item.\n * }\n *\n * function MyPluginBlockSettingsMenuItem() {\n * \treturn wp.element.createElement(\n * \t\tPluginBlockSettingsMenuItem,\n * \t\t{\n * \t\t\tallowedBlocks: [ 'core/paragraph' ],\n * \t\t\ticon: 'dashicon-name',\n * \t\t\tlabel: __( 'Menu item text' ),\n * \t\t\tonClick: doOnClick,\n * \t\t}\n * \t);\n * }\n * ```\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { __ } from '@wordpress/i18n';\n * import { PluginBlockSettingsMenuItem } from '@wordpress/edit-post';\n *\n * const doOnClick = ( ) => {\n * // To be called when the user clicks the menu item.\n * };\n *\n * const MyPluginBlockSettingsMenuItem = () => (\n * <PluginBlockSettingsMenuItem\n * \t\tallowedBlocks={ [ 'core/paragraph' ] }\n * \t\ticon='dashicon-name'\n * \t\tlabel={ __( 'Menu item text' ) }\n * \t\tonClick={ doOnClick } />\n * );\n * ```\n *\n * @return {WPComponent} The component to be rendered.\n */\nconst PluginBlockSettingsMenuItem = ( {\n\tallowedBlocks,\n\ticon,\n\tlabel,\n\tonClick,\n\tsmall,\n\trole,\n} ) => (\n\t<BlockSettingsMenuControls>\n\t\t{ ( { selectedBlocks, onClose } ) => {\n\t\t\tif ( ! shouldRenderItem( selectedBlocks, allowedBlocks ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={ compose( onClick, onClose ) }\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tlabel={ small ? label : undefined }\n\t\t\t\t\trole={ role }\n\t\t\t\t>\n\t\t\t\t\t{ ! small && label }\n\t\t\t\t</MenuItem>\n\t\t\t);\n\t\t} }\n\t</BlockSettingsMenuControls>\n);\n\nexport default PluginBlockSettingsMenuItem;\n","/**\n * WordPress dependencies\n */\nimport { ActionItem } from '@wordpress/interface';\nimport { compose } from '@wordpress/compose';\nimport { MenuItem } from '@wordpress/components';\nimport { withPluginContext } from '@wordpress/plugins';\n\n/**\n * Renders a menu item in `Plugins` group in `More Menu` drop down, and can be used to as a button or link depending on the props provided.\n * The text within the component appears as the menu item label.\n *\n * @param {Object} props Component properties.\n * @param {string} [props.href] When `href` is provided then the menu item is represented as an anchor rather than button. It corresponds to the `href` attribute of the anchor.\n * @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered to the left of the menu item label.\n * @param {Function} [props.onClick=noop] The callback function to be executed when the user clicks the menu item.\n * @param {...*} [props.other] Any additional props are passed through to the underlying [MenuItem](https://github.com/WordPress/gutenberg/tree/HEAD/packages/components/src/menu-item/README.md) component.\n *\n * @example\n * ```js\n * // Using ES5 syntax\n * var __ = wp.i18n.__;\n * var PluginMoreMenuItem = wp.editPost.PluginMoreMenuItem;\n * var moreIcon = wp.element.createElement( 'svg' ); //... svg element.\n *\n * function onButtonClick() {\n * \talert( 'Button clicked.' );\n * }\n *\n * function MyButtonMoreMenuItem() {\n * \treturn wp.element.createElement(\n * \t\tPluginMoreMenuItem,\n * \t\t{\n * \t\t\ticon: moreIcon,\n * \t\t\tonClick: onButtonClick,\n * \t\t},\n * \t\t__( 'My button title' )\n * \t);\n * }\n * ```\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { __ } from '@wordpress/i18n';\n * import { PluginMoreMenuItem } from '@wordpress/edit-post';\n * import { more } from '@wordpress/icons';\n *\n * function onButtonClick() {\n * \talert( 'Button clicked.' );\n * }\n *\n * const MyButtonMoreMenuItem = () => (\n * \t<PluginMoreMenuItem\n * \t\ticon={ more }\n * \t\tonClick={ onButtonClick }\n * \t>\n * \t\t{ __( 'My button title' ) }\n * \t</PluginMoreMenuItem>\n * );\n * ```\n *\n * @return {WPComponent} The component to be rendered.\n */\nexport default compose(\n\twithPluginContext( ( context, ownProps ) => {\n\t\treturn {\n\t\t\tas: ownProps.as ?? MenuItem,\n\t\t\ticon: ownProps.icon || context.icon,\n\t\t\tname: 'core/edit-post/plugin-more-menu',\n\t\t};\n\t} )\n)( ActionItem );\n","/**\n * WordPress dependencies\n */\nimport { ComplementaryAreaMoreMenuItem } from '@wordpress/interface';\n\n/**\n * Renders a menu item in `Plugins` group in `More Menu` drop down,\n * and can be used to activate the corresponding `PluginSidebar` component.\n * The text within the component appears as the menu item label.\n *\n * @param {Object} props Component props.\n * @param {string} props.target A string identifying the target sidebar you wish to be activated by this menu item. Must be the same as the `name` prop you have given to that sidebar.\n * @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered to the left of the menu item label.\n *\n * @example\n * ```js\n * // Using ES5 syntax\n * var __ = wp.i18n.__;\n * var PluginSidebarMoreMenuItem = wp.editPost.PluginSidebarMoreMenuItem;\n * var moreIcon = wp.element.createElement( 'svg' ); //... svg element.\n *\n * function MySidebarMoreMenuItem() {\n * \treturn wp.element.createElement(\n * \t\tPluginSidebarMoreMenuItem,\n * \t\t{\n * \t\t\ttarget: 'my-sidebar',\n * \t\t\ticon: moreIcon,\n * \t\t},\n * \t\t__( 'My sidebar title' )\n * \t)\n * }\n * ```\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { __ } from '@wordpress/i18n';\n * import { PluginSidebarMoreMenuItem } from '@wordpress/edit-post';\n * import { more } from '@wordpress/icons';\n *\n * const MySidebarMoreMenuItem = () => (\n * \t<PluginSidebarMoreMenuItem\n * \t\ttarget=\"my-sidebar\"\n * \t\ticon={ more }\n * \t>\n * \t\t{ __( 'My sidebar title' ) }\n * \t</PluginSidebarMoreMenuItem>\n * );\n * ```\n *\n * @return {WPComponent} The component to be rendered.\n */\n\nexport default function PluginSidebarMoreMenuItem( props ) {\n\treturn (\n\t\t<ComplementaryAreaMoreMenuItem\n\t\t\t// Menu item is marked with unstable prop for backward compatibility.\n\t\t\t// @see https://github.com/WordPress/gutenberg/issues/14457\n\t\t\t__unstableExplicitMenuItem\n\t\t\tscope=\"core/edit-post\"\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport {\n\tregisterCoreBlocks,\n\t__experimentalRegisterExperimentalCoreBlocks,\n} from '@wordpress/block-library';\nimport { render, unmountComponentAtNode } from '@wordpress/element';\nimport { dispatch, select } from '@wordpress/data';\nimport { addFilter } from '@wordpress/hooks';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport './hooks';\nimport './plugins';\nimport Editor from './editor';\nimport { store as editPostStore } from './store';\n\n/**\n * Reinitializes the editor after the user chooses to reboot the editor after\n * an unhandled error occurs, replacing previously mounted editor element using\n * an initial state from prior to the crash.\n *\n * @param {Object} postType Post type of the post to edit.\n * @param {Object} postId ID of the post to edit.\n * @param {Element} target DOM node in which editor is rendered.\n * @param {?Object} settings Editor settings object.\n * @param {Object} initialEdits Programmatic edits to apply initially, to be\n * considered as non-user-initiated (bypass for\n * unsaved changes prompt).\n */\nexport function reinitializeEditor(\n\tpostType,\n\tpostId,\n\ttarget,\n\tsettings,\n\tinitialEdits\n) {\n\tunmountComponentAtNode( target );\n\tconst reboot = reinitializeEditor.bind(\n\t\tnull,\n\t\tpostType,\n\t\tpostId,\n\t\ttarget,\n\t\tsettings,\n\t\tinitialEdits\n\t);\n\n\trender(\n\t\t<Editor\n\t\t\tsettings={ settings }\n\t\t\tonError={ reboot }\n\t\t\tpostId={ postId }\n\t\t\tpostType={ postType }\n\t\t\tinitialEdits={ initialEdits }\n\t\t\trecovery\n\t\t/>,\n\t\ttarget\n\t);\n}\n\n/**\n * Initializes and returns an instance of Editor.\n *\n * @param {string} id Unique identifier for editor instance.\n * @param {string} postType Post type of the post to edit.\n * @param {Object} postId ID of the post to edit.\n * @param {?Object} settings Editor settings object.\n * @param {Object} initialEdits Programmatic edits to apply initially, to be\n * considered as non-user-initiated (bypass for\n * unsaved changes prompt).\n */\nexport function initializeEditor(\n\tid,\n\tpostType,\n\tpostId,\n\tsettings,\n\tinitialEdits\n) {\n\t// Prevent adding template part in the post editor.\n\t// Only add the filter when the post editor is initialized, not imported.\n\taddFilter(\n\t\t'blockEditor.__unstableCanInsertBlockType',\n\t\t'removeTemplatePartsFromInserter',\n\t\t( can, blockType ) => {\n\t\t\tif (\n\t\t\t\t! select( editPostStore ).isEditingTemplate() &&\n\t\t\t\tblockType.name === 'core/template-part'\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn can;\n\t\t}\n\t);\n\n\tconst target = document.getElementById( id );\n\tconst reboot = reinitializeEditor.bind(\n\t\tnull,\n\t\tpostType,\n\t\tpostId,\n\t\ttarget,\n\t\tsettings,\n\t\tinitialEdits\n\t);\n\n\tdispatch( preferencesStore ).setDefaults( 'core/edit-post', {\n\t\teditorMode: 'visual',\n\t\tfixedToolbar: false,\n\t\tfullscreenMode: true,\n\t\thiddenBlockTypes: [],\n\t\tinactivePanels: [],\n\t\tisPublishSidebarEnabled: true,\n\t\topenPanels: [ 'post-status' ],\n\t\tpreferredStyleVariations: {},\n\t\tshowBlockBreadcrumbs: true,\n\t\tshowIconLabels: false,\n\t\tshowListViewByDefault: false,\n\t\tthemeStyles: true,\n\t\twelcomeGuide: true,\n\t\twelcomeGuideTemplate: true,\n\t} );\n\n\tdispatch( blocksStore ).__experimentalReapplyBlockTypeFilters();\n\n\t// Check if the block list view should be open by default.\n\tif ( select( editPostStore ).isFeatureActive( 'showListViewByDefault' ) ) {\n\t\tdispatch( editPostStore ).setIsListViewOpened( true );\n\t}\n\n\tregisterCoreBlocks();\n\tif ( process.env.IS_GUTENBERG_PLUGIN ) {\n\t\t__experimentalRegisterExperimentalCoreBlocks( {\n\t\t\tenableFSEBlocks: settings.__unstableEnableFullSiteEditingBlocks,\n\t\t} );\n\t}\n\n\t// Show a console log warning if the browser is not in Standards rendering mode.\n\tconst documentMode =\n\t\tdocument.compatMode === 'CSS1Compat' ? 'Standards' : 'Quirks';\n\tif ( documentMode !== 'Standards' ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn(\n\t\t\t\"Your browser is using Quirks Mode. \\nThis can cause rendering issues such as blocks overlaying meta boxes in the editor. Quirks Mode can be triggered by PHP errors or HTML code appearing before the opening <!DOCTYPE html>. Try checking the raw page source or your site's PHP error log and resolving errors there, removing any HTML before the doctype, or disabling plugins.\"\n\t\t);\n\t}\n\n\t// This is a temporary fix for a couple of issues specific to Webkit on iOS.\n\t// Without this hack the browser scrolls the mobile toolbar off-screen.\n\t// Once supported in Safari we can replace this in favor of preventScroll.\n\t// For details see issue #18632 and PR #18686\n\t// Specifically, we scroll `interface-interface-skeleton__body` to enable a fixed top toolbar.\n\t// But Mobile Safari forces the `html` element to scroll upwards, hiding the toolbar.\n\n\tconst isIphone = window.navigator.userAgent.indexOf( 'iPhone' ) !== -1;\n\tif ( isIphone ) {\n\t\twindow.addEventListener( 'scroll', ( event ) => {\n\t\t\tconst editorScrollContainer = document.getElementsByClassName(\n\t\t\t\t'interface-interface-skeleton__body'\n\t\t\t)[ 0 ];\n\t\t\tif ( event.target === document ) {\n\t\t\t\t// Scroll element into view by scrolling the editor container by the same amount\n\t\t\t\t// that Mobile Safari tried to scroll the html element upwards.\n\t\t\t\tif ( window.scrollY > 100 ) {\n\t\t\t\t\teditorScrollContainer.scrollTop =\n\t\t\t\t\t\teditorScrollContainer.scrollTop + window.scrollY;\n\t\t\t\t}\n\t\t\t\t// Undo unwanted scroll on html element, but only in the visual editor.\n\t\t\t\tif (\n\t\t\t\t\tdocument.getElementsByClassName( 'is-mode-visual' )[ 0 ]\n\t\t\t\t) {\n\t\t\t\t\twindow.scrollTo( 0, 0 );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\trender(\n\t\t<Editor\n\t\t\tsettings={ settings }\n\t\t\tonError={ reboot }\n\t\t\tpostId={ postId }\n\t\t\tpostType={ postType }\n\t\t\tinitialEdits={ initialEdits }\n\t\t/>,\n\t\ttarget\n\t);\n}\n\nexport { default as PluginBlockSettingsMenuItem } from './components/block-settings-menu/plugin-block-settings-menu-item';\nexport { default as PluginDocumentSettingPanel } from './components/sidebar/plugin-document-setting-panel';\nexport { default as PluginMoreMenuItem } from './components/header/plugin-more-menu-item';\nexport { default as PluginPostPublishPanel } from './components/sidebar/plugin-post-publish-panel';\nexport { default as PluginPostStatusInfo } from './components/sidebar/plugin-post-status-info';\nexport { default as PluginPrePublishPanel } from './components/sidebar/plugin-pre-publish-panel';\nexport { default as PluginSidebar } from './components/sidebar/plugin-sidebar';\nexport { default as PluginSidebarMoreMenuItem } from './components/header/plugin-sidebar-more-menu-item';\nexport { default as __experimentalFullscreenModeClose } from './components/header/fullscreen-mode-close';\nexport { default as __experimentalMainDashboardButton } from './components/header/main-dashboard-button';\nexport { store } from './store';\n"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","key","call","join","module","exports","default","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","obj","prop","r","Symbol","toStringTag","value","window","_extends","assign","target","source","this","addFilter","MediaUpload","enhance","compose","withSelect","select","block","hasBlockSupport","name","blocks","blockEditorStore","getBlocks","firstOfSameType","find","originalBlockClientId","clientId","withDispatch","dispatch","selectFirst","selectBlock","withMultipleValidation","createHigherOrderComponent","BlockEdit","props","blockType","getBlockType","outboundType","blockName","transform","findTransform","getBlockTransforms","type","getOutboundType","style","minHeight","Warning","actions","Button","variant","onClick","__","onReplace","createBlock","attributes","title","SVG","xmlns","viewBox","Path","CopyContentMenuItem","createNotice","useDispatch","noticesStore","getText","useSelect","editorStore","getEditedPostAttribute","ref","useCopyToClipboard","isDismissible","MenuItem","metaBoxes","combineReducers","isSaving","state","action","locations","metaBoxesPerLocation","initialized","activeModal","publishSidebarActive","removedPanels","includes","panelName","deviceType","blockInserterPanel","isOpen","listViewPanel","isEditingTemplate","fillRule","clipRule","setDefaultComplementaryArea","scope","area","enableComplementaryArea","registry","preferencesStore","set","disableComplementaryArea","pinItem","item","pinnedItems","unpinItem","toggleFeature","featureName","deprecated","since","alternative","toggle","setFeatureValue","setFeatureDefaults","defaults","setDefaults","getActiveComplementaryArea","createRegistrySelector","isComplementaryAreaVisible","complementaryAreas","isItemPinned","isFeatureActive","store","createReduxStore","reducer","selectors","register","withPluginContext","context","ownProps","icon","identifier","complementaryAreaContext","as","selectedIcon","ComponentToUse","isSelected","interfaceStore","smallScreenTitle","children","className","toggleButtonProps","toggleButton","closeSmall","classnames","tabIndex","noop","ActionItem","Component","Fill","fpOnClick","Slot","ButtonGroup","fillProps","bubblesVirtually","fills","Children","initializedByPlugins","__unstableExplicitMenuItem","__unstableTarget","child","PluginsMenuItem","restProps","ComplementaryAreaMoreMenuItem","toggleProps","role","check","PinnedItems","ComplementaryAreaFill","ComplementaryAreaWrapped","withComplementaryAreaContext","closeLabel","header","headerClassName","isPinnable","panelClassName","toggleShortcut","isActiveByDefault","showIconLabels","isActive","isPinned","activeArea","isSmall","isLarge","_activeArea","viewportStore","isViewportMatch","previousIsSmall","useRef","shouldOpenWhenNotSmall","useEffect","current","useAdjustComplementaryListener","isPressed","label","showTooltip","onClose","shortcut","starFilled","starEmpty","Panel","isSticky","document","body","classList","contains","remove","add","forwardRef","footer","sidebar","secondarySidebar","notices","content","drawer","labels","shortcuts","navigateRegionsProps","useNavigateRegions","element","querySelector","useHTMLClass","mergedLabels","useMergeRefs","MoreMenuDropdown","DropdownComponent","DropdownMenu","popoverProps","moreVertical","position","tooltipPosition","PreferencesModal","closeModal","Modal","onRequestClose","size","cloneElement","width","height","PREFERENCES_MENU","PreferencesModalTabs","sections","isLargeViewport","useViewportMatch","activeMenu","setActiveMenu","useState","tabs","sectionsContentMap","useMemo","mappedTabs","reduce","accumulator","tabLabel","getCurrentTab","useCallback","tab","modalContent","TabPanel","initialTabName","onSelect","orientation","initialPath","path","Card","isBorderless","CardBody","map","Item","isAction","justify","FlexItem","isRTL","chevronLeft","chevronRight","section","CardHeader","gap","description","help","isChecked","onChange","ToggleControl","checked","openGeneralSidebar","editPostStore","closeGeneralSidebar","openModal","openPublishSidebar","closePublishSidebar","togglePublishSidebar","toggleEditorPanelEnabled","inactivePanels","updatedInactivePanels","filter","invactivePanelName","toggleEditorPanelOpened","openPanels","updatedOpenPanels","openPanelName","removeEditorPanel","feature","switchEditorMode","mode","clearSelectedBlock","message","speak","togglePinnedPluginItem","pluginName","updatePreferredStyleVariations","blockStyle","existingVariations","updatedVariations","showBlockTypes","blockNames","existingBlockNames","newBlockNames","without","castArray","hideBlockTypes","mergedBlockNames","Set","setAvailableMetaBoxesPerLocation","requestMetaBoxUpdates","async","tinyMCE","triggerSave","post","getCurrentPost","additionalData","comment_status","ping_status","sticky","author","Boolean","formDataToMerge","FormData","getActiveMetaBoxLocations","location","getMetaBoxContainer","formData","memo","currentFormData","append","forEach","apiFetch","url","_wpMetaBoxUrl","method","parse","metaBoxUpdatesSuccess","metaBoxUpdatesFailure","__experimentalSetPreviewDeviceType","setIsInserterOpened","setIsListViewOpened","setIsEditingTemplate","__unstableSwitchToTemplateMode","newTemplate","createSuccessNotice","__unstableCreateTemplate","template","savedTemplate","coreStore","saveEntityRecord","editEntityRecord","id","slug","metaBoxesInitialized","initializeMetaBoxes","__unstableIsEditorReady","postType","getCurrentPostType","postboxes","page","add_postbox_toggles","wasSavingPost","isSavingPost","wasAutosavingPost","isAutosavingPost","hasMetaBoxes","subscribe","shouldTriggerMetaboxesSave","LEAF_KEY","arrayOf","isShallowEqual","b","fromIndex","selector","getDependants","rootCache","normalizedGetDependants","getCache","dependants","dependant","cache","caches","isUniqueByDependants","has","WeakMap","clear","head","createCache","callSelector","node","args","len","lastDependants","next","prev","val","EMPTY_ARRAY","EMPTY_OBJECT","getEditorMode","isEditorSidebarOpened","activeGeneralSidebar","isPluginSidebarOpened","getActiveGeneralSidebarName","getPreferences","accumulatedPrefs","preferenceKey","panels","panelsWithEnabledState","accumulatedPanels","enabled","currentPanelState","opened","convertPanelsToOldFormat","getPreference","defaultValue","getHiddenBlockTypes","isPublishSidebarOpened","isEditorPanelRemoved","isEditorPanelEnabled","isEditorPanelOpened","isModalActive","modalName","isPluginItemPinned","createSelector","keys","isMetaBoxLocationActive","isMetaBoxLocationVisible","getMetaBoxesPerLocation","some","getAllMetaBoxes","values","flat","isSavingMetaBoxes","__experimentalGetPreviewDeviceType","isInserterOpened","__experimentalGetInsertionPoint","rootClientId","insertionIndex","filterValue","isListViewOpened","areMetaBoxesInitialized","getEditedPostTemplate","currentTemplate","templateWithSameSlug","getEntityRecords","per_page","getEditedEntityRecord","link","__experimentalGetTemplateForLink","STORE_NAME","displayShortcut","ToolsMoreMenuGroup","createSlotFill","isEmpty","MenuGroup","WelcomeGuideMenuItem","isTemplateMode","PreferenceToggleMenuItem","registerPlugin","render","href","addQueryArgs","post_type","external","rel","VisuallyHidden","TextEditor","isRichEditingEnabled","getEditorSettings","richEditingEnabled","TextEditorGlobalKeyboardShortcuts","PostTitle","PostTextEditor","small","areAdvancedSettingsOpened","keyboardShortcutsStore","getShortcutRepresentation","MaybeIframe","contentRef","shouldIframe","styles","assets","useMouseMoveTypingReset","display","WritingFlow","flex","VisualEditor","isWelcomeGuideVisible","wrapperBlockName","wrapperUniqueId","getCurrentPostId","_isTemplateMode","_wrapperBlockName","isCleanNewPost","themeHasDisabledLayoutStyles","themeSupportsLayout","_settings","getSettings","disableLayoutStyles","supportsLayout","__unstableResolvedAssets","desktopCanvasStyles","margin","flexFlow","background","templateModeStyles","borderRadius","border","borderBottom","resizedCanvasStyles","useResizeCanvas","defaultLayout","useSetting","previewMode","toLowerCase","paddingBottom","animatedStyles","useClipboardHandler","useTypewriter","useTypingObserver","useBlockSelectionClearer","blockSelectionClearerRef","layout","blockListLayoutClass","titleRef","focus","BlockTools","__unstableContentRef","VisualEditorGlobalKeyboardShortcuts","animate","padding","arrowLeft","initial","layoutDefinitions","definitions","contentEditable","uniqueId","BlockList","__experimentalLayout","__unstableBlockSettingsMenuFirstItem","getBlockSelectionStart","isModeToggleDisabled","codeEditingEnabled","registerShortcut","category","keyCombination","modifier","character","aliases","useShortcut","isDisabled","event","preventDefault","sidebarToOpen","textFormattingShortcuts","KeyCombination","forceAriaLabel","displayShortcutList","ariaLabel","shortcutAriaLabel","index","Fragment","alias","getShortcutKeyCombination","getShortcutDescription","getShortcutAliases","MODAL_NAME","ShortcutList","ShortcutSection","ShortcutCategorySection","categoryName","additionalShortcuts","categoryShortcuts","getCategoryShortcuts","concat","toggleModal","CustomFieldsConfirmation","willEnable","isReloading","setIsReloading","isBusy","disabled","getElementById","submit","areCustomFieldsEnabled","enableCustomFields","setIsChecked","isRemoved","ifCondition","BaseOption","EnablePluginDocumentSettingPanelOption","isPublishSidebarEnabled","enablePublishSidebar","disablePublishSidebar","isEnabled","ifViewportMatches","areCustomFieldsRegistered","sectionProps","thirdPartyMetaBoxes","blockTypes","onItemChange","CheckboxControl","BlockIcon","partial","BlockManagerCategory","instanceId","useInstanceId","defaultAllowedBlockTypes","hiddenBlockTypes","filteredBlockTypes","toggleVisible","nextIsChecked","toggleAllVisible","checkedBlockNames","titleId","isAllChecked","ariaChecked","getBlockTypes","getCategories","isMatchingSearchTerm","blocksStore","hiddenBlock","registeredBlock","numberOfHiddenBlocks","categories","debouncedSpeak","useDebounce","search","setSearch","parent","count","resultsFoundMessage","sprintf","_n","SearchControl","placeholder","nextSearch","EditPostPreferencesModal","showBlockBreadcrumbsOption","PostTaxonomies","taxonomyWrapper","taxonomy","PostFeaturedImageCheck","PostExcerptCheck","PostTypeSupportCheck","supportKeys","PageAttributesCheck","BrowserURL","constructor","super","historyId","componentDidUpdate","prevProps","postId","postStatus","setBrowserURL","setTrashURL","trashed","ids","getPostTrashedURL","history","replaceState","getPostEditURL","setState","status","wp_id","isRequestingSiteIcon","siteIconUrl","getEntityRecord","getPostType","isResolving","siteData","site_icon_url","disableMotion","useReducedMotion","buttonIcon","Icon","wordpress","variants","expand","scale","transition","duration","alt","src","whileHover","inserterButton","isInserterEnabled","isTextModeEnabled","isListViewOpen","listViewShortcut","hasInserterItems","getBlockRootClientId","getBlockSelectionEnd","isWideViewport","toolbarAriaLabel","toggleListView","overflowItems","ToolbarItem","TableOfContents","hasOutlineItemsDisabled","repositionDropdown","listView","openInserter","longLabel","_x","shortLabel","NavigableToolbar","onMouseDown","plus","ToolSelector","EditorHistoryUndo","EditorHistoryRedo","MODES","isCodeEditingEnabled","choices","choice","MenuItemsChoice","PreferencesMenuItem","info","messageActivated","messageDeactivated","hasPublishAction","isBeingScheduled","isEditedPostBeingScheduled","isPending","isCurrentPostPending","isPublished","isCurrentPostPublished","isScheduled","isCurrentPostScheduled","forceIsDirty","forceIsSaving","setEntitiesSavedStatesCallback","IS_TOGGLE","IS_BUTTON","isSmallerThanMediumViewport","component","PostPublishButton","isToggle","onToggle","DevicePreview","hasActiveMetaboxes","isPostSaveable","isViewable","isEditedPostSaveable","setPreviewDeviceType","setDeviceType","PostPreviewButton","forceIsAutosaveable","forcePreviewLink","textContent","slotName","MainDashboardButtonSlot","MainDashboardButton","slot","useSlot","DeleteTemplate","updateEditorSettings","editPost","deleteEntityRecord","showConfirmDialog","setShowConfirmDialog","templateTitle","isRevertable","has_theme_file","isDestructive","onConfirm","settings","newAvailableTemplates","pickBy","availableTemplates","_title","throwOnError","onCancel","EditTemplateTitle","forceEmpty","setForceEmpty","is_custom","TextControl","newTitle","mapValues","existingTitle","onBlur","TemplateDescription","level","weight","marginTop","isEditing","_isEditing","hasOptions","custom","isLink","Dropdown","contentClassName","renderToggle","chevronDown","renderContent","lineHeight","hasReducedUI","PostSavedState","InserterSidebar","insertionPoint","showMostUsedBlocks","isMobileViewport","TagName","inserterDialogRef","inserterDialogProps","useDialog","focusOnMount","libraryRef","focusSearch","close","showInserterHelpPanel","shouldFocusBlock","__experimentalInsertionIndex","__experimentalFilterValue","ListViewSidebar","focusOnMountRef","useFocusOnMount","headerFocusReturnRef","useFocusReturn","contentFocusReturnRef","labelId","onKeyDown","keyCode","ESCAPE","defaultPrevented","sidebarName","openDocumentSettings","documentLabel","getPostTypeLabel","documentAriaLabel","documentActiveClass","blockAriaLabel","blockActiveClass","templateAriaLabel","templateActiveClass","PostVisibilityToggle","usePostVisibilityLabel","rowRef","PostVisibilityCheck","canEdit","PanelRow","PostVisibilityLabel","anchorRef","PostVisibility","PostTrash","PostTrashCheck","PostSchedule","PostScheduleCheck","PostScheduleToggle","usePostScheduleLabel","fullLabel","full","PostStickyCheck","PostSticky","PostAuthorCheck","PostAuthor","PostSlugCheck","PostSlug","PostFormatCheck","PostFormat","PostPendingStatusCheck","PostPendingStatus","PluginPostStatusInfo","DEFAULT_TITLE","PostTemplateCreateModal","defaultBlockTemplate","setTitle","setIsBusy","cancel","onSubmit","newTemplateContent","serialize","tagName","inherit","cleanForSlug","Flex","align","expanded","PostTemplateForm","isPostsPage","fetchedTemplates","selectedTemplateSlug","canCreate","canUser","editorSettings","siteSettings","_isPostsPage","page_for_posts","canCreateTemplates","supportsTemplateMode","options","entries","fromEntries","rendered","selectedOption","option","isCreateModalOpen","setIsCreateModalOpen","addTemplate","Notice","SelectControl","hideLabelFromVision","PostTemplate","postTypeSlug","viewable","PostTemplateToggle","templateSlug","PostURL","PostURLCheck","PostURLToggle","usePostURLLabel","PANEL_NAME","isOpened","onTogglePanel","PanelBody","PostLastRevisionCheck","PostLastRevision","taxonomyMenuName","PostTaxonomiesCheck","applyWithSelect","applyWithDispatch","PostFeaturedImage","PostExcerpt","PostComments","PostPingbacks","PageAttributesParent","PageAttributesOrder","container","formRef","appendChild","Spinner","MetaBoxVisibility","componentDidMount","updateDOM","isVisible","MetaBoxes","useRegistry","isEditorReady","_areMetaBoxesInitialized","PluginDocumentSettingPanel","PluginSidebarEditPost","postTitle","FlexBlock","SIDEBAR_ACTIVE_BY_DEFAULT","Platform","web","native","keyboardShortcut","cog","BlockInspector","WelcomeGuideImage","nonAnimatedSrc","animatedSrc","srcSet","media","WelcomeGuideDefault","Guide","contentLabel","finishButtonText","onFinish","pages","image","createInterpolateElement","InserterIconImage","ExternalLink","WelcomeGuideTemplate","WelcomeGuide","PluginPostPublishPanel","initialOpen","PluginPrePublishPanel","ActionsPanel","closeEntitiesSavedStates","isEntitiesSavedStatesOpen","publishSidebarOpened","hasNonPostEntityChanges","openEntitiesSavedStates","unmountableContent","PostPublishPanel","PrePublishExtension","PostPublishExtension","EntitiesSavedStates","useStartPatterns","blockPatternsWithPostContentBlockType","__experimentalGetPatternsByBlockTypes","pattern","postTypes","PatternSelection","onChoosePattern","blockPatterns","shownBlockPatterns","useAsyncList","resetEditorBlocks","shownPatterns","onClickPattern","_pattern","START_PAGE_MODAL_STATES","StartPageOptions","modalState","setModalState","hasStartPattern","shouldOpenModel","getEditedPostContent","interfaceLabels","isHugeViewport","createErrorNotice","isFullscreenActive","sidebarIsOpened","hasFixedToolbar","previousShortcut","nextShortcut","hasBlockSelected","showBlockBreadcrumbs","postTypeLabel","getAllShortcutKeyCombinations","entitiesSavedStatesCallback","secondarySidebarLabel","UnsavedChangesWarning","AutosaveMonitor","LocalAutosaveMonitor","EditorKeyboardShortcutsRegister","EditorSnackbars","EditorNotices","ScrollLock","BlockStyles","BlockBreadcrumb","rootLabelText","previous","Popover","PluginArea","onError","EditorInitialization","hasBlockSelection","useBlockSelectionListener","newPermalink","nodeToUpdate","setAttribute","useUpdatePostLinkListener","initialEdits","focusMode","hasInlineToolbar","hasThemeStyles","preferredStyleVariations","keepCaretInsideBlock","postObject","posts","canEditTemplate","result","__experimentalPreferredStyleVariations","__experimentalSetIsInserterOpened","allowedBlockTypes","themeStyles","presetStyles","__unstableType","defaultEditorStyles","StrictMode","ShortcutProvider","SlotFillProvider","EditorProvider","useSubRegistry","__unstableTemplate","ErrorBoundary","PostLockedModal","allowedBlocks","BlockSettingsMenuControls","selectedBlocks","allowed","shouldRenderItem","PluginSidebarMoreMenuItem","reinitializeEditor","unmountComponentAtNode","reboot","bind","recovery","initializeEditor","can","editorMode","fixedToolbar","fullscreenMode","showListViewByDefault","welcomeGuide","welcomeGuideTemplate","__experimentalReapplyBlockTypeFilters","registerCoreBlocks","__experimentalRegisterExperimentalCoreBlocks","enableFSEBlocks","__unstableEnableFullSiteEditingBlocks","compatMode","console","warn","navigator","userAgent","indexOf","addEventListener","editorScrollContainer","getElementsByClassName","scrollY","scrollTop","scrollTo"],"sourceRoot":""}
|
changelog.txt
CHANGED
@@ -1,374 +1,399 @@
|
|
1 |
== Changelog ==
|
2 |
|
3 |
-
= 14.0.
|
4 |
|
5 |
-
## Changelog
|
6 |
-
|
7 |
-
### Enhancements
|
8 |
-
|
9 |
-
- Add optional capture group to URL regex in wp-env. ([43200](https://github.com/WordPress/gutenberg/pull/43200))
|
10 |
-
- Core Data: Add canRead to useResourcePermissions. ([43484](https://github.com/WordPress/gutenberg/pull/43484))
|
11 |
-
- Element: Remove `enzyme` from `platform` test. ([43531](https://github.com/WordPress/gutenberg/pull/43531))
|
12 |
-
- [Create-block] Add `--variant` flag to allow creation of different block type variants. ([41289](https://github.com/WordPress/gutenberg/pull/41289))
|
13 |
-
- Use str_starts_with. ([43371](https://github.com/WordPress/gutenberg/pull/43371))
|
14 |
-
- [Create Block] Adding a `--no-plugin` flag to scaffold only block files. ([41642](https://github.com/WordPress/gutenberg/pull/41642))
|
15 |
-
- Customize widgets: Fix top contents cutoff in keyboard shortcuts. ([43391](https://github.com/WordPress/gutenberg/pull/43391))
|
16 |
-
|
17 |
-
#### Design Tools
|
18 |
-
|
19 |
-
As part of the effort to improve design tool consistency for typography and spacing on blocks ([43242](https://github.com/WordPress/gutenberg/issues/43242)), there's been a lot of work done to blocks during this release to add missing supports to them.
|
20 |
-
|
21 |
-
Added typography support:
|
22 |
-
|
23 |
-
- Paragraph: ([39642](https://github.com/WordPress/gutenberg/pull/39642))
|
24 |
-
- Categories List: ([43254](https://github.com/WordPress/gutenberg/pull/43254))
|
25 |
-
- Code Block: ([43255](https://github.com/WordPress/gutenberg/pull/43255))
|
26 |
-
- Column Block: ([43252](https://github.com/WordPress/gutenberg/pull/43252))
|
27 |
-
- Columns Block: ([43253](https://github.com/WordPress/gutenberg/pull/43253))
|
28 |
-
- Comment Author Name: ([43256](https://github.com/WordPress/gutenberg/pull/43256))
|
29 |
-
- Comment Date: ([43262](https://github.com/WordPress/gutenberg/pull/43262))
|
30 |
-
- Comment Edit Link: ([43263](https://github.com/WordPress/gutenberg/pull/43263))
|
31 |
-
- Comment Template: ([43266](https://github.com/WordPress/gutenberg/pull/43266))
|
32 |
-
- Comments Content: ([43257](https://github.com/WordPress/gutenberg/pull/43257))
|
33 |
-
- Comments Pagination: ([43288](https://github.com/WordPress/gutenberg/pull/43288), [43289](https://github.com/WordPress/gutenberg/pull/43289), [43290](https://github.com/WordPress/gutenberg/pull/43290), [43287](https://github.com/WordPress/gutenberg/pull/43287))
|
34 |
-
- Comments Reply Link: ([43264](https://github.com/WordPress/gutenberg/pull/43264))
|
35 |
-
- Comments Title: ([43291](https://github.com/WordPress/gutenberg/pull/43291))
|
36 |
-
- Comments: ([43286](https://github.com/WordPress/gutenberg/pull/43286))
|
37 |
-
- Cover: ([43298](https://github.com/WordPress/gutenberg/pull/43298))
|
38 |
-
- Group: ([43308](https://github.com/WordPress/gutenberg/pull/43308))
|
39 |
-
- Media & Text: ([43314](https://github.com/WordPress/gutenberg/pull/43314))
|
40 |
-
- Navigation: ([43542](https://github.com/WordPress/gutenberg/pull/43542))
|
41 |
-
- Post Author Biography: ([43318](https://github.com/WordPress/gutenberg/pull/43318))
|
42 |
-
- Post Author Name: ([43319](https://github.com/WordPress/gutenberg/pull/43319))
|
43 |
-
- Post Author: ([43317](https://github.com/WordPress/gutenberg/pull/43317))
|
44 |
-
- Post Comments Count: ([43321](https://github.com/WordPress/gutenberg/pull/43321))
|
45 |
-
- Post Comments Link: ([43338](https://github.com/WordPress/gutenberg/pull/43338))
|
46 |
-
- Post Date: ([43340](https://github.com/WordPress/gutenberg/pull/43340))
|
47 |
-
- Post Navigation Link: ([43344](https://github.com/WordPress/gutenberg/pull/43344))
|
48 |
-
- Post Template: ([43342](https://github.com/WordPress/gutenberg/pull/43342))
|
49 |
-
- Post Terms: ([43343](https://github.com/WordPress/gutenberg/pull/43343))
|
50 |
-
- Preformatted: ([43345](https://github.com/WordPress/gutenberg/pull/43345))
|
51 |
-
- Pullquote: ([43346](https://github.com/WordPress/gutenberg/pull/43346))
|
52 |
-
- Table of Contents: ([43509](https://github.com/WordPress/gutenberg/pull/43509))
|
53 |
-
|
54 |
-
Added spacing supports:
|
55 |
-
|
56 |
-
- Paragraph: Add spacing block supports. ([43455](https://github.com/WordPress/gutenberg/pull/43455))
|
57 |
-
- Heading: Add padding support. ([43454](https://github.com/WordPress/gutenberg/pull/43454))
|
58 |
-
- List: Add spacing block supports. ([43402](https://github.com/WordPress/gutenberg/pull/43402))
|
59 |
-
- Media & Text: Add spacing block supports. ([43456](https://github.com/WordPress/gutenberg/pull/43456))
|
60 |
-
- Post Date: Add spacing support. ([43406](https://github.com/WordPress/gutenberg/pull/43406))
|
61 |
-
- Post Title: Add padding support. ([43457](https://github.com/WordPress/gutenberg/pull/43457))
|
62 |
-
- Query Title: Add padding support. ([43458](https://github.com/WordPress/gutenberg/pull/43458))
|
63 |
-
- Spacer: Add spacing block supports. ([43366](https://github.com/WordPress/gutenberg/pull/43366))
|
64 |
-
- Table of contents: Add spacing supports. ([43368](https://github.com/WordPress/gutenberg/pull/43368))
|
65 |
-
- Table: Add spacing block supports. ([43370](https://github.com/WordPress/gutenberg/pull/43370))
|
66 |
-
- Tag cloud: Add spacing block supports. ([43367](https://github.com/WordPress/gutenberg/pull/43367))
|
67 |
-
- Term description: Add spacing block supports. ([43372](https://github.com/WordPress/gutenberg/pull/43372))
|
68 |
-
- Verse: Add margin support. ([43461](https://github.com/WordPress/gutenberg/pull/43461))
|
69 |
-
- Video: Add spacing block supports. ([43365](https://github.com/WordPress/gutenberg/pull/43365))
|
70 |
-
|
71 |
-
Added other supports:
|
72 |
-
|
73 |
-
- Gallery: Add background color block supports. ([43294](https://github.com/WordPress/gutenberg/pull/43294))
|
74 |
-
- Post Featured Image: Add border support applied to inner img. ([42847](https://github.com/WordPress/gutenberg/pull/42847))
|
75 |
-
- Social Links: Enable alpha on color pickers. ([43453](https://github.com/WordPress/gutenberg/pull/43453))
|
76 |
-
- Social links: Add background color block supports. ([43293](https://github.com/WordPress/gutenberg/pull/43293))
|
77 |
-
- Table of contents block: Add color block supports. ([43363](https://github.com/WordPress/gutenberg/pull/43363))
|
78 |
|
79 |
|
80 |
-
|
81 |
-
- (Custom)SelectControl: Refresh and refactor chevron. ([42962](https://github.com/WordPress/gutenberg/pull/42962))
|
82 |
-
- Always use `screen` for `testing-library` queries. ([43152](https://github.com/WordPress/gutenberg/pull/43152))
|
83 |
-
- Autocomplete: Use KeyboardEvent.code instead of KeyboardEvent.keyCode. ([43432](https://github.com/WordPress/gutenberg/pull/43432))
|
84 |
-
- Card: Migrate to TypeScript. ([42941](https://github.com/WordPress/gutenberg/pull/42941))
|
85 |
-
- ComboboxControl: Normalize hyphen-like Unicode characters to ASCII hyphens when matching search queries. ([42942](https://github.com/WordPress/gutenberg/pull/42942))
|
86 |
-
- CustomGradientPicker: Use KeyboardEvent.code instead of KeyboardEvent.keyCode. ([43437](https://github.com/WordPress/gutenberg/pull/43437))
|
87 |
-
- DateTimePicker: Replace react-dates and moment with useLilius and date-fns. ([43005](https://github.com/WordPress/gutenberg/pull/43005))
|
88 |
-
- FocalPointPicker: Use KeyboardEvent.code, partially refactor tests to modern RTL and user-event. ([43441](https://github.com/WordPress/gutenberg/pull/43441))
|
89 |
-
- FontSizePicker: Add a flag to remove bottom margin. ([43062](https://github.com/WordPress/gutenberg/pull/43062))
|
90 |
-
- FormTokenField: Add the ability to auto-select first matching suggestion for incomplete token. ([42527](https://github.com/WordPress/gutenberg/pull/42527))
|
91 |
-
- FormTokenField: Use KeyboardEvent.code, refactor tests to model RTL and user-event. ([43442](https://github.com/WordPress/gutenberg/pull/43442))
|
92 |
-
- Modal: Use code instead of keyCode for keyboard events. ([43429](https://github.com/WordPress/gutenberg/pull/43429))
|
93 |
-
- Popover: Move eslint-disable comment to the correct deps array. ([43320](https://github.com/WordPress/gutenberg/pull/43320))
|
94 |
-
- ToggleGroupControl: Improve styling for icon options. ([43060](https://github.com/WordPress/gutenberg/pull/43060))
|
95 |
-
|
96 |
-
#### Block Library
|
97 |
-
- Add a setting to hide the prefix in the archive title. ([42594](https://github.com/WordPress/gutenberg/pull/42594))
|
98 |
-
- Embed: Update Reddit icon. ([43326](https://github.com/WordPress/gutenberg/pull/43326))
|
99 |
-
- Post date: Add option to display as the last modified date. ([42312](https://github.com/WordPress/gutenberg/pull/42312))
|
100 |
-
- Reset focalPoint after replacing the cover image. ([42859](https://github.com/WordPress/gutenberg/pull/42859))
|
101 |
-
- Social Link: Update Reddit icon and color to match brand guidelines. ([43325](https://github.com/WordPress/gutenberg/pull/43325))
|
102 |
-
- Try "constrained" content width as new layout type. ([42763](https://github.com/WordPress/gutenberg/pull/42763))
|
103 |
-
- Try: Add a clickable Group setup state. ([40664](https://github.com/WordPress/gutenberg/pull/40664))
|
104 |
-
- Use page list instead of placeholder as fallback. ([42735](https://github.com/WordPress/gutenberg/pull/42735))
|
105 |
-
- [Query Loop]: Honour intended post type when previewing patterns and when replacing them with patterns. ([43285](https://github.com/WordPress/gutenberg/pull/43285))
|
106 |
-
- List: Use nested blocks. ([42711](https://github.com/WordPress/gutenberg/pull/42711))
|
107 |
-
|
108 |
-
#### Global Styles
|
109 |
-
- BlockGap: Add axial gap option to global styles where available. ([42490](https://github.com/WordPress/gutenberg/pull/42490))
|
110 |
-
- BlockGap: Add support for spacing presets. ([43296](https://github.com/WordPress/gutenberg/pull/43296))
|
111 |
-
- Spacing presets: Add check for 0 spacing steps. ([43105](https://github.com/WordPress/gutenberg/pull/43105))
|
112 |
-
- Spacing presets: Add support for margins. ([43246](https://github.com/WordPress/gutenberg/pull/43246))
|
113 |
-
- Spacing presets: Implement disabling of custom space sizes. ([43216](https://github.com/WordPress/gutenberg/pull/43216))
|
114 |
-
- Pseudo-elements supports on button elements. ([43088](https://github.com/WordPress/gutenberg/pull/43088))
|
115 |
-
|
116 |
-
#### CSS & Styling
|
117 |
-
- Placeholder: Add blurred background to work in nested cases. ([43379](https://github.com/WordPress/gutenberg/pull/43379))
|
118 |
-
- Placeholder: Refactor and simplify dashed placeholders used for Featured Image & Site Logo. ([43228](https://github.com/WordPress/gutenberg/pull/43228))
|
119 |
-
|
120 |
-
#### Data Layer
|
121 |
-
- [data] Export the type for the combineReducers export. ([43516](https://github.com/WordPress/gutenberg/pull/43516))
|
122 |
-
|
123 |
-
#### Site Editor
|
124 |
-
- Template Part: Allow changing properties in focus mode. ([43151](https://github.com/WordPress/gutenberg/pull/43151))
|
125 |
-
|
126 |
-
#### Block Editor
|
127 |
-
- Refactor `LinkControl` tests to `@testing-library`. ([43147](https://github.com/WordPress/gutenberg/pull/43147))
|
128 |
-
|
129 |
|
130 |
### Bug Fixes
|
131 |
|
132 |
-
- Create Block: Refactor handling for template variants. ([43481](https://github.com/WordPress/gutenberg/pull/43481))
|
133 |
-
- Fix no-results grammar. ([43168](https://github.com/WordPress/gutenberg/pull/43168))
|
134 |
-
- Fix spinner causing a flash when loading site editor. ([43226](https://github.com/WordPress/gutenberg/pull/43226))
|
135 |
-
- Image: Fix unclickable buttons. ([43361](https://github.com/WordPress/gutenberg/pull/43361))
|
136 |
-
- Keycodes: Fix display of symbols in keyboard shortcut modal. ([43137](https://github.com/WordPress/gutenberg/pull/43137))
|
137 |
-
- MediaReplaceFlow: Reset default LinkControl margins. ([43156](https://github.com/WordPress/gutenberg/pull/43156))
|
138 |
-
- Post title: Fix pasting into existing content. ([43123](https://github.com/WordPress/gutenberg/pull/43123))
|
139 |
-
- [Block Editor]: Fix block switcher label to take into account block variations. ([43309](https://github.com/WordPress/gutenberg/pull/43309))
|
140 |
-
- [useEntityRecord] Pass the correct kind, name, and recordId to getEditedEntityRecord. ([43517](https://github.com/WordPress/gutenberg/pull/43517))
|
141 |
-
- wp-env: Set core source to latest when null. ([43133](https://github.com/WordPress/gutenberg/pull/43133))
|
142 |
-
|
143 |
-
#### Block Library
|
144 |
-
- Ensure the block toolbar doesn't overlap block by modifying forcePosition and shift popover props. ([42887](https://github.com/WordPress/gutenberg/pull/42887))
|
145 |
-
- Ensure pagination numbers have an href in block edit function. ([43354](https://github.com/WordPress/gutenberg/pull/43354))
|
146 |
-
- Fix Post Featured Image border attributes. ([43426](https://github.com/WordPress/gutenberg/pull/43426))
|
147 |
-
- Fix classic block converted to regular blocks when clicking new 'Edit visually' button. ([43219](https://github.com/WordPress/gutenberg/pull/43219))
|
148 |
-
- Fix featured image being unselectable using arrow keys. ([43323](https://github.com/WordPress/gutenberg/pull/43323))
|
149 |
-
- Fix navigation block undefined index error on frontend. ([43302](https://github.com/WordPress/gutenberg/pull/43302))
|
150 |
-
- Gallery block: Ensure image attributes copy correctly between transforms. ([42796](https://github.com/WordPress/gutenberg/pull/42796))
|
151 |
-
- Home Link: Fix undo trap. ([43112](https://github.com/WordPress/gutenberg/pull/43112))
|
152 |
-
- List v2: Copy list wrapper when copying list items. ([42860](https://github.com/WordPress/gutenberg/pull/42860))
|
153 |
-
- Navigation: Page List fix missing padding. ([43358](https://github.com/WordPress/gutenberg/pull/43358))
|
154 |
-
- Prevent query block from looping in classic themes. ([43221](https://github.com/WordPress/gutenberg/pull/43221))
|
155 |
-
- Pullquote block: Avoid text-align settings affecting block width and font size. ([43188](https://github.com/WordPress/gutenberg/pull/43188))
|
156 |
-
- Pullquote block: Remove font definition from the default block styles. ([43195](https://github.com/WordPress/gutenberg/pull/43195))
|
157 |
-
- taxonomy-controls.js: Change REST context to "view" when fetching taxonomy terms. ([43274](https://github.com/WordPress/gutenberg/pull/43274))
|
158 |
-
- Home Link: Properly close tags. ([43706](https://github.com/WordPress/gutenberg/pull/43706))
|
159 |
-
- Social Link: Fix background color on WhatsApp icon. ([43683](https://github.com/WordPress/gutenberg/pull/43683))
|
160 |
-
|
161 |
-
#### Components
|
162 |
-
- (Custom)SelectControl: Truncate long options. ([43301](https://github.com/WordPress/gutenberg/pull/43301))
|
163 |
-
- AlignmentMatrixControl: Fix `width` bug. ([43482](https://github.com/WordPress/gutenberg/pull/43482))
|
164 |
-
- ColorPalette, GradientPicker: Fix color picker popover positioning. ([42989](https://github.com/WordPress/gutenberg/pull/42989))
|
165 |
-
- ColorPalette: Make sure "key" is unique when iterating over color entries with the same value. ([43096](https://github.com/WordPress/gutenberg/pull/43096))
|
166 |
-
- Dropdown: Anchor popover to the dropdown wrapper (instead of the toggle). ([43377](https://github.com/WordPress/gutenberg/pull/43377))
|
167 |
-
- Fix block toolbar offset in site editor when toggling sidebars. ([43172](https://github.com/WordPress/gutenberg/pull/43172))
|
168 |
-
- Fix popover glitch that results in incorrect toolbar positioning in site editor. ([43267](https://github.com/WordPress/gutenberg/pull/43267))
|
169 |
-
- Improve appearance of controls in the Global Styles Typography panel. ([43304](https://github.com/WordPress/gutenberg/pull/43304))
|
170 |
-
- Popover: Fix and improve opening animation, use framer motion. ([43186](https://github.com/WordPress/gutenberg/pull/43186))
|
171 |
-
- Popover: Make sure offset middleware always applies the latest frame offset values. ([43329](https://github.com/WordPress/gutenberg/pull/43329))
|
172 |
-
- Refactor `Guide` tests to `@testing-library/react`. ([43380](https://github.com/WordPress/gutenberg/pull/43380))
|
173 |
-
|
174 |
-
#### Global Styles
|
175 |
-
- Check for recursive dynamic reference in the site editor. ([43166](https://github.com/WordPress/gutenberg/pull/43166))
|
176 |
-
- Duotone: Prevent early return blocking other style generation. ([43300](https://github.com/WordPress/gutenberg/pull/43300))
|
177 |
-
- Fix dynamic references on the site editor. ([42976](https://github.com/WordPress/gutenberg/pull/42976))
|
178 |
-
- Fix error in handling spacing preset slugs. ([43237](https://github.com/WordPress/gutenberg/pull/43237))
|
179 |
-
- Layout: Re-instate alignwide and alignfull in flow layout get alignments. ([43502](https://github.com/WordPress/gutenberg/pull/43502))
|
180 |
-
- Spacing presets: Fix/minor issues noted in initial UI PR. ([43214](https://github.com/WordPress/gutenberg/pull/43214))
|
181 |
-
- Layout: Fix has-global-padding classname for constrained layouts without contentSize. ([43689](https://github.com/WordPress/gutenberg/pull/43689))
|
182 |
-
|
183 |
-
#### Block Editor
|
184 |
-
- Fix Cmd+A issue in Storybook. ([43145](https://github.com/WordPress/gutenberg/pull/43145))
|
185 |
-
- Fix drag and drop indicator before first block and after last block. ([43135](https://github.com/WordPress/gutenberg/pull/43135))
|
186 |
-
- Fix spinner position in URLInput component. ([43472](https://github.com/WordPress/gutenberg/pull/43472))
|
187 |
-
- Partial select: Fix selecting into image. ([42983](https://github.com/WordPress/gutenberg/pull/42983))
|
188 |
-
|
189 |
-
#### Design Tools
|
190 |
-
- Border Radius: Prevent invalid css unit only styles or empty radii style attribute. ([42409](https://github.com/WordPress/gutenberg/pull/42409))
|
191 |
-
- Border Support: Fix disabling of border style control. ([43109](https://github.com/WordPress/gutenberg/pull/43109))
|
192 |
-
- Post Comments Count: Prevent text-decoration from affecting warning. ([43497](https://github.com/WordPress/gutenberg/pull/43497))
|
193 |
-
|
194 |
-
#### Site Editor
|
195 |
-
- Do not show scrollbar when toolbar overflows the editor wrapper. ([43332](https://github.com/WordPress/gutenberg/pull/43332))
|
196 |
-
- Fix template part focus mode resizable editor height. ([43408](https://github.com/WordPress/gutenberg/pull/43408))
|
197 |
-
|
198 |
-
#### npm Packages
|
199 |
-
- Jest Preset: Ignore `is-plain-obj` transformation. ([43179](https://github.com/WordPress/gutenberg/pull/43179))
|
200 |
-
- Jest Preset: Improve `is-plain-obj` transformation ignore. ([43271](https://github.com/WordPress/gutenberg/pull/43271))
|
201 |
-
|
202 |
-
#### Widgets Editor
|
203 |
-
- Fix legacy widget form positioning in customizer. ([43297](https://github.com/WordPress/gutenberg/pull/43297))
|
204 |
-
|
205 |
-
#### CSS & Styling
|
206 |
-
- Group/Stack/Row: Scope the dashed placeholder rules. ([43169](https://github.com/WordPress/gutenberg/pull/43169))
|
207 |
-
|
208 |
-
#### List View
|
209 |
-
- Ensure long anchors don't cause the List View to extend. ([43134](https://github.com/WordPress/gutenberg/pull/43134))
|
210 |
-
|
211 |
#### Post Editor
|
212 |
-
-
|
213 |
-
|
214 |
-
#### Patterns
|
215 |
-
- Fix custom placeholder not displaying on subsequent Paragraph blocks. ([42519](https://github.com/WordPress/gutenberg/pull/42519))
|
216 |
-
|
217 |
-
### Accessibility
|
218 |
-
- Block Editor: Remove `aria-selected` from `LinkPreview`. ([43279](https://github.com/WordPress/gutenberg/pull/43279))
|
219 |
-
- Block Editor: Replace `aria-owns` with `aria-controls` in `URLInput`. ([43278](https://github.com/WordPress/gutenberg/pull/43278))
|
220 |
-
- Separator: Disable the contrastChecker via block.json. ([43357](https://github.com/WordPress/gutenberg/pull/43357))
|
221 |
-
- Fix Top toolbar buttons tooltips and style when 'Show button text labels' is enabled. ([42815](https://github.com/WordPress/gutenberg/pull/42815))
|
222 |
-
|
223 |
-
### Performance
|
224 |
-
|
225 |
-
Lodash is known to unnecessarily inflate the bundle size of packages, and in most cases, it can be replaced with native language functionality. See these for more information and rationale: ([16938](https://github.com/WordPress/gutenberg/issues/16938#issuecomment-602837246), [17025](https://github.com/WordPress/gutenberg/issues/17025), [39495](https://github.com/WordPress/gutenberg/issues/39495))
|
226 |
-
|
227 |
-
The related PRs are: [43118](https://github.com/WordPress/gutenberg/pull/43118), [43306](https://github.com/WordPress/gutenberg/pull/43306), [43389](https://github.com/WordPress/gutenberg/pull/43389), [42466](https://github.com/WordPress/gutenberg/pull/42466), [43362](https://github.com/WordPress/gutenberg/pull/43362), [43100](https://github.com/WordPress/gutenberg/pull/43100), [43420](https://github.com/WordPress/gutenberg/pull/43420), [43117](https://github.com/WordPress/gutenberg/pull/43117), [42467](https://github.com/WordPress/gutenberg/pull/42467), [42502](https://github.com/WordPress/gutenberg/pull/42502), [43220](https://github.com/WordPress/gutenberg/pull/43220), [43224](https://github.com/WordPress/gutenberg/pull/43224), [43258](https://github.com/WordPress/gutenberg/pull/43258), [43374](https://github.com/WordPress/gutenberg/pull/43374), [43518](https://github.com/WordPress/gutenberg/pull/43518), [43474](https://github.com/WordPress/gutenberg/pull/43474), [43229](https://github.com/WordPress/gutenberg/pull/43229), [43411](https://github.com/WordPress/gutenberg/pull/43411), [42465](https://github.com/WordPress/gutenberg/pull/42465), [43231](https://github.com/WordPress/gutenberg/pull/43231), [43479](https://github.com/WordPress/gutenberg/pull/43479), [43330](https://github.com/WordPress/gutenberg/pull/43330), [43182](https://github.com/WordPress/gutenberg/pull/43182), [43419](https://github.com/WordPress/gutenberg/pull/43419)
|
228 |
-
|
229 |
-
### Experiments
|
230 |
-
|
231 |
-
#### Components
|
232 |
-
- Font size picker: Use t-shirt sizes for the ToggleGroupControl component. ([43074](https://github.com/WordPress/gutenberg/pull/43074))
|
233 |
-
|
234 |
-
|
235 |
-
### Documentation
|
236 |
-
|
237 |
-
- Add documentation for useRootPaddingAwareAlignments in theme.json. ([43463](https://github.com/WordPress/gutenberg/pull/43463))
|
238 |
-
- Comma is missing. ([43446](https://github.com/WordPress/gutenberg/pull/43446))
|
239 |
-
- Convert HTML to Markdown in changelog for 13.9. ([43324](https://github.com/WordPress/gutenberg/pull/43324))
|
240 |
-
- Handbook: Fix format API example link. ([43477](https://github.com/WordPress/gutenberg/pull/43477))
|
241 |
-
- Stabilize the useResourcePermissions hook. ([43268](https://github.com/WordPress/gutenberg/pull/43268))
|
242 |
-
- [Docs] Replace useState with edit in useEntityRecord usage examples. ([43270](https://github.com/WordPress/gutenberg/pull/43270))
|
243 |
-
- Block Editor Handbook: Added missing codetabs end marker. ([43185](https://github.com/WordPress/gutenberg/pull/43185))
|
244 |
-
- Docs: Fix some typos. ([43175](https://github.com/WordPress/gutenberg/pull/43175))
|
245 |
-
|
246 |
-
|
247 |
-
### Code Quality
|
248 |
-
|
249 |
-
- PHP: Use str_contains(). ([43382](https://github.com/WordPress/gutenberg/pull/43382))
|
250 |
-
- PHP: Use str_starts_with. ([43410](https://github.com/WordPress/gutenberg/pull/43410))
|
251 |
-
- Style engine: Pass options to CSS static methods. ([43399](https://github.com/WordPress/gutenberg/pull/43399))
|
252 |
-
- Style engine tweaks. ([43303](https://github.com/WordPress/gutenberg/pull/43303))
|
253 |
-
- Navigation block - minor refactor to classic menu conversion code. ([43081](https://github.com/WordPress/gutenberg/pull/43081))
|
254 |
-
- Data: Bundle TypeScript types with the data package. ([43315](https://github.com/WordPress/gutenberg/pull/43315))
|
255 |
-
- getTemplateInfo: Return stable reference to an empty object. ([43155](https://github.com/WordPress/gutenberg/pull/43155))
|
256 |
-
- Remove duplicated 'import' comments. ([43478](https://github.com/WordPress/gutenberg/pull/43478))
|
257 |
-
- Disabled: Migrate to TypeScript. ([42708](https://github.com/WordPress/gutenberg/pull/42708))
|
258 |
-
|
259 |
-
#### Components
|
260 |
-
- Clean up unused and duplicate `COLORS` values. ([43445](https://github.com/WordPress/gutenberg/pull/43445))
|
261 |
-
- Packages: Ensure dependencies use version ranges. ([43355](https://github.com/WordPress/gutenberg/pull/43355))
|
262 |
-
- Swatch: Remove component in favor of ColorIndicator. ([43068](https://github.com/WordPress/gutenberg/pull/43068))
|
263 |
-
- Update/floating UI version. ([43206](https://github.com/WordPress/gutenberg/pull/43206))
|
264 |
-
|
265 |
-
#### List View
|
266 |
-
- Block list: Update block list view preferences name for consistency. ([43494](https://github.com/WordPress/gutenberg/pull/43494))
|
267 |
|
268 |
-
#### Widgets Editor
|
269 |
-
- Use useResourcePermissions in block-library and the widgets editor. ([43305](https://github.com/WordPress/gutenberg/pull/43305))
|
270 |
-
|
271 |
-
#### Block Editor
|
272 |
-
- Rich Text: Eliminate second scan when getting text content. ([43207](https://github.com/WordPress/gutenberg/pull/43207))
|
273 |
-
|
274 |
-
#### Global Styles
|
275 |
-
- Theme_JSON: Use existing append_to_selector for pseudo-elements. ([43167](https://github.com/WordPress/gutenberg/pull/43167))
|
276 |
-
- Enable appearance tools via theme_support. ([43337](https://github.com/WordPress/gutenberg/pull/43337))
|
277 |
-
|
278 |
-
|
279 |
-
#### Testing
|
280 |
-
- Migrate wp editor meta box test to Playwright. ([41519](https://github.com/WordPress/gutenberg/pull/41519))
|
281 |
-
- PHPCS: Exclude PHPUnit tests from file and class name sniffs (for Core parity). ([43131](https://github.com/WordPress/gutenberg/pull/43131))
|
282 |
-
- PHPUnit: Let PHPUnit Polyfills match PHPUnit version. ([43334](https://github.com/WordPress/gutenberg/pull/43334))
|
283 |
-
- PHPUnit: Turns on PHP notices and deprecations. ([43102](https://github.com/WordPress/gutenberg/pull/43102))
|
284 |
-
- Update incorrect quote end-to-end test snapshot. ([43407](https://github.com/WordPress/gutenberg/pull/43407))
|
285 |
-
- Update test fixture for performance test. ([43359](https://github.com/WordPress/gutenberg/pull/43359))
|
286 |
-
- Quote: Stabilise flaky end-to-end test. ([43460](https://github.com/WordPress/gutenberg/pull/43460))
|
287 |
-
|
288 |
-
#### Build Tooling
|
289 |
-
- Build Tools: Fix typo in performance tests workflow. ([43153](https://github.com/WordPress/gutenberg/pull/43153))
|
290 |
-
- Packages: Update the minimum required Node.js version to 14 for tools. ([43141](https://github.com/WordPress/gutenberg/pull/43141))
|
291 |
-
- ESLint Plugin: Remove all rules targeting test files from recommended presets. ([43272](https://github.com/WordPress/gutenberg/pull/43272))
|
292 |
-
- Ignore library CSS and built CSS in stylelint. ([42027](https://github.com/WordPress/gutenberg/pull/42027))
|
293 |
-
- Fix 'Mark issues stale after needs testing for 30 days' workflow. ([43545](https://github.com/WordPress/gutenberg/pull/43545))
|
294 |
-
|
295 |
-
#### npm Packages
|
296 |
-
- Packages: Replace `is-plain-obj` with `is-plain-object`. ([43511](https://github.com/WordPress/gutenberg/pull/43511))
|
297 |
-
|
298 |
-
|
299 |
-
#### Components
|
300 |
-
- (Custom)GradientPicker: Add flag to remove margins. ([43387](https://github.com/WordPress/gutenberg/pull/43387))
|
301 |
-
- AlignmentMatrixControl: Improve stories. ([43438](https://github.com/WordPress/gutenberg/pull/43438))
|
302 |
-
- AnglePickerControl: Add flag to remove bottom margin. ([43160](https://github.com/WordPress/gutenberg/pull/43160))
|
303 |
-
- ComboboxControl: Add flag to remove bottom margin. ([43165](https://github.com/WordPress/gutenberg/pull/43165))
|
304 |
-
- CustomSelectControl: Deprecate constrained width style. ([43230](https://github.com/WordPress/gutenberg/pull/43230))
|
305 |
-
- DuotonePicker/DuotoneSwatch: Add stories. ([43225](https://github.com/WordPress/gutenberg/pull/43225))
|
306 |
-
- Storybook: Add margin checker tool. ([43223](https://github.com/WordPress/gutenberg/pull/43223))
|
307 |
-
- ToggleGroupControl: Improve stories for documentation view. ([43265](https://github.com/WordPress/gutenberg/pull/43265))
|
308 |
-
- ToolsPanel: Tighten grid gaps. ([43424](https://github.com/WordPress/gutenberg/pull/43424))
|
309 |
-
|
310 |
-
#### Block Library
|
311 |
-
- Buttons: Update selectors to work better with button elements. ([43022](https://github.com/WordPress/gutenberg/pull/43022))
|
312 |
-
- Comments block: Remove empty block wrapper. ([43383](https://github.com/WordPress/gutenberg/pull/43383))
|
313 |
-
- Group block: Update description to remove "layout." ([43498](https://github.com/WordPress/gutenberg/pull/43498))
|
314 |
-
- Image: Try different resting state for placeholder, alternate version. ([43180](https://github.com/WordPress/gutenberg/pull/43180))
|
315 |
-
- Navigation: Try to improve the appender in an empty block. ([43115](https://github.com/WordPress/gutenberg/pull/43115))
|
316 |
-
- Polish placeholder radius and enable duotone on image setup state. ([43425](https://github.com/WordPress/gutenberg/pull/43425))
|
317 |
-
- Pullquote: Use inline rich text instead of multiline. ([43210](https://github.com/WordPress/gutenberg/pull/43210))
|
318 |
-
- [Blocks] Paragraph and Heading: Add gradient support. ([43119](https://github.com/WordPress/gutenberg/pull/43119))
|
319 |
-
|
320 |
-
#### Patterns
|
321 |
-
- Bundle new collection of Header and Footer block patterns. ([43157](https://github.com/WordPress/gutenberg/pull/43157))
|
322 |
-
- Mark which attributes of the image should be considered content. ([43280](https://github.com/WordPress/gutenberg/pull/43280))
|
323 |
-
- Prefer _x() for i18n context in core patterns. ([43409](https://github.com/WordPress/gutenberg/pull/43409))
|
324 |
-
|
325 |
-
#### Design Tools
|
326 |
-
- Add margin and padding supports to Audio block. ([43351](https://github.com/WordPress/gutenberg/pull/43351))
|
327 |
-
- Add margin/padding support to Archives block. ([43350](https://github.com/WordPress/gutenberg/pull/43350))
|
328 |
-
|
329 |
-
#### Global Styles
|
330 |
-
- Add documentation about spacing presets. ([43349](https://github.com/WordPress/gutenberg/pull/43349))
|
331 |
-
- Spacing presets: Add editor UI support. ([42173](https://github.com/WordPress/gutenberg/pull/42173))
|
332 |
-
|
333 |
-
#### Site Editor
|
334 |
-
- [Site Editor]: Add success notice upon template creation. ([43430](https://github.com/WordPress/gutenberg/pull/43430))
|
335 |
-
|
336 |
-
#### CSS & Styling
|
337 |
-
- Style engine: Use style engine for block supports CSS in editor. ([43055](https://github.com/WordPress/gutenberg/pull/43055))
|
338 |
-
- Style engine: Remove `enqueue` flag. ([43103](https://github.com/WordPress/gutenberg/pull/43103))
|
339 |
-
|
340 |
-
#### Block Editor
|
341 |
-
- Merging blocks: Allow x to be merged into wrapper blocks (quote, list, group...). ([42780](https://github.com/WordPress/gutenberg/pull/42780))
|
342 |
-
|
343 |
-
### Tools
|
344 |
-
|
345 |
-
#### Testing
|
346 |
-
- Refactor `Button` tests to `@testing-library/react`. ([42981](https://github.com/WordPress/gutenberg/pull/42981))
|
347 |
-
- Refactor `Guide` `PageControl` tests to @testing-library/react. ([43148](https://github.com/WordPress/gutenberg/pull/43148))
|
348 |
-
- Refactor `MenuGroup` tests to `@testing-library/react`. ([43275](https://github.com/WordPress/gutenberg/pull/43275))
|
349 |
-
- Refactor `withSpokenMessages` tests to `@testing-library`. ([43273](https://github.com/WordPress/gutenberg/pull/43273))
|
350 |
-
- Editor: Refactor `PostAuthorCheck` tests to `@testing-library`. ([43176](https://github.com/WordPress/gutenberg/pull/43176))
|
351 |
-
- Editor: Refactor `ThemeSupportCheck` tests to `@testing-library/react`. ([43532](https://github.com/WordPress/gutenberg/pull/43532))
|
352 |
-
- Editor: Refactor a few component tests to `@testing-library/react`. ([43376](https://github.com/WordPress/gutenberg/pull/43376))
|
353 |
-
- Components: Refactor Placeholder tests to @testing-library/react. ([43069](https://github.com/WordPress/gutenberg/pull/43069))
|
354 |
-
- Components: Refactor `Tooltip` tests to `@testing-library/react`. ([43061](https://github.com/WordPress/gutenberg/pull/43061))
|
355 |
|
356 |
## First time contributors
|
357 |
|
358 |
The following PRs were merged by first time contributors:
|
359 |
|
360 |
-
- @drzraf: taxonomy-controls.js: Change REST context to "view" when fetching taxonomy terms. ([43274](https://github.com/WordPress/gutenberg/pull/43274))
|
361 |
-
- @markbiek: ComboboxControl: Normalize hyphen-like Unicode characters to ASCII hyphens when matching search queries. ([42942](https://github.com/WordPress/gutenberg/pull/42942))
|
362 |
-
- @randhirexpresstech: Add font family and text-decoration typography supports to paragraph blocks. ([39642](https://github.com/WordPress/gutenberg/pull/39642))
|
363 |
-
- @Rink9: Migrate wp editor meta box test to Playwright. ([41519](https://github.com/WordPress/gutenberg/pull/41519))
|
364 |
-
- @titusdmoore: Add optional capture group to URL regex in wp-env. ([43200](https://github.com/WordPress/gutenberg/pull/43200))
|
365 |
|
366 |
|
367 |
## Contributors
|
368 |
|
369 |
The following contributors merged PRs in this release:
|
370 |
|
371 |
-
@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
372 |
|
373 |
|
374 |
= 13.9.0 =
|
1 |
== Changelog ==
|
2 |
|
3 |
+
= 14.0.1 =
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
6 |
|
7 |
+
## Changelog
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
9 |
### Bug Fixes
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
#### Post Editor
|
12 |
+
- Fix layout applied to post editor on classic themes. ([43755](https://github.com/WordPress/gutenberg/pull/43755))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
|
15 |
## First time contributors
|
16 |
|
17 |
The following PRs were merged by first time contributors:
|
18 |
|
|
|
|
|
|
|
|
|
|
|
19 |
|
20 |
|
21 |
## Contributors
|
22 |
|
23 |
The following contributors merged PRs in this release:
|
24 |
|
25 |
+
@tellthemachines
|
26 |
+
|
27 |
+
|
28 |
+
= 14.0.0 =
|
29 |
+
|
30 |
+
## Changelog
|
31 |
+
|
32 |
+
### Enhancements
|
33 |
+
|
34 |
+
- Add optional capture group to URL regex in wp-env. ([43200](https://github.com/WordPress/gutenberg/pull/43200))
|
35 |
+
- Core Data: Add canRead to useResourcePermissions. ([43484](https://github.com/WordPress/gutenberg/pull/43484))
|
36 |
+
- Element: Remove `enzyme` from `platform` test. ([43531](https://github.com/WordPress/gutenberg/pull/43531))
|
37 |
+
- [Create-block] Add `--variant` flag to allow creation of different block type variants. ([41289](https://github.com/WordPress/gutenberg/pull/41289))
|
38 |
+
- Use str_starts_with. ([43371](https://github.com/WordPress/gutenberg/pull/43371))
|
39 |
+
- [Create Block] Adding a `--no-plugin` flag to scaffold only block files. ([41642](https://github.com/WordPress/gutenberg/pull/41642))
|
40 |
+
- Customize widgets: Fix top contents cutoff in keyboard shortcuts. ([43391](https://github.com/WordPress/gutenberg/pull/43391))
|
41 |
+
|
42 |
+
#### Design Tools
|
43 |
+
|
44 |
+
As part of the effort to improve design tool consistency for typography and spacing on blocks ([43242](https://github.com/WordPress/gutenberg/issues/43242)), there's been a lot of work done to blocks during this release to add missing supports to them.
|
45 |
+
|
46 |
+
Added typography support:
|
47 |
+
|
48 |
+
- Paragraph: ([39642](https://github.com/WordPress/gutenberg/pull/39642))
|
49 |
+
- Categories List: ([43254](https://github.com/WordPress/gutenberg/pull/43254))
|
50 |
+
- Code Block: ([43255](https://github.com/WordPress/gutenberg/pull/43255))
|
51 |
+
- Column Block: ([43252](https://github.com/WordPress/gutenberg/pull/43252))
|
52 |
+
- Columns Block: ([43253](https://github.com/WordPress/gutenberg/pull/43253))
|
53 |
+
- Comment Author Name: ([43256](https://github.com/WordPress/gutenberg/pull/43256))
|
54 |
+
- Comment Date: ([43262](https://github.com/WordPress/gutenberg/pull/43262))
|
55 |
+
- Comment Edit Link: ([43263](https://github.com/WordPress/gutenberg/pull/43263))
|
56 |
+
- Comment Template: ([43266](https://github.com/WordPress/gutenberg/pull/43266))
|
57 |
+
- Comments Content: ([43257](https://github.com/WordPress/gutenberg/pull/43257))
|
58 |
+
- Comments Pagination: ([43288](https://github.com/WordPress/gutenberg/pull/43288), [43289](https://github.com/WordPress/gutenberg/pull/43289), [43290](https://github.com/WordPress/gutenberg/pull/43290), [43287](https://github.com/WordPress/gutenberg/pull/43287))
|
59 |
+
- Comments Reply Link: ([43264](https://github.com/WordPress/gutenberg/pull/43264))
|
60 |
+
- Comments Title: ([43291](https://github.com/WordPress/gutenberg/pull/43291))
|
61 |
+
- Comments: ([43286](https://github.com/WordPress/gutenberg/pull/43286))
|
62 |
+
- Cover: ([43298](https://github.com/WordPress/gutenberg/pull/43298))
|
63 |
+
- Group: ([43308](https://github.com/WordPress/gutenberg/pull/43308))
|
64 |
+
- Media & Text: ([43314](https://github.com/WordPress/gutenberg/pull/43314))
|
65 |
+
- Navigation: ([43542](https://github.com/WordPress/gutenberg/pull/43542))
|
66 |
+
- Post Author Biography: ([43318](https://github.com/WordPress/gutenberg/pull/43318))
|
67 |
+
- Post Author Name: ([43319](https://github.com/WordPress/gutenberg/pull/43319))
|
68 |
+
- Post Author: ([43317](https://github.com/WordPress/gutenberg/pull/43317))
|
69 |
+
- Post Comments Count: ([43321](https://github.com/WordPress/gutenberg/pull/43321))
|
70 |
+
- Post Comments Link: ([43338](https://github.com/WordPress/gutenberg/pull/43338))
|
71 |
+
- Post Date: ([43340](https://github.com/WordPress/gutenberg/pull/43340))
|
72 |
+
- Post Navigation Link: ([43344](https://github.com/WordPress/gutenberg/pull/43344))
|
73 |
+
- Post Template: ([43342](https://github.com/WordPress/gutenberg/pull/43342))
|
74 |
+
- Post Terms: ([43343](https://github.com/WordPress/gutenberg/pull/43343))
|
75 |
+
- Preformatted: ([43345](https://github.com/WordPress/gutenberg/pull/43345))
|
76 |
+
- Pullquote: ([43346](https://github.com/WordPress/gutenberg/pull/43346))
|
77 |
+
- Table of Contents: ([43509](https://github.com/WordPress/gutenberg/pull/43509))
|
78 |
+
|
79 |
+
Added spacing supports:
|
80 |
+
|
81 |
+
- Paragraph: Add spacing block supports. ([43455](https://github.com/WordPress/gutenberg/pull/43455))
|
82 |
+
- Heading: Add padding support. ([43454](https://github.com/WordPress/gutenberg/pull/43454))
|
83 |
+
- List: Add spacing block supports. ([43402](https://github.com/WordPress/gutenberg/pull/43402))
|
84 |
+
- Media & Text: Add spacing block supports. ([43456](https://github.com/WordPress/gutenberg/pull/43456))
|
85 |
+
- Post Date: Add spacing support. ([43406](https://github.com/WordPress/gutenberg/pull/43406))
|
86 |
+
- Post Title: Add padding support. ([43457](https://github.com/WordPress/gutenberg/pull/43457))
|
87 |
+
- Query Title: Add padding support. ([43458](https://github.com/WordPress/gutenberg/pull/43458))
|
88 |
+
- Spacer: Add spacing block supports. ([43366](https://github.com/WordPress/gutenberg/pull/43366))
|
89 |
+
- Table of contents: Add spacing supports. ([43368](https://github.com/WordPress/gutenberg/pull/43368))
|
90 |
+
- Table: Add spacing block supports. ([43370](https://github.com/WordPress/gutenberg/pull/43370))
|
91 |
+
- Tag cloud: Add spacing block supports. ([43367](https://github.com/WordPress/gutenberg/pull/43367))
|
92 |
+
- Term description: Add spacing block supports. ([43372](https://github.com/WordPress/gutenberg/pull/43372))
|
93 |
+
- Verse: Add margin support. ([43461](https://github.com/WordPress/gutenberg/pull/43461))
|
94 |
+
- Video: Add spacing block supports. ([43365](https://github.com/WordPress/gutenberg/pull/43365))
|
95 |
+
|
96 |
+
Added other supports:
|
97 |
+
|
98 |
+
- Gallery: Add background color block supports. ([43294](https://github.com/WordPress/gutenberg/pull/43294))
|
99 |
+
- Post Featured Image: Add border support applied to inner img. ([42847](https://github.com/WordPress/gutenberg/pull/42847))
|
100 |
+
- Social Links: Enable alpha on color pickers. ([43453](https://github.com/WordPress/gutenberg/pull/43453))
|
101 |
+
- Social links: Add background color block supports. ([43293](https://github.com/WordPress/gutenberg/pull/43293))
|
102 |
+
- Table of contents block: Add color block supports. ([43363](https://github.com/WordPress/gutenberg/pull/43363))
|
103 |
+
|
104 |
+
|
105 |
+
#### Components
|
106 |
+
- (Custom)SelectControl: Refresh and refactor chevron. ([42962](https://github.com/WordPress/gutenberg/pull/42962))
|
107 |
+
- Always use `screen` for `testing-library` queries. ([43152](https://github.com/WordPress/gutenberg/pull/43152))
|
108 |
+
- Autocomplete: Use KeyboardEvent.code instead of KeyboardEvent.keyCode. ([43432](https://github.com/WordPress/gutenberg/pull/43432))
|
109 |
+
- Card: Migrate to TypeScript. ([42941](https://github.com/WordPress/gutenberg/pull/42941))
|
110 |
+
- ComboboxControl: Normalize hyphen-like Unicode characters to ASCII hyphens when matching search queries. ([42942](https://github.com/WordPress/gutenberg/pull/42942))
|
111 |
+
- CustomGradientPicker: Use KeyboardEvent.code instead of KeyboardEvent.keyCode. ([43437](https://github.com/WordPress/gutenberg/pull/43437))
|
112 |
+
- DateTimePicker: Replace react-dates and moment with useLilius and date-fns. ([43005](https://github.com/WordPress/gutenberg/pull/43005))
|
113 |
+
- FocalPointPicker: Use KeyboardEvent.code, partially refactor tests to modern RTL and user-event. ([43441](https://github.com/WordPress/gutenberg/pull/43441))
|
114 |
+
- FontSizePicker: Add a flag to remove bottom margin. ([43062](https://github.com/WordPress/gutenberg/pull/43062))
|
115 |
+
- FormTokenField: Add the ability to auto-select first matching suggestion for incomplete token. ([42527](https://github.com/WordPress/gutenberg/pull/42527))
|
116 |
+
- FormTokenField: Use KeyboardEvent.code, refactor tests to model RTL and user-event. ([43442](https://github.com/WordPress/gutenberg/pull/43442))
|
117 |
+
- Modal: Use code instead of keyCode for keyboard events. ([43429](https://github.com/WordPress/gutenberg/pull/43429))
|
118 |
+
- Popover: Move eslint-disable comment to the correct deps array. ([43320](https://github.com/WordPress/gutenberg/pull/43320))
|
119 |
+
- ToggleGroupControl: Improve styling for icon options. ([43060](https://github.com/WordPress/gutenberg/pull/43060))
|
120 |
+
|
121 |
+
#### Block Library
|
122 |
+
- Add a setting to hide the prefix in the archive title. ([42594](https://github.com/WordPress/gutenberg/pull/42594))
|
123 |
+
- Embed: Update Reddit icon. ([43326](https://github.com/WordPress/gutenberg/pull/43326))
|
124 |
+
- Post date: Add option to display as the last modified date. ([42312](https://github.com/WordPress/gutenberg/pull/42312))
|
125 |
+
- Reset focalPoint after replacing the cover image. ([42859](https://github.com/WordPress/gutenberg/pull/42859))
|
126 |
+
- Social Link: Update Reddit icon and color to match brand guidelines. ([43325](https://github.com/WordPress/gutenberg/pull/43325))
|
127 |
+
- Try "constrained" content width as new layout type. ([42763](https://github.com/WordPress/gutenberg/pull/42763))
|
128 |
+
- Try: Add a clickable Group setup state. ([40664](https://github.com/WordPress/gutenberg/pull/40664))
|
129 |
+
- Use page list instead of placeholder as fallback. ([42735](https://github.com/WordPress/gutenberg/pull/42735))
|
130 |
+
- [Query Loop]: Honour intended post type when previewing patterns and when replacing them with patterns. ([43285](https://github.com/WordPress/gutenberg/pull/43285))
|
131 |
+
- List: Use nested blocks. ([42711](https://github.com/WordPress/gutenberg/pull/42711))
|
132 |
+
|
133 |
+
#### Global Styles
|
134 |
+
- BlockGap: Add axial gap option to global styles where available. ([42490](https://github.com/WordPress/gutenberg/pull/42490))
|
135 |
+
- BlockGap: Add support for spacing presets. ([43296](https://github.com/WordPress/gutenberg/pull/43296))
|
136 |
+
- Spacing presets: Add check for 0 spacing steps. ([43105](https://github.com/WordPress/gutenberg/pull/43105))
|
137 |
+
- Spacing presets: Add support for margins. ([43246](https://github.com/WordPress/gutenberg/pull/43246))
|
138 |
+
- Spacing presets: Implement disabling of custom space sizes. ([43216](https://github.com/WordPress/gutenberg/pull/43216))
|
139 |
+
- Pseudo-elements supports on button elements. ([43088](https://github.com/WordPress/gutenberg/pull/43088))
|
140 |
+
|
141 |
+
#### CSS & Styling
|
142 |
+
- Placeholder: Add blurred background to work in nested cases. ([43379](https://github.com/WordPress/gutenberg/pull/43379))
|
143 |
+
- Placeholder: Refactor and simplify dashed placeholders used for Featured Image & Site Logo. ([43228](https://github.com/WordPress/gutenberg/pull/43228))
|
144 |
+
|
145 |
+
#### Data Layer
|
146 |
+
- [data] Export the type for the combineReducers export. ([43516](https://github.com/WordPress/gutenberg/pull/43516))
|
147 |
+
|
148 |
+
#### Site Editor
|
149 |
+
- Template Part: Allow changing properties in focus mode. ([43151](https://github.com/WordPress/gutenberg/pull/43151))
|
150 |
+
|
151 |
+
#### Block Editor
|
152 |
+
- Refactor `LinkControl` tests to `@testing-library`. ([43147](https://github.com/WordPress/gutenberg/pull/43147))
|
153 |
+
|
154 |
+
|
155 |
+
### Bug Fixes
|
156 |
+
|
157 |
+
- Create Block: Refactor handling for template variants. ([43481](https://github.com/WordPress/gutenberg/pull/43481))
|
158 |
+
- Fix no-results grammar. ([43168](https://github.com/WordPress/gutenberg/pull/43168))
|
159 |
+
- Fix spinner causing a flash when loading site editor. ([43226](https://github.com/WordPress/gutenberg/pull/43226))
|
160 |
+
- Image: Fix unclickable buttons. ([43361](https://github.com/WordPress/gutenberg/pull/43361))
|
161 |
+
- Keycodes: Fix display of symbols in keyboard shortcut modal. ([43137](https://github.com/WordPress/gutenberg/pull/43137))
|
162 |
+
- MediaReplaceFlow: Reset default LinkControl margins. ([43156](https://github.com/WordPress/gutenberg/pull/43156))
|
163 |
+
- Post title: Fix pasting into existing content. ([43123](https://github.com/WordPress/gutenberg/pull/43123))
|
164 |
+
- [Block Editor]: Fix block switcher label to take into account block variations. ([43309](https://github.com/WordPress/gutenberg/pull/43309))
|
165 |
+
- [useEntityRecord] Pass the correct kind, name, and recordId to getEditedEntityRecord. ([43517](https://github.com/WordPress/gutenberg/pull/43517))
|
166 |
+
- wp-env: Set core source to latest when null. ([43133](https://github.com/WordPress/gutenberg/pull/43133))
|
167 |
+
|
168 |
+
#### Block Library
|
169 |
+
- Ensure the block toolbar doesn't overlap block by modifying forcePosition and shift popover props. ([42887](https://github.com/WordPress/gutenberg/pull/42887))
|
170 |
+
- Ensure pagination numbers have an href in block edit function. ([43354](https://github.com/WordPress/gutenberg/pull/43354))
|
171 |
+
- Fix Post Featured Image border attributes. ([43426](https://github.com/WordPress/gutenberg/pull/43426))
|
172 |
+
- Fix classic block converted to regular blocks when clicking new 'Edit visually' button. ([43219](https://github.com/WordPress/gutenberg/pull/43219))
|
173 |
+
- Fix featured image being unselectable using arrow keys. ([43323](https://github.com/WordPress/gutenberg/pull/43323))
|
174 |
+
- Fix navigation block undefined index error on frontend. ([43302](https://github.com/WordPress/gutenberg/pull/43302))
|
175 |
+
- Gallery block: Ensure image attributes copy correctly between transforms. ([42796](https://github.com/WordPress/gutenberg/pull/42796))
|
176 |
+
- Home Link: Fix undo trap. ([43112](https://github.com/WordPress/gutenberg/pull/43112))
|
177 |
+
- List v2: Copy list wrapper when copying list items. ([42860](https://github.com/WordPress/gutenberg/pull/42860))
|
178 |
+
- Navigation: Page List fix missing padding. ([43358](https://github.com/WordPress/gutenberg/pull/43358))
|
179 |
+
- Prevent query block from looping in classic themes. ([43221](https://github.com/WordPress/gutenberg/pull/43221))
|
180 |
+
- Pullquote block: Avoid text-align settings affecting block width and font size. ([43188](https://github.com/WordPress/gutenberg/pull/43188))
|
181 |
+
- Pullquote block: Remove font definition from the default block styles. ([43195](https://github.com/WordPress/gutenberg/pull/43195))
|
182 |
+
- taxonomy-controls.js: Change REST context to "view" when fetching taxonomy terms. ([43274](https://github.com/WordPress/gutenberg/pull/43274))
|
183 |
+
- Home Link: Properly close tags. ([43706](https://github.com/WordPress/gutenberg/pull/43706))
|
184 |
+
- Social Link: Fix background color on WhatsApp icon. ([43683](https://github.com/WordPress/gutenberg/pull/43683))
|
185 |
+
|
186 |
+
#### Components
|
187 |
+
- (Custom)SelectControl: Truncate long options. ([43301](https://github.com/WordPress/gutenberg/pull/43301))
|
188 |
+
- AlignmentMatrixControl: Fix `width` bug. ([43482](https://github.com/WordPress/gutenberg/pull/43482))
|
189 |
+
- ColorPalette, GradientPicker: Fix color picker popover positioning. ([42989](https://github.com/WordPress/gutenberg/pull/42989))
|
190 |
+
- ColorPalette: Make sure "key" is unique when iterating over color entries with the same value. ([43096](https://github.com/WordPress/gutenberg/pull/43096))
|
191 |
+
- Dropdown: Anchor popover to the dropdown wrapper (instead of the toggle). ([43377](https://github.com/WordPress/gutenberg/pull/43377))
|
192 |
+
- Fix block toolbar offset in site editor when toggling sidebars. ([43172](https://github.com/WordPress/gutenberg/pull/43172))
|
193 |
+
- Fix popover glitch that results in incorrect toolbar positioning in site editor. ([43267](https://github.com/WordPress/gutenberg/pull/43267))
|
194 |
+
- Improve appearance of controls in the Global Styles Typography panel. ([43304](https://github.com/WordPress/gutenberg/pull/43304))
|
195 |
+
- Popover: Fix and improve opening animation, use framer motion. ([43186](https://github.com/WordPress/gutenberg/pull/43186))
|
196 |
+
- Popover: Make sure offset middleware always applies the latest frame offset values. ([43329](https://github.com/WordPress/gutenberg/pull/43329))
|
197 |
+
- Refactor `Guide` tests to `@testing-library/react`. ([43380](https://github.com/WordPress/gutenberg/pull/43380))
|
198 |
+
|
199 |
+
#### Global Styles
|
200 |
+
- Check for recursive dynamic reference in the site editor. ([43166](https://github.com/WordPress/gutenberg/pull/43166))
|
201 |
+
- Duotone: Prevent early return blocking other style generation. ([43300](https://github.com/WordPress/gutenberg/pull/43300))
|
202 |
+
- Fix dynamic references on the site editor. ([42976](https://github.com/WordPress/gutenberg/pull/42976))
|
203 |
+
- Fix error in handling spacing preset slugs. ([43237](https://github.com/WordPress/gutenberg/pull/43237))
|
204 |
+
- Layout: Re-instate alignwide and alignfull in flow layout get alignments. ([43502](https://github.com/WordPress/gutenberg/pull/43502))
|
205 |
+
- Spacing presets: Fix/minor issues noted in initial UI PR. ([43214](https://github.com/WordPress/gutenberg/pull/43214))
|
206 |
+
- Layout: Fix has-global-padding classname for constrained layouts without contentSize. ([43689](https://github.com/WordPress/gutenberg/pull/43689))
|
207 |
+
|
208 |
+
#### Block Editor
|
209 |
+
- Fix Cmd+A issue in Storybook. ([43145](https://github.com/WordPress/gutenberg/pull/43145))
|
210 |
+
- Fix drag and drop indicator before first block and after last block. ([43135](https://github.com/WordPress/gutenberg/pull/43135))
|
211 |
+
- Fix spinner position in URLInput component. ([43472](https://github.com/WordPress/gutenberg/pull/43472))
|
212 |
+
- Partial select: Fix selecting into image. ([42983](https://github.com/WordPress/gutenberg/pull/42983))
|
213 |
+
|
214 |
+
#### Design Tools
|
215 |
+
- Border Radius: Prevent invalid css unit only styles or empty radii style attribute. ([42409](https://github.com/WordPress/gutenberg/pull/42409))
|
216 |
+
- Border Support: Fix disabling of border style control. ([43109](https://github.com/WordPress/gutenberg/pull/43109))
|
217 |
+
- Post Comments Count: Prevent text-decoration from affecting warning. ([43497](https://github.com/WordPress/gutenberg/pull/43497))
|
218 |
+
|
219 |
+
#### Site Editor
|
220 |
+
- Do not show scrollbar when toolbar overflows the editor wrapper. ([43332](https://github.com/WordPress/gutenberg/pull/43332))
|
221 |
+
- Fix template part focus mode resizable editor height. ([43408](https://github.com/WordPress/gutenberg/pull/43408))
|
222 |
+
|
223 |
+
#### npm Packages
|
224 |
+
- Jest Preset: Ignore `is-plain-obj` transformation. ([43179](https://github.com/WordPress/gutenberg/pull/43179))
|
225 |
+
- Jest Preset: Improve `is-plain-obj` transformation ignore. ([43271](https://github.com/WordPress/gutenberg/pull/43271))
|
226 |
+
|
227 |
+
#### Widgets Editor
|
228 |
+
- Fix legacy widget form positioning in customizer. ([43297](https://github.com/WordPress/gutenberg/pull/43297))
|
229 |
+
|
230 |
+
#### CSS & Styling
|
231 |
+
- Group/Stack/Row: Scope the dashed placeholder rules. ([43169](https://github.com/WordPress/gutenberg/pull/43169))
|
232 |
+
|
233 |
+
#### List View
|
234 |
+
- Ensure long anchors don't cause the List View to extend. ([43134](https://github.com/WordPress/gutenberg/pull/43134))
|
235 |
+
|
236 |
+
#### Post Editor
|
237 |
+
- Post Template: Don't fetch settings and templates for non-admin users. ([42845](https://github.com/WordPress/gutenberg/pull/42845))
|
238 |
+
|
239 |
+
#### Patterns
|
240 |
+
- Fix custom placeholder not displaying on subsequent Paragraph blocks. ([42519](https://github.com/WordPress/gutenberg/pull/42519))
|
241 |
+
|
242 |
+
### Accessibility
|
243 |
+
- Block Editor: Remove `aria-selected` from `LinkPreview`. ([43279](https://github.com/WordPress/gutenberg/pull/43279))
|
244 |
+
- Block Editor: Replace `aria-owns` with `aria-controls` in `URLInput`. ([43278](https://github.com/WordPress/gutenberg/pull/43278))
|
245 |
+
- Separator: Disable the contrastChecker via block.json. ([43357](https://github.com/WordPress/gutenberg/pull/43357))
|
246 |
+
- Fix Top toolbar buttons tooltips and style when 'Show button text labels' is enabled. ([42815](https://github.com/WordPress/gutenberg/pull/42815))
|
247 |
+
|
248 |
+
### Performance
|
249 |
+
|
250 |
+
Lodash is known to unnecessarily inflate the bundle size of packages, and in most cases, it can be replaced with native language functionality. See these for more information and rationale: ([16938](https://github.com/WordPress/gutenberg/issues/16938#issuecomment-602837246), [17025](https://github.com/WordPress/gutenberg/issues/17025), [39495](https://github.com/WordPress/gutenberg/issues/39495))
|
251 |
+
|
252 |
+
The related PRs are: [43118](https://github.com/WordPress/gutenberg/pull/43118), [43306](https://github.com/WordPress/gutenberg/pull/43306), [43389](https://github.com/WordPress/gutenberg/pull/43389), [42466](https://github.com/WordPress/gutenberg/pull/42466), [43362](https://github.com/WordPress/gutenberg/pull/43362), [43100](https://github.com/WordPress/gutenberg/pull/43100), [43420](https://github.com/WordPress/gutenberg/pull/43420), [43117](https://github.com/WordPress/gutenberg/pull/43117), [42467](https://github.com/WordPress/gutenberg/pull/42467), [42502](https://github.com/WordPress/gutenberg/pull/42502), [43220](https://github.com/WordPress/gutenberg/pull/43220), [43224](https://github.com/WordPress/gutenberg/pull/43224), [43258](https://github.com/WordPress/gutenberg/pull/43258), [43374](https://github.com/WordPress/gutenberg/pull/43374), [43518](https://github.com/WordPress/gutenberg/pull/43518), [43474](https://github.com/WordPress/gutenberg/pull/43474), [43229](https://github.com/WordPress/gutenberg/pull/43229), [43411](https://github.com/WordPress/gutenberg/pull/43411), [42465](https://github.com/WordPress/gutenberg/pull/42465), [43231](https://github.com/WordPress/gutenberg/pull/43231), [43479](https://github.com/WordPress/gutenberg/pull/43479), [43330](https://github.com/WordPress/gutenberg/pull/43330), [43182](https://github.com/WordPress/gutenberg/pull/43182), [43419](https://github.com/WordPress/gutenberg/pull/43419)
|
253 |
+
|
254 |
+
### Experiments
|
255 |
+
|
256 |
+
#### Components
|
257 |
+
- Font size picker: Use t-shirt sizes for the ToggleGroupControl component. ([43074](https://github.com/WordPress/gutenberg/pull/43074))
|
258 |
+
|
259 |
+
|
260 |
+
### Documentation
|
261 |
+
|
262 |
+
- Add documentation for useRootPaddingAwareAlignments in theme.json. ([43463](https://github.com/WordPress/gutenberg/pull/43463))
|
263 |
+
- Comma is missing. ([43446](https://github.com/WordPress/gutenberg/pull/43446))
|
264 |
+
- Convert HTML to Markdown in changelog for 13.9. ([43324](https://github.com/WordPress/gutenberg/pull/43324))
|
265 |
+
- Handbook: Fix format API example link. ([43477](https://github.com/WordPress/gutenberg/pull/43477))
|
266 |
+
- Stabilize the useResourcePermissions hook. ([43268](https://github.com/WordPress/gutenberg/pull/43268))
|
267 |
+
- [Docs] Replace useState with edit in useEntityRecord usage examples. ([43270](https://github.com/WordPress/gutenberg/pull/43270))
|
268 |
+
- Block Editor Handbook: Added missing codetabs end marker. ([43185](https://github.com/WordPress/gutenberg/pull/43185))
|
269 |
+
- Docs: Fix some typos. ([43175](https://github.com/WordPress/gutenberg/pull/43175))
|
270 |
+
|
271 |
+
|
272 |
+
### Code Quality
|
273 |
+
|
274 |
+
- PHP: Use str_contains(). ([43382](https://github.com/WordPress/gutenberg/pull/43382))
|
275 |
+
- PHP: Use str_starts_with. ([43410](https://github.com/WordPress/gutenberg/pull/43410))
|
276 |
+
- Style engine: Pass options to CSS static methods. ([43399](https://github.com/WordPress/gutenberg/pull/43399))
|
277 |
+
- Style engine tweaks. ([43303](https://github.com/WordPress/gutenberg/pull/43303))
|
278 |
+
- Navigation block - minor refactor to classic menu conversion code. ([43081](https://github.com/WordPress/gutenberg/pull/43081))
|
279 |
+
- Data: Bundle TypeScript types with the data package. ([43315](https://github.com/WordPress/gutenberg/pull/43315))
|
280 |
+
- getTemplateInfo: Return stable reference to an empty object. ([43155](https://github.com/WordPress/gutenberg/pull/43155))
|
281 |
+
- Remove duplicated 'import' comments. ([43478](https://github.com/WordPress/gutenberg/pull/43478))
|
282 |
+
- Disabled: Migrate to TypeScript. ([42708](https://github.com/WordPress/gutenberg/pull/42708))
|
283 |
+
|
284 |
+
#### Components
|
285 |
+
- Clean up unused and duplicate `COLORS` values. ([43445](https://github.com/WordPress/gutenberg/pull/43445))
|
286 |
+
- Packages: Ensure dependencies use version ranges. ([43355](https://github.com/WordPress/gutenberg/pull/43355))
|
287 |
+
- Swatch: Remove component in favor of ColorIndicator. ([43068](https://github.com/WordPress/gutenberg/pull/43068))
|
288 |
+
- Update/floating UI version. ([43206](https://github.com/WordPress/gutenberg/pull/43206))
|
289 |
+
|
290 |
+
#### List View
|
291 |
+
- Block list: Update block list view preferences name for consistency. ([43494](https://github.com/WordPress/gutenberg/pull/43494))
|
292 |
+
|
293 |
+
#### Widgets Editor
|
294 |
+
- Use useResourcePermissions in block-library and the widgets editor. ([43305](https://github.com/WordPress/gutenberg/pull/43305))
|
295 |
+
|
296 |
+
#### Block Editor
|
297 |
+
- Rich Text: Eliminate second scan when getting text content. ([43207](https://github.com/WordPress/gutenberg/pull/43207))
|
298 |
+
|
299 |
+
#### Global Styles
|
300 |
+
- Theme_JSON: Use existing append_to_selector for pseudo-elements. ([43167](https://github.com/WordPress/gutenberg/pull/43167))
|
301 |
+
- Enable appearance tools via theme_support. ([43337](https://github.com/WordPress/gutenberg/pull/43337))
|
302 |
+
|
303 |
+
|
304 |
+
#### Testing
|
305 |
+
- Migrate wp editor meta box test to Playwright. ([41519](https://github.com/WordPress/gutenberg/pull/41519))
|
306 |
+
- PHPCS: Exclude PHPUnit tests from file and class name sniffs (for Core parity). ([43131](https://github.com/WordPress/gutenberg/pull/43131))
|
307 |
+
- PHPUnit: Let PHPUnit Polyfills match PHPUnit version. ([43334](https://github.com/WordPress/gutenberg/pull/43334))
|
308 |
+
- PHPUnit: Turns on PHP notices and deprecations. ([43102](https://github.com/WordPress/gutenberg/pull/43102))
|
309 |
+
- Update incorrect quote end-to-end test snapshot. ([43407](https://github.com/WordPress/gutenberg/pull/43407))
|
310 |
+
- Update test fixture for performance test. ([43359](https://github.com/WordPress/gutenberg/pull/43359))
|
311 |
+
- Quote: Stabilise flaky end-to-end test. ([43460](https://github.com/WordPress/gutenberg/pull/43460))
|
312 |
+
|
313 |
+
#### Build Tooling
|
314 |
+
- Build Tools: Fix typo in performance tests workflow. ([43153](https://github.com/WordPress/gutenberg/pull/43153))
|
315 |
+
- Packages: Update the minimum required Node.js version to 14 for tools. ([43141](https://github.com/WordPress/gutenberg/pull/43141))
|
316 |
+
- ESLint Plugin: Remove all rules targeting test files from recommended presets. ([43272](https://github.com/WordPress/gutenberg/pull/43272))
|
317 |
+
- Ignore library CSS and built CSS in stylelint. ([42027](https://github.com/WordPress/gutenberg/pull/42027))
|
318 |
+
- Fix 'Mark issues stale after needs testing for 30 days' workflow. ([43545](https://github.com/WordPress/gutenberg/pull/43545))
|
319 |
+
|
320 |
+
#### npm Packages
|
321 |
+
- Packages: Replace `is-plain-obj` with `is-plain-object`. ([43511](https://github.com/WordPress/gutenberg/pull/43511))
|
322 |
+
|
323 |
+
|
324 |
+
#### Components
|
325 |
+
- (Custom)GradientPicker: Add flag to remove margins. ([43387](https://github.com/WordPress/gutenberg/pull/43387))
|
326 |
+
- AlignmentMatrixControl: Improve stories. ([43438](https://github.com/WordPress/gutenberg/pull/43438))
|
327 |
+
- AnglePickerControl: Add flag to remove bottom margin. ([43160](https://github.com/WordPress/gutenberg/pull/43160))
|
328 |
+
- ComboboxControl: Add flag to remove bottom margin. ([43165](https://github.com/WordPress/gutenberg/pull/43165))
|
329 |
+
- CustomSelectControl: Deprecate constrained width style. ([43230](https://github.com/WordPress/gutenberg/pull/43230))
|
330 |
+
- DuotonePicker/DuotoneSwatch: Add stories. ([43225](https://github.com/WordPress/gutenberg/pull/43225))
|
331 |
+
- Storybook: Add margin checker tool. ([43223](https://github.com/WordPress/gutenberg/pull/43223))
|
332 |
+
- ToggleGroupControl: Improve stories for documentation view. ([43265](https://github.com/WordPress/gutenberg/pull/43265))
|
333 |
+
- ToolsPanel: Tighten grid gaps. ([43424](https://github.com/WordPress/gutenberg/pull/43424))
|
334 |
+
|
335 |
+
#### Block Library
|
336 |
+
- Buttons: Update selectors to work better with button elements. ([43022](https://github.com/WordPress/gutenberg/pull/43022))
|
337 |
+
- Comments block: Remove empty block wrapper. ([43383](https://github.com/WordPress/gutenberg/pull/43383))
|
338 |
+
- Group block: Update description to remove "layout." ([43498](https://github.com/WordPress/gutenberg/pull/43498))
|
339 |
+
- Image: Try different resting state for placeholder, alternate version. ([43180](https://github.com/WordPress/gutenberg/pull/43180))
|
340 |
+
- Navigation: Try to improve the appender in an empty block. ([43115](https://github.com/WordPress/gutenberg/pull/43115))
|
341 |
+
- Polish placeholder radius and enable duotone on image setup state. ([43425](https://github.com/WordPress/gutenberg/pull/43425))
|
342 |
+
- Pullquote: Use inline rich text instead of multiline. ([43210](https://github.com/WordPress/gutenberg/pull/43210))
|
343 |
+
- [Blocks] Paragraph and Heading: Add gradient support. ([43119](https://github.com/WordPress/gutenberg/pull/43119))
|
344 |
+
|
345 |
+
#### Patterns
|
346 |
+
- Bundle new collection of Header and Footer block patterns. ([43157](https://github.com/WordPress/gutenberg/pull/43157))
|
347 |
+
- Mark which attributes of the image should be considered content. ([43280](https://github.com/WordPress/gutenberg/pull/43280))
|
348 |
+
- Prefer _x() for i18n context in core patterns. ([43409](https://github.com/WordPress/gutenberg/pull/43409))
|
349 |
+
|
350 |
+
#### Design Tools
|
351 |
+
- Add margin and padding supports to Audio block. ([43351](https://github.com/WordPress/gutenberg/pull/43351))
|
352 |
+
- Add margin/padding support to Archives block. ([43350](https://github.com/WordPress/gutenberg/pull/43350))
|
353 |
+
|
354 |
+
#### Global Styles
|
355 |
+
- Add documentation about spacing presets. ([43349](https://github.com/WordPress/gutenberg/pull/43349))
|
356 |
+
- Spacing presets: Add editor UI support. ([42173](https://github.com/WordPress/gutenberg/pull/42173))
|
357 |
+
|
358 |
+
#### Site Editor
|
359 |
+
- [Site Editor]: Add success notice upon template creation. ([43430](https://github.com/WordPress/gutenberg/pull/43430))
|
360 |
+
|
361 |
+
#### CSS & Styling
|
362 |
+
- Style engine: Use style engine for block supports CSS in editor. ([43055](https://github.com/WordPress/gutenberg/pull/43055))
|
363 |
+
- Style engine: Remove `enqueue` flag. ([43103](https://github.com/WordPress/gutenberg/pull/43103))
|
364 |
+
|
365 |
+
#### Block Editor
|
366 |
+
- Merging blocks: Allow x to be merged into wrapper blocks (quote, list, group...). ([42780](https://github.com/WordPress/gutenberg/pull/42780))
|
367 |
+
|
368 |
+
### Tools
|
369 |
+
|
370 |
+
#### Testing
|
371 |
+
- Refactor `Button` tests to `@testing-library/react`. ([42981](https://github.com/WordPress/gutenberg/pull/42981))
|
372 |
+
- Refactor `Guide` `PageControl` tests to @testing-library/react. ([43148](https://github.com/WordPress/gutenberg/pull/43148))
|
373 |
+
- Refactor `MenuGroup` tests to `@testing-library/react`. ([43275](https://github.com/WordPress/gutenberg/pull/43275))
|
374 |
+
- Refactor `withSpokenMessages` tests to `@testing-library`. ([43273](https://github.com/WordPress/gutenberg/pull/43273))
|
375 |
+
- Editor: Refactor `PostAuthorCheck` tests to `@testing-library`. ([43176](https://github.com/WordPress/gutenberg/pull/43176))
|
376 |
+
- Editor: Refactor `ThemeSupportCheck` tests to `@testing-library/react`. ([43532](https://github.com/WordPress/gutenberg/pull/43532))
|
377 |
+
- Editor: Refactor a few component tests to `@testing-library/react`. ([43376](https://github.com/WordPress/gutenberg/pull/43376))
|
378 |
+
- Components: Refactor Placeholder tests to @testing-library/react. ([43069](https://github.com/WordPress/gutenberg/pull/43069))
|
379 |
+
- Components: Refactor `Tooltip` tests to `@testing-library/react`. ([43061](https://github.com/WordPress/gutenberg/pull/43061))
|
380 |
+
|
381 |
+
## First time contributors
|
382 |
+
|
383 |
+
The following PRs were merged by first time contributors:
|
384 |
+
|
385 |
+
- @drzraf: taxonomy-controls.js: Change REST context to "view" when fetching taxonomy terms. ([43274](https://github.com/WordPress/gutenberg/pull/43274))
|
386 |
+
- @markbiek: ComboboxControl: Normalize hyphen-like Unicode characters to ASCII hyphens when matching search queries. ([42942](https://github.com/WordPress/gutenberg/pull/42942))
|
387 |
+
- @randhirexpresstech: Add font family and text-decoration typography supports to paragraph blocks. ([39642](https://github.com/WordPress/gutenberg/pull/39642))
|
388 |
+
- @Rink9: Migrate wp editor meta box test to Playwright. ([41519](https://github.com/WordPress/gutenberg/pull/41519))
|
389 |
+
- @titusdmoore: Add optional capture group to URL regex in wp-env. ([43200](https://github.com/WordPress/gutenberg/pull/43200))
|
390 |
+
|
391 |
+
|
392 |
+
## Contributors
|
393 |
+
|
394 |
+
The following contributors merged PRs in this release:
|
395 |
+
|
396 |
+
@aaronrobertshaw @adamziel @afercia @andrewserong @aristath @awps @carolinan @ciampo @derekblank @dinhtungdu @dmsnell @draganescu @drzraf @ellatrix @geriux @glendaviesnz @gziolo @hellofromtonya @hz-tyfoon @jasmussen @jostnes @kdevnel @MaggieCabrera @Mamaduka @markbiek @matiasbenedetto @mcsf @mirka @ndiego @noahtallen @noisysocks @ntsekouras @oandregal @ockham @paulopmt1 @pbking @ramonjd @randhirexpresstech @Rink9 @ryanwelcher @scruffian @SiobhyB @Soean @t-hamano @talldan @tellthemachines @titusdmoore @torounit @tyxla @walbo
|
397 |
|
398 |
|
399 |
= 13.9.0 =
|
gutenberg.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
* Description: Printing since 1440. This is the development plugin for the new block editor in core.
|
6 |
* Requires at least: 5.9
|
7 |
* Requires PHP: 5.6
|
8 |
-
* Version: 14.0.
|
9 |
* Author: Gutenberg Team
|
10 |
* Text Domain: gutenberg
|
11 |
*
|
@@ -13,8 +13,8 @@
|
|
13 |
*/
|
14 |
|
15 |
### BEGIN AUTO-GENERATED DEFINES
|
16 |
-
define( 'GUTENBERG_VERSION', '14.0.
|
17 |
-
define( 'GUTENBERG_GIT_COMMIT', '
|
18 |
### END AUTO-GENERATED DEFINES
|
19 |
|
20 |
gutenberg_pre_init();
|
5 |
* Description: Printing since 1440. This is the development plugin for the new block editor in core.
|
6 |
* Requires at least: 5.9
|
7 |
* Requires PHP: 5.6
|
8 |
+
* Version: 14.0.1
|
9 |
* Author: Gutenberg Team
|
10 |
* Text Domain: gutenberg
|
11 |
*
|
13 |
*/
|
14 |
|
15 |
### BEGIN AUTO-GENERATED DEFINES
|
16 |
+
define( 'GUTENBERG_VERSION', '14.0.1' );
|
17 |
+
define( 'GUTENBERG_GIT_COMMIT', 'fc8b891b69e9a85c9ae95344ad9c6605c92fd251' );
|
18 |
### END AUTO-GENERATED DEFINES
|
19 |
|
20 |
gutenberg_pre_init();
|
readme.txt
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
=== Gutenberg ===
|
2 |
Contributors: matveb, joen, karmatosed
|
3 |
Tested up to: 6.0
|
4 |
-
Stable tag:
|
5 |
License: GPLv2 or later
|
6 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
7 |
|
1 |
=== Gutenberg ===
|
2 |
Contributors: matveb, joen, karmatosed
|
3 |
Tested up to: 6.0
|
4 |
+
Stable tag: 14.0.0
|
5 |
License: GPLv2 or later
|
6 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
7 |
|