@wordpress/block-library 9.31.1-next.233ccab9b.0 → 9.32.0

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 (177) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/accordion/edit.js +62 -12
  3. package/build/accordion/edit.js.map +1 -1
  4. package/build/accordion/index.js +15 -7
  5. package/build/accordion/index.js.map +1 -1
  6. package/build/accordion/view.js +15 -15
  7. package/build/accordion/view.js.map +1 -1
  8. package/build/accordion-heading/edit.js +68 -0
  9. package/build/accordion-heading/edit.js.map +1 -0
  10. package/build/accordion-heading/icon.js.map +1 -0
  11. package/build/{accordion-header → accordion-heading}/index.js +9 -12
  12. package/build/accordion-heading/index.js.map +1 -0
  13. package/build/{accordion-content → accordion-heading}/init.js.map +1 -1
  14. package/build/{accordion-header → accordion-heading}/save.js +6 -8
  15. package/build/accordion-heading/save.js.map +1 -0
  16. package/build/{accordion-content → accordion-item}/edit.js +8 -2
  17. package/build/accordion-item/edit.js.map +1 -0
  18. package/build/accordion-item/icon.js.map +1 -0
  19. package/build/{accordion-content → accordion-item}/index.js +5 -5
  20. package/build/accordion-item/index.js.map +1 -0
  21. package/build/accordion-item/init.js.map +1 -0
  22. package/build/accordion-item/save.js.map +1 -0
  23. package/build/accordion-panel/index.js +3 -2
  24. package/build/accordion-panel/index.js.map +1 -1
  25. package/build/block/index.js +1 -0
  26. package/build/block/index.js.map +1 -1
  27. package/build/index.js +24 -4
  28. package/build/index.js.map +1 -1
  29. package/build/navigation-link/edit.js +3 -140
  30. package/build/navigation-link/edit.js.map +1 -1
  31. package/build/navigation-link/shared/controls.js +171 -0
  32. package/build/navigation-link/shared/controls.js.map +1 -0
  33. package/build/navigation-link/shared/index.js +13 -0
  34. package/build/navigation-link/shared/index.js.map +1 -0
  35. package/build/navigation-submenu/edit.js +5 -110
  36. package/build/navigation-submenu/edit.js.map +1 -1
  37. package/build/pattern/index.js +1 -0
  38. package/build/pattern/index.js.map +1 -1
  39. package/build/post-time-to-read/edit.js +16 -61
  40. package/build/post-time-to-read/edit.js.map +1 -1
  41. package/build/post-time-to-read/index.js +5 -7
  42. package/build/post-time-to-read/index.js.map +1 -1
  43. package/build/post-time-to-read/variations.js +41 -0
  44. package/build/post-time-to-read/variations.js.map +1 -0
  45. package/build/query-title/edit.js +1 -1
  46. package/build/query-title/edit.js.map +1 -1
  47. package/build/template-part/index.js +1 -0
  48. package/build/template-part/index.js.map +1 -1
  49. package/build/utils/get-transformed-metadata.js +7 -0
  50. package/build/utils/get-transformed-metadata.js.map +1 -1
  51. package/build-module/accordion/edit.js +66 -16
  52. package/build-module/accordion/edit.js.map +1 -1
  53. package/build-module/accordion/index.js +15 -7
  54. package/build-module/accordion/index.js.map +1 -1
  55. package/build-module/accordion/view.js +15 -15
  56. package/build-module/accordion/view.js.map +1 -1
  57. package/build-module/accordion-heading/edit.js +61 -0
  58. package/build-module/accordion-heading/edit.js.map +1 -0
  59. package/build-module/accordion-heading/icon.js.map +1 -0
  60. package/build-module/{accordion-header → accordion-heading}/index.js +9 -12
  61. package/build-module/accordion-heading/index.js.map +1 -0
  62. package/build-module/{accordion-content → accordion-heading}/init.js.map +1 -1
  63. package/build-module/{accordion-header → accordion-heading}/save.js +6 -8
  64. package/build-module/accordion-heading/save.js.map +1 -0
  65. package/build-module/{accordion-content → accordion-item}/edit.js +8 -2
  66. package/build-module/accordion-item/edit.js.map +1 -0
  67. package/build-module/accordion-item/icon.js.map +1 -0
  68. package/build-module/{accordion-content → accordion-item}/index.js +5 -5
  69. package/build-module/accordion-item/index.js.map +1 -0
  70. package/build-module/accordion-item/init.js.map +1 -0
  71. package/build-module/accordion-item/save.js.map +1 -0
  72. package/build-module/accordion-panel/index.js +3 -2
  73. package/build-module/accordion-panel/index.js.map +1 -1
  74. package/build-module/block/index.js +1 -0
  75. package/build-module/block/index.js.map +1 -1
  76. package/build-module/index.js +25 -5
  77. package/build-module/index.js.map +1 -1
  78. package/build-module/navigation-link/edit.js +4 -141
  79. package/build-module/navigation-link/edit.js.map +1 -1
  80. package/build-module/navigation-link/shared/controls.js +165 -0
  81. package/build-module/navigation-link/shared/controls.js.map +1 -0
  82. package/build-module/navigation-link/shared/index.js +9 -0
  83. package/build-module/navigation-link/shared/index.js.map +1 -0
  84. package/build-module/navigation-submenu/edit.js +6 -111
  85. package/build-module/navigation-submenu/edit.js.map +1 -1
  86. package/build-module/pattern/index.js +1 -0
  87. package/build-module/pattern/index.js.map +1 -1
  88. package/build-module/post-time-to-read/edit.js +17 -62
  89. package/build-module/post-time-to-read/edit.js.map +1 -1
  90. package/build-module/post-time-to-read/index.js +5 -7
  91. package/build-module/post-time-to-read/index.js.map +1 -1
  92. package/build-module/post-time-to-read/variations.js +33 -0
  93. package/build-module/post-time-to-read/variations.js.map +1 -0
  94. package/build-module/query-title/edit.js +1 -1
  95. package/build-module/query-title/edit.js.map +1 -1
  96. package/build-module/template-part/index.js +1 -0
  97. package/build-module/template-part/index.js.map +1 -1
  98. package/build-module/utils/get-transformed-metadata.js +7 -0
  99. package/build-module/utils/get-transformed-metadata.js.map +1 -1
  100. package/build-style/{accordion-header → accordion-heading}/style-rtl.css +8 -7
  101. package/build-style/{accordion-header → accordion-heading}/style.css +8 -7
  102. package/build-style/{accordion-content → accordion-item}/style-rtl.css +5 -5
  103. package/build-style/{accordion-content → accordion-item}/style.css +5 -5
  104. package/build-style/style-rtl.css +13 -12
  105. package/build-style/style.css +13 -12
  106. package/package.json +35 -35
  107. package/src/accordion/block.json +11 -3
  108. package/src/accordion/edit.js +70 -13
  109. package/src/accordion/index.js +4 -4
  110. package/src/accordion/index.php +1 -1
  111. package/src/accordion/view.js +15 -15
  112. package/src/{accordion-header → accordion-heading}/block.json +10 -12
  113. package/src/accordion-heading/edit.js +70 -0
  114. package/src/{accordion-header → accordion-heading}/save.js +6 -8
  115. package/src/{accordion-header → accordion-heading}/style.scss +11 -7
  116. package/src/{accordion-content → accordion-item}/block.json +5 -5
  117. package/src/{accordion-content → accordion-item}/edit.js +12 -2
  118. package/src/{accordion-content → accordion-item}/index.php +11 -11
  119. package/src/{accordion-content → accordion-item}/style.scss +3 -3
  120. package/src/accordion-panel/block.json +3 -2
  121. package/src/block/block.json +1 -0
  122. package/src/index.js +23 -4
  123. package/src/navigation-link/edit.js +3 -142
  124. package/src/navigation-link/shared/README.md +47 -0
  125. package/src/navigation-link/shared/controls.js +167 -0
  126. package/src/navigation-link/shared/index.js +8 -0
  127. package/src/navigation-link/shared/test/controls.js +210 -0
  128. package/src/navigation-submenu/edit.js +7 -125
  129. package/src/pattern/block.json +1 -0
  130. package/src/post-time-to-read/block.json +3 -7
  131. package/src/post-time-to-read/edit.js +36 -94
  132. package/src/post-time-to-read/index.js +2 -0
  133. package/src/post-time-to-read/index.php +12 -7
  134. package/src/post-time-to-read/variations.js +39 -0
  135. package/src/query-title/edit.js +2 -1
  136. package/src/query-title/index.php +3 -1
  137. package/src/style.scss +2 -2
  138. package/src/template-part/block.json +1 -0
  139. package/src/utils/get-transformed-metadata.js +8 -0
  140. package/build/accordion-content/edit.js.map +0 -1
  141. package/build/accordion-content/icon.js.map +0 -1
  142. package/build/accordion-content/index.js.map +0 -1
  143. package/build/accordion-content/save.js.map +0 -1
  144. package/build/accordion-header/edit.js +0 -84
  145. package/build/accordion-header/edit.js.map +0 -1
  146. package/build/accordion-header/icon.js.map +0 -1
  147. package/build/accordion-header/index.js.map +0 -1
  148. package/build/accordion-header/init.js.map +0 -1
  149. package/build/accordion-header/save.js.map +0 -1
  150. package/build-module/accordion-content/edit.js.map +0 -1
  151. package/build-module/accordion-content/icon.js.map +0 -1
  152. package/build-module/accordion-content/index.js.map +0 -1
  153. package/build-module/accordion-content/save.js.map +0 -1
  154. package/build-module/accordion-header/edit.js +0 -77
  155. package/build-module/accordion-header/edit.js.map +0 -1
  156. package/build-module/accordion-header/icon.js.map +0 -1
  157. package/build-module/accordion-header/index.js.map +0 -1
  158. package/build-module/accordion-header/init.js.map +0 -1
  159. package/build-module/accordion-header/save.js.map +0 -1
  160. package/src/accordion-header/edit.js +0 -87
  161. /package/build/{accordion-header → accordion-heading}/icon.js +0 -0
  162. /package/build/{accordion-content → accordion-heading}/init.js +0 -0
  163. /package/build/{accordion-content → accordion-item}/icon.js +0 -0
  164. /package/build/{accordion-header → accordion-item}/init.js +0 -0
  165. /package/build/{accordion-content → accordion-item}/save.js +0 -0
  166. /package/build-module/{accordion-header → accordion-heading}/icon.js +0 -0
  167. /package/build-module/{accordion-content → accordion-heading}/init.js +0 -0
  168. /package/build-module/{accordion-content → accordion-item}/icon.js +0 -0
  169. /package/build-module/{accordion-header → accordion-item}/init.js +0 -0
  170. /package/build-module/{accordion-content → accordion-item}/save.js +0 -0
  171. /package/src/{accordion-header → accordion-heading}/icon.js +0 -0
  172. /package/src/{accordion-content → accordion-heading}/index.js +0 -0
  173. /package/src/{accordion-content → accordion-heading}/init.js +0 -0
  174. /package/src/{accordion-content → accordion-item}/icon.js +0 -0
  175. /package/src/{accordion-header → accordion-item}/index.js +0 -0
  176. /package/src/{accordion-header → accordion-item}/init.js +0 -0
  177. /package/src/{accordion-content → accordion-item}/save.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","useSelect","useDispatch","CheckboxControl","TextControl","TextareaControl","ToolbarButton","ToolbarGroup","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","displayShortcut","isKeyboardEvent","__","BlockControls","InnerBlocks","useInnerBlocksProps","InspectorControls","RichText","useBlockProps","store","blockEditorStore","getColorClassName","isURL","prependHTTP","useState","useEffect","useRef","link","linkIcon","removeSubmenu","speak","createBlock","useMergeRefs","usePrevious","ItemSubmenuIcon","LinkUI","updateAttributes","getColors","getNavigationChildBlockProps","useToolsPanelDropdownMenuProps","DEFAULT_BLOCK","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ALLOWED_BLOCKS","useIsDraggingWithin","elementRef","isDraggingWithin","setIsDraggingWithin","ownerDocument","current","handleDragStart","event","handleDragEnter","handleDragEnd","contains","target","addEventListener","removeEventListener","NavigationSubmenuEdit","attributes","isSelected","setAttributes","mergeBlocks","onReplace","context","clientId","label","url","description","rel","opensInNewTab","showSubmenuIcon","maxNestingLevel","openSubmenusOnClick","__unstableMarkNextChangeAsNotPersistent","replaceBlock","selectBlock","isLinkOpen","setIsLinkOpen","openedBy","setOpenedBy","popoverAnchor","setPopoverAnchor","listItemRef","itemLabelPlaceholder","ref","dropdownMenuProps","parentCount","isParentOfSelectedBlock","isImmediateParentOfSelectedBlock","hasChildren","selectedBlockHasChildren","onlyDescendantIsEmptyLink","select","hasSelectedInnerBlock","getSelectedBlockClientId","getBlockParentsByBlockName","getBlock","getBlockCount","getBlockOrder","_onlyDescendantIsEmptyLink","selectedBlockId","selectedBlockChildren","length","singleBlock","name","prevHasChildren","test","selectLabelText","focus","defaultView","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","textColor","customTextColor","backgroundColor","customBackgroundColor","onKeyDown","primary","preventDefault","stopPropagation","blockProps","className","style","color","innerBlocksColors","allowedBlocks","filter","blockName","navigationChildBlockProps","innerBlocksProps","defaultBlock","directInsert","__experimentalCaptureToolbars","renderAppender","ButtonBlockAppender","ParentElement","transformToLink","newLinkBlock","canConvertToLink","children","icon","title","shortcut","onClick","currentTarget","disabled","resetAll","isShownByDefault","hasValue","onDeselect","__nextHasNoMarginBottom","__next40pxDefaultSize","value","onChange","labelValue","autoComplete","urlValue","type","checked","descriptionValue","help","relValue","identifier","onMerge","placeholder","withoutInteractiveFormatting","onClose","anchor","onRemove","updatedValue"],"sources":["@wordpress/block-library/src/navigation-submenu/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tCheckboxControl,\n\tTextControl,\n\tTextareaControl,\n\tToolbarButton,\n\tToolbarGroup,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { displayShortcut, isKeyboardEvent } from '@wordpress/keycodes';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\tInnerBlocks,\n\tuseInnerBlocksProps,\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tgetColorClassName,\n} from '@wordpress/block-editor';\nimport { isURL, prependHTTP } from '@wordpress/url';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport { link as linkIcon, removeSubmenu } from '@wordpress/icons';\nimport { speak } from '@wordpress/a11y';\nimport { createBlock } from '@wordpress/blocks';\nimport { useMergeRefs, usePrevious } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { ItemSubmenuIcon } from './icons';\nimport { LinkUI } from '../navigation-link/link-ui';\nimport { updateAttributes } from '../navigation-link/update-attributes';\nimport {\n\tgetColors,\n\tgetNavigationChildBlockProps,\n} from '../navigation/edit/utils';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\nimport { DEFAULT_BLOCK } from '../navigation/constants';\n\nconst ALLOWED_BLOCKS = [\n\t'core/navigation-link',\n\t'core/navigation-submenu',\n\t'core/page-list',\n];\n\n/**\n * A React hook to determine if it's dragging within the target element.\n *\n * @typedef {import('@wordpress/element').RefObject} RefObject\n *\n * @param {RefObject<HTMLElement>} elementRef The target elementRef object.\n *\n * @return {boolean} Is dragging within the target element.\n */\nconst useIsDraggingWithin = ( elementRef ) => {\n\tconst [ isDraggingWithin, setIsDraggingWithin ] = useState( false );\n\n\tuseEffect( () => {\n\t\tconst { ownerDocument } = elementRef.current;\n\n\t\tfunction handleDragStart( event ) {\n\t\t\t// Check the first time when the dragging starts.\n\t\t\thandleDragEnter( event );\n\t\t}\n\n\t\t// Set to false whenever the user cancel the drag event by either releasing the mouse or press Escape.\n\t\tfunction handleDragEnd() {\n\t\t\tsetIsDraggingWithin( false );\n\t\t}\n\n\t\tfunction handleDragEnter( event ) {\n\t\t\t// Check if the current target is inside the item element.\n\t\t\tif ( elementRef.current.contains( event.target ) ) {\n\t\t\t\tsetIsDraggingWithin( true );\n\t\t\t} else {\n\t\t\t\tsetIsDraggingWithin( false );\n\t\t\t}\n\t\t}\n\n\t\t// Bind these events to the document to catch all drag events.\n\t\t// Ideally, we can also use `event.relatedTarget`, but sadly that\n\t\t// doesn't work in Safari.\n\t\townerDocument.addEventListener( 'dragstart', handleDragStart );\n\t\townerDocument.addEventListener( 'dragend', handleDragEnd );\n\t\townerDocument.addEventListener( 'dragenter', handleDragEnter );\n\n\t\treturn () => {\n\t\t\townerDocument.removeEventListener( 'dragstart', handleDragStart );\n\t\t\townerDocument.removeEventListener( 'dragend', handleDragEnd );\n\t\t\townerDocument.removeEventListener( 'dragenter', handleDragEnter );\n\t\t};\n\t}, [] );\n\n\treturn isDraggingWithin;\n};\n\n/**\n * @typedef {'post-type'|'custom'|'taxonomy'|'post-type-archive'} WPNavigationLinkKind\n */\n\n/**\n * Navigation Link Block Attributes\n *\n * @typedef {Object} WPNavigationLinkBlockAttributes\n *\n * @property {string} [label] Link text.\n * @property {WPNavigationLinkKind} [kind] Kind is used to differentiate between term and post ids to check post draft status.\n * @property {string} [type] The type such as post, page, tag, category and other custom types.\n * @property {string} [rel] The relationship of the linked URL.\n * @property {number} [id] A post or term id.\n * @property {boolean} [opensInNewTab] Sets link target to _blank when true.\n * @property {string} [url] Link href.\n */\n\nexport default function NavigationSubmenuEdit( {\n\tattributes,\n\tisSelected,\n\tsetAttributes,\n\tmergeBlocks,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst { label, url, description, rel, opensInNewTab } = attributes;\n\n\tconst { showSubmenuIcon, maxNestingLevel, openSubmenusOnClick } = context;\n\n\tconst {\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\treplaceBlock,\n\t\tselectBlock,\n\t} = useDispatch( blockEditorStore );\n\tconst [ isLinkOpen, setIsLinkOpen ] = useState( false );\n\t// Store what element opened the popover, so we know where to return focus to (toolbar button vs navigation link text)\n\tconst [ openedBy, setOpenedBy ] = useState( null );\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst listItemRef = useRef( null );\n\tconst isDraggingWithin = useIsDraggingWithin( listItemRef );\n\tconst itemLabelPlaceholder = __( 'Add text…' );\n\tconst ref = useRef();\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\tconst {\n\t\tparentCount,\n\t\tisParentOfSelectedBlock,\n\t\tisImmediateParentOfSelectedBlock,\n\t\thasChildren,\n\t\tselectedBlockHasChildren,\n\t\tonlyDescendantIsEmptyLink,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tlet _onlyDescendantIsEmptyLink;\n\n\t\t\tconst selectedBlockId = getSelectedBlockClientId();\n\n\t\t\tconst selectedBlockChildren = getBlockOrder( selectedBlockId );\n\n\t\t\t// Check for a single descendant in the submenu. If that block\n\t\t\t// is a link block in a \"placeholder\" state with no label then\n\t\t\t// we can consider as an \"empty\" link.\n\t\t\tif ( selectedBlockChildren?.length === 1 ) {\n\t\t\t\tconst singleBlock = getBlock( selectedBlockChildren[ 0 ] );\n\n\t\t\t\t_onlyDescendantIsEmptyLink =\n\t\t\t\t\tsingleBlock?.name === 'core/navigation-link' &&\n\t\t\t\t\t! singleBlock?.attributes?.label;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tparentCount: getBlockParentsByBlockName(\n\t\t\t\t\tclientId,\n\t\t\t\t\t'core/navigation-submenu'\n\t\t\t\t).length,\n\t\t\t\tisParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\ttrue\n\t\t\t\t),\n\t\t\t\tisImmediateParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\thasChildren: !! getBlockCount( clientId ),\n\t\t\t\tselectedBlockHasChildren: !! selectedBlockChildren?.length,\n\t\t\t\tonlyDescendantIsEmptyLink: _onlyDescendantIsEmptyLink,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst prevHasChildren = usePrevious( hasChildren );\n\n\t// Show the LinkControl on mount if the URL is empty\n\t// ( When adding a new menu item)\n\t// This can't be done in the useState call because it conflicts\n\t// with the autofocus behavior of the BlockListBlock component.\n\tuseEffect( () => {\n\t\tif ( ! openSubmenusOnClick && ! url ) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}, [] );\n\n\t/**\n\t * The hook shouldn't be necessary but due to a focus loss happening\n\t * when selecting a suggestion in the link popover, we force close on block unselection.\n\t */\n\tuseEffect( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tsetIsLinkOpen( false );\n\t\t}\n\t}, [ isSelected ] );\n\n\t// If the LinkControl popover is open and the URL has changed, close the LinkControl and focus the label text.\n\tuseEffect( () => {\n\t\tif ( isLinkOpen && url ) {\n\t\t\t// Does this look like a URL and have something TLD-ish?\n\t\t\tif (\n\t\t\t\tisURL( prependHTTP( label ) ) &&\n\t\t\t\t/^.+\\.[a-z]+/.test( label )\n\t\t\t) {\n\t\t\t\t// Focus and select the label text.\n\t\t\t\tselectLabelText();\n\t\t\t}\n\t\t}\n\t}, [ url ] );\n\n\t/**\n\t * Focus the Link label text and select it.\n\t */\n\tfunction selectLabelText() {\n\t\tref.current.focus();\n\t\tconst { ownerDocument } = ref.current;\n\t\tconst { defaultView } = ownerDocument;\n\t\tconst selection = defaultView.getSelection();\n\t\tconst range = ownerDocument.createRange();\n\t\t// Get the range of the current ref contents so we can add this range to the selection.\n\t\trange.selectNodeContents( ref.current );\n\t\tselection.removeAllRanges();\n\t\tselection.addRange( range );\n\t}\n\n\tconst {\n\t\ttextColor,\n\t\tcustomTextColor,\n\t\tbackgroundColor,\n\t\tcustomBackgroundColor,\n\t} = getColors( context, parentCount > 0 );\n\n\tfunction onKeyDown( event ) {\n\t\tif ( isKeyboardEvent.primary( event, 'k' ) ) {\n\t\t\t// Required to prevent the command center from opening,\n\t\t\t// as it shares the CMD+K shortcut.\n\t\t\t// See https://github.com/WordPress/gutenberg/pull/59845.\n\t\t\tevent.preventDefault();\n\t\t\t// If we don't stop propagation, this event bubbles up to the parent submenu item\n\t\t\tevent.stopPropagation();\n\t\t\tsetIsLinkOpen( true );\n\t\t\tsetOpenedBy( ref.current );\n\t\t}\n\t}\n\n\tconst blockProps = useBlockProps( {\n\t\tref: useMergeRefs( [ setPopoverAnchor, listItemRef ] ),\n\t\tclassName: clsx( 'wp-block-navigation-item', {\n\t\t\t'is-editing': isSelected || isParentOfSelectedBlock,\n\t\t\t'is-dragging-within': isDraggingWithin,\n\t\t\t'has-link': !! url,\n\t\t\t'has-child': hasChildren,\n\t\t\t'has-text-color': !! textColor || !! customTextColor,\n\t\t\t[ getColorClassName( 'color', textColor ) ]: !! textColor,\n\t\t\t'has-background': !! backgroundColor || customBackgroundColor,\n\t\t\t[ getColorClassName( 'background-color', backgroundColor ) ]:\n\t\t\t\t!! backgroundColor,\n\t\t\t'open-on-click': openSubmenusOnClick,\n\t\t} ),\n\t\tstyle: {\n\t\t\tcolor: ! textColor && customTextColor,\n\t\t\tbackgroundColor: ! backgroundColor && customBackgroundColor,\n\t\t},\n\t\tonKeyDown,\n\t} );\n\n\t// Always use overlay colors for submenus.\n\tconst innerBlocksColors = getColors( context, true );\n\n\tconst allowedBlocks =\n\t\tparentCount >= maxNestingLevel\n\t\t\t? ALLOWED_BLOCKS.filter(\n\t\t\t\t\t( blockName ) => blockName !== 'core/navigation-submenu'\n\t\t\t )\n\t\t\t: ALLOWED_BLOCKS;\n\n\tconst navigationChildBlockProps =\n\t\tgetNavigationChildBlockProps( innerBlocksColors );\n\tconst innerBlocksProps = useInnerBlocksProps( navigationChildBlockProps, {\n\t\tallowedBlocks,\n\t\tdefaultBlock: DEFAULT_BLOCK,\n\t\tdirectInsert: true,\n\n\t\t// Ensure block toolbar is not too far removed from item\n\t\t// being edited.\n\t\t// see: https://github.com/WordPress/gutenberg/pull/34615.\n\t\t__experimentalCaptureToolbars: true,\n\n\t\trenderAppender:\n\t\t\tisSelected ||\n\t\t\t( isImmediateParentOfSelectedBlock &&\n\t\t\t\t! selectedBlockHasChildren ) ||\n\t\t\t// Show the appender while dragging to allow inserting element between item and the appender.\n\t\t\thasChildren\n\t\t\t\t? InnerBlocks.ButtonBlockAppender\n\t\t\t\t: false,\n\t} );\n\n\tconst ParentElement = openSubmenusOnClick ? 'button' : 'a';\n\n\tfunction transformToLink() {\n\t\tconst newLinkBlock = createBlock( 'core/navigation-link', attributes );\n\t\treplaceBlock( clientId, newLinkBlock );\n\t}\n\n\tuseEffect( () => {\n\t\t// If block becomes empty, transform to Navigation Link.\n\t\tif ( ! hasChildren && prevHasChildren ) {\n\t\t\t// This side-effect should not create an undo level as those should\n\t\t\t// only be created via user interactions.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\ttransformToLink();\n\t\t}\n\t}, [ hasChildren, prevHasChildren ] );\n\n\tconst canConvertToLink =\n\t\t! selectedBlockHasChildren || onlyDescendantIsEmptyLink;\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t{ ! openSubmenusOnClick && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\t\ticon={ linkIcon }\n\t\t\t\t\t\t\ttitle={ __( 'Link' ) }\n\t\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\t\t\t\tsetIsLinkOpen( true );\n\t\t\t\t\t\t\t\tsetOpenedBy( event.currentTarget );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"revert\"\n\t\t\t\t\t\ticon={ removeSubmenu }\n\t\t\t\t\t\ttitle={ __( 'Convert to Link' ) }\n\t\t\t\t\t\tonClick={ transformToLink }\n\t\t\t\t\t\tclassName=\"wp-block-navigation__submenu__revert\"\n\t\t\t\t\t\tdisabled={ ! canConvertToLink }\n\t\t\t\t\t/>\n\t\t\t\t</ToolbarGroup>\n\t\t\t</BlockControls>\n\t\t\t{ /* Warning, this duplicated in packages/block-library/src/navigation-link/edit.js */ }\n\t\t\t<InspectorControls>\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\turl: '',\n\t\t\t\t\t\t\tdescription: '',\n\t\t\t\t\t\t\trel: '',\n\t\t\t\t\t\t\topensInNewTab: false,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Text' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => !! label }\n\t\t\t\t\t\tonDeselect={ () => setAttributes( { label: '' } ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvalue={ label || '' }\n\t\t\t\t\t\t\tonChange={ ( labelValue ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { label: labelValue } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tlabel={ __( 'Text' ) }\n\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Link' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => !! url }\n\t\t\t\t\t\tonDeselect={ () => setAttributes( { url: '' } ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvalue={ url || '' }\n\t\t\t\t\t\t\tonChange={ ( urlValue ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { url: urlValue } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tlabel={ __( 'Link' ) }\n\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\ttype=\"url\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\thasValue={ () => !! opensInNewTab }\n\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { opensInNewTab: false } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t>\n\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\tchecked={ opensInNewTab }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { opensInNewTab: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Description' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => !! description }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { description: '' } )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tvalue={ description || '' }\n\t\t\t\t\t\t\tonChange={ ( descriptionValue ) => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tdescription: descriptionValue,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tlabel={ __( 'Description' ) }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'The description will be displayed in the menu if the current theme supports it.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Rel attribute' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => !! rel }\n\t\t\t\t\t\tonDeselect={ () => setAttributes( { rel: '' } ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvalue={ rel || '' }\n\t\t\t\t\t\t\tonChange={ ( relValue ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { rel: relValue } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tlabel={ __( 'Rel attribute' ) }\n\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'The relationship of the linked URL as space-separated link types.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ /* eslint-disable jsx-a11y/anchor-is-valid */ }\n\t\t\t\t<ParentElement className=\"wp-block-navigation-item__content\">\n\t\t\t\t\t{ /* eslint-enable */ }\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\tidentifier=\"label\"\n\t\t\t\t\t\tclassName=\"wp-block-navigation-item__label\"\n\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\tonChange={ ( labelValue ) =>\n\t\t\t\t\t\t\tsetAttributes( { label: labelValue } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\taria-label={ __( 'Navigation link text' ) }\n\t\t\t\t\t\tplaceholder={ itemLabelPlaceholder }\n\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tif ( ! openSubmenusOnClick && ! url ) {\n\t\t\t\t\t\t\t\tsetIsLinkOpen( true );\n\t\t\t\t\t\t\t\tsetOpenedBy( ref.current );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t{ description && (\n\t\t\t\t\t\t<span className=\"wp-block-navigation-item__description\">\n\t\t\t\t\t\t\t{ description }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! openSubmenusOnClick && isLinkOpen && (\n\t\t\t\t\t\t<LinkUI\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tlink={ attributes }\n\t\t\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\t\t\tsetIsLinkOpen( false );\n\t\t\t\t\t\t\t\tif ( openedBy ) {\n\t\t\t\t\t\t\t\t\topenedBy.focus();\n\t\t\t\t\t\t\t\t\tsetOpenedBy( null );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tselectBlock( clientId );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\t\t\tonRemove={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( { url: '' } );\n\t\t\t\t\t\t\t\tspeak( __( 'Link removed.' ), 'assertive' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonChange={ ( updatedValue ) => {\n\t\t\t\t\t\t\t\tupdateAttributes(\n\t\t\t\t\t\t\t\t\tupdatedValue,\n\t\t\t\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\t\t\t\tattributes\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) }\n\t\t\t\t</ParentElement>\n\t\t\t\t{ ( showSubmenuIcon || openSubmenusOnClick ) && (\n\t\t\t\t\t<span className=\"wp-block-navigation__submenu-icon\">\n\t\t\t\t\t\t<ItemSubmenuIcon />\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","useSelect","useDispatch","ToolbarButton","ToolbarGroup","displayShortcut","isKeyboardEvent","__","BlockControls","InnerBlocks","useInnerBlocksProps","InspectorControls","RichText","useBlockProps","store","blockEditorStore","getColorClassName","isURL","prependHTTP","useState","useEffect","useRef","link","linkIcon","removeSubmenu","speak","createBlock","useMergeRefs","usePrevious","ItemSubmenuIcon","LinkUI","updateAttributes","Controls","getColors","getNavigationChildBlockProps","DEFAULT_BLOCK","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ALLOWED_BLOCKS","useIsDraggingWithin","elementRef","isDraggingWithin","setIsDraggingWithin","ownerDocument","current","handleDragStart","event","handleDragEnter","handleDragEnd","contains","target","addEventListener","removeEventListener","NavigationSubmenuEdit","attributes","isSelected","setAttributes","mergeBlocks","onReplace","context","clientId","label","url","description","showSubmenuIcon","maxNestingLevel","openSubmenusOnClick","__unstableMarkNextChangeAsNotPersistent","replaceBlock","selectBlock","isLinkOpen","setIsLinkOpen","openedBy","setOpenedBy","popoverAnchor","setPopoverAnchor","listItemRef","itemLabelPlaceholder","ref","parentCount","isParentOfSelectedBlock","isImmediateParentOfSelectedBlock","hasChildren","selectedBlockHasChildren","onlyDescendantIsEmptyLink","select","hasSelectedInnerBlock","getSelectedBlockClientId","getBlockParentsByBlockName","getBlock","getBlockCount","getBlockOrder","_onlyDescendantIsEmptyLink","selectedBlockId","selectedBlockChildren","length","singleBlock","name","prevHasChildren","test","selectLabelText","focus","defaultView","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","textColor","customTextColor","backgroundColor","customBackgroundColor","onKeyDown","primary","preventDefault","stopPropagation","blockProps","className","style","color","innerBlocksColors","allowedBlocks","filter","blockName","navigationChildBlockProps","innerBlocksProps","defaultBlock","directInsert","__experimentalCaptureToolbars","renderAppender","ButtonBlockAppender","ParentElement","transformToLink","newLinkBlock","canConvertToLink","children","icon","title","shortcut","onClick","currentTarget","disabled","identifier","value","onChange","labelValue","onMerge","placeholder","withoutInteractiveFormatting","onClose","anchor","onRemove","updatedValue"],"sources":["@wordpress/block-library/src/navigation-submenu/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { displayShortcut, isKeyboardEvent } from '@wordpress/keycodes';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\tInnerBlocks,\n\tuseInnerBlocksProps,\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tgetColorClassName,\n} from '@wordpress/block-editor';\nimport { isURL, prependHTTP } from '@wordpress/url';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport { link as linkIcon, removeSubmenu } from '@wordpress/icons';\nimport { speak } from '@wordpress/a11y';\nimport { createBlock } from '@wordpress/blocks';\nimport { useMergeRefs, usePrevious } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { ItemSubmenuIcon } from './icons';\nimport { LinkUI } from '../navigation-link/link-ui';\nimport { updateAttributes } from '../navigation-link/update-attributes';\nimport { Controls } from '../navigation-link/shared';\nimport {\n\tgetColors,\n\tgetNavigationChildBlockProps,\n} from '../navigation/edit/utils';\nimport { DEFAULT_BLOCK } from '../navigation/constants';\n\nconst ALLOWED_BLOCKS = [\n\t'core/navigation-link',\n\t'core/navigation-submenu',\n\t'core/page-list',\n];\n\n/**\n * A React hook to determine if it's dragging within the target element.\n *\n * @typedef {import('@wordpress/element').RefObject} RefObject\n *\n * @param {RefObject<HTMLElement>} elementRef The target elementRef object.\n *\n * @return {boolean} Is dragging within the target element.\n */\nconst useIsDraggingWithin = ( elementRef ) => {\n\tconst [ isDraggingWithin, setIsDraggingWithin ] = useState( false );\n\n\tuseEffect( () => {\n\t\tconst { ownerDocument } = elementRef.current;\n\n\t\tfunction handleDragStart( event ) {\n\t\t\t// Check the first time when the dragging starts.\n\t\t\thandleDragEnter( event );\n\t\t}\n\n\t\t// Set to false whenever the user cancel the drag event by either releasing the mouse or press Escape.\n\t\tfunction handleDragEnd() {\n\t\t\tsetIsDraggingWithin( false );\n\t\t}\n\n\t\tfunction handleDragEnter( event ) {\n\t\t\t// Check if the current target is inside the item element.\n\t\t\tif ( elementRef.current.contains( event.target ) ) {\n\t\t\t\tsetIsDraggingWithin( true );\n\t\t\t} else {\n\t\t\t\tsetIsDraggingWithin( false );\n\t\t\t}\n\t\t}\n\n\t\t// Bind these events to the document to catch all drag events.\n\t\t// Ideally, we can also use `event.relatedTarget`, but sadly that\n\t\t// doesn't work in Safari.\n\t\townerDocument.addEventListener( 'dragstart', handleDragStart );\n\t\townerDocument.addEventListener( 'dragend', handleDragEnd );\n\t\townerDocument.addEventListener( 'dragenter', handleDragEnter );\n\n\t\treturn () => {\n\t\t\townerDocument.removeEventListener( 'dragstart', handleDragStart );\n\t\t\townerDocument.removeEventListener( 'dragend', handleDragEnd );\n\t\t\townerDocument.removeEventListener( 'dragenter', handleDragEnter );\n\t\t};\n\t}, [] );\n\n\treturn isDraggingWithin;\n};\n\n/**\n * @typedef {'post-type'|'custom'|'taxonomy'|'post-type-archive'} WPNavigationLinkKind\n */\n\n/**\n * Navigation Link Block Attributes\n *\n * @typedef {Object} WPNavigationLinkBlockAttributes\n *\n * @property {string} [label] Link text.\n * @property {WPNavigationLinkKind} [kind] Kind is used to differentiate between term and post ids to check post draft status.\n * @property {string} [type] The type such as post, page, tag, category and other custom types.\n * @property {string} [rel] The relationship of the linked URL.\n * @property {number} [id] A post or term id.\n * @property {boolean} [opensInNewTab] Sets link target to _blank when true.\n * @property {string} [url] Link href.\n */\n\nexport default function NavigationSubmenuEdit( {\n\tattributes,\n\tisSelected,\n\tsetAttributes,\n\tmergeBlocks,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst { label, url, description } = attributes;\n\n\tconst { showSubmenuIcon, maxNestingLevel, openSubmenusOnClick } = context;\n\n\tconst {\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\treplaceBlock,\n\t\tselectBlock,\n\t} = useDispatch( blockEditorStore );\n\tconst [ isLinkOpen, setIsLinkOpen ] = useState( false );\n\t// Store what element opened the popover, so we know where to return focus to (toolbar button vs navigation link text)\n\tconst [ openedBy, setOpenedBy ] = useState( null );\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst listItemRef = useRef( null );\n\tconst isDraggingWithin = useIsDraggingWithin( listItemRef );\n\tconst itemLabelPlaceholder = __( 'Add text…' );\n\tconst ref = useRef();\n\n\tconst {\n\t\tparentCount,\n\t\tisParentOfSelectedBlock,\n\t\tisImmediateParentOfSelectedBlock,\n\t\thasChildren,\n\t\tselectedBlockHasChildren,\n\t\tonlyDescendantIsEmptyLink,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tlet _onlyDescendantIsEmptyLink;\n\n\t\t\tconst selectedBlockId = getSelectedBlockClientId();\n\n\t\t\tconst selectedBlockChildren = getBlockOrder( selectedBlockId );\n\n\t\t\t// Check for a single descendant in the submenu. If that block\n\t\t\t// is a link block in a \"placeholder\" state with no label then\n\t\t\t// we can consider as an \"empty\" link.\n\t\t\tif ( selectedBlockChildren?.length === 1 ) {\n\t\t\t\tconst singleBlock = getBlock( selectedBlockChildren[ 0 ] );\n\n\t\t\t\t_onlyDescendantIsEmptyLink =\n\t\t\t\t\tsingleBlock?.name === 'core/navigation-link' &&\n\t\t\t\t\t! singleBlock?.attributes?.label;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tparentCount: getBlockParentsByBlockName(\n\t\t\t\t\tclientId,\n\t\t\t\t\t'core/navigation-submenu'\n\t\t\t\t).length,\n\t\t\t\tisParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\ttrue\n\t\t\t\t),\n\t\t\t\tisImmediateParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\thasChildren: !! getBlockCount( clientId ),\n\t\t\t\tselectedBlockHasChildren: !! selectedBlockChildren?.length,\n\t\t\t\tonlyDescendantIsEmptyLink: _onlyDescendantIsEmptyLink,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst prevHasChildren = usePrevious( hasChildren );\n\n\t// Show the LinkControl on mount if the URL is empty\n\t// ( When adding a new menu item)\n\t// This can't be done in the useState call because it conflicts\n\t// with the autofocus behavior of the BlockListBlock component.\n\tuseEffect( () => {\n\t\tif ( ! openSubmenusOnClick && ! url ) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}, [] );\n\n\t/**\n\t * The hook shouldn't be necessary but due to a focus loss happening\n\t * when selecting a suggestion in the link popover, we force close on block unselection.\n\t */\n\tuseEffect( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tsetIsLinkOpen( false );\n\t\t}\n\t}, [ isSelected ] );\n\n\t// If the LinkControl popover is open and the URL has changed, close the LinkControl and focus the label text.\n\tuseEffect( () => {\n\t\tif ( isLinkOpen && url ) {\n\t\t\t// Does this look like a URL and have something TLD-ish?\n\t\t\tif (\n\t\t\t\tisURL( prependHTTP( label ) ) &&\n\t\t\t\t/^.+\\.[a-z]+/.test( label )\n\t\t\t) {\n\t\t\t\t// Focus and select the label text.\n\t\t\t\tselectLabelText();\n\t\t\t}\n\t\t}\n\t}, [ url ] );\n\n\t/**\n\t * Focus the Link label text and select it.\n\t */\n\tfunction selectLabelText() {\n\t\tref.current.focus();\n\t\tconst { ownerDocument } = ref.current;\n\t\tconst { defaultView } = ownerDocument;\n\t\tconst selection = defaultView.getSelection();\n\t\tconst range = ownerDocument.createRange();\n\t\t// Get the range of the current ref contents so we can add this range to the selection.\n\t\trange.selectNodeContents( ref.current );\n\t\tselection.removeAllRanges();\n\t\tselection.addRange( range );\n\t}\n\n\tconst {\n\t\ttextColor,\n\t\tcustomTextColor,\n\t\tbackgroundColor,\n\t\tcustomBackgroundColor,\n\t} = getColors( context, parentCount > 0 );\n\n\tfunction onKeyDown( event ) {\n\t\tif ( isKeyboardEvent.primary( event, 'k' ) ) {\n\t\t\t// Required to prevent the command center from opening,\n\t\t\t// as it shares the CMD+K shortcut.\n\t\t\t// See https://github.com/WordPress/gutenberg/pull/59845.\n\t\t\tevent.preventDefault();\n\t\t\t// If we don't stop propagation, this event bubbles up to the parent submenu item\n\t\t\tevent.stopPropagation();\n\t\t\tsetIsLinkOpen( true );\n\t\t\tsetOpenedBy( ref.current );\n\t\t}\n\t}\n\n\tconst blockProps = useBlockProps( {\n\t\tref: useMergeRefs( [ setPopoverAnchor, listItemRef ] ),\n\t\tclassName: clsx( 'wp-block-navigation-item', {\n\t\t\t'is-editing': isSelected || isParentOfSelectedBlock,\n\t\t\t'is-dragging-within': isDraggingWithin,\n\t\t\t'has-link': !! url,\n\t\t\t'has-child': hasChildren,\n\t\t\t'has-text-color': !! textColor || !! customTextColor,\n\t\t\t[ getColorClassName( 'color', textColor ) ]: !! textColor,\n\t\t\t'has-background': !! backgroundColor || customBackgroundColor,\n\t\t\t[ getColorClassName( 'background-color', backgroundColor ) ]:\n\t\t\t\t!! backgroundColor,\n\t\t\t'open-on-click': openSubmenusOnClick,\n\t\t} ),\n\t\tstyle: {\n\t\t\tcolor: ! textColor && customTextColor,\n\t\t\tbackgroundColor: ! backgroundColor && customBackgroundColor,\n\t\t},\n\t\tonKeyDown,\n\t} );\n\n\t// Always use overlay colors for submenus.\n\tconst innerBlocksColors = getColors( context, true );\n\n\tconst allowedBlocks =\n\t\tparentCount >= maxNestingLevel\n\t\t\t? ALLOWED_BLOCKS.filter(\n\t\t\t\t\t( blockName ) => blockName !== 'core/navigation-submenu'\n\t\t\t )\n\t\t\t: ALLOWED_BLOCKS;\n\n\tconst navigationChildBlockProps =\n\t\tgetNavigationChildBlockProps( innerBlocksColors );\n\tconst innerBlocksProps = useInnerBlocksProps( navigationChildBlockProps, {\n\t\tallowedBlocks,\n\t\tdefaultBlock: DEFAULT_BLOCK,\n\t\tdirectInsert: true,\n\n\t\t// Ensure block toolbar is not too far removed from item\n\t\t// being edited.\n\t\t// see: https://github.com/WordPress/gutenberg/pull/34615.\n\t\t__experimentalCaptureToolbars: true,\n\n\t\trenderAppender:\n\t\t\tisSelected ||\n\t\t\t( isImmediateParentOfSelectedBlock &&\n\t\t\t\t! selectedBlockHasChildren ) ||\n\t\t\t// Show the appender while dragging to allow inserting element between item and the appender.\n\t\t\thasChildren\n\t\t\t\t? InnerBlocks.ButtonBlockAppender\n\t\t\t\t: false,\n\t} );\n\n\tconst ParentElement = openSubmenusOnClick ? 'button' : 'a';\n\n\tfunction transformToLink() {\n\t\tconst newLinkBlock = createBlock( 'core/navigation-link', attributes );\n\t\treplaceBlock( clientId, newLinkBlock );\n\t}\n\n\tuseEffect( () => {\n\t\t// If block becomes empty, transform to Navigation Link.\n\t\tif ( ! hasChildren && prevHasChildren ) {\n\t\t\t// This side-effect should not create an undo level as those should\n\t\t\t// only be created via user interactions.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\ttransformToLink();\n\t\t}\n\t}, [ hasChildren, prevHasChildren ] );\n\n\tconst canConvertToLink =\n\t\t! selectedBlockHasChildren || onlyDescendantIsEmptyLink;\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t{ ! openSubmenusOnClick && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\t\ticon={ linkIcon }\n\t\t\t\t\t\t\ttitle={ __( 'Link' ) }\n\t\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\t\t\t\tsetIsLinkOpen( true );\n\t\t\t\t\t\t\t\tsetOpenedBy( event.currentTarget );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"revert\"\n\t\t\t\t\t\ticon={ removeSubmenu }\n\t\t\t\t\t\ttitle={ __( 'Convert to Link' ) }\n\t\t\t\t\t\tonClick={ transformToLink }\n\t\t\t\t\t\tclassName=\"wp-block-navigation__submenu__revert\"\n\t\t\t\t\t\tdisabled={ ! canConvertToLink }\n\t\t\t\t\t/>\n\t\t\t\t</ToolbarGroup>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<Controls\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ /* eslint-disable jsx-a11y/anchor-is-valid */ }\n\t\t\t\t<ParentElement className=\"wp-block-navigation-item__content\">\n\t\t\t\t\t{ /* eslint-enable */ }\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\tidentifier=\"label\"\n\t\t\t\t\t\tclassName=\"wp-block-navigation-item__label\"\n\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\tonChange={ ( labelValue ) =>\n\t\t\t\t\t\t\tsetAttributes( { label: labelValue } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\taria-label={ __( 'Navigation link text' ) }\n\t\t\t\t\t\tplaceholder={ itemLabelPlaceholder }\n\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tif ( ! openSubmenusOnClick && ! url ) {\n\t\t\t\t\t\t\t\tsetIsLinkOpen( true );\n\t\t\t\t\t\t\t\tsetOpenedBy( ref.current );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t{ description && (\n\t\t\t\t\t\t<span className=\"wp-block-navigation-item__description\">\n\t\t\t\t\t\t\t{ description }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! openSubmenusOnClick && isLinkOpen && (\n\t\t\t\t\t\t<LinkUI\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tlink={ attributes }\n\t\t\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\t\t\tsetIsLinkOpen( false );\n\t\t\t\t\t\t\t\tif ( openedBy ) {\n\t\t\t\t\t\t\t\t\topenedBy.focus();\n\t\t\t\t\t\t\t\t\tsetOpenedBy( null );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tselectBlock( clientId );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\t\t\tonRemove={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( { url: '' } );\n\t\t\t\t\t\t\t\tspeak( __( 'Link removed.' ), 'assertive' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonChange={ ( updatedValue ) => {\n\t\t\t\t\t\t\t\tupdateAttributes(\n\t\t\t\t\t\t\t\t\tupdatedValue,\n\t\t\t\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\t\t\t\tattributes\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) }\n\t\t\t\t</ParentElement>\n\t\t\t\t{ ( showSubmenuIcon || openSubmenusOnClick ) && (\n\t\t\t\t\t<span className=\"wp-block-navigation__submenu-icon\">\n\t\t\t\t\t\t<ItemSubmenuIcon />\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -13,6 +13,7 @@ const metadata = {
13
13
  html: false,
14
14
  inserter: false,
15
15
  renaming: false,
16
+ blockVisibility: false,
16
17
  interactivity: {
17
18
  clientNavigation: true
18
19
  }
@@ -1 +1 @@
1
- {"version":3,"names":["initBlock","metadata","$schema","apiVersion","name","title","category","description","supports","html","inserter","renaming","interactivity","clientNavigation","textdomain","attributes","slug","type","PatternEdit","settings","edit","init"],"sources":["@wordpress/block-library/src/pattern/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport PatternEdit from './edit';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\tedit: PatternEdit,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;IAAAC,IAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,aAAA;MAAAC,gBAAA;IAAA;EAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,IAAA;MAAAC,IAAA;IAAA;EAAA;AAAA;AAE5C,OAAOC,WAAW,MAAM,QAAQ;AAEhC,MAAM;EAAEd;AAAK,CAAC,GAAGH,QAAQ;AACzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMe,QAAQ,GAAG;EACvBC,IAAI,EAAEF;AACP,CAAC;AAED,OAAO,MAAMG,IAAI,GAAGA,CAAA,KAAMrB,SAAS,CAAE;EAAEI,IAAI;EAAEH,QAAQ;EAAEkB;AAAS,CAAE,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["initBlock","metadata","$schema","apiVersion","name","title","category","description","supports","html","inserter","renaming","blockVisibility","interactivity","clientNavigation","textdomain","attributes","slug","type","PatternEdit","settings","edit","init"],"sources":["@wordpress/block-library/src/pattern/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport PatternEdit from './edit';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\tedit: PatternEdit,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;IAAAC,IAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,eAAA;IAAAC,aAAA;MAAAC,gBAAA;IAAA;EAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,IAAA;MAAAC,IAAA;IAAA;EAAA;AAAA;AAE5C,OAAOC,WAAW,MAAM,QAAQ;AAEhC,MAAM;EAAEf;AAAK,CAAC,GAAGH,QAAQ;AACzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMgB,QAAQ,GAAG;EACvBC,IAAI,EAAEF;AACP,CAAC;AAED,OAAO,MAAMG,IAAI,GAAGA,CAAA,KAAMtB,SAAS,CAAE;EAAEI,IAAI;EAAEH,QAAQ;EAAEmB;AAAS,CAAE,CAAC","ignoreList":[]}
@@ -18,7 +18,7 @@ import { count as wordCount } from '@wordpress/wordcount';
18
18
  * Internal dependencies
19
19
  */
20
20
  import { useToolsPanelDropdownMenuProps } from '../utils/hooks';
21
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
21
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
22
22
  function PostTimeToReadEdit({
23
23
  attributes,
24
24
  setAttributes,
@@ -27,8 +27,7 @@ function PostTimeToReadEdit({
27
27
  const {
28
28
  textAlign,
29
29
  displayAsRange,
30
- showTimeToRead,
31
- showWordCount,
30
+ displayMode,
32
31
  averageReadingSpeed
33
32
  } = attributes;
34
33
  const {
@@ -63,11 +62,9 @@ function PostTimeToReadEdit({
63
62
  */
64
63
  const wordCountType = _x('words', 'Word count type. Do not translate!');
65
64
  const totalWords = wordCount(content || '', wordCountType);
66
- const parts = [];
67
65
 
68
66
  // Add "time to read" part, if enabled.
69
- if (showTimeToRead) {
70
- let timeString;
67
+ if (displayMode === 'time') {
71
68
  if (displayAsRange) {
72
69
  let maxMinutes = Math.max(1, Math.round(totalWords / averageReadingSpeed * 1.2));
73
70
  const minMinutes = Math.max(1, Math.round(totalWords / averageReadingSpeed * 0.8));
@@ -76,28 +73,20 @@ function PostTimeToReadEdit({
76
73
  }
77
74
  // translators: %1$s: minimum minutes, %2$s: maximum minutes to read the post.
78
75
  const rangeLabel = _x('%1$s–%2$s minutes', 'Range of minutes to read');
79
- timeString = sprintf(rangeLabel, minMinutes, maxMinutes);
80
- } else {
81
- const minutesToRead = Math.max(1, Math.round(totalWords / averageReadingSpeed));
82
- timeString = sprintf(/* translators: %s: the number of minutes to read the post. */
83
- _n('%s minute', '%s minutes', minutesToRead), minutesToRead);
76
+ return sprintf(rangeLabel, minMinutes, maxMinutes);
84
77
  }
85
- parts.push(timeString);
78
+ const minutesToRead = Math.max(1, Math.round(totalWords / averageReadingSpeed));
79
+ return sprintf(/* translators: %s: the number of minutes to read the post. */
80
+ _n('%s minute', '%s minutes', minutesToRead), minutesToRead);
86
81
  }
87
82
 
88
83
  // Add "word count" part, if enabled.
89
- if (showWordCount) {
90
- const wordCountString = sprintf(/* translators: %s: the number of words in the post. */
91
- _n('%s word', '%s words', totalWords), totalWords.toLocaleString());
92
- parts.push(wordCountString);
84
+ if (displayMode === 'words') {
85
+ return wordCountType === 'words' ? sprintf(/* translators: %s: the number of words in the post. */
86
+ _n('%s word', '%s words', totalWords), totalWords.toLocaleString()) : sprintf(/* translators: %s: the number of characters in the post. */
87
+ _n('%s character', '%s characters', totalWords), totalWords.toLocaleString());
93
88
  }
94
- if (parts.length === 1) {
95
- return parts[0];
96
- }
97
- return parts.map((part, index) => /*#__PURE__*/_jsxs("span", {
98
- children: [part, index < parts.length - 1 && /*#__PURE__*/_jsx("br", {})]
99
- }, index));
100
- }, [contentStructure, blocks, displayAsRange, showTimeToRead, showWordCount, averageReadingSpeed]);
89
+ }, [contentStructure, blocks, displayAsRange, displayMode, averageReadingSpeed]);
101
90
  const blockProps = useBlockProps({
102
91
  className: clsx({
103
92
  [`has-text-align-${textAlign}`]: textAlign
@@ -114,34 +103,16 @@ function PostTimeToReadEdit({
114
103
  });
115
104
  }
116
105
  })
117
- }), /*#__PURE__*/_jsx(InspectorControls, {
118
- children: /*#__PURE__*/_jsxs(ToolsPanel, {
106
+ }), displayMode === 'time' && /*#__PURE__*/_jsx(InspectorControls, {
107
+ children: /*#__PURE__*/_jsx(ToolsPanel, {
119
108
  label: __('Settings'),
120
109
  resetAll: () => {
121
110
  setAttributes({
122
- displayAsRange: true,
123
- showTimeToRead: true,
124
- showWordCount: false
111
+ displayAsRange: true
125
112
  });
126
113
  },
127
114
  dropdownMenuProps: dropdownMenuProps,
128
- children: [/*#__PURE__*/_jsx(ToolsPanelItem, {
129
- label: __('Show time to read'),
130
- hasValue: () => !showTimeToRead,
131
- onDeselect: () => {
132
- setAttributes({
133
- showTimeToRead: true
134
- });
135
- },
136
- children: /*#__PURE__*/_jsx(ToggleControl, {
137
- __nextHasNoMarginBottom: true,
138
- label: __('Show time to read'),
139
- checked: !!showTimeToRead,
140
- onChange: () => setAttributes({
141
- showTimeToRead: !showTimeToRead
142
- })
143
- })
144
- }), showTimeToRead && /*#__PURE__*/_jsx(ToolsPanelItem, {
115
+ children: /*#__PURE__*/_jsx(ToolsPanelItem, {
145
116
  isShownByDefault: true,
146
117
  label: _x('Display as range', 'Turns reading time range display on or off'),
147
118
  hasValue: () => !displayAsRange,
@@ -158,23 +129,7 @@ function PostTimeToReadEdit({
158
129
  displayAsRange: !displayAsRange
159
130
  })
160
131
  })
161
- }), /*#__PURE__*/_jsx(ToolsPanelItem, {
162
- label: __('Show word count'),
163
- hasValue: () => !!showWordCount,
164
- onDeselect: () => {
165
- setAttributes({
166
- showWordCount: false
167
- });
168
- },
169
- children: /*#__PURE__*/_jsx(ToggleControl, {
170
- __nextHasNoMarginBottom: true,
171
- label: __('Show word count'),
172
- checked: !!showWordCount,
173
- onChange: () => setAttributes({
174
- showWordCount: !showWordCount
175
- })
176
- })
177
- })]
132
+ })
178
133
  })
179
134
  }), /*#__PURE__*/_jsx("div", {
180
135
  ...blockProps,
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","__","_x","_n","sprintf","useMemo","AlignmentControl","BlockControls","InspectorControls","useBlockProps","ToggleControl","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__unstableSerializeAndClean","useEntityProp","useEntityBlockEditor","count","wordCount","useToolsPanelDropdownMenuProps","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","PostTimeToReadEdit","attributes","setAttributes","context","textAlign","displayAsRange","showTimeToRead","showWordCount","averageReadingSpeed","postId","postType","dropdownMenuProps","contentStructure","blocks","id","displayString","content","Function","wordCountType","totalWords","parts","timeString","maxMinutes","Math","max","round","minMinutes","rangeLabel","minutesToRead","push","wordCountString","toLocaleString","length","map","part","index","children","blockProps","className","group","value","onChange","nextAlign","label","resetAll","hasValue","onDeselect","__nextHasNoMarginBottom","checked","isShownByDefault"],"sources":["@wordpress/block-library/src/post-time-to-read/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x, _n, sprintf } from '@wordpress/i18n';\nimport { useMemo } from '@wordpress/element';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport {\n\tToggleControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { __unstableSerializeAndClean } from '@wordpress/blocks';\nimport { useEntityProp, useEntityBlockEditor } from '@wordpress/core-data';\nimport { count as wordCount } from '@wordpress/wordcount';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nfunction PostTimeToReadEdit( { attributes, setAttributes, context } ) {\n\tconst {\n\t\ttextAlign,\n\t\tdisplayAsRange,\n\t\tshowTimeToRead,\n\t\tshowWordCount,\n\t\taverageReadingSpeed,\n\t} = attributes;\n\n\tconst { postId, postType } = context;\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\tconst [ contentStructure ] = useEntityProp(\n\t\t'postType',\n\t\tpostType,\n\t\t'content',\n\t\tpostId\n\t);\n\n\tconst [ blocks ] = useEntityBlockEditor( 'postType', postType, {\n\t\tid: postId,\n\t} );\n\n\tconst displayString = useMemo( () => {\n\t\t// Replicates the logic found in getEditedPostContent().\n\t\tlet content;\n\t\tif ( contentStructure instanceof Function ) {\n\t\t\tcontent = contentStructure( { blocks } );\n\t\t} else if ( blocks ) {\n\t\t\t// If we have parsed blocks already, they should be our source of truth.\n\t\t\t// Parsing applies block deprecations and legacy block conversions that\n\t\t\t// unparsed content will not have.\n\t\t\tcontent = __unstableSerializeAndClean( blocks );\n\t\t} else {\n\t\t\tcontent = contentStructure;\n\t\t}\n\n\t\t/*\n\t\t * translators: If your word count is based on single characters (e.g. East Asian characters),\n\t\t * enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'.\n\t\t * Do not translate into your own language.\n\t\t */\n\t\tconst wordCountType = _x(\n\t\t\t'words',\n\t\t\t'Word count type. Do not translate!'\n\t\t);\n\n\t\tconst totalWords = wordCount( content || '', wordCountType );\n\n\t\tconst parts = [];\n\n\t\t// Add \"time to read\" part, if enabled.\n\t\tif ( showTimeToRead ) {\n\t\t\tlet timeString;\n\t\t\tif ( displayAsRange ) {\n\t\t\t\tlet maxMinutes = Math.max(\n\t\t\t\t\t1,\n\t\t\t\t\tMath.round( ( totalWords / averageReadingSpeed ) * 1.2 )\n\t\t\t\t);\n\t\t\t\tconst minMinutes = Math.max(\n\t\t\t\t\t1,\n\t\t\t\t\tMath.round( ( totalWords / averageReadingSpeed ) * 0.8 )\n\t\t\t\t);\n\n\t\t\t\tif ( minMinutes === maxMinutes ) {\n\t\t\t\t\tmaxMinutes = maxMinutes + 1;\n\t\t\t\t}\n\t\t\t\t// translators: %1$s: minimum minutes, %2$s: maximum minutes to read the post.\n\t\t\t\tconst rangeLabel = _x(\n\t\t\t\t\t'%1$s–%2$s minutes',\n\t\t\t\t\t'Range of minutes to read'\n\t\t\t\t);\n\t\t\t\ttimeString = sprintf( rangeLabel, minMinutes, maxMinutes );\n\t\t\t} else {\n\t\t\t\tconst minutesToRead = Math.max(\n\t\t\t\t\t1,\n\t\t\t\t\tMath.round( totalWords / averageReadingSpeed )\n\t\t\t\t);\n\n\t\t\t\ttimeString = sprintf(\n\t\t\t\t\t/* translators: %s: the number of minutes to read the post. */\n\t\t\t\t\t_n( '%s minute', '%s minutes', minutesToRead ),\n\t\t\t\t\tminutesToRead\n\t\t\t\t);\n\t\t\t}\n\t\t\tparts.push( timeString );\n\t\t}\n\n\t\t// Add \"word count\" part, if enabled.\n\t\tif ( showWordCount ) {\n\t\t\tconst wordCountString = sprintf(\n\t\t\t\t/* translators: %s: the number of words in the post. */\n\t\t\t\t_n( '%s word', '%s words', totalWords ),\n\t\t\t\ttotalWords.toLocaleString()\n\t\t\t);\n\t\t\tparts.push( wordCountString );\n\t\t}\n\n\t\tif ( parts.length === 1 ) {\n\t\t\treturn parts[ 0 ];\n\t\t}\n\t\treturn parts.map( ( part, index ) => (\n\t\t\t<span key={ index }>\n\t\t\t\t{ part }\n\t\t\t\t{ index < parts.length - 1 && <br /> }\n\t\t\t</span>\n\t\t) );\n\t}, [\n\t\tcontentStructure,\n\t\tblocks,\n\t\tdisplayAsRange,\n\t\tshowTimeToRead,\n\t\tshowWordCount,\n\t\taverageReadingSpeed,\n\t] );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tdisplayAsRange: true,\n\t\t\t\t\t\t\tshowTimeToRead: true,\n\t\t\t\t\t\t\tshowWordCount: false,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Show time to read' ) }\n\t\t\t\t\t\thasValue={ () => ! showTimeToRead }\n\t\t\t\t\t\tonDeselect={ () => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowTimeToRead: true,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Show time to read' ) }\n\t\t\t\t\t\t\tchecked={ !! showTimeToRead }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tshowTimeToRead: ! showTimeToRead,\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</ToolsPanelItem>\n\t\t\t\t\t{ showTimeToRead && (\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t\t\t'Display as range',\n\t\t\t\t\t\t\t\t'Turns reading time range display on or off'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\thasValue={ () => ! displayAsRange }\n\t\t\t\t\t\t\tonDeselect={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tdisplayAsRange: true,\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<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Display as range' ) }\n\t\t\t\t\t\t\t\tchecked={ !! displayAsRange }\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tdisplayAsRange: ! displayAsRange,\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</ToolsPanelItem>\n\t\t\t\t\t) }\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Show word count' ) }\n\t\t\t\t\t\thasValue={ () => !! showWordCount }\n\t\t\t\t\t\tonDeselect={ () => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowWordCount: false,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Show word count' ) }\n\t\t\t\t\t\t\tchecked={ !! showWordCount }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tshowWordCount: ! showWordCount,\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</ToolsPanelItem>\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...blockProps }>{ displayString }</div>\n\t\t</>\n\t);\n}\n\nexport default PostTimeToReadEdit;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","__","_x","_n","sprintf","useMemo","AlignmentControl","BlockControls","InspectorControls","useBlockProps","ToggleControl","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__unstableSerializeAndClean","useEntityProp","useEntityBlockEditor","count","wordCount","useToolsPanelDropdownMenuProps","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PostTimeToReadEdit","attributes","setAttributes","context","textAlign","displayAsRange","displayMode","averageReadingSpeed","postId","postType","dropdownMenuProps","contentStructure","blocks","id","displayString","content","Function","wordCountType","totalWords","maxMinutes","Math","max","round","minMinutes","rangeLabel","minutesToRead","toLocaleString","blockProps","className","children","group","value","onChange","nextAlign","label","resetAll","isShownByDefault","hasValue","onDeselect","__nextHasNoMarginBottom","checked"],"sources":["@wordpress/block-library/src/post-time-to-read/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x, _n, sprintf } from '@wordpress/i18n';\nimport { useMemo } from '@wordpress/element';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport {\n\tToggleControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { __unstableSerializeAndClean } from '@wordpress/blocks';\nimport { useEntityProp, useEntityBlockEditor } from '@wordpress/core-data';\nimport { count as wordCount } from '@wordpress/wordcount';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nfunction PostTimeToReadEdit( { attributes, setAttributes, context } ) {\n\tconst { textAlign, displayAsRange, displayMode, averageReadingSpeed } =\n\t\tattributes;\n\n\tconst { postId, postType } = context;\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\tconst [ contentStructure ] = useEntityProp(\n\t\t'postType',\n\t\tpostType,\n\t\t'content',\n\t\tpostId\n\t);\n\n\tconst [ blocks ] = useEntityBlockEditor( 'postType', postType, {\n\t\tid: postId,\n\t} );\n\n\tconst displayString = useMemo( () => {\n\t\t// Replicates the logic found in getEditedPostContent().\n\t\tlet content;\n\t\tif ( contentStructure instanceof Function ) {\n\t\t\tcontent = contentStructure( { blocks } );\n\t\t} else if ( blocks ) {\n\t\t\t// If we have parsed blocks already, they should be our source of truth.\n\t\t\t// Parsing applies block deprecations and legacy block conversions that\n\t\t\t// unparsed content will not have.\n\t\t\tcontent = __unstableSerializeAndClean( blocks );\n\t\t} else {\n\t\t\tcontent = contentStructure;\n\t\t}\n\n\t\t/*\n\t\t * translators: If your word count is based on single characters (e.g. East Asian characters),\n\t\t * enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'.\n\t\t * Do not translate into your own language.\n\t\t */\n\t\tconst wordCountType = _x(\n\t\t\t'words',\n\t\t\t'Word count type. Do not translate!'\n\t\t);\n\n\t\tconst totalWords = wordCount( content || '', wordCountType );\n\n\t\t// Add \"time to read\" part, if enabled.\n\t\tif ( displayMode === 'time' ) {\n\t\t\tif ( displayAsRange ) {\n\t\t\t\tlet maxMinutes = Math.max(\n\t\t\t\t\t1,\n\t\t\t\t\tMath.round( ( totalWords / averageReadingSpeed ) * 1.2 )\n\t\t\t\t);\n\t\t\t\tconst minMinutes = Math.max(\n\t\t\t\t\t1,\n\t\t\t\t\tMath.round( ( totalWords / averageReadingSpeed ) * 0.8 )\n\t\t\t\t);\n\n\t\t\t\tif ( minMinutes === maxMinutes ) {\n\t\t\t\t\tmaxMinutes = maxMinutes + 1;\n\t\t\t\t}\n\t\t\t\t// translators: %1$s: minimum minutes, %2$s: maximum minutes to read the post.\n\t\t\t\tconst rangeLabel = _x(\n\t\t\t\t\t'%1$s–%2$s minutes',\n\t\t\t\t\t'Range of minutes to read'\n\t\t\t\t);\n\t\t\t\treturn sprintf( rangeLabel, minMinutes, maxMinutes );\n\t\t\t}\n\t\t\tconst minutesToRead = Math.max(\n\t\t\t\t1,\n\t\t\t\tMath.round( totalWords / averageReadingSpeed )\n\t\t\t);\n\n\t\t\treturn sprintf(\n\t\t\t\t/* translators: %s: the number of minutes to read the post. */\n\t\t\t\t_n( '%s minute', '%s minutes', minutesToRead ),\n\t\t\t\tminutesToRead\n\t\t\t);\n\t\t}\n\n\t\t// Add \"word count\" part, if enabled.\n\t\tif ( displayMode === 'words' ) {\n\t\t\treturn wordCountType === 'words'\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t/* translators: %s: the number of words in the post. */\n\t\t\t\t\t\t_n( '%s word', '%s words', totalWords ),\n\t\t\t\t\t\ttotalWords.toLocaleString()\n\t\t\t\t )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: %s: the number of characters in the post. */\n\t\t\t\t\t\t_n( '%s character', '%s characters', totalWords ),\n\t\t\t\t\t\ttotalWords.toLocaleString()\n\t\t\t\t );\n\t\t}\n\t}, [\n\t\tcontentStructure,\n\t\tblocks,\n\t\tdisplayAsRange,\n\t\tdisplayMode,\n\t\taverageReadingSpeed,\n\t] );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t{ displayMode === 'time' && (\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<ToolsPanel\n\t\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdisplayAsRange: true,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t\t\t'Display as range',\n\t\t\t\t\t\t\t\t'Turns reading time range display on or off'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\thasValue={ () => ! displayAsRange }\n\t\t\t\t\t\t\tonDeselect={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tdisplayAsRange: true,\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<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Display as range' ) }\n\t\t\t\t\t\t\t\tchecked={ !! displayAsRange }\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tdisplayAsRange: ! displayAsRange,\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</ToolsPanelItem>\n\t\t\t\t\t</ToolsPanel>\n\t\t\t\t</InspectorControls>\n\t\t\t) }\n\t\t\t<div { ...blockProps }>{ displayString }</div>\n\t\t</>\n\t);\n}\n\nexport default PostTimeToReadEdit;\n"],"mappings":"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","ignoreList":[]}
@@ -20,13 +20,9 @@ const metadata = {
20
20
  type: "boolean",
21
21
  "default": true
22
22
  },
23
- showTimeToRead: {
24
- type: "boolean",
25
- "default": true
26
- },
27
- showWordCount: {
28
- type: "boolean",
29
- "default": false
23
+ displayMode: {
24
+ type: "string",
25
+ "default": "time"
30
26
  },
31
27
  averageReadingSpeed: {
32
28
  type: "number",
@@ -76,6 +72,7 @@ const metadata = {
76
72
  };
77
73
  import edit from './edit';
78
74
  import icon from './icon';
75
+ import variations from './variations';
79
76
  const {
80
77
  name
81
78
  } = metadata;
@@ -83,6 +80,7 @@ export { metadata, name };
83
80
  export const settings = {
84
81
  icon,
85
82
  edit,
83
+ variations,
86
84
  example: {}
87
85
  };
88
86
  export const init = () => initBlock({
@@ -1 +1 @@
1
- {"version":3,"names":["initBlock","metadata","$schema","apiVersion","__experimental","name","title","category","description","textdomain","usesContext","attributes","textAlign","type","displayAsRange","showTimeToRead","showWordCount","averageReadingSpeed","supports","color","gradients","__experimentalDefaultControls","background","text","html","spacing","margin","padding","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","interactivity","clientNavigation","__experimentalBorder","radius","width","style","edit","icon","settings","example","init"],"sources":["@wordpress/block-library/src/post-time-to-read/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport icon from './icon';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\texample: {},\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,cAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,UAAA;EAAAC,WAAA;EAAAC,UAAA;IAAAC,SAAA;MAAAC,IAAA;IAAA;IAAAC,cAAA;MAAAD,IAAA;MAAA;IAAA;IAAAE,cAAA;MAAAF,IAAA;MAAA;IAAA;IAAAG,aAAA;MAAAH,IAAA;MAAA;IAAA;IAAAI,mBAAA;MAAAJ,IAAA;MAAA;IAAA;EAAA;EAAAK,QAAA;IAAAC,KAAA;MAAAC,SAAA;MAAAC,6BAAA;QAAAC,UAAA;QAAAC,IAAA;MAAA;IAAA;IAAAC,IAAA;IAAAC,OAAA;MAAAC,MAAA;MAAAC,OAAA;MAAAN,6BAAA;QAAAK,MAAA;QAAAC,OAAA;MAAA;IAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,UAAA;MAAAC,wBAAA;MAAAC,wBAAA;MAAAC,uBAAA;MAAAC,2BAAA;MAAAC,4BAAA;MAAAC,2BAAA;MAAAf,6BAAA;QAAAQ,QAAA;MAAA;IAAA;IAAAQ,aAAA;MAAAC,gBAAA;IAAA;IAAAC,oBAAA;MAAAC,MAAA;MAAArB,KAAA;MAAAsB,KAAA;MAAAC,KAAA;IAAA;EAAA;AAAA;AAE5C,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,IAAI,MAAM,QAAQ;AAEzB,MAAM;EAAEvC;AAAK,CAAC,GAAGJ,QAAQ;AACzB,SAASA,QAAQ,EAAEI,IAAI;AAEvB,OAAO,MAAMwC,QAAQ,GAAG;EACvBD,IAAI;EACJD,IAAI;EACJG,OAAO,EAAE,CAAC;AACX,CAAC;AAED,OAAO,MAAMC,IAAI,GAAGA,CAAA,KAAM/C,SAAS,CAAE;EAAEK,IAAI;EAAEJ,QAAQ;EAAE4C;AAAS,CAAE,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["initBlock","metadata","$schema","apiVersion","__experimental","name","title","category","description","textdomain","usesContext","attributes","textAlign","type","displayAsRange","displayMode","averageReadingSpeed","supports","color","gradients","__experimentalDefaultControls","background","text","html","spacing","margin","padding","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","interactivity","clientNavigation","__experimentalBorder","radius","width","style","edit","icon","variations","settings","example","init"],"sources":["@wordpress/block-library/src/post-time-to-read/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport icon from './icon';\nimport variations from './variations';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tvariations,\n\texample: {},\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,cAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,UAAA;EAAAC,WAAA;EAAAC,UAAA;IAAAC,SAAA;MAAAC,IAAA;IAAA;IAAAC,cAAA;MAAAD,IAAA;MAAA;IAAA;IAAAE,WAAA;MAAAF,IAAA;MAAA;IAAA;IAAAG,mBAAA;MAAAH,IAAA;MAAA;IAAA;EAAA;EAAAI,QAAA;IAAAC,KAAA;MAAAC,SAAA;MAAAC,6BAAA;QAAAC,UAAA;QAAAC,IAAA;MAAA;IAAA;IAAAC,IAAA;IAAAC,OAAA;MAAAC,MAAA;MAAAC,OAAA;MAAAN,6BAAA;QAAAK,MAAA;QAAAC,OAAA;MAAA;IAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,UAAA;MAAAC,wBAAA;MAAAC,wBAAA;MAAAC,uBAAA;MAAAC,2BAAA;MAAAC,4BAAA;MAAAC,2BAAA;MAAAf,6BAAA;QAAAQ,QAAA;MAAA;IAAA;IAAAQ,aAAA;MAAAC,gBAAA;IAAA;IAAAC,oBAAA;MAAAC,MAAA;MAAArB,KAAA;MAAAsB,KAAA;MAAAC,KAAA;IAAA;EAAA;AAAA;AAE5C,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,UAAU,MAAM,cAAc;AAErC,MAAM;EAAEvC;AAAK,CAAC,GAAGJ,QAAQ;AACzB,SAASA,QAAQ,EAAEI,IAAI;AAEvB,OAAO,MAAMwC,QAAQ,GAAG;EACvBF,IAAI;EACJD,IAAI;EACJE,UAAU;EACVE,OAAO,EAAE,CAAC;AACX,CAAC;AAED,OAAO,MAAMC,IAAI,GAAGA,CAAA,KAAM/C,SAAS,CAAE;EAAEK,IAAI;EAAEJ,QAAQ;EAAE4C;AAAS,CAAE,CAAC","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import icon from './icon';
10
+ const variations = [{
11
+ name: 'time-to-read',
12
+ title: __('Time to Read'),
13
+ description: __('Show minutes required to finish reading the post.'),
14
+ attributes: {
15
+ displayMode: 'time'
16
+ },
17
+ scope: ['inserter', 'transform'],
18
+ isActive: blockAttributes => blockAttributes?.displayMode === 'time',
19
+ icon,
20
+ isDefault: true
21
+ }, {
22
+ name: 'word-count',
23
+ title: __('Word Count'),
24
+ description: __('Show the number of words in the post.'),
25
+ attributes: {
26
+ displayMode: 'words'
27
+ },
28
+ scope: ['inserter', 'transform'],
29
+ isActive: blockAttributes => blockAttributes?.displayMode === 'words',
30
+ icon
31
+ }];
32
+ export default variations;
33
+ //# sourceMappingURL=variations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","icon","variations","name","title","description","attributes","displayMode","scope","isActive","blockAttributes","isDefault"],"sources":["@wordpress/block-library/src/post-time-to-read/variations.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport icon from './icon';\n\nconst variations = [\n\t{\n\t\tname: 'time-to-read',\n\t\ttitle: __( 'Time to Read' ),\n\t\tdescription: __( 'Show minutes required to finish reading the post.' ),\n\t\tattributes: {\n\t\t\tdisplayMode: 'time',\n\t\t},\n\t\tscope: [ 'inserter', 'transform' ],\n\t\tisActive: ( blockAttributes ) =>\n\t\t\tblockAttributes?.displayMode === 'time',\n\t\ticon,\n\t\tisDefault: true,\n\t},\n\t{\n\t\tname: 'word-count',\n\t\ttitle: __( 'Word Count' ),\n\t\tdescription: __( 'Show the number of words in the post.' ),\n\t\tattributes: {\n\t\t\tdisplayMode: 'words',\n\t\t},\n\t\tscope: [ 'inserter', 'transform' ],\n\t\tisActive: ( blockAttributes ) =>\n\t\t\tblockAttributes?.displayMode === 'words',\n\t\ticon,\n\t},\n];\n\nexport default variations;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,OAAOC,IAAI,MAAM,QAAQ;AAEzB,MAAMC,UAAU,GAAG,CAClB;EACCC,IAAI,EAAE,cAAc;EACpBC,KAAK,EAAEJ,EAAE,CAAE,cAAe,CAAC;EAC3BK,WAAW,EAAEL,EAAE,CAAE,mDAAoD,CAAC;EACtEM,UAAU,EAAE;IACXC,WAAW,EAAE;EACd,CAAC;EACDC,KAAK,EAAE,CAAE,UAAU,EAAE,WAAW,CAAE;EAClCC,QAAQ,EAAIC,eAAe,IAC1BA,eAAe,EAAEH,WAAW,KAAK,MAAM;EACxCN,IAAI;EACJU,SAAS,EAAE;AACZ,CAAC,EACD;EACCR,IAAI,EAAE,YAAY;EAClBC,KAAK,EAAEJ,EAAE,CAAE,YAAa,CAAC;EACzBK,WAAW,EAAEL,EAAE,CAAE,uCAAwC,CAAC;EAC1DM,UAAU,EAAE;IACXC,WAAW,EAAE;EACd,CAAC;EACDC,KAAK,EAAE,CAAE,UAAU,EAAE,WAAW,CAAE;EAClCC,QAAQ,EAAIC,eAAe,IAC1BA,eAAe,EAAEH,WAAW,KAAK,OAAO;EACzCN;AACD,CAAC,CACD;AAED,eAAeC,UAAU","ignoreList":[]}
@@ -40,7 +40,7 @@ export default function QueryTitleEdit({
40
40
  postTypeLabel
41
41
  } = usePostTypeLabel(query?.postType);
42
42
  const dropdownMenuProps = useToolsPanelDropdownMenuProps();
43
- const TagName = `h${level}`;
43
+ const TagName = level === 0 ? 'p' : `h${level}`;
44
44
  const blockProps = useBlockProps({
45
45
  className: clsx('wp-block-query-title__placeholder', {
46
46
  [`has-text-align-${textAlign}`]: textAlign
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","AlignmentControl","BlockControls","InspectorControls","useBlockProps","Warning","HeadingLevelDropdown","ToggleControl","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__","_x","sprintf","useArchiveLabel","usePostTypeLabel","useToolsPanelDropdownMenuProps","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","SUPPORTED_TYPES","QueryTitleEdit","attributes","type","level","levelOptions","textAlign","showPrefix","showSearchTerm","setAttributes","context","query","archiveTypeLabel","archiveNameLabel","postTypeLabel","postType","dropdownMenuProps","TagName","blockProps","className","includes","children","titleElement","title","label","resetAll","hasValue","onDeselect","isShownByDefault","__nextHasNoMarginBottom","onChange","checked","group","value","options","newLevel","nextAlign"],"sources":["@wordpress/block-library/src/query-title/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n\tWarning,\n\tHeadingLevelDropdown,\n} from '@wordpress/block-editor';\nimport {\n\tToggleControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useArchiveLabel } from './use-archive-label';\nimport { usePostTypeLabel } from './use-post-type-label';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst SUPPORTED_TYPES = [ 'archive', 'search', 'post-type' ];\n\nexport default function QueryTitleEdit( {\n\tattributes: {\n\t\ttype,\n\t\tlevel,\n\t\tlevelOptions,\n\t\ttextAlign,\n\t\tshowPrefix,\n\t\tshowSearchTerm,\n\t},\n\tsetAttributes,\n\tcontext: { query },\n} ) {\n\tconst { archiveTypeLabel, archiveNameLabel } = useArchiveLabel();\n\tconst { postTypeLabel } = usePostTypeLabel( query?.postType );\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\tconst TagName = `h${ level }`;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx( 'wp-block-query-title__placeholder', {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\tif ( ! SUPPORTED_TYPES.includes( type ) ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Warning>{ __( 'Provided type is not supported.' ) }</Warning>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet titleElement;\n\tif ( type === 'archive' ) {\n\t\tlet title;\n\t\tif ( archiveTypeLabel ) {\n\t\t\tif ( showPrefix ) {\n\t\t\t\tif ( archiveNameLabel ) {\n\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t/* translators: 1: Archive type title e.g: \"Category\", 2: Label of the archive e.g: \"Shoes\" */\n\t\t\t\t\t\t_x( '%1$s: %2$s', 'archive label' ),\n\t\t\t\t\t\tarchiveTypeLabel,\n\t\t\t\t\t\tarchiveNameLabel\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t/* translators: %s: Archive type title e.g: \"Category\", \"Tag\"... */\n\t\t\t\t\t\t__( '%s: Name' ),\n\t\t\t\t\t\tarchiveTypeLabel\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else if ( archiveNameLabel ) {\n\t\t\t\ttitle = archiveNameLabel;\n\t\t\t} else {\n\t\t\t\ttitle = sprintf(\n\t\t\t\t\t/* translators: %s: Archive type title e.g: \"Category\", \"Tag\"... */\n\t\t\t\t\t__( '%s name' ),\n\t\t\t\t\tarchiveTypeLabel\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\ttitle = showPrefix\n\t\t\t\t? __( 'Archive type: Name' )\n\t\t\t\t: __( 'Archive title' );\n\t\t}\n\n\t\ttitleElement = (\n\t\t\t<>\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<ToolsPanel\n\t\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\t\tresetAll={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowPrefix: true,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\thasValue={ () => ! showPrefix }\n\t\t\t\t\t\t\tlabel={ __( 'Show archive type in title' ) }\n\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { showPrefix: true } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Show archive type in title' ) }\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tshowPrefix: ! showPrefix,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ showPrefix }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t</ToolsPanel>\n\t\t\t\t</InspectorControls>\n\t\t\t\t<TagName { ...blockProps }>{ title }</TagName>\n\t\t\t</>\n\t\t);\n\t}\n\n\tif ( type === 'search' ) {\n\t\ttitleElement = (\n\t\t\t<>\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<ToolsPanel\n\t\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\t\tresetAll={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowSearchTerm: true,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\thasValue={ () => ! showSearchTerm }\n\t\t\t\t\t\t\tlabel={ __( 'Show search term in title' ) }\n\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { showSearchTerm: true } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Show search term in title' ) }\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tshowSearchTerm: ! showSearchTerm,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ showSearchTerm }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t</ToolsPanel>\n\t\t\t\t</InspectorControls>\n\n\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t{ showSearchTerm\n\t\t\t\t\t\t? __( 'Search results for: “search term”' )\n\t\t\t\t\t\t: __( 'Search results' ) }\n\t\t\t\t</TagName>\n\t\t\t</>\n\t\t);\n\t}\n\n\tif ( type === 'post-type' ) {\n\t\tlet title;\n\t\tif ( postTypeLabel ) {\n\t\t\tif ( showPrefix ) {\n\t\t\t\ttitle = sprintf(\n\t\t\t\t\t/* translators: %s: Singular post type name of the queried object */\n\t\t\t\t\t__( 'Post Type: \"%s\"' ),\n\t\t\t\t\tpostTypeLabel\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\ttitle = postTypeLabel;\n\t\t\t}\n\t\t} else {\n\t\t\ttitle = showPrefix ? __( 'Post Type: Name' ) : __( 'Name' );\n\t\t}\n\n\t\ttitleElement = (\n\t\t\t<>\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<ToolsPanel\n\t\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\t\tresetAll={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowPrefix: true,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\thasValue={ () => ! showPrefix }\n\t\t\t\t\t\t\tlabel={ __( 'Show post type label' ) }\n\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { showPrefix: true } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Show post type label' ) }\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tshowPrefix: ! showPrefix,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ showPrefix }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t</ToolsPanel>\n\t\t\t\t</InspectorControls>\n\t\t\t\t<TagName { ...blockProps }>{ title }</TagName>\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<HeadingLevelDropdown\n\t\t\t\t\tvalue={ level }\n\t\t\t\t\toptions={ levelOptions }\n\t\t\t\t\tonChange={ ( newLevel ) =>\n\t\t\t\t\t\tsetAttributes( { level: newLevel } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t{ titleElement }\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","AlignmentControl","BlockControls","InspectorControls","useBlockProps","Warning","HeadingLevelDropdown","ToggleControl","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__","_x","sprintf","useArchiveLabel","usePostTypeLabel","useToolsPanelDropdownMenuProps","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","SUPPORTED_TYPES","QueryTitleEdit","attributes","type","level","levelOptions","textAlign","showPrefix","showSearchTerm","setAttributes","context","query","archiveTypeLabel","archiveNameLabel","postTypeLabel","postType","dropdownMenuProps","TagName","blockProps","className","includes","children","titleElement","title","label","resetAll","hasValue","onDeselect","isShownByDefault","__nextHasNoMarginBottom","onChange","checked","group","value","options","newLevel","nextAlign"],"sources":["@wordpress/block-library/src/query-title/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n\tWarning,\n\tHeadingLevelDropdown,\n} from '@wordpress/block-editor';\nimport {\n\tToggleControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useArchiveLabel } from './use-archive-label';\nimport { usePostTypeLabel } from './use-post-type-label';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst SUPPORTED_TYPES = [ 'archive', 'search', 'post-type' ];\n\nexport default function QueryTitleEdit( {\n\tattributes: {\n\t\ttype,\n\t\tlevel,\n\t\tlevelOptions,\n\t\ttextAlign,\n\t\tshowPrefix,\n\t\tshowSearchTerm,\n\t},\n\tsetAttributes,\n\tcontext: { query },\n} ) {\n\tconst { archiveTypeLabel, archiveNameLabel } = useArchiveLabel();\n\tconst { postTypeLabel } = usePostTypeLabel( query?.postType );\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\tconst TagName = level === 0 ? 'p' : `h${ level }`;\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx( 'wp-block-query-title__placeholder', {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\tif ( ! SUPPORTED_TYPES.includes( type ) ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Warning>{ __( 'Provided type is not supported.' ) }</Warning>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet titleElement;\n\tif ( type === 'archive' ) {\n\t\tlet title;\n\t\tif ( archiveTypeLabel ) {\n\t\t\tif ( showPrefix ) {\n\t\t\t\tif ( archiveNameLabel ) {\n\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t/* translators: 1: Archive type title e.g: \"Category\", 2: Label of the archive e.g: \"Shoes\" */\n\t\t\t\t\t\t_x( '%1$s: %2$s', 'archive label' ),\n\t\t\t\t\t\tarchiveTypeLabel,\n\t\t\t\t\t\tarchiveNameLabel\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t/* translators: %s: Archive type title e.g: \"Category\", \"Tag\"... */\n\t\t\t\t\t\t__( '%s: Name' ),\n\t\t\t\t\t\tarchiveTypeLabel\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else if ( archiveNameLabel ) {\n\t\t\t\ttitle = archiveNameLabel;\n\t\t\t} else {\n\t\t\t\ttitle = sprintf(\n\t\t\t\t\t/* translators: %s: Archive type title e.g: \"Category\", \"Tag\"... */\n\t\t\t\t\t__( '%s name' ),\n\t\t\t\t\tarchiveTypeLabel\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\ttitle = showPrefix\n\t\t\t\t? __( 'Archive type: Name' )\n\t\t\t\t: __( 'Archive title' );\n\t\t}\n\n\t\ttitleElement = (\n\t\t\t<>\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<ToolsPanel\n\t\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\t\tresetAll={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowPrefix: true,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\thasValue={ () => ! showPrefix }\n\t\t\t\t\t\t\tlabel={ __( 'Show archive type in title' ) }\n\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { showPrefix: true } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Show archive type in title' ) }\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tshowPrefix: ! showPrefix,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ showPrefix }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t</ToolsPanel>\n\t\t\t\t</InspectorControls>\n\t\t\t\t<TagName { ...blockProps }>{ title }</TagName>\n\t\t\t</>\n\t\t);\n\t}\n\n\tif ( type === 'search' ) {\n\t\ttitleElement = (\n\t\t\t<>\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<ToolsPanel\n\t\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\t\tresetAll={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowSearchTerm: true,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\thasValue={ () => ! showSearchTerm }\n\t\t\t\t\t\t\tlabel={ __( 'Show search term in title' ) }\n\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { showSearchTerm: true } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Show search term in title' ) }\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tshowSearchTerm: ! showSearchTerm,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ showSearchTerm }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t</ToolsPanel>\n\t\t\t\t</InspectorControls>\n\n\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t{ showSearchTerm\n\t\t\t\t\t\t? __( 'Search results for: “search term”' )\n\t\t\t\t\t\t: __( 'Search results' ) }\n\t\t\t\t</TagName>\n\t\t\t</>\n\t\t);\n\t}\n\n\tif ( type === 'post-type' ) {\n\t\tlet title;\n\t\tif ( postTypeLabel ) {\n\t\t\tif ( showPrefix ) {\n\t\t\t\ttitle = sprintf(\n\t\t\t\t\t/* translators: %s: Singular post type name of the queried object */\n\t\t\t\t\t__( 'Post Type: \"%s\"' ),\n\t\t\t\t\tpostTypeLabel\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\ttitle = postTypeLabel;\n\t\t\t}\n\t\t} else {\n\t\t\ttitle = showPrefix ? __( 'Post Type: Name' ) : __( 'Name' );\n\t\t}\n\n\t\ttitleElement = (\n\t\t\t<>\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<ToolsPanel\n\t\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\t\tresetAll={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowPrefix: true,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\thasValue={ () => ! showPrefix }\n\t\t\t\t\t\t\tlabel={ __( 'Show post type label' ) }\n\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { showPrefix: true } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Show post type label' ) }\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tshowPrefix: ! showPrefix,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ showPrefix }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t</ToolsPanel>\n\t\t\t\t</InspectorControls>\n\t\t\t\t<TagName { ...blockProps }>{ title }</TagName>\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<HeadingLevelDropdown\n\t\t\t\t\tvalue={ level }\n\t\t\t\t\toptions={ levelOptions }\n\t\t\t\t\tonChange={ ( newLevel ) =>\n\t\t\t\t\t\tsetAttributes( { level: newLevel } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t{ titleElement }\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -43,6 +43,7 @@ const metadata = {
43
43
  html: false,
44
44
  reusable: false,
45
45
  renaming: false,
46
+ blockVisibility: false,
46
47
  interactivity: {
47
48
  clientNavigation: true
48
49
  }
@@ -1 +1 @@
1
- {"version":3,"names":["capitalCase","store","coreDataStore","select","symbolFilled","addFilter","decodeEntities","initBlock","metadata","$schema","apiVersion","name","title","category","description","textdomain","attributes","slug","type","theme","tagName","area","supports","align","html","reusable","renaming","interactivity","clientNavigation","editorStyle","edit","enhanceTemplatePartVariations","settings","icon","__experimentalLabel","getCurrentTheme","getEditedEntityRecord","entity","stylesheet","init","DISALLOWED_PARENTS","canInsert","blockType","rootClientId","getBlock","getBlockParentsByBlockName","disallowedParentType","hasDisallowedParent","length"],"sources":["@wordpress/block-library/src/template-part/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { capitalCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { select } from '@wordpress/data';\nimport { symbolFilled } from '@wordpress/icons';\nimport { addFilter } from '@wordpress/hooks';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport { enhanceTemplatePartVariations } from './variations';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon: symbolFilled,\n\t__experimentalLabel: ( { slug, theme } ) => {\n\t\t// Attempt to find entity title if block is a template part.\n\t\t// Require slug to request, otherwise entity is uncreated and will throw 404.\n\t\tif ( ! slug ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { getCurrentTheme, getEditedEntityRecord } =\n\t\t\tselect( coreDataStore );\n\t\tconst entity = getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template_part',\n\t\t\t( theme || getCurrentTheme()?.stylesheet ) + '//' + slug\n\t\t);\n\t\tif ( ! entity ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn (\n\t\t\tdecodeEntities( entity.title ) || capitalCase( entity.slug || '' )\n\t\t);\n\t},\n\tedit,\n};\n\nexport const init = () => {\n\taddFilter(\n\t\t'blocks.registerBlockType',\n\t\t'core/template-part',\n\t\tenhanceTemplatePartVariations\n\t);\n\n\t// Prevent adding template parts inside post templates.\n\tconst DISALLOWED_PARENTS = [ 'core/post-template', 'core/post-content' ];\n\taddFilter(\n\t\t'blockEditor.__unstableCanInsertBlockType',\n\t\t'core/block-library/removeTemplatePartsFromPostTemplates',\n\t\t(\n\t\t\tcanInsert,\n\t\t\tblockType,\n\t\t\trootClientId,\n\t\t\t{ getBlock, getBlockParentsByBlockName }\n\t\t) => {\n\t\t\tif ( blockType.name !== 'core/template-part' ) {\n\t\t\t\treturn canInsert;\n\t\t\t}\n\n\t\t\tfor ( const disallowedParentType of DISALLOWED_PARENTS ) {\n\t\t\t\tconst hasDisallowedParent =\n\t\t\t\t\tgetBlock( rootClientId )?.name === disallowedParentType ||\n\t\t\t\t\tgetBlockParentsByBlockName(\n\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\tdisallowedParentType\n\t\t\t\t\t).length;\n\t\t\t\tif ( hasDisallowedParent ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t);\n\n\treturn initBlock( { name, metadata, settings } );\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,QAAQ,aAAa;;AAEzC;AACA;AACA;AACA,SAASC,KAAK,IAAIC,aAAa,QAAQ,sBAAsB;AAC7D,SAASC,MAAM,QAAQ,iBAAiB;AACxC,SAASC,YAAY,QAAQ,kBAAkB;AAC/C,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,cAAc,QAAQ,0BAA0B;;AAEzD;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,IAAA;MAAAC,IAAA;IAAA;IAAAC,KAAA;MAAAD,IAAA;IAAA;IAAAE,OAAA;MAAAF,IAAA;IAAA;IAAAG,IAAA;MAAAH,IAAA;IAAA;EAAA;EAAAI,QAAA;IAAAC,KAAA;IAAAC,IAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,aAAA;MAAAC,gBAAA;IAAA;EAAA;EAAAC,WAAA;AAAA;AAE5C,OAAOC,IAAI,MAAM,QAAQ;AACzB,SAASC,6BAA6B,QAAQ,cAAc;AAE5D,MAAM;EAAEpB;AAAK,CAAC,GAAGH,QAAQ;AACzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMqB,QAAQ,GAAG;EACvBC,IAAI,EAAE7B,YAAY;EAClB8B,mBAAmB,EAAEA,CAAE;IAAEjB,IAAI;IAAEE;EAAM,CAAC,KAAM;IAC3C;IACA;IACA,IAAK,CAAEF,IAAI,EAAG;MACb;IACD;IAEA,MAAM;MAAEkB,eAAe;MAAEC;IAAsB,CAAC,GAC/CjC,MAAM,CAAED,aAAc,CAAC;IACxB,MAAMmC,MAAM,GAAGD,qBAAqB,CACnC,UAAU,EACV,kBAAkB,EAClB,CAAEjB,KAAK,IAAIgB,eAAe,CAAC,CAAC,EAAEG,UAAU,IAAK,IAAI,GAAGrB,IACrD,CAAC;IACD,IAAK,CAAEoB,MAAM,EAAG;MACf;IACD;IAEA,OACC/B,cAAc,CAAE+B,MAAM,CAACzB,KAAM,CAAC,IAAIZ,WAAW,CAAEqC,MAAM,CAACpB,IAAI,IAAI,EAAG,CAAC;EAEpE,CAAC;EACDa;AACD,CAAC;AAED,OAAO,MAAMS,IAAI,GAAGA,CAAA,KAAM;EACzBlC,SAAS,CACR,0BAA0B,EAC1B,oBAAoB,EACpB0B,6BACD,CAAC;;EAED;EACA,MAAMS,kBAAkB,GAAG,CAAE,oBAAoB,EAAE,mBAAmB,CAAE;EACxEnC,SAAS,CACR,0CAA0C,EAC1C,yDAAyD,EACzD,CACCoC,SAAS,EACTC,SAAS,EACTC,YAAY,EACZ;IAAEC,QAAQ;IAAEC;EAA2B,CAAC,KACpC;IACJ,IAAKH,SAAS,CAAC/B,IAAI,KAAK,oBAAoB,EAAG;MAC9C,OAAO8B,SAAS;IACjB;IAEA,KAAM,MAAMK,oBAAoB,IAAIN,kBAAkB,EAAG;MACxD,MAAMO,mBAAmB,GACxBH,QAAQ,CAAED,YAAa,CAAC,EAAEhC,IAAI,KAAKmC,oBAAoB,IACvDD,0BAA0B,CACzBF,YAAY,EACZG,oBACD,CAAC,CAACE,MAAM;MACT,IAAKD,mBAAmB,EAAG;QAC1B,OAAO,KAAK;MACb;IACD;IACA,OAAO,IAAI;EACZ,CACD,CAAC;EAED,OAAOxC,SAAS,CAAE;IAAEI,IAAI;IAAEH,QAAQ;IAAEwB;EAAS,CAAE,CAAC;AACjD,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["capitalCase","store","coreDataStore","select","symbolFilled","addFilter","decodeEntities","initBlock","metadata","$schema","apiVersion","name","title","category","description","textdomain","attributes","slug","type","theme","tagName","area","supports","align","html","reusable","renaming","blockVisibility","interactivity","clientNavigation","editorStyle","edit","enhanceTemplatePartVariations","settings","icon","__experimentalLabel","getCurrentTheme","getEditedEntityRecord","entity","stylesheet","init","DISALLOWED_PARENTS","canInsert","blockType","rootClientId","getBlock","getBlockParentsByBlockName","disallowedParentType","hasDisallowedParent","length"],"sources":["@wordpress/block-library/src/template-part/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { capitalCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { select } from '@wordpress/data';\nimport { symbolFilled } from '@wordpress/icons';\nimport { addFilter } from '@wordpress/hooks';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport { enhanceTemplatePartVariations } from './variations';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon: symbolFilled,\n\t__experimentalLabel: ( { slug, theme } ) => {\n\t\t// Attempt to find entity title if block is a template part.\n\t\t// Require slug to request, otherwise entity is uncreated and will throw 404.\n\t\tif ( ! slug ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { getCurrentTheme, getEditedEntityRecord } =\n\t\t\tselect( coreDataStore );\n\t\tconst entity = getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template_part',\n\t\t\t( theme || getCurrentTheme()?.stylesheet ) + '//' + slug\n\t\t);\n\t\tif ( ! entity ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn (\n\t\t\tdecodeEntities( entity.title ) || capitalCase( entity.slug || '' )\n\t\t);\n\t},\n\tedit,\n};\n\nexport const init = () => {\n\taddFilter(\n\t\t'blocks.registerBlockType',\n\t\t'core/template-part',\n\t\tenhanceTemplatePartVariations\n\t);\n\n\t// Prevent adding template parts inside post templates.\n\tconst DISALLOWED_PARENTS = [ 'core/post-template', 'core/post-content' ];\n\taddFilter(\n\t\t'blockEditor.__unstableCanInsertBlockType',\n\t\t'core/block-library/removeTemplatePartsFromPostTemplates',\n\t\t(\n\t\t\tcanInsert,\n\t\t\tblockType,\n\t\t\trootClientId,\n\t\t\t{ getBlock, getBlockParentsByBlockName }\n\t\t) => {\n\t\t\tif ( blockType.name !== 'core/template-part' ) {\n\t\t\t\treturn canInsert;\n\t\t\t}\n\n\t\t\tfor ( const disallowedParentType of DISALLOWED_PARENTS ) {\n\t\t\t\tconst hasDisallowedParent =\n\t\t\t\t\tgetBlock( rootClientId )?.name === disallowedParentType ||\n\t\t\t\t\tgetBlockParentsByBlockName(\n\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\tdisallowedParentType\n\t\t\t\t\t).length;\n\t\t\t\tif ( hasDisallowedParent ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t);\n\n\treturn initBlock( { name, metadata, settings } );\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,QAAQ,aAAa;;AAEzC;AACA;AACA;AACA,SAASC,KAAK,IAAIC,aAAa,QAAQ,sBAAsB;AAC7D,SAASC,MAAM,QAAQ,iBAAiB;AACxC,SAASC,YAAY,QAAQ,kBAAkB;AAC/C,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,cAAc,QAAQ,0BAA0B;;AAEzD;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,IAAA;MAAAC,IAAA;IAAA;IAAAC,KAAA;MAAAD,IAAA;IAAA;IAAAE,OAAA;MAAAF,IAAA;IAAA;IAAAG,IAAA;MAAAH,IAAA;IAAA;EAAA;EAAAI,QAAA;IAAAC,KAAA;IAAAC,IAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,eAAA;IAAAC,aAAA;MAAAC,gBAAA;IAAA;EAAA;EAAAC,WAAA;AAAA;AAE5C,OAAOC,IAAI,MAAM,QAAQ;AACzB,SAASC,6BAA6B,QAAQ,cAAc;AAE5D,MAAM;EAAErB;AAAK,CAAC,GAAGH,QAAQ;AACzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMsB,QAAQ,GAAG;EACvBC,IAAI,EAAE9B,YAAY;EAClB+B,mBAAmB,EAAEA,CAAE;IAAElB,IAAI;IAAEE;EAAM,CAAC,KAAM;IAC3C;IACA;IACA,IAAK,CAAEF,IAAI,EAAG;MACb;IACD;IAEA,MAAM;MAAEmB,eAAe;MAAEC;IAAsB,CAAC,GAC/ClC,MAAM,CAAED,aAAc,CAAC;IACxB,MAAMoC,MAAM,GAAGD,qBAAqB,CACnC,UAAU,EACV,kBAAkB,EAClB,CAAElB,KAAK,IAAIiB,eAAe,CAAC,CAAC,EAAEG,UAAU,IAAK,IAAI,GAAGtB,IACrD,CAAC;IACD,IAAK,CAAEqB,MAAM,EAAG;MACf;IACD;IAEA,OACChC,cAAc,CAAEgC,MAAM,CAAC1B,KAAM,CAAC,IAAIZ,WAAW,CAAEsC,MAAM,CAACrB,IAAI,IAAI,EAAG,CAAC;EAEpE,CAAC;EACDc;AACD,CAAC;AAED,OAAO,MAAMS,IAAI,GAAGA,CAAA,KAAM;EACzBnC,SAAS,CACR,0BAA0B,EAC1B,oBAAoB,EACpB2B,6BACD,CAAC;;EAED;EACA,MAAMS,kBAAkB,GAAG,CAAE,oBAAoB,EAAE,mBAAmB,CAAE;EACxEpC,SAAS,CACR,0CAA0C,EAC1C,yDAAyD,EACzD,CACCqC,SAAS,EACTC,SAAS,EACTC,YAAY,EACZ;IAAEC,QAAQ;IAAEC;EAA2B,CAAC,KACpC;IACJ,IAAKH,SAAS,CAAChC,IAAI,KAAK,oBAAoB,EAAG;MAC9C,OAAO+B,SAAS;IACjB;IAEA,KAAM,MAAMK,oBAAoB,IAAIN,kBAAkB,EAAG;MACxD,MAAMO,mBAAmB,GACxBH,QAAQ,CAAED,YAAa,CAAC,EAAEjC,IAAI,KAAKoC,oBAAoB,IACvDD,0BAA0B,CACzBF,YAAY,EACZG,oBACD,CAAC,CAACE,MAAM;MACT,IAAKD,mBAAmB,EAAG;QAC1B,OAAO,KAAK;MACb;IACD;IACA,OAAO,IAAI;EACZ,CACD,CAAC;EAED,OAAOzC,SAAS,CAAE;IAAEI,IAAI;IAAEH,QAAQ;IAAEyB;EAAS,CAAE,CAAC;AACjD,CAAC","ignoreList":[]}
@@ -31,6 +31,13 @@ export function getTransformedMetadata(metadata, newBlockName, bindingsCallback)
31
31
  if (supports.renaming !== false) {
32
32
  transformSupportedProps.push('name');
33
33
  }
34
+ // If it supports block visibility (true by default), add the `blockVisibility` property.
35
+ if (supports.blockVisibility !== false) {
36
+ transformSupportedProps.push('blockVisibility');
37
+ }
38
+ if (window?.__experimentalEnableBlockComment) {
39
+ transformSupportedProps.push('commentId');
40
+ }
34
41
 
35
42
  // Return early if no supported properties.
36
43
  if (!transformSupportedProps.length) {