@wordpress/edit-site 5.19.3 → 5.19.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/build/components/add-new-pattern/index.js +1 -1
  2. package/build/components/add-new-pattern/index.js.map +1 -1
  3. package/build/components/global-styles/font-library-modal/resolvers.js +1 -1
  4. package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  5. package/build/components/global-styles/font-library-modal/utils/index.js +1 -1
  6. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  7. package/build/components/sidebar-edit-mode/template-panel/hooks.js +71 -0
  8. package/build/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -0
  9. package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js +82 -0
  10. package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +1 -0
  11. package/build/components/sidebar-edit-mode/template-panel/template-actions.js +10 -3
  12. package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
  13. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +5 -3
  14. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js.map +1 -1
  15. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +5 -4
  16. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  17. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +8 -1
  18. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js.map +1 -1
  19. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +29 -0
  20. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js.map +1 -0
  21. package/build/store/selectors.js +4 -5
  22. package/build/store/selectors.js.map +1 -1
  23. package/build/utils/constants.js +1 -1
  24. package/build/utils/constants.js.map +1 -1
  25. package/build-module/components/add-new-pattern/index.js +2 -2
  26. package/build-module/components/add-new-pattern/index.js.map +1 -1
  27. package/build-module/components/global-styles/font-library-modal/resolvers.js +1 -1
  28. package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  29. package/build-module/components/global-styles/font-library-modal/utils/index.js +1 -1
  30. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  31. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js +64 -0
  32. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -0
  33. package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js +76 -0
  34. package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +1 -0
  35. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js +10 -3
  36. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
  37. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +5 -3
  38. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js.map +1 -1
  39. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +5 -4
  40. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  41. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +7 -1
  42. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js.map +1 -1
  43. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +22 -0
  44. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js.map +1 -0
  45. package/build-module/store/selectors.js +4 -5
  46. package/build-module/store/selectors.js.map +1 -1
  47. package/build-module/utils/constants.js +1 -1
  48. package/build-module/utils/constants.js.map +1 -1
  49. package/build-style/style-rtl.css +19 -0
  50. package/build-style/style.css +19 -0
  51. package/package.json +40 -40
  52. package/src/components/add-new-pattern/index.js +2 -2
  53. package/src/components/global-styles/font-library-modal/resolvers.js +1 -1
  54. package/src/components/global-styles/font-library-modal/utils/index.js +1 -1
  55. package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamilies.spec.js +1 -1
  56. package/src/components/sidebar-edit-mode/template-panel/hooks.js +97 -0
  57. package/src/components/sidebar-edit-mode/template-panel/replace-template-button.js +89 -0
  58. package/src/components/sidebar-edit-mode/template-panel/style.scss +18 -0
  59. package/src/components/sidebar-edit-mode/template-panel/template-actions.js +27 -12
  60. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +5 -8
  61. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +5 -9
  62. package/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +11 -5
  63. package/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +32 -0
  64. package/src/store/selectors.js +9 -10
  65. package/src/utils/constants.js +1 -1
@@ -95,7 +95,7 @@ function AddNewPattern() {
95
95
  });
96
96
  }
97
97
  controls.push({
98
- icon: _icons.symbol,
98
+ icon: _icons.upload,
99
99
  onClick: () => {
100
100
  patternUploadInputRef.current.click();
101
101
  },
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_components","_i18n","_icons","_data","_router","_patterns","_coreData","_notices","_createTemplatePartModal","_interopRequireDefault","_sidebarButton","_lockUnlock","_constants","_usePatternCategories","useHistory","useLocation","unlock","routerPrivateApis","CreatePatternModal","editPatternsPrivateApis","AddNewPattern","history","params","showPatternModal","setShowPatternModal","useState","showTemplatePartModal","setShowTemplatePartModal","isBlockBasedTheme","useSelect","select","coreStore","getCurrentTheme","is_block_theme","createPatternFromFile","useDispatch","patternsStore","createSuccessNotice","createErrorNotice","noticesStore","patternUploadInputRef","useRef","patternCategories","usePatternCategories","handleCreatePattern","pattern","categoryId","push","postId","id","postType","PATTERN_TYPES","user","categoryType","theme","canvas","handleCreateTemplatePart","templatePart","TEMPLATE_PART_POST_TYPE","handleError","controls","icon","symbol","onClick","title","__","symbolFilled","current","click","createElement","Fragment","DropdownMenu","toggleProps","as","SidebarButton","plus","label","onClose","onSuccess","onError","default","closeModal","blocks","onCreate","type","accept","hidden","ref","onChange","event","file","target","files","currentCategoryId","find","category","name","undefined","path","PATTERN_DEFAULT_CATEGORY","sprintf","raw","err","message","value"],"sources":["@wordpress/edit-site/src/components/add-new-pattern/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { DropdownMenu } from '@wordpress/components';\nimport { useState, useRef } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { plus, symbol, symbolFilled } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport {\n\tprivateApis as editPatternsPrivateApis,\n\tstore as patternsStore,\n} from '@wordpress/patterns';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport CreateTemplatePartModal from '../create-template-part-modal';\nimport SidebarButton from '../sidebar-button';\nimport { unlock } from '../../lock-unlock';\nimport {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tTEMPLATE_PART_POST_TYPE,\n} from '../../utils/constants';\nimport usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';\n\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\nconst { CreatePatternModal } = unlock( editPatternsPrivateApis );\n\nexport default function AddNewPattern() {\n\tconst history = useHistory();\n\tconst { params } = useLocation();\n\tconst [ showPatternModal, setShowPatternModal ] = useState( false );\n\tconst [ showTemplatePartModal, setShowTemplatePartModal ] =\n\t\tuseState( false );\n\tconst isBlockBasedTheme = useSelect( ( select ) => {\n\t\treturn select( coreStore ).getCurrentTheme()?.is_block_theme;\n\t}, [] );\n\tconst { createPatternFromFile } = unlock( useDispatch( patternsStore ) );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst patternUploadInputRef = useRef();\n\tconst { patternCategories } = usePatternCategories();\n\n\tfunction handleCreatePattern( { pattern, categoryId } ) {\n\t\tsetShowPatternModal( false );\n\n\t\thistory.push( {\n\t\t\tpostId: pattern.id,\n\t\t\tpostType: PATTERN_TYPES.user,\n\t\t\tcategoryType: PATTERN_TYPES.theme,\n\t\t\tcategoryId,\n\t\t\tcanvas: 'edit',\n\t\t} );\n\t}\n\n\tfunction handleCreateTemplatePart( templatePart ) {\n\t\tsetShowTemplatePartModal( false );\n\n\t\t// Navigate to the created template part editor.\n\t\thistory.push( {\n\t\t\tpostId: templatePart.id,\n\t\t\tpostType: TEMPLATE_PART_POST_TYPE,\n\t\t\tcanvas: 'edit',\n\t\t} );\n\t}\n\n\tfunction handleError() {\n\t\tsetShowPatternModal( false );\n\t\tsetShowTemplatePartModal( false );\n\t}\n\n\tconst controls = [\n\t\t{\n\t\t\ticon: symbol,\n\t\t\tonClick: () => setShowPatternModal( true ),\n\t\t\ttitle: __( 'Create pattern' ),\n\t\t},\n\t];\n\n\tif ( isBlockBasedTheme ) {\n\t\tcontrols.push( {\n\t\t\ticon: symbolFilled,\n\t\t\tonClick: () => setShowTemplatePartModal( true ),\n\t\t\ttitle: __( 'Create template part' ),\n\t\t} );\n\t}\n\n\tcontrols.push( {\n\t\ticon: symbol,\n\t\tonClick: () => {\n\t\t\tpatternUploadInputRef.current.click();\n\t\t},\n\t\ttitle: __( 'Import pattern from JSON' ),\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenu\n\t\t\t\tcontrols={ controls }\n\t\t\t\ttoggleProps={ {\n\t\t\t\t\tas: SidebarButton,\n\t\t\t\t} }\n\t\t\t\ticon={ plus }\n\t\t\t\tlabel={ __( 'Create pattern' ) }\n\t\t\t/>\n\t\t\t{ showPatternModal && (\n\t\t\t\t<CreatePatternModal\n\t\t\t\t\tonClose={ () => setShowPatternModal( false ) }\n\t\t\t\t\tonSuccess={ handleCreatePattern }\n\t\t\t\t\tonError={ handleError }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showTemplatePartModal && (\n\t\t\t\t<CreateTemplatePartModal\n\t\t\t\t\tcloseModal={ () => setShowTemplatePartModal( false ) }\n\t\t\t\t\tblocks={ [] }\n\t\t\t\t\tonCreate={ handleCreateTemplatePart }\n\t\t\t\t\tonError={ handleError }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept=\".json\"\n\t\t\t\thidden\n\t\t\t\tref={ patternUploadInputRef }\n\t\t\t\tonChange={ async ( event ) => {\n\t\t\t\t\tconst file = event.target.files?.[ 0 ];\n\t\t\t\t\tif ( ! file ) return;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst currentCategoryId =\n\t\t\t\t\t\t\tparams.categoryType !== TEMPLATE_PART_POST_TYPE &&\n\t\t\t\t\t\t\tpatternCategories.find(\n\t\t\t\t\t\t\t\t( category ) =>\n\t\t\t\t\t\t\t\t\tcategory.name === params.categoryId\n\t\t\t\t\t\t\t)?.id;\n\t\t\t\t\t\tconst pattern = await createPatternFromFile(\n\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\tcurrentCategoryId\n\t\t\t\t\t\t\t\t? [ currentCategoryId ]\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// Navigate to the All patterns category for the newly created pattern\n\t\t\t\t\t\t// if we're not on that page already.\n\t\t\t\t\t\tif ( ! currentCategoryId ) {\n\t\t\t\t\t\t\thistory.push( {\n\t\t\t\t\t\t\t\tpath: `/patterns`,\n\t\t\t\t\t\t\t\tcategoryType: PATTERN_TYPES.theme,\n\t\t\t\t\t\t\t\tcategoryId: PATTERN_DEFAULT_CATEGORY,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The imported pattern's title.\n\t\t\t\t\t\t\t\t__( 'Imported \"%s\" from JSON.' ),\n\t\t\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\tid: 'import-pattern-success',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch ( err ) {\n\t\t\t\t\t\tcreateErrorNotice( err.message, {\n\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\tid: 'import-pattern-error',\n\t\t\t\t\t\t} );\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tevent.target.value = '';\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_components","_i18n","_icons","_data","_router","_patterns","_coreData","_notices","_createTemplatePartModal","_interopRequireDefault","_sidebarButton","_lockUnlock","_constants","_usePatternCategories","useHistory","useLocation","unlock","routerPrivateApis","CreatePatternModal","editPatternsPrivateApis","AddNewPattern","history","params","showPatternModal","setShowPatternModal","useState","showTemplatePartModal","setShowTemplatePartModal","isBlockBasedTheme","useSelect","select","coreStore","getCurrentTheme","is_block_theme","createPatternFromFile","useDispatch","patternsStore","createSuccessNotice","createErrorNotice","noticesStore","patternUploadInputRef","useRef","patternCategories","usePatternCategories","handleCreatePattern","pattern","categoryId","push","postId","id","postType","PATTERN_TYPES","user","categoryType","theme","canvas","handleCreateTemplatePart","templatePart","TEMPLATE_PART_POST_TYPE","handleError","controls","icon","symbol","onClick","title","__","symbolFilled","upload","current","click","createElement","Fragment","DropdownMenu","toggleProps","as","SidebarButton","plus","label","onClose","onSuccess","onError","default","closeModal","blocks","onCreate","type","accept","hidden","ref","onChange","event","file","target","files","currentCategoryId","find","category","name","undefined","path","PATTERN_DEFAULT_CATEGORY","sprintf","raw","err","message","value"],"sources":["@wordpress/edit-site/src/components/add-new-pattern/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { DropdownMenu } from '@wordpress/components';\nimport { useState, useRef } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { plus, symbol, symbolFilled, upload } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport {\n\tprivateApis as editPatternsPrivateApis,\n\tstore as patternsStore,\n} from '@wordpress/patterns';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport CreateTemplatePartModal from '../create-template-part-modal';\nimport SidebarButton from '../sidebar-button';\nimport { unlock } from '../../lock-unlock';\nimport {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tTEMPLATE_PART_POST_TYPE,\n} from '../../utils/constants';\nimport usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';\n\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\nconst { CreatePatternModal } = unlock( editPatternsPrivateApis );\n\nexport default function AddNewPattern() {\n\tconst history = useHistory();\n\tconst { params } = useLocation();\n\tconst [ showPatternModal, setShowPatternModal ] = useState( false );\n\tconst [ showTemplatePartModal, setShowTemplatePartModal ] =\n\t\tuseState( false );\n\tconst isBlockBasedTheme = useSelect( ( select ) => {\n\t\treturn select( coreStore ).getCurrentTheme()?.is_block_theme;\n\t}, [] );\n\tconst { createPatternFromFile } = unlock( useDispatch( patternsStore ) );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst patternUploadInputRef = useRef();\n\tconst { patternCategories } = usePatternCategories();\n\n\tfunction handleCreatePattern( { pattern, categoryId } ) {\n\t\tsetShowPatternModal( false );\n\n\t\thistory.push( {\n\t\t\tpostId: pattern.id,\n\t\t\tpostType: PATTERN_TYPES.user,\n\t\t\tcategoryType: PATTERN_TYPES.theme,\n\t\t\tcategoryId,\n\t\t\tcanvas: 'edit',\n\t\t} );\n\t}\n\n\tfunction handleCreateTemplatePart( templatePart ) {\n\t\tsetShowTemplatePartModal( false );\n\n\t\t// Navigate to the created template part editor.\n\t\thistory.push( {\n\t\t\tpostId: templatePart.id,\n\t\t\tpostType: TEMPLATE_PART_POST_TYPE,\n\t\t\tcanvas: 'edit',\n\t\t} );\n\t}\n\n\tfunction handleError() {\n\t\tsetShowPatternModal( false );\n\t\tsetShowTemplatePartModal( false );\n\t}\n\n\tconst controls = [\n\t\t{\n\t\t\ticon: symbol,\n\t\t\tonClick: () => setShowPatternModal( true ),\n\t\t\ttitle: __( 'Create pattern' ),\n\t\t},\n\t];\n\n\tif ( isBlockBasedTheme ) {\n\t\tcontrols.push( {\n\t\t\ticon: symbolFilled,\n\t\t\tonClick: () => setShowTemplatePartModal( true ),\n\t\t\ttitle: __( 'Create template part' ),\n\t\t} );\n\t}\n\n\tcontrols.push( {\n\t\ticon: upload,\n\t\tonClick: () => {\n\t\t\tpatternUploadInputRef.current.click();\n\t\t},\n\t\ttitle: __( 'Import pattern from JSON' ),\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenu\n\t\t\t\tcontrols={ controls }\n\t\t\t\ttoggleProps={ {\n\t\t\t\t\tas: SidebarButton,\n\t\t\t\t} }\n\t\t\t\ticon={ plus }\n\t\t\t\tlabel={ __( 'Create pattern' ) }\n\t\t\t/>\n\t\t\t{ showPatternModal && (\n\t\t\t\t<CreatePatternModal\n\t\t\t\t\tonClose={ () => setShowPatternModal( false ) }\n\t\t\t\t\tonSuccess={ handleCreatePattern }\n\t\t\t\t\tonError={ handleError }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showTemplatePartModal && (\n\t\t\t\t<CreateTemplatePartModal\n\t\t\t\t\tcloseModal={ () => setShowTemplatePartModal( false ) }\n\t\t\t\t\tblocks={ [] }\n\t\t\t\t\tonCreate={ handleCreateTemplatePart }\n\t\t\t\t\tonError={ handleError }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept=\".json\"\n\t\t\t\thidden\n\t\t\t\tref={ patternUploadInputRef }\n\t\t\t\tonChange={ async ( event ) => {\n\t\t\t\t\tconst file = event.target.files?.[ 0 ];\n\t\t\t\t\tif ( ! file ) return;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst currentCategoryId =\n\t\t\t\t\t\t\tparams.categoryType !== TEMPLATE_PART_POST_TYPE &&\n\t\t\t\t\t\t\tpatternCategories.find(\n\t\t\t\t\t\t\t\t( category ) =>\n\t\t\t\t\t\t\t\t\tcategory.name === params.categoryId\n\t\t\t\t\t\t\t)?.id;\n\t\t\t\t\t\tconst pattern = await createPatternFromFile(\n\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\tcurrentCategoryId\n\t\t\t\t\t\t\t\t? [ currentCategoryId ]\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// Navigate to the All patterns category for the newly created pattern\n\t\t\t\t\t\t// if we're not on that page already.\n\t\t\t\t\t\tif ( ! currentCategoryId ) {\n\t\t\t\t\t\t\thistory.push( {\n\t\t\t\t\t\t\t\tpath: `/patterns`,\n\t\t\t\t\t\t\t\tcategoryType: PATTERN_TYPES.theme,\n\t\t\t\t\t\t\t\tcategoryId: PATTERN_DEFAULT_CATEGORY,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The imported pattern's title.\n\t\t\t\t\t\t\t\t__( 'Imported \"%s\" from JSON.' ),\n\t\t\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\tid: 'import-pattern-success',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch ( err ) {\n\t\t\t\t\t\tcreateErrorNotice( err.message, {\n\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\tid: 'import-pattern-error',\n\t\t\t\t\t\t} );\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tevent.target.value = '';\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],"mappings":";;;;;;;AAIA,IAAAA,QAAA,GAAAC,OAAA;AADA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AAIA,IAAAO,SAAA,GAAAP,OAAA;AACA,IAAAQ,QAAA,GAAAR,OAAA;AAKA,IAAAS,wBAAA,GAAAC,sBAAA,CAAAV,OAAA;AACA,IAAAW,cAAA,GAAAD,sBAAA,CAAAV,OAAA;AACA,IAAAY,WAAA,GAAAZ,OAAA;AACA,IAAAa,UAAA,GAAAb,OAAA;AAKA,IAAAc,qBAAA,GAAAJ,sBAAA,CAAAV,OAAA;AA3BA;AACA;AACA;;AAcA;AACA;AACA;;AAWA,MAAM;EAAEe,UAAU;EAAEC;AAAY,CAAC,GAAG,IAAAC,kBAAM,EAAEC,mBAAkB,CAAC;AAC/D,MAAM;EAAEC;AAAmB,CAAC,GAAG,IAAAF,kBAAM,EAAEG,qBAAwB,CAAC;AAEjD,SAASC,aAAaA,CAAA,EAAG;EACvC,MAAMC,OAAO,GAAGP,UAAU,CAAC,CAAC;EAC5B,MAAM;IAAEQ;EAAO,CAAC,GAAGP,WAAW,CAAC,CAAC;EAChC,MAAM,CAAEQ,gBAAgB,EAAEC,mBAAmB,CAAE,GAAG,IAAAC,iBAAQ,EAAE,KAAM,CAAC;EACnE,MAAM,CAAEC,qBAAqB,EAAEC,wBAAwB,CAAE,GACxD,IAAAF,iBAAQ,EAAE,KAAM,CAAC;EAClB,MAAMG,iBAAiB,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IAClD,OAAOA,MAAM,CAAEC,eAAU,CAAC,CAACC,eAAe,CAAC,CAAC,EAAEC,cAAc;EAC7D,CAAC,EAAE,EAAG,CAAC;EACP,MAAM;IAAEC;EAAsB,CAAC,GAAG,IAAAlB,kBAAM,EAAE,IAAAmB,iBAAW,EAAEC,eAAc,CAAE,CAAC;EACxE,MAAM;IAAEC,mBAAmB;IAAEC;EAAkB,CAAC,GAC/C,IAAAH,iBAAW,EAAEI,cAAa,CAAC;EAC5B,MAAMC,qBAAqB,GAAG,IAAAC,eAAM,EAAC,CAAC;EACtC,MAAM;IAAEC;EAAkB,CAAC,GAAG,IAAAC,6BAAoB,EAAC,CAAC;EAEpD,SAASC,mBAAmBA,CAAE;IAAEC,OAAO;IAAEC;EAAW,CAAC,EAAG;IACvDtB,mBAAmB,CAAE,KAAM,CAAC;IAE5BH,OAAO,CAAC0B,IAAI,CAAE;MACbC,MAAM,EAAEH,OAAO,CAACI,EAAE;MAClBC,QAAQ,EAAEC,wBAAa,CAACC,IAAI;MAC5BC,YAAY,EAAEF,wBAAa,CAACG,KAAK;MACjCR,UAAU;MACVS,MAAM,EAAE;IACT,CAAE,CAAC;EACJ;EAEA,SAASC,wBAAwBA,CAAEC,YAAY,EAAG;IACjD9B,wBAAwB,CAAE,KAAM,CAAC;;IAEjC;IACAN,OAAO,CAAC0B,IAAI,CAAE;MACbC,MAAM,EAAES,YAAY,CAACR,EAAE;MACvBC,QAAQ,EAAEQ,kCAAuB;MACjCH,MAAM,EAAE;IACT,CAAE,CAAC;EACJ;EAEA,SAASI,WAAWA,CAAA,EAAG;IACtBnC,mBAAmB,CAAE,KAAM,CAAC;IAC5BG,wBAAwB,CAAE,KAAM,CAAC;EAClC;EAEA,MAAMiC,QAAQ,GAAG,CAChB;IACCC,IAAI,EAAEC,aAAM;IACZC,OAAO,EAAEA,CAAA,KAAMvC,mBAAmB,CAAE,IAAK,CAAC;IAC1CwC,KAAK,EAAE,IAAAC,QAAE,EAAE,gBAAiB;EAC7B,CAAC,CACD;EAED,IAAKrC,iBAAiB,EAAG;IACxBgC,QAAQ,CAACb,IAAI,CAAE;MACdc,IAAI,EAAEK,mBAAY;MAClBH,OAAO,EAAEA,CAAA,KAAMpC,wBAAwB,CAAE,IAAK,CAAC;MAC/CqC,KAAK,EAAE,IAAAC,QAAE,EAAE,sBAAuB;IACnC,CAAE,CAAC;EACJ;EAEAL,QAAQ,CAACb,IAAI,CAAE;IACdc,IAAI,EAAEM,aAAM;IACZJ,OAAO,EAAEA,CAAA,KAAM;MACdvB,qBAAqB,CAAC4B,OAAO,CAACC,KAAK,CAAC,CAAC;IACtC,CAAC;IACDL,KAAK,EAAE,IAAAC,QAAE,EAAE,0BAA2B;EACvC,CAAE,CAAC;EAEH,OACC,IAAAnE,QAAA,CAAAwE,aAAA,EAAAxE,QAAA,CAAAyE,QAAA,QACC,IAAAzE,QAAA,CAAAwE,aAAA,EAACtE,WAAA,CAAAwE,YAAY;IACZZ,QAAQ,EAAGA,QAAU;IACrBa,WAAW,EAAG;MACbC,EAAE,EAAEC;IACL,CAAG;IACHd,IAAI,EAAGe,WAAM;IACbC,KAAK,EAAG,IAAAZ,QAAE,EAAE,gBAAiB;EAAG,CAChC,CAAC,EACA1C,gBAAgB,IACjB,IAAAzB,QAAA,CAAAwE,aAAA,EAACpD,kBAAkB;IAClB4D,OAAO,EAAGA,CAAA,KAAMtD,mBAAmB,CAAE,KAAM,CAAG;IAC9CuD,SAAS,EAAGnC,mBAAqB;IACjCoC,OAAO,EAAGrB;EAAa,CACvB,CACD,EACCjC,qBAAqB,IACtB,IAAA5B,QAAA,CAAAwE,aAAA,EAAC9D,wBAAA,CAAAyE,OAAuB;IACvBC,UAAU,EAAGA,CAAA,KAAMvD,wBAAwB,CAAE,KAAM,CAAG;IACtDwD,MAAM,EAAG,EAAI;IACbC,QAAQ,EAAG5B,wBAA0B;IACrCwB,OAAO,EAAGrB;EAAa,CACvB,CACD,EAED,IAAA7D,QAAA,CAAAwE,aAAA;IACCe,IAAI,EAAC,MAAM;IACXC,MAAM,EAAC,OAAO;IACdC,MAAM;IACNC,GAAG,EAAGhD,qBAAuB;IAC7BiD,QAAQ,EAAG,MAAQC,KAAK,IAAM;MAC7B,MAAMC,IAAI,GAAGD,KAAK,CAACE,MAAM,CAACC,KAAK,GAAI,CAAC,CAAE;MACtC,IAAK,CAAEF,IAAI,EAAG;MACd,IAAI;QACH,MAAMG,iBAAiB,GACtBxE,MAAM,CAAC+B,YAAY,KAAKK,kCAAuB,IAC/ChB,iBAAiB,CAACqD,IAAI,CACnBC,QAAQ,IACTA,QAAQ,CAACC,IAAI,KAAK3E,MAAM,CAACwB,UAC3B,CAAC,EAAEG,EAAE;QACN,MAAMJ,OAAO,GAAG,MAAMX,qBAAqB,CAC1CyD,IAAI,EACJG,iBAAiB,GACd,CAAEA,iBAAiB,CAAE,GACrBI,SACJ,CAAC;;QAED;QACA;QACA,IAAK,CAAEJ,iBAAiB,EAAG;UAC1BzE,OAAO,CAAC0B,IAAI,CAAE;YACboD,IAAI,EAAG,WAAU;YACjB9C,YAAY,EAAEF,wBAAa,CAACG,KAAK;YACjCR,UAAU,EAAEsD;UACb,CAAE,CAAC;QACJ;QAEA/D,mBAAmB,CAClB,IAAAgE,aAAO;QACN;QACA,IAAApC,QAAE,EAAE,0BAA2B,CAAC,EAChCpB,OAAO,CAACmB,KAAK,CAACsC,GACf,CAAC,EACD;UACCjB,IAAI,EAAE,UAAU;UAChBpC,EAAE,EAAE;QACL,CACD,CAAC;MACF,CAAC,CAAC,OAAQsD,GAAG,EAAG;QACfjE,iBAAiB,CAAEiE,GAAG,CAACC,OAAO,EAAE;UAC/BnB,IAAI,EAAE,UAAU;UAChBpC,EAAE,EAAE;QACL,CAAE,CAAC;MACJ,CAAC,SAAS;QACTyC,KAAK,CAACE,MAAM,CAACa,KAAK,GAAG,EAAE;MACxB;IACD;EAAG,CACH,CACA,CAAC;AAEL"}
@@ -27,7 +27,7 @@ async function fetchInstallFonts(data) {
27
27
  }
28
28
  async function fetchUninstallFonts(fonts) {
29
29
  const data = {
30
- fontFamilies: fonts
30
+ font_families: fonts
31
31
  };
32
32
  const config = {
33
33
  path: '/wp/v2/fonts',
@@ -1 +1 @@
1
- {"version":3,"names":["_apiFetch","_interopRequireDefault","require","fetchInstallFonts","data","config","path","method","body","apiFetch","fetchUninstallFonts","fonts","fontFamilies","fetchFontCollections","fetchFontCollection","id"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/resolvers.js"],"sourcesContent":["/**\n * WordPress dependencies\n *\n */\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\n\nexport async function fetchInstallFonts( data ) {\n\tconst config = {\n\t\tpath: '/wp/v2/fonts',\n\t\tmethod: 'POST',\n\t\tbody: data,\n\t};\n\treturn apiFetch( config );\n}\n\nexport async function fetchUninstallFonts( fonts ) {\n\tconst data = {\n\t\tfontFamilies: fonts,\n\t};\n\tconst config = {\n\t\tpath: '/wp/v2/fonts',\n\t\tmethod: 'DELETE',\n\t\tdata,\n\t};\n\treturn apiFetch( config );\n}\n\nexport async function fetchFontCollections() {\n\tconst config = {\n\t\tpath: '/wp/v2/fonts/collections',\n\t\tmethod: 'GET',\n\t};\n\treturn apiFetch( config );\n}\n\nexport async function fetchFontCollection( id ) {\n\tconst config = {\n\t\tpath: `/wp/v2/fonts/collections/${ id }`,\n\t\tmethod: 'GET',\n\t};\n\treturn apiFetch( config );\n}\n"],"mappings":";;;;;;;;;;AAOA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AAPA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGO,eAAeC,iBAAiBA,CAAEC,IAAI,EAAG;EAC/C,MAAMC,MAAM,GAAG;IACdC,IAAI,EAAE,cAAc;IACpBC,MAAM,EAAE,MAAM;IACdC,IAAI,EAAEJ;EACP,CAAC;EACD,OAAO,IAAAK,iBAAQ,EAAEJ,MAAO,CAAC;AAC1B;AAEO,eAAeK,mBAAmBA,CAAEC,KAAK,EAAG;EAClD,MAAMP,IAAI,GAAG;IACZQ,YAAY,EAAED;EACf,CAAC;EACD,MAAMN,MAAM,GAAG;IACdC,IAAI,EAAE,cAAc;IACpBC,MAAM,EAAE,QAAQ;IAChBH;EACD,CAAC;EACD,OAAO,IAAAK,iBAAQ,EAAEJ,MAAO,CAAC;AAC1B;AAEO,eAAeQ,oBAAoBA,CAAA,EAAG;EAC5C,MAAMR,MAAM,GAAG;IACdC,IAAI,EAAE,0BAA0B;IAChCC,MAAM,EAAE;EACT,CAAC;EACD,OAAO,IAAAE,iBAAQ,EAAEJ,MAAO,CAAC;AAC1B;AAEO,eAAeS,mBAAmBA,CAAEC,EAAE,EAAG;EAC/C,MAAMV,MAAM,GAAG;IACdC,IAAI,EAAG,4BAA4BS,EAAI,EAAC;IACxCR,MAAM,EAAE;EACT,CAAC;EACD,OAAO,IAAAE,iBAAQ,EAAEJ,MAAO,CAAC;AAC1B"}
1
+ {"version":3,"names":["_apiFetch","_interopRequireDefault","require","fetchInstallFonts","data","config","path","method","body","apiFetch","fetchUninstallFonts","fonts","font_families","fetchFontCollections","fetchFontCollection","id"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/resolvers.js"],"sourcesContent":["/**\n * WordPress dependencies\n *\n */\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\n\nexport async function fetchInstallFonts( data ) {\n\tconst config = {\n\t\tpath: '/wp/v2/fonts',\n\t\tmethod: 'POST',\n\t\tbody: data,\n\t};\n\treturn apiFetch( config );\n}\n\nexport async function fetchUninstallFonts( fonts ) {\n\tconst data = {\n\t\tfont_families: fonts,\n\t};\n\tconst config = {\n\t\tpath: '/wp/v2/fonts',\n\t\tmethod: 'DELETE',\n\t\tdata,\n\t};\n\treturn apiFetch( config );\n}\n\nexport async function fetchFontCollections() {\n\tconst config = {\n\t\tpath: '/wp/v2/fonts/collections',\n\t\tmethod: 'GET',\n\t};\n\treturn apiFetch( config );\n}\n\nexport async function fetchFontCollection( id ) {\n\tconst config = {\n\t\tpath: `/wp/v2/fonts/collections/${ id }`,\n\t\tmethod: 'GET',\n\t};\n\treturn apiFetch( config );\n}\n"],"mappings":";;;;;;;;;;AAOA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AAPA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGO,eAAeC,iBAAiBA,CAAEC,IAAI,EAAG;EAC/C,MAAMC,MAAM,GAAG;IACdC,IAAI,EAAE,cAAc;IACpBC,MAAM,EAAE,MAAM;IACdC,IAAI,EAAEJ;EACP,CAAC;EACD,OAAO,IAAAK,iBAAQ,EAAEJ,MAAO,CAAC;AAC1B;AAEO,eAAeK,mBAAmBA,CAAEC,KAAK,EAAG;EAClD,MAAMP,IAAI,GAAG;IACZQ,aAAa,EAAED;EAChB,CAAC;EACD,MAAMN,MAAM,GAAG;IACdC,IAAI,EAAE,cAAc;IACpBC,MAAM,EAAE,QAAQ;IAChBH;EACD,CAAC;EACD,OAAO,IAAAK,iBAAQ,EAAEJ,MAAO,CAAC;AAC1B;AAEO,eAAeQ,oBAAoBA,CAAA,EAAG;EAC5C,MAAMR,MAAM,GAAG;IACdC,IAAI,EAAE,0BAA0B;IAChCC,MAAM,EAAE;EACT,CAAC;EACD,OAAO,IAAAE,iBAAQ,EAAEJ,MAAO,CAAC;AAC1B;AAEO,eAAeS,mBAAmBA,CAAEC,EAAE,EAAG;EAC/C,MAAMV,MAAM,GAAG;IACdC,IAAI,EAAG,4BAA4BS,EAAI,EAAC;IACxCR,MAAM,EAAE;EACT,CAAC;EACD,OAAO,IAAAE,iBAAQ,EAAEJ,MAAO,CAAC;AAC1B"}
@@ -152,7 +152,7 @@ function makeFormDataFromFontFamilies(fontFamilies) {
152
152
  }
153
153
  return family;
154
154
  });
155
- formData.append('fontFamilies', JSON.stringify(newFontFamilies));
155
+ formData.append('font_families', JSON.stringify(newFontFamilies));
156
156
  return formData;
157
157
  }
158
158
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_previewStyles","setUIValuesNeeded","font","extraValues","name","fontFamily","slug","isUrlEncoded","url","decodeURIComponent","getFontFaceVariantName","face","weightName","FONT_WEIGHTS","fontWeight","styleName","fontStyle","FONT_STYLES","mergeFontFaces","existing","incoming","map","Map","set","Array","from","values","mergeFontFamilies","has","fontFace","incomingFontFaces","restIncoming","existingFont","get","mergedFontFaces","loadFontFaceInBrowser","source","addTo","dataSource","File","arrayBuffer","newFont","FontFace","formatFontFamily","style","weight","loadedFace","load","document","fonts","add","iframeDocument","querySelector","contentDocument","getDisplaySrcFromFontFace","input","urlPrefix","src","isArray","startsWith","replace","encodeURI","makeFormDataFromFontFamilies","fontFamilies","formData","FormData","newFontFamilies","family","familyIndex","faceIndex","file","fileId","append","faceWithoutFileProperty","newFace","uploadedFile","JSON","stringify"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/utils/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport { FONT_WEIGHTS, FONT_STYLES } from './constants';\nimport { formatFontFamily } from './preview-styles';\n\nexport function setUIValuesNeeded( font, extraValues = {} ) {\n\tif ( ! font.name && ( font.fontFamily || font.slug ) ) {\n\t\tfont.name = font.fontFamily || font.slug;\n\t}\n\treturn {\n\t\t...font,\n\t\t...extraValues,\n\t};\n}\n\nexport function isUrlEncoded( url ) {\n\tif ( typeof url !== 'string' ) {\n\t\treturn false;\n\t}\n\treturn url !== decodeURIComponent( url );\n}\n\nexport function getFontFaceVariantName( face ) {\n\tconst weightName = FONT_WEIGHTS[ face.fontWeight ] || face.fontWeight;\n\tconst styleName =\n\t\tface.fontStyle === 'normal'\n\t\t\t? ''\n\t\t\t: FONT_STYLES[ face.fontStyle ] || face.fontStyle;\n\treturn `${ weightName } ${ styleName }`;\n}\n\nexport function mergeFontFaces( existing = [], incoming = [] ) {\n\tconst map = new Map();\n\tfor ( const face of existing ) {\n\t\tmap.set( `${ face.fontWeight }${ face.fontStyle }`, face );\n\t}\n\tfor ( const face of incoming ) {\n\t\t// This will overwrite if the src already exists, keeping it unique.\n\t\tmap.set( `${ face.fontWeight }${ face.fontStyle }`, face );\n\t}\n\treturn Array.from( map.values() );\n}\n\nexport function mergeFontFamilies( existing = [], incoming = [] ) {\n\tconst map = new Map();\n\t// Add the existing array to the map.\n\tfor ( const font of existing ) {\n\t\tmap.set( font.slug, { ...font } );\n\t}\n\t// Add the incoming array to the map, overwriting existing values excepting fontFace that need to be merged.\n\tfor ( const font of incoming ) {\n\t\tif ( map.has( font.slug ) ) {\n\t\t\tconst { fontFace: incomingFontFaces, ...restIncoming } = font;\n\t\t\tconst existingFont = map.get( font.slug );\n\t\t\t// Merge the fontFaces existing with the incoming fontFaces.\n\t\t\tconst mergedFontFaces = mergeFontFaces(\n\t\t\t\texistingFont.fontFace,\n\t\t\t\tincomingFontFaces\n\t\t\t);\n\t\t\t// Except for the fontFace key all the other keys are overwritten with the incoming values.\n\t\t\tmap.set( font.slug, {\n\t\t\t\t...restIncoming,\n\t\t\t\tfontFace: mergedFontFaces,\n\t\t\t} );\n\t\t} else {\n\t\t\tmap.set( font.slug, { ...font } );\n\t\t}\n\t}\n\treturn Array.from( map.values() );\n}\n\n/*\n * Loads the font face from a URL and adds it to the browser.\n * It also adds it to the iframe document.\n */\nexport async function loadFontFaceInBrowser( fontFace, source, addTo = 'all' ) {\n\tlet dataSource;\n\n\tif ( typeof source === 'string' ) {\n\t\tdataSource = `url(${ source })`;\n\t\t// eslint-disable-next-line no-undef\n\t} else if ( source instanceof File ) {\n\t\tdataSource = await source.arrayBuffer();\n\t}\n\n\t// eslint-disable-next-line no-undef\n\tconst newFont = new FontFace(\n\t\tformatFontFamily( fontFace.fontFamily ),\n\t\tdataSource,\n\t\t{\n\t\t\tstyle: fontFace.fontStyle,\n\t\t\tweight: fontFace.fontWeight,\n\t\t}\n\t);\n\n\tconst loadedFace = await newFont.load();\n\n\tif ( addTo === 'document' || addTo === 'all' ) {\n\t\tdocument.fonts.add( loadedFace );\n\t}\n\n\tif ( addTo === 'iframe' || addTo === 'all' ) {\n\t\tconst iframeDocument = document.querySelector(\n\t\t\t'iframe[name=\"editor-canvas\"]'\n\t\t).contentDocument;\n\t\tiframeDocument.fonts.add( loadedFace );\n\t}\n}\n\nexport function getDisplaySrcFromFontFace( input, urlPrefix ) {\n\tif ( ! input ) {\n\t\treturn;\n\t}\n\n\tlet src;\n\tif ( Array.isArray( input ) ) {\n\t\tsrc = input[ 0 ];\n\t} else {\n\t\tsrc = input;\n\t}\n\t// If it is a theme font, we need to make the url absolute\n\tif ( src.startsWith( 'file:.' ) && urlPrefix ) {\n\t\tsrc = src.replace( 'file:.', urlPrefix );\n\t}\n\tif ( ! isUrlEncoded( src ) ) {\n\t\tsrc = encodeURI( src );\n\t}\n\treturn src;\n}\n\nexport function makeFormDataFromFontFamilies( fontFamilies ) {\n\tconst formData = new FormData();\n\tconst newFontFamilies = fontFamilies.map( ( family, familyIndex ) => {\n\t\tif ( family?.fontFace ) {\n\t\t\tfamily.fontFace = family.fontFace.map( ( face, faceIndex ) => {\n\t\t\t\tif ( face.file ) {\n\t\t\t\t\t// Slugified file name because the it might contain spaces or characters treated differently on the server.\n\t\t\t\t\tconst fileId = `file-${ familyIndex }-${ faceIndex }`;\n\t\t\t\t\t// Add the files to the formData\n\t\t\t\t\tformData.append( fileId, face.file, face.file.name );\n\t\t\t\t\t// remove the file object from the face object the file is referenced by the uploadedFile key\n\t\t\t\t\tconst { file, ...faceWithoutFileProperty } = face;\n\t\t\t\t\tconst newFace = {\n\t\t\t\t\t\t...faceWithoutFileProperty,\n\t\t\t\t\t\tuploadedFile: fileId,\n\t\t\t\t\t};\n\t\t\t\t\treturn newFace;\n\t\t\t\t}\n\t\t\t\treturn face;\n\t\t\t} );\n\t\t}\n\t\treturn family;\n\t} );\n\tformData.append( 'fontFamilies', JSON.stringify( newFontFamilies ) );\n\treturn formData;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_constants","require","_previewStyles","setUIValuesNeeded","font","extraValues","name","fontFamily","slug","isUrlEncoded","url","decodeURIComponent","getFontFaceVariantName","face","weightName","FONT_WEIGHTS","fontWeight","styleName","fontStyle","FONT_STYLES","mergeFontFaces","existing","incoming","map","Map","set","Array","from","values","mergeFontFamilies","has","fontFace","incomingFontFaces","restIncoming","existingFont","get","mergedFontFaces","loadFontFaceInBrowser","source","addTo","dataSource","File","arrayBuffer","newFont","FontFace","formatFontFamily","style","weight","loadedFace","load","document","fonts","add","iframeDocument","querySelector","contentDocument","getDisplaySrcFromFontFace","input","urlPrefix","src","isArray","startsWith","replace","encodeURI","makeFormDataFromFontFamilies","fontFamilies","formData","FormData","newFontFamilies","family","familyIndex","faceIndex","file","fileId","append","faceWithoutFileProperty","newFace","uploadedFile","JSON","stringify"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/utils/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport { FONT_WEIGHTS, FONT_STYLES } from './constants';\nimport { formatFontFamily } from './preview-styles';\n\nexport function setUIValuesNeeded( font, extraValues = {} ) {\n\tif ( ! font.name && ( font.fontFamily || font.slug ) ) {\n\t\tfont.name = font.fontFamily || font.slug;\n\t}\n\treturn {\n\t\t...font,\n\t\t...extraValues,\n\t};\n}\n\nexport function isUrlEncoded( url ) {\n\tif ( typeof url !== 'string' ) {\n\t\treturn false;\n\t}\n\treturn url !== decodeURIComponent( url );\n}\n\nexport function getFontFaceVariantName( face ) {\n\tconst weightName = FONT_WEIGHTS[ face.fontWeight ] || face.fontWeight;\n\tconst styleName =\n\t\tface.fontStyle === 'normal'\n\t\t\t? ''\n\t\t\t: FONT_STYLES[ face.fontStyle ] || face.fontStyle;\n\treturn `${ weightName } ${ styleName }`;\n}\n\nexport function mergeFontFaces( existing = [], incoming = [] ) {\n\tconst map = new Map();\n\tfor ( const face of existing ) {\n\t\tmap.set( `${ face.fontWeight }${ face.fontStyle }`, face );\n\t}\n\tfor ( const face of incoming ) {\n\t\t// This will overwrite if the src already exists, keeping it unique.\n\t\tmap.set( `${ face.fontWeight }${ face.fontStyle }`, face );\n\t}\n\treturn Array.from( map.values() );\n}\n\nexport function mergeFontFamilies( existing = [], incoming = [] ) {\n\tconst map = new Map();\n\t// Add the existing array to the map.\n\tfor ( const font of existing ) {\n\t\tmap.set( font.slug, { ...font } );\n\t}\n\t// Add the incoming array to the map, overwriting existing values excepting fontFace that need to be merged.\n\tfor ( const font of incoming ) {\n\t\tif ( map.has( font.slug ) ) {\n\t\t\tconst { fontFace: incomingFontFaces, ...restIncoming } = font;\n\t\t\tconst existingFont = map.get( font.slug );\n\t\t\t// Merge the fontFaces existing with the incoming fontFaces.\n\t\t\tconst mergedFontFaces = mergeFontFaces(\n\t\t\t\texistingFont.fontFace,\n\t\t\t\tincomingFontFaces\n\t\t\t);\n\t\t\t// Except for the fontFace key all the other keys are overwritten with the incoming values.\n\t\t\tmap.set( font.slug, {\n\t\t\t\t...restIncoming,\n\t\t\t\tfontFace: mergedFontFaces,\n\t\t\t} );\n\t\t} else {\n\t\t\tmap.set( font.slug, { ...font } );\n\t\t}\n\t}\n\treturn Array.from( map.values() );\n}\n\n/*\n * Loads the font face from a URL and adds it to the browser.\n * It also adds it to the iframe document.\n */\nexport async function loadFontFaceInBrowser( fontFace, source, addTo = 'all' ) {\n\tlet dataSource;\n\n\tif ( typeof source === 'string' ) {\n\t\tdataSource = `url(${ source })`;\n\t\t// eslint-disable-next-line no-undef\n\t} else if ( source instanceof File ) {\n\t\tdataSource = await source.arrayBuffer();\n\t}\n\n\t// eslint-disable-next-line no-undef\n\tconst newFont = new FontFace(\n\t\tformatFontFamily( fontFace.fontFamily ),\n\t\tdataSource,\n\t\t{\n\t\t\tstyle: fontFace.fontStyle,\n\t\t\tweight: fontFace.fontWeight,\n\t\t}\n\t);\n\n\tconst loadedFace = await newFont.load();\n\n\tif ( addTo === 'document' || addTo === 'all' ) {\n\t\tdocument.fonts.add( loadedFace );\n\t}\n\n\tif ( addTo === 'iframe' || addTo === 'all' ) {\n\t\tconst iframeDocument = document.querySelector(\n\t\t\t'iframe[name=\"editor-canvas\"]'\n\t\t).contentDocument;\n\t\tiframeDocument.fonts.add( loadedFace );\n\t}\n}\n\nexport function getDisplaySrcFromFontFace( input, urlPrefix ) {\n\tif ( ! input ) {\n\t\treturn;\n\t}\n\n\tlet src;\n\tif ( Array.isArray( input ) ) {\n\t\tsrc = input[ 0 ];\n\t} else {\n\t\tsrc = input;\n\t}\n\t// If it is a theme font, we need to make the url absolute\n\tif ( src.startsWith( 'file:.' ) && urlPrefix ) {\n\t\tsrc = src.replace( 'file:.', urlPrefix );\n\t}\n\tif ( ! isUrlEncoded( src ) ) {\n\t\tsrc = encodeURI( src );\n\t}\n\treturn src;\n}\n\nexport function makeFormDataFromFontFamilies( fontFamilies ) {\n\tconst formData = new FormData();\n\tconst newFontFamilies = fontFamilies.map( ( family, familyIndex ) => {\n\t\tif ( family?.fontFace ) {\n\t\t\tfamily.fontFace = family.fontFace.map( ( face, faceIndex ) => {\n\t\t\t\tif ( face.file ) {\n\t\t\t\t\t// Slugified file name because the it might contain spaces or characters treated differently on the server.\n\t\t\t\t\tconst fileId = `file-${ familyIndex }-${ faceIndex }`;\n\t\t\t\t\t// Add the files to the formData\n\t\t\t\t\tformData.append( fileId, face.file, face.file.name );\n\t\t\t\t\t// remove the file object from the face object the file is referenced by the uploadedFile key\n\t\t\t\t\tconst { file, ...faceWithoutFileProperty } = face;\n\t\t\t\t\tconst newFace = {\n\t\t\t\t\t\t...faceWithoutFileProperty,\n\t\t\t\t\t\tuploadedFile: fileId,\n\t\t\t\t\t};\n\t\t\t\t\treturn newFace;\n\t\t\t\t}\n\t\t\t\treturn face;\n\t\t\t} );\n\t\t}\n\t\treturn family;\n\t} );\n\tformData.append( 'font_families', JSON.stringify( newFontFamilies ) );\n\treturn formData;\n}\n"],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useAvailablePatterns = useAvailablePatterns;
7
+ var _data = require("@wordpress/data");
8
+ var _element = require("@wordpress/element");
9
+ var _coreData = require("@wordpress/core-data");
10
+ var _blocks = require("@wordpress/blocks");
11
+ var _store = require("../../../store");
12
+ var _constants = require("../../../utils/constants");
13
+ var _lockUnlock = require("../../../lock-unlock");
14
+ /**
15
+ * WordPress dependencies
16
+ */
17
+
18
+ /**
19
+ * Internal dependencies
20
+ */
21
+
22
+ function injectThemeAttributeInBlockTemplateContent(block, currentThemeStylesheet) {
23
+ block.innerBlocks = block.innerBlocks.map(innerBlock => {
24
+ return injectThemeAttributeInBlockTemplateContent(innerBlock, currentThemeStylesheet);
25
+ });
26
+ if (block.name === 'core/template-part' && block.attributes.theme === undefined) {
27
+ block.attributes.theme = currentThemeStylesheet;
28
+ }
29
+ return block;
30
+ }
31
+ function preparePatterns(patterns, template, currentThemeStylesheet) {
32
+ // Filter out duplicates.
33
+ const filterOutDuplicatesByName = (currentItem, index, items) => index === items.findIndex(item => currentItem.name === item.name);
34
+
35
+ // Filter out core patterns.
36
+ const filterOutCorePatterns = pattern => !_constants.PATTERN_CORE_SOURCES.includes(pattern.source);
37
+
38
+ // Filter only the patterns that are compatible with the current template.
39
+ const filterCompatiblePatterns = pattern => pattern.templateTypes?.includes(template.slug);
40
+ return patterns.filter(filterOutCorePatterns && filterOutDuplicatesByName && filterCompatiblePatterns).map(pattern => ({
41
+ ...pattern,
42
+ keywords: pattern.keywords || [],
43
+ type: _constants.PATTERN_TYPES.theme,
44
+ blocks: (0, _blocks.parse)(pattern.content, {
45
+ __unstableSkipMigrationLogs: true
46
+ }).map(block => injectThemeAttributeInBlockTemplateContent(block, currentThemeStylesheet))
47
+ }));
48
+ }
49
+ function useAvailablePatterns(template) {
50
+ const {
51
+ blockPatterns,
52
+ restBlockPatterns,
53
+ currentThemeStylesheet
54
+ } = (0, _data.useSelect)(select => {
55
+ var _settings$__experimen;
56
+ const {
57
+ getSettings
58
+ } = (0, _lockUnlock.unlock)(select(_store.store));
59
+ const settings = getSettings();
60
+ return {
61
+ blockPatterns: (_settings$__experimen = settings.__experimentalAdditionalBlockPatterns) !== null && _settings$__experimen !== void 0 ? _settings$__experimen : settings.__experimentalBlockPatterns,
62
+ restBlockPatterns: select(_coreData.store).getBlockPatterns(),
63
+ currentThemeStylesheet: select(_coreData.store).getCurrentTheme().stylesheet
64
+ };
65
+ }, []);
66
+ return (0, _element.useMemo)(() => {
67
+ const mergedPatterns = [...(blockPatterns || []), ...(restBlockPatterns || [])];
68
+ return preparePatterns(mergedPatterns, template, currentThemeStylesheet);
69
+ }, [blockPatterns, restBlockPatterns, template, currentThemeStylesheet]);
70
+ }
71
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_data","require","_element","_coreData","_blocks","_store","_constants","_lockUnlock","injectThemeAttributeInBlockTemplateContent","block","currentThemeStylesheet","innerBlocks","map","innerBlock","name","attributes","theme","undefined","preparePatterns","patterns","template","filterOutDuplicatesByName","currentItem","index","items","findIndex","item","filterOutCorePatterns","pattern","PATTERN_CORE_SOURCES","includes","source","filterCompatiblePatterns","templateTypes","slug","filter","keywords","type","PATTERN_TYPES","blocks","parse","content","__unstableSkipMigrationLogs","useAvailablePatterns","blockPatterns","restBlockPatterns","useSelect","select","_settings$__experimen","getSettings","unlock","editSiteStore","settings","__experimentalAdditionalBlockPatterns","__experimentalBlockPatterns","coreStore","getBlockPatterns","getCurrentTheme","stylesheet","useMemo","mergedPatterns"],"sources":["@wordpress/edit-site/src/components/sidebar-edit-mode/template-panel/hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { parse } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../../store';\nimport { PATTERN_CORE_SOURCES, PATTERN_TYPES } from '../../../utils/constants';\nimport { unlock } from '../../../lock-unlock';\n\nfunction injectThemeAttributeInBlockTemplateContent(\n\tblock,\n\tcurrentThemeStylesheet\n) {\n\tblock.innerBlocks = block.innerBlocks.map( ( innerBlock ) => {\n\t\treturn injectThemeAttributeInBlockTemplateContent(\n\t\t\tinnerBlock,\n\t\t\tcurrentThemeStylesheet\n\t\t);\n\t} );\n\n\tif (\n\t\tblock.name === 'core/template-part' &&\n\t\tblock.attributes.theme === undefined\n\t) {\n\t\tblock.attributes.theme = currentThemeStylesheet;\n\t}\n\treturn block;\n}\n\nfunction preparePatterns( patterns, template, currentThemeStylesheet ) {\n\t// Filter out duplicates.\n\tconst filterOutDuplicatesByName = ( currentItem, index, items ) =>\n\t\tindex === items.findIndex( ( item ) => currentItem.name === item.name );\n\n\t// Filter out core patterns.\n\tconst filterOutCorePatterns = ( pattern ) =>\n\t\t! PATTERN_CORE_SOURCES.includes( pattern.source );\n\n\t// Filter only the patterns that are compatible with the current template.\n\tconst filterCompatiblePatterns = ( pattern ) =>\n\t\tpattern.templateTypes?.includes( template.slug );\n\n\treturn patterns\n\t\t.filter(\n\t\t\tfilterOutCorePatterns &&\n\t\t\t\tfilterOutDuplicatesByName &&\n\t\t\t\tfilterCompatiblePatterns\n\t\t)\n\t\t.map( ( pattern ) => ( {\n\t\t\t...pattern,\n\t\t\tkeywords: pattern.keywords || [],\n\t\t\ttype: PATTERN_TYPES.theme,\n\t\t\tblocks: parse( pattern.content, {\n\t\t\t\t__unstableSkipMigrationLogs: true,\n\t\t\t} ).map( ( block ) =>\n\t\t\t\tinjectThemeAttributeInBlockTemplateContent(\n\t\t\t\t\tblock,\n\t\t\t\t\tcurrentThemeStylesheet\n\t\t\t\t)\n\t\t\t),\n\t\t} ) );\n}\n\nexport function useAvailablePatterns( template ) {\n\tconst { blockPatterns, restBlockPatterns, currentThemeStylesheet } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst { getSettings } = unlock( select( editSiteStore ) );\n\t\t\tconst settings = getSettings();\n\n\t\t\treturn {\n\t\t\t\tblockPatterns:\n\t\t\t\t\tsettings.__experimentalAdditionalBlockPatterns ??\n\t\t\t\t\tsettings.__experimentalBlockPatterns,\n\t\t\t\trestBlockPatterns: select( coreStore ).getBlockPatterns(),\n\t\t\t\tcurrentThemeStylesheet:\n\t\t\t\t\tselect( coreStore ).getCurrentTheme().stylesheet,\n\t\t\t};\n\t\t}, [] );\n\n\treturn useMemo( () => {\n\t\tconst mergedPatterns = [\n\t\t\t...( blockPatterns || [] ),\n\t\t\t...( restBlockPatterns || [] ),\n\t\t];\n\t\treturn preparePatterns(\n\t\t\tmergedPatterns,\n\t\t\ttemplate,\n\t\t\tcurrentThemeStylesheet\n\t\t);\n\t}, [ blockPatterns, restBlockPatterns, template, currentThemeStylesheet ] );\n}\n"],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = ReplaceTemplateButton;
7
+ var _element = require("@wordpress/element");
8
+ var _data = require("@wordpress/data");
9
+ var _blockEditor = require("@wordpress/block-editor");
10
+ var _components = require("@wordpress/components");
11
+ var _i18n = require("@wordpress/i18n");
12
+ var _coreData = require("@wordpress/core-data");
13
+ var _compose = require("@wordpress/compose");
14
+ var _blocks = require("@wordpress/blocks");
15
+ var _store = require("../../../store");
16
+ /**
17
+ * WordPress dependencies
18
+ */
19
+
20
+ /**
21
+ * Internal dependencies
22
+ */
23
+
24
+ function ReplaceTemplateButton({
25
+ onClick,
26
+ availableTemplates
27
+ }) {
28
+ const {
29
+ editEntityRecord
30
+ } = (0, _data.useDispatch)(_coreData.store);
31
+ const [showModal, setShowModal] = (0, _element.useState)(false);
32
+ const onClose = () => {
33
+ setShowModal(false);
34
+ };
35
+ const {
36
+ postId,
37
+ postType
38
+ } = (0, _data.useSelect)(select => {
39
+ return {
40
+ postId: select(_store.store).getEditedPostId(),
41
+ postType: select(_store.store).getEditedPostType()
42
+ };
43
+ }, []);
44
+ const onTemplateSelect = async selectedTemplate => {
45
+ onClose(); // Close the template suggestions modal first.
46
+ onClick();
47
+ await editEntityRecord('postType', postType, postId, {
48
+ blocks: selectedTemplate.blocks,
49
+ content: (0, _blocks.serialize)(selectedTemplate.blocks)
50
+ });
51
+ };
52
+ if (!availableTemplates.length || availableTemplates.length < 1) {
53
+ return null;
54
+ }
55
+ return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.MenuItem, {
56
+ info: (0, _i18n.__)('Replace the contents of this template with another.'),
57
+ onClick: () => setShowModal(true)
58
+ }, (0, _i18n.__)('Replace template')), showModal && (0, _element.createElement)(_components.Modal, {
59
+ title: (0, _i18n.__)('Choose a template'),
60
+ onRequestClose: onClose,
61
+ overlayClassName: "edit-site-template-panel__replace-template-modal",
62
+ isFullScreen: true
63
+ }, (0, _element.createElement)("div", {
64
+ className: "edit-site-template-panel__replace-template-modal__content"
65
+ }, (0, _element.createElement)(TemplatesList, {
66
+ availableTemplates: availableTemplates,
67
+ onSelect: onTemplateSelect
68
+ }))));
69
+ }
70
+ function TemplatesList({
71
+ availableTemplates,
72
+ onSelect
73
+ }) {
74
+ const shownTemplates = (0, _compose.useAsyncList)(availableTemplates);
75
+ return (0, _element.createElement)(_blockEditor.__experimentalBlockPatternsList, {
76
+ label: (0, _i18n.__)('Templates'),
77
+ blockPatterns: availableTemplates,
78
+ shownPatterns: shownTemplates,
79
+ onClickPattern: onSelect
80
+ });
81
+ }
82
+ //# sourceMappingURL=replace-template-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_element","require","_data","_blockEditor","_components","_i18n","_coreData","_compose","_blocks","_store","ReplaceTemplateButton","onClick","availableTemplates","editEntityRecord","useDispatch","coreStore","showModal","setShowModal","useState","onClose","postId","postType","useSelect","select","editSiteStore","getEditedPostId","getEditedPostType","onTemplateSelect","selectedTemplate","blocks","content","serialize","length","createElement","Fragment","MenuItem","info","__","Modal","title","onRequestClose","overlayClassName","isFullScreen","className","TemplatesList","onSelect","shownTemplates","useAsyncList","__experimentalBlockPatternsList","label","blockPatterns","shownPatterns","onClickPattern"],"sources":["@wordpress/edit-site/src/components/sidebar-edit-mode/template-panel/replace-template-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';\nimport { MenuItem, Modal } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useAsyncList } from '@wordpress/compose';\nimport { serialize } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../../store';\n\nexport default function ReplaceTemplateButton( {\n\tonClick,\n\tavailableTemplates,\n} ) {\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\tconst [ showModal, setShowModal ] = useState( false );\n\tconst onClose = () => {\n\t\tsetShowModal( false );\n\t};\n\n\tconst { postId, postType } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tpostId: select( editSiteStore ).getEditedPostId(),\n\t\t\tpostType: select( editSiteStore ).getEditedPostType(),\n\t\t};\n\t}, [] );\n\n\tconst onTemplateSelect = async ( selectedTemplate ) => {\n\t\tonClose(); // Close the template suggestions modal first.\n\t\tonClick();\n\t\tawait editEntityRecord( 'postType', postType, postId, {\n\t\t\tblocks: selectedTemplate.blocks,\n\t\t\tcontent: serialize( selectedTemplate.blocks ),\n\t\t} );\n\t};\n\n\tif ( ! availableTemplates.length || availableTemplates.length < 1 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem\n\t\t\t\tinfo={ __(\n\t\t\t\t\t'Replace the contents of this template with another.'\n\t\t\t\t) }\n\t\t\t\tonClick={ () => setShowModal( true ) }\n\t\t\t>\n\t\t\t\t{ __( 'Replace template' ) }\n\t\t\t</MenuItem>\n\n\t\t\t{ showModal && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Choose a template' ) }\n\t\t\t\t\tonRequestClose={ onClose }\n\t\t\t\t\toverlayClassName=\"edit-site-template-panel__replace-template-modal\"\n\t\t\t\t\tisFullScreen\n\t\t\t\t>\n\t\t\t\t\t<div className=\"edit-site-template-panel__replace-template-modal__content\">\n\t\t\t\t\t\t<TemplatesList\n\t\t\t\t\t\t\tavailableTemplates={ availableTemplates }\n\t\t\t\t\t\t\tonSelect={ onTemplateSelect }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction TemplatesList( { availableTemplates, onSelect } ) {\n\tconst shownTemplates = useAsyncList( availableTemplates );\n\n\treturn (\n\t\t<BlockPatternsList\n\t\t\tlabel={ __( 'Templates' ) }\n\t\t\tblockPatterns={ availableTemplates }\n\t\t\tshownPatterns={ shownTemplates }\n\t\t\tonClickPattern={ onSelect }\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
@@ -12,6 +12,8 @@ var _components = require("@wordpress/components");
12
12
  var _icons = require("@wordpress/icons");
13
13
  var _store = require("../../../store");
14
14
  var _isTemplateRevertable = _interopRequireDefault(require("../../../utils/is-template-revertable"));
15
+ var _replaceTemplateButton = _interopRequireDefault(require("./replace-template-button"));
16
+ var _hooks = require("./hooks");
15
17
  /**
16
18
  * WordPress dependencies
17
19
  */
@@ -23,11 +25,12 @@ var _isTemplateRevertable = _interopRequireDefault(require("../../../utils/is-te
23
25
  function Actions({
24
26
  template
25
27
  }) {
28
+ const availablePatterns = (0, _hooks.useAvailablePatterns)(template);
26
29
  const {
27
30
  revertTemplate
28
31
  } = (0, _data.useDispatch)(_store.store);
29
32
  const isRevertable = (0, _isTemplateRevertable.default)(template);
30
- if (!isRevertable) {
33
+ if (!isRevertable && (!availablePatterns.length || availablePatterns.length < 1)) {
31
34
  return null;
32
35
  }
33
36
  return (0, _element.createElement)(_components.DropdownMenu, {
@@ -39,12 +42,16 @@ function Actions({
39
42
  }
40
43
  }, ({
41
44
  onClose
42
- }) => (0, _element.createElement)(_components.MenuGroup, null, (0, _element.createElement)(_components.MenuItem, {
45
+ }) => (0, _element.createElement)(_components.MenuGroup, null, isRevertable && (0, _element.createElement)(_components.MenuItem, {
43
46
  info: (0, _i18n.__)('Use the template as supplied by the theme.'),
44
47
  onClick: () => {
45
48
  revertTemplate(template);
46
49
  onClose();
47
50
  }
48
- }, (0, _i18n.__)('Clear customizations'))));
51
+ }, (0, _i18n.__)('Clear customizations')), (0, _element.createElement)(_replaceTemplateButton.default, {
52
+ availableTemplates: availablePatterns,
53
+ template: template,
54
+ onClick: onClose
55
+ })));
49
56
  }
50
57
  //# sourceMappingURL=template-actions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_i18n","_components","_icons","_store","_isTemplateRevertable","_interopRequireDefault","Actions","template","revertTemplate","useDispatch","editSiteStore","isRevertable","isTemplateRevertable","_element","createElement","DropdownMenu","icon","moreVertical","label","__","className","toggleProps","isSmall","onClose","MenuGroup","MenuItem","info","onClick"],"sources":["@wordpress/edit-site/src/components/sidebar-edit-mode/template-panel/template-actions.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { moreVertical } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../../store';\nimport isTemplateRevertable from '../../../utils/is-template-revertable';\n\nexport default function Actions( { template } ) {\n\tconst { revertTemplate } = useDispatch( editSiteStore );\n\tconst isRevertable = isTemplateRevertable( template );\n\tif ( ! isRevertable ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<DropdownMenu\n\t\t\ticon={ moreVertical }\n\t\t\tlabel={ __( 'Actions' ) }\n\t\t\tclassName=\"edit-site-template-card__actions\"\n\t\t\ttoggleProps={ { isSmall: true } }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tinfo={ __(\n\t\t\t\t\t\t\t'Use the template as supplied by the theme.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\trevertTemplate( template );\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Clear customizations' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAKA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,qBAAA,GAAAC,sBAAA,CAAAN,OAAA;AAZA;AACA;AACA;;AAMA;AACA;AACA;;AAIe,SAASO,OAAOA,CAAE;EAAEC;AAAS,CAAC,EAAG;EAC/C,MAAM;IAAEC;EAAe,CAAC,GAAG,IAAAC,iBAAW,EAAEC,YAAc,CAAC;EACvD,MAAMC,YAAY,GAAG,IAAAC,6BAAoB,EAAEL,QAAS,CAAC;EACrD,IAAK,CAAEI,YAAY,EAAG;IACrB,OAAO,IAAI;EACZ;EACA,OACC,IAAAE,QAAA,CAAAC,aAAA,EAACb,WAAA,CAAAc,YAAY;IACZC,IAAI,EAAGC,mBAAc;IACrBC,KAAK,EAAG,IAAAC,QAAE,EAAE,SAAU,CAAG;IACzBC,SAAS,EAAC,kCAAkC;IAC5CC,WAAW,EAAG;MAAEC,OAAO,EAAE;IAAK;EAAG,GAE/B,CAAE;IAAEC;EAAQ,CAAC,KACd,IAAAV,QAAA,CAAAC,aAAA,EAACb,WAAA,CAAAuB,SAAS,QACT,IAAAX,QAAA,CAAAC,aAAA,EAACb,WAAA,CAAAwB,QAAQ;IACRC,IAAI,EAAG,IAAAP,QAAE,EACR,4CACD,CAAG;IACHQ,OAAO,EAAGA,CAAA,KAAM;MACfnB,cAAc,CAAED,QAAS,CAAC;MAC1BgB,OAAO,CAAC,CAAC;IACV;EAAG,GAED,IAAAJ,QAAE,EAAE,sBAAuB,CACpB,CACA,CAEC,CAAC;AAEjB"}
1
+ {"version":3,"names":["_data","require","_i18n","_components","_icons","_store","_isTemplateRevertable","_interopRequireDefault","_replaceTemplateButton","_hooks","Actions","template","availablePatterns","useAvailablePatterns","revertTemplate","useDispatch","editSiteStore","isRevertable","isTemplateRevertable","length","_element","createElement","DropdownMenu","icon","moreVertical","label","__","className","toggleProps","isSmall","onClose","MenuGroup","MenuItem","info","onClick","default","availableTemplates"],"sources":["@wordpress/edit-site/src/components/sidebar-edit-mode/template-panel/template-actions.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { moreVertical } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../../store';\nimport isTemplateRevertable from '../../../utils/is-template-revertable';\nimport ReplaceTemplateButton from './replace-template-button';\nimport { useAvailablePatterns } from './hooks';\n\nexport default function Actions( { template } ) {\n\tconst availablePatterns = useAvailablePatterns( template );\n\tconst { revertTemplate } = useDispatch( editSiteStore );\n\tconst isRevertable = isTemplateRevertable( template );\n\n\tif (\n\t\t! isRevertable &&\n\t\t( ! availablePatterns.length || availablePatterns.length < 1 )\n\t) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\ticon={ moreVertical }\n\t\t\tlabel={ __( 'Actions' ) }\n\t\t\tclassName=\"edit-site-template-card__actions\"\n\t\t\ttoggleProps={ { isSmall: true } }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t{ isRevertable && (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tinfo={ __(\n\t\t\t\t\t\t\t\t'Use the template as supplied by the theme.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\trevertTemplate( template );\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Clear customizations' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t) }\n\t\t\t\t\t<ReplaceTemplateButton\n\t\t\t\t\t\tavailableTemplates={ availablePatterns }\n\t\t\t\t\t\ttemplate={ template }\n\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t/>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAKA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,qBAAA,GAAAC,sBAAA,CAAAN,OAAA;AACA,IAAAO,sBAAA,GAAAD,sBAAA,CAAAN,OAAA;AACA,IAAAQ,MAAA,GAAAR,OAAA;AAdA;AACA;AACA;;AAMA;AACA;AACA;;AAMe,SAASS,OAAOA,CAAE;EAAEC;AAAS,CAAC,EAAG;EAC/C,MAAMC,iBAAiB,GAAG,IAAAC,2BAAoB,EAAEF,QAAS,CAAC;EAC1D,MAAM;IAAEG;EAAe,CAAC,GAAG,IAAAC,iBAAW,EAAEC,YAAc,CAAC;EACvD,MAAMC,YAAY,GAAG,IAAAC,6BAAoB,EAAEP,QAAS,CAAC;EAErD,IACC,CAAEM,YAAY,KACZ,CAAEL,iBAAiB,CAACO,MAAM,IAAIP,iBAAiB,CAACO,MAAM,GAAG,CAAC,CAAE,EAC7D;IACD,OAAO,IAAI;EACZ;EAEA,OACC,IAAAC,QAAA,CAAAC,aAAA,EAAClB,WAAA,CAAAmB,YAAY;IACZC,IAAI,EAAGC,mBAAc;IACrBC,KAAK,EAAG,IAAAC,QAAE,EAAE,SAAU,CAAG;IACzBC,SAAS,EAAC,kCAAkC;IAC5CC,WAAW,EAAG;MAAEC,OAAO,EAAE;IAAK;EAAG,GAE/B,CAAE;IAAEC;EAAQ,CAAC,KACd,IAAAV,QAAA,CAAAC,aAAA,EAAClB,WAAA,CAAA4B,SAAS,QACPd,YAAY,IACb,IAAAG,QAAA,CAAAC,aAAA,EAAClB,WAAA,CAAA6B,QAAQ;IACRC,IAAI,EAAG,IAAAP,QAAE,EACR,4CACD,CAAG;IACHQ,OAAO,EAAGA,CAAA,KAAM;MACfpB,cAAc,CAAEH,QAAS,CAAC;MAC1BmB,OAAO,CAAC,CAAC;IACV;EAAG,GAED,IAAAJ,QAAE,EAAE,sBAAuB,CACpB,CACV,EACD,IAAAN,QAAA,CAAAC,aAAA,EAACb,sBAAA,CAAA2B,OAAqB;IACrBC,kBAAkB,EAAGxB,iBAAmB;IACxCD,QAAQ,EAAGA,QAAU;IACrBuB,OAAO,EAAGJ;EAAS,CACnB,CACS,CAEC,CAAC;AAEjB"}
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = TemplatePartNavigationMenuListItem;
8
8
  var _element = require("@wordpress/element");
9
- var _coreData = require("@wordpress/core-data");
10
9
  var _i18n = require("@wordpress/i18n");
11
10
  var _sidebarNavigationItem = _interopRequireDefault(require("../sidebar-navigation-item"));
11
+ var _useNavigationMenuTitle = _interopRequireDefault(require("./use-navigation-menu-title"));
12
12
  var _link = require("../routes/link");
13
13
  var _constants = require("../../utils/constants");
14
14
  /**
@@ -22,12 +22,14 @@ var _constants = require("../../utils/constants");
22
22
  function TemplatePartNavigationMenuListItem({
23
23
  id
24
24
  }) {
25
- const [title] = (0, _coreData.useEntityProp)('postType', _constants.NAVIGATION_POST_TYPE, 'title', id);
25
+ const title = (0, _useNavigationMenuTitle.default)(id);
26
26
  const linkInfo = (0, _link.useLink)({
27
27
  postId: id,
28
28
  postType: _constants.NAVIGATION_POST_TYPE
29
29
  });
30
- if (!id) return null;
30
+ if (!id || title === undefined) {
31
+ return null;
32
+ }
31
33
  return (0, _element.createElement)(_sidebarNavigationItem.default, {
32
34
  withChevron: true,
33
35
  ...linkInfo
@@ -1 +1 @@
1
- {"version":3,"names":["_coreData","require","_i18n","_sidebarNavigationItem","_interopRequireDefault","_link","_constants","TemplatePartNavigationMenuListItem","id","title","useEntityProp","NAVIGATION_POST_TYPE","linkInfo","useLink","postId","postType","_element","createElement","default","withChevron","__"],"sources":["@wordpress/edit-site/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEntityProp } from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport SidebarNavigationItem from '../sidebar-navigation-item';\nimport { useLink } from '../routes/link';\nimport { NAVIGATION_POST_TYPE } from '../../utils/constants';\n\nexport default function TemplatePartNavigationMenuListItem( { id } ) {\n\tconst [ title ] = useEntityProp(\n\t\t'postType',\n\t\tNAVIGATION_POST_TYPE,\n\t\t'title',\n\t\tid\n\t);\n\n\tconst linkInfo = useLink( {\n\t\tpostId: id,\n\t\tpostType: NAVIGATION_POST_TYPE,\n\t} );\n\n\tif ( ! id ) return null;\n\n\treturn (\n\t\t<SidebarNavigationItem withChevron { ...linkInfo }>\n\t\t\t{ title || __( '(no title)' ) }\n\t\t</SidebarNavigationItem>\n\t);\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,sBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AAXA;AACA;AACA;;AAIA;AACA;AACA;;AAKe,SAASM,kCAAkCA,CAAE;EAAEC;AAAG,CAAC,EAAG;EACpE,MAAM,CAAEC,KAAK,CAAE,GAAG,IAAAC,uBAAa,EAC9B,UAAU,EACVC,+BAAoB,EACpB,OAAO,EACPH,EACD,CAAC;EAED,MAAMI,QAAQ,GAAG,IAAAC,aAAO,EAAE;IACzBC,MAAM,EAAEN,EAAE;IACVO,QAAQ,EAAEJ;EACX,CAAE,CAAC;EAEH,IAAK,CAAEH,EAAE,EAAG,OAAO,IAAI;EAEvB,OACC,IAAAQ,QAAA,CAAAC,aAAA,EAACd,sBAAA,CAAAe,OAAqB;IAACC,WAAW;IAAA,GAAMP;EAAQ,GAC7CH,KAAK,IAAI,IAAAW,QAAE,EAAE,YAAa,CACN,CAAC;AAE1B"}
1
+ {"version":3,"names":["_i18n","require","_sidebarNavigationItem","_interopRequireDefault","_useNavigationMenuTitle","_link","_constants","TemplatePartNavigationMenuListItem","id","title","useNavigationMenuTitle","linkInfo","useLink","postId","postType","NAVIGATION_POST_TYPE","undefined","_element","createElement","default","withChevron","__"],"sources":["@wordpress/edit-site/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport SidebarNavigationItem from '../sidebar-navigation-item';\nimport useNavigationMenuTitle from './use-navigation-menu-title';\nimport { useLink } from '../routes/link';\nimport { NAVIGATION_POST_TYPE } from '../../utils/constants';\n\nexport default function TemplatePartNavigationMenuListItem( { id } ) {\n\tconst title = useNavigationMenuTitle( id );\n\n\tconst linkInfo = useLink( {\n\t\tpostId: id,\n\t\tpostType: NAVIGATION_POST_TYPE,\n\t} );\n\n\tif ( ! id || title === undefined ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<SidebarNavigationItem withChevron { ...linkInfo }>\n\t\t\t{ title || __( '(no title)' ) }\n\t\t</SidebarNavigationItem>\n\t);\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AAKA,IAAAC,sBAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,uBAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AAXA;AACA;AACA;;AAGA;AACA;AACA;;AAMe,SAASM,kCAAkCA,CAAE;EAAEC;AAAG,CAAC,EAAG;EACpE,MAAMC,KAAK,GAAG,IAAAC,+BAAsB,EAAEF,EAAG,CAAC;EAE1C,MAAMG,QAAQ,GAAG,IAAAC,aAAO,EAAE;IACzBC,MAAM,EAAEL,EAAE;IACVM,QAAQ,EAAEC;EACX,CAAE,CAAC;EAEH,IAAK,CAAEP,EAAE,IAAIC,KAAK,KAAKO,SAAS,EAAG;IAClC,OAAO,IAAI;EACZ;EAEA,OACC,IAAAC,QAAA,CAAAC,aAAA,EAAChB,sBAAA,CAAAiB,OAAqB;IAACC,WAAW;IAAA,GAAMT;EAAQ,GAC7CF,KAAK,IAAI,IAAAY,QAAE,EAAE,YAAa,CACN,CAAC;AAE1B"}
@@ -8,9 +8,8 @@ exports.default = TemplatePartNavigationMenu;
8
8
  var _element = require("@wordpress/element");
9
9
  var _i18n = require("@wordpress/i18n");
10
10
  var _components = require("@wordpress/components");
11
- var _coreData = require("@wordpress/core-data");
12
11
  var _navigationMenuEditor = _interopRequireDefault(require("../sidebar-navigation-screen-navigation-menu/navigation-menu-editor"));
13
- var _constants = require("../../utils/constants");
12
+ var _useNavigationMenuTitle = _interopRequireDefault(require("./use-navigation-menu-title"));
14
13
  /**
15
14
  * WordPress dependencies
16
15
  */
@@ -22,8 +21,10 @@ var _constants = require("../../utils/constants");
22
21
  function TemplatePartNavigationMenu({
23
22
  id
24
23
  }) {
25
- const [title] = (0, _coreData.useEntityProp)('postType', _constants.NAVIGATION_POST_TYPE, 'title', id);
26
- if (!id) return null;
24
+ const title = (0, _useNavigationMenuTitle.default)(id);
25
+ if (!id || title === undefined) {
26
+ return null;
27
+ }
27
28
  return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.__experimentalHeading, {
28
29
  className: "edit-site-sidebar-navigation-screen-template-part-navigation-menu__title",
29
30
  size: "11",
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_components","_coreData","_navigationMenuEditor","_interopRequireDefault","_constants","TemplatePartNavigationMenu","id","title","useEntityProp","NAVIGATION_POST_TYPE","_element","createElement","Fragment","__experimentalHeading","className","size","upperCase","weight","__","default","navigationMenuId"],"sources":["@wordpress/edit-site/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { __experimentalHeading as Heading } from '@wordpress/components';\nimport { useEntityProp } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport NavigationMenuEditor from '../sidebar-navigation-screen-navigation-menu/navigation-menu-editor';\nimport { NAVIGATION_POST_TYPE } from '../../utils/constants';\n\nexport default function TemplatePartNavigationMenu( { id } ) {\n\tconst [ title ] = useEntityProp(\n\t\t'postType',\n\t\tNAVIGATION_POST_TYPE,\n\t\t'title',\n\t\tid\n\t);\n\n\tif ( ! id ) return null;\n\n\treturn (\n\t\t<>\n\t\t\t<Heading\n\t\t\t\tclassName=\"edit-site-sidebar-navigation-screen-template-part-navigation-menu__title\"\n\t\t\t\tsize=\"11\"\n\t\t\t\tupperCase={ true }\n\t\t\t\tweight={ 500 }\n\t\t\t>\n\t\t\t\t{ title || __( 'Navigation' ) }\n\t\t\t</Heading>\n\t\t\t<NavigationMenuEditor navigationMenuId={ id } />\n\t\t</>\n\t);\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAKA,IAAAG,qBAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AAXA;AACA;AACA;;AAKA;AACA;AACA;;AAIe,SAASM,0BAA0BA,CAAE;EAAEC;AAAG,CAAC,EAAG;EAC5D,MAAM,CAAEC,KAAK,CAAE,GAAG,IAAAC,uBAAa,EAC9B,UAAU,EACVC,+BAAoB,EACpB,OAAO,EACPH,EACD,CAAC;EAED,IAAK,CAAEA,EAAE,EAAG,OAAO,IAAI;EAEvB,OACC,IAAAI,QAAA,CAAAC,aAAA,EAAAD,QAAA,CAAAE,QAAA,QACC,IAAAF,QAAA,CAAAC,aAAA,EAACX,WAAA,CAAAa,qBAAO;IACPC,SAAS,EAAC,0EAA0E;IACpFC,IAAI,EAAC,IAAI;IACTC,SAAS,EAAG,IAAM;IAClBC,MAAM,EAAG;EAAK,GAEZV,KAAK,IAAI,IAAAW,QAAE,EAAE,YAAa,CACpB,CAAC,EACV,IAAAR,QAAA,CAAAC,aAAA,EAACT,qBAAA,CAAAiB,OAAoB;IAACC,gBAAgB,EAAGd;EAAI,CAAE,CAC9C,CAAC;AAEL"}
1
+ {"version":3,"names":["_i18n","require","_components","_navigationMenuEditor","_interopRequireDefault","_useNavigationMenuTitle","TemplatePartNavigationMenu","id","title","useNavigationMenuTitle","undefined","_element","createElement","Fragment","__experimentalHeading","className","size","upperCase","weight","__","default","navigationMenuId"],"sources":["@wordpress/edit-site/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { __experimentalHeading as Heading } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport NavigationMenuEditor from '../sidebar-navigation-screen-navigation-menu/navigation-menu-editor';\nimport useNavigationMenuTitle from './use-navigation-menu-title';\n\nexport default function TemplatePartNavigationMenu( { id } ) {\n\tconst title = useNavigationMenuTitle( id );\n\n\tif ( ! id || title === undefined ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Heading\n\t\t\t\tclassName=\"edit-site-sidebar-navigation-screen-template-part-navigation-menu__title\"\n\t\t\t\tsize=\"11\"\n\t\t\t\tupperCase={ true }\n\t\t\t\tweight={ 500 }\n\t\t\t>\n\t\t\t\t{ title || __( 'Navigation' ) }\n\t\t\t</Heading>\n\t\t\t<NavigationMenuEditor navigationMenuId={ id } />\n\t\t</>\n\t);\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAKA,IAAAE,qBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,uBAAA,GAAAD,sBAAA,CAAAH,OAAA;AAVA;AACA;AACA;;AAIA;AACA;AACA;;AAIe,SAASK,0BAA0BA,CAAE;EAAEC;AAAG,CAAC,EAAG;EAC5D,MAAMC,KAAK,GAAG,IAAAC,+BAAsB,EAAEF,EAAG,CAAC;EAE1C,IAAK,CAAEA,EAAE,IAAIC,KAAK,KAAKE,SAAS,EAAG;IAClC,OAAO,IAAI;EACZ;EAEA,OACC,IAAAC,QAAA,CAAAC,aAAA,EAAAD,QAAA,CAAAE,QAAA,QACC,IAAAF,QAAA,CAAAC,aAAA,EAACV,WAAA,CAAAY,qBAAO;IACPC,SAAS,EAAC,0EAA0E;IACpFC,IAAI,EAAC,IAAI;IACTC,SAAS,EAAG,IAAM;IAClBC,MAAM,EAAG;EAAK,GAEZV,KAAK,IAAI,IAAAW,QAAE,EAAE,YAAa,CACpB,CAAC,EACV,IAAAR,QAAA,CAAAC,aAAA,EAACT,qBAAA,CAAAiB,OAAoB;IAACC,gBAAgB,EAAGd;EAAI,CAAE,CAC9C,CAAC;AAEL"}
@@ -18,6 +18,13 @@ var _constants = require("../../utils/constants");
18
18
  * Internal dependencies
19
19
  */
20
20
 
21
+ function getBlocksFromRecord(record) {
22
+ if (record?.blocks) {
23
+ return record?.blocks;
24
+ }
25
+ return record?.content && typeof record.content !== 'function' ? (0, _blocks2.parse)(record.content) : [];
26
+ }
27
+
21
28
  /**
22
29
  * Retrieves a list of specific blocks from a given tree of blocks.
23
30
  *
@@ -61,7 +68,7 @@ function useNavigationMenuContent(postType, postId) {
61
68
  if (postType !== _constants.TEMPLATE_PART_POST_TYPE) {
62
69
  return;
63
70
  }
64
- const blocks = record?.content && typeof record.content !== 'function' ? (0, _blocks2.parse)(record.content) : [];
71
+ const blocks = getBlocksFromRecord(record);
65
72
  const navigationBlocks = getBlocksOfTypeFromBlocks('core/navigation', blocks);
66
73
  if (!navigationBlocks.length) {
67
74
  return;
@@ -1 +1 @@
1
- {"version":3,"names":["_blocks2","require","_templatePartNavigationMenus","_interopRequireDefault","_useEditedEntityRecord","_constants","getBlocksOfTypeFromBlocks","targetBlockType","blocks","length","findInBlocks","_blocks","navigationBlocks","block","name","push","innerBlocks","innerNavigationBlocks","useNavigationMenuContent","postType","postId","record","useEditedEntityRecord","TEMPLATE_PART_POST_TYPE","content","parse","navigationMenuIds","map","attributes","ref","uniqueNavigationMenuIds","Set","filter","menuId","_element","createElement","default","menus"],"sources":["@wordpress/edit-site/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { parse } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport TemplatePartNavigationMenus from './template-part-navigation-menus';\nimport useEditedEntityRecord from '../use-edited-entity-record';\nimport { TEMPLATE_PART_POST_TYPE } from '../../utils/constants';\n\n/**\n * Retrieves a list of specific blocks from a given tree of blocks.\n *\n * @param {string} targetBlockType The name of the block type to find.\n * @param {Array} blocks A list of blocks from a template part entity.\n *\n * @return {Array} A list of any navigation blocks found in the blocks.\n */\nfunction getBlocksOfTypeFromBlocks( targetBlockType, blocks ) {\n\tif ( ! targetBlockType || ! blocks?.length ) {\n\t\treturn [];\n\t}\n\n\tconst findInBlocks = ( _blocks ) => {\n\t\tif ( ! _blocks ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst navigationBlocks = [];\n\n\t\tfor ( const block of _blocks ) {\n\t\t\tif ( block.name === targetBlockType ) {\n\t\t\t\tnavigationBlocks.push( block );\n\t\t\t}\n\n\t\t\tif ( block?.innerBlocks ) {\n\t\t\t\tconst innerNavigationBlocks = findInBlocks( block.innerBlocks );\n\n\t\t\t\tif ( innerNavigationBlocks.length ) {\n\t\t\t\t\tnavigationBlocks.push( ...innerNavigationBlocks );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn navigationBlocks;\n\t};\n\n\treturn findInBlocks( blocks );\n}\n\nexport default function useNavigationMenuContent( postType, postId ) {\n\tconst { record } = useEditedEntityRecord( postType, postId );\n\n\t// Only managing navigation menus in template parts is supported\n\t// to match previous behaviour. This could potentially be expanded\n\t// to patterns as well.\n\tif ( postType !== TEMPLATE_PART_POST_TYPE ) {\n\t\treturn;\n\t}\n\n\tconst blocks =\n\t\trecord?.content && typeof record.content !== 'function'\n\t\t\t? parse( record.content )\n\t\t\t: [];\n\n\tconst navigationBlocks = getBlocksOfTypeFromBlocks(\n\t\t'core/navigation',\n\t\tblocks\n\t);\n\n\tif ( ! navigationBlocks.length ) {\n\t\treturn;\n\t}\n\n\tconst navigationMenuIds = navigationBlocks?.map(\n\t\t( block ) => block.attributes.ref\n\t);\n\n\t// Dedupe the Navigation blocks, as you can have multiple navigation blocks in the template.\n\t// Also, filter out undefined values, as blocks don't have an id when initially added.\n\tconst uniqueNavigationMenuIds = [ ...new Set( navigationMenuIds ) ].filter(\n\t\t( menuId ) => menuId\n\t);\n\n\tif ( ! uniqueNavigationMenuIds?.length ) {\n\t\treturn;\n\t}\n\n\treturn <TemplatePartNavigationMenus menus={ uniqueNavigationMenuIds } />;\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAKA,IAAAC,4BAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,sBAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAVA;AACA;AACA;;AAGA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASK,yBAAyBA,CAAEC,eAAe,EAAEC,MAAM,EAAG;EAC7D,IAAK,CAAED,eAAe,IAAI,CAAEC,MAAM,EAAEC,MAAM,EAAG;IAC5C,OAAO,EAAE;EACV;EAEA,MAAMC,YAAY,GAAKC,OAAO,IAAM;IACnC,IAAK,CAAEA,OAAO,EAAG;MAChB,OAAO,EAAE;IACV;IAEA,MAAMC,gBAAgB,GAAG,EAAE;IAE3B,KAAM,MAAMC,KAAK,IAAIF,OAAO,EAAG;MAC9B,IAAKE,KAAK,CAACC,IAAI,KAAKP,eAAe,EAAG;QACrCK,gBAAgB,CAACG,IAAI,CAAEF,KAAM,CAAC;MAC/B;MAEA,IAAKA,KAAK,EAAEG,WAAW,EAAG;QACzB,MAAMC,qBAAqB,GAAGP,YAAY,CAAEG,KAAK,CAACG,WAAY,CAAC;QAE/D,IAAKC,qBAAqB,CAACR,MAAM,EAAG;UACnCG,gBAAgB,CAACG,IAAI,CAAE,GAAGE,qBAAsB,CAAC;QAClD;MACD;IACD;IAEA,OAAOL,gBAAgB;EACxB,CAAC;EAED,OAAOF,YAAY,CAAEF,MAAO,CAAC;AAC9B;AAEe,SAASU,wBAAwBA,CAAEC,QAAQ,EAAEC,MAAM,EAAG;EACpE,MAAM;IAAEC;EAAO,CAAC,GAAG,IAAAC,8BAAqB,EAAEH,QAAQ,EAAEC,MAAO,CAAC;;EAE5D;EACA;EACA;EACA,IAAKD,QAAQ,KAAKI,kCAAuB,EAAG;IAC3C;EACD;EAEA,MAAMf,MAAM,GACXa,MAAM,EAAEG,OAAO,IAAI,OAAOH,MAAM,CAACG,OAAO,KAAK,UAAU,GACpD,IAAAC,cAAK,EAAEJ,MAAM,CAACG,OAAQ,CAAC,GACvB,EAAE;EAEN,MAAMZ,gBAAgB,GAAGN,yBAAyB,CACjD,iBAAiB,EACjBE,MACD,CAAC;EAED,IAAK,CAAEI,gBAAgB,CAACH,MAAM,EAAG;IAChC;EACD;EAEA,MAAMiB,iBAAiB,GAAGd,gBAAgB,EAAEe,GAAG,CAC5Cd,KAAK,IAAMA,KAAK,CAACe,UAAU,CAACC,GAC/B,CAAC;;EAED;EACA;EACA,MAAMC,uBAAuB,GAAG,CAAE,GAAG,IAAIC,GAAG,CAAEL,iBAAkB,CAAC,CAAE,CAACM,MAAM,CACvEC,MAAM,IAAMA,MACf,CAAC;EAED,IAAK,CAAEH,uBAAuB,EAAErB,MAAM,EAAG;IACxC;EACD;EAEA,OAAO,IAAAyB,QAAA,CAAAC,aAAA,EAACjC,4BAAA,CAAAkC,OAA2B;IAACC,KAAK,EAAGP;EAAyB,CAAE,CAAC;AACzE"}
1
+ {"version":3,"names":["_blocks2","require","_templatePartNavigationMenus","_interopRequireDefault","_useEditedEntityRecord","_constants","getBlocksFromRecord","record","blocks","content","parse","getBlocksOfTypeFromBlocks","targetBlockType","length","findInBlocks","_blocks","navigationBlocks","block","name","push","innerBlocks","innerNavigationBlocks","useNavigationMenuContent","postType","postId","useEditedEntityRecord","TEMPLATE_PART_POST_TYPE","navigationMenuIds","map","attributes","ref","uniqueNavigationMenuIds","Set","filter","menuId","_element","createElement","default","menus"],"sources":["@wordpress/edit-site/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { parse } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport TemplatePartNavigationMenus from './template-part-navigation-menus';\nimport useEditedEntityRecord from '../use-edited-entity-record';\nimport { TEMPLATE_PART_POST_TYPE } from '../../utils/constants';\n\nfunction getBlocksFromRecord( record ) {\n\tif ( record?.blocks ) {\n\t\treturn record?.blocks;\n\t}\n\n\treturn record?.content && typeof record.content !== 'function'\n\t\t? parse( record.content )\n\t\t: [];\n}\n\n/**\n * Retrieves a list of specific blocks from a given tree of blocks.\n *\n * @param {string} targetBlockType The name of the block type to find.\n * @param {Array} blocks A list of blocks from a template part entity.\n *\n * @return {Array} A list of any navigation blocks found in the blocks.\n */\nfunction getBlocksOfTypeFromBlocks( targetBlockType, blocks ) {\n\tif ( ! targetBlockType || ! blocks?.length ) {\n\t\treturn [];\n\t}\n\n\tconst findInBlocks = ( _blocks ) => {\n\t\tif ( ! _blocks ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst navigationBlocks = [];\n\n\t\tfor ( const block of _blocks ) {\n\t\t\tif ( block.name === targetBlockType ) {\n\t\t\t\tnavigationBlocks.push( block );\n\t\t\t}\n\n\t\t\tif ( block?.innerBlocks ) {\n\t\t\t\tconst innerNavigationBlocks = findInBlocks( block.innerBlocks );\n\n\t\t\t\tif ( innerNavigationBlocks.length ) {\n\t\t\t\t\tnavigationBlocks.push( ...innerNavigationBlocks );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn navigationBlocks;\n\t};\n\n\treturn findInBlocks( blocks );\n}\n\nexport default function useNavigationMenuContent( postType, postId ) {\n\tconst { record } = useEditedEntityRecord( postType, postId );\n\n\t// Only managing navigation menus in template parts is supported\n\t// to match previous behaviour. This could potentially be expanded\n\t// to patterns as well.\n\tif ( postType !== TEMPLATE_PART_POST_TYPE ) {\n\t\treturn;\n\t}\n\n\tconst blocks = getBlocksFromRecord( record );\n\tconst navigationBlocks = getBlocksOfTypeFromBlocks(\n\t\t'core/navigation',\n\t\tblocks\n\t);\n\n\tif ( ! navigationBlocks.length ) {\n\t\treturn;\n\t}\n\n\tconst navigationMenuIds = navigationBlocks?.map(\n\t\t( block ) => block.attributes.ref\n\t);\n\n\t// Dedupe the Navigation blocks, as you can have multiple navigation blocks in the template.\n\t// Also, filter out undefined values, as blocks don't have an id when initially added.\n\tconst uniqueNavigationMenuIds = [ ...new Set( navigationMenuIds ) ].filter(\n\t\t( menuId ) => menuId\n\t);\n\n\tif ( ! uniqueNavigationMenuIds?.length ) {\n\t\treturn;\n\t}\n\n\treturn <TemplatePartNavigationMenus menus={ uniqueNavigationMenuIds } />;\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAKA,IAAAC,4BAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,sBAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAVA;AACA;AACA;;AAGA;AACA;AACA;;AAKA,SAASK,mBAAmBA,CAAEC,MAAM,EAAG;EACtC,IAAKA,MAAM,EAAEC,MAAM,EAAG;IACrB,OAAOD,MAAM,EAAEC,MAAM;EACtB;EAEA,OAAOD,MAAM,EAAEE,OAAO,IAAI,OAAOF,MAAM,CAACE,OAAO,KAAK,UAAU,GAC3D,IAAAC,cAAK,EAAEH,MAAM,CAACE,OAAQ,CAAC,GACvB,EAAE;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,yBAAyBA,CAAEC,eAAe,EAAEJ,MAAM,EAAG;EAC7D,IAAK,CAAEI,eAAe,IAAI,CAAEJ,MAAM,EAAEK,MAAM,EAAG;IAC5C,OAAO,EAAE;EACV;EAEA,MAAMC,YAAY,GAAKC,OAAO,IAAM;IACnC,IAAK,CAAEA,OAAO,EAAG;MAChB,OAAO,EAAE;IACV;IAEA,MAAMC,gBAAgB,GAAG,EAAE;IAE3B,KAAM,MAAMC,KAAK,IAAIF,OAAO,EAAG;MAC9B,IAAKE,KAAK,CAACC,IAAI,KAAKN,eAAe,EAAG;QACrCI,gBAAgB,CAACG,IAAI,CAAEF,KAAM,CAAC;MAC/B;MAEA,IAAKA,KAAK,EAAEG,WAAW,EAAG;QACzB,MAAMC,qBAAqB,GAAGP,YAAY,CAAEG,KAAK,CAACG,WAAY,CAAC;QAE/D,IAAKC,qBAAqB,CAACR,MAAM,EAAG;UACnCG,gBAAgB,CAACG,IAAI,CAAE,GAAGE,qBAAsB,CAAC;QAClD;MACD;IACD;IAEA,OAAOL,gBAAgB;EACxB,CAAC;EAED,OAAOF,YAAY,CAAEN,MAAO,CAAC;AAC9B;AAEe,SAASc,wBAAwBA,CAAEC,QAAQ,EAAEC,MAAM,EAAG;EACpE,MAAM;IAAEjB;EAAO,CAAC,GAAG,IAAAkB,8BAAqB,EAAEF,QAAQ,EAAEC,MAAO,CAAC;;EAE5D;EACA;EACA;EACA,IAAKD,QAAQ,KAAKG,kCAAuB,EAAG;IAC3C;EACD;EAEA,MAAMlB,MAAM,GAAGF,mBAAmB,CAAEC,MAAO,CAAC;EAC5C,MAAMS,gBAAgB,GAAGL,yBAAyB,CACjD,iBAAiB,EACjBH,MACD,CAAC;EAED,IAAK,CAAEQ,gBAAgB,CAACH,MAAM,EAAG;IAChC;EACD;EAEA,MAAMc,iBAAiB,GAAGX,gBAAgB,EAAEY,GAAG,CAC5CX,KAAK,IAAMA,KAAK,CAACY,UAAU,CAACC,GAC/B,CAAC;;EAED;EACA;EACA,MAAMC,uBAAuB,GAAG,CAAE,GAAG,IAAIC,GAAG,CAAEL,iBAAkB,CAAC,CAAE,CAACM,MAAM,CACvEC,MAAM,IAAMA,MACf,CAAC;EAED,IAAK,CAAEH,uBAAuB,EAAElB,MAAM,EAAG;IACxC;EACD;EAEA,OAAO,IAAAsB,QAAA,CAAAC,aAAA,EAAClC,4BAAA,CAAAmC,OAA2B;IAACC,KAAK,EAAGP;EAAyB,CAAE,CAAC;AACzE"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useNavigationMenuTitle;
7
+ var _data = require("@wordpress/data");
8
+ var _coreData = require("@wordpress/core-data");
9
+ var _constants = require("../../utils/constants");
10
+ /**
11
+ * WordPress dependencies
12
+ */
13
+
14
+ /**
15
+ * Internal dependencies
16
+ */
17
+
18
+ function useNavigationMenuTitle(id) {
19
+ return (0, _data.useSelect)(select => {
20
+ if (!id) {
21
+ return undefined;
22
+ }
23
+ const editedRecord = select(_coreData.store).getEditedEntityRecord('postType', _constants.NAVIGATION_POST_TYPE, id);
24
+
25
+ // Do not display a 'trashed' navigation menu.
26
+ return editedRecord.status === 'trash' ? undefined : editedRecord.title;
27
+ }, [id]);
28
+ }
29
+ //# sourceMappingURL=use-navigation-menu-title.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_data","require","_coreData","_constants","useNavigationMenuTitle","id","useSelect","select","undefined","editedRecord","coreStore","getEditedEntityRecord","NAVIGATION_POST_TYPE","status","title"],"sources":["@wordpress/edit-site/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { NAVIGATION_POST_TYPE } from '../../utils/constants';\n\nexport default function useNavigationMenuTitle( id ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! id ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst editedRecord = select( coreStore ).getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tNAVIGATION_POST_TYPE,\n\t\t\t\tid\n\t\t\t);\n\n\t\t\t// Do not display a 'trashed' navigation menu.\n\t\t\treturn editedRecord.status === 'trash'\n\t\t\t\t? undefined\n\t\t\t\t: editedRecord.title;\n\t\t},\n\t\t[ id ]\n\t);\n}\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAKA,IAAAE,UAAA,GAAAF,OAAA;AATA;AACA;AACA;;AAIA;AACA;AACA;;AAGe,SAASG,sBAAsBA,CAAEC,EAAE,EAAG;EACpD,OAAO,IAAAC,eAAS,EACbC,MAAM,IAAM;IACb,IAAK,CAAEF,EAAE,EAAG;MACX,OAAOG,SAAS;IACjB;IAEA,MAAMC,YAAY,GAAGF,MAAM,CAAEG,eAAU,CAAC,CAACC,qBAAqB,CAC7D,UAAU,EACVC,+BAAoB,EACpBP,EACD,CAAC;;IAED;IACA,OAAOI,YAAY,CAACI,MAAM,KAAK,OAAO,GACnCL,SAAS,GACTC,YAAY,CAACK,KAAK;EACtB,CAAC,EACD,CAAET,EAAE,CACL,CAAC;AACF"}
@@ -291,14 +291,13 @@ function isSaveViewOpened(state) {
291
291
  * @param {Object} state Global application state.
292
292
  * @return {Array} Template parts and their blocks in an array.
293
293
  */
294
- const getCurrentTemplateTemplateParts = (0, _data.createRegistrySelector)(select => state => {
295
- const templateType = getEditedPostType(state);
296
- const templateId = getEditedPostId(state);
297
- const template = select(_coreData.store).getEditedEntityRecord('postType', templateType, templateId);
294
+ const getCurrentTemplateTemplateParts = (0, _data.createRegistrySelector)(select => () => {
298
295
  const templateParts = select(_coreData.store).getEntityRecords('postType', _constants.TEMPLATE_PART_POST_TYPE, {
299
296
  per_page: -1
300
297
  });
301
- return (0, _utils.getFilteredTemplatePartBlocks)(template.blocks, templateParts);
298
+ const clientIds = select(_blockEditor.store).__experimentalGetGlobalBlocksByName('core/template-part');
299
+ const blocks = select(_blockEditor.store).getBlocksByClientId(clientIds);
300
+ return (0, _utils.getFilteredTemplatePartBlocks)(blocks, templateParts);
302
301
  });
303
302
 
304
303
  /**