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