Browse Source

Merge pull request #4258 from xQwexx/editor

Convert EditorModule into class
pull/4267/head
Artur Arseniev 4 years ago
committed by GitHub
parent
commit
9fcf4e6c68
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      src/canvas/index.js
  2. 1337
      src/editor/index.js
  3. 2
      src/editor/model/Editor.js
  4. 2
      src/index.js
  5. 8
      test/specs/block_manager/index.js
  6. 12
      test/specs/device_manager/index.js
  7. 8
      test/specs/editor/index.js
  8. 54
      test/specs/i18n/index.js
  9. 16
      test/specs/keymaps/index.js

1
src/canvas/index.js

@ -267,7 +267,6 @@ export default class CanvasModule {
model: this.canvas, model: this.canvas,
config: this.c, config: this.c,
}); });
console.log(this.canvas);
return this.canvasView.render().el; return this.canvasView.render().el;
} }

1337
src/editor/index.js

File diff suppressed because it is too large

2
src/editor/model/Editor.js

@ -809,7 +809,7 @@ export default class EditorModel extends Model {
view && view.remove(); view && view.remove();
this.clear({ silent: true }); this.clear({ silent: true });
this.destroyed = 1; this.destroyed = 1;
['config', 'view', '_previousAttributes', '_events', '_listeners'].forEach(i => (this[i] = {})); ['_config', 'view', '_previousAttributes', '_events', '_listeners'].forEach(i => (this[i] = {}));
editors.splice(editors.indexOf(editor), 1); editors.splice(editors.indexOf(editor), 1);
hasWin() && $(config.el).empty().attr(this.attrsOrig); hasWin() && $(config.el).empty().attr(this.attrsOrig);
} }

2
src/index.js

@ -52,7 +52,7 @@ export default {
if (!els && !headless) throw new Error("'container' is required"); if (!els && !headless) throw new Error("'container' is required");
config = { ...defaultConfig, ...config, grapesjs: this }; config = { ...defaultConfig, ...config, grapesjs: this };
config.el = !headless && (isElement(els) ? els : document.querySelector(els)); config.el = !headless && (isElement(els) ? els : document.querySelector(els));
const editor = new Editor(config, { $ }).init(); const editor = new Editor(config, { $ });
const em = editor.getModel(); const em = editor.getModel();
// Load plugins // Load plugins

8
test/specs/block_manager/index.js

@ -10,14 +10,14 @@ describe('BlockManager', () => {
beforeEach(() => { beforeEach(() => {
editor = new Editor({ editor = new Editor({
blockManager: { blockManager: {
blocks: [] blocks: [],
} },
}).init(); });
idTest = 'h1-block'; idTest = 'h1-block';
optsTest = { optsTest = {
label: 'Heading', label: 'Heading',
content: '<h1>Test</h1>' content: '<h1>Test</h1>',
}; };
obj = editor.Blocks; obj = editor.Blocks;

12
test/specs/device_manager/index.js

@ -13,9 +13,9 @@ describe('DeviceManager', () => {
testWidthDevice = '100px'; testWidthDevice = '100px';
editor = new Editor({ editor = new Editor({
deviceManager: { deviceManager: {
devices: [] devices: [],
} },
}).init(); });
em = editor.getModel(); em = editor.getModel();
obj = editor.Devices; obj = editor.Devices;
}); });
@ -64,7 +64,7 @@ describe('DeviceManager', () => {
test('Add device with props', () => { test('Add device with props', () => {
const model = obj.add({ const model = obj.add({
name: testNameDevice, name: testNameDevice,
width: testWidthDevice width: testWidthDevice,
}); });
expect(model.get('id')).toEqual(testNameDevice); expect(model.get('id')).toEqual(testNameDevice);
expect(model.get('name')).toEqual(testNameDevice); expect(model.get('name')).toEqual(testNameDevice);
@ -73,7 +73,7 @@ describe('DeviceManager', () => {
test('Add device without id and name', () => { test('Add device without id and name', () => {
const model = obj.add({ const model = obj.add({
width: testWidthDevice width: testWidthDevice,
}); });
expect(model.get('name')).toEqual(''); expect(model.get('name')).toEqual('');
expect(model.get('width')).toEqual(testWidthDevice); expect(model.get('width')).toEqual(testWidthDevice);
@ -97,7 +97,7 @@ describe('DeviceManager', () => {
test('Get device by name with different id', () => { test('Get device by name with different id', () => {
const model = obj.add({ const model = obj.add({
id: 'device', id: 'device',
name: testNameDevice name: testNameDevice,
}); });
const model2 = obj.get(testNameDevice); const model2 = obj.get(testNameDevice);
expect(model).toBe(model2); expect(model).toBe(model2);

8
test/specs/editor/index.js

@ -8,7 +8,6 @@ describe('Editor', () => {
beforeEach(() => { beforeEach(() => {
editor = new Editor(); editor = new Editor();
editor.init();
editor.getModel().loadOnStart(); editor.getModel().loadOnStart();
}); });
@ -99,12 +98,7 @@ describe('Editor', () => {
</div>`); </div>`);
expect(umStack.length).toBe(1); // UM counts first children expect(umStack.length).toBe(1); // UM counts first children
expect(keys(all).length).toBe(5 + initComps); expect(keys(all).length).toBe(5 + initComps);
wrapper wrapper.components().at(0).components().at(0).remove(); // Remove 1 component
.components()
.at(0)
.components()
.at(0)
.remove(); // Remove 1 component
expect(umStack.length).toBe(2); expect(umStack.length).toBe(2);
expect(keys(all).length).toBe(3 + initComps); expect(keys(all).length).toBe(3 + initComps);

54
test/specs/i18n/index.js

@ -1,10 +1,10 @@
import I18n from 'i18n'; import I18n from 'i18n';
import Editor from 'editor/index'; import Editor from 'editor';
describe('I18n', () => { describe('I18n', () => {
describe('Main', () => { describe('Main', () => {
let obj; let obj;
let editor = Editor().init(); let editor = new Editor();
let em = editor.getModel(); let em = editor.getModel();
beforeEach(() => { beforeEach(() => {
@ -34,8 +34,8 @@ describe('I18n', () => {
localeFallback, localeFallback,
detectLocale: 0, detectLocale: 0,
messages: { messages: {
en: { msg } en: { msg },
} },
}); });
expect(obj.getLocale()).toBe(locale); expect(obj.getLocale()).toBe(locale);
expect(obj.getConfig().localeFallback).toBe(localeFallback); expect(obj.getConfig().localeFallback).toBe(localeFallback);
@ -44,7 +44,7 @@ describe('I18n', () => {
test('English always imported', () => { test('English always imported', () => {
obj.init({ obj.init({
messages: { it: {} } messages: { it: {} },
}); });
expect(Object.keys(obj.getMessages())).toEqual(['en', 'it']); expect(Object.keys(obj.getMessages())).toEqual(['en', 'it']);
}); });
@ -74,12 +74,12 @@ describe('I18n', () => {
obj.setMessages(set1); obj.setMessages(set1);
const set2 = { const set2 = {
en: { msg2: 'Msg 2 up', msg3: 'Msg 3' }, en: { msg2: 'Msg 2 up', msg3: 'Msg 3' },
it: { msg1: 'Msg 1' } it: { msg1: 'Msg 1' },
}; };
obj.addMessages(set2); obj.addMessages(set2);
expect(obj.getMessages()).toEqual({ expect(obj.getMessages()).toEqual({
en: { msg1: 'Msg 1', msg2: 'Msg 2 up', msg3: 'Msg 3' }, en: { msg1: 'Msg 1', msg2: 'Msg 2 up', msg3: 'Msg 3' },
it: { msg1: 'Msg 1' } it: { msg1: 'Msg 1' },
}); });
}); });
@ -90,19 +90,19 @@ describe('I18n', () => {
msg2: 'Msg 2', msg2: 'Msg 2',
msg3: { msg3: {
msg31: 'Msg 31', msg31: 'Msg 31',
msg32: { msg321: 'Msg 321' } msg32: { msg321: 'Msg 321' },
} },
} },
}); });
obj.addMessages({ obj.addMessages({
en: { en: {
msg2: { msg21: 'Msg 21' }, msg2: { msg21: 'Msg 21' },
msg3: { msg3: {
msg32: { msg322: 'Msg 322' }, msg32: { msg322: 'Msg 322' },
msg33: 'Msg 33' msg33: 'Msg 33',
}, },
msg4: 'Msg 4' msg4: 'Msg 4',
} },
}); });
expect(obj.getMessages()).toEqual({ expect(obj.getMessages()).toEqual({
en: { en: {
@ -112,12 +112,12 @@ describe('I18n', () => {
msg31: 'Msg 31', msg31: 'Msg 31',
msg32: { msg32: {
msg321: 'Msg 321', msg321: 'Msg 321',
msg322: 'Msg 322' msg322: 'Msg 322',
}, },
msg33: 'Msg 33' msg33: 'Msg 33',
}, },
msg4: 'Msg 4' msg4: 'Msg 4',
} },
}); });
}); });
@ -126,7 +126,7 @@ describe('I18n', () => {
obj.setLocale('en'); obj.setLocale('en');
obj.setMessages({ obj.setMessages({
en: { msg1 }, en: { msg1 },
it: { msg1: `${msg1} it` } it: { msg1: `${msg1} it` },
}); });
expect(obj.t('msg2')).toBe(undefined); expect(obj.t('msg2')).toBe(undefined);
expect(obj.t('msg1')).toBe(msg1); expect(obj.t('msg1')).toBe(msg1);
@ -141,10 +141,10 @@ describe('I18n', () => {
key1: { key1: {
msg1, msg1,
key2: { key2: {
msg2 msg2,
} },
} },
} },
}); });
expect(obj.t('key1.msg1')).toBe(msg1); expect(obj.t('key1.msg1')).toBe(msg1);
expect(obj.t('key1.key2.msg2')).toBe(msg2); expect(obj.t('key1.key2.msg2')).toBe(msg2);
@ -158,7 +158,7 @@ describe('I18n', () => {
obj.setLocale('en'); obj.setLocale('en');
obj.setMessages({ obj.setMessages({
en: { msg1 }, en: { msg1 },
it: { msg1: msg1Alt } it: { msg1: msg1Alt },
}); });
expect(obj.t('msg1', { l: 'it' })).toBe(msg1Alt); expect(obj.t('msg1', { l: 'it' })).toBe(msg1Alt);
}); });
@ -168,7 +168,7 @@ describe('I18n', () => {
obj.setLocale('it'); obj.setLocale('it');
obj.setMessages({ obj.setMessages({
en: { msg1 }, en: { msg1 },
it: {} it: {},
}); });
expect(obj.t('msg1')).toBe(msg1); expect(obj.t('msg1')).toBe(msg1);
}); });
@ -179,12 +179,10 @@ describe('I18n', () => {
obj.setLocale('en'); obj.setLocale('en');
obj.setMessages({ obj.setMessages({
en: { msg1 }, en: { msg1 },
it: { msg1: msg1Alt } it: { msg1: msg1Alt },
}); });
expect(obj.t('msg1', { params: { test: 'Hello' } })).toBe('Msg 1 Hello'); expect(obj.t('msg1', { params: { test: 'Hello' } })).toBe('Msg 1 Hello');
expect(obj.t('msg1', { l: 'it', params: { test: 'Hello' } })).toBe( expect(obj.t('msg1', { l: 'it', params: { test: 'Hello' } })).toBe('Msg 1 Hello it');
'Msg 1 Hello it'
);
}); });
test('i18n events', () => { test('i18n events', () => {

16
test/specs/keymaps/index.js

@ -1,4 +1,4 @@
import Editor from 'editor/index'; import Editor from 'editor';
describe('Keymaps', () => { describe('Keymaps', () => {
describe('Main', () => { describe('Main', () => {
@ -7,7 +7,7 @@ describe('Keymaps', () => {
let editor; let editor;
beforeEach(() => { beforeEach(() => {
editor = Editor({ keymaps: { defaults: [] } }).init(); editor = new Editor({ keymaps: { defaults: [] } });
em = editor.getModel(); em = editor.getModel();
em.loadOnStart(); em.loadOnStart();
obj = editor.Keymaps; obj = editor.Keymaps;
@ -64,13 +64,13 @@ describe('Keymaps', () => {
it('Should run the handler', () => { it('Should run the handler', () => {
const handler = { const handler = {
run: jest.fn(), run: jest.fn(),
callRun: jest.fn() callRun: jest.fn(),
}; };
obj.add('test', 'ctrl+a', handler); obj.add('test', 'ctrl+a', handler);
const keyboardEvent = new KeyboardEvent('keydown', { const keyboardEvent = new KeyboardEvent('keydown', {
keyCode: 65, keyCode: 65,
which: 65, which: 65,
ctrlKey: true ctrlKey: true,
}); });
document.dispatchEvent(keyboardEvent); document.dispatchEvent(keyboardEvent);
@ -86,13 +86,13 @@ describe('Keymaps', () => {
it('Should not run the handler', () => { it('Should not run the handler', () => {
const handler = { const handler = {
run: jest.fn(), run: jest.fn(),
callRun: jest.fn() callRun: jest.fn(),
}; };
obj.add('test', 'ctrl+a', handler); obj.add('test', 'ctrl+a', handler);
const keyboardEvent = new KeyboardEvent('keydown', { const keyboardEvent = new KeyboardEvent('keydown', {
keyCode: 65, keyCode: 65,
which: 65, which: 65,
ctrlKey: true ctrlKey: true,
}); });
document.dispatchEvent(keyboardEvent); document.dispatchEvent(keyboardEvent);
@ -102,13 +102,13 @@ describe('Keymaps', () => {
it('Should run the handler if checked as force', () => { it('Should run the handler if checked as force', () => {
const handler = { const handler = {
run: jest.fn(), run: jest.fn(),
callRun: jest.fn() callRun: jest.fn(),
}; };
obj.add('test', 'ctrl+a', handler, { force: true }); obj.add('test', 'ctrl+a', handler, { force: true });
const keyboardEvent = new KeyboardEvent('keydown', { const keyboardEvent = new KeyboardEvent('keydown', {
keyCode: 65, keyCode: 65,
which: 65, which: 65,
ctrlKey: true ctrlKey: true,
}); });
document.dispatchEvent(keyboardEvent); document.dispatchEvent(keyboardEvent);

Loading…
Cancel
Save