@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.
- package/build/accordion/edit.js +6 -5
- package/build/accordion/edit.js.map +1 -1
- package/build/accordion/index.js +39 -4
- package/build/accordion/index.js.map +1 -1
- package/build/accordion/save.js +2 -19
- package/build/accordion/save.js.map +1 -1
- package/build/accordion/view.js +50 -16
- package/build/accordion/view.js.map +1 -1
- package/build/accordion-content/index.js +17 -3
- package/build/accordion-content/index.js.map +1 -1
- package/build/accordion-content/save.js +5 -7
- package/build/accordion-content/save.js.map +1 -1
- package/build/accordion-header/edit.js +13 -47
- package/build/accordion-header/edit.js.map +1 -1
- package/build/accordion-header/index.js +6 -11
- package/build/accordion-header/index.js.map +1 -1
- package/build/accordion-header/save.js +11 -44
- package/build/accordion-header/save.js.map +1 -1
- package/build/accordion-panel/edit.js +2 -1
- package/build/accordion-panel/edit.js.map +1 -1
- package/build/accordion-panel/index.js +3 -3
- package/build/accordion-panel/index.js.map +1 -1
- package/build/accordion-panel/save.js +3 -1
- package/build/accordion-panel/save.js.map +1 -1
- package/build/avatar/hooks.js +7 -17
- package/build/avatar/hooks.js.map +1 -1
- package/build/group/variations.js +3 -4
- package/build/group/variations.js.map +1 -1
- package/build/navigation/edit/leaf-more-menu.js +6 -1
- package/build/navigation/edit/leaf-more-menu.js.map +1 -1
- package/build/navigation/index.js +2 -1
- package/build/navigation/index.js.map +1 -1
- package/build/navigation-link/index.js +2 -1
- package/build/navigation-link/index.js.map +1 -1
- package/build/navigation-submenu/edit.js +2 -4
- package/build/navigation-submenu/edit.js.map +1 -1
- package/build/navigation-submenu/index.js +2 -1
- package/build/navigation-submenu/index.js.map +1 -1
- package/build/page-list/index.js +2 -1
- package/build/page-list/index.js.map +1 -1
- package/build/post-author/edit.js +7 -6
- package/build/post-author/edit.js.map +1 -1
- package/build/post-date/edit.js +16 -3
- package/build/post-date/edit.js.map +1 -1
- package/build/post-time-to-read/edit.js +111 -11
- package/build/post-time-to-read/edit.js.map +1 -1
- package/build/post-time-to-read/index.js +17 -1
- package/build/post-time-to-read/index.js.map +1 -1
- package/build/table-of-contents/index.js +1 -0
- package/build/table-of-contents/index.js.map +1 -1
- package/build/term-description/edit.js +18 -2
- package/build/term-description/edit.js.map +1 -1
- package/build/term-description/index.js +1 -0
- package/build/term-description/index.js.map +1 -1
- package/build/term-description/use-term-description.js +85 -0
- package/build/term-description/use-term-description.js.map +1 -0
- package/build/term-template/edit.js +11 -7
- package/build/term-template/edit.js.map +1 -1
- package/build/term-template/index.js +1 -1
- package/build/terms-query/index.js +8 -2
- package/build/terms-query/index.js.map +1 -1
- package/build/terms-query/inspector-controls/advanced-controls.js +51 -0
- package/build/terms-query/inspector-controls/advanced-controls.js.map +1 -0
- package/build/terms-query/inspector-controls/display-options.js +87 -0
- package/build/terms-query/inspector-controls/display-options.js.map +1 -0
- package/build/terms-query/inspector-controls/empty-terms-control.js +38 -0
- package/build/terms-query/inspector-controls/empty-terms-control.js.map +1 -0
- package/build/terms-query/inspector-controls/hierarchy-control.js +40 -0
- package/build/terms-query/inspector-controls/hierarchy-control.js.map +1 -0
- package/build/terms-query/inspector-controls/index.js +127 -0
- package/build/terms-query/inspector-controls/index.js.map +1 -0
- package/build/terms-query/inspector-controls/max-terms-control.js +50 -0
- package/build/terms-query/inspector-controls/max-terms-control.js.map +1 -0
- package/build/terms-query/inspector-controls/ordering-controls.js +57 -0
- package/build/terms-query/inspector-controls/ordering-controls.js.map +1 -0
- package/build/terms-query/inspector-controls/taxonomy-control.js +52 -0
- package/build/terms-query/inspector-controls/taxonomy-control.js.map +1 -0
- package/build/utils/hooks.js +15 -0
- package/build/utils/hooks.js.map +1 -1
- package/build-module/accordion/edit.js +6 -5
- package/build-module/accordion/edit.js.map +1 -1
- package/build-module/accordion/index.js +40 -4
- package/build-module/accordion/index.js.map +1 -1
- package/build-module/accordion/save.js +2 -17
- package/build-module/accordion/save.js.map +1 -1
- package/build-module/accordion/view.js +51 -17
- package/build-module/accordion/view.js.map +1 -1
- package/build-module/accordion-content/index.js +17 -3
- package/build-module/accordion-content/index.js.map +1 -1
- package/build-module/accordion-content/save.js +5 -7
- package/build-module/accordion-content/save.js.map +1 -1
- package/build-module/accordion-header/edit.js +14 -45
- package/build-module/accordion-header/edit.js.map +1 -1
- package/build-module/accordion-header/index.js +6 -11
- package/build-module/accordion-header/index.js.map +1 -1
- package/build-module/accordion-header/save.js +12 -42
- package/build-module/accordion-header/save.js.map +1 -1
- package/build-module/accordion-panel/edit.js +2 -1
- package/build-module/accordion-panel/edit.js.map +1 -1
- package/build-module/accordion-panel/index.js +3 -3
- package/build-module/accordion-panel/index.js.map +1 -1
- package/build-module/accordion-panel/save.js +3 -1
- package/build-module/accordion-panel/save.js.map +1 -1
- package/build-module/avatar/hooks.js +5 -15
- package/build-module/avatar/hooks.js.map +1 -1
- package/build-module/group/variations.js +3 -4
- package/build-module/group/variations.js.map +1 -1
- package/build-module/navigation/edit/leaf-more-menu.js +6 -1
- package/build-module/navigation/edit/leaf-more-menu.js.map +1 -1
- package/build-module/navigation/index.js +2 -1
- package/build-module/navigation/index.js.map +1 -1
- package/build-module/navigation-link/index.js +2 -1
- package/build-module/navigation-link/index.js.map +1 -1
- package/build-module/navigation-submenu/edit.js +1 -3
- package/build-module/navigation-submenu/edit.js.map +1 -1
- package/build-module/navigation-submenu/index.js +2 -1
- package/build-module/navigation-submenu/index.js.map +1 -1
- package/build-module/page-list/index.js +2 -1
- package/build-module/page-list/index.js.map +1 -1
- package/build-module/post-author/edit.js +8 -7
- package/build-module/post-author/edit.js.map +1 -1
- package/build-module/post-date/edit.js +17 -4
- package/build-module/post-date/edit.js.map +1 -1
- package/build-module/post-time-to-read/edit.js +112 -14
- package/build-module/post-time-to-read/edit.js.map +1 -1
- package/build-module/post-time-to-read/index.js +17 -1
- package/build-module/post-time-to-read/index.js.map +1 -1
- package/build-module/table-of-contents/index.js +1 -0
- package/build-module/table-of-contents/index.js.map +1 -1
- package/build-module/term-description/edit.js +18 -2
- package/build-module/term-description/edit.js.map +1 -1
- package/build-module/term-description/index.js +1 -0
- package/build-module/term-description/index.js.map +1 -1
- package/build-module/term-description/use-term-description.js +79 -0
- package/build-module/term-description/use-term-description.js.map +1 -0
- package/build-module/term-template/edit.js +11 -7
- package/build-module/term-template/edit.js.map +1 -1
- package/build-module/term-template/index.js +1 -1
- package/build-module/terms-query/index.js +8 -2
- package/build-module/terms-query/index.js.map +1 -1
- package/build-module/terms-query/inspector-controls/advanced-controls.js +44 -0
- package/build-module/terms-query/inspector-controls/advanced-controls.js.map +1 -0
- package/build-module/terms-query/inspector-controls/display-options.js +80 -0
- package/build-module/terms-query/inspector-controls/display-options.js.map +1 -0
- package/build-module/terms-query/inspector-controls/empty-terms-control.js +31 -0
- package/build-module/terms-query/inspector-controls/empty-terms-control.js.map +1 -0
- package/build-module/terms-query/inspector-controls/hierarchy-control.js +33 -0
- package/build-module/terms-query/inspector-controls/hierarchy-control.js.map +1 -0
- package/build-module/terms-query/inspector-controls/index.js +119 -0
- package/build-module/terms-query/inspector-controls/index.js.map +1 -0
- package/build-module/terms-query/inspector-controls/max-terms-control.js +43 -0
- package/build-module/terms-query/inspector-controls/max-terms-control.js.map +1 -0
- package/build-module/terms-query/inspector-controls/ordering-controls.js +50 -0
- package/build-module/terms-query/inspector-controls/ordering-controls.js.map +1 -0
- package/build-module/terms-query/inspector-controls/taxonomy-control.js +45 -0
- package/build-module/terms-query/inspector-controls/taxonomy-control.js.map +1 -0
- package/build-module/utils/hooks.js +14 -0
- package/build-module/utils/hooks.js.map +1 -1
- package/build-style/accordion-content/style-rtl.css +155 -0
- package/build-style/accordion-content/style.css +155 -0
- package/build-style/{accordion → accordion-header}/style-rtl.css +12 -51
- package/build-style/{accordion → accordion-header}/style.css +12 -51
- package/build-style/accordion-panel/style-rtl.css +140 -0
- package/build-style/accordion-panel/style.css +140 -0
- package/build-style/style-rtl.css +25 -38
- package/build-style/style.css +25 -38
- package/package.json +35 -35
- package/src/accordion/block.json +16 -3
- package/src/accordion/edit.js +39 -34
- package/src/accordion/index.js +35 -1
- package/src/accordion/index.php +3 -19
- package/src/accordion/save.js +2 -16
- package/src/accordion/view.js +64 -15
- package/src/accordion-content/block.json +17 -3
- package/src/accordion-content/index.php +3 -2
- package/src/accordion-content/save.js +4 -10
- package/src/accordion-content/style.scss +21 -0
- package/src/accordion-header/block.json +6 -11
- package/src/accordion-header/edit.js +17 -61
- package/src/accordion-header/save.js +24 -54
- package/src/accordion-header/style.scss +39 -0
- package/src/accordion-panel/block.json +3 -3
- package/src/accordion-panel/edit.js +1 -0
- package/src/accordion-panel/save.js +3 -1
- package/src/accordion-panel/style.scss +8 -0
- package/src/avatar/hooks.js +5 -10
- package/src/comments/index.php +2 -2
- package/src/group/variations.js +3 -14
- package/src/navigation/block.json +2 -1
- package/src/navigation/edit/leaf-more-menu.js +9 -1
- package/src/navigation/index.php +2 -2
- package/src/navigation-link/block.json +2 -1
- package/src/navigation-submenu/block.json +2 -1
- package/src/navigation-submenu/edit.js +1 -4
- package/src/page-list/block.json +2 -1
- package/src/post-author/edit.js +16 -7
- package/src/post-date/edit.js +16 -16
- package/src/post-time-to-read/block.json +17 -1
- package/src/post-time-to-read/edit.js +167 -20
- package/src/post-time-to-read/index.php +47 -15
- package/src/social-link/index.php +2 -2
- package/src/style.scss +3 -1
- package/src/table-of-contents/block.json +1 -0
- package/src/table-of-contents/index.php +44 -0
- package/src/term-description/block.json +1 -0
- package/src/term-description/edit.js +18 -3
- package/src/term-description/use-term-description.js +109 -0
- package/src/term-template/block.json +1 -1
- package/src/term-template/edit.js +11 -6
- package/src/term-template/index.php +13 -7
- package/src/terms-query/block.json +8 -2
- package/src/terms-query/inspector-controls/advanced-controls.js +37 -0
- package/src/terms-query/inspector-controls/display-options.js +87 -0
- package/src/terms-query/inspector-controls/empty-terms-control.js +30 -0
- package/src/terms-query/inspector-controls/hierarchy-control.js +30 -0
- package/src/terms-query/inspector-controls/index.js +137 -0
- package/src/terms-query/inspector-controls/max-terms-control.js +44 -0
- package/src/terms-query/inspector-controls/ordering-controls.js +55 -0
- package/src/terms-query/inspector-controls/taxonomy-control.js +41 -0
- package/src/utils/hooks.js +9 -0
- package/build/accordion-content/icons.js +0 -30
- package/build/accordion-content/icons.js.map +0 -1
- package/build/terms-query/inspector-controls.js +0 -231
- package/build/terms-query/inspector-controls.js.map +0 -1
- package/build-module/accordion-content/icons.js +0 -22
- package/build-module/accordion-content/icons.js.map +0 -1
- package/build-module/terms-query/inspector-controls.js +0 -224
- package/build-module/terms-query/inspector-controls.js.map +0 -1
- package/src/accordion/style.scss +0 -82
- package/src/accordion-content/icons.js +0 -23
- 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
|
-
*
|
|
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 {
|
|
22
|
-
|
|
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
|
|
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
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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:
|
|
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;
|
|
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 +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;
|
|
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;
|
|
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;
|
|
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
|
|
192
|
-
return
|
|
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
|
|
195
|
-
}, [terms,
|
|
198
|
+
return terms;
|
|
199
|
+
}, [terms, termsToShow]);
|
|
196
200
|
const {
|
|
197
201
|
blocks,
|
|
198
202
|
variations,
|