itmar-block-packages 1.10.1 → 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.
- package/README.md +78 -2
- package/build/cjs/AnimationBlock.js +107 -0
- package/build/cjs/AnimationBlock.js.map +1 -0
- package/build/cjs/BlockEditWrapper.js +20 -0
- package/build/cjs/BlockEditWrapper.js.map +1 -0
- package/build/cjs/BlockPlace.js +509 -0
- package/build/cjs/BlockPlace.js.map +1 -0
- package/build/cjs/BrockInserter.js +204 -0
- package/build/cjs/BrockInserter.js.map +1 -0
- package/build/cjs/DateElm.js +321 -0
- package/build/cjs/DateElm.js.map +1 -0
- package/build/cjs/DraggableBox.js +143 -0
- package/build/cjs/DraggableBox.js.map +1 -0
- package/build/cjs/GridControls.js +421 -0
- package/build/cjs/GridControls.js.map +1 -0
- package/build/cjs/IconSelectControl.js +167 -0
- package/build/cjs/IconSelectControl.js.map +1 -0
- package/build/cjs/JapaneseHolidays.js +99 -0
- package/build/cjs/JapaneseHolidays.js.map +1 -0
- package/build/cjs/MasonryControl.js +124 -0
- package/build/cjs/MasonryControl.js.map +1 -0
- package/build/cjs/PseudoElm.js +66 -0
- package/build/cjs/PseudoElm.js.map +1 -0
- package/build/cjs/ShadowStyle.js +453 -0
- package/build/cjs/ShadowStyle.js.map +1 -0
- package/build/cjs/SwiperControl.js +267 -0
- package/build/cjs/SwiperControl.js.map +1 -0
- package/build/cjs/ToggleElement.js +17 -0
- package/build/cjs/ToggleElement.js.map +1 -0
- package/build/cjs/TypographyControls.js +151 -0
- package/build/cjs/TypographyControls.js.map +1 -0
- package/build/cjs/UpdateAllPostsBlockAttributes.js +137 -0
- package/build/cjs/UpdateAllPostsBlockAttributes.js.map +1 -0
- package/build/cjs/ZipAddress.js +34 -0
- package/build/cjs/ZipAddress.js.map +1 -0
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +117 -0
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
- package/build/cjs/blockStore.js +65 -0
- package/build/cjs/blockStore.js.map +1 -0
- package/build/cjs/cssPropertes.js +157 -0
- package/build/cjs/cssPropertes.js.map +1 -0
- package/build/cjs/customFooks.js +300 -0
- package/build/cjs/customFooks.js.map +1 -0
- package/build/cjs/formatCreate.js +160 -0
- package/build/cjs/formatCreate.js.map +1 -0
- package/build/cjs/hslToRgb.js +133 -0
- package/build/cjs/hslToRgb.js.map +1 -0
- package/build/cjs/index.js +115 -0
- package/build/cjs/index.js.map +1 -0
- package/build/cjs/mediaUpload.js +182 -0
- package/build/cjs/mediaUpload.js.map +1 -0
- package/build/cjs/node_modules/nanoid/index.js +30 -0
- package/build/cjs/node_modules/nanoid/index.js.map +1 -0
- package/build/cjs/node_modules/nanoid/url-alphabet/index.js +7 -0
- package/build/cjs/node_modules/nanoid/url-alphabet/index.js.map +1 -0
- package/build/cjs/shopfiApi.js +188 -0
- package/build/cjs/shopfiApi.js.map +1 -0
- package/build/cjs/validationCheck.js +15 -0
- package/build/cjs/validationCheck.js.map +1 -0
- package/build/cjs/wordpressApi.js +631 -0
- package/build/cjs/wordpressApi.js.map +1 -0
- package/build/esm/AnimationBlock.js +102 -0
- package/build/esm/AnimationBlock.js.map +1 -0
- package/build/esm/BlockEditWrapper.js +16 -0
- package/build/esm/BlockEditWrapper.js.map +1 -0
- package/build/esm/BlockPlace.js +503 -0
- package/build/esm/BlockPlace.js.map +1 -0
- package/build/esm/BrockInserter.js +202 -0
- package/build/esm/BrockInserter.js.map +1 -0
- package/build/esm/DateElm.js +309 -0
- package/build/esm/DateElm.js.map +1 -0
- package/build/esm/DraggableBox.js +138 -0
- package/build/esm/DraggableBox.js.map +1 -0
- package/build/esm/GridControls.js +417 -0
- package/build/esm/GridControls.js.map +1 -0
- package/build/esm/IconSelectControl.js +163 -0
- package/build/esm/IconSelectControl.js.map +1 -0
- package/build/esm/JapaneseHolidays.js +97 -0
- package/build/esm/JapaneseHolidays.js.map +1 -0
- package/{src → build/esm}/MasonryControl.js +108 -113
- package/build/esm/MasonryControl.js.map +1 -0
- package/build/esm/PseudoElm.js +61 -0
- package/build/esm/PseudoElm.js.map +1 -0
- package/build/esm/ShadowStyle.js +448 -0
- package/build/esm/ShadowStyle.js.map +1 -0
- package/{src → build/esm}/SwiperControl.js +265 -265
- package/build/esm/SwiperControl.js.map +1 -0
- package/build/esm/ToggleElement.js +13 -0
- package/build/esm/ToggleElement.js.map +1 -0
- package/build/esm/TypographyControls.js +147 -0
- package/build/esm/TypographyControls.js.map +1 -0
- package/build/esm/UpdateAllPostsBlockAttributes.js +133 -0
- package/build/esm/UpdateAllPostsBlockAttributes.js.map +1 -0
- package/build/esm/ZipAddress.js +32 -0
- package/build/esm/ZipAddress.js.map +1 -0
- package/build/esm/_virtual/_rollupPluginBabelHelpers.js +107 -0
- package/build/esm/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
- package/build/esm/blockStore.js +60 -0
- package/build/esm/blockStore.js.map +1 -0
- package/build/esm/cssPropertes.js +144 -0
- package/build/esm/cssPropertes.js.map +1 -0
- package/{src → build/esm}/customFooks.js +290 -337
- package/build/esm/customFooks.js.map +1 -0
- package/build/esm/formatCreate.js +157 -0
- package/build/esm/formatCreate.js.map +1 -0
- package/build/esm/hslToRgb.js +129 -0
- package/build/esm/hslToRgb.js.map +1 -0
- package/build/esm/index.js +27 -0
- package/build/esm/index.js.map +1 -0
- package/build/esm/mediaUpload.js +176 -0
- package/build/esm/mediaUpload.js.map +1 -0
- package/build/esm/node_modules/nanoid/index.js +27 -0
- package/build/esm/node_modules/nanoid/index.js.map +1 -0
- package/build/esm/node_modules/nanoid/url-alphabet/index.js +5 -0
- package/build/esm/node_modules/nanoid/url-alphabet/index.js.map +1 -0
- package/build/esm/shopfiApi.js +184 -0
- package/build/esm/shopfiApi.js.map +1 -0
- package/build/esm/validationCheck.js +13 -0
- package/build/esm/validationCheck.js.map +1 -0
- package/build/esm/wordpressApi.js +618 -0
- package/build/esm/wordpressApi.js.map +1 -0
- package/package.json +22 -6
- package/build/index.asset.php +0 -1
- package/build/index.js +0 -25
- package/css/editor.css +0 -23
- package/css/editor.css.map +0 -1
- package/img/animation.png +0 -0
- package/img/blockplace.png +0 -0
- package/img/grid.png +0 -0
- package/img/iconControl.png +0 -0
- package/img/pseudo.png +0 -0
- package/img/shadow.png +0 -0
- package/img/typography.png +0 -0
- package/src/AnimationBlock.js +0 -112
- package/src/BlockEditWrapper.js +0 -11
- package/src/BlockPlace.js +0 -904
- package/src/BrockInserter.js +0 -247
- package/src/DateElm.js +0 -354
- package/src/DraggableBox.js +0 -143
- package/src/GridControls.js +0 -462
- package/src/IconSelectControl.js +0 -186
- package/src/PseudoElm.js +0 -54
- package/src/ShadowStyle.js +0 -520
- package/src/ToggleElement.js +0 -18
- package/src/TypographyControls.js +0 -145
- package/src/UpdateAllPostsBlockAttributes.js +0 -127
- package/src/ZipAddress.js +0 -35
- package/src/blockStore.js +0 -75
- package/src/cssPropertes.js +0 -212
- package/src/formatCreate.js +0 -179
- package/src/hslToRgb.js +0 -162
- package/src/index.js +0 -131
- package/src/mediaUpload.js +0 -178
- package/src/shopfiApi.js +0 -187
- package/src/validationCheck.js +0 -10
- package/src/wordpressApi.js +0 -707
- 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
|