itmar-block-packages 1.10.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/README.md +81 -2
  2. package/build/cjs/AnimationBlock.js +107 -0
  3. package/build/cjs/AnimationBlock.js.map +1 -0
  4. package/build/cjs/BlockEditWrapper.js +20 -0
  5. package/build/cjs/BlockEditWrapper.js.map +1 -0
  6. package/build/cjs/BlockPlace.js +509 -0
  7. package/build/cjs/BlockPlace.js.map +1 -0
  8. package/build/cjs/BrockInserter.js +204 -0
  9. package/build/cjs/BrockInserter.js.map +1 -0
  10. package/build/cjs/DateElm.js +321 -0
  11. package/build/cjs/DateElm.js.map +1 -0
  12. package/build/cjs/DraggableBox.js +143 -0
  13. package/build/cjs/DraggableBox.js.map +1 -0
  14. package/build/cjs/GridControls.js +421 -0
  15. package/build/cjs/GridControls.js.map +1 -0
  16. package/build/cjs/IconSelectControl.js +167 -0
  17. package/build/cjs/IconSelectControl.js.map +1 -0
  18. package/build/cjs/JapaneseHolidays.js +99 -0
  19. package/build/cjs/JapaneseHolidays.js.map +1 -0
  20. package/build/cjs/MasonryControl.js +124 -0
  21. package/build/cjs/MasonryControl.js.map +1 -0
  22. package/build/cjs/PseudoElm.js +66 -0
  23. package/build/cjs/PseudoElm.js.map +1 -0
  24. package/build/cjs/ShadowStyle.js +453 -0
  25. package/build/cjs/ShadowStyle.js.map +1 -0
  26. package/build/cjs/SwiperControl.js +267 -0
  27. package/build/cjs/SwiperControl.js.map +1 -0
  28. package/build/cjs/ToggleElement.js +17 -0
  29. package/build/cjs/ToggleElement.js.map +1 -0
  30. package/build/cjs/TypographyControls.js +151 -0
  31. package/build/cjs/TypographyControls.js.map +1 -0
  32. package/build/cjs/UpdateAllPostsBlockAttributes.js +137 -0
  33. package/build/cjs/UpdateAllPostsBlockAttributes.js.map +1 -0
  34. package/build/cjs/ZipAddress.js +34 -0
  35. package/build/cjs/ZipAddress.js.map +1 -0
  36. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +117 -0
  37. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  38. package/build/cjs/blockStore.js +65 -0
  39. package/build/cjs/blockStore.js.map +1 -0
  40. package/build/cjs/cssPropertes.js +157 -0
  41. package/build/cjs/cssPropertes.js.map +1 -0
  42. package/build/cjs/customFooks.js +300 -0
  43. package/build/cjs/customFooks.js.map +1 -0
  44. package/build/cjs/formatCreate.js +160 -0
  45. package/build/cjs/formatCreate.js.map +1 -0
  46. package/build/cjs/hslToRgb.js +133 -0
  47. package/build/cjs/hslToRgb.js.map +1 -0
  48. package/build/cjs/index.js +115 -0
  49. package/build/cjs/index.js.map +1 -0
  50. package/build/cjs/mediaUpload.js +182 -0
  51. package/build/cjs/mediaUpload.js.map +1 -0
  52. package/build/cjs/node_modules/nanoid/index.js +30 -0
  53. package/build/cjs/node_modules/nanoid/index.js.map +1 -0
  54. package/build/cjs/node_modules/nanoid/url-alphabet/index.js +7 -0
  55. package/build/cjs/node_modules/nanoid/url-alphabet/index.js.map +1 -0
  56. package/build/cjs/shopfiApi.js +188 -0
  57. package/build/cjs/shopfiApi.js.map +1 -0
  58. package/build/cjs/validationCheck.js +15 -0
  59. package/build/cjs/validationCheck.js.map +1 -0
  60. package/build/cjs/wordpressApi.js +631 -0
  61. package/build/cjs/wordpressApi.js.map +1 -0
  62. package/build/esm/AnimationBlock.js +102 -0
  63. package/build/esm/AnimationBlock.js.map +1 -0
  64. package/build/esm/BlockEditWrapper.js +16 -0
  65. package/build/esm/BlockEditWrapper.js.map +1 -0
  66. package/build/esm/BlockPlace.js +503 -0
  67. package/build/esm/BlockPlace.js.map +1 -0
  68. package/build/esm/BrockInserter.js +202 -0
  69. package/build/esm/BrockInserter.js.map +1 -0
  70. package/build/esm/DateElm.js +309 -0
  71. package/build/esm/DateElm.js.map +1 -0
  72. package/build/esm/DraggableBox.js +138 -0
  73. package/build/esm/DraggableBox.js.map +1 -0
  74. package/build/esm/GridControls.js +417 -0
  75. package/build/esm/GridControls.js.map +1 -0
  76. package/build/esm/IconSelectControl.js +163 -0
  77. package/build/esm/IconSelectControl.js.map +1 -0
  78. package/build/esm/JapaneseHolidays.js +97 -0
  79. package/build/esm/JapaneseHolidays.js.map +1 -0
  80. package/{src → build/esm}/MasonryControl.js +108 -113
  81. package/build/esm/MasonryControl.js.map +1 -0
  82. package/build/esm/PseudoElm.js +61 -0
  83. package/build/esm/PseudoElm.js.map +1 -0
  84. package/build/esm/ShadowStyle.js +448 -0
  85. package/build/esm/ShadowStyle.js.map +1 -0
  86. package/{src → build/esm}/SwiperControl.js +265 -265
  87. package/build/esm/SwiperControl.js.map +1 -0
  88. package/build/esm/ToggleElement.js +13 -0
  89. package/build/esm/ToggleElement.js.map +1 -0
  90. package/build/esm/TypographyControls.js +147 -0
  91. package/build/esm/TypographyControls.js.map +1 -0
  92. package/build/esm/UpdateAllPostsBlockAttributes.js +133 -0
  93. package/build/esm/UpdateAllPostsBlockAttributes.js.map +1 -0
  94. package/build/esm/ZipAddress.js +32 -0
  95. package/build/esm/ZipAddress.js.map +1 -0
  96. package/build/esm/_virtual/_rollupPluginBabelHelpers.js +107 -0
  97. package/build/esm/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  98. package/build/esm/blockStore.js +60 -0
  99. package/build/esm/blockStore.js.map +1 -0
  100. package/build/esm/cssPropertes.js +144 -0
  101. package/build/esm/cssPropertes.js.map +1 -0
  102. package/{src → build/esm}/customFooks.js +290 -337
  103. package/build/esm/customFooks.js.map +1 -0
  104. package/build/esm/formatCreate.js +157 -0
  105. package/build/esm/formatCreate.js.map +1 -0
  106. package/build/esm/hslToRgb.js +129 -0
  107. package/build/esm/hslToRgb.js.map +1 -0
  108. package/build/esm/index.js +27 -0
  109. package/build/esm/index.js.map +1 -0
  110. package/build/esm/mediaUpload.js +176 -0
  111. package/build/esm/mediaUpload.js.map +1 -0
  112. package/build/esm/node_modules/nanoid/index.js +27 -0
  113. package/build/esm/node_modules/nanoid/index.js.map +1 -0
  114. package/build/esm/node_modules/nanoid/url-alphabet/index.js +5 -0
  115. package/build/esm/node_modules/nanoid/url-alphabet/index.js.map +1 -0
  116. package/build/esm/shopfiApi.js +184 -0
  117. package/build/esm/shopfiApi.js.map +1 -0
  118. package/build/esm/validationCheck.js +13 -0
  119. package/build/esm/validationCheck.js.map +1 -0
  120. package/build/esm/wordpressApi.js +618 -0
  121. package/build/esm/wordpressApi.js.map +1 -0
  122. package/package.json +22 -6
  123. package/build/index.asset.php +0 -1
  124. package/build/index.js +0 -25
  125. package/css/editor.css +0 -23
  126. package/css/editor.css.map +0 -1
  127. package/img/animation.png +0 -0
  128. package/img/blockplace.png +0 -0
  129. package/img/grid.png +0 -0
  130. package/img/iconControl.png +0 -0
  131. package/img/pseudo.png +0 -0
  132. package/img/shadow.png +0 -0
  133. package/img/typography.png +0 -0
  134. package/src/AnimationBlock.js +0 -112
  135. package/src/BlockEditWrapper.js +0 -11
  136. package/src/BlockPlace.js +0 -904
  137. package/src/BrockInserter.js +0 -247
  138. package/src/DateElm.js +0 -354
  139. package/src/DraggableBox.js +0 -143
  140. package/src/GridControls.js +0 -462
  141. package/src/IconSelectControl.js +0 -186
  142. package/src/PseudoElm.js +0 -54
  143. package/src/ShadowStyle.js +0 -520
  144. package/src/ToggleElement.js +0 -18
  145. package/src/TypographyControls.js +0 -145
  146. package/src/UpdateAllPostsBlockAttributes.js +0 -127
  147. package/src/ZipAddress.js +0 -35
  148. package/src/blockStore.js +0 -75
  149. package/src/cssPropertes.js +0 -212
  150. package/src/formatCreate.js +0 -179
  151. package/src/hslToRgb.js +0 -162
  152. package/src/index.js +0 -131
  153. package/src/mediaUpload.js +0 -178
  154. package/src/shopfiApi.js +0 -187
  155. package/src/validationCheck.js +0 -10
  156. package/src/wordpressApi.js +0 -686
  157. package/webpack.config.js +0 -10
@@ -0,0 +1,618 @@
1
+ import { extends as _extends, objectSpread2 as _objectSpread2, asyncToGenerator as _asyncToGenerator } from './_virtual/_rollupPluginBabelHelpers.js';
2
+ import { useState, useEffect } from '@wordpress/element';
3
+ import { __ } from '@wordpress/i18n';
4
+ import { ComboboxControl, ToggleControl, CheckboxControl } from '@wordpress/components';
5
+ import apiFetch from '@wordpress/api-fetch';
6
+ import { addQueryArgs } from '@wordpress/url';
7
+
8
+ //const _ = require("lodash");
9
+
10
+ var restFetchData = /*#__PURE__*/function () {
11
+ var _ref = _asyncToGenerator(function* (path) {
12
+ 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);
19
+ }
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);
59
+ }
60
+ });
61
+ };
62
+
63
+ //選択コントロールのレンダリング関数
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);
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));
120
+ }
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 "";
139
+ };
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
240
+ }
241
+ };
242
+ var newChoiceTerms = handleChoiceChange(checked, target, choiceItems);
243
+ props.onChange(newChoiceTerms);
244
+ }
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
317
+ });
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
+ }));
381
+ };
382
+
383
+ //固定ページ取得RestAPI関数
384
+ var fetchPagesOptions = /*#__PURE__*/function () {
385
+ var _ref11 = _asyncToGenerator(function* (home_url) {
386
+ var allPages = [];
387
+ var page = 1;
388
+ 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++;
405
+ }
406
+
407
+ // ページ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
+ });
417
+ }
418
+ var ret_pages = allPages.map(p => {
419
+ var _p$title$rendered, _p$title;
420
+ return {
421
+ value: p.id,
422
+ 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
+ });
428
+ 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"
440
+ });
441
+ var idCounter = 0;
442
+ 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;
463
+ }, []);
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;
501
+ }
502
+
503
+ // 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
+ };
519
+ });
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")
532
+ });
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")
538
+ });
539
+ var terms = yield apiFetch({
540
+ path: "/wp/v2/".concat(taxonomyResponse.rest_base)
541
+ });
542
+ return {
543
+ slug: slug,
544
+ name: taxonomyResponse.name,
545
+ rest_base: taxonomyResponse.rest_base,
546
+ terms: terms
547
+ };
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] = [];
571
+ }
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;
583
+ };
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")
594
+ });
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
+ }));
616
+
617
+ export { ArchiveSelectControl, FieldChoiceControl, PageSelectControl, PostSelectControl, TermChoiceControl, fetchArchiveOptions, fetchPagesOptions, fetchPostOptions, restFetchData, restFieldes, restTaxonomies, termToDispObj };
618
+ //# sourceMappingURL=wordpressApi.js.map