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,417 @@
1
+ import { objectSpread2 as _objectSpread2, extends as _extends } from './_virtual/_rollupPluginBabelHelpers.js';
2
+ import { PanelRow, __experimentalNumberControl, __experimentalUnitControl, Button, ComboboxControl, __experimentalInputControl, ToolbarDropdownMenu, Icon } from '@wordpress/components';
3
+ import { useSelect, dispatch } from '@wordpress/data';
4
+ import { useState, useRef, useEffect } from '@wordpress/element';
5
+ import { __ } from '@wordpress/i18n';
6
+ import { justifyRight, justifyCenter, justifyLeft } from '@wordpress/icons';
7
+
8
+ //上よせアイコン
9
+ var upper = /*#__PURE__*/React.createElement(Icon, {
10
+ icon: justifyLeft,
11
+ className: "rotate-icon"
12
+ });
13
+ //中央よせのアイコン
14
+ var middle = /*#__PURE__*/React.createElement(Icon, {
15
+ icon: justifyCenter,
16
+ className: "rotate-icon"
17
+ });
18
+ //下よせのアイコン
19
+ var lower = /*#__PURE__*/React.createElement(Icon, {
20
+ icon: justifyRight,
21
+ className: "rotate-icon"
22
+ });
23
+ // アイコンと文字列キーのマッピングを作成
24
+ var alignIconMap = {
25
+ left: justifyLeft,
26
+ center: justifyCenter,
27
+ right: justifyRight,
28
+ upper: upper,
29
+ middle: middle,
30
+ lower: lower
31
+ };
32
+ var units = [{
33
+ value: "px",
34
+ label: "px"
35
+ }, {
36
+ value: "em",
37
+ label: "em"
38
+ }, {
39
+ value: "rem",
40
+ label: "rem"
41
+ }];
42
+ var initializeUnitArray = (rowUnit, length) => {
43
+ if (!Array.isArray(rowUnit)) {
44
+ // rowUnit が配列ではない(undefined を含む)場合、全て "1fr" で埋めた配列を返す
45
+ return Array(length).fill("1fr");
46
+ }
47
+ return Array.from({
48
+ length
49
+ }, (_, i) => rowUnit[i] || "1fr");
50
+ };
51
+
52
+ //r,cで与えられた座標がgridElmsのどの要素に含まれているかを返す
53
+ var findElementInGrid = (gridElms, r, c) => {
54
+ for (var i = 0; i < gridElms.length; i++) {
55
+ var {
56
+ startCell,
57
+ endCell
58
+ } = gridElms[i];
59
+ // 各座標の最小値と最大値を決定
60
+ var minRow = Math.min(startCell === null || startCell === void 0 ? void 0 : startCell.rowInx, endCell === null || endCell === void 0 ? void 0 : endCell.rowInx);
61
+ var maxRow = Math.max(startCell === null || startCell === void 0 ? void 0 : startCell.rowInx, endCell === null || endCell === void 0 ? void 0 : endCell.rowInx);
62
+ var minCol = Math.min(startCell === null || startCell === void 0 ? void 0 : startCell.colInx, endCell === null || endCell === void 0 ? void 0 : endCell.colInx);
63
+ var maxCol = Math.max(startCell === null || startCell === void 0 ? void 0 : startCell.colInx, endCell === null || endCell === void 0 ? void 0 : endCell.colInx);
64
+
65
+ // 座標が範囲内にあるかどうかをチェック
66
+ if (r >= minRow && r <= maxRow && c >= minCol && c <= maxCol) {
67
+ return {
68
+ index: i,
69
+ elm: gridElms[i]
70
+ };
71
+ }
72
+ }
73
+ return null;
74
+ };
75
+
76
+ //親にイベントを伝播させないラッパー
77
+ var StopPropagationWrapper = _ref => {
78
+ var {
79
+ children
80
+ } = _ref;
81
+ var handleClick = event => {
82
+ // イベントの伝播を阻止
83
+ event.stopPropagation();
84
+ };
85
+ return /*#__PURE__*/React.createElement("div", {
86
+ className: "itmar_event_stopper",
87
+ onClick: handleClick
88
+ }, children);
89
+ };
90
+ var GridControls = _ref2 => {
91
+ var {
92
+ attributes,
93
+ clientId,
94
+ onChange: _onChange
95
+ } = _ref2;
96
+ var {
97
+ gridElms,
98
+ rowNum,
99
+ colNum,
100
+ rowGap,
101
+ colGap,
102
+ rowUnit,
103
+ colUnit
104
+ } = attributes;
105
+
106
+ //コンポーネント内の行列情報
107
+ var [rowCount, setRowCount] = useState(rowNum);
108
+ var [colCount, setColCount] = useState(colNum);
109
+
110
+ //マウント時検出用フラグ
111
+ var firstFlgRef = useRef(true);
112
+
113
+ //グリッドの配置指定用テーブル要素
114
+ var renderRows = () => {
115
+ //セルが埋まっているかどうかの判定配列
116
+
117
+ var occupied = new Array(rowCount).fill(0).map(() => new Array(colCount).fill(false));
118
+ var rows = [];
119
+ // 列単位入力行を追加
120
+ var headerCells = [/*#__PURE__*/React.createElement("th", {
121
+ key: "header-corner"
122
+ })]; // 左上の角の空白セル
123
+ var _loop = function _loop(c) {
124
+ headerCells.push(/*#__PURE__*/React.createElement("th", {
125
+ key: "header-".concat(c)
126
+ }, /*#__PURE__*/React.createElement(__experimentalInputControl, {
127
+ value: colUnit ? colUnit[c] : "",
128
+ type: "text",
129
+ isPressEnterToChange: true,
130
+ onChange: newValue => {
131
+ var newArray = [...colUnit.slice(0, c), newValue, ...colUnit.slice(c + 1)];
132
+ setUnitColArray(newArray);
133
+ }
134
+ })));
135
+ };
136
+ for (var c = 0; c < colCount; c++) {
137
+ _loop(c);
138
+ }
139
+ rows.push(/*#__PURE__*/React.createElement("tr", {
140
+ key: "header-row"
141
+ }, headerCells));
142
+
143
+ // 各行とセルの生成
144
+ var _loop2 = function _loop2(r) {
145
+ var cells = [];
146
+ // 行行単位入力を追加
147
+ cells.push(/*#__PURE__*/React.createElement("th", {
148
+ key: "row-header-".concat(r)
149
+ }, /*#__PURE__*/React.createElement(__experimentalInputControl, {
150
+ value: rowUnit ? rowUnit[r] : "",
151
+ type: "text",
152
+ isPressEnterToChange: true,
153
+ onChange: newValue => {
154
+ var newArray = [...rowUnit.slice(0, r), newValue, ...rowUnit.slice(r + 1)];
155
+ setUnitRowArray(newArray);
156
+ }
157
+ })));
158
+
159
+ // 各行に対するセルを生成
160
+ var _loop3 = function _loop3(_c) {
161
+ if (occupied[r][_c]) {
162
+ return 1; // continue
163
+ // このセルは既に占められているのでスキップ
164
+ }
165
+ //複数のセルを占める設定があればセルの結合オブジェクトを生成
166
+ var setElm = findElementInGrid(gridElms, r, _c);
167
+ var rowSpanValue = setElm ? Math.abs(setElm.elm.startCell.rowInx - setElm.elm.endCell.rowInx) : 0;
168
+ var colSpanValue = setElm ? Math.abs(setElm.elm.startCell.colInx - setElm.elm.endCell.colInx) : 0;
169
+ var cellSpan = _objectSpread2(_objectSpread2({}, rowSpanValue !== 0 && {
170
+ rowspan: rowSpanValue + 1
171
+ }), colSpanValue !== 0 && {
172
+ colspan: colSpanValue + 1
173
+ });
174
+ // 占められるセルの位置を記録
175
+ for (var i = 0; i <= rowSpanValue; i++) {
176
+ for (var j = 0; j <= colSpanValue; j++) {
177
+ if (r + i < rowCount && _c + j < colCount) {
178
+ occupied[r + i][_c + j] = true;
179
+ }
180
+ }
181
+ }
182
+ //セルを生成
183
+ cells.push(/*#__PURE__*/React.createElement("td", _extends({
184
+ key: "cell-".concat(r, "-").concat(_c)
185
+ }, cellSpan, {
186
+ className: isCellSelected(r, _c) ? "selected" : "",
187
+ style: setElm ? {
188
+ backgroundColor: "var(--wp--custom--color--area-".concat(setElm.index, ")")
189
+ } : undefined,
190
+ onClick: () => detectCellPosition(r, _c)
191
+ }), setElm && /*#__PURE__*/React.createElement(StopPropagationWrapper, null, /*#__PURE__*/React.createElement(ToolbarDropdownMenu, {
192
+ label: __("Lateral Alignment", "block-collections"),
193
+ icon: setElm.elm.latAlign ? alignIconMap[setElm.elm.latAlign] : alignIconMap["left"],
194
+ controls: ["left", "center", "right"].map(align => ({
195
+ icon: alignIconMap[align],
196
+ isActive: setElm.elm.latAlign === align,
197
+ onClick: () => updateAlignment(setElm.index, align, "latAlign")
198
+ }))
199
+ }), /*#__PURE__*/React.createElement(ToolbarDropdownMenu, {
200
+ label: __("Vertical Alignment", "block-collections"),
201
+ icon: setElm.elm.vertAlign ? alignIconMap[setElm.elm.vertAlign] : alignIconMap["upper"],
202
+ controls: ["upper", "middle", "lower"].map(align => ({
203
+ icon: alignIconMap[align],
204
+ isActive: setElm.elm.vertAlign === align,
205
+ onClick: () => updateAlignment(setElm.index, align, "vertAlign")
206
+ }))
207
+ }))));
208
+ };
209
+ for (var _c = 0; _c < colCount; _c++) {
210
+ if (_loop3(_c)) continue;
211
+ }
212
+ // 行の追加
213
+ rows.push(/*#__PURE__*/React.createElement("tr", {
214
+ key: "row-".concat(r)
215
+ }, cells));
216
+ };
217
+ for (var r = 0; r < rowCount; r++) {
218
+ _loop2(r);
219
+ }
220
+ return rows;
221
+ };
222
+
223
+ //テーブルの位置選択関数
224
+ var detectCellPosition = (rowIndex, colIndex) => {
225
+ //インナーブロックの選択がなければリターン
226
+ if (!selBlock) {
227
+ dispatch("core/notices").createNotice("error", __("No blocks selected.", "itmar_guest_contact_block"), {
228
+ type: "snackbar",
229
+ isDismissible: true
230
+ });
231
+ return;
232
+ }
233
+ //選択済みのセルが選択されたときはリターン
234
+ if (findElementInGrid(gridElms, rowIndex, colIndex)) {
235
+ dispatch("core/notices").createNotice("error", __("That cell is already selected by another block.", "itmar_guest_contact_block"), {
236
+ type: "snackbar",
237
+ isDismissible: true
238
+ });
239
+ return;
240
+ }
241
+
242
+ //選択されたブロックのポジションを記録
243
+ var newBlock = !selBlock.startCell ? _objectSpread2(_objectSpread2({}, selBlock), {}, {
244
+ startCell: {
245
+ rowInx: rowIndex,
246
+ colInx: colIndex
247
+ },
248
+ endCell: {
249
+ rowInx: rowIndex,
250
+ colInx: colIndex
251
+ }
252
+ }) : _objectSpread2(_objectSpread2({}, selBlock), {}, {
253
+ endCell: {
254
+ rowInx: rowIndex,
255
+ colInx: colIndex
256
+ }
257
+ });
258
+ setSelBlock(newBlock);
259
+
260
+ //blockNamesの更新
261
+ var index = gridElms === null || gridElms === void 0 ? void 0 : gridElms.findIndex(block => block.value === selBlock.value);
262
+ var setAreaBlock = [...blockNames.slice(0, index), newBlock, ...blockNames.slice(index + 1)];
263
+ setBlockNames(setAreaBlock);
264
+ };
265
+
266
+ // セルが選択されているか判断する関数
267
+ var isCellSelected = (rowIndex, colIndex) => {
268
+ if (selBlock) {
269
+ var _selBlock$startCell, _selBlock$endCell, _selBlock$startCell2, _selBlock$endCell2, _selBlock$startCell3, _selBlock$endCell3, _selBlock$startCell4, _selBlock$endCell4;
270
+ // 各座標の最小値と最大値を決定
271
+ var minRow = Math.min((_selBlock$startCell = selBlock.startCell) === null || _selBlock$startCell === void 0 ? void 0 : _selBlock$startCell.rowInx, (_selBlock$endCell = selBlock.endCell) === null || _selBlock$endCell === void 0 ? void 0 : _selBlock$endCell.rowInx);
272
+ var maxRow = Math.max((_selBlock$startCell2 = selBlock.startCell) === null || _selBlock$startCell2 === void 0 ? void 0 : _selBlock$startCell2.rowInx, (_selBlock$endCell2 = selBlock.endCell) === null || _selBlock$endCell2 === void 0 ? void 0 : _selBlock$endCell2.rowInx);
273
+ var minCol = Math.min((_selBlock$startCell3 = selBlock.startCell) === null || _selBlock$startCell3 === void 0 ? void 0 : _selBlock$startCell3.colInx, (_selBlock$endCell3 = selBlock.endCell) === null || _selBlock$endCell3 === void 0 ? void 0 : _selBlock$endCell3.colInx);
274
+ var maxCol = Math.max((_selBlock$startCell4 = selBlock.startCell) === null || _selBlock$startCell4 === void 0 ? void 0 : _selBlock$startCell4.colInx, (_selBlock$endCell4 = selBlock.endCell) === null || _selBlock$endCell4 === void 0 ? void 0 : _selBlock$endCell4.colInx);
275
+
276
+ // 座標が範囲内にあるかどうかをチェック
277
+ return rowIndex >= minRow && rowIndex <= maxRow && colIndex >= minCol && colIndex <= maxCol;
278
+ } else {
279
+ return false;
280
+ }
281
+ };
282
+
283
+ //コンテンツ位置設定
284
+ var updateAlignment = (index, align, derection) => {
285
+ var alignBlock = _objectSpread2(_objectSpread2({}, blockNames[index]), {}, {
286
+ [derection]: align
287
+ });
288
+ var setAlignBlock = [...blockNames.slice(0, index), alignBlock, ...blockNames.slice(index + 1)];
289
+ setBlockNames(setAlignBlock);
290
+ };
291
+
292
+ //選択したインナーブロック
293
+ var [selBlock, setSelBlock] = useState(null);
294
+
295
+ //インナーブロックを取得
296
+ var parentBlocks = useSelect(select => {
297
+ var innerBlocks = select("core/block-editor").getBlocks(clientId);
298
+ //インナーブロック入れ替えの際は既に登録したブロックの位置情報があれば、それを付加する。
299
+ var new_block_names = innerBlocks.map((block, index) => gridElms.length > index ? {
300
+ value: block.clientId,
301
+ label: block.name,
302
+ startCell: gridElms[index].startCell,
303
+ endCell: gridElms[index].endCell,
304
+ latAlign: gridElms[index].latAlign,
305
+ vertAlign: gridElms[index].vertAlign
306
+ } : {
307
+ value: block.clientId,
308
+ label: block.name
309
+ });
310
+ return new_block_names;
311
+ }, [clientId]);
312
+ var [blockNames, setBlockNames] = useState(parentBlocks);
313
+
314
+ //グリッド配置のクリア
315
+ var clear_placement = () => {
316
+ //ブロックの配置情報削除
317
+ var clear_block = blockNames.map(block => ({
318
+ value: block.value,
319
+ label: block.label
320
+ }));
321
+ setBlockNames(clear_block);
322
+ };
323
+
324
+ //単位配列の初期化
325
+ var initRowUnitArray = initializeUnitArray(rowUnit, rowCount);
326
+ var [unitRowArray, setUnitRowArray] = useState(initRowUnitArray);
327
+ var initColUnitArray = initializeUnitArray(colUnit, colCount);
328
+ var [unitColArray, setUnitColArray] = useState(initColUnitArray);
329
+
330
+ //親ブロックへの書き戻し
331
+ useEffect(() => {
332
+ var gridStyle = _objectSpread2(_objectSpread2({}, attributes), {}, {
333
+ gridElms: blockNames,
334
+ rowNum: rowCount,
335
+ colNum: colCount,
336
+ rowUnit: unitRowArray,
337
+ colUnit: unitColArray
338
+ });
339
+ _onChange(gridStyle);
340
+ }, [blockNames, unitRowArray, unitColArray]);
341
+
342
+ //行と列の数を変えた場合は位置情報を削除・単位の再編成
343
+ useEffect(() => {
344
+ if (!firstFlgRef.current) {
345
+ //マウント時は実行しない
346
+ //ブロックの位置情報クリア
347
+ clear_placement();
348
+ //単位情報の再編成
349
+ var newRowUnitArray = initializeUnitArray(rowUnit, rowCount);
350
+ setUnitRowArray(newRowUnitArray);
351
+ var newColUnitArray = initializeUnitArray(colUnit, colCount);
352
+ setUnitColArray(newColUnitArray);
353
+ } else {
354
+ firstFlgRef.current = false;
355
+ }
356
+ }, [rowCount, colCount]);
357
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PanelRow, {
358
+ className: "distance_row"
359
+ }, /*#__PURE__*/React.createElement(__experimentalNumberControl, {
360
+ onChange: newValue => {
361
+ var input_val = typeof newValue === "number" ? newValue : Number(newValue);
362
+ setRowCount(input_val);
363
+ },
364
+ label: __("Number of Row ", "block-collections"),
365
+ value: rowCount,
366
+ min: 2
367
+ }), /*#__PURE__*/React.createElement(__experimentalNumberControl, {
368
+ onChange: newValue => {
369
+ var input_val = typeof newValue === "number" ? newValue : Number(newValue);
370
+ setColCount(input_val);
371
+ },
372
+ label: __("Number of Colum", "block-collections"),
373
+ value: colCount
374
+ })), /*#__PURE__*/React.createElement(PanelRow, {
375
+ className: "distance_row"
376
+ }, /*#__PURE__*/React.createElement(__experimentalUnitControl, {
377
+ onChange: newValue => {
378
+ newValue = newValue != "" ? newValue : "0px";
379
+ var newStyle = _objectSpread2(_objectSpread2({}, attributes), {}, {
380
+ rowGap: newValue
381
+ });
382
+ _onChange(newStyle);
383
+ },
384
+ label: __("Row Gap", "block-collections"),
385
+ value: rowGap,
386
+ units: units
387
+ }), /*#__PURE__*/React.createElement(__experimentalUnitControl, {
388
+ onChange: newValue => {
389
+ newValue = newValue != "" ? newValue : "0px";
390
+ var newStyle = _objectSpread2(_objectSpread2({}, attributes), {}, {
391
+ colGap: newValue
392
+ });
393
+ _onChange(newStyle);
394
+ },
395
+ label: __("Colum Gap", "block-collections"),
396
+ value: colGap,
397
+ units: units
398
+ })), /*#__PURE__*/React.createElement(PanelRow, {
399
+ className: "distance_row"
400
+ }, /*#__PURE__*/React.createElement("p", null, __("Element placement", "block-collections")), /*#__PURE__*/React.createElement(Button, {
401
+ variant: "secondary",
402
+ onClick: clear_placement
403
+ }, __("Clear", "block-collections"))), /*#__PURE__*/React.createElement(PanelRow, {
404
+ className: "grid_table"
405
+ }, /*#__PURE__*/React.createElement("table", null, renderRows())), /*#__PURE__*/React.createElement(ComboboxControl, {
406
+ label: __("InnerBlock Name", "block-collections"),
407
+ options: blockNames,
408
+ value: selBlock ? selBlock.value : null,
409
+ onChange: sel_id => {
410
+ var matchedBlock = blockNames.find(block => block.value === sel_id);
411
+ setSelBlock(matchedBlock);
412
+ }
413
+ }));
414
+ };
415
+
416
+ export { GridControls as default };
417
+ //# sourceMappingURL=GridControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridControls.js","sources":["../../src/GridControls.js"],"sourcesContent":["import {\r\n Button,\r\n Icon,\r\n PanelRow,\r\n ComboboxControl,\r\n ToolbarDropdownMenu,\r\n __experimentalNumberControl as NumberControl,\r\n __experimentalUnitControl as UnitControl,\r\n __experimentalInputControl as InputControl,\r\n} from \"@wordpress/components\";\r\n\r\nimport { useSelect, dispatch } from \"@wordpress/data\";\r\nimport { useState, useEffect, useRef } from \"@wordpress/element\";\r\n\r\nimport { __ } from \"@wordpress/i18n\";\r\nimport { justifyCenter, justifyLeft, justifyRight } from \"@wordpress/icons\";\r\n//上よせアイコン\r\nconst upper = <Icon icon={justifyLeft} className=\"rotate-icon\" />;\r\n//中央よせのアイコン\r\nconst middle = <Icon icon={justifyCenter} className=\"rotate-icon\" />;\r\n//下よせのアイコン\r\nconst lower = <Icon icon={justifyRight} className=\"rotate-icon\" />;\r\n// アイコンと文字列キーのマッピングを作成\r\nconst alignIconMap = {\r\n left: justifyLeft,\r\n center: justifyCenter,\r\n right: justifyRight,\r\n upper: upper,\r\n middle: middle,\r\n lower: lower,\r\n};\r\n\r\nconst units = [\r\n { value: \"px\", label: \"px\" },\r\n { value: \"em\", label: \"em\" },\r\n { value: \"rem\", label: \"rem\" },\r\n];\r\n\r\nconst initializeUnitArray = (rowUnit, length) => {\r\n if (!Array.isArray(rowUnit)) {\r\n // rowUnit が配列ではない(undefined を含む)場合、全て \"1fr\" で埋めた配列を返す\r\n return Array(length).fill(\"1fr\");\r\n }\r\n\r\n return Array.from({ length }, (_, i) => rowUnit[i] || \"1fr\");\r\n};\r\n\r\n//r,cで与えられた座標がgridElmsのどの要素に含まれているかを返す\r\nconst findElementInGrid = (gridElms, r, c) => {\r\n for (let i = 0; i < gridElms.length; i++) {\r\n const { startCell, endCell } = gridElms[i];\r\n // 各座標の最小値と最大値を決定\r\n const minRow = Math.min(startCell?.rowInx, endCell?.rowInx);\r\n const maxRow = Math.max(startCell?.rowInx, endCell?.rowInx);\r\n const minCol = Math.min(startCell?.colInx, endCell?.colInx);\r\n const maxCol = Math.max(startCell?.colInx, endCell?.colInx);\r\n\r\n // 座標が範囲内にあるかどうかをチェック\r\n if (r >= minRow && r <= maxRow && c >= minCol && c <= maxCol) {\r\n return { index: i, elm: gridElms[i] };\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n//親にイベントを伝播させないラッパー\r\nconst StopPropagationWrapper = ({ children }) => {\r\n const handleClick = (event) => {\r\n // イベントの伝播を阻止\r\n event.stopPropagation();\r\n };\r\n\r\n return (\r\n <div className=\"itmar_event_stopper\" onClick={handleClick}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nconst GridControls = ({ attributes, clientId, onChange }) => {\r\n const { gridElms, rowNum, colNum, rowGap, colGap, rowUnit, colUnit } =\r\n attributes;\r\n\r\n //コンポーネント内の行列情報\r\n const [rowCount, setRowCount] = useState(rowNum);\r\n const [colCount, setColCount] = useState(colNum);\r\n\r\n //マウント時検出用フラグ\r\n const firstFlgRef = useRef(true);\r\n\r\n //グリッドの配置指定用テーブル要素\r\n const renderRows = () => {\r\n //セルが埋まっているかどうかの判定配列\r\n\r\n const occupied = new Array(rowCount)\r\n .fill(0)\r\n .map(() => new Array(colCount).fill(false));\r\n\r\n let rows = [];\r\n // 列単位入力行を追加\r\n let headerCells = [<th key=\"header-corner\"></th>]; // 左上の角の空白セル\r\n for (let c = 0; c < colCount; c++) {\r\n headerCells.push(\r\n <th key={`header-${c}`}>\r\n <InputControl\r\n value={colUnit ? colUnit[c] : \"\"}\r\n type=\"text\"\r\n isPressEnterToChange={true}\r\n onChange={(newValue) => {\r\n const newArray = [\r\n ...colUnit.slice(0, c),\r\n newValue,\r\n ...colUnit.slice(c + 1),\r\n ];\r\n setUnitColArray(newArray);\r\n }}\r\n />\r\n </th>\r\n );\r\n }\r\n rows.push(<tr key=\"header-row\">{headerCells}</tr>);\r\n\r\n // 各行とセルの生成\r\n for (let r = 0; r < rowCount; r++) {\r\n let cells = [];\r\n // 行行単位入力を追加\r\n cells.push(\r\n <th key={`row-header-${r}`}>\r\n <InputControl\r\n value={rowUnit ? rowUnit[r] : \"\"}\r\n type=\"text\"\r\n isPressEnterToChange={true}\r\n onChange={(newValue) => {\r\n const newArray = [\r\n ...rowUnit.slice(0, r),\r\n newValue,\r\n ...rowUnit.slice(r + 1),\r\n ];\r\n setUnitRowArray(newArray);\r\n }}\r\n />\r\n </th>\r\n );\r\n\r\n // 各行に対するセルを生成\r\n for (let c = 0; c < colCount; c++) {\r\n if (occupied[r][c]) {\r\n continue; // このセルは既に占められているのでスキップ\r\n }\r\n //複数のセルを占める設定があればセルの結合オブジェクトを生成\r\n const setElm = findElementInGrid(gridElms, r, c);\r\n const rowSpanValue = setElm\r\n ? Math.abs(setElm.elm.startCell.rowInx - setElm.elm.endCell.rowInx)\r\n : 0;\r\n const colSpanValue = setElm\r\n ? Math.abs(setElm.elm.startCell.colInx - setElm.elm.endCell.colInx)\r\n : 0;\r\n const cellSpan = {\r\n ...(rowSpanValue !== 0 && { rowspan: rowSpanValue + 1 }),\r\n ...(colSpanValue !== 0 && { colspan: colSpanValue + 1 }),\r\n };\r\n // 占められるセルの位置を記録\r\n for (let i = 0; i <= rowSpanValue; i++) {\r\n for (let j = 0; j <= colSpanValue; j++) {\r\n if (r + i < rowCount && c + j < colCount) {\r\n occupied[r + i][c + j] = true;\r\n }\r\n }\r\n }\r\n //セルを生成\r\n cells.push(\r\n <td\r\n key={`cell-${r}-${c}`}\r\n {...cellSpan}\r\n className={isCellSelected(r, c) ? \"selected\" : \"\"}\r\n style={\r\n setElm\r\n ? {\r\n backgroundColor: `var(--wp--custom--color--area-${setElm.index})`,\r\n }\r\n : undefined\r\n }\r\n onClick={() => detectCellPosition(r, c)}\r\n >\r\n {setElm && (\r\n <StopPropagationWrapper>\r\n <ToolbarDropdownMenu\r\n label={__(\"Lateral Alignment\", \"block-collections\")}\r\n icon={\r\n setElm.elm.latAlign\r\n ? alignIconMap[setElm.elm.latAlign]\r\n : alignIconMap[\"left\"]\r\n }\r\n controls={[\"left\", \"center\", \"right\"].map((align) => ({\r\n icon: alignIconMap[align],\r\n isActive: setElm.elm.latAlign === align,\r\n onClick: () =>\r\n updateAlignment(setElm.index, align, \"latAlign\"),\r\n }))}\r\n />\r\n <ToolbarDropdownMenu\r\n label={__(\"Vertical Alignment\", \"block-collections\")}\r\n icon={\r\n setElm.elm.vertAlign\r\n ? alignIconMap[setElm.elm.vertAlign]\r\n : alignIconMap[\"upper\"]\r\n }\r\n controls={[\"upper\", \"middle\", \"lower\"].map((align) => ({\r\n icon: alignIconMap[align],\r\n isActive: setElm.elm.vertAlign === align,\r\n onClick: () =>\r\n updateAlignment(setElm.index, align, \"vertAlign\"),\r\n }))}\r\n />\r\n </StopPropagationWrapper>\r\n )}\r\n </td>\r\n );\r\n }\r\n // 行の追加\r\n rows.push(<tr key={`row-${r}`}>{cells}</tr>);\r\n }\r\n return rows;\r\n };\r\n\r\n //テーブルの位置選択関数\r\n const detectCellPosition = (rowIndex, colIndex) => {\r\n //インナーブロックの選択がなければリターン\r\n if (!selBlock) {\r\n dispatch(\"core/notices\").createNotice(\r\n \"error\",\r\n __(\"No blocks selected.\", \"itmar_guest_contact_block\"),\r\n { type: \"snackbar\", isDismissible: true }\r\n );\r\n return;\r\n }\r\n //選択済みのセルが選択されたときはリターン\r\n if (findElementInGrid(gridElms, rowIndex, colIndex)) {\r\n dispatch(\"core/notices\").createNotice(\r\n \"error\",\r\n __(\r\n \"That cell is already selected by another block.\",\r\n \"itmar_guest_contact_block\"\r\n ),\r\n { type: \"snackbar\", isDismissible: true }\r\n );\r\n return;\r\n }\r\n\r\n //選択されたブロックのポジションを記録\r\n const newBlock = !selBlock.startCell\r\n ? {\r\n ...selBlock,\r\n startCell: { rowInx: rowIndex, colInx: colIndex },\r\n endCell: { rowInx: rowIndex, colInx: colIndex },\r\n }\r\n : { ...selBlock, endCell: { rowInx: rowIndex, colInx: colIndex } };\r\n\r\n setSelBlock(newBlock);\r\n\r\n //blockNamesの更新\r\n const index = gridElms?.findIndex(\r\n (block) => block.value === selBlock.value\r\n );\r\n const setAreaBlock = [\r\n ...blockNames.slice(0, index),\r\n newBlock,\r\n ...blockNames.slice(index + 1),\r\n ];\r\n setBlockNames(setAreaBlock);\r\n };\r\n\r\n // セルが選択されているか判断する関数\r\n const isCellSelected = (rowIndex, colIndex) => {\r\n if (selBlock) {\r\n // 各座標の最小値と最大値を決定\r\n const minRow = Math.min(\r\n selBlock.startCell?.rowInx,\r\n selBlock.endCell?.rowInx\r\n );\r\n const maxRow = Math.max(\r\n selBlock.startCell?.rowInx,\r\n selBlock.endCell?.rowInx\r\n );\r\n const minCol = Math.min(\r\n selBlock.startCell?.colInx,\r\n selBlock.endCell?.colInx\r\n );\r\n const maxCol = Math.max(\r\n selBlock.startCell?.colInx,\r\n selBlock.endCell?.colInx\r\n );\r\n\r\n // 座標が範囲内にあるかどうかをチェック\r\n return (\r\n rowIndex >= minRow &&\r\n rowIndex <= maxRow &&\r\n colIndex >= minCol &&\r\n colIndex <= maxCol\r\n );\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n //コンテンツ位置設定\r\n const updateAlignment = (index, align, derection) => {\r\n const alignBlock = { ...blockNames[index], [derection]: align };\r\n const setAlignBlock = [\r\n ...blockNames.slice(0, index),\r\n alignBlock,\r\n ...blockNames.slice(index + 1),\r\n ];\r\n setBlockNames(setAlignBlock);\r\n };\r\n\r\n //選択したインナーブロック\r\n const [selBlock, setSelBlock] = useState(null);\r\n\r\n //インナーブロックを取得\r\n const parentBlocks = useSelect(\r\n (select) => {\r\n const innerBlocks = select(\"core/block-editor\").getBlocks(clientId);\r\n //インナーブロック入れ替えの際は既に登録したブロックの位置情報があれば、それを付加する。\r\n const new_block_names = innerBlocks.map((block, index) =>\r\n gridElms.length > index\r\n ? {\r\n value: block.clientId,\r\n label: block.name,\r\n startCell: gridElms[index].startCell,\r\n endCell: gridElms[index].endCell,\r\n latAlign: gridElms[index].latAlign,\r\n vertAlign: gridElms[index].vertAlign,\r\n }\r\n : {\r\n value: block.clientId,\r\n label: block.name,\r\n }\r\n );\r\n return new_block_names;\r\n },\r\n [clientId]\r\n );\r\n const [blockNames, setBlockNames] = useState(parentBlocks);\r\n\r\n //グリッド配置のクリア\r\n const clear_placement = () => {\r\n //ブロックの配置情報削除\r\n const clear_block = blockNames.map((block) => ({\r\n value: block.value,\r\n label: block.label,\r\n }));\r\n setBlockNames(clear_block);\r\n };\r\n\r\n //単位配列の初期化\r\n const initRowUnitArray = initializeUnitArray(rowUnit, rowCount);\r\n const [unitRowArray, setUnitRowArray] = useState(initRowUnitArray);\r\n const initColUnitArray = initializeUnitArray(colUnit, colCount);\r\n const [unitColArray, setUnitColArray] = useState(initColUnitArray);\r\n\r\n //親ブロックへの書き戻し\r\n useEffect(() => {\r\n const gridStyle = {\r\n ...attributes,\r\n gridElms: blockNames,\r\n rowNum: rowCount,\r\n colNum: colCount,\r\n rowUnit: unitRowArray,\r\n colUnit: unitColArray,\r\n };\r\n\r\n onChange(gridStyle);\r\n }, [blockNames, unitRowArray, unitColArray]);\r\n\r\n //行と列の数を変えた場合は位置情報を削除・単位の再編成\r\n useEffect(() => {\r\n if (!firstFlgRef.current) {\r\n //マウント時は実行しない\r\n //ブロックの位置情報クリア\r\n clear_placement();\r\n //単位情報の再編成\r\n const newRowUnitArray = initializeUnitArray(rowUnit, rowCount);\r\n setUnitRowArray(newRowUnitArray);\r\n const newColUnitArray = initializeUnitArray(colUnit, colCount);\r\n setUnitColArray(newColUnitArray);\r\n } else {\r\n firstFlgRef.current = false;\r\n }\r\n }, [rowCount, colCount]);\r\n\r\n return (\r\n <>\r\n <PanelRow className=\"distance_row\">\r\n <NumberControl\r\n onChange={(newValue) => {\r\n const input_val =\r\n typeof newValue === \"number\" ? newValue : Number(newValue);\r\n setRowCount(input_val);\r\n }}\r\n label={__(\"Number of Row \", \"block-collections\")}\r\n value={rowCount}\r\n min={2}\r\n />\r\n <NumberControl\r\n onChange={(newValue) => {\r\n const input_val =\r\n typeof newValue === \"number\" ? newValue : Number(newValue);\r\n setColCount(input_val);\r\n }}\r\n label={__(\"Number of Colum\", \"block-collections\")}\r\n value={colCount}\r\n />\r\n </PanelRow>\r\n <PanelRow className=\"distance_row\">\r\n <UnitControl\r\n onChange={(newValue) => {\r\n newValue = newValue != \"\" ? newValue : \"0px\";\r\n const newStyle = { ...attributes, rowGap: newValue };\r\n onChange(newStyle);\r\n }}\r\n label={__(\"Row Gap\", \"block-collections\")}\r\n value={rowGap}\r\n units={units}\r\n />\r\n <UnitControl\r\n onChange={(newValue) => {\r\n newValue = newValue != \"\" ? newValue : \"0px\";\r\n const newStyle = { ...attributes, colGap: newValue };\r\n onChange(newStyle);\r\n }}\r\n label={__(\"Colum Gap\", \"block-collections\")}\r\n value={colGap}\r\n units={units}\r\n />\r\n </PanelRow>\r\n\r\n <PanelRow className=\"distance_row\">\r\n <p>{__(\"Element placement\", \"block-collections\")}</p>\r\n <Button variant=\"secondary\" onClick={clear_placement}>\r\n {__(\"Clear\", \"block-collections\")}\r\n </Button>\r\n </PanelRow>\r\n\r\n <PanelRow className=\"grid_table\">\r\n <table>{renderRows()}</table>\r\n </PanelRow>\r\n <ComboboxControl\r\n label={__(\"InnerBlock Name\", \"block-collections\")}\r\n options={blockNames}\r\n value={selBlock ? selBlock.value : null}\r\n onChange={(sel_id) => {\r\n const matchedBlock = blockNames.find(\r\n (block) => block.value === sel_id\r\n );\r\n setSelBlock(matchedBlock);\r\n }}\r\n />\r\n </>\r\n );\r\n};\r\nexport default GridControls;\r\n"],"names":["upper","React","createElement","Icon","icon","justifyLeft","className","middle","justifyCenter","lower","justifyRight","alignIconMap","left","center","right","units","value","label","initializeUnitArray","rowUnit","length","Array","isArray","fill","from","_","i","findElementInGrid","gridElms","r","c","startCell","endCell","minRow","Math","min","rowInx","maxRow","max","minCol","colInx","maxCol","index","elm","StopPropagationWrapper","_ref","children","handleClick","event","stopPropagation","onClick","GridControls","_ref2","attributes","clientId","onChange","rowNum","colNum","rowGap","colGap","colUnit","rowCount","setRowCount","useState","colCount","setColCount","firstFlgRef","useRef","renderRows","occupied","map","rows","headerCells","key","_loop","push","concat","InputControl","type","isPressEnterToChange","newValue","newArray","slice","setUnitColArray","_loop2","cells","setUnitRowArray","_loop3","_c","setElm","rowSpanValue","abs","colSpanValue","cellSpan","_objectSpread","rowspan","colspan","j","_extends","isCellSelected","style","backgroundColor","undefined","detectCellPosition","ToolbarDropdownMenu","__","latAlign","controls","align","isActive","updateAlignment","vertAlign","rowIndex","colIndex","selBlock","dispatch","createNotice","isDismissible","newBlock","setSelBlock","findIndex","block","setAreaBlock","blockNames","setBlockNames","_selBlock$startCell","_selBlock$endCell","_selBlock$startCell2","_selBlock$endCell2","_selBlock$startCell3","_selBlock$endCell3","_selBlock$startCell4","_selBlock$endCell4","derection","alignBlock","setAlignBlock","parentBlocks","useSelect","select","innerBlocks","getBlocks","new_block_names","name","clear_placement","clear_block","initRowUnitArray","unitRowArray","initColUnitArray","unitColArray","useEffect","gridStyle","current","newRowUnitArray","newColUnitArray","Fragment","PanelRow","NumberControl","input_val","Number","UnitControl","newStyle","Button","variant","ComboboxControl","options","sel_id","matchedBlock","find"],"mappings":"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"}
@@ -0,0 +1,163 @@
1
+ import { objectSpread2 as _objectSpread2 } from './_virtual/_rollupPluginBabelHelpers.js';
2
+ import { __ } from '@wordpress/i18n';
3
+ import { PanelRow, RadioControl, TextControl, ComboboxControl, __experimentalUnitControl } from '@wordpress/components';
4
+ import { PanelColorSettings } from '@wordpress/block-editor';
5
+
6
+ var helpLink = createElement("a", {
7
+ href: "https://fontawesome.com/search",
8
+ target: "_blank"
9
+ }, "FontAwesome");
10
+ var helpTextCode = createElement("span", {}, helpLink, __("Select the icon from and enter Unicode (the upper right four digits of the selection dialog). ", "block-collections"));
11
+ var helpImageURL = createElement("span", {}, __("Enter the URL for the image.", "block-collections"));
12
+ var helpTextFamily = createElement("span", {}, __("Please select the first class name shown in the HTML code field of the selection dialog. ", "block-collections"));
13
+ var units = [{
14
+ value: "px",
15
+ label: "px"
16
+ }, {
17
+ value: "em",
18
+ label: "em"
19
+ }, {
20
+ value: "rem",
21
+ label: "rem"
22
+ }];
23
+ var family_option = [{
24
+ value: "Font Awesome 6 Free",
25
+ label: "SOLID"
26
+ }, {
27
+ value: "Font Awesome 6 Brands",
28
+ label: "BRANDS"
29
+ }];
30
+ var IconSelectControl = _ref => {
31
+ var {
32
+ iconStyle,
33
+ setPosition,
34
+ onChange: _onChange
35
+ } = _ref;
36
+ var {
37
+ icon_type,
38
+ icon_url,
39
+ icon_name,
40
+ icon_pos,
41
+ icon_size,
42
+ icon_color,
43
+ icon_space,
44
+ icon_family
45
+ } = iconStyle;
46
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("label", {
47
+ className: "components-base-control__label"
48
+ }, __("Icon Types", "block-collections")), /*#__PURE__*/React.createElement(PanelRow, {
49
+ className: "itmar_position_row"
50
+ }, /*#__PURE__*/React.createElement(RadioControl, {
51
+ selected: icon_type,
52
+ options: [{
53
+ label: __("Awesome", "block-collections"),
54
+ value: "awesome"
55
+ }, {
56
+ label: __("Image", "block-collections"),
57
+ value: "image"
58
+ }, {
59
+ label: __("Avatar", "block-collections"),
60
+ value: "avatar"
61
+ }],
62
+ onChange: newValue => {
63
+ var newStyle = _objectSpread2(_objectSpread2({}, iconStyle), {}, {
64
+ icon_type: newValue
65
+ });
66
+ _onChange(newStyle);
67
+ }
68
+ })), icon_type === "awesome" && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TextControl, {
69
+ label: __("icon name", "block-collections"),
70
+ help: helpTextCode,
71
+ labelPosition: "top",
72
+ value: icon_name,
73
+ isPressEnterToChange: true,
74
+ onChange: newValue => {
75
+ var newStyle = _objectSpread2(_objectSpread2({}, iconStyle), {}, {
76
+ icon_name: newValue
77
+ });
78
+ _onChange(newStyle);
79
+ }
80
+ }), /*#__PURE__*/React.createElement(ComboboxControl, {
81
+ label: __("Icon Family", "block-collections"),
82
+ help: helpTextFamily,
83
+ options: family_option,
84
+ value: icon_family ? icon_family : "Font Awesome 6 Free",
85
+ onChange: newValue => {
86
+ var newStyle = _objectSpread2(_objectSpread2({}, iconStyle), {}, {
87
+ icon_family: newValue
88
+ });
89
+ _onChange(newStyle);
90
+ }
91
+ })), icon_type === "image" && /*#__PURE__*/React.createElement(TextControl, {
92
+ label: __("icon url", "block-collections"),
93
+ help: helpImageURL,
94
+ labelPosition: "top",
95
+ value: icon_url,
96
+ isPressEnterToChange: true,
97
+ onChange: newValue => {
98
+ var newStyle = _objectSpread2(_objectSpread2({}, iconStyle), {}, {
99
+ icon_url: newValue
100
+ });
101
+ _onChange(newStyle);
102
+ }
103
+ }), /*#__PURE__*/React.createElement(PanelRow, {
104
+ className: "sizing_row"
105
+ }, /*#__PURE__*/React.createElement(__experimentalUnitControl, {
106
+ dragDirection: "e",
107
+ onChange: newValue => {
108
+ var newStyle = _objectSpread2(_objectSpread2({}, iconStyle), {}, {
109
+ icon_size: newValue
110
+ });
111
+ _onChange(newStyle);
112
+ },
113
+ label: __("Size", "block-collections"),
114
+ value: icon_size,
115
+ units: units
116
+ }), setPosition && /*#__PURE__*/React.createElement(__experimentalUnitControl, {
117
+ dragDirection: "e",
118
+ onChange: newValue => {
119
+ var newStyle = _objectSpread2(_objectSpread2({}, iconStyle), {}, {
120
+ icon_space: newValue
121
+ });
122
+ _onChange(newStyle);
123
+ },
124
+ label: __("spacing to end", "block-collections"),
125
+ value: icon_space,
126
+ units: units
127
+ })), /*#__PURE__*/React.createElement(PanelColorSettings, {
128
+ title: __("Color settings", "itmar_location"),
129
+ initialOpen: false,
130
+ colorSettings: [{
131
+ value: icon_color,
132
+ onChange: newValue => {
133
+ var newStyle = _objectSpread2(_objectSpread2({}, iconStyle), {}, {
134
+ icon_color: newValue
135
+ });
136
+ _onChange(newStyle);
137
+ },
138
+ label: __("Icon color", "itmar_location")
139
+ }]
140
+ }), setPosition && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("label", {
141
+ className: "components-base-control__label"
142
+ }, __("Arrangement", "block-collections")), /*#__PURE__*/React.createElement(PanelRow, {
143
+ className: "itmar_position_row"
144
+ }, /*#__PURE__*/React.createElement(RadioControl, {
145
+ selected: icon_pos,
146
+ options: [{
147
+ label: __("left", "block-collections"),
148
+ value: "left"
149
+ }, {
150
+ label: __("right", "block-collections"),
151
+ value: "right"
152
+ }],
153
+ onChange: newValue => {
154
+ var newStyle = _objectSpread2(_objectSpread2({}, iconStyle), {}, {
155
+ icon_pos: newValue
156
+ });
157
+ _onChange(newStyle);
158
+ }
159
+ }))));
160
+ };
161
+
162
+ export { IconSelectControl as default };
163
+ //# sourceMappingURL=IconSelectControl.js.map