jodit 3.8.1 → 3.8.2

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 (110) hide show
  1. package/.idea/codeStyles/Project.xml +68 -0
  2. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  3. package/.idea/dictionaries/v_chupurnov.xml +10 -0
  4. package/.idea/encodings.xml +4 -0
  5. package/.idea/inspectionProfiles/Project_Default.xml +118 -0
  6. package/.idea/jodit.iml +12 -0
  7. package/.idea/jsLibraryMappings.xml +6 -0
  8. package/.idea/markdown-navigator-enh.xml +29 -0
  9. package/.idea/markdown-navigator.xml +55 -0
  10. package/.idea/misc.xml +6 -0
  11. package/.idea/modules.xml +8 -0
  12. package/.idea/prettier.xml +6 -0
  13. package/.idea/vcs.xml +6 -0
  14. package/.idea/watcherTasks.xml +4 -0
  15. package/.idea/workspace.xml +1264 -0
  16. package/build/jodit.css +2 -2
  17. package/build/jodit.es2018.css +1 -1
  18. package/build/jodit.es2018.en.css +1 -1
  19. package/build/jodit.es2018.en.js +4 -4
  20. package/build/jodit.es2018.en.min.js +2 -2
  21. package/build/jodit.es2018.js +4 -4
  22. package/build/jodit.es2018.min.js +2 -2
  23. package/build/jodit.js +4 -4
  24. package/build/jodit.min.css +1 -1
  25. package/build/jodit.min.js +2 -2
  26. package/package.json +2 -2
  27. package/.travis.yml +0 -7
  28. package/bower.json +0 -33
  29. package/build.js +0 -39
  30. package/docker/Dockerfile +0 -11
  31. package/docker/README.md +0 -45
  32. package/docker/build +0 -3
  33. package/docker/install +0 -7
  34. package/docker/start +0 -3
  35. package/docker/test +0 -3
  36. package/docker/uninstall +0 -3
  37. package/examples/arabic.lang.html +0 -76
  38. package/examples/assets/app.css +0 -175
  39. package/examples/assets/app.js +0 -57
  40. package/examples/assets/download.jpg +0 -0
  41. package/examples/assets/icon.png +0 -0
  42. package/examples/assets/logo.png +0 -0
  43. package/examples/assets/prism.css +0 -200
  44. package/examples/assets/prism.js +0 -1254
  45. package/examples/color-picker.html +0 -139
  46. package/examples/custom-icons.html +0 -173
  47. package/examples/custom-toolbar.html +0 -80
  48. package/examples/example.default.html +0 -75
  49. package/examples/fullsize.html +0 -75
  50. package/examples/index.html +0 -176
  51. package/examples/inline-mode.html +0 -116
  52. package/examples/oneinstance.html +0 -125
  53. package/icons.html +0 -50
  54. package/karma.conf.js +0 -157
  55. package/make.js +0 -10
  56. package/server.js +0 -101
  57. package/test/bootstrap.js +0 -1167
  58. package/test/test.html +0 -102
  59. package/test/test.index.html +0 -11
  60. package/test/tests/acceptance/clipboardTest.js +0 -1234
  61. package/test/tests/acceptance/commandsTest.js +0 -647
  62. package/test/tests/acceptance/creatorTest.js +0 -103
  63. package/test/tests/acceptance/deleteBackSpaceTest.js +0 -1289
  64. package/test/tests/acceptance/dialogTest.js +0 -188
  65. package/test/tests/acceptance/editorTest.js +0 -855
  66. package/test/tests/acceptance/enterTest.js +0 -1088
  67. package/test/tests/acceptance/eventsTest.js +0 -1246
  68. package/test/tests/acceptance/filebrowserTest.js +0 -1309
  69. package/test/tests/acceptance/i18nTest.js +0 -81
  70. package/test/tests/acceptance/iframeTest.js +0 -306
  71. package/test/tests/acceptance/imageTest.js +0 -1649
  72. package/test/tests/acceptance/inlineModeTest.js +0 -826
  73. package/test/tests/acceptance/interfaceTest.js +0 -119
  74. package/test/tests/acceptance/mobileTest.js +0 -229
  75. package/test/tests/acceptance/plugins/classSpan.js +0 -220
  76. package/test/tests/acceptance/plugins/cleanHtml.js +0 -351
  77. package/test/tests/acceptance/plugins/color.js +0 -188
  78. package/test/tests/acceptance/plugins/dragAndDropElement.js +0 -172
  79. package/test/tests/acceptance/plugins/focus.js +0 -115
  80. package/test/tests/acceptance/plugins/font.js +0 -316
  81. package/test/tests/acceptance/plugins/image.js +0 -79
  82. package/test/tests/acceptance/plugins/indent.js +0 -179
  83. package/test/tests/acceptance/plugins/inline-popup.js +0 -578
  84. package/test/tests/acceptance/plugins/insert.js +0 -17
  85. package/test/tests/acceptance/plugins/limit.js +0 -164
  86. package/test/tests/acceptance/plugins/link.js +0 -1640
  87. package/test/tests/acceptance/plugins/orderedList.js +0 -290
  88. package/test/tests/acceptance/plugins/placeholder.js +0 -138
  89. package/test/tests/acceptance/plugins/resizer.js +0 -329
  90. package/test/tests/acceptance/plugins/search.js +0 -623
  91. package/test/tests/acceptance/plugins/size.js +0 -344
  92. package/test/tests/acceptance/plugins/source.js +0 -218
  93. package/test/tests/acceptance/plugins/stat.js +0 -120
  94. package/test/tests/acceptance/plugins/tooltip.js +0 -97
  95. package/test/tests/acceptance/plugins/wrapTextNodes.js +0 -105
  96. package/test/tests/acceptance/pluginsTest.js +0 -2219
  97. package/test/tests/acceptance/selectionTest.js +0 -862
  98. package/test/tests/acceptance/statesTest.js +0 -310
  99. package/test/tests/acceptance/tableTest.js +0 -1988
  100. package/test/tests/acceptance/toolbarTest.js +0 -1747
  101. package/test/tests/acceptance/undoredoTest.js +0 -217
  102. package/test/tests/acceptance/uploaderTest.js +0 -187
  103. package/test/tests/artio.jpg +0 -0
  104. package/test/tests/units/helpersTest.js +0 -771
  105. package/test/tests/units/modules/dom.js +0 -282
  106. package/test/tests/units/objectObserverTest.js +0 -533
  107. package/test/tests/units/popupTest.js +0 -211
  108. package/test/tests/units/positionTest.js +0 -238
  109. package/test/tests/units/styleTest.js +0 -1361
  110. package/webpack.config.js +0 -308
@@ -1,533 +0,0 @@
1
- /*!
2
- * Jodit Editor (https://xdsoft.net/jodit/)
3
- * Released under MIT see LICENSE.txt in the project root for license information.
4
- * Copyright (c) 2013-2021 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
5
- */
6
- describe('Test object observer', function () {
7
- function getTestObject() {
8
- return {
9
- editable: true,
10
- disabled: false,
11
- some: {
12
- element: {
13
- enable: true,
14
- one: 1,
15
- two: 2
16
- }
17
- }
18
- };
19
- }
20
-
21
- const get = Jodit.modules.Helpers.get;
22
- const stringify = Jodit.modules.Helpers.stringify;
23
- const isEqual = Jodit.modules.Helpers.isEqual;
24
-
25
- const A = function (result, keyA, keyB) {
26
- function A() {
27
- this.jodit = getJodit();
28
- this.setStatus('ready');
29
- }
30
-
31
- function __() {
32
- this.constructor = A;
33
- }
34
-
35
- __.prototype = Jodit.modules.ViewComponent.prototype;
36
- A.prototype = new __();
37
-
38
- A.prototype.methodA = function () {
39
- result.push(['A', get(keyA, this)]);
40
- };
41
-
42
- A.prototype.methodB = function () {
43
- result.push(['B', get(keyB || keyA, this)]);
44
- };
45
-
46
- A.prototype.countCall = 0;
47
- A.prototype.countPromiseCall = 0;
48
-
49
- A.prototype.callTime = function () {
50
- this.countCall++;
51
- };
52
-
53
- A.prototype.callPromiseTime = function () {
54
- const that = this;
55
- this.countCall++;
56
-
57
- return new Promise(function (res) {
58
- setTimeout(function () {
59
- that.countPromiseCall++;
60
- res();
61
- }, 100);
62
- });
63
- };
64
-
65
- A.prototype.methodC = function (key, oldValue, newValue) {
66
- result.push(['C', oldValue, newValue]);
67
- };
68
-
69
- A.prototype.state = getTestObject();
70
-
71
- return A;
72
- };
73
-
74
- describe('Test debounce decorator', function () {
75
- it('Should call method only once in time', function (done) {
76
- const result = [],
77
- AClass = A(result, 'state.editable');
78
-
79
- Jodit.decorators.debounce(100)(AClass.prototype, 'callTime');
80
-
81
- const a = new AClass();
82
-
83
- a.callTime();
84
- expect(a.countCall).eq(0);
85
- a.callTime();
86
- expect(a.countCall).eq(0);
87
- a.callTime();
88
- expect(a.countCall).eq(0);
89
-
90
- setTimeout(() => {
91
- expect(a.countCall).eq(1);
92
- done();
93
- }, 500);
94
- });
95
-
96
- describe('Options', function () {
97
- it('Should call method only once in time', function (done) {
98
- const result = [],
99
- AClass = A(result, 'state.editable');
100
-
101
- Jodit.decorators.debounce({
102
- timeout: 100
103
- })(AClass.prototype, 'callTime');
104
-
105
- const a = new AClass();
106
-
107
- a.callTime();
108
- expect(a.countCall).eq(0);
109
- a.callTime();
110
- expect(a.countCall).eq(0);
111
- a.callTime();
112
- expect(a.countCall).eq(0);
113
-
114
- setTimeout(() => {
115
- expect(a.countCall).eq(1);
116
- done();
117
- }, 500);
118
- });
119
- });
120
-
121
- describe('Promisify debounce decorator', function () {
122
- it('Should call method only once in time', function (done) {
123
- unmockPromise();
124
-
125
- const result = [],
126
- AClass = A(result, 'state.editable');
127
-
128
- Jodit.decorators.debounce({
129
- timeout: 100,
130
- promisify: true
131
- })(AClass.prototype, 'callPromiseTime');
132
-
133
- const a = new AClass();
134
-
135
- let counter = 0;
136
-
137
- a.callPromiseTime().then(function () {
138
- counter++;
139
- expect(a.countPromiseCall).eq(1);
140
- });
141
-
142
- a.callPromiseTime().then(function () {
143
- counter++;
144
- expect(a.countPromiseCall).eq(1);
145
- });
146
-
147
- a.callPromiseTime().then(function () {
148
- counter++;
149
- expect(a.countPromiseCall).eq(1);
150
- });
151
-
152
- setTimeout(() => {
153
- expect(counter).eq(3);
154
- expect(a.countCall).eq(1);
155
- expect(a.countPromiseCall).eq(1);
156
- done();
157
- }, 500);
158
- });
159
- });
160
- });
161
-
162
- describe('Test watch decorator', function () {
163
- it('Should add watcher to whole field object', function () {
164
- const result = [],
165
- AClass = A(result, 'state.editable');
166
-
167
- Jodit.decorators.watch('state')(AClass.prototype, 'methodA');
168
-
169
- const a = new AClass();
170
-
171
- a.state = Object.assign({}, a.state, {
172
- editable: false
173
- });
174
-
175
- a.state = Object.assign({}, a.state, {
176
- editable: true
177
- });
178
-
179
- expect(result).to.deep.equal([
180
- ['A', false],
181
- ['A', true]
182
- ]);
183
- });
184
-
185
- it('Should add watcher to some field in Component', function () {
186
- const result = [],
187
- AClass = A(result, 'state.some.element.enable');
188
-
189
- Jodit.decorators.watch('state.some.element.enable')(
190
- AClass.prototype,
191
- 'methodA'
192
- );
193
-
194
- const a = new AClass();
195
-
196
- a.state.some.element.enable = false;
197
- a.state.some.element.enable = true;
198
-
199
- expect(result).to.deep.equal([
200
- ['A', false],
201
- ['A', true]
202
- ]);
203
- });
204
-
205
- describe('Add several watchers', function () {
206
- describe('on same fields', function () {
207
- it('Should call all handlers', function () {
208
- const result = [],
209
- AClass = A(result, 'state.some.element.enable');
210
-
211
- Jodit.decorators.watch('state.some.element.enable')(
212
- AClass.prototype,
213
- 'methodA'
214
- );
215
-
216
- Jodit.decorators.watch('state.some.element.enable')(
217
- AClass.prototype,
218
- 'methodB'
219
- );
220
-
221
- const a = new AClass();
222
-
223
- a.state.some.element.enable = false;
224
- a.state.some.element.enable = true;
225
-
226
- expect(result).to.deep.equal([
227
- ['A', false],
228
- ['B', false],
229
- ['A', true],
230
- ['B', true]
231
- ]);
232
- });
233
- });
234
-
235
- describe('on different fields', function () {
236
- it('Should call only matched handlers', function () {
237
- const result = [],
238
- AClass = A(
239
- result,
240
- 'state.some.element.one',
241
- 'state.some.element.two'
242
- );
243
-
244
- Jodit.decorators.watch('state.some.element.one')(
245
- AClass.prototype,
246
- 'methodA'
247
- );
248
-
249
- Jodit.decorators.watch('state.some.element.two')(
250
- AClass.prototype,
251
- 'methodB'
252
- );
253
-
254
- const a = new AClass();
255
-
256
- a.state.some.element.enable = false; // indifferent
257
-
258
- a.state.some.element.one = 2; // call methodA
259
- a.state.some.element.two = 3; // call methodB
260
-
261
- expect(result).to.deep.equal([
262
- ['A', 2],
263
- ['B', 3]
264
- ]);
265
- });
266
- });
267
- });
268
-
269
- describe('On change field', function () {
270
- it('Should fire change all parent field', function () {
271
- const result = [],
272
- AClass = A(result, 'state.some.element.one');
273
-
274
- Jodit.decorators.watch('state.some')(
275
- AClass.prototype,
276
- 'methodA'
277
- );
278
-
279
- const a = new AClass();
280
-
281
- a.state.some.element.one = 5;
282
- a.state.some.element.one = 15;
283
- a.state.some.element.one = 15;
284
-
285
- expect(result).to.deep.equal([
286
- ['A', 5],
287
- ['A', 15]
288
- ]);
289
- });
290
- it('Should add in handler - old value as first argument', function () {
291
- const result = [],
292
- AClass = A(result, 'state.some.element.one');
293
-
294
- Jodit.decorators.watch('state.some')(
295
- AClass.prototype,
296
- 'methodC'
297
- );
298
-
299
- const a = new AClass();
300
-
301
- a.state.some.element.one = 5;
302
- a.state.some.element.one = 15;
303
-
304
- expect(result).to.deep.equal([
305
- ['C', 1, 5],
306
- ['C', 5, 15]
307
- ]);
308
- });
309
- });
310
- });
311
-
312
- describe('Test safe stringify', function () {
313
- it('Should safe stringify any circular object to string', function () {
314
- const a = {},
315
- b = getTestObject();
316
-
317
- expect(stringify(a)).equals('{}');
318
-
319
- expect(stringify(b)).equals(
320
- '{"editable":true,"disabled":false,"some":{"element":{"enable":true,"one":1,"two":2}}}'
321
- );
322
-
323
- b.b = b;
324
- expect(stringify(b)).equals(
325
- '{"editable":true,"disabled":false,"some":{"element":{"enable":true,"one":1,"two":2}},"b":"[refObject]"}'
326
- );
327
- });
328
- });
329
-
330
- describe('Test object properties', function () {
331
- describe('Observed object', function () {
332
- it('Should has only own object properties', function () {
333
- const a = { a: 1, b: 2 };
334
- const observed = Jodit.modules.ObserveObject.create(a);
335
- expect(Object.keys(observed)).deep.equals(Object.keys(a));
336
- });
337
- });
338
- });
339
-
340
- describe('Test equal checker', function () {
341
- describe('Two object', function () {
342
- describe('Check one object', function () {
343
- it('Should check that is one object', function () {
344
- const a = {},
345
- b = [];
346
-
347
- expect(isEqual(a, a)).is.true;
348
- expect(isEqual(b, b)).is.true;
349
- expect(isEqual(a, b)).is.false;
350
- });
351
- });
352
-
353
- describe('Check scalar value', function () {
354
- it('Should check normal', function () {
355
- expect(
356
- isEqual(
357
- function () {},
358
- function () {}
359
- )
360
- ).is.true;
361
-
362
- expect(
363
- isEqual(
364
- function () {
365
- return 1;
366
- },
367
- function () {}
368
- )
369
- ).is.false;
370
-
371
- expect(isEqual(1, 1)).is.true;
372
- expect(isEqual(1, 2)).is.false;
373
- expect(isEqual(true, true)).is.true;
374
- expect(isEqual(1.0, 1)).is.true;
375
- expect(isEqual('1', 1)).is.true;
376
- });
377
- });
378
-
379
- describe('Check array', function () {
380
- it('Should deep check', function () {
381
- expect(isEqual([1], [1])).is.true;
382
- expect(isEqual([1], [2])).is.false;
383
- expect(isEqual(['test'], ['test'])).is.true;
384
- expect(isEqual(['test'], ['test', 1])).is.false;
385
- });
386
- });
387
-
388
- describe('Check ref object', function () {
389
- it('Should deep check and add instead ref some const', function () {
390
- const a = getTestObject(),
391
- b = getTestObject();
392
-
393
- expect(isEqual(a, b)).is.true;
394
-
395
- a.b = b;
396
- b.b = a;
397
-
398
- expect(isEqual(a, b)).is.true;
399
-
400
- a.b = 1;
401
- b.b = 2;
402
-
403
- expect(isEqual(a, b)).is.false;
404
-
405
- expect(isEqual(window, document)).is.false;
406
- });
407
- });
408
- });
409
- });
410
-
411
- describe('Event on change', function () {
412
- it('Should fire event when field value was changed', function () {
413
- const counter = [];
414
-
415
- const data = Jodit.modules.ObserveObject.create(getTestObject());
416
-
417
- data.on('change', function (key) {
418
- counter.push(key);
419
- });
420
-
421
- data.editable = false;
422
- data.editable = false;
423
-
424
- data.some.element.two = 2;
425
- data.some.element.one = 2;
426
-
427
- expect(counter).to.deep.equal(['editable', 'some.element.one']);
428
- });
429
-
430
- describe('Key change event', function () {
431
- it('Should fire event.key when field value was changed', function () {
432
- const counter = [];
433
-
434
- const data = Jodit.modules.ObserveObject.create(
435
- getTestObject()
436
- );
437
-
438
- data.on('change.some.element.one', function (key) {
439
- counter.push(key);
440
- });
441
-
442
- data.editable = false;
443
- data.editable = false;
444
-
445
- data.some.element.two = 2;
446
- data.some.element.one = 2;
447
-
448
- expect(counter).to.deep.equal(['some.element.one']);
449
- });
450
-
451
- it('Should fire event with old and new Value', function () {
452
- const counter = [];
453
-
454
- const data = Jodit.modules.ObserveObject.create(
455
- getTestObject()
456
- );
457
-
458
- data.on(
459
- 'change.some.element.one',
460
- function (key, oldValue, newValue) {
461
- counter.push(key, oldValue, newValue);
462
- }
463
- );
464
-
465
- data.some.element.one = 2;
466
- data.some.element.one = 3;
467
-
468
- expect(counter).to.deep.equal([
469
- 'some.element.one',
470
- 1,
471
- 2,
472
- 'some.element.one',
473
- 2,
474
- 3
475
- ]);
476
- });
477
- });
478
-
479
- describe('Change watched property', function () {
480
- it('Should fire handler', function () {
481
- const counter = [],
482
- obj = {
483
- mode: 'top',
484
- methodA: function () {
485
- counter.push(obj.mode);
486
- }
487
- };
488
-
489
- Jodit.decorators.watch('mode')(obj, 'methodA');
490
-
491
- expect(obj.mode).equals('top');
492
-
493
- obj.mode = 'left';
494
-
495
- expect(obj.mode).equals('left');
496
- expect(obj.mode).equals('left');
497
-
498
- expect(counter).to.deep.equal(['left']);
499
- });
500
- });
501
-
502
- describe('Change whole branch', function () {
503
- it('Should fire event.key when field value was changed', function () {
504
- const counter = [];
505
-
506
- const data = Jodit.modules.ObserveObject.create(
507
- getTestObject()
508
- );
509
-
510
- data.on(
511
- ['change.some.element.test', 'change.some'],
512
- function (key) {
513
- counter.push(key);
514
- }
515
- );
516
-
517
- data.some = {
518
- element: {
519
- test: 1
520
- }
521
- };
522
-
523
- data.some.element.test = 2;
524
-
525
- expect(counter).to.deep.equal([
526
- 'some',
527
- 'some.element.test',
528
- 'some.element.test'
529
- ]);
530
- });
531
- });
532
- });
533
- });