@wordpress/block-library 9.31.0 → 9.31.1-next.233ccab9b.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 (231) hide show
  1. package/build/accordion/edit.js +6 -5
  2. package/build/accordion/edit.js.map +1 -1
  3. package/build/accordion/index.js +39 -4
  4. package/build/accordion/index.js.map +1 -1
  5. package/build/accordion/save.js +2 -19
  6. package/build/accordion/save.js.map +1 -1
  7. package/build/accordion/view.js +50 -16
  8. package/build/accordion/view.js.map +1 -1
  9. package/build/accordion-content/index.js +17 -3
  10. package/build/accordion-content/index.js.map +1 -1
  11. package/build/accordion-content/save.js +5 -7
  12. package/build/accordion-content/save.js.map +1 -1
  13. package/build/accordion-header/edit.js +13 -47
  14. package/build/accordion-header/edit.js.map +1 -1
  15. package/build/accordion-header/index.js +6 -11
  16. package/build/accordion-header/index.js.map +1 -1
  17. package/build/accordion-header/save.js +11 -44
  18. package/build/accordion-header/save.js.map +1 -1
  19. package/build/accordion-panel/edit.js +2 -1
  20. package/build/accordion-panel/edit.js.map +1 -1
  21. package/build/accordion-panel/index.js +3 -3
  22. package/build/accordion-panel/index.js.map +1 -1
  23. package/build/accordion-panel/save.js +3 -1
  24. package/build/accordion-panel/save.js.map +1 -1
  25. package/build/avatar/hooks.js +7 -17
  26. package/build/avatar/hooks.js.map +1 -1
  27. package/build/group/variations.js +3 -4
  28. package/build/group/variations.js.map +1 -1
  29. package/build/navigation/edit/leaf-more-menu.js +6 -1
  30. package/build/navigation/edit/leaf-more-menu.js.map +1 -1
  31. package/build/navigation/index.js +2 -1
  32. package/build/navigation/index.js.map +1 -1
  33. package/build/navigation-link/index.js +2 -1
  34. package/build/navigation-link/index.js.map +1 -1
  35. package/build/navigation-submenu/edit.js +2 -4
  36. package/build/navigation-submenu/edit.js.map +1 -1
  37. package/build/navigation-submenu/index.js +2 -1
  38. package/build/navigation-submenu/index.js.map +1 -1
  39. package/build/page-list/index.js +2 -1
  40. package/build/page-list/index.js.map +1 -1
  41. package/build/post-author/edit.js +7 -6
  42. package/build/post-author/edit.js.map +1 -1
  43. package/build/post-date/edit.js +16 -3
  44. package/build/post-date/edit.js.map +1 -1
  45. package/build/post-time-to-read/edit.js +111 -11
  46. package/build/post-time-to-read/edit.js.map +1 -1
  47. package/build/post-time-to-read/index.js +17 -1
  48. package/build/post-time-to-read/index.js.map +1 -1
  49. package/build/table-of-contents/index.js +1 -0
  50. package/build/table-of-contents/index.js.map +1 -1
  51. package/build/term-description/edit.js +18 -2
  52. package/build/term-description/edit.js.map +1 -1
  53. package/build/term-description/index.js +1 -0
  54. package/build/term-description/index.js.map +1 -1
  55. package/build/term-description/use-term-description.js +85 -0
  56. package/build/term-description/use-term-description.js.map +1 -0
  57. package/build/term-template/edit.js +11 -7
  58. package/build/term-template/edit.js.map +1 -1
  59. package/build/term-template/index.js +1 -1
  60. package/build/terms-query/index.js +8 -2
  61. package/build/terms-query/index.js.map +1 -1
  62. package/build/terms-query/inspector-controls/advanced-controls.js +51 -0
  63. package/build/terms-query/inspector-controls/advanced-controls.js.map +1 -0
  64. package/build/terms-query/inspector-controls/display-options.js +87 -0
  65. package/build/terms-query/inspector-controls/display-options.js.map +1 -0
  66. package/build/terms-query/inspector-controls/empty-terms-control.js +38 -0
  67. package/build/terms-query/inspector-controls/empty-terms-control.js.map +1 -0
  68. package/build/terms-query/inspector-controls/hierarchy-control.js +40 -0
  69. package/build/terms-query/inspector-controls/hierarchy-control.js.map +1 -0
  70. package/build/terms-query/inspector-controls/index.js +127 -0
  71. package/build/terms-query/inspector-controls/index.js.map +1 -0
  72. package/build/terms-query/inspector-controls/max-terms-control.js +50 -0
  73. package/build/terms-query/inspector-controls/max-terms-control.js.map +1 -0
  74. package/build/terms-query/inspector-controls/ordering-controls.js +57 -0
  75. package/build/terms-query/inspector-controls/ordering-controls.js.map +1 -0
  76. package/build/terms-query/inspector-controls/taxonomy-control.js +52 -0
  77. package/build/terms-query/inspector-controls/taxonomy-control.js.map +1 -0
  78. package/build/utils/hooks.js +15 -0
  79. package/build/utils/hooks.js.map +1 -1
  80. package/build-module/accordion/edit.js +6 -5
  81. package/build-module/accordion/edit.js.map +1 -1
  82. package/build-module/accordion/index.js +40 -4
  83. package/build-module/accordion/index.js.map +1 -1
  84. package/build-module/accordion/save.js +2 -17
  85. package/build-module/accordion/save.js.map +1 -1
  86. package/build-module/accordion/view.js +51 -17
  87. package/build-module/accordion/view.js.map +1 -1
  88. package/build-module/accordion-content/index.js +17 -3
  89. package/build-module/accordion-content/index.js.map +1 -1
  90. package/build-module/accordion-content/save.js +5 -7
  91. package/build-module/accordion-content/save.js.map +1 -1
  92. package/build-module/accordion-header/edit.js +14 -45
  93. package/build-module/accordion-header/edit.js.map +1 -1
  94. package/build-module/accordion-header/index.js +6 -11
  95. package/build-module/accordion-header/index.js.map +1 -1
  96. package/build-module/accordion-header/save.js +12 -42
  97. package/build-module/accordion-header/save.js.map +1 -1
  98. package/build-module/accordion-panel/edit.js +2 -1
  99. package/build-module/accordion-panel/edit.js.map +1 -1
  100. package/build-module/accordion-panel/index.js +3 -3
  101. package/build-module/accordion-panel/index.js.map +1 -1
  102. package/build-module/accordion-panel/save.js +3 -1
  103. package/build-module/accordion-panel/save.js.map +1 -1
  104. package/build-module/avatar/hooks.js +5 -15
  105. package/build-module/avatar/hooks.js.map +1 -1
  106. package/build-module/group/variations.js +3 -4
  107. package/build-module/group/variations.js.map +1 -1
  108. package/build-module/navigation/edit/leaf-more-menu.js +6 -1
  109. package/build-module/navigation/edit/leaf-more-menu.js.map +1 -1
  110. package/build-module/navigation/index.js +2 -1
  111. package/build-module/navigation/index.js.map +1 -1
  112. package/build-module/navigation-link/index.js +2 -1
  113. package/build-module/navigation-link/index.js.map +1 -1
  114. package/build-module/navigation-submenu/edit.js +1 -3
  115. package/build-module/navigation-submenu/edit.js.map +1 -1
  116. package/build-module/navigation-submenu/index.js +2 -1
  117. package/build-module/navigation-submenu/index.js.map +1 -1
  118. package/build-module/page-list/index.js +2 -1
  119. package/build-module/page-list/index.js.map +1 -1
  120. package/build-module/post-author/edit.js +8 -7
  121. package/build-module/post-author/edit.js.map +1 -1
  122. package/build-module/post-date/edit.js +17 -4
  123. package/build-module/post-date/edit.js.map +1 -1
  124. package/build-module/post-time-to-read/edit.js +112 -14
  125. package/build-module/post-time-to-read/edit.js.map +1 -1
  126. package/build-module/post-time-to-read/index.js +17 -1
  127. package/build-module/post-time-to-read/index.js.map +1 -1
  128. package/build-module/table-of-contents/index.js +1 -0
  129. package/build-module/table-of-contents/index.js.map +1 -1
  130. package/build-module/term-description/edit.js +18 -2
  131. package/build-module/term-description/edit.js.map +1 -1
  132. package/build-module/term-description/index.js +1 -0
  133. package/build-module/term-description/index.js.map +1 -1
  134. package/build-module/term-description/use-term-description.js +79 -0
  135. package/build-module/term-description/use-term-description.js.map +1 -0
  136. package/build-module/term-template/edit.js +11 -7
  137. package/build-module/term-template/edit.js.map +1 -1
  138. package/build-module/term-template/index.js +1 -1
  139. package/build-module/terms-query/index.js +8 -2
  140. package/build-module/terms-query/index.js.map +1 -1
  141. package/build-module/terms-query/inspector-controls/advanced-controls.js +44 -0
  142. package/build-module/terms-query/inspector-controls/advanced-controls.js.map +1 -0
  143. package/build-module/terms-query/inspector-controls/display-options.js +80 -0
  144. package/build-module/terms-query/inspector-controls/display-options.js.map +1 -0
  145. package/build-module/terms-query/inspector-controls/empty-terms-control.js +31 -0
  146. package/build-module/terms-query/inspector-controls/empty-terms-control.js.map +1 -0
  147. package/build-module/terms-query/inspector-controls/hierarchy-control.js +33 -0
  148. package/build-module/terms-query/inspector-controls/hierarchy-control.js.map +1 -0
  149. package/build-module/terms-query/inspector-controls/index.js +119 -0
  150. package/build-module/terms-query/inspector-controls/index.js.map +1 -0
  151. package/build-module/terms-query/inspector-controls/max-terms-control.js +43 -0
  152. package/build-module/terms-query/inspector-controls/max-terms-control.js.map +1 -0
  153. package/build-module/terms-query/inspector-controls/ordering-controls.js +50 -0
  154. package/build-module/terms-query/inspector-controls/ordering-controls.js.map +1 -0
  155. package/build-module/terms-query/inspector-controls/taxonomy-control.js +45 -0
  156. package/build-module/terms-query/inspector-controls/taxonomy-control.js.map +1 -0
  157. package/build-module/utils/hooks.js +14 -0
  158. package/build-module/utils/hooks.js.map +1 -1
  159. package/build-style/accordion-content/style-rtl.css +155 -0
  160. package/build-style/accordion-content/style.css +155 -0
  161. package/build-style/{accordion → accordion-header}/style-rtl.css +12 -51
  162. package/build-style/{accordion → accordion-header}/style.css +12 -51
  163. package/build-style/accordion-panel/style-rtl.css +140 -0
  164. package/build-style/accordion-panel/style.css +140 -0
  165. package/build-style/style-rtl.css +25 -38
  166. package/build-style/style.css +25 -38
  167. package/package.json +35 -35
  168. package/src/accordion/block.json +16 -3
  169. package/src/accordion/edit.js +39 -34
  170. package/src/accordion/index.js +35 -1
  171. package/src/accordion/index.php +3 -19
  172. package/src/accordion/save.js +2 -16
  173. package/src/accordion/view.js +64 -15
  174. package/src/accordion-content/block.json +17 -3
  175. package/src/accordion-content/index.php +3 -2
  176. package/src/accordion-content/save.js +4 -10
  177. package/src/accordion-content/style.scss +21 -0
  178. package/src/accordion-header/block.json +6 -11
  179. package/src/accordion-header/edit.js +17 -61
  180. package/src/accordion-header/save.js +24 -54
  181. package/src/accordion-header/style.scss +39 -0
  182. package/src/accordion-panel/block.json +3 -3
  183. package/src/accordion-panel/edit.js +1 -0
  184. package/src/accordion-panel/save.js +3 -1
  185. package/src/accordion-panel/style.scss +8 -0
  186. package/src/avatar/hooks.js +5 -10
  187. package/src/comments/index.php +2 -2
  188. package/src/group/variations.js +3 -14
  189. package/src/navigation/block.json +2 -1
  190. package/src/navigation/edit/leaf-more-menu.js +9 -1
  191. package/src/navigation/index.php +2 -2
  192. package/src/navigation-link/block.json +2 -1
  193. package/src/navigation-submenu/block.json +2 -1
  194. package/src/navigation-submenu/edit.js +1 -4
  195. package/src/page-list/block.json +2 -1
  196. package/src/post-author/edit.js +16 -7
  197. package/src/post-date/edit.js +16 -16
  198. package/src/post-time-to-read/block.json +17 -1
  199. package/src/post-time-to-read/edit.js +167 -20
  200. package/src/post-time-to-read/index.php +47 -15
  201. package/src/social-link/index.php +2 -2
  202. package/src/style.scss +3 -1
  203. package/src/table-of-contents/block.json +1 -0
  204. package/src/table-of-contents/index.php +44 -0
  205. package/src/term-description/block.json +1 -0
  206. package/src/term-description/edit.js +18 -3
  207. package/src/term-description/use-term-description.js +109 -0
  208. package/src/term-template/block.json +1 -1
  209. package/src/term-template/edit.js +11 -6
  210. package/src/term-template/index.php +13 -7
  211. package/src/terms-query/block.json +8 -2
  212. package/src/terms-query/inspector-controls/advanced-controls.js +37 -0
  213. package/src/terms-query/inspector-controls/display-options.js +87 -0
  214. package/src/terms-query/inspector-controls/empty-terms-control.js +30 -0
  215. package/src/terms-query/inspector-controls/hierarchy-control.js +30 -0
  216. package/src/terms-query/inspector-controls/index.js +137 -0
  217. package/src/terms-query/inspector-controls/max-terms-control.js +44 -0
  218. package/src/terms-query/inspector-controls/ordering-controls.js +55 -0
  219. package/src/terms-query/inspector-controls/taxonomy-control.js +41 -0
  220. package/src/utils/hooks.js +9 -0
  221. package/build/accordion-content/icons.js +0 -30
  222. package/build/accordion-content/icons.js.map +0 -1
  223. package/build/terms-query/inspector-controls.js +0 -231
  224. package/build/terms-query/inspector-controls.js.map +0 -1
  225. package/build-module/accordion-content/icons.js +0 -22
  226. package/build-module/accordion-content/icons.js.map +0 -1
  227. package/build-module/terms-query/inspector-controls.js +0 -224
  228. package/build-module/terms-query/inspector-controls.js.map +0 -1
  229. package/src/accordion/style.scss +0 -82
  230. package/src/accordion-content/icons.js +0 -23
  231. package/src/terms-query/inspector-controls.js +0 -239
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","useEntityProp","store","coreStore","useEffect","useMemo","useState","dateI18n","humanTimeDiff","getSettings","getDateSettings","AlignmentControl","BlockControls","InspectorControls","blockEditorStore","useBlockProps","useBlockEditingMode","__experimentalDateFormatPicker","DateFormatPicker","__experimentalPublishDateTimePicker","PublishDateTimePicker","Dropdown","ToolbarGroup","ToolbarButton","ToggleControl","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__","_x","sprintf","edit","DOWN","useSelect","useDispatch","useToolsPanelDropdownMenuProps","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","PostDateEdit","attributes","datetime","textAlign","format","isLink","metadata","context","postType","postTypeSlug","queryId","setAttributes","displayType","bindings","source","args","key","blockProps","className","dropdownMenuProps","popoverAnchor","setPopoverAnchor","popoverProps","anchor","__unstableMarkNextChangeAsNotPersistent","undefined","Date","isDescendentOfQueryLoop","Number","isFinite","dateSettings","siteFormat","formats","date","siteTimeFormat","time","select","getPostType","blockEditingMode","postDate","dateTime","ref","children","href","onClick","event","preventDefault","group","value","onChange","nextAlign","renderContent","onClose","title","currentDate","newDatetime","is12Hour","is12HourFormat","dateOrder","renderToggle","isOpen","onToggle","openOnArrowDown","keyCode","icon","onKeyDown","label","resetAll","hasValue","onDeselect","isShownByDefault","defaultFormat","nextFormat","labels","singular_name","toLowerCase","__nextHasNoMarginBottom","checked","test"],"sources":["@wordpress/block-library/src/post-date/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport { useEffect, useMemo, useState } from '@wordpress/element';\nimport {\n\tdateI18n,\n\thumanTimeDiff,\n\tgetSettings as getDateSettings,\n} from '@wordpress/date';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tstore as blockEditorStore,\n\tuseBlockProps,\n\tuseBlockEditingMode,\n\t__experimentalDateFormatPicker as DateFormatPicker,\n\t__experimentalPublishDateTimePicker as PublishDateTimePicker,\n} from '@wordpress/block-editor';\nimport {\n\tDropdown,\n\tToolbarGroup,\n\tToolbarButton,\n\tToggleControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { edit } from '@wordpress/icons';\nimport { DOWN } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nexport default function PostDateEdit( {\n\tattributes: { datetime, textAlign, format, isLink, metadata },\n\tcontext: { postType: postTypeSlug, queryId },\n\tsetAttributes,\n} ) {\n\tconst displayType =\n\t\tmetadata?.bindings?.datetime?.source === 'core/post-data' &&\n\t\tmetadata?.bindings?.datetime?.args?.key;\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\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\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( { anchor: popoverAnchor } ),\n\t\t[ popoverAnchor ]\n\t);\n\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\t// We need to set the datetime to a default value upon first loading\n\t// to discern the block from its legacy version (which would default\n\t// to the containing post's publish date).\n\tuseEffect( () => {\n\t\tif ( datetime === undefined ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { datetime: new Date() } );\n\t\t}\n\t}, [ datetime ] );\n\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst dateSettings = getDateSettings();\n\tconst [ siteFormat = dateSettings.formats.date ] = useEntityProp(\n\t\t'root',\n\t\t'site',\n\t\t'date_format'\n\t);\n\tconst [ siteTimeFormat = dateSettings.formats.time ] = useEntityProp(\n\t\t'root',\n\t\t'site',\n\t\t'time_format'\n\t);\n\n\tconst postType = useSelect(\n\t\t( select ) =>\n\t\t\tpostTypeSlug\n\t\t\t\t? select( coreStore ).getPostType( postTypeSlug )\n\t\t\t\t: null,\n\t\t[ postTypeSlug ]\n\t);\n\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tlet postDate = (\n\t\t<time dateTime={ dateI18n( 'c', datetime ) } ref={ setPopoverAnchor }>\n\t\t\t{ format === 'human-diff'\n\t\t\t\t? humanTimeDiff( datetime )\n\t\t\t\t: dateI18n( format || siteFormat, datetime ) }\n\t\t</time>\n\t);\n\n\tif ( isLink && datetime ) {\n\t\tpostDate = (\n\t\t\t<a\n\t\t\t\thref=\"#post-date-pseudo-link\"\n\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t>\n\t\t\t\t{ postDate }\n\t\t\t</a>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ ( blockEditingMode === 'default' ||\n\t\t\t\t! isDescendentOfQueryLoop ) && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<AlignmentControl\n\t\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\n\t\t\t\t\t{ displayType !== 'modified' &&\n\t\t\t\t\t\t! isDescendentOfQueryLoop && (\n\t\t\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t\t\t\t\t<PublishDateTimePicker\n\t\t\t\t\t\t\t\t\t\t\ttitle={\n\t\t\t\t\t\t\t\t\t\t\t\tdisplayType === 'date'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? __( 'Publish Date' )\n\t\t\t\t\t\t\t\t\t\t\t\t\t: __( 'Date' )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tcurrentDate={ datetime }\n\t\t\t\t\t\t\t\t\t\t\tonChange={ ( newDatetime ) =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdatetime: newDatetime,\n\t\t\t\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tis12Hour={ is12HourFormat(\n\t\t\t\t\t\t\t\t\t\t\t\tsiteTimeFormat\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t\t\t\tdateOrder={\n\t\t\t\t\t\t\t\t\t\t\t\t/* translators: Order of day, month, and year. Available formats are 'dmy', 'mdy', and 'ymd'. */\n\t\t\t\t\t\t\t\t\t\t\t\t_x( 'dmy', 'date order' )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => {\n\t\t\t\t\t\t\t\t\t\tconst openOnArrowDown = ( event ) => {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t! isOpen &&\n\t\t\t\t\t\t\t\t\t\t\t\tevent.keyCode === DOWN\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\tonToggle();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ edit }\n\t\t\t\t\t\t\t\t\t\t\t\ttitle={ __( 'Change Date' ) }\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown={ openOnArrowDown }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t\t) }\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\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\tdatetime: undefined,\n\t\t\t\t\t\t\tformat: undefined,\n\t\t\t\t\t\t\tisLink: 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\thasValue={ () => !! format }\n\t\t\t\t\t\tlabel={ __( 'Date Format' ) }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { format: undefined } )\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<DateFormatPicker\n\t\t\t\t\t\t\tformat={ format }\n\t\t\t\t\t\t\tdefaultFormat={ siteFormat }\n\t\t\t\t\t\t\tonChange={ ( nextFormat ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { format: nextFormat } )\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<ToolsPanelItem\n\t\t\t\t\t\thasValue={ () => isLink !== false }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tpostType?.labels.singular_name\n\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"post\".\n\t\t\t\t\t\t\t\t\t\t__( 'Link to %s' ),\n\t\t\t\t\t\t\t\t\t\tpostType.labels.singular_name.toLowerCase()\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: __( 'Link to post' )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonDeselect={ () => setAttributes( { isLink: false } ) }\n\t\t\t\t\t\tisShownByDefault\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={\n\t\t\t\t\t\t\t\tpostType?.labels.singular_name\n\t\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"post\".\n\t\t\t\t\t\t\t\t\t\t\t__( 'Link to %s' ),\n\t\t\t\t\t\t\t\t\t\t\tpostType.labels.singular_name.toLowerCase()\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: __( 'Link to post' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { isLink: ! isLink } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchecked={ isLink }\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\n\t\t\t<div { ...blockProps }>{ postDate }</div>\n\t\t</>\n\t);\n}\n\nexport function is12HourFormat( format ) {\n\t// To know if the time format is a 12 hour time, look for any of the 12 hour\n\t// format characters: 'a', 'A', 'g', and 'h'. The character must be\n\t// unescaped, i.e. not preceded by a '\\'. Coincidentally, 'aAgh' is how I\n\t// feel when working with regular expressions.\n\t// https://www.php.net/manual/en/datetime.format.php\n\treturn /(?:^|[^\\\\])[aAgh]/.test( format );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","store","coreStore","useEffect","useMemo","useState","dateI18n","humanTimeDiff","getSettings","getDateSettings","AlignmentControl","BlockControls","InspectorControls","blockEditorStore","useBlockProps","useBlockEditingMode","__experimentalDateFormatPicker","DateFormatPicker","__experimentalPublishDateTimePicker","PublishDateTimePicker","Dropdown","ToolbarGroup","ToolbarButton","ToggleControl","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__","_x","sprintf","edit","DOWN","useSelect","useDispatch","useToolsPanelDropdownMenuProps","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","PostDateEdit","attributes","datetime","textAlign","format","isLink","metadata","context","postType","postTypeSlug","queryId","setAttributes","displayType","bindings","source","args","key","blockProps","className","dropdownMenuProps","popoverAnchor","setPopoverAnchor","popoverProps","anchor","__unstableMarkNextChangeAsNotPersistent","undefined","Date","isDescendentOfQueryLoop","Number","isFinite","dateSettings","siteFormat","formats","date","siteTimeFormat","time","select","getPostType","getEntityRecord","siteSettings","date_format","time_format","blockEditingMode","postDate","dateTime","ref","children","href","onClick","event","preventDefault","group","value","onChange","nextAlign","renderContent","onClose","title","currentDate","newDatetime","is12Hour","is12HourFormat","dateOrder","renderToggle","isOpen","onToggle","openOnArrowDown","keyCode","icon","onKeyDown","label","resetAll","hasValue","onDeselect","isShownByDefault","defaultFormat","nextFormat","labels","singular_name","toLowerCase","__nextHasNoMarginBottom","checked","test"],"sources":["@wordpress/block-library/src/post-date/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useEffect, useMemo, useState } from '@wordpress/element';\nimport {\n\tdateI18n,\n\thumanTimeDiff,\n\tgetSettings as getDateSettings,\n} from '@wordpress/date';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tstore as blockEditorStore,\n\tuseBlockProps,\n\tuseBlockEditingMode,\n\t__experimentalDateFormatPicker as DateFormatPicker,\n\t__experimentalPublishDateTimePicker as PublishDateTimePicker,\n} from '@wordpress/block-editor';\nimport {\n\tDropdown,\n\tToolbarGroup,\n\tToolbarButton,\n\tToggleControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { edit } from '@wordpress/icons';\nimport { DOWN } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nexport default function PostDateEdit( {\n\tattributes: { datetime, textAlign, format, isLink, metadata },\n\tcontext: { postType: postTypeSlug, queryId },\n\tsetAttributes,\n} ) {\n\tconst displayType =\n\t\tmetadata?.bindings?.datetime?.source === 'core/post-data' &&\n\t\tmetadata?.bindings?.datetime?.args?.key;\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\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\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( { anchor: popoverAnchor } ),\n\t\t[ popoverAnchor ]\n\t);\n\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\t// We need to set the datetime to a default value upon first loading\n\t// to discern the block from its legacy version (which would default\n\t// to the containing post's publish date).\n\tuseEffect( () => {\n\t\tif ( datetime === undefined ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { datetime: new Date() } );\n\t\t}\n\t}, [ datetime ] );\n\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst dateSettings = getDateSettings();\n\n\tconst {\n\t\tpostType,\n\t\tsiteFormat = dateSettings.formats.date,\n\t\tsiteTimeFormat = dateSettings.formats.time,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getPostType, getEntityRecord } = select( coreStore );\n\t\t\tconst siteSettings = getEntityRecord( 'root', 'site' );\n\n\t\t\treturn {\n\t\t\t\tsiteFormat: siteSettings?.date_format,\n\t\t\t\tsiteTimeFormat: siteSettings?.time_format,\n\t\t\t\tpostType: postTypeSlug ? getPostType( postTypeSlug ) : null,\n\t\t\t};\n\t\t},\n\t\t[ postTypeSlug ]\n\t);\n\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tlet postDate = (\n\t\t<time dateTime={ dateI18n( 'c', datetime ) } ref={ setPopoverAnchor }>\n\t\t\t{ format === 'human-diff'\n\t\t\t\t? humanTimeDiff( datetime )\n\t\t\t\t: dateI18n( format || siteFormat, datetime ) }\n\t\t</time>\n\t);\n\n\tif ( isLink && datetime ) {\n\t\tpostDate = (\n\t\t\t<a\n\t\t\t\thref=\"#post-date-pseudo-link\"\n\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t>\n\t\t\t\t{ postDate }\n\t\t\t</a>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ ( blockEditingMode === 'default' ||\n\t\t\t\t! isDescendentOfQueryLoop ) && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<AlignmentControl\n\t\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\n\t\t\t\t\t{ displayType !== 'modified' &&\n\t\t\t\t\t\t! isDescendentOfQueryLoop && (\n\t\t\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t\t\t\t\t<PublishDateTimePicker\n\t\t\t\t\t\t\t\t\t\t\ttitle={\n\t\t\t\t\t\t\t\t\t\t\t\tdisplayType === 'date'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? __( 'Publish Date' )\n\t\t\t\t\t\t\t\t\t\t\t\t\t: __( 'Date' )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tcurrentDate={ datetime }\n\t\t\t\t\t\t\t\t\t\t\tonChange={ ( newDatetime ) =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdatetime: newDatetime,\n\t\t\t\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tis12Hour={ is12HourFormat(\n\t\t\t\t\t\t\t\t\t\t\t\tsiteTimeFormat\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t\t\t\tdateOrder={\n\t\t\t\t\t\t\t\t\t\t\t\t/* translators: Order of day, month, and year. Available formats are 'dmy', 'mdy', and 'ymd'. */\n\t\t\t\t\t\t\t\t\t\t\t\t_x( 'dmy', 'date order' )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => {\n\t\t\t\t\t\t\t\t\t\tconst openOnArrowDown = ( event ) => {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t! isOpen &&\n\t\t\t\t\t\t\t\t\t\t\t\tevent.keyCode === DOWN\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\tonToggle();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ edit }\n\t\t\t\t\t\t\t\t\t\t\t\ttitle={ __( 'Change Date' ) }\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown={ openOnArrowDown }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t\t) }\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\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\tdatetime: undefined,\n\t\t\t\t\t\t\tformat: undefined,\n\t\t\t\t\t\t\tisLink: 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\thasValue={ () => !! format }\n\t\t\t\t\t\tlabel={ __( 'Date Format' ) }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { format: undefined } )\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<DateFormatPicker\n\t\t\t\t\t\t\tformat={ format }\n\t\t\t\t\t\t\tdefaultFormat={ siteFormat }\n\t\t\t\t\t\t\tonChange={ ( nextFormat ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { format: nextFormat } )\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<ToolsPanelItem\n\t\t\t\t\t\thasValue={ () => isLink !== false }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tpostType?.labels.singular_name\n\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"post\".\n\t\t\t\t\t\t\t\t\t\t__( 'Link to %s' ),\n\t\t\t\t\t\t\t\t\t\tpostType.labels.singular_name.toLowerCase()\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: __( 'Link to post' )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonDeselect={ () => setAttributes( { isLink: false } ) }\n\t\t\t\t\t\tisShownByDefault\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={\n\t\t\t\t\t\t\t\tpostType?.labels.singular_name\n\t\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"post\".\n\t\t\t\t\t\t\t\t\t\t\t__( 'Link to %s' ),\n\t\t\t\t\t\t\t\t\t\t\tpostType.labels.singular_name.toLowerCase()\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: __( 'Link to post' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { isLink: ! isLink } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchecked={ isLink }\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\n\t\t\t<div { ...blockProps }>{ postDate }</div>\n\t\t</>\n\t);\n}\n\nexport function is12HourFormat( format ) {\n\t// To know if the time format is a 12 hour time, look for any of the 12 hour\n\t// format characters: 'a', 'A', 'g', and 'h'. The character must be\n\t// unescaped, i.e. not preceded by a '\\'. Coincidentally, 'aAgh' is how I\n\t// feel when working with regular expressions.\n\t// https://www.php.net/manual/en/datetime.format.php\n\treturn /(?:^|[^\\\\])[aAgh]/.test( format );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -6,37 +6,41 @@ import clsx from 'clsx';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { _x, _n, sprintf } from '@wordpress/i18n';
9
+ import { __, _x, _n, sprintf } from '@wordpress/i18n';
10
10
  import { useMemo } from '@wordpress/element';
11
- import { AlignmentControl, BlockControls, useBlockProps } from '@wordpress/block-editor';
11
+ import { AlignmentControl, BlockControls, InspectorControls, useBlockProps } from '@wordpress/block-editor';
12
+ import { ToggleControl, __experimentalToolsPanel as ToolsPanel, __experimentalToolsPanelItem as ToolsPanelItem } from '@wordpress/components';
12
13
  import { __unstableSerializeAndClean } from '@wordpress/blocks';
13
14
  import { useEntityProp, useEntityBlockEditor } from '@wordpress/core-data';
14
15
  import { count as wordCount } from '@wordpress/wordcount';
15
16
 
16
17
  /**
17
- * Average reading rate - based on average taken from
18
- * https://irisreading.com/average-reading-speed-in-various-languages/
19
- * (Characters/minute used for Chinese rather than words).
18
+ * Internal dependencies
20
19
  */
21
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
22
- const AVERAGE_READING_RATE = 189;
20
+ import { useToolsPanelDropdownMenuProps } from '../utils/hooks';
21
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
23
22
  function PostTimeToReadEdit({
24
23
  attributes,
25
24
  setAttributes,
26
25
  context
27
26
  }) {
28
27
  const {
29
- textAlign
28
+ textAlign,
29
+ displayAsRange,
30
+ showTimeToRead,
31
+ showWordCount,
32
+ averageReadingSpeed
30
33
  } = attributes;
31
34
  const {
32
35
  postId,
33
36
  postType
34
37
  } = context;
38
+ const dropdownMenuProps = useToolsPanelDropdownMenuProps();
35
39
  const [contentStructure] = useEntityProp('postType', postType, 'content', postId);
36
40
  const [blocks] = useEntityBlockEditor('postType', postType, {
37
41
  id: postId
38
42
  });
39
- const minutesToReadString = useMemo(() => {
43
+ const displayString = useMemo(() => {
40
44
  // Replicates the logic found in getEditedPostContent().
41
45
  let content;
42
46
  if (contentStructure instanceof Function) {
@@ -58,10 +62,42 @@ function PostTimeToReadEdit({
58
62
  * Do not translate into your own language.
59
63
  */
60
64
  const wordCountType = _x('words', 'Word count type. Do not translate!');
61
- const minutesToRead = Math.max(1, Math.round(wordCount(content || '', wordCountType) / AVERAGE_READING_RATE));
62
- return sprintf(/* translators: %s: the number of minutes to read the post. */
63
- _n('%s minute', '%s minutes', minutesToRead), minutesToRead);
64
- }, [contentStructure, blocks]);
65
+ const totalWords = wordCount(content || '', wordCountType);
66
+ const parts = [];
67
+
68
+ // Add "time to read" part, if enabled.
69
+ if (showTimeToRead) {
70
+ let timeString;
71
+ if (displayAsRange) {
72
+ let maxMinutes = Math.max(1, Math.round(totalWords / averageReadingSpeed * 1.2));
73
+ const minMinutes = Math.max(1, Math.round(totalWords / averageReadingSpeed * 0.8));
74
+ if (minMinutes === maxMinutes) {
75
+ maxMinutes = maxMinutes + 1;
76
+ }
77
+ // translators: %1$s: minimum minutes, %2$s: maximum minutes to read the post.
78
+ 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);
84
+ }
85
+ parts.push(timeString);
86
+ }
87
+
88
+ // 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);
93
+ }
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]);
65
101
  const blockProps = useBlockProps({
66
102
  className: clsx({
67
103
  [`has-text-align-${textAlign}`]: textAlign
@@ -78,9 +114,71 @@ function PostTimeToReadEdit({
78
114
  });
79
115
  }
80
116
  })
117
+ }), /*#__PURE__*/_jsx(InspectorControls, {
118
+ children: /*#__PURE__*/_jsxs(ToolsPanel, {
119
+ label: __('Settings'),
120
+ resetAll: () => {
121
+ setAttributes({
122
+ displayAsRange: true,
123
+ showTimeToRead: true,
124
+ showWordCount: false
125
+ });
126
+ },
127
+ 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, {
145
+ isShownByDefault: true,
146
+ label: _x('Display as range', 'Turns reading time range display on or off'),
147
+ hasValue: () => !displayAsRange,
148
+ onDeselect: () => {
149
+ setAttributes({
150
+ displayAsRange: true
151
+ });
152
+ },
153
+ children: /*#__PURE__*/_jsx(ToggleControl, {
154
+ __nextHasNoMarginBottom: true,
155
+ label: __('Display as range'),
156
+ checked: !!displayAsRange,
157
+ onChange: () => setAttributes({
158
+ displayAsRange: !displayAsRange
159
+ })
160
+ })
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
+ })]
178
+ })
81
179
  }), /*#__PURE__*/_jsx("div", {
82
180
  ...blockProps,
83
- children: minutesToReadString
181
+ children: displayString
84
182
  })]
85
183
  });
86
184
  }
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","_x","_n","sprintf","useMemo","AlignmentControl","BlockControls","useBlockProps","__unstableSerializeAndClean","useEntityProp","useEntityBlockEditor","count","wordCount","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","AVERAGE_READING_RATE","PostTimeToReadEdit","attributes","setAttributes","context","textAlign","postId","postType","contentStructure","blocks","id","minutesToReadString","content","Function","wordCountType","minutesToRead","Math","max","round","blockProps","className","children","group","value","onChange","nextAlign"],"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\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { __unstableSerializeAndClean } from '@wordpress/blocks';\nimport { useEntityProp, useEntityBlockEditor } from '@wordpress/core-data';\nimport { count as wordCount } from '@wordpress/wordcount';\n\n/**\n * Average reading rate - based on average taken from\n * https://irisreading.com/average-reading-speed-in-various-languages/\n * (Characters/minute used for Chinese rather than words).\n */\nconst AVERAGE_READING_RATE = 189;\n\nfunction PostTimeToReadEdit( { attributes, setAttributes, context } ) {\n\tconst { textAlign } = attributes;\n\tconst { postId, postType } = context;\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 minutesToReadString = 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 minutesToRead = Math.max(\n\t\t\t1,\n\t\t\tMath.round(\n\t\t\t\twordCount( content || '', wordCountType ) / AVERAGE_READING_RATE\n\t\t\t)\n\t\t);\n\n\t\treturn sprintf(\n\t\t\t/* translators: %s: the number of minutes to read the post. */\n\t\t\t_n( '%s minute', '%s minutes', minutesToRead ),\n\t\t\tminutesToRead\n\t\t);\n\t}, [ contentStructure, blocks ] );\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<div { ...blockProps }>{ minutesToReadString }</div>\n\t\t</>\n\t);\n}\n\nexport default PostTimeToReadEdit;\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,EAAE,EAAEC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AACjD,SAASC,OAAO,QAAQ,oBAAoB;AAC5C,SACCC,gBAAgB,EAChBC,aAAa,EACbC,aAAa,QACP,yBAAyB;AAChC,SAASC,2BAA2B,QAAQ,mBAAmB;AAC/D,SAASC,aAAa,EAAEC,oBAAoB,QAAQ,sBAAsB;AAC1E,SAASC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;;AAEzD;AACA;AACA;AACA;AACA;AAJA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAKA,MAAMC,oBAAoB,GAAG,GAAG;AAEhC,SAASC,kBAAkBA,CAAE;EAAEC,UAAU;EAAEC,aAAa;EAAEC;AAAQ,CAAC,EAAG;EACrE,MAAM;IAAEC;EAAU,CAAC,GAAGH,UAAU;EAChC,MAAM;IAAEI,MAAM;IAAEC;EAAS,CAAC,GAAGH,OAAO;EAEpC,MAAM,CAAEI,gBAAgB,CAAE,GAAGlB,aAAa,CACzC,UAAU,EACViB,QAAQ,EACR,SAAS,EACTD,MACD,CAAC;EAED,MAAM,CAAEG,MAAM,CAAE,GAAGlB,oBAAoB,CAAE,UAAU,EAAEgB,QAAQ,EAAE;IAC9DG,EAAE,EAAEJ;EACL,CAAE,CAAC;EAEH,MAAMK,mBAAmB,GAAG1B,OAAO,CAAE,MAAM;IAC1C;IACA,IAAI2B,OAAO;IACX,IAAKJ,gBAAgB,YAAYK,QAAQ,EAAG;MAC3CD,OAAO,GAAGJ,gBAAgB,CAAE;QAAEC;MAAO,CAAE,CAAC;IACzC,CAAC,MAAM,IAAKA,MAAM,EAAG;MACpB;MACA;MACA;MACAG,OAAO,GAAGvB,2BAA2B,CAAEoB,MAAO,CAAC;IAChD,CAAC,MAAM;MACNG,OAAO,GAAGJ,gBAAgB;IAC3B;;IAEA;AACF;AACA;AACA;AACA;IACE,MAAMM,aAAa,GAAGhC,EAAE,CACvB,OAAO,EACP,oCACD,CAAC;IAED,MAAMiC,aAAa,GAAGC,IAAI,CAACC,GAAG,CAC7B,CAAC,EACDD,IAAI,CAACE,KAAK,CACTzB,SAAS,CAAEmB,OAAO,IAAI,EAAE,EAAEE,aAAc,CAAC,GAAGd,oBAC7C,CACD,CAAC;IAED,OAAOhB,OAAO,CACb;IACAD,EAAE,CAAE,WAAW,EAAE,YAAY,EAAEgC,aAAc,CAAC,EAC9CA,aACD,CAAC;EACF,CAAC,EAAE,CAAEP,gBAAgB,EAAEC,MAAM,CAAG,CAAC;EAEjC,MAAMU,UAAU,GAAG/B,aAAa,CAAE;IACjCgC,SAAS,EAAEvC,IAAI,CAAE;MAChB,CAAE,kBAAmBwB,SAAS,EAAG,GAAIA;IACtC,CAAE;EACH,CAAE,CAAC;EAEH,oBACCN,KAAA,CAAAF,SAAA;IAAAwB,QAAA,gBACC1B,IAAA,CAACR,aAAa;MAACmC,KAAK,EAAC,OAAO;MAAAD,QAAA,eAC3B1B,IAAA,CAACT,gBAAgB;QAChBqC,KAAK,EAAGlB,SAAW;QACnBmB,QAAQ,EAAKC,SAAS,IAAM;UAC3BtB,aAAa,CAAE;YAAEE,SAAS,EAAEoB;UAAU,CAAE,CAAC;QAC1C;MAAG,CACH;IAAC,CACY,CAAC,eAChB9B,IAAA;MAAA,GAAUwB,UAAU;MAAAE,QAAA,EAAKV;IAAmB,CAAO,CAAC;EAAA,CACnD,CAAC;AAEL;AAEA,eAAeV,kBAAkB","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","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":[]}
@@ -9,12 +9,28 @@ const metadata = {
9
9
  name: "core/post-time-to-read",
10
10
  title: "Time to Read",
11
11
  category: "theme",
12
- description: "Show minutes required to finish reading the post.",
12
+ description: "Show minutes required to finish reading the post. Can also show a word count.",
13
13
  textdomain: "default",
14
14
  usesContext: ["postId", "postType"],
15
15
  attributes: {
16
16
  textAlign: {
17
17
  type: "string"
18
+ },
19
+ displayAsRange: {
20
+ type: "boolean",
21
+ "default": true
22
+ },
23
+ showTimeToRead: {
24
+ type: "boolean",
25
+ "default": true
26
+ },
27
+ showWordCount: {
28
+ type: "boolean",
29
+ "default": false
30
+ },
31
+ averageReadingSpeed: {
32
+ type: "number",
33
+ "default": 189
18
34
  }
19
35
  },
20
36
  supports: {
@@ -1 +1 @@
1
- {"version":3,"names":["initBlock","metadata","$schema","apiVersion","__experimental","name","title","category","description","textdomain","usesContext","attributes","textAlign","type","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;EAAA;EAAAC,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;EAAEnC;AAAK,CAAC,GAAGJ,QAAQ;AACzB,SAASA,QAAQ,EAAEI,IAAI;AAEvB,OAAO,MAAMoC,QAAQ,GAAG;EACvBD,IAAI;EACJD,IAAI;EACJG,OAAO,EAAE,CAAC;AACX,CAAC;AAED,OAAO,MAAMC,IAAI,GAAGA,CAAA,KAAM3C,SAAS,CAAE;EAAEK,IAAI;EAAEJ,QAAQ;EAAEwC;AAAS,CAAE,CAAC","ignoreList":[]}
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":[]}
@@ -39,6 +39,7 @@ const metadata = {
39
39
  }
40
40
  },
41
41
  supports: {
42
+ ariaLabel: true,
42
43
  html: false,
43
44
  color: {
44
45
  text: true,
@@ -1 +1 @@
1
- {"version":3,"names":["__","tableOfContents","icon","initBlock","metadata","$schema","apiVersion","__experimental","name","title","category","description","keywords","textdomain","attributes","headings","type","items","onlyIncludeCurrentPage","maxLevel","ordered","supports","html","color","text","background","gradients","link","spacing","margin","padding","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","__experimentalDefaultControls","interactivity","clientNavigation","__experimentalBorder","radius","width","style","edit","save","settings","example","innerBlocks","level","content","init"],"sources":["@wordpress/block-library/src/table-of-contents/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { tableOfContents as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport save from './save';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n\texample: {\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/heading',\n\t\t\t\tattributes: {\n\t\t\t\t\tlevel: 2,\n\t\t\t\t\tcontent: __( 'Heading' ),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/heading',\n\t\t\t\tattributes: {\n\t\t\t\t\tlevel: 3,\n\t\t\t\t\tcontent: __( 'Subheading' ),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/heading',\n\t\t\t\tattributes: {\n\t\t\t\t\tlevel: 2,\n\t\t\t\t\tcontent: __( 'Heading' ),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/heading',\n\t\t\t\tattributes: {\n\t\t\t\t\tlevel: 3,\n\t\t\t\t\tcontent: __( 'Subheading' ),\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tattributes: {\n\t\t\theadings: [\n\t\t\t\t{\n\t\t\t\t\tcontent: __( 'Heading' ),\n\t\t\t\t\tlevel: 2,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcontent: __( 'Subheading' ),\n\t\t\t\t\tlevel: 3,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcontent: __( 'Heading' ),\n\t\t\t\t\tlevel: 2,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcontent: __( 'Subheading' ),\n\t\t\t\t\tlevel: 3,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,eAAe,IAAIC,IAAI,QAAQ,kBAAkB;;AAE1D;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,cAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,QAAA;MAAAC,IAAA;MAAAC,KAAA;QAAAD,IAAA;MAAA;MAAA;IAAA;IAAAE,sBAAA;MAAAF,IAAA;MAAA;IAAA;IAAAG,QAAA;MAAAH,IAAA;IAAA;IAAAI,OAAA;MAAAJ,IAAA;MAAA;IAAA;EAAA;EAAAK,QAAA;IAAAC,IAAA;IAAAC,KAAA;MAAAC,IAAA;MAAAC,UAAA;MAAAC,SAAA;MAAAC,IAAA;IAAA;IAAAC,OAAA;MAAAC,MAAA;MAAAC,OAAA;IAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,UAAA;MAAAC,wBAAA;MAAAC,wBAAA;MAAAC,uBAAA;MAAAC,2BAAA;MAAAC,4BAAA;MAAAC,2BAAA;MAAAC,6BAAA;QAAAR,QAAA;MAAA;IAAA;IAAAS,aAAA;MAAAC,gBAAA;IAAA;IAAAC,oBAAA;MAAAC,MAAA;MAAArB,KAAA;MAAAsB,KAAA;MAAAC,KAAA;MAAAN,6BAAA;QAAAI,MAAA;QAAArB,KAAA;QAAAsB,KAAA;QAAAC,KAAA;MAAA;IAAA;EAAA;EAAAA,KAAA;AAAA;AAE5C,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,IAAI,MAAM,QAAQ;AAEzB,MAAM;EAAExC;AAAK,CAAC,GAAGJ,QAAQ;AAEzB,SAASA,QAAQ,EAAEI,IAAI;AAEvB,OAAO,MAAMyC,QAAQ,GAAG;EACvB/C,IAAI;EACJ6C,IAAI;EACJC,IAAI;EACJE,OAAO,EAAE;IACRC,WAAW,EAAE,CACZ;MACC3C,IAAI,EAAE,cAAc;MACpBM,UAAU,EAAE;QACXsC,KAAK,EAAE,CAAC;QACRC,OAAO,EAAErD,EAAE,CAAE,SAAU;MACxB;IACD,CAAC,EACD;MACCQ,IAAI,EAAE,cAAc;MACpBM,UAAU,EAAE;QACXsC,KAAK,EAAE,CAAC;QACRC,OAAO,EAAErD,EAAE,CAAE,YAAa;MAC3B;IACD,CAAC,EACD;MACCQ,IAAI,EAAE,cAAc;MACpBM,UAAU,EAAE;QACXsC,KAAK,EAAE,CAAC;QACRC,OAAO,EAAErD,EAAE,CAAE,SAAU;MACxB;IACD,CAAC,EACD;MACCQ,IAAI,EAAE,cAAc;MACpBM,UAAU,EAAE;QACXsC,KAAK,EAAE,CAAC;QACRC,OAAO,EAAErD,EAAE,CAAE,YAAa;MAC3B;IACD,CAAC,CACD;IACDc,UAAU,EAAE;MACXC,QAAQ,EAAE,CACT;QACCsC,OAAO,EAAErD,EAAE,CAAE,SAAU,CAAC;QACxBoD,KAAK,EAAE;MACR,CAAC,EACD;QACCC,OAAO,EAAErD,EAAE,CAAE,YAAa,CAAC;QAC3BoD,KAAK,EAAE;MACR,CAAC,EACD;QACCC,OAAO,EAAErD,EAAE,CAAE,SAAU,CAAC;QACxBoD,KAAK,EAAE;MACR,CAAC,EACD;QACCC,OAAO,EAAErD,EAAE,CAAE,YAAa,CAAC;QAC3BoD,KAAK,EAAE;MACR,CAAC;IAEH;EACD;AACD,CAAC;AAED,OAAO,MAAME,IAAI,GAAGA,CAAA,KAAMnD,SAAS,CAAE;EAAEK,IAAI;EAAEJ,QAAQ;EAAE6C;AAAS,CAAE,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["__","tableOfContents","icon","initBlock","metadata","$schema","apiVersion","__experimental","name","title","category","description","keywords","textdomain","attributes","headings","type","items","onlyIncludeCurrentPage","maxLevel","ordered","supports","ariaLabel","html","color","text","background","gradients","link","spacing","margin","padding","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","__experimentalDefaultControls","interactivity","clientNavigation","__experimentalBorder","radius","width","style","edit","save","settings","example","innerBlocks","level","content","init"],"sources":["@wordpress/block-library/src/table-of-contents/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { tableOfContents as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport save from './save';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n\texample: {\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/heading',\n\t\t\t\tattributes: {\n\t\t\t\t\tlevel: 2,\n\t\t\t\t\tcontent: __( 'Heading' ),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/heading',\n\t\t\t\tattributes: {\n\t\t\t\t\tlevel: 3,\n\t\t\t\t\tcontent: __( 'Subheading' ),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/heading',\n\t\t\t\tattributes: {\n\t\t\t\t\tlevel: 2,\n\t\t\t\t\tcontent: __( 'Heading' ),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/heading',\n\t\t\t\tattributes: {\n\t\t\t\t\tlevel: 3,\n\t\t\t\t\tcontent: __( 'Subheading' ),\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tattributes: {\n\t\t\theadings: [\n\t\t\t\t{\n\t\t\t\t\tcontent: __( 'Heading' ),\n\t\t\t\t\tlevel: 2,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcontent: __( 'Subheading' ),\n\t\t\t\t\tlevel: 3,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcontent: __( 'Heading' ),\n\t\t\t\t\tlevel: 2,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcontent: __( 'Subheading' ),\n\t\t\t\t\tlevel: 3,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,eAAe,IAAIC,IAAI,QAAQ,kBAAkB;;AAE1D;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,cAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,QAAA;MAAAC,IAAA;MAAAC,KAAA;QAAAD,IAAA;MAAA;MAAA;IAAA;IAAAE,sBAAA;MAAAF,IAAA;MAAA;IAAA;IAAAG,QAAA;MAAAH,IAAA;IAAA;IAAAI,OAAA;MAAAJ,IAAA;MAAA;IAAA;EAAA;EAAAK,QAAA;IAAAC,SAAA;IAAAC,IAAA;IAAAC,KAAA;MAAAC,IAAA;MAAAC,UAAA;MAAAC,SAAA;MAAAC,IAAA;IAAA;IAAAC,OAAA;MAAAC,MAAA;MAAAC,OAAA;IAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,UAAA;MAAAC,wBAAA;MAAAC,wBAAA;MAAAC,uBAAA;MAAAC,2BAAA;MAAAC,4BAAA;MAAAC,2BAAA;MAAAC,6BAAA;QAAAR,QAAA;MAAA;IAAA;IAAAS,aAAA;MAAAC,gBAAA;IAAA;IAAAC,oBAAA;MAAAC,MAAA;MAAArB,KAAA;MAAAsB,KAAA;MAAAC,KAAA;MAAAN,6BAAA;QAAAI,MAAA;QAAArB,KAAA;QAAAsB,KAAA;QAAAC,KAAA;MAAA;IAAA;EAAA;EAAAA,KAAA;AAAA;AAE5C,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,IAAI,MAAM,QAAQ;AAEzB,MAAM;EAAEzC;AAAK,CAAC,GAAGJ,QAAQ;AAEzB,SAASA,QAAQ,EAAEI,IAAI;AAEvB,OAAO,MAAM0C,QAAQ,GAAG;EACvBhD,IAAI;EACJ8C,IAAI;EACJC,IAAI;EACJE,OAAO,EAAE;IACRC,WAAW,EAAE,CACZ;MACC5C,IAAI,EAAE,cAAc;MACpBM,UAAU,EAAE;QACXuC,KAAK,EAAE,CAAC;QACRC,OAAO,EAAEtD,EAAE,CAAE,SAAU;MACxB;IACD,CAAC,EACD;MACCQ,IAAI,EAAE,cAAc;MACpBM,UAAU,EAAE;QACXuC,KAAK,EAAE,CAAC;QACRC,OAAO,EAAEtD,EAAE,CAAE,YAAa;MAC3B;IACD,CAAC,EACD;MACCQ,IAAI,EAAE,cAAc;MACpBM,UAAU,EAAE;QACXuC,KAAK,EAAE,CAAC;QACRC,OAAO,EAAEtD,EAAE,CAAE,SAAU;MACxB;IACD,CAAC,EACD;MACCQ,IAAI,EAAE,cAAc;MACpBM,UAAU,EAAE;QACXuC,KAAK,EAAE,CAAC;QACRC,OAAO,EAAEtD,EAAE,CAAE,YAAa;MAC3B;IACD,CAAC,CACD;IACDc,UAAU,EAAE;MACXC,QAAQ,EAAE,CACT;QACCuC,OAAO,EAAEtD,EAAE,CAAE,SAAU,CAAC;QACxBqD,KAAK,EAAE;MACR,CAAC,EACD;QACCC,OAAO,EAAEtD,EAAE,CAAE,YAAa,CAAC;QAC3BqD,KAAK,EAAE;MACR,CAAC,EACD;QACCC,OAAO,EAAEtD,EAAE,CAAE,SAAU,CAAC;QACxBqD,KAAK,EAAE;MACR,CAAC,EACD;QACCC,OAAO,EAAEtD,EAAE,CAAE,YAAa,CAAC;QAC3BqD,KAAK,EAAE;MACR,CAAC;IAEH;EACD;AACD,CAAC;AAED,OAAO,MAAME,IAAI,GAAGA,CAAA,KAAMpD,SAAS,CAAE;EAAEK,IAAI;EAAEJ,QAAQ;EAAE8C;AAAS,CAAE,CAAC","ignoreList":[]}
@@ -8,15 +8,27 @@ import clsx from 'clsx';
8
8
  */
9
9
  import { __ } from '@wordpress/i18n';
10
10
  import { useBlockProps, BlockControls, AlignmentControl } from '@wordpress/block-editor';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import { useTermDescription } from './use-term-description';
11
16
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
12
17
  export default function TermDescriptionEdit({
13
18
  attributes,
14
19
  setAttributes,
15
- mergedStyle
20
+ mergedStyle,
21
+ context: {
22
+ termId,
23
+ taxonomy
24
+ }
16
25
  }) {
17
26
  const {
18
27
  textAlign
19
28
  } = attributes;
29
+ const {
30
+ termDescription
31
+ } = useTermDescription(termId, taxonomy);
20
32
  const blockProps = useBlockProps({
21
33
  className: clsx({
22
34
  [`has-text-align-${textAlign}`]: textAlign
@@ -36,7 +48,11 @@ export default function TermDescriptionEdit({
36
48
  })
37
49
  }), /*#__PURE__*/_jsx("div", {
38
50
  ...blockProps,
39
- children: /*#__PURE__*/_jsx("div", {
51
+ children: termDescription ? /*#__PURE__*/_jsx("div", {
52
+ dangerouslySetInnerHTML: {
53
+ __html: termDescription
54
+ }
55
+ }) : /*#__PURE__*/_jsx("div", {
40
56
  className: "wp-block-term-description__placeholder",
41
57
  children: /*#__PURE__*/_jsx("span", {
42
58
  children: __('Term Description')
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","__","useBlockProps","BlockControls","AlignmentControl","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","TermDescriptionEdit","attributes","setAttributes","mergedStyle","textAlign","blockProps","className","style","children","group","value","onChange","nextAlign"],"sources":["@wordpress/block-library/src/term-description/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseBlockProps,\n\tBlockControls,\n\tAlignmentControl,\n} from '@wordpress/block-editor';\n\nexport default function TermDescriptionEdit( {\n\tattributes,\n\tsetAttributes,\n\tmergedStyle,\n} ) {\n\tconst { textAlign } = attributes;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t\tstyle: mergedStyle,\n\t} );\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<div { ...blockProps }>\n\t\t\t\t<div className=\"wp-block-term-description__placeholder\">\n\t\t\t\t\t<span>{ __( 'Term Description' ) }</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SACCC,aAAa,EACbC,aAAa,EACbC,gBAAgB,QACV,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAEjC,eAAe,SAASC,mBAAmBA,CAAE;EAC5CC,UAAU;EACVC,aAAa;EACbC;AACD,CAAC,EAAG;EACH,MAAM;IAAEC;EAAU,CAAC,GAAGH,UAAU;EAChC,MAAMI,UAAU,GAAGd,aAAa,CAAE;IACjCe,SAAS,EAAEjB,IAAI,CAAE;MAChB,CAAE,kBAAmBe,SAAS,EAAG,GAAIA;IACtC,CAAE,CAAC;IACHG,KAAK,EAAEJ;EACR,CAAE,CAAC;EACH,oBACCJ,KAAA,CAAAF,SAAA;IAAAW,QAAA,gBACCb,IAAA,CAACH,aAAa;MAACiB,KAAK,EAAC,OAAO;MAAAD,QAAA,eAC3Bb,IAAA,CAACF,gBAAgB;QAChBiB,KAAK,EAAGN,SAAW;QACnBO,QAAQ,EAAKC,SAAS,IAAM;UAC3BV,aAAa,CAAE;YAAEE,SAAS,EAAEQ;UAAU,CAAE,CAAC;QAC1C;MAAG,CACH;IAAC,CACY,CAAC,eAChBjB,IAAA;MAAA,GAAUU,UAAU;MAAAG,QAAA,eACnBb,IAAA;QAAKW,SAAS,EAAC,wCAAwC;QAAAE,QAAA,eACtDb,IAAA;UAAAa,QAAA,EAAQlB,EAAE,CAAE,kBAAmB;QAAC,CAAQ;MAAC,CACrC;IAAC,CACF,CAAC;EAAA,CACL,CAAC;AAEL","ignoreList":[]}
1
+ {"version":3,"names":["clsx","__","useBlockProps","BlockControls","AlignmentControl","useTermDescription","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","TermDescriptionEdit","attributes","setAttributes","mergedStyle","context","termId","taxonomy","textAlign","termDescription","blockProps","className","style","children","group","value","onChange","nextAlign","dangerouslySetInnerHTML","__html"],"sources":["@wordpress/block-library/src/term-description/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseBlockProps,\n\tBlockControls,\n\tAlignmentControl,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { useTermDescription } from './use-term-description';\n\nexport default function TermDescriptionEdit( {\n\tattributes,\n\tsetAttributes,\n\tmergedStyle,\n\tcontext: { termId, taxonomy },\n} ) {\n\tconst { textAlign } = attributes;\n\tconst { termDescription } = useTermDescription( termId, taxonomy );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t\tstyle: mergedStyle,\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<div { ...blockProps }>\n\t\t\t\t{ termDescription ? (\n\t\t\t\t\t<div\n\t\t\t\t\t\tdangerouslySetInnerHTML={ { __html: termDescription } }\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<div className=\"wp-block-term-description__placeholder\">\n\t\t\t\t\t\t<span>{ __( 'Term Description' ) }</span>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SACCC,aAAa,EACbC,aAAa,EACbC,gBAAgB,QACV,yBAAyB;;AAEhC;AACA;AACA;AACA,SAASC,kBAAkB,QAAQ,wBAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAE5D,eAAe,SAASC,mBAAmBA,CAAE;EAC5CC,UAAU;EACVC,aAAa;EACbC,WAAW;EACXC,OAAO,EAAE;IAAEC,MAAM;IAAEC;EAAS;AAC7B,CAAC,EAAG;EACH,MAAM;IAAEC;EAAU,CAAC,GAAGN,UAAU;EAChC,MAAM;IAAEO;EAAgB,CAAC,GAAGf,kBAAkB,CAAEY,MAAM,EAAEC,QAAS,CAAC;EAElE,MAAMG,UAAU,GAAGnB,aAAa,CAAE;IACjCoB,SAAS,EAAEtB,IAAI,CAAE;MAChB,CAAE,kBAAmBmB,SAAS,EAAG,GAAIA;IACtC,CAAE,CAAC;IACHI,KAAK,EAAER;EACR,CAAE,CAAC;EAEH,oBACCJ,KAAA,CAAAF,SAAA;IAAAe,QAAA,gBACCjB,IAAA,CAACJ,aAAa;MAACsB,KAAK,EAAC,OAAO;MAAAD,QAAA,eAC3BjB,IAAA,CAACH,gBAAgB;QAChBsB,KAAK,EAAGP,SAAW;QACnBQ,QAAQ,EAAKC,SAAS,IAAM;UAC3Bd,aAAa,CAAE;YAAEK,SAAS,EAAES;UAAU,CAAE,CAAC;QAC1C;MAAG,CACH;IAAC,CACY,CAAC,eAChBrB,IAAA;MAAA,GAAUc,UAAU;MAAAG,QAAA,EACjBJ,eAAe,gBAChBb,IAAA;QACCsB,uBAAuB,EAAG;UAAEC,MAAM,EAAEV;QAAgB;MAAG,CACvD,CAAC,gBAEFb,IAAA;QAAKe,SAAS,EAAC,wCAAwC;QAAAE,QAAA,eACtDjB,IAAA;UAAAiB,QAAA,EAAQvB,EAAE,CAAE,kBAAmB;QAAC,CAAQ;MAAC,CACrC;IACL,CACG,CAAC;EAAA,CACL,CAAC;AAEL","ignoreList":[]}
@@ -15,6 +15,7 @@ const metadata = {
15
15
  category: "theme",
16
16
  description: "Display the description of categories, tags and custom taxonomies when viewing an archive.",
17
17
  textdomain: "default",
18
+ usesContext: ["termId", "taxonomy"],
18
19
  attributes: {
19
20
  textAlign: {
20
21
  type: "string"
@@ -1 +1 @@
1
- {"version":3,"names":["termDescription","icon","initBlock","metadata","$schema","apiVersion","name","title","category","description","textdomain","attributes","textAlign","type","supports","align","html","color","link","__experimentalDefaultControls","background","text","spacing","padding","margin","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","interactivity","clientNavigation","__experimentalBorder","radius","width","style","edit","settings","example","init"],"sources":["@wordpress/block-library/src/term-description/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { termDescription as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\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,SAASA,eAAe,IAAIC,IAAI,QAAQ,kBAAkB;;AAE1D;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,SAAA;MAAAC,IAAA;IAAA;EAAA;EAAAC,QAAA;IAAAC,KAAA;IAAAC,IAAA;IAAAC,KAAA;MAAAC,IAAA;MAAAC,6BAAA;QAAAC,UAAA;QAAAC,IAAA;MAAA;IAAA;IAAAC,OAAA;MAAAC,OAAA;MAAAC,MAAA;IAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,UAAA;MAAAC,wBAAA;MAAAC,wBAAA;MAAAC,uBAAA;MAAAC,2BAAA;MAAAC,4BAAA;MAAAC,2BAAA;MAAAd,6BAAA;QAAAO,QAAA;MAAA;IAAA;IAAAQ,aAAA;MAAAC,gBAAA;IAAA;IAAAC,oBAAA;MAAAC,MAAA;MAAApB,KAAA;MAAAqB,KAAA;MAAAC,KAAA;MAAApB,6BAAA;QAAAkB,MAAA;QAAApB,KAAA;QAAAqB,KAAA;QAAAC,KAAA;MAAA;IAAA;EAAA;AAAA;AAE5C,OAAOC,IAAI,MAAM,QAAQ;AAEzB,MAAM;EAAElC;AAAK,CAAC,GAAGH,QAAQ;AACzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMmC,QAAQ,GAAG;EACvBxC,IAAI;EACJuC,IAAI;EACJE,OAAO,EAAE,CAAC;AACX,CAAC;AAED,OAAO,MAAMC,IAAI,GAAGA,CAAA,KAAMzC,SAAS,CAAE;EAAEI,IAAI;EAAEH,QAAQ;EAAEsC;AAAS,CAAE,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["termDescription","icon","initBlock","metadata","$schema","apiVersion","name","title","category","description","textdomain","usesContext","attributes","textAlign","type","supports","align","html","color","link","__experimentalDefaultControls","background","text","spacing","padding","margin","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","interactivity","clientNavigation","__experimentalBorder","radius","width","style","edit","settings","example","init"],"sources":["@wordpress/block-library/src/term-description/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { termDescription as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\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,SAASA,eAAe,IAAIC,IAAI,QAAQ,kBAAkB;;AAE1D;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,WAAA;EAAAC,UAAA;IAAAC,SAAA;MAAAC,IAAA;IAAA;EAAA;EAAAC,QAAA;IAAAC,KAAA;IAAAC,IAAA;IAAAC,KAAA;MAAAC,IAAA;MAAAC,6BAAA;QAAAC,UAAA;QAAAC,IAAA;MAAA;IAAA;IAAAC,OAAA;MAAAC,OAAA;MAAAC,MAAA;IAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,UAAA;MAAAC,wBAAA;MAAAC,wBAAA;MAAAC,uBAAA;MAAAC,2BAAA;MAAAC,4BAAA;MAAAC,2BAAA;MAAAd,6BAAA;QAAAO,QAAA;MAAA;IAAA;IAAAQ,aAAA;MAAAC,gBAAA;IAAA;IAAAC,oBAAA;MAAAC,MAAA;MAAApB,KAAA;MAAAqB,KAAA;MAAAC,KAAA;MAAApB,6BAAA;QAAAkB,MAAA;QAAApB,KAAA;QAAAqB,KAAA;QAAAC,KAAA;MAAA;IAAA;EAAA;AAAA;AAE5C,OAAOC,IAAI,MAAM,QAAQ;AAEzB,MAAM;EAAEnC;AAAK,CAAC,GAAGH,QAAQ;AACzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMoC,QAAQ,GAAG;EACvBzC,IAAI;EACJwC,IAAI;EACJE,OAAO,EAAE,CAAC;AACX,CAAC;AAED,OAAO,MAAMC,IAAI,GAAGA,CAAA,KAAM1C,SAAS,CAAE;EAAEI,IAAI;EAAEH,QAAQ;EAAEuC;AAAS,CAAE,CAAC","ignoreList":[]}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { store as coreStore, useEntityProp } from '@wordpress/core-data';
5
+ import { useSelect } from '@wordpress/data';
6
+
7
+ /**
8
+ * Hook to fetch term description based on context or fallback to template parsing.
9
+ *
10
+ * This hook prioritizes context-provided termId and taxonomy, but falls back to
11
+ * template-based detection when no context is available.
12
+ *
13
+ * @param {string|number} termId The term ID from context
14
+ * @param {string} taxonomy The taxonomy name from context
15
+ */
16
+ export function useTermDescription(termId, taxonomy) {
17
+ const [description, setDescription, fullDescription] = useEntityProp('taxonomy', taxonomy, 'description', termId);
18
+
19
+ // Fallback approach: Parse template slug when no context is available.
20
+ const templateBasedData = useTemplateBasedTermData();
21
+ const hasContext = Boolean(termId && taxonomy);
22
+ return {
23
+ hasContext,
24
+ setDescription,
25
+ termDescription: hasContext ? fullDescription?.rendered || description || '' : templateBasedData
26
+ };
27
+ }
28
+
29
+ /**
30
+ * Fallback hook to fetch term data from template context (backward compatibility).
31
+ * This maintains the same logic as the original implementation for cases where
32
+ * no termId/taxonomy context is provided.
33
+ */
34
+ function useTemplateBasedTermData() {
35
+ const templateSlug = useSelect(select => {
36
+ // Access core/editor by string to avoid @wordpress/editor dependency.
37
+ // eslint-disable-next-line @wordpress/data-no-store-string-literals
38
+ const {
39
+ getCurrentPostId,
40
+ getCurrentPostType,
41
+ getCurrentTemplateId
42
+ } = select('core/editor');
43
+ const currentPostType = getCurrentPostType();
44
+ const templateId = getCurrentTemplateId() || (currentPostType === 'wp_template' ? getCurrentPostId() : null);
45
+ return templateId ? select(coreStore).getEditedEntityRecord('postType', 'wp_template', templateId)?.slug : null;
46
+ }, []);
47
+ const taxonomyMatches = templateSlug?.match(/^(category|tag|taxonomy-([^-]+))$|^(((category|tag)|taxonomy-([^-]+))-(.+))$/);
48
+ let taxonomy;
49
+ let termSlug;
50
+ if (taxonomyMatches) {
51
+ // If it's for all taxonomies of a type (e.g., category, tag).
52
+ if (taxonomyMatches[1]) {
53
+ taxonomy = taxonomyMatches[2] ? taxonomyMatches[2] : taxonomyMatches[1];
54
+ }
55
+ // If it's for a specific term (e.g., category-news, tag-featured).
56
+ else if (taxonomyMatches[3]) {
57
+ taxonomy = taxonomyMatches[6] ? taxonomyMatches[6] : taxonomyMatches[4];
58
+ termSlug = taxonomyMatches[7];
59
+ }
60
+ taxonomy = taxonomy === 'tag' ? 'post_tag' : taxonomy;
61
+ }
62
+ return useSelect(select => {
63
+ if (!taxonomy || !termSlug) {
64
+ return '';
65
+ }
66
+ const {
67
+ getEntityRecords
68
+ } = select(coreStore);
69
+ const termRecords = getEntityRecords('taxonomy', taxonomy, {
70
+ slug: termSlug,
71
+ per_page: 1
72
+ });
73
+ if (termRecords && termRecords[0]) {
74
+ return termRecords[0].description || '';
75
+ }
76
+ return '';
77
+ }, [taxonomy, termSlug]);
78
+ }
79
+ //# sourceMappingURL=use-term-description.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["store","coreStore","useEntityProp","useSelect","useTermDescription","termId","taxonomy","description","setDescription","fullDescription","templateBasedData","useTemplateBasedTermData","hasContext","Boolean","termDescription","rendered","templateSlug","select","getCurrentPostId","getCurrentPostType","getCurrentTemplateId","currentPostType","templateId","getEditedEntityRecord","slug","taxonomyMatches","match","termSlug","getEntityRecords","termRecords","per_page"],"sources":["@wordpress/block-library/src/term-description/use-term-description.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as coreStore, useEntityProp } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Hook to fetch term description based on context or fallback to template parsing.\n *\n * This hook prioritizes context-provided termId and taxonomy, but falls back to\n * template-based detection when no context is available.\n *\n * @param {string|number} termId The term ID from context\n * @param {string} taxonomy The taxonomy name from context\n */\nexport function useTermDescription( termId, taxonomy ) {\n\tconst [ description, setDescription, fullDescription ] = useEntityProp(\n\t\t'taxonomy',\n\t\ttaxonomy,\n\t\t'description',\n\t\ttermId\n\t);\n\n\t// Fallback approach: Parse template slug when no context is available.\n\tconst templateBasedData = useTemplateBasedTermData();\n\n\tconst hasContext = Boolean( termId && taxonomy );\n\n\treturn {\n\t\thasContext,\n\t\tsetDescription,\n\t\ttermDescription: hasContext\n\t\t\t? fullDescription?.rendered || description || ''\n\t\t\t: templateBasedData,\n\t};\n}\n\n/**\n * Fallback hook to fetch term data from template context (backward compatibility).\n * This maintains the same logic as the original implementation for cases where\n * no termId/taxonomy context is provided.\n */\nfunction useTemplateBasedTermData() {\n\tconst templateSlug = useSelect( ( select ) => {\n\t\t// Access core/editor by string to avoid @wordpress/editor dependency.\n\t\t// eslint-disable-next-line @wordpress/data-no-store-string-literals\n\t\tconst { getCurrentPostId, getCurrentPostType, getCurrentTemplateId } =\n\t\t\tselect( 'core/editor' );\n\t\tconst currentPostType = getCurrentPostType();\n\t\tconst templateId =\n\t\t\tgetCurrentTemplateId() ||\n\t\t\t( currentPostType === 'wp_template' ? getCurrentPostId() : null );\n\n\t\treturn templateId\n\t\t\t? select( coreStore ).getEditedEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_template',\n\t\t\t\t\ttemplateId\n\t\t\t )?.slug\n\t\t\t: null;\n\t}, [] );\n\n\tconst taxonomyMatches = templateSlug?.match(\n\t\t/^(category|tag|taxonomy-([^-]+))$|^(((category|tag)|taxonomy-([^-]+))-(.+))$/\n\t);\n\n\tlet taxonomy;\n\tlet termSlug;\n\n\tif ( taxonomyMatches ) {\n\t\t// If it's for all taxonomies of a type (e.g., category, tag).\n\t\tif ( taxonomyMatches[ 1 ] ) {\n\t\t\ttaxonomy = taxonomyMatches[ 2 ]\n\t\t\t\t? taxonomyMatches[ 2 ]\n\t\t\t\t: taxonomyMatches[ 1 ];\n\t\t}\n\t\t// If it's for a specific term (e.g., category-news, tag-featured).\n\t\telse if ( taxonomyMatches[ 3 ] ) {\n\t\t\ttaxonomy = taxonomyMatches[ 6 ]\n\t\t\t\t? taxonomyMatches[ 6 ]\n\t\t\t\t: taxonomyMatches[ 4 ];\n\t\t\ttermSlug = taxonomyMatches[ 7 ];\n\t\t}\n\n\t\ttaxonomy = taxonomy === 'tag' ? 'post_tag' : taxonomy;\n\t}\n\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! taxonomy || ! termSlug ) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\n\t\t\tconst termRecords = getEntityRecords( 'taxonomy', taxonomy, {\n\t\t\t\tslug: termSlug,\n\t\t\t\tper_page: 1,\n\t\t\t} );\n\n\t\t\tif ( termRecords && termRecords[ 0 ] ) {\n\t\t\t\treturn termRecords[ 0 ].description || '';\n\t\t\t}\n\n\t\t\treturn '';\n\t\t},\n\t\t[ taxonomy, termSlug ]\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,IAAIC,SAAS,EAAEC,aAAa,QAAQ,sBAAsB;AACxE,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAAEC,MAAM,EAAEC,QAAQ,EAAG;EACtD,MAAM,CAAEC,WAAW,EAAEC,cAAc,EAAEC,eAAe,CAAE,GAAGP,aAAa,CACrE,UAAU,EACVI,QAAQ,EACR,aAAa,EACbD,MACD,CAAC;;EAED;EACA,MAAMK,iBAAiB,GAAGC,wBAAwB,CAAC,CAAC;EAEpD,MAAMC,UAAU,GAAGC,OAAO,CAAER,MAAM,IAAIC,QAAS,CAAC;EAEhD,OAAO;IACNM,UAAU;IACVJ,cAAc;IACdM,eAAe,EAAEF,UAAU,GACxBH,eAAe,EAAEM,QAAQ,IAAIR,WAAW,IAAI,EAAE,GAC9CG;EACJ,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,wBAAwBA,CAAA,EAAG;EACnC,MAAMK,YAAY,GAAGb,SAAS,CAAIc,MAAM,IAAM;IAC7C;IACA;IACA,MAAM;MAAEC,gBAAgB;MAAEC,kBAAkB;MAAEC;IAAqB,CAAC,GACnEH,MAAM,CAAE,aAAc,CAAC;IACxB,MAAMI,eAAe,GAAGF,kBAAkB,CAAC,CAAC;IAC5C,MAAMG,UAAU,GACfF,oBAAoB,CAAC,CAAC,KACpBC,eAAe,KAAK,aAAa,GAAGH,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAE;IAElE,OAAOI,UAAU,GACdL,MAAM,CAAEhB,SAAU,CAAC,CAACsB,qBAAqB,CACzC,UAAU,EACV,aAAa,EACbD,UACA,CAAC,EAAEE,IAAI,GACP,IAAI;EACR,CAAC,EAAE,EAAG,CAAC;EAEP,MAAMC,eAAe,GAAGT,YAAY,EAAEU,KAAK,CAC1C,8EACD,CAAC;EAED,IAAIpB,QAAQ;EACZ,IAAIqB,QAAQ;EAEZ,IAAKF,eAAe,EAAG;IACtB;IACA,IAAKA,eAAe,CAAE,CAAC,CAAE,EAAG;MAC3BnB,QAAQ,GAAGmB,eAAe,CAAE,CAAC,CAAE,GAC5BA,eAAe,CAAE,CAAC,CAAE,GACpBA,eAAe,CAAE,CAAC,CAAE;IACxB;IACA;IAAA,KACK,IAAKA,eAAe,CAAE,CAAC,CAAE,EAAG;MAChCnB,QAAQ,GAAGmB,eAAe,CAAE,CAAC,CAAE,GAC5BA,eAAe,CAAE,CAAC,CAAE,GACpBA,eAAe,CAAE,CAAC,CAAE;MACvBE,QAAQ,GAAGF,eAAe,CAAE,CAAC,CAAE;IAChC;IAEAnB,QAAQ,GAAGA,QAAQ,KAAK,KAAK,GAAG,UAAU,GAAGA,QAAQ;EACtD;EAEA,OAAOH,SAAS,CACbc,MAAM,IAAM;IACb,IAAK,CAAEX,QAAQ,IAAI,CAAEqB,QAAQ,EAAG;MAC/B,OAAO,EAAE;IACV;IAEA,MAAM;MAAEC;IAAiB,CAAC,GAAGX,MAAM,CAAEhB,SAAU,CAAC;IAEhD,MAAM4B,WAAW,GAAGD,gBAAgB,CAAE,UAAU,EAAEtB,QAAQ,EAAE;MAC3DkB,IAAI,EAAEG,QAAQ;MACdG,QAAQ,EAAE;IACX,CAAE,CAAC;IAEH,IAAKD,WAAW,IAAIA,WAAW,CAAE,CAAC,CAAE,EAAG;MACtC,OAAOA,WAAW,CAAE,CAAC,CAAE,CAACtB,WAAW,IAAI,EAAE;IAC1C;IAEA,OAAO,EAAE;EACV,CAAC,EACD,CAAED,QAAQ,EAAEqB,QAAQ,CACrB,CAAC;AACF","ignoreList":[]}
@@ -156,13 +156,13 @@ export default function TermTemplateEdit({
156
156
  clientId,
157
157
  setAttributes,
158
158
  context: {
159
+ termsToShow,
159
160
  termQuery: {
160
161
  taxonomy,
161
162
  order,
162
163
  orderBy,
163
164
  hideEmpty,
164
165
  hierarchical,
165
- parent,
166
166
  perPage = 10
167
167
  } = {}
168
168
  },
@@ -185,14 +185,18 @@ export default function TermTemplateEdit({
185
185
  records: terms,
186
186
  isResolving
187
187
  } = useEntityRecords('taxonomy', taxonomy, queryArgs);
188
-
189
- // Filter to show only top-level terms if "Show only top-level terms" is enabled.
190
188
  const filteredTerms = useMemo(() => {
191
- if (!terms || parent !== 0) {
192
- return terms;
189
+ if (!terms) {
190
+ return [];
191
+ }
192
+ if (termsToShow === 'top-level') {
193
+ return terms.filter(term => !term.parent);
194
+ }
195
+ if (termsToShow === 'subterms') {
196
+ return terms.filter(term => term.parent);
193
197
  }
194
- return terms.filter(term => !term.parent);
195
- }, [terms, parent]);
198
+ return terms;
199
+ }, [terms, termsToShow]);
196
200
  const {
197
201
  blocks,
198
202
  variations,