Browse Source

Improve img for xml parser

pull/3691/head
Artur Arseniev 5 years ago
parent
commit
627087826c
  1. 17
      src/dom_components/model/ComponentImage.js
  2. 27
      test/specs/dom_components/model/ComponentTypes.js

17
src/dom_components/model/ComponentImage.js

@ -1,5 +1,6 @@
import { result } from 'underscore';
import Component from './Component';
import { toLowerCase } from 'utils/mixins';
const svgAttrs =
'xmlns="http://www.w3.org/2000/svg" width="100" viewBox="0 0 24 24" style="fill: rgba(0,0,0,0.15); transform: scale(0.75)"';
@ -138,20 +139,6 @@ export default Component.extend(
}
},
{
/**
* Detect if the passed element is a valid component.
* In case the element is valid an object abstracted
* from the element will be returned
* @param {HTMLElement}
* @return {Object}
* @private
*/
isComponent(el) {
var result = '';
if (el.tagName == 'IMG') {
result = { type: 'image' };
}
return result;
}
isComponent: el => toLowerCase(el.tagName) === 'img'
}
);

27
test/specs/dom_components/model/ComponentTypes.js

@ -4,6 +4,13 @@ describe('Component Types', () => {
let editor;
let wrapper;
const expectedType = (input, type) => {
const cmp = wrapper.append(input)[0];
expect(wrapper.components().length).toBe(1);
expect(cmp.toHTML()).toBe(input);
expect(cmp.is(type)).toBe(true);
};
beforeAll(() => {
editor = new Editor({ allowScripts: 1 });
editor
@ -21,23 +28,21 @@ describe('Component Types', () => {
wrapper.components().reset();
});
test('<img> is correctly recognized', () => {
expectedType('<img src="img.png" attr-test="value"/>', 'image');
});
test('<script> is correctly recognized', () => {
// const scr = 'console.log("Inline script");'; // issues with jsdom parser
const scr = ``;
const scrFull = `<script attr-test="value">${scr}</script>`;
const cmp = wrapper.append(scrFull)[0];
expect(wrapper.components().length).toBe(1);
expect(cmp.toHTML()).toBe(scrFull);
expect(cmp.is('script')).toBe(true);
expectedType(`<script attr-test="value">${scr}</script>`, 'script');
});
test('<iframe> is correctly recognized', () => {
const str =
'<iframe frameborder="0" src="/somewhere" attr-test="value"></iframe>';
const cmp = wrapper.append(str)[0];
expect(wrapper.components().length).toBe(1);
expect(cmp.toHTML()).toBe(str);
expect(cmp.is('iframe')).toBe(true);
expectedType(
`<iframe frameborder="0" src="/somewhere" attr-test="value"></iframe>`,
'iframe'
);
});
test.skip('<svg> is correctly recognized', () => {

Loading…
Cancel
Save