itmar-block-packages 1.10.1 → 2.0.1

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