@cocreate/text 1.12.32 → 1.13.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/CHANGELOG.md +12 -0
- package/package.json +1 -1
- package/src/index.js +27 -12
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
# [1.13.0](https://github.com/CoCreate-app/CoCreate-text/compare/v1.12.32...v1.13.0) (2021-11-28)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* remove keypress and replaced with beforeinput event to support mobile browsers ([84ae8b1](https://github.com/CoCreate-app/CoCreate-text/commit/84ae8b162657ec028e6a49b627ca104909ff11ad))
|
7
|
+
|
8
|
+
|
9
|
+
### Features
|
10
|
+
|
11
|
+
* support for undo and redo ([8a727d3](https://github.com/CoCreate-app/CoCreate-text/commit/8a727d3ba5df8bcf03cf96c07c40e889dd359aea))
|
12
|
+
|
1
13
|
## [1.12.32](https://github.com/CoCreate-app/CoCreate-text/compare/v1.12.31...v1.12.32) (2021-11-27)
|
2
14
|
|
3
15
|
|
package/package.json
CHANGED
package/src/index.js
CHANGED
@@ -71,7 +71,8 @@ export function _addEventListeners (element) {
|
|
71
71
|
element.addEventListener('cut', _cut);
|
72
72
|
element.addEventListener('paste', _paste);
|
73
73
|
element.addEventListener('keydown', _keydown);
|
74
|
-
element.addEventListener('
|
74
|
+
element.addEventListener('beforeinput', _beforeinput);
|
75
|
+
element.addEventListener('input', _input);
|
75
76
|
}
|
76
77
|
|
77
78
|
function _click (event) {
|
@@ -130,33 +131,47 @@ function _keydown (event) {
|
|
130
131
|
const { start, end, range } = getSelection(element);
|
131
132
|
if(event.key == "Backspace" || event.key == "Tab" || event.key == "Enter") {
|
132
133
|
eventObj = event;
|
133
|
-
//ToDO switch case
|
134
134
|
if(start != end) {
|
135
135
|
updateText({element, start, end, range});
|
136
136
|
}
|
137
|
+
|
137
138
|
if(event.key == "Backspace" && start == end) {
|
138
139
|
updateText({element, start: start - 1, end, range});
|
139
140
|
}
|
140
|
-
if(event.key == 'Tab') {
|
141
|
+
else if(event.key == 'Tab') {
|
141
142
|
updateText({element, value: "\t", start, range});
|
142
143
|
}
|
143
|
-
if(event.key == "Enter") {
|
144
|
+
else if(event.key == "Enter") {
|
144
145
|
updateText({element, value: "\n", start, range});
|
145
146
|
}
|
146
147
|
event.preventDefault();
|
147
148
|
}
|
149
|
+
else if (event.ctrlKey) {
|
150
|
+
if (event.keyCode == 90)
|
151
|
+
console.log('Undo');
|
152
|
+
else if (event.keyCode == 89)
|
153
|
+
console.log('Redo');
|
154
|
+
}
|
148
155
|
}
|
149
156
|
|
150
|
-
function
|
157
|
+
function _beforeinput (event) {
|
151
158
|
if(event.stopCCText) return;
|
152
159
|
let element = event.currentTarget;
|
153
160
|
let { start, end, range } = getSelection(element);
|
154
|
-
if(
|
155
|
-
|
161
|
+
if (event.data) {
|
162
|
+
if(start != end) {
|
163
|
+
updateText({element, start, end, range});
|
164
|
+
}
|
165
|
+
eventObj = event;
|
166
|
+
updateText({element, value: event.data, start, range});
|
167
|
+
event.preventDefault();
|
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) {
|
@@ -166,10 +181,9 @@ function _removeEventListeners (element) {
|
|
166
181
|
element.removeEventListener('cut', _cut);
|
167
182
|
element.removeEventListener('paste', _paste);
|
168
183
|
element.removeEventListener('keydown', _keydown);
|
169
|
-
element.removeEventListener('
|
184
|
+
element.removeEventListener('beforeinput', _beforeinput);
|
170
185
|
}
|
171
186
|
|
172
|
-
|
173
187
|
export function sendPosition (element) {
|
174
188
|
if (!element) return;
|
175
189
|
const { start, end } = getSelection(element);
|
@@ -278,6 +292,7 @@ export function _dispatchInputEvent(element, content, start, end, prev_start, pr
|
|
278
292
|
element.dispatchEvent(event);
|
279
293
|
}
|
280
294
|
let inputEvent = new CustomEvent('input', { bubbles: true });
|
295
|
+
Object.defineProperty(inputEvent, 'stopCCText', { writable: false, value: true });
|
281
296
|
Object.defineProperty(inputEvent, 'target', { writable: false, value: element });
|
282
297
|
Object.defineProperty(inputEvent, 'detail', { writable: false, value: detail });
|
283
298
|
element.dispatchEvent(inputEvent);
|