@wordpress/block-library 9.31.0 → 9.31.1-next.f56bd8138.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 (179) 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 +40 -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 +15 -2
  10. package/build/accordion-content/index.js.map +1 -1
  11. package/build/accordion-header/edit.js +15 -39
  12. package/build/accordion-header/edit.js.map +1 -1
  13. package/build/accordion-header/index.js +6 -6
  14. package/build/accordion-header/index.js.map +1 -1
  15. package/build/accordion-header/save.js +15 -37
  16. package/build/accordion-header/save.js.map +1 -1
  17. package/build/accordion-panel/index.js +1 -2
  18. package/build/accordion-panel/index.js.map +1 -1
  19. package/build/avatar/hooks.js +7 -17
  20. package/build/avatar/hooks.js.map +1 -1
  21. package/build/navigation/index.js +2 -1
  22. package/build/navigation/index.js.map +1 -1
  23. package/build/navigation-link/index.js +2 -1
  24. package/build/navigation-link/index.js.map +1 -1
  25. package/build/navigation-submenu/index.js +2 -1
  26. package/build/navigation-submenu/index.js.map +1 -1
  27. package/build/page-list/index.js +2 -1
  28. package/build/page-list/index.js.map +1 -1
  29. package/build/post-author/edit.js +7 -6
  30. package/build/post-author/edit.js.map +1 -1
  31. package/build/post-time-to-read/edit.js +50 -7
  32. package/build/post-time-to-read/edit.js.map +1 -1
  33. package/build/post-time-to-read/index.js +8 -0
  34. package/build/post-time-to-read/index.js.map +1 -1
  35. package/build/term-description/edit.js +18 -2
  36. package/build/term-description/edit.js.map +1 -1
  37. package/build/term-description/index.js +1 -0
  38. package/build/term-description/index.js.map +1 -1
  39. package/build/term-description/use-term-description.js +85 -0
  40. package/build/term-description/use-term-description.js.map +1 -0
  41. package/build/term-template/edit.js +11 -7
  42. package/build/term-template/edit.js.map +1 -1
  43. package/build/term-template/index.js +1 -1
  44. package/build/terms-query/index.js +8 -2
  45. package/build/terms-query/index.js.map +1 -1
  46. package/build/terms-query/inspector-controls/advanced-controls.js +51 -0
  47. package/build/terms-query/inspector-controls/advanced-controls.js.map +1 -0
  48. package/build/terms-query/inspector-controls/display-options.js +87 -0
  49. package/build/terms-query/inspector-controls/display-options.js.map +1 -0
  50. package/build/terms-query/inspector-controls/empty-terms-control.js +38 -0
  51. package/build/terms-query/inspector-controls/empty-terms-control.js.map +1 -0
  52. package/build/terms-query/inspector-controls/hierarchy-control.js +40 -0
  53. package/build/terms-query/inspector-controls/hierarchy-control.js.map +1 -0
  54. package/build/terms-query/inspector-controls/index.js +127 -0
  55. package/build/terms-query/inspector-controls/index.js.map +1 -0
  56. package/build/terms-query/inspector-controls/max-terms-control.js +50 -0
  57. package/build/terms-query/inspector-controls/max-terms-control.js.map +1 -0
  58. package/build/terms-query/inspector-controls/ordering-controls.js +57 -0
  59. package/build/terms-query/inspector-controls/ordering-controls.js.map +1 -0
  60. package/build/terms-query/inspector-controls/taxonomy-control.js +52 -0
  61. package/build/terms-query/inspector-controls/taxonomy-control.js.map +1 -0
  62. package/build/utils/hooks.js +15 -0
  63. package/build/utils/hooks.js.map +1 -1
  64. package/build-module/accordion/edit.js +6 -5
  65. package/build-module/accordion/edit.js.map +1 -1
  66. package/build-module/accordion/index.js +41 -4
  67. package/build-module/accordion/index.js.map +1 -1
  68. package/build-module/accordion/save.js +2 -17
  69. package/build-module/accordion/save.js.map +1 -1
  70. package/build-module/accordion/view.js +51 -17
  71. package/build-module/accordion/view.js.map +1 -1
  72. package/build-module/accordion-content/index.js +15 -2
  73. package/build-module/accordion-content/index.js.map +1 -1
  74. package/build-module/accordion-header/edit.js +16 -39
  75. package/build-module/accordion-header/edit.js.map +1 -1
  76. package/build-module/accordion-header/index.js +6 -6
  77. package/build-module/accordion-header/index.js.map +1 -1
  78. package/build-module/accordion-header/save.js +16 -37
  79. package/build-module/accordion-header/save.js.map +1 -1
  80. package/build-module/accordion-panel/index.js +1 -2
  81. package/build-module/accordion-panel/index.js.map +1 -1
  82. package/build-module/avatar/hooks.js +5 -15
  83. package/build-module/avatar/hooks.js.map +1 -1
  84. package/build-module/navigation/index.js +2 -1
  85. package/build-module/navigation/index.js.map +1 -1
  86. package/build-module/navigation-link/index.js +2 -1
  87. package/build-module/navigation-link/index.js.map +1 -1
  88. package/build-module/navigation-submenu/index.js +2 -1
  89. package/build-module/navigation-submenu/index.js.map +1 -1
  90. package/build-module/page-list/index.js +2 -1
  91. package/build-module/page-list/index.js.map +1 -1
  92. package/build-module/post-author/edit.js +8 -7
  93. package/build-module/post-author/edit.js.map +1 -1
  94. package/build-module/post-time-to-read/edit.js +50 -9
  95. package/build-module/post-time-to-read/edit.js.map +1 -1
  96. package/build-module/post-time-to-read/index.js +8 -0
  97. package/build-module/post-time-to-read/index.js.map +1 -1
  98. package/build-module/term-description/edit.js +18 -2
  99. package/build-module/term-description/edit.js.map +1 -1
  100. package/build-module/term-description/index.js +1 -0
  101. package/build-module/term-description/index.js.map +1 -1
  102. package/build-module/term-description/use-term-description.js +79 -0
  103. package/build-module/term-description/use-term-description.js.map +1 -0
  104. package/build-module/term-template/edit.js +11 -7
  105. package/build-module/term-template/edit.js.map +1 -1
  106. package/build-module/term-template/index.js +1 -1
  107. package/build-module/terms-query/index.js +8 -2
  108. package/build-module/terms-query/index.js.map +1 -1
  109. package/build-module/terms-query/inspector-controls/advanced-controls.js +44 -0
  110. package/build-module/terms-query/inspector-controls/advanced-controls.js.map +1 -0
  111. package/build-module/terms-query/inspector-controls/display-options.js +80 -0
  112. package/build-module/terms-query/inspector-controls/display-options.js.map +1 -0
  113. package/build-module/terms-query/inspector-controls/empty-terms-control.js +31 -0
  114. package/build-module/terms-query/inspector-controls/empty-terms-control.js.map +1 -0
  115. package/build-module/terms-query/inspector-controls/hierarchy-control.js +33 -0
  116. package/build-module/terms-query/inspector-controls/hierarchy-control.js.map +1 -0
  117. package/build-module/terms-query/inspector-controls/index.js +119 -0
  118. package/build-module/terms-query/inspector-controls/index.js.map +1 -0
  119. package/build-module/terms-query/inspector-controls/max-terms-control.js +43 -0
  120. package/build-module/terms-query/inspector-controls/max-terms-control.js.map +1 -0
  121. package/build-module/terms-query/inspector-controls/ordering-controls.js +50 -0
  122. package/build-module/terms-query/inspector-controls/ordering-controls.js.map +1 -0
  123. package/build-module/terms-query/inspector-controls/taxonomy-control.js +45 -0
  124. package/build-module/terms-query/inspector-controls/taxonomy-control.js.map +1 -0
  125. package/build-module/utils/hooks.js +14 -0
  126. package/build-module/utils/hooks.js.map +1 -1
  127. package/build-style/accordion/style-rtl.css +15 -8
  128. package/build-style/accordion/style.css +15 -8
  129. package/build-style/style-rtl.css +15 -8
  130. package/build-style/style.css +15 -8
  131. package/package.json +35 -35
  132. package/src/accordion/block.json +17 -3
  133. package/src/accordion/edit.js +39 -34
  134. package/src/accordion/index.js +35 -1
  135. package/src/accordion/index.php +3 -19
  136. package/src/accordion/save.js +2 -16
  137. package/src/accordion/style.scss +16 -8
  138. package/src/accordion/view.js +64 -15
  139. package/src/accordion-content/block.json +15 -2
  140. package/src/accordion-content/index.php +2 -1
  141. package/src/accordion-header/block.json +6 -6
  142. package/src/accordion-header/edit.js +19 -56
  143. package/src/accordion-header/save.js +27 -49
  144. package/src/accordion-panel/block.json +1 -2
  145. package/src/avatar/hooks.js +5 -10
  146. package/src/navigation/block.json +2 -1
  147. package/src/navigation-link/block.json +2 -1
  148. package/src/navigation-submenu/block.json +2 -1
  149. package/src/page-list/block.json +2 -1
  150. package/src/post-author/edit.js +16 -7
  151. package/src/post-time-to-read/block.json +8 -0
  152. package/src/post-time-to-read/edit.js +71 -10
  153. package/src/post-time-to-read/index.php +29 -17
  154. package/src/term-description/block.json +1 -0
  155. package/src/term-description/edit.js +18 -3
  156. package/src/term-description/use-term-description.js +109 -0
  157. package/src/term-template/block.json +1 -1
  158. package/src/term-template/edit.js +11 -6
  159. package/src/term-template/index.php +13 -7
  160. package/src/terms-query/block.json +8 -2
  161. package/src/terms-query/inspector-controls/advanced-controls.js +37 -0
  162. package/src/terms-query/inspector-controls/display-options.js +87 -0
  163. package/src/terms-query/inspector-controls/empty-terms-control.js +30 -0
  164. package/src/terms-query/inspector-controls/hierarchy-control.js +30 -0
  165. package/src/terms-query/inspector-controls/index.js +137 -0
  166. package/src/terms-query/inspector-controls/max-terms-control.js +44 -0
  167. package/src/terms-query/inspector-controls/ordering-controls.js +55 -0
  168. package/src/terms-query/inspector-controls/taxonomy-control.js +41 -0
  169. package/src/utils/hooks.js +9 -0
  170. package/build/accordion-content/icons.js +0 -30
  171. package/build/accordion-content/icons.js.map +0 -1
  172. package/build/terms-query/inspector-controls.js +0 -231
  173. package/build/terms-query/inspector-controls.js.map +0 -1
  174. package/build-module/accordion-content/icons.js +0 -22
  175. package/build-module/accordion-content/icons.js.map +0 -1
  176. package/build-module/terms-query/inspector-controls.js +0 -224
  177. package/build-module/terms-query/inspector-controls.js.map +0 -1
  178. package/src/accordion-content/icons.js +0 -23
  179. package/src/terms-query/inspector-controls.js +0 -239
@@ -9,9 +9,11 @@ var _clsx = _interopRequireDefault(require("clsx"));
9
9
  var _i18n = require("@wordpress/i18n");
10
10
  var _element = require("@wordpress/element");
11
11
  var _blockEditor = require("@wordpress/block-editor");
12
+ var _components = require("@wordpress/components");
12
13
  var _blocks = require("@wordpress/blocks");
13
14
  var _coreData = require("@wordpress/core-data");
14
15
  var _wordcount = require("@wordpress/wordcount");
16
+ var _hooks = require("../utils/hooks");
15
17
  var _jsxRuntime = require("react/jsx-runtime");
16
18
  /**
17
19
  * External dependencies
@@ -22,22 +24,24 @@ var _jsxRuntime = require("react/jsx-runtime");
22
24
  */
23
25
 
24
26
  /**
25
- * Average reading rate - based on average taken from
26
- * https://irisreading.com/average-reading-speed-in-various-languages/
27
- * (Characters/minute used for Chinese rather than words).
28
- */const AVERAGE_READING_RATE = 189;
27
+ * Internal dependencies
28
+ */
29
+
29
30
  function PostTimeToReadEdit({
30
31
  attributes,
31
32
  setAttributes,
32
33
  context
33
34
  }) {
34
35
  const {
35
- textAlign
36
+ textAlign,
37
+ displayAsRange,
38
+ averageReadingSpeed
36
39
  } = attributes;
37
40
  const {
38
41
  postId,
39
42
  postType
40
43
  } = context;
44
+ const dropdownMenuProps = (0, _hooks.useToolsPanelDropdownMenuProps)();
41
45
  const [contentStructure] = (0, _coreData.useEntityProp)('postType', postType, 'content', postId);
42
46
  const [blocks] = (0, _coreData.useEntityBlockEditor)('postType', postType, {
43
47
  id: postId
@@ -64,10 +68,21 @@ function PostTimeToReadEdit({
64
68
  * Do not translate into your own language.
65
69
  */
66
70
  const wordCountType = (0, _i18n._x)('words', 'Word count type. Do not translate!');
67
- const minutesToRead = Math.max(1, Math.round((0, _wordcount.count)(content || '', wordCountType) / AVERAGE_READING_RATE));
71
+ const totalWords = (0, _wordcount.count)(content || '', wordCountType);
72
+ if (displayAsRange) {
73
+ let maxMinutes = Math.max(1, Math.round(totalWords / averageReadingSpeed * 1.2));
74
+ const minMinutes = Math.max(1, Math.round(totalWords / averageReadingSpeed * 0.8));
75
+ if (minMinutes === maxMinutes) {
76
+ maxMinutes = maxMinutes + 1;
77
+ }
78
+ // translators: %1$s: minimum minutes, %2$s: maximum minutes to read the post.
79
+ const rangeLabel = (0, _i18n._x)('%1$s–%2$s minutes', 'Range of minutes to read');
80
+ return (0, _i18n.sprintf)(rangeLabel, minMinutes, maxMinutes);
81
+ }
82
+ const minutesToRead = Math.max(1, Math.round(totalWords / averageReadingSpeed));
68
83
  return (0, _i18n.sprintf)(/* translators: %s: the number of minutes to read the post. */
69
84
  (0, _i18n._n)('%s minute', '%s minutes', minutesToRead), minutesToRead);
70
- }, [contentStructure, blocks]);
85
+ }, [contentStructure, blocks, displayAsRange, averageReadingSpeed]);
71
86
  const blockProps = (0, _blockEditor.useBlockProps)({
72
87
  className: (0, _clsx.default)({
73
88
  [`has-text-align-${textAlign}`]: textAlign
@@ -84,6 +99,34 @@ function PostTimeToReadEdit({
84
99
  });
85
100
  }
86
101
  })
102
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.InspectorControls, {
103
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalToolsPanel, {
104
+ label: (0, _i18n.__)('Settings'),
105
+ resetAll: () => {
106
+ setAttributes({
107
+ displayAsRange: true
108
+ });
109
+ },
110
+ dropdownMenuProps: dropdownMenuProps,
111
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalToolsPanelItem, {
112
+ isShownByDefault: true,
113
+ label: (0, _i18n._x)('Display as range', 'Turns reading time range display on or off'),
114
+ hasValue: () => !displayAsRange,
115
+ onDeselect: () => {
116
+ setAttributes({
117
+ displayAsRange: true
118
+ });
119
+ },
120
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToggleControl, {
121
+ __nextHasNoMarginBottom: true,
122
+ label: (0, _i18n.__)('Display as range'),
123
+ checked: !!displayAsRange,
124
+ onChange: () => setAttributes({
125
+ displayAsRange: !displayAsRange
126
+ })
127
+ })
128
+ })
129
+ })
87
130
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
88
131
  ...blockProps,
89
132
  children: minutesToReadString
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_element","_blockEditor","_blocks","_coreData","_wordcount","_jsxRuntime","AVERAGE_READING_RATE","PostTimeToReadEdit","attributes","setAttributes","context","textAlign","postId","postType","contentStructure","useEntityProp","blocks","useEntityBlockEditor","id","minutesToReadString","useMemo","content","Function","__unstableSerializeAndClean","wordCountType","_x","minutesToRead","Math","max","round","wordCount","sprintf","_n","blockProps","useBlockProps","className","clsx","jsxs","Fragment","children","jsx","BlockControls","group","AlignmentControl","value","onChange","nextAlign","_default","exports","default"],"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":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAKA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AACA,IAAAM,UAAA,GAAAN,OAAA;AAA0D,IAAAO,WAAA,GAAAP,OAAA;AAjB1D;AACA;AACA;;AAGA;AACA;AACA;;AAYA;AACA;AACA;AACA;AACA,GACA,MAAMQ,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,GAAG,IAAAC,uBAAa,EACzC,UAAU,EACVF,QAAQ,EACR,SAAS,EACTD,MACD,CAAC;EAED,MAAM,CAAEI,MAAM,CAAE,GAAG,IAAAC,8BAAoB,EAAE,UAAU,EAAEJ,QAAQ,EAAE;IAC9DK,EAAE,EAAEN;EACL,CAAE,CAAC;EAEH,MAAMO,mBAAmB,GAAG,IAAAC,gBAAO,EAAE,MAAM;IAC1C;IACA,IAAIC,OAAO;IACX,IAAKP,gBAAgB,YAAYQ,QAAQ,EAAG;MAC3CD,OAAO,GAAGP,gBAAgB,CAAE;QAAEE;MAAO,CAAE,CAAC;IACzC,CAAC,MAAM,IAAKA,MAAM,EAAG;MACpB;MACA;MACA;MACAK,OAAO,GAAG,IAAAE,mCAA2B,EAAEP,MAAO,CAAC;IAChD,CAAC,MAAM;MACNK,OAAO,GAAGP,gBAAgB;IAC3B;;IAEA;AACF;AACA;AACA;AACA;IACE,MAAMU,aAAa,GAAG,IAAAC,QAAE,EACvB,OAAO,EACP,oCACD,CAAC;IAED,MAAMC,aAAa,GAAGC,IAAI,CAACC,GAAG,CAC7B,CAAC,EACDD,IAAI,CAACE,KAAK,CACT,IAAAC,gBAAS,EAAET,OAAO,IAAI,EAAE,EAAEG,aAAc,CAAC,GAAGlB,oBAC7C,CACD,CAAC;IAED,OAAO,IAAAyB,aAAO,EACb;IACA,IAAAC,QAAE,EAAE,WAAW,EAAE,YAAY,EAAEN,aAAc,CAAC,EAC9CA,aACD,CAAC;EACF,CAAC,EAAE,CAAEZ,gBAAgB,EAAEE,MAAM,CAAG,CAAC;EAEjC,MAAMiB,UAAU,GAAG,IAAAC,0BAAa,EAAE;IACjCC,SAAS,EAAE,IAAAC,aAAI,EAAE;MAChB,CAAE,kBAAmBzB,SAAS,EAAG,GAAIA;IACtC,CAAE;EACH,CAAE,CAAC;EAEH,oBACC,IAAAN,WAAA,CAAAgC,IAAA,EAAAhC,WAAA,CAAAiC,QAAA;IAAAC,QAAA,gBACC,IAAAlC,WAAA,CAAAmC,GAAA,EAACvC,YAAA,CAAAwC,aAAa;MAACC,KAAK,EAAC,OAAO;MAAAH,QAAA,eAC3B,IAAAlC,WAAA,CAAAmC,GAAA,EAACvC,YAAA,CAAA0C,gBAAgB;QAChBC,KAAK,EAAGjC,SAAW;QACnBkC,QAAQ,EAAKC,SAAS,IAAM;UAC3BrC,aAAa,CAAE;YAAEE,SAAS,EAAEmC;UAAU,CAAE,CAAC;QAC1C;MAAG,CACH;IAAC,CACY,CAAC,eAChB,IAAAzC,WAAA,CAAAmC,GAAA;MAAA,GAAUP,UAAU;MAAAM,QAAA,EAAKpB;IAAmB,CAAO,CAAC;EAAA,CACnD,CAAC;AAEL;AAAC,IAAA4B,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc1C,kBAAkB","ignoreList":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_element","_blockEditor","_components","_blocks","_coreData","_wordcount","_hooks","_jsxRuntime","PostTimeToReadEdit","attributes","setAttributes","context","textAlign","displayAsRange","averageReadingSpeed","postId","postType","dropdownMenuProps","useToolsPanelDropdownMenuProps","contentStructure","useEntityProp","blocks","useEntityBlockEditor","id","minutesToReadString","useMemo","content","Function","__unstableSerializeAndClean","wordCountType","_x","totalWords","wordCount","maxMinutes","Math","max","round","minMinutes","rangeLabel","sprintf","minutesToRead","_n","blockProps","useBlockProps","className","clsx","jsxs","Fragment","children","jsx","BlockControls","group","AlignmentControl","value","onChange","nextAlign","InspectorControls","__experimentalToolsPanel","label","__","resetAll","__experimentalToolsPanelItem","isShownByDefault","hasValue","onDeselect","ToggleControl","__nextHasNoMarginBottom","checked","_default","exports","default"],"sources":["@wordpress/block-library/src/post-time-to-read/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x, _n, sprintf } from '@wordpress/i18n';\nimport { useMemo } from '@wordpress/element';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport {\n\tToggleControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { __unstableSerializeAndClean } from '@wordpress/blocks';\nimport { useEntityProp, useEntityBlockEditor } from '@wordpress/core-data';\nimport { count as wordCount } from '@wordpress/wordcount';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nfunction PostTimeToReadEdit( { attributes, setAttributes, context } ) {\n\tconst { textAlign, displayAsRange, averageReadingSpeed } = attributes;\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 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 totalWords = wordCount( content || '', wordCountType );\n\t\tif ( displayAsRange ) {\n\t\t\tlet maxMinutes = Math.max(\n\t\t\t\t1,\n\t\t\t\tMath.round( ( totalWords / averageReadingSpeed ) * 1.2 )\n\t\t\t);\n\t\t\tconst minMinutes = Math.max(\n\t\t\t\t1,\n\t\t\t\tMath.round( ( totalWords / averageReadingSpeed ) * 0.8 )\n\t\t\t);\n\n\t\t\tif ( minMinutes === maxMinutes ) {\n\t\t\t\tmaxMinutes = maxMinutes + 1;\n\t\t\t}\n\t\t\t// translators: %1$s: minimum minutes, %2$s: maximum minutes to read the post.\n\t\t\tconst rangeLabel = _x(\n\t\t\t\t'%1$s–%2$s minutes',\n\t\t\t\t'Range of minutes to read'\n\t\t\t);\n\t\t\treturn sprintf( rangeLabel, minMinutes, maxMinutes );\n\t\t}\n\n\t\tconst minutesToRead = Math.max(\n\t\t\t1,\n\t\t\tMath.round( totalWords / averageReadingSpeed )\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, displayAsRange, averageReadingSpeed ] );\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} );\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\tisShownByDefault\n\t\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t\t'Display as range',\n\t\t\t\t\t\t\t'Turns reading time range display on or off'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\thasValue={ () => ! displayAsRange }\n\t\t\t\t\t\tonDeselect={ () => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdisplayAsRange: true,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\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={ __( 'Display as range' ) }\n\t\t\t\t\t\t\tchecked={ !! displayAsRange }\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\tdisplayAsRange: ! displayAsRange,\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 }>{ minutesToReadString }</div>\n\t\t</>\n\t);\n}\n\nexport default PostTimeToReadEdit;\n"],"mappings":"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","ignoreList":[]}
@@ -24,6 +24,14 @@ const metadata = exports.metadata = {
24
24
  attributes: {
25
25
  textAlign: {
26
26
  type: "string"
27
+ },
28
+ displayAsRange: {
29
+ type: "boolean",
30
+ "default": true
31
+ },
32
+ averageReadingSpeed: {
33
+ type: "number",
34
+ "default": 189
27
35
  }
28
36
  },
29
37
  supports: {
@@ -1 +1 @@
1
- {"version":3,"names":["_initBlock","_interopRequireDefault","require","_edit","_icon","metadata","exports","$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","settings","icon","edit","example","init","initBlock"],"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":";;;;;;;AAGA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAH,sBAAA,CAAAC,OAAA;AANA;AACA;AACA;AAFA,MAAAG,QAAA,GAAAC,OAAA,CAAAD,QAAA;EAAAE,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;AAQA,MAAM;EAAEjC;AAAK,CAAC,GAAGL,QAAQ;AAACC,OAAA,CAAAI,IAAA,GAAAA,IAAA;AAGnB,MAAMkC,QAAQ,GAAAtC,OAAA,CAAAsC,QAAA,GAAG;EACvBC,IAAI,EAAJA,aAAI;EACJC,IAAI,EAAJA,aAAI;EACJC,OAAO,EAAE,CAAC;AACX,CAAC;AAEM,MAAMC,IAAI,GAAGA,CAAA,KAAM,IAAAC,kBAAS,EAAE;EAAEvC,IAAI;EAAEL,QAAQ;EAAEuC;AAAS,CAAE,CAAC;AAACtC,OAAA,CAAA0C,IAAA,GAAAA,IAAA","ignoreList":[]}
1
+ {"version":3,"names":["_initBlock","_interopRequireDefault","require","_edit","_icon","metadata","exports","$schema","apiVersion","__experimental","name","title","category","description","textdomain","usesContext","attributes","textAlign","type","displayAsRange","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","settings","icon","edit","example","init","initBlock"],"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":";;;;;;;AAGA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAH,sBAAA,CAAAC,OAAA;AANA;AACA;AACA;AAFA,MAAAG,QAAA,GAAAC,OAAA,CAAAD,QAAA;EAAAE,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,mBAAA;MAAAF,IAAA;MAAA;IAAA;EAAA;EAAAG,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;AAQA,MAAM;EAAEnC;AAAK,CAAC,GAAGL,QAAQ;AAACC,OAAA,CAAAI,IAAA,GAAAA,IAAA;AAGnB,MAAMoC,QAAQ,GAAAxC,OAAA,CAAAwC,QAAA,GAAG;EACvBC,IAAI,EAAJA,aAAI;EACJC,IAAI,EAAJA,aAAI;EACJC,OAAO,EAAE,CAAC;AACX,CAAC;AAEM,MAAMC,IAAI,GAAGA,CAAA,KAAM,IAAAC,kBAAS,EAAE;EAAEzC,IAAI;EAAEL,QAAQ;EAAEyC;AAAS,CAAE,CAAC;AAACxC,OAAA,CAAA4C,IAAA,GAAAA,IAAA","ignoreList":[]}
@@ -8,6 +8,7 @@ exports.default = TermDescriptionEdit;
8
8
  var _clsx = _interopRequireDefault(require("clsx"));
9
9
  var _i18n = require("@wordpress/i18n");
10
10
  var _blockEditor = require("@wordpress/block-editor");
11
+ var _useTermDescription = require("./use-term-description");
11
12
  var _jsxRuntime = require("react/jsx-runtime");
12
13
  /**
13
14
  * External dependencies
@@ -17,14 +18,25 @@ var _jsxRuntime = require("react/jsx-runtime");
17
18
  * WordPress dependencies
18
19
  */
19
20
 
21
+ /**
22
+ * Internal dependencies
23
+ */
24
+
20
25
  function TermDescriptionEdit({
21
26
  attributes,
22
27
  setAttributes,
23
- mergedStyle
28
+ mergedStyle,
29
+ context: {
30
+ termId,
31
+ taxonomy
32
+ }
24
33
  }) {
25
34
  const {
26
35
  textAlign
27
36
  } = attributes;
37
+ const {
38
+ termDescription
39
+ } = (0, _useTermDescription.useTermDescription)(termId, taxonomy);
28
40
  const blockProps = (0, _blockEditor.useBlockProps)({
29
41
  className: (0, _clsx.default)({
30
42
  [`has-text-align-${textAlign}`]: textAlign
@@ -44,7 +56,11 @@ function TermDescriptionEdit({
44
56
  })
45
57
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
46
58
  ...blockProps,
47
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
59
+ children: termDescription ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
60
+ dangerouslySetInnerHTML: {
61
+ __html: termDescription
62
+ }
63
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
48
64
  className: "wp-block-term-description__placeholder",
49
65
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
50
66
  children: (0, _i18n.__)('Term Description')
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_blockEditor","_jsxRuntime","TermDescriptionEdit","attributes","setAttributes","mergedStyle","textAlign","blockProps","useBlockProps","className","clsx","style","jsxs","Fragment","children","jsx","BlockControls","group","AlignmentControl","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":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAIiC,IAAAG,WAAA,GAAAH,OAAA;AAbjC;AACA;AACA;;AAGA;AACA;AACA;;AAQe,SAASI,mBAAmBA,CAAE;EAC5CC,UAAU;EACVC,aAAa;EACbC;AACD,CAAC,EAAG;EACH,MAAM;IAAEC;EAAU,CAAC,GAAGH,UAAU;EAChC,MAAMI,UAAU,GAAG,IAAAC,0BAAa,EAAE;IACjCC,SAAS,EAAE,IAAAC,aAAI,EAAE;MAChB,CAAE,kBAAmBJ,SAAS,EAAG,GAAIA;IACtC,CAAE,CAAC;IACHK,KAAK,EAAEN;EACR,CAAE,CAAC;EACH,oBACC,IAAAJ,WAAA,CAAAW,IAAA,EAAAX,WAAA,CAAAY,QAAA;IAAAC,QAAA,gBACC,IAAAb,WAAA,CAAAc,GAAA,EAACf,YAAA,CAAAgB,aAAa;MAACC,KAAK,EAAC,OAAO;MAAAH,QAAA,eAC3B,IAAAb,WAAA,CAAAc,GAAA,EAACf,YAAA,CAAAkB,gBAAgB;QAChBC,KAAK,EAAGb,SAAW;QACnBc,QAAQ,EAAKC,SAAS,IAAM;UAC3BjB,aAAa,CAAE;YAAEE,SAAS,EAAEe;UAAU,CAAE,CAAC;QAC1C;MAAG,CACH;IAAC,CACY,CAAC,eAChB,IAAApB,WAAA,CAAAc,GAAA;MAAA,GAAUR,UAAU;MAAAO,QAAA,eACnB,IAAAb,WAAA,CAAAc,GAAA;QAAKN,SAAS,EAAC,wCAAwC;QAAAK,QAAA,eACtD,IAAAb,WAAA,CAAAc,GAAA;UAAAD,QAAA,EAAQ,IAAAQ,QAAE,EAAE,kBAAmB;QAAC,CAAQ;MAAC,CACrC;IAAC,CACF,CAAC;EAAA,CACL,CAAC;AAEL","ignoreList":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_blockEditor","_useTermDescription","_jsxRuntime","TermDescriptionEdit","attributes","setAttributes","mergedStyle","context","termId","taxonomy","textAlign","termDescription","useTermDescription","blockProps","useBlockProps","className","clsx","style","jsxs","Fragment","children","jsx","BlockControls","group","AlignmentControl","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":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AASA,IAAAG,mBAAA,GAAAH,OAAA;AAA4D,IAAAI,WAAA,GAAAJ,OAAA;AAlB5D;AACA;AACA;;AAGA;AACA;AACA;;AAQA;AACA;AACA;;AAGe,SAASK,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,GAAG,IAAAC,sCAAkB,EAAEJ,MAAM,EAAEC,QAAS,CAAC;EAElE,MAAMI,UAAU,GAAG,IAAAC,0BAAa,EAAE;IACjCC,SAAS,EAAE,IAAAC,aAAI,EAAE;MAChB,CAAE,kBAAmBN,SAAS,EAAG,GAAIA;IACtC,CAAE,CAAC;IACHO,KAAK,EAAEX;EACR,CAAE,CAAC;EAEH,oBACC,IAAAJ,WAAA,CAAAgB,IAAA,EAAAhB,WAAA,CAAAiB,QAAA;IAAAC,QAAA,gBACC,IAAAlB,WAAA,CAAAmB,GAAA,EAACrB,YAAA,CAAAsB,aAAa;MAACC,KAAK,EAAC,OAAO;MAAAH,QAAA,eAC3B,IAAAlB,WAAA,CAAAmB,GAAA,EAACrB,YAAA,CAAAwB,gBAAgB;QAChBC,KAAK,EAAGf,SAAW;QACnBgB,QAAQ,EAAKC,SAAS,IAAM;UAC3BtB,aAAa,CAAE;YAAEK,SAAS,EAAEiB;UAAU,CAAE,CAAC;QAC1C;MAAG,CACH;IAAC,CACY,CAAC,eAChB,IAAAzB,WAAA,CAAAmB,GAAA;MAAA,GAAUR,UAAU;MAAAO,QAAA,EACjBT,eAAe,gBAChB,IAAAT,WAAA,CAAAmB,GAAA;QACCO,uBAAuB,EAAG;UAAEC,MAAM,EAAElB;QAAgB;MAAG,CACvD,CAAC,gBAEF,IAAAT,WAAA,CAAAmB,GAAA;QAAKN,SAAS,EAAC,wCAAwC;QAAAK,QAAA,eACtD,IAAAlB,WAAA,CAAAmB,GAAA;UAAAD,QAAA,EAAQ,IAAAU,QAAE,EAAE,kBAAmB;QAAC,CAAQ;MAAC,CACrC;IACL,CACG,CAAC;EAAA,CACL,CAAC;AAEL","ignoreList":[]}
@@ -22,6 +22,7 @@ const metadata = exports.metadata = {
22
22
  category: "theme",
23
23
  description: "Display the description of categories, tags and custom taxonomies when viewing an archive.",
24
24
  textdomain: "default",
25
+ usesContext: ["termId", "taxonomy"],
25
26
  attributes: {
26
27
  textAlign: {
27
28
  type: "string"
@@ -1 +1 @@
1
- {"version":3,"names":["_icons","require","_initBlock","_interopRequireDefault","_edit","metadata","exports","$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","settings","icon","edit","example","init","initBlock"],"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":";;;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AAKA,IAAAC,UAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,KAAA,GAAAD,sBAAA,CAAAF,OAAA;AAVA;AACA;AACA;AAGA;AACA;AACA;AAFA,MAAAI,QAAA,GAAAC,OAAA,CAAAD,QAAA;EAAAE,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;AAOA,MAAM;EAAEjC;AAAK,CAAC,GAAGJ,QAAQ;AAACC,OAAA,CAAAG,IAAA,GAAAA,IAAA;AAGnB,MAAMkC,QAAQ,GAAArC,OAAA,CAAAqC,QAAA,GAAG;EACvBC,IAAI,EAAJA,sBAAI;EACJC,IAAI,EAAJA,aAAI;EACJC,OAAO,EAAE,CAAC;AACX,CAAC;AAEM,MAAMC,IAAI,GAAGA,CAAA,KAAM,IAAAC,kBAAS,EAAE;EAAEvC,IAAI;EAAEJ,QAAQ;EAAEsC;AAAS,CAAE,CAAC;AAACrC,OAAA,CAAAyC,IAAA,GAAAA,IAAA","ignoreList":[]}
1
+ {"version":3,"names":["_icons","require","_initBlock","_interopRequireDefault","_edit","metadata","exports","$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","settings","icon","edit","example","init","initBlock"],"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":";;;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AAKA,IAAAC,UAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,KAAA,GAAAD,sBAAA,CAAAF,OAAA;AAVA;AACA;AACA;AAGA;AACA;AACA;AAFA,MAAAI,QAAA,GAAAC,OAAA,CAAAD,QAAA;EAAAE,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;AAOA,MAAM;EAAElC;AAAK,CAAC,GAAGJ,QAAQ;AAACC,OAAA,CAAAG,IAAA,GAAAA,IAAA;AAGnB,MAAMmC,QAAQ,GAAAtC,OAAA,CAAAsC,QAAA,GAAG;EACvBC,IAAI,EAAJA,sBAAI;EACJC,IAAI,EAAJA,aAAI;EACJC,OAAO,EAAE,CAAC;AACX,CAAC;AAEM,MAAMC,IAAI,GAAGA,CAAA,KAAM,IAAAC,kBAAS,EAAE;EAAExC,IAAI;EAAEJ,QAAQ;EAAEuC;AAAS,CAAE,CAAC;AAACtC,OAAA,CAAA0C,IAAA,GAAAA,IAAA","ignoreList":[]}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useTermDescription = useTermDescription;
7
+ var _coreData = require("@wordpress/core-data");
8
+ var _data = require("@wordpress/data");
9
+ /**
10
+ * WordPress dependencies
11
+ */
12
+
13
+ /**
14
+ * Hook to fetch term description based on context or fallback to template parsing.
15
+ *
16
+ * This hook prioritizes context-provided termId and taxonomy, but falls back to
17
+ * template-based detection when no context is available.
18
+ *
19
+ * @param {string|number} termId The term ID from context
20
+ * @param {string} taxonomy The taxonomy name from context
21
+ */
22
+ function useTermDescription(termId, taxonomy) {
23
+ const [description, setDescription, fullDescription] = (0, _coreData.useEntityProp)('taxonomy', taxonomy, 'description', termId);
24
+
25
+ // Fallback approach: Parse template slug when no context is available.
26
+ const templateBasedData = useTemplateBasedTermData();
27
+ const hasContext = Boolean(termId && taxonomy);
28
+ return {
29
+ hasContext,
30
+ setDescription,
31
+ termDescription: hasContext ? fullDescription?.rendered || description || '' : templateBasedData
32
+ };
33
+ }
34
+
35
+ /**
36
+ * Fallback hook to fetch term data from template context (backward compatibility).
37
+ * This maintains the same logic as the original implementation for cases where
38
+ * no termId/taxonomy context is provided.
39
+ */
40
+ function useTemplateBasedTermData() {
41
+ const templateSlug = (0, _data.useSelect)(select => {
42
+ // Access core/editor by string to avoid @wordpress/editor dependency.
43
+ // eslint-disable-next-line @wordpress/data-no-store-string-literals
44
+ const {
45
+ getCurrentPostId,
46
+ getCurrentPostType,
47
+ getCurrentTemplateId
48
+ } = select('core/editor');
49
+ const currentPostType = getCurrentPostType();
50
+ const templateId = getCurrentTemplateId() || (currentPostType === 'wp_template' ? getCurrentPostId() : null);
51
+ return templateId ? select(_coreData.store).getEditedEntityRecord('postType', 'wp_template', templateId)?.slug : null;
52
+ }, []);
53
+ const taxonomyMatches = templateSlug?.match(/^(category|tag|taxonomy-([^-]+))$|^(((category|tag)|taxonomy-([^-]+))-(.+))$/);
54
+ let taxonomy;
55
+ let termSlug;
56
+ if (taxonomyMatches) {
57
+ // If it's for all taxonomies of a type (e.g., category, tag).
58
+ if (taxonomyMatches[1]) {
59
+ taxonomy = taxonomyMatches[2] ? taxonomyMatches[2] : taxonomyMatches[1];
60
+ }
61
+ // If it's for a specific term (e.g., category-news, tag-featured).
62
+ else if (taxonomyMatches[3]) {
63
+ taxonomy = taxonomyMatches[6] ? taxonomyMatches[6] : taxonomyMatches[4];
64
+ termSlug = taxonomyMatches[7];
65
+ }
66
+ taxonomy = taxonomy === 'tag' ? 'post_tag' : taxonomy;
67
+ }
68
+ return (0, _data.useSelect)(select => {
69
+ if (!taxonomy || !termSlug) {
70
+ return '';
71
+ }
72
+ const {
73
+ getEntityRecords
74
+ } = select(_coreData.store);
75
+ const termRecords = getEntityRecords('taxonomy', taxonomy, {
76
+ slug: termSlug,
77
+ per_page: 1
78
+ });
79
+ if (termRecords && termRecords[0]) {
80
+ return termRecords[0].description || '';
81
+ }
82
+ return '';
83
+ }, [taxonomy, termSlug]);
84
+ }
85
+ //# sourceMappingURL=use-term-description.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_coreData","require","_data","useTermDescription","termId","taxonomy","description","setDescription","fullDescription","useEntityProp","templateBasedData","useTemplateBasedTermData","hasContext","Boolean","termDescription","rendered","templateSlug","useSelect","select","getCurrentPostId","getCurrentPostType","getCurrentTemplateId","currentPostType","templateId","coreStore","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":";;;;;;AAGA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAJA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,kBAAkBA,CAAEC,MAAM,EAAEC,QAAQ,EAAG;EACtD,MAAM,CAAEC,WAAW,EAAEC,cAAc,EAAEC,eAAe,CAAE,GAAG,IAAAC,uBAAa,EACrE,UAAU,EACVJ,QAAQ,EACR,aAAa,EACbD,MACD,CAAC;;EAED;EACA,MAAMM,iBAAiB,GAAGC,wBAAwB,CAAC,CAAC;EAEpD,MAAMC,UAAU,GAAGC,OAAO,CAAET,MAAM,IAAIC,QAAS,CAAC;EAEhD,OAAO;IACNO,UAAU;IACVL,cAAc;IACdO,eAAe,EAAEF,UAAU,GACxBJ,eAAe,EAAEO,QAAQ,IAAIT,WAAW,IAAI,EAAE,GAC9CI;EACJ,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,wBAAwBA,CAAA,EAAG;EACnC,MAAMK,YAAY,GAAG,IAAAC,eAAS,EAAIC,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,CAAEM,eAAU,CAAC,CAACC,qBAAqB,CACzC,UAAU,EACV,aAAa,EACbF,UACA,CAAC,EAAEG,IAAI,GACP,IAAI;EACR,CAAC,EAAE,EAAG,CAAC;EAEP,MAAMC,eAAe,GAAGX,YAAY,EAAEY,KAAK,CAC1C,8EACD,CAAC;EAED,IAAIvB,QAAQ;EACZ,IAAIwB,QAAQ;EAEZ,IAAKF,eAAe,EAAG;IACtB;IACA,IAAKA,eAAe,CAAE,CAAC,CAAE,EAAG;MAC3BtB,QAAQ,GAAGsB,eAAe,CAAE,CAAC,CAAE,GAC5BA,eAAe,CAAE,CAAC,CAAE,GACpBA,eAAe,CAAE,CAAC,CAAE;IACxB;IACA;IAAA,KACK,IAAKA,eAAe,CAAE,CAAC,CAAE,EAAG;MAChCtB,QAAQ,GAAGsB,eAAe,CAAE,CAAC,CAAE,GAC5BA,eAAe,CAAE,CAAC,CAAE,GACpBA,eAAe,CAAE,CAAC,CAAE;MACvBE,QAAQ,GAAGF,eAAe,CAAE,CAAC,CAAE;IAChC;IAEAtB,QAAQ,GAAGA,QAAQ,KAAK,KAAK,GAAG,UAAU,GAAGA,QAAQ;EACtD;EAEA,OAAO,IAAAY,eAAS,EACbC,MAAM,IAAM;IACb,IAAK,CAAEb,QAAQ,IAAI,CAAEwB,QAAQ,EAAG;MAC/B,OAAO,EAAE;IACV;IAEA,MAAM;MAAEC;IAAiB,CAAC,GAAGZ,MAAM,CAAEM,eAAU,CAAC;IAEhD,MAAMO,WAAW,GAAGD,gBAAgB,CAAE,UAAU,EAAEzB,QAAQ,EAAE;MAC3DqB,IAAI,EAAEG,QAAQ;MACdG,QAAQ,EAAE;IACX,CAAE,CAAC;IAEH,IAAKD,WAAW,IAAIA,WAAW,CAAE,CAAC,CAAE,EAAG;MACtC,OAAOA,WAAW,CAAE,CAAC,CAAE,CAACzB,WAAW,IAAI,EAAE;IAC1C;IAEA,OAAO,EAAE;EACV,CAAC,EACD,CAAED,QAAQ,EAAEwB,QAAQ,CACrB,CAAC;AACF","ignoreList":[]}
@@ -164,13 +164,13 @@ function TermTemplateEdit({
164
164
  clientId,
165
165
  setAttributes,
166
166
  context: {
167
+ termsToShow,
167
168
  termQuery: {
168
169
  taxonomy,
169
170
  order,
170
171
  orderBy,
171
172
  hideEmpty,
172
173
  hierarchical,
173
- parent,
174
174
  perPage = 10
175
175
  } = {}
176
176
  },
@@ -193,14 +193,18 @@ function TermTemplateEdit({
193
193
  records: terms,
194
194
  isResolving
195
195
  } = (0, _coreData.useEntityRecords)('taxonomy', taxonomy, queryArgs);
196
-
197
- // Filter to show only top-level terms if "Show only top-level terms" is enabled.
198
196
  const filteredTerms = (0, _element.useMemo)(() => {
199
- if (!terms || parent !== 0) {
200
- return terms;
197
+ if (!terms) {
198
+ return [];
199
+ }
200
+ if (termsToShow === 'top-level') {
201
+ return terms.filter(term => !term.parent);
202
+ }
203
+ if (termsToShow === 'subterms') {
204
+ return terms.filter(term => term.parent);
201
205
  }
202
- return terms.filter(term => !term.parent);
203
- }, [terms, parent]);
206
+ return terms;
207
+ }, [terms, termsToShow]);
204
208
  const {
205
209
  blocks,
206
210
  variations,
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_element","_data","_icons","_i18n","_blockEditor","_coreData","_blocks","_jsxRuntime","TEMPLATE","layout","type","orientation","style","spacing","blockGap","metadata","name","__","bindings","content","source","args","key","placeholder","TermTemplateInnerBlocks","classList","innerBlocksProps","useInnerBlocksProps","className","clsx","template","__unstableDisableLayoutClassNames","jsx","TermTemplateBlockPreview","blocks","blockContextId","isHidden","setActiveBlockContextId","blockPreviewProps","useBlockPreview","props","handleOnClick","display","undefined","tabIndex","role","onClick","onKeyPress","MemoizedTermTemplateBlockPreview","memo","buildTermsTree","terms","termsById","rootTerms","forEach","term","id","children","parent","push","renderTermNode","termNode","renderTerm","jsxs","length","map","child","isActiveTerm","termId","activeBlockContextId","blockContexts","TermTemplateEdit","clientId","setAttributes","context","termQuery","taxonomy","order","orderBy","hideEmpty","hierarchical","perPage","__unstableLayoutClassNames","useState","replaceInnerBlocks","useDispatch","blockEditorStore","queryArgs","orderby","hide_empty","per_page","records","isResolving","useEntityRecords","filteredTerms","useMemo","filter","variations","defaultVariation","useSelect","select","getBlocks","getBlockVariations","getDefaultBlockVariation","blocksStore","blockProps","useBlockProps","termData","__experimentalBlockVariationPicker","icon","label","instructions","onSelect","nextVariation","attributes","innerBlocks","createBlocksFromInnerBlocksTemplate","allowSkip","blockContext","BlockContextProvider","value","Fragment","slice"],"sources":["@wordpress/block-library/src/term-template/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { memo, useMemo, useState } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { layout } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBlockContextProvider,\n\t__experimentalUseBlockPreview as useBlockPreview,\n\t__experimentalBlockVariationPicker as BlockVariationPicker,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport {\n\tcreateBlocksFromInnerBlocksTemplate,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\n\nconst TEMPLATE = [\n\t[\n\t\t'core/group',\n\t\t{\n\t\t\tlayout: {\n\t\t\t\ttype: 'flex',\n\t\t\t\torientation: 'horizontal',\n\t\t\t},\n\t\t\tstyle: {\n\t\t\t\tspacing: {\n\t\t\t\t\tblockGap: '0.5rem',\n\t\t\t\t},\n\t\t\t},\n\t\t\tmetadata: {\n\t\t\t\tname: __( 'Term Name with Count' ),\n\t\t\t},\n\t\t},\n\t\t[\n\t\t\t[\n\t\t\t\t'core/paragraph',\n\t\t\t\t{\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tname: __( 'Term Name' ),\n\t\t\t\t\t\tbindings: {\n\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\tsource: 'core/term-data',\n\t\t\t\t\t\t\t\targs: {\n\t\t\t\t\t\t\t\t\tkey: 'name',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\t[\n\t\t\t\t'core/paragraph',\n\t\t\t\t{\n\t\t\t\t\tplaceholder: __( '(count)' ),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tname: __( 'Term Count' ),\n\t\t\t\t\t\tbindings: {\n\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\tsource: 'core/term-data',\n\t\t\t\t\t\t\t\targs: {\n\t\t\t\t\t\t\t\t\tkey: 'count',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t],\n\t],\n];\n\nfunction TermTemplateInnerBlocks( { classList } ) {\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{ className: clsx( 'wp-block-term', classList ) },\n\t\t{ template: TEMPLATE, __unstableDisableLayoutClassNames: true }\n\t);\n\treturn <li { ...innerBlocksProps } />;\n}\n\nfunction TermTemplateBlockPreview( {\n\tblocks,\n\tblockContextId,\n\tclassList,\n\tisHidden,\n\tsetActiveBlockContextId,\n} ) {\n\tconst blockPreviewProps = useBlockPreview( {\n\t\tblocks,\n\t\tprops: {\n\t\t\tclassName: clsx( 'wp-block-term', classList ),\n\t\t},\n\t} );\n\n\tconst handleOnClick = () => {\n\t\tsetActiveBlockContextId( blockContextId );\n\t};\n\n\tconst style = {\n\t\tdisplay: isHidden ? 'none' : undefined,\n\t};\n\n\treturn (\n\t\t<li\n\t\t\t{ ...blockPreviewProps }\n\t\t\ttabIndex={ 0 }\n\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role\n\t\t\trole=\"button\"\n\t\t\tonClick={ handleOnClick }\n\t\t\tonKeyPress={ handleOnClick }\n\t\t\tstyle={ style }\n\t\t/>\n\t);\n}\n\n// Prevent re-rendering of the block preview when the terms data changes.\nconst MemoizedTermTemplateBlockPreview = memo( TermTemplateBlockPreview );\n\n/**\n * Builds a hierarchical tree structure from flat terms array.\n *\n * @param {Array} terms Array of term objects.\n * @return {Array} Tree structure with parent/child relationships.\n */\nfunction buildTermsTree( terms ) {\n\tconst termsById = {};\n\tconst rootTerms = [];\n\n\tterms.forEach( ( term ) => {\n\t\ttermsById[ term.id ] = {\n\t\t\tterm,\n\t\t\tchildren: [],\n\t\t};\n\t} );\n\n\tterms.forEach( ( term ) => {\n\t\tif ( term.parent && termsById[ term.parent ] ) {\n\t\t\ttermsById[ term.parent ].children.push( termsById[ term.id ] );\n\t\t} else {\n\t\t\trootTerms.push( termsById[ term.id ] );\n\t\t}\n\t} );\n\n\treturn rootTerms;\n}\n\n/**\n * Renders a single term node and its children recursively.\n *\n * @param {Object} termNode Term node with term object and children.\n * @param {Function} renderTerm Function to render individual terms.\n * @return {JSX.Element} Rendered term node with children.\n */\nfunction renderTermNode( termNode, renderTerm ) {\n\treturn (\n\t\t<li className=\"wp-block-term\">\n\t\t\t{ renderTerm( termNode.term ) }\n\t\t\t{ termNode.children.length > 0 && (\n\t\t\t\t<ul>\n\t\t\t\t\t{ termNode.children.map( ( child ) =>\n\t\t\t\t\t\trenderTermNode( child, renderTerm )\n\t\t\t\t\t) }\n\t\t\t\t</ul>\n\t\t\t) }\n\t\t</li>\n\t);\n}\n\n/**\n * Checks if a term is the currently active term.\n *\n * @param {number} termId The term ID to check.\n * @param {number} activeBlockContextId The currently active block context ID.\n * @param {Array} blockContexts Array of block contexts.\n * @return {boolean} True if the term is active, false otherwise.\n */\nfunction isActiveTerm( termId, activeBlockContextId, blockContexts ) {\n\treturn termId === ( activeBlockContextId || blockContexts[ 0 ]?.termId );\n}\n\nexport default function TermTemplateEdit( {\n\tclientId,\n\tsetAttributes,\n\tcontext: {\n\t\ttermQuery: {\n\t\t\ttaxonomy,\n\t\t\torder,\n\t\t\torderBy,\n\t\t\thideEmpty,\n\t\t\thierarchical,\n\t\t\tparent,\n\t\t\tperPage = 10,\n\t\t} = {},\n\t},\n\t__unstableLayoutClassNames,\n} ) {\n\tconst [ activeBlockContextId, setActiveBlockContextId ] = useState();\n\tconst { replaceInnerBlocks } = useDispatch( blockEditorStore );\n\n\tconst queryArgs = {\n\t\torder,\n\t\torderby: orderBy,\n\t\thide_empty: hideEmpty,\n\t\t// To preview the data the closest to the frontend, we fetch the largest number of terms\n\t\t// and limit them during rendering. This is because WP_Term_Query fetches data in hierarchical manner,\n\t\t// while in editor we build the hierarchy manually. It also allows us to avoid re-fetching data when max terms changes.\n\t\tper_page: 100,\n\t};\n\n\tconst { records: terms, isResolving } = useEntityRecords(\n\t\t'taxonomy',\n\t\ttaxonomy,\n\t\tqueryArgs\n\t);\n\n\t// Filter to show only top-level terms if \"Show only top-level terms\" is enabled.\n\tconst filteredTerms = useMemo( () => {\n\t\tif ( ! terms || parent !== 0 ) {\n\t\t\treturn terms;\n\t\t}\n\t\treturn terms.filter( ( term ) => ! term.parent );\n\t}, [ terms, parent ] );\n\n\tconst { blocks, variations, defaultVariation } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlocks } = select( blockEditorStore );\n\t\t\tconst { getBlockVariations, getDefaultBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\n\t\t\treturn {\n\t\t\t\tblocks: getBlocks( clientId ),\n\t\t\t\tvariations: getBlockVariations( 'core/term-template', 'block' ),\n\t\t\t\tdefaultVariation: getDefaultBlockVariation(\n\t\t\t\t\t'core/term-template',\n\t\t\t\t\t'block'\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: __unstableLayoutClassNames,\n\t} );\n\n\tconst blockContexts = useMemo(\n\t\t() =>\n\t\t\tfilteredTerms?.map( ( term ) => ( {\n\t\t\t\ttaxonomy,\n\t\t\t\ttermId: term.id,\n\t\t\t\tclassList: `term-${ term.id }`,\n\t\t\t\ttermData: term,\n\t\t\t} ) ),\n\t\t[ filteredTerms, taxonomy ]\n\t);\n\n\t// Show variation picker if no blocks exist.\n\tif ( ! blocks?.length ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<BlockVariationPicker\n\t\t\t\t\ticon={ layout }\n\t\t\t\t\tlabel={ __( 'Term Template' ) }\n\t\t\t\t\tvariations={ variations }\n\t\t\t\t\tinstructions={ __(\n\t\t\t\t\t\t'Choose a layout for displaying terms:'\n\t\t\t\t\t) }\n\t\t\t\t\tonSelect={ ( nextVariation = defaultVariation ) => {\n\t\t\t\t\t\tif ( nextVariation.attributes ) {\n\t\t\t\t\t\t\tsetAttributes( nextVariation.attributes );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( nextVariation.innerBlocks ) {\n\t\t\t\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate(\n\t\t\t\t\t\t\t\t\tnextVariation.innerBlocks\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\ttrue\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\tallowSkip\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( isResolving ) {\n\t\treturn (\n\t\t\t<ul { ...blockProps }>\n\t\t\t\t<li className=\"wp-block-term term-loading\">\n\t\t\t\t\t<div className=\"term-loading-placeholder\" />\n\t\t\t\t</li>\n\t\t\t\t<li className=\"wp-block-term term-loading\">\n\t\t\t\t\t<div className=\"term-loading-placeholder\" />\n\t\t\t\t</li>\n\t\t\t\t<li className=\"wp-block-term term-loading\">\n\t\t\t\t\t<div className=\"term-loading-placeholder\" />\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t);\n\t}\n\n\tif ( ! filteredTerms?.length ) {\n\t\treturn <p { ...blockProps }> { __( 'No terms found.' ) }</p>;\n\t}\n\n\tconst renderTerm = ( term ) => {\n\t\tconst blockContext = {\n\t\t\ttaxonomy,\n\t\t\ttermId: term.id,\n\t\t\tclassList: `term-${ term.id }`,\n\t\t\ttermData: term,\n\t\t};\n\n\t\treturn (\n\t\t\t<BlockContextProvider key={ term.id } value={ blockContext }>\n\t\t\t\t{ isActiveTerm(\n\t\t\t\t\tterm.id,\n\t\t\t\t\tactiveBlockContextId,\n\t\t\t\t\tblockContexts\n\t\t\t\t) ? (\n\t\t\t\t\t<TermTemplateInnerBlocks\n\t\t\t\t\t\tclassList={ blockContext.classList }\n\t\t\t\t\t/>\n\t\t\t\t) : null }\n\t\t\t\t<MemoizedTermTemplateBlockPreview\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tblockContextId={ term.id }\n\t\t\t\t\tclassList={ blockContext.classList }\n\t\t\t\t\tsetActiveBlockContextId={ setActiveBlockContextId }\n\t\t\t\t\tisHidden={ isActiveTerm(\n\t\t\t\t\t\tterm.id,\n\t\t\t\t\t\tactiveBlockContextId,\n\t\t\t\t\t\tblockContexts\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</BlockContextProvider>\n\t\t);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ul { ...blockProps }>\n\t\t\t\t{ hierarchical\n\t\t\t\t\t? buildTermsTree( filteredTerms ).map( ( termNode ) =>\n\t\t\t\t\t\t\trenderTermNode( termNode, renderTerm )\n\t\t\t\t\t )\n\t\t\t\t\t: blockContexts &&\n\t\t\t\t\t blockContexts\n\t\t\t\t\t\t\t.slice( 0, perPage )\n\t\t\t\t\t\t\t.map( ( blockContext ) => (\n\t\t\t\t\t\t\t\t<BlockContextProvider\n\t\t\t\t\t\t\t\t\tkey={ blockContext.termId }\n\t\t\t\t\t\t\t\t\tvalue={ blockContext }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ blockContext.termId ===\n\t\t\t\t\t\t\t\t\t( activeBlockContextId ||\n\t\t\t\t\t\t\t\t\t\tblockContexts[ 0 ]?.termId ) ? (\n\t\t\t\t\t\t\t\t\t\t<TermTemplateInnerBlocks\n\t\t\t\t\t\t\t\t\t\t\tclassList={ blockContext.classList }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) : null }\n\t\t\t\t\t\t\t\t\t<MemoizedTermTemplateBlockPreview\n\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\tblockContextId={ blockContext.termId }\n\t\t\t\t\t\t\t\t\t\tclassList={ blockContext.classList }\n\t\t\t\t\t\t\t\t\t\tsetActiveBlockContextId={\n\t\t\t\t\t\t\t\t\t\t\tsetActiveBlockContextId\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tisHidden={\n\t\t\t\t\t\t\t\t\t\t\tblockContext.termId ===\n\t\t\t\t\t\t\t\t\t\t\t( activeBlockContextId ||\n\t\t\t\t\t\t\t\t\t\t\t\tblockContexts[ 0 ]?.termId )\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</BlockContextProvider>\n\t\t\t\t\t\t\t) ) }\n\t\t\t</ul>\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_element","_data","_icons","_i18n","_blockEditor","_coreData","_blocks","_jsxRuntime","TEMPLATE","layout","type","orientation","style","spacing","blockGap","metadata","name","__","bindings","content","source","args","key","placeholder","TermTemplateInnerBlocks","classList","innerBlocksProps","useInnerBlocksProps","className","clsx","template","__unstableDisableLayoutClassNames","jsx","TermTemplateBlockPreview","blocks","blockContextId","isHidden","setActiveBlockContextId","blockPreviewProps","useBlockPreview","props","handleOnClick","display","undefined","tabIndex","role","onClick","onKeyPress","MemoizedTermTemplateBlockPreview","memo","buildTermsTree","terms","termsById","rootTerms","forEach","term","id","children","parent","push","renderTermNode","termNode","renderTerm","jsxs","length","map","child","isActiveTerm","termId","activeBlockContextId","blockContexts","TermTemplateEdit","clientId","setAttributes","context","termsToShow","termQuery","taxonomy","order","orderBy","hideEmpty","hierarchical","perPage","__unstableLayoutClassNames","useState","replaceInnerBlocks","useDispatch","blockEditorStore","queryArgs","orderby","hide_empty","per_page","records","isResolving","useEntityRecords","filteredTerms","useMemo","filter","variations","defaultVariation","useSelect","select","getBlocks","getBlockVariations","getDefaultBlockVariation","blocksStore","blockProps","useBlockProps","termData","__experimentalBlockVariationPicker","icon","label","instructions","onSelect","nextVariation","attributes","innerBlocks","createBlocksFromInnerBlocksTemplate","allowSkip","blockContext","BlockContextProvider","value","Fragment","slice"],"sources":["@wordpress/block-library/src/term-template/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { memo, useMemo, useState } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { layout } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBlockContextProvider,\n\t__experimentalUseBlockPreview as useBlockPreview,\n\t__experimentalBlockVariationPicker as BlockVariationPicker,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport {\n\tcreateBlocksFromInnerBlocksTemplate,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\n\nconst TEMPLATE = [\n\t[\n\t\t'core/group',\n\t\t{\n\t\t\tlayout: {\n\t\t\t\ttype: 'flex',\n\t\t\t\torientation: 'horizontal',\n\t\t\t},\n\t\t\tstyle: {\n\t\t\t\tspacing: {\n\t\t\t\t\tblockGap: '0.5rem',\n\t\t\t\t},\n\t\t\t},\n\t\t\tmetadata: {\n\t\t\t\tname: __( 'Term Name with Count' ),\n\t\t\t},\n\t\t},\n\t\t[\n\t\t\t[\n\t\t\t\t'core/paragraph',\n\t\t\t\t{\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tname: __( 'Term Name' ),\n\t\t\t\t\t\tbindings: {\n\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\tsource: 'core/term-data',\n\t\t\t\t\t\t\t\targs: {\n\t\t\t\t\t\t\t\t\tkey: 'name',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\t[\n\t\t\t\t'core/paragraph',\n\t\t\t\t{\n\t\t\t\t\tplaceholder: __( '(count)' ),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tname: __( 'Term Count' ),\n\t\t\t\t\t\tbindings: {\n\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\tsource: 'core/term-data',\n\t\t\t\t\t\t\t\targs: {\n\t\t\t\t\t\t\t\t\tkey: 'count',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t],\n\t],\n];\n\nfunction TermTemplateInnerBlocks( { classList } ) {\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{ className: clsx( 'wp-block-term', classList ) },\n\t\t{ template: TEMPLATE, __unstableDisableLayoutClassNames: true }\n\t);\n\treturn <li { ...innerBlocksProps } />;\n}\n\nfunction TermTemplateBlockPreview( {\n\tblocks,\n\tblockContextId,\n\tclassList,\n\tisHidden,\n\tsetActiveBlockContextId,\n} ) {\n\tconst blockPreviewProps = useBlockPreview( {\n\t\tblocks,\n\t\tprops: {\n\t\t\tclassName: clsx( 'wp-block-term', classList ),\n\t\t},\n\t} );\n\n\tconst handleOnClick = () => {\n\t\tsetActiveBlockContextId( blockContextId );\n\t};\n\n\tconst style = {\n\t\tdisplay: isHidden ? 'none' : undefined,\n\t};\n\n\treturn (\n\t\t<li\n\t\t\t{ ...blockPreviewProps }\n\t\t\ttabIndex={ 0 }\n\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role\n\t\t\trole=\"button\"\n\t\t\tonClick={ handleOnClick }\n\t\t\tonKeyPress={ handleOnClick }\n\t\t\tstyle={ style }\n\t\t/>\n\t);\n}\n\n// Prevent re-rendering of the block preview when the terms data changes.\nconst MemoizedTermTemplateBlockPreview = memo( TermTemplateBlockPreview );\n\n/**\n * Builds a hierarchical tree structure from flat terms array.\n *\n * @param {Array} terms Array of term objects.\n * @return {Array} Tree structure with parent/child relationships.\n */\nfunction buildTermsTree( terms ) {\n\tconst termsById = {};\n\tconst rootTerms = [];\n\n\tterms.forEach( ( term ) => {\n\t\ttermsById[ term.id ] = {\n\t\t\tterm,\n\t\t\tchildren: [],\n\t\t};\n\t} );\n\n\tterms.forEach( ( term ) => {\n\t\tif ( term.parent && termsById[ term.parent ] ) {\n\t\t\ttermsById[ term.parent ].children.push( termsById[ term.id ] );\n\t\t} else {\n\t\t\trootTerms.push( termsById[ term.id ] );\n\t\t}\n\t} );\n\n\treturn rootTerms;\n}\n\n/**\n * Renders a single term node and its children recursively.\n *\n * @param {Object} termNode Term node with term object and children.\n * @param {Function} renderTerm Function to render individual terms.\n * @return {JSX.Element} Rendered term node with children.\n */\nfunction renderTermNode( termNode, renderTerm ) {\n\treturn (\n\t\t<li className=\"wp-block-term\">\n\t\t\t{ renderTerm( termNode.term ) }\n\t\t\t{ termNode.children.length > 0 && (\n\t\t\t\t<ul>\n\t\t\t\t\t{ termNode.children.map( ( child ) =>\n\t\t\t\t\t\trenderTermNode( child, renderTerm )\n\t\t\t\t\t) }\n\t\t\t\t</ul>\n\t\t\t) }\n\t\t</li>\n\t);\n}\n\n/**\n * Checks if a term is the currently active term.\n *\n * @param {number} termId The term ID to check.\n * @param {number} activeBlockContextId The currently active block context ID.\n * @param {Array} blockContexts Array of block contexts.\n * @return {boolean} True if the term is active, false otherwise.\n */\nfunction isActiveTerm( termId, activeBlockContextId, blockContexts ) {\n\treturn termId === ( activeBlockContextId || blockContexts[ 0 ]?.termId );\n}\n\nexport default function TermTemplateEdit( {\n\tclientId,\n\tsetAttributes,\n\tcontext: {\n\t\ttermsToShow,\n\t\ttermQuery: {\n\t\t\ttaxonomy,\n\t\t\torder,\n\t\t\torderBy,\n\t\t\thideEmpty,\n\t\t\thierarchical,\n\t\t\tperPage = 10,\n\t\t} = {},\n\t},\n\t__unstableLayoutClassNames,\n} ) {\n\tconst [ activeBlockContextId, setActiveBlockContextId ] = useState();\n\tconst { replaceInnerBlocks } = useDispatch( blockEditorStore );\n\n\tconst queryArgs = {\n\t\torder,\n\t\torderby: orderBy,\n\t\thide_empty: hideEmpty,\n\t\t// To preview the data the closest to the frontend, we fetch the largest number of terms\n\t\t// and limit them during rendering. This is because WP_Term_Query fetches data in hierarchical manner,\n\t\t// while in editor we build the hierarchy manually. It also allows us to avoid re-fetching data when max terms changes.\n\t\tper_page: 100,\n\t};\n\n\tconst { records: terms, isResolving } = useEntityRecords(\n\t\t'taxonomy',\n\t\ttaxonomy,\n\t\tqueryArgs\n\t);\n\n\tconst filteredTerms = useMemo( () => {\n\t\tif ( ! terms ) {\n\t\t\treturn [];\n\t\t}\n\t\tif ( termsToShow === 'top-level' ) {\n\t\t\treturn terms.filter( ( term ) => ! term.parent );\n\t\t}\n\t\tif ( termsToShow === 'subterms' ) {\n\t\t\treturn terms.filter( ( term ) => term.parent );\n\t\t}\n\t\treturn terms;\n\t}, [ terms, termsToShow ] );\n\n\tconst { blocks, variations, defaultVariation } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlocks } = select( blockEditorStore );\n\t\t\tconst { getBlockVariations, getDefaultBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\n\t\t\treturn {\n\t\t\t\tblocks: getBlocks( clientId ),\n\t\t\t\tvariations: getBlockVariations( 'core/term-template', 'block' ),\n\t\t\t\tdefaultVariation: getDefaultBlockVariation(\n\t\t\t\t\t'core/term-template',\n\t\t\t\t\t'block'\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: __unstableLayoutClassNames,\n\t} );\n\n\tconst blockContexts = useMemo(\n\t\t() =>\n\t\t\tfilteredTerms?.map( ( term ) => ( {\n\t\t\t\ttaxonomy,\n\t\t\t\ttermId: term.id,\n\t\t\t\tclassList: `term-${ term.id }`,\n\t\t\t\ttermData: term,\n\t\t\t} ) ),\n\t\t[ filteredTerms, taxonomy ]\n\t);\n\n\t// Show variation picker if no blocks exist.\n\tif ( ! blocks?.length ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<BlockVariationPicker\n\t\t\t\t\ticon={ layout }\n\t\t\t\t\tlabel={ __( 'Term Template' ) }\n\t\t\t\t\tvariations={ variations }\n\t\t\t\t\tinstructions={ __(\n\t\t\t\t\t\t'Choose a layout for displaying terms:'\n\t\t\t\t\t) }\n\t\t\t\t\tonSelect={ ( nextVariation = defaultVariation ) => {\n\t\t\t\t\t\tif ( nextVariation.attributes ) {\n\t\t\t\t\t\t\tsetAttributes( nextVariation.attributes );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( nextVariation.innerBlocks ) {\n\t\t\t\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate(\n\t\t\t\t\t\t\t\t\tnextVariation.innerBlocks\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\ttrue\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\tallowSkip\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( isResolving ) {\n\t\treturn (\n\t\t\t<ul { ...blockProps }>\n\t\t\t\t<li className=\"wp-block-term term-loading\">\n\t\t\t\t\t<div className=\"term-loading-placeholder\" />\n\t\t\t\t</li>\n\t\t\t\t<li className=\"wp-block-term term-loading\">\n\t\t\t\t\t<div className=\"term-loading-placeholder\" />\n\t\t\t\t</li>\n\t\t\t\t<li className=\"wp-block-term term-loading\">\n\t\t\t\t\t<div className=\"term-loading-placeholder\" />\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t);\n\t}\n\n\tif ( ! filteredTerms?.length ) {\n\t\treturn <p { ...blockProps }> { __( 'No terms found.' ) }</p>;\n\t}\n\n\tconst renderTerm = ( term ) => {\n\t\tconst blockContext = {\n\t\t\ttaxonomy,\n\t\t\ttermId: term.id,\n\t\t\tclassList: `term-${ term.id }`,\n\t\t\ttermData: term,\n\t\t};\n\n\t\treturn (\n\t\t\t<BlockContextProvider key={ term.id } value={ blockContext }>\n\t\t\t\t{ isActiveTerm(\n\t\t\t\t\tterm.id,\n\t\t\t\t\tactiveBlockContextId,\n\t\t\t\t\tblockContexts\n\t\t\t\t) ? (\n\t\t\t\t\t<TermTemplateInnerBlocks\n\t\t\t\t\t\tclassList={ blockContext.classList }\n\t\t\t\t\t/>\n\t\t\t\t) : null }\n\t\t\t\t<MemoizedTermTemplateBlockPreview\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tblockContextId={ term.id }\n\t\t\t\t\tclassList={ blockContext.classList }\n\t\t\t\t\tsetActiveBlockContextId={ setActiveBlockContextId }\n\t\t\t\t\tisHidden={ isActiveTerm(\n\t\t\t\t\t\tterm.id,\n\t\t\t\t\t\tactiveBlockContextId,\n\t\t\t\t\t\tblockContexts\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</BlockContextProvider>\n\t\t);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ul { ...blockProps }>\n\t\t\t\t{ hierarchical\n\t\t\t\t\t? buildTermsTree( filteredTerms ).map( ( termNode ) =>\n\t\t\t\t\t\t\trenderTermNode( termNode, renderTerm )\n\t\t\t\t\t )\n\t\t\t\t\t: blockContexts &&\n\t\t\t\t\t blockContexts\n\t\t\t\t\t\t\t.slice( 0, perPage )\n\t\t\t\t\t\t\t.map( ( blockContext ) => (\n\t\t\t\t\t\t\t\t<BlockContextProvider\n\t\t\t\t\t\t\t\t\tkey={ blockContext.termId }\n\t\t\t\t\t\t\t\t\tvalue={ blockContext }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ blockContext.termId ===\n\t\t\t\t\t\t\t\t\t( activeBlockContextId ||\n\t\t\t\t\t\t\t\t\t\tblockContexts[ 0 ]?.termId ) ? (\n\t\t\t\t\t\t\t\t\t\t<TermTemplateInnerBlocks\n\t\t\t\t\t\t\t\t\t\t\tclassList={ blockContext.classList }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) : null }\n\t\t\t\t\t\t\t\t\t<MemoizedTermTemplateBlockPreview\n\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\tblockContextId={ blockContext.termId }\n\t\t\t\t\t\t\t\t\t\tclassList={ blockContext.classList }\n\t\t\t\t\t\t\t\t\t\tsetActiveBlockContextId={\n\t\t\t\t\t\t\t\t\t\t\tsetActiveBlockContextId\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tisHidden={\n\t\t\t\t\t\t\t\t\t\t\tblockContext.termId ===\n\t\t\t\t\t\t\t\t\t\t\t( activeBlockContextId ||\n\t\t\t\t\t\t\t\t\t\t\t\tblockContexts[ 0 ]?.termId )\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</BlockContextProvider>\n\t\t\t\t\t\t\t) ) }\n\t\t\t</ul>\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -26,7 +26,7 @@ const metadata = exports.metadata = {
26
26
  ancestor: ["core/terms-query"],
27
27
  description: "Contains the block elements used to render a taxonomy term, like the name, description, and more.",
28
28
  textdomain: "default",
29
- usesContext: ["termQuery"],
29
+ usesContext: ["termQuery", "termsToShow"],
30
30
  attributes: {
31
31
  namespace: {
32
32
  type: "string"
@@ -40,10 +40,15 @@ const metadata = exports.metadata = {
40
40
  hideEmpty: true,
41
41
  include: [],
42
42
  exclude: [],
43
- parent: 0,
43
+ parent: false,
44
44
  hierarchical: false
45
45
  }
46
46
  },
47
+ termsToShow: {
48
+ type: "string",
49
+ "default": "all",
50
+ "enum": ["all", "top-level", "subterms"]
51
+ },
47
52
  tagName: {
48
53
  type: "string",
49
54
  "default": "div"
@@ -54,7 +59,8 @@ const metadata = exports.metadata = {
54
59
  },
55
60
  providesContext: {
56
61
  termQueryId: "termQueryId",
57
- termQuery: "termQuery"
62
+ termQuery: "termQuery",
63
+ termsToShow: "termsToShow"
58
64
  },
59
65
  supports: {
60
66
  align: ["wide", "full"],
@@ -1 +1 @@
1
- {"version":3,"names":["_icons","require","_initBlock","_interopRequireDefault","_edit","_save","metadata","exports","$schema","apiVersion","__experimental","name","title","category","description","keywords","textdomain","attributes","termQueryId","type","termQuery","perPage","pages","taxonomy","order","orderBy","hideEmpty","include","exclude","parent","hierarchical","tagName","namespace","providesContext","supports","align","html","interactivity","allowedBlocks","style","settings","icon","edit","save","example","init","initBlock"],"sources":["@wordpress/block-library/src/terms-query/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { loop 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;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n\texample: {},\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":";;;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AAKA,IAAAC,UAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,KAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,KAAA,GAAAF,sBAAA,CAAAF,OAAA;AAXA;AACA;AACA;AAGA;AACA;AACA;AAFA,MAAAK,QAAA,GAAAC,OAAA,CAAAD,QAAA;EAAAE,OAAA;EAAAC,UAAA;EAAAC,cAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,WAAA;MAAAC,IAAA;IAAA;IAAAC,SAAA;MAAAD,IAAA;MAAA;QAAAE,OAAA;QAAAC,KAAA;QAAAC,QAAA;QAAAC,KAAA;QAAAC,OAAA;QAAAC,SAAA;QAAAC,OAAA;QAAAC,OAAA;QAAAC,MAAA;QAAAC,YAAA;MAAA;IAAA;IAAAC,OAAA;MAAAZ,IAAA;MAAA;IAAA;IAAAa,SAAA;MAAAb,IAAA;IAAA;EAAA;EAAAc,eAAA;IAAAf,WAAA;IAAAE,SAAA;EAAA;EAAAc,QAAA;IAAAC,KAAA;IAAAC,IAAA;IAAAC,aAAA;EAAA;EAAAC,aAAA;EAAAC,KAAA;AAAA;AAQA,MAAM;EAAE5B;AAAK,CAAC,GAAGL,QAAQ;AAACC,OAAA,CAAAI,IAAA,GAAAA,IAAA;AAGnB,MAAM6B,QAAQ,GAAAjC,OAAA,CAAAiC,QAAA,GAAG;EACvBC,IAAI,EAAJA,WAAI;EACJC,IAAI,EAAJA,aAAI;EACJC,IAAI,EAAJA,aAAI;EACJC,OAAO,EAAE,CAAC;AACX,CAAC;AAEM,MAAMC,IAAI,GAAGA,CAAA,KAAM,IAAAC,kBAAS,EAAE;EAAEnC,IAAI;EAAEL,QAAQ;EAAEkC;AAAS,CAAE,CAAC;AAACjC,OAAA,CAAAsC,IAAA,GAAAA,IAAA","ignoreList":[]}
1
+ {"version":3,"names":["_icons","require","_initBlock","_interopRequireDefault","_edit","_save","metadata","exports","$schema","apiVersion","__experimental","name","title","category","description","keywords","textdomain","attributes","termQueryId","type","termQuery","perPage","pages","taxonomy","order","orderBy","hideEmpty","include","exclude","parent","hierarchical","termsToShow","tagName","namespace","providesContext","supports","align","html","interactivity","allowedBlocks","style","settings","icon","edit","save","example","init","initBlock"],"sources":["@wordpress/block-library/src/terms-query/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { loop 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;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n\texample: {},\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":";;;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AAKA,IAAAC,UAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,KAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,KAAA,GAAAF,sBAAA,CAAAF,OAAA;AAXA;AACA;AACA;AAGA;AACA;AACA;AAFA,MAAAK,QAAA,GAAAC,OAAA,CAAAD,QAAA;EAAAE,OAAA;EAAAC,UAAA;EAAAC,cAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,WAAA;MAAAC,IAAA;IAAA;IAAAC,SAAA;MAAAD,IAAA;MAAA;QAAAE,OAAA;QAAAC,KAAA;QAAAC,QAAA;QAAAC,KAAA;QAAAC,OAAA;QAAAC,SAAA;QAAAC,OAAA;QAAAC,OAAA;QAAAC,MAAA;QAAAC,YAAA;MAAA;IAAA;IAAAC,WAAA;MAAAZ,IAAA;MAAA;MAAA;IAAA;IAAAa,OAAA;MAAAb,IAAA;MAAA;IAAA;IAAAc,SAAA;MAAAd,IAAA;IAAA;EAAA;EAAAe,eAAA;IAAAhB,WAAA;IAAAE,SAAA;IAAAW,WAAA;EAAA;EAAAI,QAAA;IAAAC,KAAA;IAAAC,IAAA;IAAAC,aAAA;EAAA;EAAAC,aAAA;EAAAC,KAAA;AAAA;AAQA,MAAM;EAAE7B;AAAK,CAAC,GAAGL,QAAQ;AAACC,OAAA,CAAAI,IAAA,GAAAA,IAAA;AAGnB,MAAM8B,QAAQ,GAAAlC,OAAA,CAAAkC,QAAA,GAAG;EACvBC,IAAI,EAAJA,WAAI;EACJC,IAAI,EAAJA,aAAI;EACJC,IAAI,EAAJA,aAAI;EACJC,OAAO,EAAE,CAAC;AACX,CAAC;AAEM,MAAMC,IAAI,GAAGA,CAAA,KAAM,IAAAC,kBAAS,EAAE;EAAEpC,IAAI;EAAEL,QAAQ;EAAEmC;AAAS,CAAE,CAAC;AAAClC,OAAA,CAAAuC,IAAA,GAAAA,IAAA","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = AdvancedControls;
7
+ var _i18n = require("@wordpress/i18n");
8
+ var _blockEditor = require("@wordpress/block-editor");
9
+ var _lockUnlock = require("../../lock-unlock");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ /**
12
+ * WordPress dependencies
13
+ */
14
+
15
+ /**
16
+ * Internal dependencies
17
+ */
18
+
19
+ const {
20
+ HTMLElementControl
21
+ } = (0, _lockUnlock.unlock)(_blockEditor.privateApis);
22
+ function AdvancedControls({
23
+ TagName,
24
+ setAttributes,
25
+ clientId
26
+ }) {
27
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.InspectorControls, {
28
+ group: "advanced",
29
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(HTMLElementControl, {
30
+ tagName: TagName,
31
+ onChange: value => setAttributes({
32
+ tagName: value
33
+ }),
34
+ clientId: clientId,
35
+ options: [{
36
+ label: (0, _i18n.__)('Default (<div>)'),
37
+ value: 'div'
38
+ }, {
39
+ label: '<main>',
40
+ value: 'main'
41
+ }, {
42
+ label: '<section>',
43
+ value: 'section'
44
+ }, {
45
+ label: '<aside>',
46
+ value: 'aside'
47
+ }]
48
+ })
49
+ });
50
+ }
51
+ //# sourceMappingURL=advanced-controls.js.map