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 @@
1
+ {"version":3,"file":"validationCheck.js","sources":["../../src/validationCheck.js"],"sourcesContent":["//URLのバリデーションチェック\r\nexport const isValidUrlWithUrlApi = (string) => {\r\n try {\r\n const cleanString = string.replace(/<[^>]+>/g, \"\");\r\n new URL(cleanString);\r\n return true;\r\n } catch (err) {\r\n return false;\r\n }\r\n};\r\n"],"names":["isValidUrlWithUrlApi","string","cleanString","replace","URL","err"],"mappings":";;AAAA;AACO,IAAMA,oBAAoB,GAAIC,MAAM,IAAK;EAC9C,IAAI;IACF,IAAMC,WAAW,GAAGD,MAAM,CAACE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;IAClD,IAAIC,GAAG,CAACF,WAAW,CAAC;AACpB,IAAA,OAAO,IAAI;EACb,CAAC,CAAC,OAAOG,GAAG,EAAE;AACZ,IAAA,OAAO,KAAK;AACd,EAAA;AACF;;;;"}
@@ -0,0 +1,631 @@
1
+ 'use strict';
2
+
3
+ var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
4
+ var element = require('@wordpress/element');
5
+ var i18n = require('@wordpress/i18n');
6
+ var components = require('@wordpress/components');
7
+ var apiFetch = require('@wordpress/api-fetch');
8
+ var url = require('@wordpress/url');
9
+
10
+ //const _ = require("lodash");
11
+
12
+ var restFetchData = /*#__PURE__*/function () {
13
+ var _ref = _rollupPluginBabelHelpers.asyncToGenerator(function* (path) {
14
+ 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);
21
+ }
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);
61
+ }
62
+ });
63
+ };
64
+
65
+ //選択コントロールのレンダリング関数
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);
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));
122
+ }
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 "";
141
+ };
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
242
+ }
243
+ };
244
+ var newChoiceTerms = handleChoiceChange(checked, target, choiceItems);
245
+ props.onChange(newChoiceTerms);
246
+ }
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
319
+ });
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
+ }));
383
+ };
384
+
385
+ //固定ページ取得RestAPI関数
386
+ var fetchPagesOptions = /*#__PURE__*/function () {
387
+ var _ref11 = _rollupPluginBabelHelpers.asyncToGenerator(function* (home_url) {
388
+ var allPages = [];
389
+ var page = 1;
390
+ 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++;
407
+ }
408
+
409
+ // ページ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
+ });
419
+ }
420
+ var ret_pages = allPages.map(p => {
421
+ var _p$title$rendered, _p$title;
422
+ return {
423
+ value: p.id,
424
+ 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
+ });
430
+ 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"
442
+ });
443
+ var idCounter = 0;
444
+ 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;
465
+ }, []);
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;
503
+ }
504
+
505
+ // 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
+ };
521
+ });
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")
534
+ });
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")
540
+ });
541
+ var terms = yield apiFetch({
542
+ path: "/wp/v2/".concat(taxonomyResponse.rest_base)
543
+ });
544
+ return {
545
+ slug: slug,
546
+ name: taxonomyResponse.name,
547
+ rest_base: taxonomyResponse.rest_base,
548
+ terms: terms
549
+ };
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] = [];
573
+ }
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;
585
+ };
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")
596
+ });
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
+ }));
618
+
619
+ exports.ArchiveSelectControl = ArchiveSelectControl;
620
+ exports.FieldChoiceControl = FieldChoiceControl;
621
+ exports.PageSelectControl = PageSelectControl;
622
+ exports.PostSelectControl = PostSelectControl;
623
+ exports.TermChoiceControl = TermChoiceControl;
624
+ exports.fetchArchiveOptions = fetchArchiveOptions;
625
+ exports.fetchPagesOptions = fetchPagesOptions;
626
+ exports.fetchPostOptions = fetchPostOptions;
627
+ exports.restFetchData = restFetchData;
628
+ exports.restFieldes = restFieldes;
629
+ exports.restTaxonomies = restTaxonomies;
630
+ exports.termToDispObj = termToDispObj;
631
+ //# sourceMappingURL=wordpressApi.js.map