@fonixtree/magic-design 0.0.54 → 0.0.55

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 (108) hide show
  1. package/README.md +320 -0
  2. package/es/common/ImageModal/index.js +27 -22
  3. package/es/common/ImgArea/components/Crop.js +267 -0
  4. package/es/common/ImgArea/components/Icons.js +44 -0
  5. package/es/common/ImgArea/index.js +11 -0
  6. package/es/common/index.js +8 -0
  7. package/es/composite-comp/bol/components/Banner/defaultJSON.js +8 -8
  8. package/es/composite-comp/bol/components/Banner/mobile/index.js +1 -5
  9. package/es/composite-comp/bol/components/Banner/pc/index.js +1 -5
  10. package/es/composite-comp/bol/components/Button/defaultJSON.js +2 -2
  11. package/es/composite-comp/bol/components/Button/index.js +1 -5
  12. package/es/composite-comp/bol/components/Carousel/defaultJSON.js +12 -16
  13. package/es/composite-comp/bol/components/Carousel/index.js +1 -6
  14. package/es/composite-comp/bol/components/ImageGallery/defaultJSON.js +2 -2
  15. package/es/composite-comp/bol/components/ImageText/defaultJSON.js +17 -17
  16. package/es/composite-comp/bol/components/ImageText/mobile/index.js +1 -3
  17. package/es/composite-comp/bol/components/ImageText/pc/index.js +1 -1
  18. package/es/composite-comp/bol/components/Newsletter/defaultJSON.js +2 -2
  19. package/es/composite-comp/bol/components/Newsletter/index.js +1 -6
  20. package/es/composite-comp/bol/components/Tag/defaultJSON.js +2 -2
  21. package/es/composite-comp/bol/components/Tag/index.js +1 -5
  22. package/es/composite-comp/bol/components/Text/defaultJSON.js +3 -3
  23. package/es/composite-comp/bol/components/Text/index.js +1 -5
  24. package/es/composite-comp/bol/config-panels/TagCompConfig/TagConfigContent/index.js +5 -3
  25. package/es/composite-comp/bol/config-panels/TagCompConfig/index.js +6 -4
  26. package/es/composite-comp/common/config-panels/CustomizeConfig/index.js +1 -1
  27. package/es/composite-comp/dito/components/FlashDeal/defaultJSON.js +5 -2
  28. package/es/composite-comp/dito/components/FlashDeal/index.js +5 -1
  29. package/es/composite-comp/dito/components/FlashDeal/mobile/index.less +0 -1
  30. package/es/composite-comp/dito/components/FlashDeal/pc/imgs/defImg1.png +0 -0
  31. package/es/composite-comp/dito/components/FlashDeal/pc/imgs/defImg2.png +0 -0
  32. package/es/composite-comp/dito/components/FlashDeal/pc/imgs/defImg3.png +0 -0
  33. package/es/composite-comp/dito/components/FlashDeal/pc/index.js +578 -0
  34. package/es/composite-comp/dito/components/FlashDeal/pc/index.less +121 -0
  35. package/es/composite-comp/dito/components/MobileNavigation/defaultJSON.js +3 -3
  36. package/es/composite-comp/dito/components/Recommend/defaultJSON.js +2 -2
  37. package/es/composite-comp/dito/components/Recommend/index.js +1 -6
  38. package/es/composite-comp/dito/config-panels/FlashDealConfig/index.js +1 -1
  39. package/es/core/Designer/index.js +0 -2
  40. package/es/decorator/compositeDecorator.js +45 -12
  41. package/es/locale/en/en.json +3 -0
  42. package/es/locale/es/es.json +3 -0
  43. package/es/locale/id/id.json +3 -0
  44. package/es/meta-comp/components/Button/index.js +1 -4
  45. package/es/meta-comp/components/Button/index.less +1 -1
  46. package/es/meta-comp/components/Image/index.js +31 -3
  47. package/es/meta-comp/components/Image/index.less +1 -0
  48. package/es/meta-comp/components/Text/index.js +1 -4
  49. package/es/meta-comp/config-panels/ButtonConfig/index.js +2 -2
  50. package/es/meta-comp/config-panels/ImageConfig/AreaConfigModal/index.js +164 -0
  51. package/es/meta-comp/config-panels/ImageConfig/AreaConfigModal/index.less +26 -0
  52. package/es/meta-comp/config-panels/ImageConfig/HotAreaConfig/index.js +130 -0
  53. package/es/meta-comp/config-panels/ImageConfig/HotAreaConfig/index.less +17 -0
  54. package/es/meta-comp/config-panels/ImageConfig/index.js +13 -4
  55. package/lib/common/ImageModal/index.js +27 -22
  56. package/lib/common/ImgArea/components/Crop.js +267 -0
  57. package/lib/common/ImgArea/components/Icons.js +44 -0
  58. package/lib/common/ImgArea/index.js +11 -0
  59. package/lib/common/index.js +8 -0
  60. package/lib/composite-comp/bol/components/Banner/defaultJSON.js +8 -8
  61. package/lib/composite-comp/bol/components/Banner/mobile/index.js +1 -5
  62. package/lib/composite-comp/bol/components/Banner/pc/index.js +1 -5
  63. package/lib/composite-comp/bol/components/Button/defaultJSON.js +2 -2
  64. package/lib/composite-comp/bol/components/Button/index.js +1 -5
  65. package/lib/composite-comp/bol/components/Carousel/defaultJSON.js +12 -16
  66. package/lib/composite-comp/bol/components/Carousel/index.js +1 -6
  67. package/lib/composite-comp/bol/components/ImageGallery/defaultJSON.js +2 -2
  68. package/lib/composite-comp/bol/components/ImageText/defaultJSON.js +17 -17
  69. package/lib/composite-comp/bol/components/ImageText/mobile/index.js +1 -3
  70. package/lib/composite-comp/bol/components/ImageText/pc/index.js +1 -1
  71. package/lib/composite-comp/bol/components/Newsletter/defaultJSON.js +2 -2
  72. package/lib/composite-comp/bol/components/Newsletter/index.js +1 -6
  73. package/lib/composite-comp/bol/components/Tag/defaultJSON.js +2 -2
  74. package/lib/composite-comp/bol/components/Tag/index.js +1 -5
  75. package/lib/composite-comp/bol/components/Text/defaultJSON.js +3 -3
  76. package/lib/composite-comp/bol/components/Text/index.js +1 -5
  77. package/lib/composite-comp/bol/config-panels/TagCompConfig/TagConfigContent/index.js +5 -3
  78. package/lib/composite-comp/bol/config-panels/TagCompConfig/index.js +6 -4
  79. package/lib/composite-comp/common/config-panels/CustomizeConfig/index.js +1 -1
  80. package/lib/composite-comp/dito/components/FlashDeal/defaultJSON.js +5 -2
  81. package/lib/composite-comp/dito/components/FlashDeal/index.js +5 -1
  82. package/lib/composite-comp/dito/components/FlashDeal/mobile/index.less +0 -1
  83. package/lib/composite-comp/dito/components/FlashDeal/pc/imgs/defImg1.png +0 -0
  84. package/lib/composite-comp/dito/components/FlashDeal/pc/imgs/defImg2.png +0 -0
  85. package/lib/composite-comp/dito/components/FlashDeal/pc/imgs/defImg3.png +0 -0
  86. package/lib/composite-comp/dito/components/FlashDeal/pc/index.js +578 -0
  87. package/lib/composite-comp/dito/components/FlashDeal/pc/index.less +121 -0
  88. package/lib/composite-comp/dito/components/MobileNavigation/defaultJSON.js +3 -3
  89. package/lib/composite-comp/dito/components/Recommend/defaultJSON.js +2 -2
  90. package/lib/composite-comp/dito/components/Recommend/index.js +1 -6
  91. package/lib/composite-comp/dito/config-panels/FlashDealConfig/index.js +1 -1
  92. package/lib/core/Designer/index.js +0 -2
  93. package/lib/decorator/compositeDecorator.js +45 -12
  94. package/lib/locale/en/en.json +3 -0
  95. package/lib/locale/es/es.json +3 -0
  96. package/lib/locale/id/id.json +3 -0
  97. package/lib/meta-comp/components/Button/index.js +1 -4
  98. package/lib/meta-comp/components/Button/index.less +1 -1
  99. package/lib/meta-comp/components/Image/index.js +31 -3
  100. package/lib/meta-comp/components/Image/index.less +1 -0
  101. package/lib/meta-comp/components/Text/index.js +1 -4
  102. package/lib/meta-comp/config-panels/ButtonConfig/index.js +2 -2
  103. package/lib/meta-comp/config-panels/ImageConfig/AreaConfigModal/index.js +164 -0
  104. package/lib/meta-comp/config-panels/ImageConfig/AreaConfigModal/index.less +26 -0
  105. package/lib/meta-comp/config-panels/ImageConfig/HotAreaConfig/index.js +130 -0
  106. package/lib/meta-comp/config-panels/ImageConfig/HotAreaConfig/index.less +17 -0
  107. package/lib/meta-comp/config-panels/ImageConfig/index.js +13 -4
  108. package/package.json +90 -3
package/README.md ADDED
@@ -0,0 +1,320 @@
1
+ # 快捷指令使用
2
+
3
+ ## 1、发布 -- npm run pub
4
+
5
+ ## 2、新增国际化 -- npm run cl "Hello world"
6
+
7
+ ## 3、更新iconfont -- npm run iconfont
8
+
9
+
10
+ # 设计器二期
11
+
12
+ ## 1、基本概念
13
+
14
+ ### 1.1、元组件:构成复合组件的最小单位
15
+
16
+ Text、Image、Button、Divider、Video 等
17
+
18
+ ### 1.2、复合组件:由若干个元组件构成的一个大组件
19
+
20
+ Text、Banner、Image Gallery、Image and Text、Carousel、Reward、Newsletter 等
21
+
22
+ ### 1.3、业务公共组件:项目中复用的公共组件
23
+
24
+ 所有的公共组件需要开放 value 和 onChange Api(除 Button、Iconfont)
25
+
26
+ Button、Iconfont、AlignSelecter、Collapse、ColorPicker、ImagePicker、LayoutSelecter、Slider、UrlPicker
27
+
28
+ ## 2、元组件
29
+
30
+ ### 2.1
31
+
32
+ 元组件类型:
33
+
34
+ TEXT、IMAGE、BUTTON、DIVIDER、VIDEO
35
+
36
+ 元组件报文格式:
37
+
38
+ ```json
39
+ {
40
+ id:'xxxx' //元组件key
41
+ type: 'TYPE', //元组件类型
42
+ style:{
43
+ fontFamily:'xxx', //字体
44
+ ...css //属性名称尽量使用标准css名称
45
+ },
46
+ hoverStyle:{
47
+
48
+ }
49
+ }
50
+ ```
51
+
52
+ 动态设置 hover 效果
53
+
54
+ onMouseEnter={e => { e.target.style.color = 'red'; }}
55
+
56
+ onMouseLeave={e => { e.target.style.color = 'white'; }}
57
+
58
+ 文本可编辑
59
+
60
+ contenteditable="true"
61
+
62
+ ### 2.2 、元组件报文
63
+
64
+ #### Text
65
+
66
+ ```json
67
+ {
68
+ id:'xxxx' //元组件key
69
+ type: 'TYPE', //元组件类型
70
+ content:'this is text',
71
+ style:{
72
+ fontFamily:'xxx', //字体
73
+ fontSize: '14px',
74
+ width: '200px',
75
+ ...css
76
+ }
77
+ }
78
+ ```
79
+
80
+ #### Image
81
+
82
+ ```json
83
+ {
84
+ id:'xxxx' //元组件key
85
+ type: 'IMAGE', //元组件类型
86
+ name:'123.png',
87
+ src:'../image.png', //图片地址
88
+ url:'www.baidu.com', //图片跳转地址
89
+ style:{
90
+ width: '200px',
91
+ ...css
92
+ },
93
+ hoverStyle:{ //hover 类型为new时保存src,类型为enlarge时保存scale
94
+ scale: '2',
95
+ src:'../image1.png',
96
+ }
97
+ }
98
+ ```
99
+
100
+ #### Button
101
+
102
+ ```json
103
+ {
104
+ id:'xxxx' //元组件key
105
+ type: 'BUTTON', //元组件类型
106
+ name:'Submit',
107
+ url: 'www.baidu.com',
108
+ style:{
109
+ buttonIconSrc:'../img.png',
110
+ buttonIconPlace: 'left',
111
+ color:'#FEFEFE',
112
+ border: '1px solid red',
113
+ borderRadius:'10px',
114
+ fontFamily:'xxx', //字体
115
+ fontSize: '14px',
116
+ ...css
117
+ },
118
+ hoverStyle {
119
+ color:'#FEFEFE',
120
+ border: '1px solid red',
121
+ fontFamily:'xxx', //字体
122
+ fontSize: '14px',
123
+ ...css
124
+ }
125
+ }
126
+ ```
127
+
128
+ ## 2、复合组件
129
+
130
+ ### 2.1
131
+
132
+ 元组件类型:
133
+
134
+ TEXT、BANNER、IMAGE_GALLERT、IMAGE_TEXT、CAROUSEL、REWARD、NEWSLETTER
135
+
136
+ 复合组件报文格式:
137
+
138
+ ```json
139
+ {
140
+ id:'xxxx' //复合组件key
141
+ type: 'TYPE', //复合组件类型
142
+ setting:{ //开关类型的配置及属性配置放在这里
143
+ autoplays: 3, //3秒轮播
144
+ },
145
+ groupSource:[], //元组件集合组数据放在这里
146
+ metas:{
147
+ title:{
148
+ open:false,
149
+ type:'IMAGE'
150
+ ...metaCompJson
151
+ },
152
+ subTitle:{
153
+ open:false,
154
+ type:'IMAGE'
155
+ ...metaCompJson
156
+ }
157
+ },
158
+ customize:{
159
+ layout:'',
160
+ background:{
161
+
162
+ }
163
+ }
164
+ }
165
+ ```
166
+
167
+ #### Text
168
+
169
+ ```js
170
+ {
171
+ id: 'xxxx', //复合组件key
172
+ type: 'TEXT', //复合组件类型
173
+ setting:{
174
+ layout:'left', // 模块布局 left/center/right ,每一个layout可能都是一个不同的组件
175
+ title:{
176
+ type:'TEXT'
177
+ ...metaCompJson
178
+ },
179
+ subtitle:{
180
+ type:'TEXT'
181
+ ...metaCompJson
182
+ },
183
+ },
184
+ source:[
185
+ { //此处可以抽出业务组件
186
+ title:{
187
+ type:'TEXT'
188
+ ...metaCompJson
189
+ },
190
+ content:{
191
+ type:'TEXT'
192
+ ...metaCompJson
193
+ }
194
+ }
195
+ ],
196
+ style:{
197
+ align:'left', //文本布局 left/center/right
198
+ backgroundColor: 'red',
199
+ backgroundImage:'../image.png'
200
+ }
201
+ }
202
+ ```
203
+
204
+ #### Banner
205
+
206
+ modifySetting
207
+
208
+ ```json
209
+ {
210
+ "comositeId": "1111",
211
+
212
+ "value": {
213
+ "autoplays": 4
214
+ }
215
+ }
216
+ ```
217
+
218
+ ```json
219
+ {
220
+ id: 'xxxx',
221
+ type: 'BANNER',
222
+ setting:{
223
+ open:false
224
+ autoplays: 3, //3秒轮播
225
+ arrows:{ // 滚动箭头
226
+ open:false,
227
+ color:'red',
228
+ size:'',
229
+ hoverSize:'',
230
+ hoverColor:'green',
231
+ },
232
+ dots:{ //面板指示点
233
+ open:false,
234
+ color: 'red',
235
+ size:'',
236
+ hoverSize:''
237
+ hoverColor:'green',
238
+ },
239
+ },
240
+ groupSource:[
241
+ { //此处可以作为一个业务组件
242
+ id:'xxxxx',
243
+ image:{
244
+ open:false,
245
+ type:'IMAGE'
246
+ ...metaCompJson
247
+ },
248
+ title:{
249
+ open:false,
250
+ type:'TEXT',
251
+ ...metaCompJson
252
+ },
253
+ content:{
254
+ open:false,
255
+ type:'TEXT',
256
+ ...metaCompJson
257
+ },
258
+ button:{
259
+ type:'BUTTON',
260
+ ...metaCompJson
261
+ },
262
+ secondaryButton:{
263
+ type:'BUTTON',
264
+ ...metaCompJson
265
+ },
266
+ layout:'center',
267
+ align:'left',
268
+ //文本布局 left/center/right
269
+ }
270
+ ]
271
+ }
272
+ ```
273
+
274
+ #### Image Gallery
275
+
276
+ ```json
277
+
278
+ ```
279
+
280
+ #### Image and Text
281
+
282
+ ```json
283
+ {
284
+ id:'xxxx'
285
+ type: 'IMAGE_TEXT',
286
+ setting:{
287
+ layout:'left',
288
+ title:{},
289
+ subtitle:{},
290
+ button:{},
291
+ secondaryButton:{}
292
+ },
293
+ source:[
294
+
295
+ ],
296
+ style:{
297
+ align:'left',
298
+ backgroundColor:'red',
299
+ backgroundImage:'./img.png'
300
+ }
301
+ }
302
+ ```
303
+
304
+ 疑问:
305
+
306
+ Text 元组件
307
+
308
+ 文字链接配置好之后,怎么删除
309
+
310
+ 链接配置的规则,按单词还是字符
311
+
312
+ image 元组件
313
+
314
+ 属性控制进度条和输入框是否要限制最大最小值
315
+
316
+ button 元组件
317
+
318
+ 是否需要 icon 的 hover 效果
319
+
320
+ banner 中的 text Align 放在元组件里?
@@ -219,7 +219,6 @@ var modalSize = _const.size;
219
219
  var Search = _antd.Input.Search;
220
220
  var picAccept = '.gif,.jpg,.png';
221
221
  var videoAccept = '.AVI,.mov,.rmvb,.rm,.FLV,.mp4,.3GP';
222
- var pageSize = 24;
223
222
 
224
223
  function ImageModal(_a) {
225
224
  var _this = this;
@@ -256,29 +255,33 @@ function ImageModal(_a) {
256
255
  pageIndex = _j[0],
257
256
  setPageIndex = _j[1];
258
257
 
259
- var _k = (0, _react.useState)(false),
260
- spinning = _k[0],
261
- setSpinning = _k[1];
258
+ var _k = (0, _react.useState)(20),
259
+ pageSize = _k[0],
260
+ setPageSize = _k[1];
262
261
 
263
- var _l = (0, _react.useState)(''),
264
- name = _l[0],
265
- setName = _l[1];
262
+ var _l = (0, _react.useState)(false),
263
+ spinning = _l[0],
264
+ setSpinning = _l[1];
266
265
 
267
- var _m = (0, _react.useState)([]),
268
- contentcatgsList = _m[0],
269
- setContentcatgsList = _m[1];
266
+ var _m = (0, _react.useState)(''),
267
+ name = _m[0],
268
+ setName = _m[1];
270
269
 
271
- var _o = (0, _react.useState)(''),
272
- searchValue = _o[0],
273
- setSearchValue = _o[1];
270
+ var _o = (0, _react.useState)([]),
271
+ contentcatgsList = _o[0],
272
+ setContentcatgsList = _o[1];
274
273
 
275
- var _p = (0, _react.useState)([]),
276
- expandedKeys = _p[0],
277
- setExpandedKeys = _p[1];
274
+ var _p = (0, _react.useState)(''),
275
+ searchValue = _p[0],
276
+ setSearchValue = _p[1];
278
277
 
279
- var _q = (0, _react.useState)(true),
280
- autoExpandParent = _q[0],
281
- setAutoExpandParent = _q[1]; // const currentUser = sessionUtil.getUser() || {};
278
+ var _q = (0, _react.useState)([]),
279
+ expandedKeys = _q[0],
280
+ setExpandedKeys = _q[1];
281
+
282
+ var _r = (0, _react.useState)(true),
283
+ autoExpandParent = _r[0],
284
+ setAutoExpandParent = _r[1]; // const currentUser = sessionUtil.getUser() || {};
282
285
  // const { _csrf } = currentUser;
283
286
  // const headers = {};
284
287
  // if (_csrf && _csrf.headerName) {
@@ -574,11 +577,13 @@ function ImageModal(_a) {
574
577
  current: pageIndex,
575
578
  pageSize: pageSize,
576
579
  total: total,
577
- onChange: function onChange(page) {
578
- setPageIndex(page);
580
+ onChange: function onChange(pageIndex, pageSize) {
581
+ setPageIndex(pageIndex);
582
+ setPageSize(pageSize);
579
583
  qryImageContents({
580
584
  contentCatgId: selectedKeys[0],
581
- pageIndex: page
585
+ pageIndex: pageIndex,
586
+ pageSize: pageSize
582
587
  });
583
588
  }
584
589
  };
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = exports.coordinateType = void 0;
9
+
10
+ var _interactjs = _interopRequireDefault(require("interactjs"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _ramda = require("ramda");
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _Icons = require("./Icons");
19
+
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
25
+
26
+ var __extends = void 0 && (void 0).__extends || function () {
27
+ var _extendStatics = function extendStatics(d, b) {
28
+ _extendStatics = Object.setPrototypeOf || {
29
+ __proto__: []
30
+ } instanceof Array && function (d, b) {
31
+ d.__proto__ = b;
32
+ } || function (d, b) {
33
+ for (var p in b) {
34
+ if (b.hasOwnProperty(p)) d[p] = b[p];
35
+ }
36
+ };
37
+
38
+ return _extendStatics(d, b);
39
+ };
40
+
41
+ return function (d, b) {
42
+ _extendStatics(d, b);
43
+
44
+ function __() {
45
+ this.constructor = d;
46
+ }
47
+
48
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49
+ };
50
+ }();
51
+
52
+ var __assign = void 0 && (void 0).__assign || function () {
53
+ __assign = Object.assign || function (t) {
54
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
55
+ s = arguments[i];
56
+
57
+ for (var p in s) {
58
+ if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
59
+ }
60
+ }
61
+
62
+ return t;
63
+ };
64
+
65
+ return __assign.apply(this, arguments);
66
+ };
67
+
68
+ var Crop =
69
+ /** @class */
70
+ function (_super) {
71
+ __extends(Crop, _super);
72
+
73
+ function Crop() {
74
+ var _this = _super !== null && _super.apply(this, arguments) || this; // shouldComponentUpdate(nextProps) {
75
+ // // reduce uncessary update
76
+ // return !equals(nextProps.coordinate.inputVal, this.state.inputVal)||!equals(nextProps.coordinate, this.props.coordinate)
77
+ // || (nextProps.index !== this.props.index)
78
+ // }
79
+
80
+
81
+ _this.handleResizeMove = function (e) {
82
+ var _a = _this.props,
83
+ index = _a.index,
84
+ coordinate = _a.coordinate,
85
+ _b = _a.coordinate,
86
+ x = _b.x,
87
+ y = _b.y,
88
+ coordinates = _a.coordinates,
89
+ onResize = _a.onResize,
90
+ onChange = _a.onChange,
91
+ onSave = _a.onSave;
92
+ var _c = e.rect,
93
+ width = _c.width,
94
+ height = _c.height;
95
+ var _d = e.deltaRect,
96
+ left = _d.left,
97
+ top = _d.top; // console.log(x, left, y, top);
98
+ // if (x + left < 0 || y + top < 0 || x + left + width > 500 || y + top + height > 500) {
99
+ // return;
100
+ // }
101
+
102
+ var nextCoordinate = __assign(__assign({}, coordinate), {
103
+ x: x + left,
104
+ y: y + top,
105
+ width: width,
106
+ height: height
107
+ });
108
+
109
+ var nextCoordinates = (0, _ramda.update)(index, nextCoordinate)(coordinates);
110
+
111
+ if ((0, _ramda.is)(Function, onResize)) {
112
+ onResize(nextCoordinate, index, nextCoordinates);
113
+ }
114
+
115
+ if ((0, _ramda.is)(Function, onChange)) {
116
+ onChange(nextCoordinate, index, nextCoordinates);
117
+ }
118
+ };
119
+
120
+ _this.handleDragMove = function (e) {
121
+ var _a = _this.props,
122
+ index = _a.index,
123
+ coordinate = _a.coordinate,
124
+ _b = _a.coordinate,
125
+ x = _b.x,
126
+ y = _b.y,
127
+ coordinates = _a.coordinates,
128
+ onDrag = _a.onDrag,
129
+ onChange = _a.onChange;
130
+ var dx = e.dx,
131
+ dy = e.dy;
132
+
133
+ var nextCoordinate = __assign(__assign({}, coordinate), {
134
+ x: x + dx,
135
+ y: y + dy
136
+ });
137
+
138
+ var nextCoordinates = (0, _ramda.update)(index, nextCoordinate)(coordinates);
139
+
140
+ if ((0, _ramda.is)(Function, onDrag)) {
141
+ onDrag(nextCoordinate, index, nextCoordinates);
142
+ }
143
+
144
+ if ((0, _ramda.is)(Function, onChange)) {
145
+ onChange(nextCoordinate, index, nextCoordinates);
146
+ }
147
+ };
148
+
149
+ _this.handleDelete = function () {
150
+ var _a = _this.props,
151
+ index = _a.index,
152
+ coordinate = _a.coordinate,
153
+ onDelete = _a.onDelete,
154
+ coordinates = _a.coordinates;
155
+ var nextCoordinates = (0, _ramda.remove)(index, 1)(coordinates);
156
+
157
+ if ((0, _ramda.is)(Function, onDelete)) {
158
+ onDelete(coordinate, index, nextCoordinates);
159
+ }
160
+ };
161
+
162
+ _this.state = {
163
+ inputVal: _this.props.coordinate && _this.props.coordinate.inputVal || ''
164
+ };
165
+
166
+ _this.handleSave = function () {
167
+ var _a = _this.props,
168
+ coordinate = _a.coordinate,
169
+ _b = _a.coordinate,
170
+ x = _b.x,
171
+ y = _b.y,
172
+ coordinates = _a.coordinates,
173
+ index = _a.index,
174
+ onSave = _a.onSave;
175
+
176
+ var nextCoordinate = __assign(__assign({}, coordinate), {
177
+ x: x,
178
+ y: y,
179
+ inputVal: _this.state.inputVal
180
+ });
181
+
182
+ var nextCoordinates = (0, _ramda.update)(index, nextCoordinate)(coordinates);
183
+ onSave && onSave(coordinate, index, nextCoordinates);
184
+ (0, _interactjs["default"])(_this.crop).unset();
185
+ };
186
+
187
+ return _this;
188
+ }
189
+
190
+ Crop.prototype.componentDidMount = function () {
191
+ (0, _interactjs["default"])(this.crop).draggable({
192
+ modifiers: [_interactjs["default"].modifiers.restrictRect({
193
+ restriction: 'parent'
194
+ })]
195
+ }).resizable({
196
+ edges: {
197
+ left: true,
198
+ right: true,
199
+ bottom: true,
200
+ top: true
201
+ }
202
+ }).on('dragmove', this.handleDragMove).on('resizemove', this.handleResizeMove);
203
+ };
204
+
205
+ Crop.prototype.componentWillUnmount = function () {
206
+ (0, _interactjs["default"])(this.crop).unset();
207
+ };
208
+
209
+ Crop.prototype.render = function () {
210
+ var _this = this;
211
+
212
+ var _a = this.props,
213
+ coordinate = _a.coordinate,
214
+ index = _a.index,
215
+ onSave = _a.onSave;
216
+ return /*#__PURE__*/_react["default"].createElement("div", {
217
+ ref: function ref(crop) {
218
+ return _this.crop = crop;
219
+ },
220
+ style: Crop.cropStyle(coordinate)
221
+ }, /*#__PURE__*/_react["default"].createElement(_Icons.NumberIcon, {
222
+ number: index + 1
223
+ }), /*#__PURE__*/_react["default"].createElement(_Icons.DeleteIcon, {
224
+ onClick: this.handleDelete
225
+ }));
226
+ };
227
+
228
+ Crop.cropStyle = function (coordinate) {
229
+ var x = coordinate.x,
230
+ y = coordinate.y,
231
+ width = coordinate.width,
232
+ height = coordinate.height;
233
+ return {
234
+ display: 'inline-block',
235
+ position: 'absolute',
236
+ width: width,
237
+ height: height,
238
+ top: y,
239
+ left: x,
240
+ border: '1px dashed #2F54EB',
241
+ background: 'rgba(47, 84, 235, 0.15)'
242
+ };
243
+ };
244
+
245
+ return Crop;
246
+ }(_react.Component);
247
+
248
+ var coordinateType = _propTypes["default"].shape({
249
+ x: _propTypes["default"].number.isRequired,
250
+ y: _propTypes["default"].number.isRequired,
251
+ width: _propTypes["default"].number.isRequired,
252
+ height: _propTypes["default"].number.isRequired
253
+ });
254
+
255
+ exports.coordinateType = coordinateType;
256
+ Crop.propTypes = {
257
+ coordinate: coordinateType.isRequired,
258
+ index: _propTypes["default"].number.isRequired,
259
+ onResize: _propTypes["default"].func,
260
+ onDrag: _propTypes["default"].func,
261
+ onDelete: _propTypes["default"].func,
262
+ onChange: _propTypes["default"].func,
263
+ coordinates: _propTypes["default"].array,
264
+ onSave: _propTypes["default"].func
265
+ };
266
+ var _default = Crop;
267
+ exports["default"] = _default;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NumberIcon = exports.DeleteIcon = void 0;
7
+
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
+
14
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
15
+
16
+ var DeleteIcon = function DeleteIcon(props) {
17
+ return /*#__PURE__*/_react["default"].createElement("div", _extends({
18
+ className: "rmc-icon-container"
19
+ }, props), /*#__PURE__*/_react["default"].createElement("div", {
20
+ className: "rmc-remove"
21
+ }), /*#__PURE__*/_react["default"].createElement("style", {
22
+ jsx: "true"
23
+ }, "\n .rmc-icon-container {\n width: 15px;\n height: 15px;\n cursor: pointer;\n float: right;\n background:#2F54EB;\n opacity: 0.8;\n }\n .rmc-remove {\n color: white;\n position: absolute;\n margin-top: 6px;\n }\n\n .rmc-remove:hover {\n cursor: pointer;\n }\n\n .rmc-remove:before {\n content: '';\n position: absolute;\n width: 15px;\n height: 1px;\n background-color: currentColor;\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n }\n\n .rmc-remove:after {\n content: '';\n position: absolute;\n width: 15px;\n height: 1px;\n background-color: currentColor;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg);\n }\n "));
24
+ };
25
+
26
+ exports.DeleteIcon = DeleteIcon;
27
+
28
+ var NumberIcon = function NumberIcon(_a) {
29
+ var number = _a.number;
30
+ return /*#__PURE__*/_react["default"].createElement("div", {
31
+ className: "rmc-number"
32
+ }, number, /*#__PURE__*/_react["default"].createElement("style", {
33
+ jsx: "true"
34
+ }, "\n .rmc-number {\n height: 15px;\n width: 15px;\n float: left;\n font-size: 12px;\n background:#2F54EB;\n text-align: center;\n line-height: 15px;\n color: white;\n opacity: 0.8;\n }\n "));
35
+ };
36
+
37
+ exports.NumberIcon = NumberIcon;
38
+ var number = _propTypes["default"].number;
39
+ NumberIcon.propTypes = {
40
+ number: number
41
+ };
42
+ NumberIcon.defaultProps = {
43
+ number: ''
44
+ };