@cocreate/resize 1.11.1 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cocreate/resize",
3
- "version": "1.11.1",
3
+ "version": "1.12.0",
4
4
  "description": "A light weight resize handler make any element resizable by adding data attributes or usinng init object. Great for Customized text box or text area.",
5
5
  "keywords": [
6
6
  "resize",
@@ -58,6 +58,6 @@
58
58
  "webpack-log": "^3.0.1"
59
59
  },
60
60
  "dependencies": {
61
- "@cocreate/observer": "^1.16.0"
61
+ "@cocreate/observer": "^1.16.1"
62
62
  }
63
63
  }
@@ -0,0 +1,16 @@
1
+ module.exports = {
2
+ tabWidth: 4,
3
+ semi: true,
4
+ trailingComma: "none",
5
+ bracketSameLine: true,
6
+ useTabs: true,
7
+ overrides: [
8
+ {
9
+ files: ["*.json", "*.yml", "*.yaml"],
10
+ options: {
11
+ tabWidth: 2,
12
+ useTabs: false
13
+ },
14
+ }
15
+ ],
16
+ };
package/src/index.js CHANGED
@@ -15,20 +15,20 @@ const coCreateResize = {
15
15
  resizers: [],
16
16
  resizeWidgets: [],
17
17
 
18
- init: function(handleObj) {
18
+ init: function (handleObj) {
19
19
  for (var handleKey in handleObj)
20
20
  if (handleObj.hasOwnProperty(handleKey) && handleKey == 'selector')
21
21
  this.selector = handleObj[handleKey];
22
22
 
23
23
  this.resizers = document.querySelectorAll(this.selector);
24
24
  var _this = this;
25
- this.resizers.forEach(function(resize, idx) {
25
+ this.resizers.forEach(function (resize, idx) {
26
26
  let resizeWidget = new CoCreateResize(resize, handleObj);
27
27
  _this.resizeWidgets[idx] = resizeWidget;
28
28
  });
29
29
  },
30
30
 
31
- initElement: function(target) {
31
+ initElement: function (target) {
32
32
  let resizeWidget = new CoCreateResize(target, {
33
33
  dragLeft: "[resize='left']",
34
34
  dragRight: "[resize='right']",
@@ -46,13 +46,13 @@ function CoCreateResize(resizer, options) {
46
46
  }
47
47
 
48
48
  CoCreateResize.prototype = {
49
- init: function(handleObj) {
49
+ init: function (handleObj) {
50
50
  if (this.resizeWidget) {
51
51
  this.initDrags = [];
52
52
  this.checkCorners = [];
53
53
  this.doDrags = [];
54
54
  this.Drags = [];
55
-
55
+
56
56
  //this is for grid
57
57
  this.isGrid = this.detectGrid();
58
58
  this.gridWidth = 0;
@@ -75,12 +75,12 @@ CoCreateResize.prototype = {
75
75
  }
76
76
  },
77
77
 
78
- getGridProperty: function() {
78
+ getGridProperty: function () {
79
79
  if (!this.resizeWidget.parentNode) return;
80
80
  let compStyles = window.getComputedStyle(this.resizeWidget.parentNode);
81
81
  let gridColumns = compStyles.gridTemplateColumns;
82
82
  let height = compStyles.gridAutoRows;
83
-
83
+
84
84
  if (gridColumns !== 'none') {
85
85
  let width = gridColumns.split(' ');
86
86
  this.limitSpan = width.length;
@@ -91,27 +91,25 @@ CoCreateResize.prototype = {
91
91
  }
92
92
  },
93
93
 
94
- checkGridColumns: function() {
95
- if (typeof this.resizeWidget !== 'undefined' && this.resizeWidget.parentNode)
96
- {
94
+ checkGridColumns: function () {
95
+ if (typeof this.resizeWidget !== 'undefined' && this.resizeWidget.parentNode) {
97
96
  let compStylesOfParent = window.getComputedStyle(this.resizeWidget.parentNode);
98
97
  let spans = 0;
99
98
  let gridColumns = compStylesOfParent.gridTemplateColumns.split(' ');
100
99
  let temp = gridColumns[0];
101
100
  gridColumns.map(v => {
102
- if (v == temp) spans ++;
101
+ if (v == temp) spans++;
103
102
  });
104
103
  this.limitSpan = spans;
105
- if (this.resizeWidget.style['grid-column-end'])
106
- {
104
+ if (this.resizeWidget.style['grid-column-end']) {
107
105
  let curClassAttributes = this.resizeWidget.getAttribute('class').split(' ');
108
106
  let prevColumnState = curClassAttributes[curClassAttributes.length - 1].split('_');
109
107
  let prevSpan = Number.parseInt(prevColumnState[1]);
110
108
  let curColumnState = this.resizeWidget.style['grid-column-end'].split(' ');
111
109
  let curSpan = Number.parseInt(curColumnState[1]);
112
-
110
+
113
111
  let span = 0;
114
- if (this.limitSpan >= prevSpan) span = prevSpan;
112
+ if (this.limitSpan >= prevSpan) span = prevSpan;
115
113
  else if (prevSpan > this.limitSpan) span = this.limitSpan;
116
114
  else span = Math.min(curSpan, this.limitSpan);
117
115
 
@@ -120,14 +118,14 @@ CoCreateResize.prototype = {
120
118
  }
121
119
  },
122
120
 
123
- initResize: function() {
124
- DIRECTIONS.map(d => {
125
- if (this.Drags[d])
126
- this.addListenerMulti(this.Drags[d], EVENTS[0], this.checkCorners[d]);
121
+ initResize: function () {
122
+ DIRECTIONS.map(d => {
123
+ if (this.Drags[d])
124
+ this.addListenerMulti(this.Drags[d], EVENTS[0], this.checkCorners[d]);
127
125
  });
128
126
  },
129
127
 
130
- checkDragImplementation: function(e, from, to, offset, fcur, scur) {
128
+ checkDragImplementation: function (e, from, to, offset, fcur, scur) {
131
129
  if (e.touches)
132
130
  e = e.touches[0];
133
131
  let other;
@@ -153,10 +151,10 @@ CoCreateResize.prototype = {
153
151
  }
154
152
  },
155
153
 
156
- initDrag: function(e, idx) {
154
+ initDrag: function (e, idx) {
157
155
  e.preventDefault();
158
156
 
159
- if (!this.resizeWidget.hasAttribute('resizing')){
157
+ if (!this.resizeWidget.hasAttribute('resizing')) {
160
158
  this.resizeWidget.setAttribute('resizing', '')
161
159
  }
162
160
 
@@ -174,6 +172,7 @@ CoCreateResize.prototype = {
174
172
  }
175
173
  else {
176
174
  this.startLeft = parseInt(selector.left, 10);
175
+ this.startRight = parseInt(selector.right, 10);
177
176
  this.startWidth = parseInt(selector.width, 10);
178
177
 
179
178
  if (e.touches)
@@ -186,30 +185,30 @@ CoCreateResize.prototype = {
186
185
  this.addListenerMulti(document.documentElement, EVENTS[2], this.stopDrag);
187
186
  },
188
187
 
189
- initTopDrag: function(e) {
188
+ initTopDrag: function (e) {
190
189
  this.initDrag(e, 'top');
191
190
  },
192
- initBottomDrag: function(e) {
191
+ initBottomDrag: function (e) {
193
192
  this.initDrag(e, 'bottom');
194
193
  },
195
- initLeftDrag: function(e) {
194
+ initLeftDrag: function (e) {
196
195
  this.initDrag(e, 'left');
197
196
 
198
197
  },
199
- initRightDrag: function(e) {
198
+ initRightDrag: function (e) {
200
199
  this.initDrag(e, 'right');
201
200
  },
202
201
 
203
202
  //this is just for grid system
204
- setRowEnd: function(height) {
203
+ setRowEnd: function (height) {
205
204
  if (this.gridHeight) {
206
- this.heightSpan = Math.ceil((height - (this.heightSpan - 1) * this.gridRowGap) / this.gridHeight );
205
+ this.heightSpan = Math.ceil((height - (this.heightSpan - 1) * this.gridRowGap) / this.gridHeight);
207
206
  this.resizeWidget.style['grid-row-end'] = 'span ' + this.heightSpan;
208
- this.collaborate({rowEnd: this.heightSpan})
207
+ this.collaborate({ rowEnd: this.heightSpan })
209
208
  }
210
209
  },
211
210
 
212
- doTopDrag: function(e) {
211
+ doTopDrag: function (e) {
213
212
  let top, height;
214
213
 
215
214
  if (e.touches)
@@ -221,14 +220,14 @@ CoCreateResize.prototype = {
221
220
  return;
222
221
  if (!this.isGrid) {
223
222
  this.resizeWidget.style.top = top + 'px';
224
- this.collaborate({top, height})
223
+ this.collaborate({ top, height })
225
224
  }
226
225
  this.resizeWidget.style.height = height + 'px';
227
226
  this.setRowEnd(height);
228
227
  },
229
228
 
230
229
 
231
- doBottomDrag: function(e) {
230
+ doBottomDrag: function (e) {
232
231
  let height;
233
232
 
234
233
  if (e.touches)
@@ -239,34 +238,36 @@ CoCreateResize.prototype = {
239
238
  if (height < 10)
240
239
  return;
241
240
  if (!this.isGrid)
242
- this.collaborate({height})
243
-
241
+ this.collaborate({ height })
242
+
244
243
  this.resizeWidget.style.height = height + 'px';
245
244
  this.setRowEnd(height);
246
245
  },
247
246
 
248
247
  //this is just for grid system
249
- setColumnEnd: function(width) {
248
+ setColumnEnd: function (width) {
250
249
  if (this.gridWidth) {
251
250
  let spans = Math.ceil((width - (this.widthSpan - 1) * this.gridColumnGap) / this.gridWidth);
252
251
  this.widthSpan = (spans > this.limitSpan) ? this.limitSpan : spans;
253
252
  this.resizeWidget.style['grid-column-end'] = 'span ' + this.widthSpan;
254
- this.collaborate({columnEnd: this.widthSpan})
253
+ this.collaborate({ columnEnd: this.widthSpan })
255
254
  }
256
255
  },
257
256
 
258
- doLeftDrag: function(e) {
259
- let left, width;
257
+ doLeftDrag: function (e) {
258
+ let left, right, width;
260
259
  if (e.touches)
261
260
  e = e.touches[0];
262
261
  left = this.startLeft + e.clientX - this.startX;
262
+ right = this.startRight;
263
263
  width = this.startWidth - e.clientX + this.startX;
264
264
 
265
265
  if (width < 10)
266
266
  return;
267
267
  if (!this.isGrid) {
268
- this.resizeWidget.style.left = left + 'px';
269
- this.collaborate({left, width})
268
+ this.resizeWidget.style.left = '';
269
+ this.resizeWidget.style.right = right + 'px';
270
+ this.collaborate({ left, width })
270
271
  }
271
272
 
272
273
  this.resizeWidget.style.width = width + 'px';
@@ -274,7 +275,7 @@ CoCreateResize.prototype = {
274
275
  },
275
276
 
276
277
 
277
- doRightDrag: function(e) {
278
+ doRightDrag: function (e) {
278
279
  let width;
279
280
  if (e.touches)
280
281
  e = e.touches[0];
@@ -283,13 +284,13 @@ CoCreateResize.prototype = {
283
284
  return;
284
285
 
285
286
  if (!this.isGrid)
286
- this.collaborate({width})
287
-
287
+ this.collaborate({ width })
288
+
288
289
  this.resizeWidget.style.width = width + 'px';
289
290
  this.setColumnEnd(width);
290
291
  },
291
292
 
292
- detectGrid: function() {
293
+ detectGrid: function () {
293
294
  let isGrid = false;
294
295
  if (this.resizeWidget.parentNode) {
295
296
  let compStyles = window.getComputedStyle(this.resizeWidget.parentNode);
@@ -299,9 +300,9 @@ CoCreateResize.prototype = {
299
300
  return isGrid;
300
301
  },
301
302
 
302
- stopDrag: function(e) {
303
+ stopDrag: function (e) {
303
304
  styleSheet.deleteRule(0)
304
- if (this.resizeWidget.hasAttribute('resizing')){
305
+ if (this.resizeWidget.hasAttribute('resizing')) {
305
306
  this.resizeWidget.removeAttribute('resizing', '')
306
307
  }
307
308
 
@@ -312,14 +313,14 @@ CoCreateResize.prototype = {
312
313
  this.resizeWidget.style.left = null;
313
314
  this.resizeWidget.style.top = null;
314
315
 
315
- if (this.widthSpan) this.resizeWidget.setAttribute('class', this.originClassAttribute + ' grid-column-end:span_' + this.widthSpan);
316
+ if (this.widthSpan) this.resizeWidget.setAttribute('class', this.originClassAttribute + ' grid-column-end:span_' + this.widthSpan);
316
317
  if (this.heightSpan) this.resizeWidget.setAttribute('class', this.originClassAttribute + ' grid-row-end:span_' + this.heightSpan);
317
318
  }
318
319
 
319
320
  DIRECTIONS.map(d => { this.removeListenerMulti(document.documentElement, EVENTS[0], this.doDrags[d]) });
320
321
  this.removeListenerMulti(document.documentElement, EVENTS[2], this.stopDrag);
321
322
  },
322
- checkLeftCorners: function(e) {
323
+ checkLeftCorners: function (e) {
323
324
  let offset = e.clientY - this.getDistance(this.Drags['left'], true) + document.documentElement.scrollTop;
324
325
  if (offset > 10) {
325
326
  offset = this.getDistance(this.Drags['left'], true) + this.Drags['left'].clientHeight - e.clientY - document.documentElement.scrollTop;
@@ -328,7 +329,7 @@ CoCreateResize.prototype = {
328
329
  this.checkDragImplementation(e, 'left', 'top', offset, 'se-resize', 'e-resize');
329
330
  }
330
331
  },
331
- checkTopCorners: function(e) {
332
+ checkTopCorners: function (e) {
332
333
  let offset = e.clientX - this.getDistance(this.Drags['top'], false) + document.documentElement.scrollTop;
333
334
  if (offset > 10) {
334
335
  offset = this.getDistance(this.Drags['top'], false) + this.Drags['top'].clientWidth - e.clientX - document.documentElement.scrollLeft;
@@ -337,7 +338,7 @@ CoCreateResize.prototype = {
337
338
  this.checkDragImplementation(e, 'top', 'left', offset, 'se-resize', 's-resize');
338
339
  }
339
340
  },
340
- checkBottomCorners: function(e) {
341
+ checkBottomCorners: function (e) {
341
342
  let offset = e.clientX - this.getDistance(this.Drags['bottom'], false) + document.documentElement.scrollTop;
342
343
  if (offset > 10) {
343
344
  offset = this.getDistance(this.Drags['bottom'], false) + this.Drags['bottom'].clientWidth - e.clientX - document.documentElement.scrollLeft;
@@ -346,7 +347,7 @@ CoCreateResize.prototype = {
346
347
  this.checkDragImplementation(e, 'bottom', 'left', offset, 'ne-resize', 's-resize');
347
348
  }
348
349
  },
349
- checkRightCorners: function(e) {
350
+ checkRightCorners: function (e) {
350
351
  let offset = e.clientY - this.getDistance(this.Drags['right'], true) + document.documentElement.scrollTop;
351
352
  if (offset > 10) {
352
353
  offset = this.getDistance(this.Drags['right'], true) + this.Drags['right'].clientHeight - e.clientY - document.documentElement.scrollTop;
@@ -356,7 +357,7 @@ CoCreateResize.prototype = {
356
357
  }
357
358
  },
358
359
 
359
- bindListeners: function() {
360
+ bindListeners: function () {
360
361
  this.doDrags['left'] = this.doLeftDrag.bind(this);
361
362
  this.doDrags['top'] = this.doTopDrag.bind(this);
362
363
  this.doDrags['right'] = this.doRightDrag.bind(this);
@@ -375,7 +376,7 @@ CoCreateResize.prototype = {
375
376
  this.initDrags['right'] = this.initRightDrag.bind(this);
376
377
  },
377
378
 
378
- getDistance: function(elem, flag) {
379
+ getDistance: function (elem, flag) {
379
380
  var location = 0;
380
381
  if (!elem) return;
381
382
  if (elem.offsetParent) {
@@ -388,7 +389,7 @@ CoCreateResize.prototype = {
388
389
  },
389
390
 
390
391
  // Bind multiiple events to a listener
391
- addListenerMulti: function(element, eventNames, listener) {
392
+ addListenerMulti: function (element, eventNames, listener) {
392
393
  var events = eventNames.split(' ');
393
394
  for (var i = 0, iLen = events.length; i < iLen; i++) {
394
395
  element.addEventListener(events[i], listener, { passive: false });
@@ -396,40 +397,40 @@ CoCreateResize.prototype = {
396
397
  },
397
398
 
398
399
  // Remove multiiple events from a listener
399
- removeListenerMulti: function(element, eventNames, listener) {
400
+ removeListenerMulti: function (element, eventNames, listener) {
400
401
  var events = eventNames.split(' ');
401
402
  for (var i = 0, iLen = events.length; i < iLen; i++) {
402
403
  element.removeEventListener(events[i], listener, { passive: false });
403
404
  }
404
405
  },
405
406
 
406
- collaborate: function({left, top, width, height, rowEnd, columnEnd}) {
407
+ collaborate: function ({ left, top, width, height, rowEnd, columnEnd }) {
407
408
  if (window.CoCreate && window.CoCreate.text) {
408
409
  let domTextEditor = this.resizeWidget.closest('[contenteditable]');
409
410
  if (domTextEditor) {
410
411
  if (left)
411
- CoCreate.text.setStyle({
412
- domTextEditor, target: this.resizeWidget, property: 'left', value: left + 'px'
412
+ CoCreate.text.setStyle({
413
+ domTextEditor, target: this.resizeWidget, property: 'left', value: left + 'px'
413
414
  })
414
415
  if (top)
415
- CoCreate.text.setStyle({
416
- domTextEditor, target: this.resizeWidget, property: 'top', value: top + 'px'
416
+ CoCreate.text.setStyle({
417
+ domTextEditor, target: this.resizeWidget, property: 'top', value: top + 'px'
417
418
  })
418
419
  if (width)
419
- CoCreate.text.setStyle({
420
- domTextEditor, target: this.resizeWidget, property: 'width', value: width + 'px'
420
+ CoCreate.text.setStyle({
421
+ domTextEditor, target: this.resizeWidget, property: 'width', value: width + 'px'
421
422
  })
422
423
  if (height)
423
- CoCreate.text.setStyle({
424
- domTextEditor, target: this.resizeWidget, property: 'height', value: height + 'px'
424
+ CoCreate.text.setStyle({
425
+ domTextEditor, target: this.resizeWidget, property: 'height', value: height + 'px'
425
426
  })
426
427
  if (rowEnd)
427
- CoCreate.text.setStyle({
428
- domTextEditor, target: this.resizeWidget, property: 'grid-row-end', value: 'span ' + rowEnd
428
+ CoCreate.text.setStyle({
429
+ domTextEditor, target: this.resizeWidget, property: 'grid-row-end', value: 'span ' + rowEnd
429
430
  })
430
431
  if (columnEnd)
431
- CoCreate.text.setStyle({
432
- domTextEditor, target: this.resizeWidget, property: 'grid-column-end', value: 'span ' + columnEnd
432
+ CoCreate.text.setStyle({
433
+ domTextEditor, target: this.resizeWidget, property: 'grid-column-end', value: 'span ' + columnEnd
433
434
  })
434
435
  }
435
436
  }
@@ -440,7 +441,7 @@ observer.init({
440
441
  name: 'CoCreateResize',
441
442
  observe: ['addedNodes'],
442
443
  selector: "[resizable]:not([resizable='false'])",
443
- callback: function(mutation) {
444
+ callback: function (mutation) {
444
445
  coCreateResize.initElement(mutation.target);
445
446
 
446
447
  }