@cocreate/text 1.12.30 → 1.13.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,37 @@
1
+ ## [1.13.1](https://github.com/CoCreate-app/CoCreate-text/compare/v1.13.0...v1.13.1) (2021-11-28)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * replace click and keyup event with selectionchange event ([515da39](https://github.com/CoCreate-app/CoCreate-text/commit/515da39a62af4e350aa2a7857aa48b87c822a5dd))
7
+
8
+ # [1.13.0](https://github.com/CoCreate-app/CoCreate-text/compare/v1.12.32...v1.13.0) (2021-11-28)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * remove keypress and replaced with beforeinput event to support mobile browsers ([84ae8b1](https://github.com/CoCreate-app/CoCreate-text/commit/84ae8b162657ec028e6a49b627ca104909ff11ad))
14
+
15
+
16
+ ### Features
17
+
18
+ * support for undo and redo ([8a727d3](https://github.com/CoCreate-app/CoCreate-text/commit/8a727d3ba5df8bcf03cf96c07c40e889dd359aea))
19
+
20
+ ## [1.12.32](https://github.com/CoCreate-app/CoCreate-text/compare/v1.12.31...v1.12.32) (2021-11-27)
21
+
22
+
23
+ ### Bug Fixes
24
+
25
+ * actions import typo ([66f914e](https://github.com/CoCreate-app/CoCreate-text/commit/66f914e725a5862d99c2cdb1d462da461f9f46d7))
26
+ * update dependencies ([de6cd6a](https://github.com/CoCreate-app/CoCreate-text/commit/de6cd6a4f9ca77d52588b633b8dd96bf4de4043a))
27
+
28
+ ## [1.12.31](https://github.com/CoCreate-app/CoCreate-text/compare/v1.12.30...v1.12.31) (2021-11-27)
29
+
30
+
31
+ ### Bug Fixes
32
+
33
+ * update dependencies ([5a35385](https://github.com/CoCreate-app/CoCreate-text/commit/5a35385c4c3c1a0be817ec009e3486d23bb844bb))
34
+
1
35
  ## [1.12.30](https://github.com/CoCreate-app/CoCreate-text/compare/v1.12.29...v1.12.30) (2021-11-27)
2
36
 
3
37
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cocreate/text",
3
- "version": "1.12.30",
3
+ "version": "1.13.1",
4
4
  "description": "A simple text component in vanilla javascript. Easily configured using HTML5 attributes and/or JavaScript API.",
5
5
  "keywords": [
6
6
  "text",
@@ -61,13 +61,13 @@
61
61
  "webpack-log": "^3.0.1"
62
62
  },
63
63
  "dependencies": {
64
- "@cocreate/actions": "^1.3.18",
65
- "@cocreate/crdt": "^1.8.23",
66
- "@cocreate/crud-client": "^1.4.34",
67
- "@cocreate/cursors": "^1.10.12",
68
- "@cocreate/docs": "^1.2.56",
69
- "@cocreate/hosting": "^1.2.52",
70
- "@cocreate/observer": "^1.3.48",
71
- "@cocreate/selection": "^1.2.15"
64
+ "@cocreate/actions": "^1.3.23",
65
+ "@cocreate/crdt": "^1.8.26",
66
+ "@cocreate/crud-client": "^1.4.38",
67
+ "@cocreate/cursors": "^1.10.16",
68
+ "@cocreate/docs": "^1.2.60",
69
+ "@cocreate/hosting": "^1.2.56",
70
+ "@cocreate/observer": "^1.3.52",
71
+ "@cocreate/selection": "^1.2.19"
72
72
  }
73
73
  }
package/src/index.js CHANGED
@@ -16,6 +16,11 @@ function init() {
16
16
  let elements = document.querySelectorAll(selectors);
17
17
  initElements(elements);
18
18
  _crdtUpdateListener();
19
+ document.addEventListener('selectionchange', (e) => {
20
+ let element = document.activeElement;
21
+ sendPosition(element)
22
+ console.log(element)
23
+ });
19
24
  }
20
25
 
21
26
  function initElements (elements) {
@@ -32,10 +37,16 @@ function initElement (element) {
32
37
  if(!collection || !document_id || !name) return;
33
38
 
34
39
  if (!isCrdt) {
35
- if (element.tagName == 'IFRAME')
40
+ if (element.tagName == 'IFRAME'){
36
41
  _addEventListeners(element.contentDocument.documentElement);
37
- else
38
- _addEventListeners(element);
42
+ let Document = element.contentDocument
43
+ Document.addEventListener('selectionchange', (e) => {
44
+ let element = Document.activeElement;
45
+ sendPosition(element)
46
+ }); }
47
+ else{
48
+ _addEventListeners(element);
49
+ }
39
50
  }
40
51
  element.setAttribute('crdt', 'true');
41
52
  element.crdt = {init: true};
@@ -65,18 +76,12 @@ function initElement (element) {
65
76
  }
66
77
 
67
78
  export function _addEventListeners (element) {
68
- element.addEventListener('click', _click);
69
79
  element.addEventListener('blur', _blur);
70
- element.addEventListener('keyup', _keyup);
71
80
  element.addEventListener('cut', _cut);
72
81
  element.addEventListener('paste', _paste);
73
82
  element.addEventListener('keydown', _keydown);
74
- element.addEventListener('keypress', _keypress);
75
- }
76
-
77
- function _click (event) {
78
- let element = event.currentTarget;
79
- sendPosition(element);
83
+ element.addEventListener('beforeinput', _beforeinput);
84
+ element.addEventListener('input', _input);
80
85
  }
81
86
 
82
87
  function _blur (event) {
@@ -87,11 +92,6 @@ function _blur (event) {
87
92
  cursors.sendPosition({collection, document_id, name, start, end});
88
93
  }
89
94
 
90
- function _keyup (event) {
91
- let element = event.currentTarget;
92
- sendPosition(element);
93
- }
94
-
95
95
  function _cut (event) {
96
96
  let element = event.currentTarget;
97
97
  const { start, end, range } = getSelection(element);
@@ -130,46 +130,58 @@ function _keydown (event) {
130
130
  const { start, end, range } = getSelection(element);
131
131
  if(event.key == "Backspace" || event.key == "Tab" || event.key == "Enter") {
132
132
  eventObj = event;
133
- //ToDO switch case
134
133
  if(start != end) {
135
134
  updateText({element, start, end, range});
136
135
  }
136
+
137
137
  if(event.key == "Backspace" && start == end) {
138
138
  updateText({element, start: start - 1, end, range});
139
139
  }
140
- if(event.key == 'Tab') {
140
+ else if(event.key == 'Tab') {
141
141
  updateText({element, value: "\t", start, range});
142
142
  }
143
- if(event.key == "Enter") {
143
+ else if(event.key == "Enter") {
144
144
  updateText({element, value: "\n", start, range});
145
145
  }
146
146
  event.preventDefault();
147
147
  }
148
+ else if (event.ctrlKey) {
149
+ if (event.keyCode == 90)
150
+ console.log('Undo');
151
+ else if (event.keyCode == 89)
152
+ console.log('Redo');
153
+ }
148
154
  }
149
155
 
150
- function _keypress (event) {
156
+ function _beforeinput (event) {
151
157
  if(event.stopCCText) return;
152
158
  let element = event.currentTarget;
153
159
  let { start, end, range } = getSelection(element);
154
- if(start != end) {
155
- updateText({element, start, end, range});
160
+ if (event.data) {
161
+ if(start != end) {
162
+ updateText({element, start, end, range});
163
+ }
164
+ eventObj = event;
165
+ updateText({element, value: event.data, start, range});
166
+ event.preventDefault();
167
+ }
168
+ }
169
+
170
+ function _input (event) {
171
+ if(event.stopCCText) return;
172
+ if (event.data) {
173
+ eventObj = event;
156
174
  }
157
- eventObj = event;
158
- updateText({element, value: event.key, start, range});
159
- event.preventDefault();
160
175
  }
161
176
 
162
177
  function _removeEventListeners (element) {
163
- element.removeEventListener('click', _click);
164
178
  element.removeEventListener('blur', _blur);
165
- element.removeEventListener('keyup', _keyup);
166
179
  element.removeEventListener('cut', _cut);
167
180
  element.removeEventListener('paste', _paste);
168
181
  element.removeEventListener('keydown', _keydown);
169
- element.removeEventListener('keypress', _keypress);
182
+ element.removeEventListener('beforeinput', _beforeinput);
170
183
  }
171
184
 
172
-
173
185
  export function sendPosition (element) {
174
186
  if (!element) return;
175
187
  const { start, end } = getSelection(element);
@@ -278,6 +290,7 @@ export function _dispatchInputEvent(element, content, start, end, prev_start, pr
278
290
  element.dispatchEvent(event);
279
291
  }
280
292
  let inputEvent = new CustomEvent('input', { bubbles: true });
293
+ Object.defineProperty(inputEvent, 'stopCCText', { writable: false, value: true });
281
294
  Object.defineProperty(inputEvent, 'target', { writable: false, value: element });
282
295
  Object.defineProperty(inputEvent, 'detail', { writable: false, value: detail });
283
296
  element.dispatchEvent(inputEvent);
@@ -1,5 +1,5 @@
1
1
  /*globals CustomEvent*/
2
- import action from '@cocreate/action';
2
+ import action from '@cocreate/actions';
3
3
  import crud from '@cocreate/crud-client';
4
4
  import crdt from '@cocreate/crdt';
5
5