itmar-block-packages 2.1.2 → 3.0.2

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 (218) hide show
  1. package/README.md +18 -4
  2. package/build/cjs/AnimationBlock.js +61 -92
  3. package/build/cjs/AnimationBlock.js.map +1 -1
  4. package/build/cjs/BlockEditWrapper.js +3 -10
  5. package/build/cjs/BlockEditWrapper.js.map +1 -1
  6. package/build/cjs/BlockPlace.js +277 -482
  7. package/build/cjs/BlockPlace.js.map +1 -1
  8. package/build/cjs/BrockInserter.js +195 -191
  9. package/build/cjs/BrockInserter.js.map +1 -1
  10. package/build/cjs/DateElm.js +254 -281
  11. package/build/cjs/DateElm.js.map +1 -1
  12. package/build/cjs/DraggableBox.js +99 -129
  13. package/build/cjs/DraggableBox.js.map +1 -1
  14. package/build/cjs/GridControls.js +292 -392
  15. package/build/cjs/GridControls.js.map +1 -1
  16. package/build/cjs/IconSelectControl.js +65 -156
  17. package/build/cjs/IconSelectControl.js.map +1 -1
  18. package/build/cjs/JapaneseHolidays.js +67 -76
  19. package/build/cjs/JapaneseHolidays.js.map +1 -1
  20. package/build/cjs/MasonryControl.js +95 -100
  21. package/build/cjs/MasonryControl.js.map +1 -1
  22. package/build/cjs/PseudoElm.js +37 -50
  23. package/build/cjs/PseudoElm.js.map +1 -1
  24. package/build/cjs/ShadowStyle.js +216 -430
  25. package/build/cjs/ShadowStyle.js.map +1 -1
  26. package/build/cjs/SwiperControl.js +240 -241
  27. package/build/cjs/SwiperControl.js.map +1 -1
  28. package/build/cjs/ToggleElement.js +17 -9
  29. package/build/cjs/ToggleElement.js.map +1 -1
  30. package/build/cjs/TypographyControls.js +73 -139
  31. package/build/cjs/TypographyControls.js.map +1 -1
  32. package/build/cjs/UpdateAllPostsBlockAttributes.js +102 -119
  33. package/build/cjs/UpdateAllPostsBlockAttributes.js.map +1 -1
  34. package/build/cjs/ZipAddress.js +27 -23
  35. package/build/cjs/ZipAddress.js.map +1 -1
  36. package/build/cjs/blockStore.js +42 -47
  37. package/build/cjs/blockStore.js.map +1 -1
  38. package/build/cjs/cssPropertes.js +165 -117
  39. package/build/cjs/cssPropertes.js.map +1 -1
  40. package/build/cjs/customHooks.js +277 -0
  41. package/build/cjs/customHooks.js.map +1 -0
  42. package/build/cjs/formatCreate.js +115 -145
  43. package/build/cjs/formatCreate.js.map +1 -1
  44. package/build/cjs/hslToRgb.js +112 -116
  45. package/build/cjs/hslToRgb.js.map +1 -1
  46. package/build/cjs/index.js +15 -11
  47. package/build/cjs/index.js.map +1 -1
  48. package/build/cjs/mediaUpload.js +95 -158
  49. package/build/cjs/mediaUpload.js.map +1 -1
  50. package/build/cjs/node_modules/swiper/shared/ssr-window.esm.js +144 -0
  51. package/build/cjs/node_modules/swiper/shared/ssr-window.esm.js.map +1 -0
  52. package/build/cjs/node_modules/swiper/shared/swiper-core.js +3925 -0
  53. package/build/cjs/node_modules/swiper/shared/swiper-core.js.map +1 -0
  54. package/build/cjs/node_modules/swiper/shared/utils.js +294 -0
  55. package/build/cjs/node_modules/swiper/shared/utils.js.map +1 -0
  56. package/build/cjs/pickupStore.js +56 -54
  57. package/build/cjs/pickupStore.js.map +1 -1
  58. package/build/cjs/shopfiApi.js +127 -138
  59. package/build/cjs/shopfiApi.js.map +1 -1
  60. package/build/cjs/types/AnimationBlock.d.ts +22 -0
  61. package/build/cjs/types/BlockEditWrapper.d.ts +7 -0
  62. package/build/cjs/types/BlockPlace.d.ts +49 -0
  63. package/build/cjs/types/BrockInserter.d.ts +6 -0
  64. package/build/cjs/types/DateElm.d.ts +69 -0
  65. package/build/cjs/types/DraggableBox.d.ts +19 -0
  66. package/build/cjs/types/GridControls.d.ts +27 -0
  67. package/build/cjs/types/IconSelectControl.d.ts +17 -0
  68. package/build/cjs/types/JapaneseHolidays.d.ts +6 -0
  69. package/build/cjs/types/MasonryControl.d.ts +35 -0
  70. package/build/cjs/types/PseudoElm.d.ts +11 -0
  71. package/build/cjs/types/ShadowStyle.d.ts +33 -0
  72. package/build/cjs/types/SwiperControl.d.ts +12 -0
  73. package/build/cjs/types/ToggleElement.d.ts +13 -0
  74. package/build/cjs/types/TypographyControls.d.ts +17 -0
  75. package/build/cjs/types/UpdateAllPostsBlockAttributes.d.ts +10 -0
  76. package/build/cjs/types/ZipAddress.d.ts +18 -0
  77. package/build/cjs/types/blockStore.d.ts +15 -0
  78. package/build/cjs/types/cssPropertes.d.ts +53 -0
  79. package/build/cjs/types/customHooks.d.ts +11 -0
  80. package/build/cjs/types/formatCreate.d.ts +18 -0
  81. package/build/cjs/types/hslToRgb.d.ts +23 -0
  82. package/build/cjs/types/index.d.ts +31 -0
  83. package/build/cjs/types/mediaUpload.d.ts +29 -0
  84. package/build/cjs/types/pickupStore.d.ts +39 -0
  85. package/build/cjs/types/shopfiApi.d.ts +18 -0
  86. package/build/cjs/types/validationCheck.d.ts +5 -0
  87. package/build/cjs/types/wordpressApi.d.ts +99 -0
  88. package/build/cjs/validationCheck.js +15 -9
  89. package/build/cjs/validationCheck.js.map +1 -1
  90. package/build/cjs/wordpressApi.js +364 -576
  91. package/build/cjs/wordpressApi.js.map +1 -1
  92. package/build/esm/AnimationBlock.d.ts +22 -0
  93. package/build/esm/AnimationBlock.js +61 -92
  94. package/build/esm/AnimationBlock.js.map +1 -1
  95. package/build/esm/BlockEditWrapper.d.ts +7 -0
  96. package/build/esm/BlockEditWrapper.js +4 -11
  97. package/build/esm/BlockEditWrapper.js.map +1 -1
  98. package/build/esm/BlockPlace.d.ts +49 -0
  99. package/build/esm/BlockPlace.js +279 -484
  100. package/build/esm/BlockPlace.js.map +1 -1
  101. package/build/esm/BrockInserter.d.ts +6 -0
  102. package/build/esm/BrockInserter.js +195 -191
  103. package/build/esm/BrockInserter.js.map +1 -1
  104. package/build/esm/DateElm.d.ts +69 -0
  105. package/build/esm/DateElm.js +254 -281
  106. package/build/esm/DateElm.js.map +1 -1
  107. package/build/esm/DraggableBox.d.ts +19 -0
  108. package/build/esm/DraggableBox.js +99 -129
  109. package/build/esm/DraggableBox.js.map +1 -1
  110. package/build/esm/GridControls.d.ts +27 -0
  111. package/build/esm/GridControls.js +294 -394
  112. package/build/esm/GridControls.js.map +1 -1
  113. package/build/esm/IconSelectControl.d.ts +17 -0
  114. package/build/esm/IconSelectControl.js +65 -156
  115. package/build/esm/IconSelectControl.js.map +1 -1
  116. package/build/esm/JapaneseHolidays.d.ts +6 -0
  117. package/build/esm/JapaneseHolidays.js +67 -76
  118. package/build/esm/JapaneseHolidays.js.map +1 -1
  119. package/build/esm/MasonryControl.d.ts +35 -0
  120. package/build/esm/MasonryControl.js +95 -100
  121. package/build/esm/MasonryControl.js.map +1 -1
  122. package/build/esm/PseudoElm.d.ts +11 -0
  123. package/build/esm/PseudoElm.js +37 -50
  124. package/build/esm/PseudoElm.js.map +1 -1
  125. package/build/esm/ShadowStyle.d.ts +33 -0
  126. package/build/esm/ShadowStyle.js +217 -431
  127. package/build/esm/ShadowStyle.js.map +1 -1
  128. package/build/esm/SwiperControl.d.ts +12 -0
  129. package/build/esm/SwiperControl.js +240 -241
  130. package/build/esm/SwiperControl.js.map +1 -1
  131. package/build/esm/ToggleElement.d.ts +13 -0
  132. package/build/esm/ToggleElement.js +17 -9
  133. package/build/esm/ToggleElement.js.map +1 -1
  134. package/build/esm/TypographyControls.d.ts +17 -0
  135. package/build/esm/TypographyControls.js +73 -139
  136. package/build/esm/TypographyControls.js.map +1 -1
  137. package/build/esm/UpdateAllPostsBlockAttributes.d.ts +10 -0
  138. package/build/esm/UpdateAllPostsBlockAttributes.js +103 -120
  139. package/build/esm/UpdateAllPostsBlockAttributes.js.map +1 -1
  140. package/build/esm/ZipAddress.d.ts +18 -0
  141. package/build/esm/ZipAddress.js +27 -23
  142. package/build/esm/ZipAddress.js.map +1 -1
  143. package/build/esm/blockStore.d.ts +15 -0
  144. package/build/esm/blockStore.js +42 -47
  145. package/build/esm/blockStore.js.map +1 -1
  146. package/build/esm/cssPropertes.d.ts +53 -0
  147. package/build/esm/cssPropertes.js +165 -117
  148. package/build/esm/cssPropertes.js.map +1 -1
  149. package/build/esm/customHooks.d.ts +11 -0
  150. package/build/esm/customHooks.js +267 -0
  151. package/build/esm/customHooks.js.map +1 -0
  152. package/build/esm/formatCreate.d.ts +18 -0
  153. package/build/esm/formatCreate.js +115 -145
  154. package/build/esm/formatCreate.js.map +1 -1
  155. package/build/esm/hslToRgb.d.ts +23 -0
  156. package/build/esm/hslToRgb.js +112 -116
  157. package/build/esm/hslToRgb.js.map +1 -1
  158. package/build/esm/index.d.ts +27 -0
  159. package/build/esm/index.js +8 -1
  160. package/build/esm/index.js.map +1 -1
  161. package/build/esm/mediaUpload.d.ts +29 -0
  162. package/build/esm/mediaUpload.js +95 -158
  163. package/build/esm/mediaUpload.js.map +1 -1
  164. package/build/esm/node_modules/swiper/shared/ssr-window.esm.js +141 -0
  165. package/build/esm/node_modules/swiper/shared/ssr-window.esm.js.map +1 -0
  166. package/build/esm/node_modules/swiper/shared/swiper-core.js +3922 -0
  167. package/build/esm/node_modules/swiper/shared/swiper-core.js.map +1 -0
  168. package/build/esm/node_modules/swiper/shared/utils.js +274 -0
  169. package/build/esm/node_modules/swiper/shared/utils.js.map +1 -0
  170. package/build/esm/pickupStore.d.ts +39 -0
  171. package/build/esm/pickupStore.js +56 -54
  172. package/build/esm/pickupStore.js.map +1 -1
  173. package/build/esm/shopfiApi.d.ts +18 -0
  174. package/build/esm/shopfiApi.js +127 -138
  175. package/build/esm/shopfiApi.js.map +1 -1
  176. package/build/esm/types/AnimationBlock.d.ts +22 -0
  177. package/build/esm/types/BlockEditWrapper.d.ts +7 -0
  178. package/build/esm/types/BlockPlace.d.ts +49 -0
  179. package/build/esm/types/BrockInserter.d.ts +6 -0
  180. package/build/esm/types/DateElm.d.ts +69 -0
  181. package/build/esm/types/DraggableBox.d.ts +19 -0
  182. package/build/esm/types/GridControls.d.ts +27 -0
  183. package/build/esm/types/IconSelectControl.d.ts +17 -0
  184. package/build/esm/types/JapaneseHolidays.d.ts +6 -0
  185. package/build/esm/types/MasonryControl.d.ts +35 -0
  186. package/build/esm/types/PseudoElm.d.ts +11 -0
  187. package/build/esm/types/ShadowStyle.d.ts +33 -0
  188. package/build/esm/types/SwiperControl.d.ts +12 -0
  189. package/build/esm/types/ToggleElement.d.ts +13 -0
  190. package/build/esm/types/TypographyControls.d.ts +17 -0
  191. package/build/esm/types/UpdateAllPostsBlockAttributes.d.ts +10 -0
  192. package/build/esm/types/ZipAddress.d.ts +18 -0
  193. package/build/esm/types/blockStore.d.ts +15 -0
  194. package/build/esm/types/cssPropertes.d.ts +53 -0
  195. package/build/esm/types/customHooks.d.ts +11 -0
  196. package/build/esm/types/formatCreate.d.ts +18 -0
  197. package/build/esm/types/hslToRgb.d.ts +23 -0
  198. package/build/esm/types/index.d.ts +31 -0
  199. package/build/esm/types/mediaUpload.d.ts +29 -0
  200. package/build/esm/types/pickupStore.d.ts +39 -0
  201. package/build/esm/types/shopfiApi.d.ts +18 -0
  202. package/build/esm/types/validationCheck.d.ts +5 -0
  203. package/build/esm/types/wordpressApi.d.ts +99 -0
  204. package/build/esm/validationCheck.d.ts +5 -0
  205. package/build/esm/validationCheck.js +15 -9
  206. package/build/esm/validationCheck.js.map +1 -1
  207. package/build/esm/wordpressApi.d.ts +99 -0
  208. package/build/esm/wordpressApi.js +365 -577
  209. package/build/esm/wordpressApi.js.map +1 -1
  210. package/package.json +29 -7
  211. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -117
  212. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  213. package/build/cjs/customFooks.js +0 -300
  214. package/build/cjs/customFooks.js.map +0 -1
  215. package/build/esm/_virtual/_rollupPluginBabelHelpers.js +0 -107
  216. package/build/esm/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  217. package/build/esm/customFooks.js +0 -290
  218. package/build/esm/customFooks.js.map +0 -1
@@ -1,618 +1,406 @@
1
- import { extends as _extends, objectSpread2 as _objectSpread2, asyncToGenerator as _asyncToGenerator } from './_virtual/_rollupPluginBabelHelpers.js';
2
- import { useState, useEffect } from '@wordpress/element';
1
+ import { createElement, useState, useEffect } from '@wordpress/element';
3
2
  import { __ } from '@wordpress/i18n';
3
+ import _ from 'lodash';
4
4
  import { ComboboxControl, ToggleControl, CheckboxControl } from '@wordpress/components';
5
5
  import apiFetch from '@wordpress/api-fetch';
6
6
  import { addQueryArgs } from '@wordpress/url';
7
7
 
8
8
  //const _ = require("lodash");
9
-
10
- var restFetchData = /*#__PURE__*/function () {
11
- var _ref = _asyncToGenerator(function* (path) {
9
+ const restFetchData = async (path) => {
12
10
  try {
13
- var ret_data = yield apiFetch({
14
- path: path
15
- });
16
- return ret_data;
17
- } catch (error) {
18
- console.error("Error fetching data:", error.message);
11
+ // apiFetch にジェネリクス <T> を渡すことで戻り値に型が付く
12
+ const ret_data = await apiFetch({ path });
13
+ return ret_data;
19
14
  }
20
- });
21
- return function restFetchData(_x) {
22
- return _ref.apply(this, arguments);
23
- };
24
- }();
25
-
26
- //コンボボックスコントロールのレンダリング関数
27
- var SelectControl = props => {
28
- var {
29
- selectedSlug,
30
- label,
31
- homeUrl,
32
- fetchOptions
33
- } = props;
34
- var [options, setOptions] = useState([]);
35
- useEffect(() => {
36
- var fetchData = /*#__PURE__*/function () {
37
- var _ref2 = _asyncToGenerator(function* () {
38
- try {
39
- var fetchedOptions = yield fetchOptions(homeUrl, props);
40
- setOptions(fetchedOptions);
41
- } catch (error) {
42
- console.error("Error fetching data:", error.message);
43
- }
44
- });
45
- return function fetchData() {
46
- return _ref2.apply(this, arguments);
47
- };
48
- }();
49
- fetchData();
50
- }, [fetchOptions, homeUrl, props.restBase, props.status, props.perPage, props.orderby, props.order, props.search]);
51
- var selectedInfo = options.find(info => info.slug === selectedSlug);
52
- return /*#__PURE__*/React.createElement(ComboboxControl, {
53
- label: label,
54
- options: options,
55
- value: selectedInfo ? selectedInfo.value : -1,
56
- onChange: newValue => {
57
- var newInfo = options.find(info => info.value === newValue);
58
- props.onChange(newInfo);
15
+ catch (error) {
16
+ // エラーメッセージの安全な取り出し
17
+ const errorMessage = error.message || "Unknown error occurred";
18
+ console.error("Error fetching data:", errorMessage);
19
+ // エラー時は undefined を返して呼び出し元で判定できるようにする
20
+ return undefined;
59
21
  }
60
- });
61
22
  };
62
-
23
+ //コンボボックスコントロールのレンダリング関数
24
+ const SelectControl = (props) => {
25
+ const { selectedSlug, label, homeUrl, fetchOptions } = props;
26
+ const [options, setOptions] = useState([]);
27
+ useEffect(() => {
28
+ const fetchData = async () => {
29
+ try {
30
+ const fetchedOptions = await fetchOptions(homeUrl, props);
31
+ setOptions(fetchedOptions);
32
+ }
33
+ catch (error) {
34
+ console.error("Error fetching data:", error.message);
35
+ }
36
+ };
37
+ fetchData();
38
+ }, [
39
+ fetchOptions,
40
+ homeUrl,
41
+ props.restBase,
42
+ props.status,
43
+ props.perPage,
44
+ props.orderby,
45
+ props.order,
46
+ props.search,
47
+ ]);
48
+ const selectedInfo = options.find((info) => info.slug === selectedSlug);
49
+ return (createElement(ComboboxControl, { label: label, options: options, value: selectedInfo ? selectedInfo.value : undefined, onChange: (newValue) => {
50
+ const newInfo = options.find((info) => info.value === newValue);
51
+ props.onChange(newInfo);
52
+ } }));
53
+ };
63
54
  //選択コントロールのレンダリング関数
64
- var ChoiceControl = props => {
65
- var {
66
- selectedSlug,
67
- choiceItems,
68
- dispTaxonomies,
69
- type,
70
- blockMap,
71
- textDomain,
72
- fetchFunction
73
- } = props;
74
- var [choices, setChoices] = useState([]);
75
- useEffect(() => {
76
- if (!selectedSlug) return; //ポストタイプのスラッグが選択されていないときは処理終了
77
- var fetchData = /*#__PURE__*/function () {
78
- var _ref3 = _asyncToGenerator(function* () {
79
- try {
80
- var fetchChoices = yield fetchFunction(selectedSlug);
81
- setChoices(fetchChoices);
82
- //指定の投稿タイプに含まれないフィールドを削除する
83
- pruneChoiceItemsByObjectKeys(fetchChoices[0], choiceItems);
84
- } catch (error) {
85
- console.error("Error fetching data:", error.message);
55
+ const ChoiceControl = (props) => {
56
+ const { selectedSlug, choiceItems, dispTaxonomies, type, blockMap, fetchFunction, } = props;
57
+ const [choices, setChoices] = useState([]);
58
+ useEffect(() => {
59
+ if (!selectedSlug)
60
+ return; //ポストタイプのスラッグが選択されていないときは処理終了
61
+ const fetchData = async () => {
62
+ try {
63
+ const fetchChoices = await fetchFunction(selectedSlug);
64
+ // ここでチェックを入れる
65
+ if (!fetchChoices) {
66
+ setChoices([]); // データがない場合は空配列にする
67
+ return;
68
+ }
69
+ setChoices(fetchChoices);
70
+ //指定の投稿タイプに含まれないフィールドを削除する
71
+ pruneChoiceItemsByObjectKeys(fetchChoices[0], choiceItems);
72
+ }
73
+ catch (error) {
74
+ console.error("Error fetching data:", error.message);
75
+ }
76
+ };
77
+ fetchData();
78
+ }, [selectedSlug, fetchFunction]);
79
+ //選択肢が変わったときに選択されている項目の配列内容を更新するハンドラ
80
+ const handleChoiceChange = (checked, target, setItems) => {
81
+ if (checked) {
82
+ // targetが重複していない場合のみ追加
83
+ if (!setItems.some((item) => _.isEqual(item, target))) {
84
+ return [...setItems, target];
85
+ }
86
86
  }
87
- });
88
- return function fetchData() {
89
- return _ref3.apply(this, arguments);
90
- };
91
- }();
92
- fetchData();
93
- }, [selectedSlug, fetchFunction]);
94
-
95
- //選択肢が変わったときに選択されている項目の配列内容を更新するハンドラ
96
- var handleChoiceChange = (checked, target, setItems) => {
97
- if (checked) {
98
- // targetが重複していない場合のみ追加
99
- if (!setItems.some(item => _.isEqual(item, target))) {
100
- return [...setItems, target];
101
- }
102
- } else {
103
- // targetを配列から削除
104
- return setItems.filter(item => !_.isEqual(item, target));
105
- }
106
- return setItems;
107
- };
108
- /**
109
- * dataObj のキー一覧を「choiceItems と比較する形」に変換して Set で返す
110
- * - 通常キー: そのまま
111
- * - acf / meta: 子キーに `${parent}_` を付けたもの(例: acf_relate_url, meta_footnotes)
112
- */
113
- function buildComparableKeySet(dataObj) {
114
- var keySet = new Set();
115
- if (!dataObj || typeof dataObj !== "object") return keySet;
116
- for (var [key, val] of Object.entries(dataObj)) {
117
- if ((key === "acf" || key === "meta") && val && typeof val === "object" && !Array.isArray(val)) {
118
- for (var childKey of Object.keys(val)) {
119
- keySet.add("".concat(key, "_").concat(childKey));
87
+ else {
88
+ // targetを配列から削除
89
+ return setItems.filter((item) => !_.isEqual(item, target));
120
90
  }
121
- continue;
122
- }
123
- keySet.add(key);
124
- }
125
- return keySet;
126
- }
127
-
128
- /**
129
- * choiceItems を dataObj のキーに合わせて削除する
130
- * - choiceItems が string 配列でも、{value: "..."} の配列でも動くようにしてあります
131
- */
132
- function pruneChoiceItemsByObjectKeys(dataObj, choiceItems) {
133
- var validKeys = buildComparableKeySet(dataObj);
134
- var getItemKey = item => {
135
- var _ref4, _ref5, _item$value;
136
- if (typeof item === "string") return item;
137
- if (item && typeof item === "object") return (_ref4 = (_ref5 = (_item$value = item.value) !== null && _item$value !== void 0 ? _item$value : item.key) !== null && _ref5 !== void 0 ? _ref5 : item.name) !== null && _ref4 !== void 0 ? _ref4 : "";
138
- return "";
91
+ return setItems;
139
92
  };
140
- var next = (choiceItems !== null && choiceItems !== void 0 ? choiceItems : []).filter(item => validKeys.has(getItemKey(item)));
141
-
142
- // 配列の参照はそのまま、中身だけ置き換える
143
- choiceItems.splice(0, choiceItems.length, ...next);
144
- return choiceItems; // 必要なら返す
145
- }
146
- var _dispCustumFields = function dispCustumFields(obj) {
147
- var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
148
- var isImage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
149
- var onChange = arguments.length > 3 ? arguments[3] : undefined;
150
- return Object.entries(obj).map(_ref6 => {
151
- var [key, value] = _ref6;
152
- var fieldName = prefix ? "".concat(prefix, ".").concat(key) : key; //prefixはグループ名
153
-
154
- var fieldLabel = key.replace(/^(meta_|acf_)/, "");
155
- //オブジェクトであって配列でないものがグループと考える
156
- if (typeof value === "object" && !Array.isArray(value) && value !== null) {
157
- return /*#__PURE__*/React.createElement("div", {
158
- className: "group_area"
159
- }, /*#__PURE__*/React.createElement("div", {
160
- className: "group_label"
161
- }, fieldLabel), /*#__PURE__*/React.createElement("div", {
162
- key: fieldName,
163
- className: "field_group"
164
- }, _dispCustumFields(value, fieldName, isImage, onChange)));
165
- } else {
166
- if (key === "meta__acf_changed" || key === "meta_footnotes") return; //_acf_changedは対象外
167
-
168
- //フィールドを表示するブロックの選択肢
169
- var options = [{
170
- value: "itmar/design-title",
171
- label: "itmar/design-title"
172
- }, {
173
- value: "core/paragraph",
174
- label: "core/paragraph"
175
- }, {
176
- value: "core/image",
177
- label: "core/image"
178
- }, {
179
- value: "itmar/slide-mv",
180
- label: "itmar/slide-mv"
181
- }];
182
- return /*#__PURE__*/React.createElement("div", {
183
- className: "itmar_custom_field_set"
184
- }, /*#__PURE__*/React.createElement(ToggleControl, {
185
- key: fieldName,
186
- className: "field_choice",
187
- label: fieldLabel,
188
- checked: choiceItems.some(choiceField => choiceField === fieldName),
189
- onChange: checked => {
190
- var newChoiceFields = handleChoiceChange(checked, fieldName, choiceItems);
191
- props.onChange(newChoiceFields);
192
- }
193
- }), !isImage && /*#__PURE__*/React.createElement(ComboboxControl, {
194
- options: options,
195
- value:
196
- //blockMap[`${prefix ? groupLabel : ""}${key}`] || "itmar/design-title"
197
- blockMap["".concat(prefix ? prefix + "." : "").concat(key)] || "itmar/design-title",
198
- onChange: newValue => {
199
- //const fieldKey = prefix ? `${groupLabel}${key}` : `${key}`;
200
- var fieldKey = prefix ? "".concat(prefix, ".").concat(key) : "".concat(key);
201
- var newBlockMap = _objectSpread2(_objectSpread2({}, blockMap), {}, {
202
- [fieldKey]: newValue
203
- });
204
- props.onBlockMapChange(newBlockMap);
205
- }
206
- }));
207
- }
208
- });
209
- };
210
- return /*#__PURE__*/React.createElement("div", {
211
- className: "".concat(type, "_section")
212
- }, type === "taxonomy" && choices.map((choice, index) => {
213
- return /*#__PURE__*/React.createElement("div", {
214
- key: index,
215
- className: "term_section"
216
- }, /*#__PURE__*/React.createElement("div", {
217
- className: "tax_label"
218
- }, choice.name, /*#__PURE__*/React.createElement(ToggleControl, {
219
- label: __("Display", "block-collections"),
220
- checked: dispTaxonomies.some(tax => tax === choice.slug),
221
- onChange: checked => {
222
- var newChoiceFields = handleChoiceChange(checked, choice.slug, dispTaxonomies);
223
- props.onSetDispTax(newChoiceFields);
224
- }
225
- })), choice.terms.map((term, index) => {
226
- return /*#__PURE__*/React.createElement(CheckboxControl, {
227
- className: "term_check",
228
- key: index,
229
- label: term.name,
230
- checked: choiceItems.some(choiceTerm => {
231
- return choiceTerm.taxonomy === choice.slug && choiceTerm.term.id === term.id;
232
- }),
233
- onChange: checked => {
234
- var target = {
235
- taxonomy: choice.slug,
236
- term: {
237
- id: term.id,
238
- slug: term.slug,
239
- name: term.name
93
+ /**
94
+ * dataObj のキー一覧を「choiceItems と比較する形」に変換して Set で返す
95
+ * - 通常キー: そのまま
96
+ * - acf / meta: 子キーに `${parent}_` を付けたもの(例: acf_relate_url, meta_footnotes)
97
+ */
98
+ function buildComparableKeySet(dataObj) {
99
+ const keySet = new Set();
100
+ if (!dataObj || typeof dataObj !== "object")
101
+ return keySet;
102
+ for (const [key, val] of Object.entries(dataObj)) {
103
+ if ((key === "acf" || key === "meta") &&
104
+ val &&
105
+ typeof val === "object" &&
106
+ !Array.isArray(val)) {
107
+ for (const childKey of Object.keys(val)) {
108
+ keySet.add(`${key}_${childKey}`);
109
+ }
110
+ continue;
240
111
  }
241
- };
242
- var newChoiceTerms = handleChoiceChange(checked, target, choiceItems);
243
- props.onChange(newChoiceTerms);
112
+ keySet.add(key);
244
113
  }
245
- });
246
- }));
247
- }), type === "field" && choices.map((choice, index) => {
248
- //metaの対象カスタムフィールドが含まれるかのフラグ
249
- var metaFlg = choice.meta && !Object.keys(choice.meta).every(key => key === "_acf_changed" || key === "footnotes");
250
- //acfの対象カスタムフィールドが含まれるかのフラグ
251
- var acfFlg = choice.acf && typeof choice.acf === "object" && !Array.isArray(choice.acf);
252
- return /*#__PURE__*/React.createElement("div", {
253
- key: index,
254
- className: "field_section"
255
- }, choice.title && /*#__PURE__*/React.createElement(ToggleControl, {
256
- className: "field_choice",
257
- label: __("Title", "block-collections"),
258
- checked: choiceItems.some(choiceField => choiceField === "title"),
259
- onChange: checked => {
260
- var newChoiceFields = handleChoiceChange(checked, "title", choiceItems);
261
- props.onChange(newChoiceFields);
262
- }
263
- }), choice.content && /*#__PURE__*/React.createElement(ToggleControl, {
264
- className: "field_choice",
265
- label: __("Content", "block-collections"),
266
- checked: choiceItems.some(choiceField => choiceField === "content"),
267
- onChange: checked => {
268
- var newChoiceFields = handleChoiceChange(checked, "content", choiceItems);
269
- props.onChange(newChoiceFields);
270
- }
271
- }), choice.date && /*#__PURE__*/React.createElement(ToggleControl, {
272
- className: "field_choice",
273
- label: __("Date", "block-collections"),
274
- checked: choiceItems.some(choiceField => choiceField === "date"),
275
- onChange: checked => {
276
- var newChoiceFields = handleChoiceChange(checked, "date", choiceItems);
277
- props.onChange(newChoiceFields);
278
- }
279
- }), choice.excerpt && /*#__PURE__*/React.createElement(ToggleControl, {
280
- className: "field_choice",
281
- label: __("Excerpt", "block-collections"),
282
- checked: choiceItems.some(choiceField => choiceField === "excerpt"),
283
- onChange: checked => {
284
- var newChoiceFields = handleChoiceChange(checked, "excerpt", choiceItems);
285
- props.onChange(newChoiceFields);
286
- }
287
- }), (choice.featured_media || choice.featured_media === 0) && /*#__PURE__*/React.createElement(ToggleControl, {
288
- className: "field_choice",
289
- label: __("Featured Image", "block-collections"),
290
- checked: choiceItems.some(choiceField => choiceField === "featured_media"),
291
- onChange: checked => {
292
- var newChoiceFields = handleChoiceChange(checked, "featured_media", choiceItems);
293
- props.onChange(newChoiceFields);
294
- }
295
- }), choice.link && /*#__PURE__*/React.createElement("div", {
296
- className: "itmar_custom_field_set"
297
- }, /*#__PURE__*/React.createElement(ToggleControl, {
298
- className: "field_choice",
299
- label: __("Single Page Link", "block-collections"),
300
- checked: choiceItems.some(choiceField => choiceField === "link"),
301
- onChange: checked => {
302
- var newChoiceFields = handleChoiceChange(checked, "link", choiceItems);
303
- props.onChange(newChoiceFields);
304
- }
305
- }), /*#__PURE__*/React.createElement(ComboboxControl, {
306
- options: [{
307
- value: "itmar/design-button",
308
- label: "itmar/design-button"
309
- }, {
310
- value: "itmar/design-title",
311
- label: "itmar/design-title"
312
- }],
313
- value: blockMap["link"],
314
- onChange: newValue => {
315
- var newBlockMap = _objectSpread2(_objectSpread2({}, blockMap), {}, {
316
- link: newValue
114
+ return keySet;
115
+ }
116
+ /**
117
+ * choiceItems を dataObj のキーに合わせて削除する
118
+ * - choiceItems string 配列でも、{value: "..."} の配列でも動くようにしてあります
119
+ */
120
+ function pruneChoiceItemsByObjectKeys(dataObj, items) {
121
+ const validKeys = buildComparableKeySet(dataObj);
122
+ const getItemKey = (item) => {
123
+ if (typeof item === "string")
124
+ return item;
125
+ if (item && typeof item === "object")
126
+ return item.value ?? item.key ?? item.name ?? "";
127
+ return "";
128
+ };
129
+ const next = (items ?? []).filter((item) => validKeys.has(getItemKey(item)));
130
+ // ★ 配列の参照はそのまま、中身だけ置き換える
131
+ items.splice(0, items.length, ...next);
132
+ return items; // 必要なら返す
133
+ }
134
+ //階層化されたカスタムフィールドのフィールド名を表示する関数
135
+ const dispCustumFields = (obj, prefix = "", isImage = false) => {
136
+ return Object.entries(obj).map(([key, value]) => {
137
+ const fieldName = prefix ? `${prefix}.${key}` : key; //prefixはグループ名
138
+ const fieldLabel = key.replace(/^(meta_|acf_)/, "");
139
+ //オブジェクトであって配列でないものがグループと考える
140
+ if (typeof value === "object" &&
141
+ !Array.isArray(value) &&
142
+ value !== null) {
143
+ return (createElement("div", { className: "group_area", key: fieldName },
144
+ createElement("div", { className: "group_label" }, fieldLabel),
145
+ createElement("div", { className: "field_group" }, dispCustumFields(value, fieldName, isImage))));
146
+ }
147
+ else {
148
+ if (key === "meta__acf_changed" || key === "meta_footnotes")
149
+ return null; //_acf_changedは対象外
150
+ //フィールドを表示するブロックの選択肢
151
+ const options = [
152
+ { value: "itmar/design-title", label: "itmar/design-title" },
153
+ { value: "core/paragraph", label: "core/paragraph" },
154
+ { value: "core/image", label: "core/image" },
155
+ { value: "itmar/slide-mv", label: "itmar/slide-mv" },
156
+ ];
157
+ return (createElement("div", { className: "itmar_custom_field_set", key: fieldName },
158
+ createElement(ToggleControl, { className: "field_choice", label: fieldLabel, checked: choiceItems.some((choiceField) => choiceField === fieldName), onChange: (checked) => {
159
+ const newItems = handleChoiceChange(checked, fieldName, choiceItems);
160
+ props.onChange(newItems);
161
+ } }),
162
+ !isImage && (createElement(ComboboxControl, { options: options, value: blockMap[fieldName] || "itmar/design-title", onChange: (newValue) => {
163
+ props.onBlockMapChange({
164
+ ...blockMap,
165
+ [fieldName]: newValue || "",
166
+ });
167
+ } }))));
168
+ }
317
169
  });
318
- props.onBlockMapChange(newBlockMap);
319
- }
320
- }), /*#__PURE__*/React.createElement("p", null, __("If no block is specified, a link will be set to the parent block, Design Group.", "block-collections"))), (metaFlg || acfFlg) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
321
- className: "custom_field_label"
322
- }, __("Custom Field", "block-collections")), /*#__PURE__*/React.createElement("div", {
323
- className: "custom_field_area"
324
- }, _dispCustumFields(_objectSpread2(_objectSpread2({}, Object.entries(choice.meta).reduce((acc, _ref7) => {
325
- var [key, value] = _ref7;
326
- return _objectSpread2(_objectSpread2({}, acc), {}, {
327
- ["meta_".concat(key)]: value
328
- });
329
- }, {})), Object.entries(choice.acf).filter(_ref8 => {
330
- var [key] = _ref8;
331
- return !key.endsWith("_source");
332
- }).reduce((acc, _ref9) => {
333
- var [key, value] = _ref9;
334
- return _objectSpread2(_objectSpread2({}, acc), {}, {
335
- ["acf_".concat(key)]: value
336
- });
337
- }, {}))))));
338
- }), type === "imgField" && choices.map((choice, index) => {
339
- //metaの対象カスタムフィールドが含まれるかのフラグ
340
- var metaFlg = choice.meta && !Object.keys(choice.meta).every(key => key === "_acf_changed" || key === "footnotes");
341
- //acfの対象カスタムフィールドが含まれるかのフラグ
342
- var acfFlg = choice.acf && typeof choice.acf === "object" && !Array.isArray(choice.acf);
343
- return /*#__PURE__*/React.createElement("div", {
344
- key: index,
345
- className: "field_section"
346
- }, choice.content && /*#__PURE__*/React.createElement(ToggleControl, {
347
- className: "field_choice",
348
- label: __("Content", "block-collections"),
349
- checked: choiceItems.some(choiceField => choiceField === "content"),
350
- onChange: checked => {
351
- var newChoiceFields = handleChoiceChange(checked, "content", choiceItems);
352
- props.onChange(newChoiceFields);
353
- }
354
- }), (choice.featured_media || choice.featured_media === 0) && /*#__PURE__*/React.createElement(ToggleControl, {
355
- className: "field_choice",
356
- label: __("Featured Image", "block-collections"),
357
- checked: choiceItems.some(choiceField => choiceField === "featured_media"),
358
- onChange: checked => {
359
- var newChoiceFields = handleChoiceChange(checked, "featured_media", choiceItems);
360
- props.onChange(newChoiceFields);
361
- }
362
- }), (metaFlg || acfFlg) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
363
- className: "custom_field_label"
364
- }, __("Custom Field", "block-collections")), /*#__PURE__*/React.createElement("div", {
365
- className: "custom_field_area"
366
- }, _dispCustumFields(_objectSpread2(_objectSpread2({}, Object.entries(choice.meta).reduce((acc, _ref0) => {
367
- var [key, value] = _ref0;
368
- return _objectSpread2(_objectSpread2({}, acc), {}, {
369
- ["meta_".concat(key)]: value
370
- });
371
- }, {})), Object.entries(choice.acf).filter(_ref1 => {
372
- var [key] = _ref1;
373
- return !key.endsWith("_source");
374
- }).reduce((acc, _ref10) => {
375
- var [key, value] = _ref10;
376
- return _objectSpread2(_objectSpread2({}, acc), {}, {
377
- ["acf_".concat(key)]: value
378
- });
379
- }, {})), "", true))));
380
- }));
170
+ };
171
+ return (createElement("div", { className: `${type}_section` },
172
+ type === "taxonomy" &&
173
+ choices.map((choice, index) => (createElement("div", { key: index, className: "term_section" },
174
+ createElement("div", { className: "tax_label" },
175
+ choice.name,
176
+ createElement(ToggleControl, { label: __("Display", "block-collections"), checked: dispTaxonomies.some((tax) => tax === choice.slug), onChange: (checked) => {
177
+ const newTax = handleChoiceChange(checked, choice.slug, dispTaxonomies);
178
+ props.onSetDispTax(newTax);
179
+ } })),
180
+ choice.terms?.map((term, tIndex) => (createElement(CheckboxControl, { key: tIndex, label: term.name, checked: choiceItems.some((c) => c.taxonomy === choice.slug && c.term.id === term.id), onChange: (checked) => {
181
+ const target = {
182
+ taxonomy: choice.slug,
183
+ term: { id: term.id, slug: term.slug, name: term.name },
184
+ };
185
+ props.onChange(handleChoiceChange(checked, target, choiceItems));
186
+ } })))))),
187
+ (type === "field" || type === "imgField") &&
188
+ choices.map((choice, index) => {
189
+ const isImgMode = type === "imgField";
190
+ return (createElement("div", { key: index, className: "field_section" },
191
+ !isImgMode && choice.title && (createElement(ToggleControl, { label: __("Title", "block-collections"), checked: choiceItems.includes("title"), onChange: (checked) => props.onChange(handleChoiceChange(checked, "title", choiceItems)) })),
192
+ createElement("div", { className: "custom_field_area" }, dispCustumFields({
193
+ ...Object.entries(choice.meta || {}).reduce((acc, [k, v]) => ({ ...acc, [`meta_${k}`]: v }), {}),
194
+ ...Object.entries(choice.acf || {})
195
+ .filter(([k]) => !k.endsWith("_source"))
196
+ .reduce((acc, [k, v]) => ({ ...acc, [`acf_${k}`]: v }), {}),
197
+ }, "", isImgMode))));
198
+ })));
381
199
  };
382
-
383
- //固定ページ取得RestAPI関数
384
- var fetchPagesOptions = /*#__PURE__*/function () {
385
- var _ref11 = _asyncToGenerator(function* (home_url) {
386
- var allPages = [];
387
- var page = 1;
200
+ const fetchPagesOptions = async (home_url) => {
201
+ const allPages = [];
202
+ let page = 1;
388
203
  while (true) {
389
- var items = yield apiFetch({
390
- path: addQueryArgs("/wp/v2/pages", {
391
- status: "publish",
392
- // 公開のみ
393
- per_page: 100,
394
- // 最大100
395
- page
396
- // orderby: "title",
397
- // order: "asc",
398
- })
399
- });
400
- allPages.push(...items);
401
-
402
- // 100件未満ならこれが最後
403
- if (!items || items.length < 100) break;
404
- page++;
204
+ // apiFetchに型を指定
205
+ const items = await apiFetch({
206
+ path: addQueryArgs("/wp/v2/pages", {
207
+ status: "publish", // 公開のみ
208
+ per_page: 100, // 最大100
209
+ page,
210
+ // orderby: "title",
211
+ // order: "asc",
212
+ }),
213
+ });
214
+ allPages.push(...items);
215
+ // 100件未満ならこれが最後
216
+ if (!items || items.length < 100)
217
+ break;
218
+ page++;
405
219
  }
406
-
407
220
  // ページIDが-1である要素をホーム要素として作成
408
- if (!allPages.some(p => p.id === -1)) {
409
- allPages.unshift({
410
- id: -1,
411
- title: {
412
- rendered: "ホーム"
413
- },
414
- link: home_url,
415
- slug: ""
416
- });
221
+ if (!allPages.some((p) => p.id === -1)) {
222
+ allPages.unshift({
223
+ id: -1,
224
+ title: { rendered: "ホーム" },
225
+ link: home_url,
226
+ slug: "",
227
+ });
417
228
  }
418
- var ret_pages = allPages.map(p => {
419
- var _p$title$rendered, _p$title;
420
- return {
421
- value: p.id,
229
+ // 最終的な整形
230
+ const ret_pages = allPages.map((p) => ({
231
+ // ComboboxControl のために string に変換
232
+ value: String(p.id),
422
233
  slug: p.slug,
423
- label: (_p$title$rendered = (_p$title = p.title) === null || _p$title === void 0 ? void 0 : _p$title.rendered) !== null && _p$title$rendered !== void 0 ? _p$title$rendered : "",
424
- // 階層ページでも正しいURLになるようにRESTのlinkを優先
425
- link: p.link || (p.slug ? "".concat(home_url, "/").concat(p.slug) : home_url)
426
- };
427
- });
234
+ label: p.title?.rendered ?? "",
235
+ link: p.link || (p.slug ? `${home_url}/${p.slug}` : home_url),
236
+ }));
428
237
  return ret_pages;
429
- });
430
- return function fetchPagesOptions(_x2) {
431
- return _ref11.apply(this, arguments);
432
- };
433
- }();
434
-
435
- //アーカイブ情報取得RestAPI関数
436
- var fetchArchiveOptions = /*#__PURE__*/function () {
437
- var _ref12 = _asyncToGenerator(function* (home_url) {
438
- var response = yield apiFetch({
439
- path: "/wp/v2/types"
238
+ };
239
+ const fetchArchiveOptions = async (home_url) => {
240
+ // apiFetchの戻り値は、キーが投稿タイプ名のオブジェクト
241
+ const response = await apiFetch({
242
+ path: "/wp/v2/types",
440
243
  });
441
- var idCounter = 0;
244
+ let idCounter = 0;
442
245
  return Object.keys(response).reduce((acc, key) => {
443
- var postType = response[key];
444
- if (postType.has_archive === true) {
445
- acc.push({
446
- value: idCounter++,
447
- slug: postType.slug,
448
- rest_base: postType.rest_base,
449
- link: "".concat(home_url, "/").concat(postType.slug),
450
- label: postType.name
451
- });
452
- } else if (typeof postType.has_archive === "string") {
453
- //アーカイブ名がついているとき
454
- acc.push({
455
- value: idCounter++,
456
- slug: postType.slug,
457
- rest_base: postType.rest_base,
458
- link: "".concat(home_url, "/").concat(postType.has_archive),
459
- label: postType.name
460
- });
461
- }
462
- return acc;
246
+ const postType = response[key];
247
+ // アーカイブが有効なものだけを抽出
248
+ if (postType.has_archive === true) {
249
+ acc.push({
250
+ value: String(idCounter++),
251
+ slug: postType.slug,
252
+ rest_base: postType.rest_base,
253
+ link: `${home_url}/${postType.slug}`,
254
+ label: postType.name,
255
+ });
256
+ }
257
+ else if (typeof postType.has_archive === "string") {
258
+ //アーカイブ名がついているとき
259
+ acc.push({
260
+ value: String(idCounter++),
261
+ slug: postType.slug,
262
+ rest_base: postType.rest_base,
263
+ link: `${home_url}/${postType.has_archive}`,
264
+ label: postType.name,
265
+ });
266
+ }
267
+ return acc;
463
268
  }, []);
464
- });
465
- return function fetchArchiveOptions(_x3) {
466
- return _ref12.apply(this, arguments);
467
- };
468
- }();
469
- //投稿データ取得RestAPI関数
470
- var fetchPostOptions = /*#__PURE__*/function () {
471
- var _ref13 = _asyncToGenerator(function* (home_url) {
472
- var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
473
- var perPage = Math.min(Number(props.perPage || 100), 100);
474
- var status = props.status || "publish"; // 管理画面で下書き等も含めたいなら 'any' を検討
475
- var orderby = props.orderby || "title";
476
- var order = props.order || "asc";
477
- var search = props.search ? String(args.search) : "";
478
- var restBase = props.restBase || "";
479
- var allPosts = [];
480
- var maxPagesSafety = 50; // 念のための安全上限
481
-
482
- for (var page = 1; page <= maxPagesSafety; page++) {
483
- var params = new URLSearchParams();
484
- params.set("per_page", String(perPage));
485
- params.set("page", String(page));
486
- params.set("status", status);
487
- params.set("orderby", orderby);
488
- params.set("order", order);
489
- // 必要なフィールドだけ返して軽量化
490
- params.set("_fields", "id,slug,title,link");
491
- if (search) params.set("search", search);
492
- var path = "/wp/v2/".concat(encodeURIComponent(restBase), "?").concat(params.toString());
493
- var posts = yield apiFetch({
494
- path
495
- });
496
- if (!Array.isArray(posts) || posts.length === 0) break;
497
- allPosts.push(...posts);
498
-
499
- // これ以上ページがない(=最終ページ)と判断
500
- if (posts.length < perPage) break;
269
+ };
270
+ /**
271
+ * 1. 投稿データ取得RestAPI関数
272
+ */
273
+ const fetchPostOptions = async (home_url, props = {}) => {
274
+ const perPage = Math.min(Number(props.perPage || 100), 100);
275
+ const status = props.status || "publish"; // 管理画面で下書き等も含めたいなら 'any' を検討
276
+ const orderby = props.orderby || "title";
277
+ const order = props.order || "asc";
278
+ const search = props.search ? String(props.search) : "";
279
+ const restBase = props.restBase || "";
280
+ const allPosts = [];
281
+ const maxPagesSafety = 50; // 念のための安全上限
282
+ for (let page = 1; page <= maxPagesSafety; page++) {
283
+ const params = new URLSearchParams();
284
+ params.set("per_page", String(perPage));
285
+ params.set("page", String(page));
286
+ params.set("status", status);
287
+ params.set("orderby", orderby);
288
+ params.set("order", order);
289
+ // 必要なフィールドだけ返して軽量化
290
+ params.set("_fields", "id,slug,title,link");
291
+ if (search)
292
+ params.set("search", search);
293
+ const path = `/wp/v2/${encodeURIComponent(restBase)}?${params.toString()}`;
294
+ const posts = await apiFetch({ path });
295
+ if (!Array.isArray(posts) || posts.length === 0)
296
+ break;
297
+ allPosts.push(...posts);
298
+ // これ以上ページがない(=最終ページ)と判断
299
+ if (posts.length < perPage)
300
+ break;
501
301
  }
502
-
503
302
  // title.rendered はHTMLを含むことがあるのでタグを除去
504
- var stripTags = html => String(html || "").replace(/<[^>]*>/g, "").trim();
505
- return allPosts.map(post => {
506
- var _post$title;
507
- var title = stripTags(post === null || post === void 0 || (_post$title = post.title) === null || _post$title === void 0 ? void 0 : _post$title.rendered) || "(no title)";
508
- return {
509
- value: Number(post.id),
510
- // ComboboxControl の value
511
- label: title,
512
- // ComboboxControl の表示文字
513
- slug: post.slug,
514
- // あなたの SelectControl が selectedSlug と照合するキー
515
- link: post.link || "".concat(home_url, "/?p=").concat(post.id),
516
- rest_base: restBase,
517
- post_id: Number(post.id)
518
- };
303
+ const stripTags = (html) => String(html || "")
304
+ .replace(/<[^>]*>/g, "")
305
+ .trim();
306
+ return allPosts.map((post) => {
307
+ const title = stripTags(post?.title?.rendered) || "(no title)";
308
+ return {
309
+ value: String(post.id), // 重要: stringに変換
310
+ label: title,
311
+ slug: post.slug,
312
+ link: post.link || `${home_url}/?p=${post.id}`,
313
+ rest_base: restBase,
314
+ post_id: Number(post.id),
315
+ };
519
316
  });
520
- });
521
- return function fetchPostOptions(_x4) {
522
- return _ref13.apply(this, arguments);
523
- };
524
- }();
525
-
526
- //タクソノミー取得RestAPI関数
527
- var restTaxonomies = /*#__PURE__*/function () {
528
- var _ref14 = _asyncToGenerator(function* (post_type) {
529
- if (!post_type) return;
530
- var response = yield apiFetch({
531
- path: "/wp/v2/types/".concat(post_type, "?context=edit")
317
+ };
318
+ /**
319
+ * 2. タクソノミー取得RestAPI関数
320
+ */
321
+ const restTaxonomies = async (post_type) => {
322
+ if (!post_type)
323
+ return;
324
+ const response = await apiFetch({
325
+ path: `/wp/v2/types/${post_type}?context=edit`,
532
326
  });
533
- var taxonomies = response.taxonomies;
534
- var taxonomyPromises = taxonomies.map(/*#__PURE__*/function () {
535
- var _ref15 = _asyncToGenerator(function* (slug) {
536
- var taxonomyResponse = yield apiFetch({
537
- path: "/wp/v2/taxonomies/".concat(slug, "?context=edit")
327
+ const taxonomies = response.taxonomies;
328
+ const taxonomyPromises = taxonomies.map(async (slug) => {
329
+ const taxonomyResponse = await apiFetch({
330
+ path: `/wp/v2/taxonomies/${slug}?context=edit`,
538
331
  });
539
- var terms = yield apiFetch({
540
- path: "/wp/v2/".concat(taxonomyResponse.rest_base)
332
+ const terms = await apiFetch({
333
+ path: `/wp/v2/${taxonomyResponse.rest_base}`,
541
334
  });
542
335
  return {
543
- slug: slug,
544
- name: taxonomyResponse.name,
545
- rest_base: taxonomyResponse.rest_base,
546
- terms: terms
336
+ slug: slug,
337
+ name: taxonomyResponse.name,
338
+ rest_base: taxonomyResponse.rest_base,
339
+ terms: terms,
547
340
  };
548
- });
549
- return function (_x6) {
550
- return _ref15.apply(this, arguments);
551
- };
552
- }());
553
- var taxonomyObjects = yield Promise.all(taxonomyPromises);
554
- return taxonomyObjects;
555
- });
556
- return function restTaxonomies(_x5) {
557
- return _ref14.apply(this, arguments);
558
- };
559
- }();
560
-
561
- //タームの文字列化
562
- var termToDispObj = (terms, connectString) => {
563
- // taxonomyごとにterm.nameをまとめる
564
- var result = terms.reduce((acc, item) => {
565
- var taxonomy = item.taxonomy;
566
- var termName = item.term.name;
567
-
568
- // taxonomyがまだ存在しない場合は初期化
569
- if (!acc[taxonomy]) {
570
- acc[taxonomy] = [];
341
+ });
342
+ return await Promise.all(taxonomyPromises);
343
+ };
344
+ const termToDispObj = (terms, connectString) => {
345
+ const result = terms.reduce((acc, item) => {
346
+ const taxonomy = item.taxonomy;
347
+ const termName = item.term.name;
348
+ // taxonomyがまだ存在しない場合は初期化
349
+ if (!acc[taxonomy]) {
350
+ acc[taxonomy] = [];
351
+ }
352
+ // term.nameを配列に追加
353
+ acc[taxonomy].push(termName);
354
+ return acc;
355
+ }, {});
356
+ // taxonomyの配列を connectString でつなげて文字列化
357
+ const displayObj = {};
358
+ for (const taxonomy in result) {
359
+ displayObj[taxonomy] = result[taxonomy].join(connectString);
571
360
  }
572
-
573
- // term.nameを配列に追加
574
- acc[taxonomy].push(termName);
575
- return acc;
576
- }, {});
577
-
578
- // 各taxonomyの配列を connectString でつなげて文字列化
579
- for (var taxonomy in result) {
580
- result[taxonomy] = result[taxonomy].join(connectString);
581
- }
582
- return result;
361
+ return displayObj;
583
362
  };
584
-
585
- //フィールド情報取得RestAPI関数
586
- var restFieldes = /*#__PURE__*/function () {
587
- var _ref16 = _asyncToGenerator(function* (rest_base) {
588
- //投稿データに以下のフィールドが含まれているかを調べる
589
- var selectedFields = ["title", "content", "date", "excerpt", "featured_media", "link", "meta", "acf"];
590
- var fieldsParam = selectedFields.join(",");
591
- //最新の投稿データから1件分のデータを抽出
592
- var response = yield apiFetch({
593
- path: "/wp/v2/".concat(rest_base, "?_fields=").concat(fieldsParam, "&per_page=1&order=desc")
363
+ /**
364
+ * 4. フィールド情報取得RestAPI関数
365
+ */
366
+ const restFieldes = async (rest_base) => {
367
+ const selectedFields = [
368
+ "title",
369
+ "content",
370
+ "date",
371
+ "excerpt",
372
+ "featured_media",
373
+ "link",
374
+ "meta",
375
+ "acf",
376
+ ];
377
+ const fieldsParam = selectedFields.join(",");
378
+ return await apiFetch({
379
+ path: `/wp/v2/${rest_base}?_fields=${fieldsParam}&per_page=1&order=desc`,
594
380
  });
595
- return response;
596
- });
597
- return function restFieldes(_x7) {
598
- return _ref16.apply(this, arguments);
599
- };
600
- }();
601
- var PageSelectControl = props => /*#__PURE__*/React.createElement(SelectControl, _extends({}, props, {
602
- fetchOptions: fetchPagesOptions
603
- }));
604
- var ArchiveSelectControl = props => /*#__PURE__*/React.createElement(SelectControl, _extends({}, props, {
605
- fetchOptions: fetchArchiveOptions
606
- }));
607
- var PostSelectControl = props => /*#__PURE__*/React.createElement(SelectControl, _extends({}, props, {
608
- fetchOptions: fetchPostOptions
609
- }));
610
- var TermChoiceControl = props => /*#__PURE__*/React.createElement(ChoiceControl, _extends({}, props, {
611
- fetchFunction: restTaxonomies
612
- }));
613
- var FieldChoiceControl = props => /*#__PURE__*/React.createElement(ChoiceControl, _extends({}, props, {
614
- fetchFunction: restFieldes
615
- }));
381
+ };
382
+ // --- 各コンポーネントの型定義 ---
383
+ /**
384
+ * 固定ページ選択用
385
+ */
386
+ const PageSelectControl = (props) => createElement(SelectControl, { ...props, fetchOptions: fetchPagesOptions });
387
+ /**
388
+ * アーカイブ(投稿タイプ)選択用
389
+ */
390
+ const ArchiveSelectControl = (props) => createElement(SelectControl, { ...props, fetchOptions: fetchArchiveOptions });
391
+ /**
392
+ * 投稿(各投稿タイプの中身)選択用
393
+ */
394
+ const PostSelectControl = (props) => createElement(SelectControl, { ...props, fetchOptions: fetchPostOptions });
395
+ /**
396
+ * タクソノミー・ターム選択用
397
+ */
398
+ const TermChoiceControl = (props) => createElement(ChoiceControl, { ...props, fetchFunction: restTaxonomies });
399
+ /**
400
+ * カスタムフィールド(ACF/Meta)選択用
401
+ */
402
+ const FieldChoiceControl = (props) => (createElement(ChoiceControl, { ...props, type: "field" // フィールド用であることを固定
403
+ , fetchFunction: restFieldes }));
616
404
 
617
405
  export { ArchiveSelectControl, FieldChoiceControl, PageSelectControl, PostSelectControl, TermChoiceControl, fetchArchiveOptions, fetchPagesOptions, fetchPostOptions, restFetchData, restFieldes, restTaxonomies, termToDispObj };
618
406
  //# sourceMappingURL=wordpressApi.js.map