diff --git a/src/parser/model/ParserHtml.js b/src/parser/model/ParserHtml.ts
similarity index 86%
rename from src/parser/model/ParserHtml.js
rename to src/parser/model/ParserHtml.ts
index c2e5c8ab3..aeaac40bf 100644
--- a/src/parser/model/ParserHtml.js
+++ b/src/parser/model/ParserHtml.ts
@@ -1,7 +1,17 @@
import { each, isString, isFunction, isUndefined } from 'underscore';
+import { CssRuleProperties } from '../../css_composer/model/CssRule';
import BrowserParserHtml from './BrowserParserHtml';
-export default config => {
+type AnyObject = Record;
+
+type StringObject = Record;
+
+type HTMLParseResult = {
+ html: null | Record | Record[]; // TODO replace with components
+ css: null | CssRuleProperties[];
+};
+
+export default (config: AnyObject = {}) => {
let c = config;
const modelAttrStart = 'data-gjs-';
const event = 'parse:html';
@@ -16,9 +26,9 @@ export default config => {
* @param {Object} attr
* @returns {Object} An object containing props and attributes without them
*/
- splitPropsFromAttr(attr = {}) {
- const props = {};
- const attrs = {};
+ splitPropsFromAttr(attr: AnyObject = {}) {
+ const props: StringObject = {};
+ const attrs: StringObject = {};
each(attr, (value, key) => {
if (key.indexOf(this.modelAttrStart) === 0) {
@@ -61,15 +71,17 @@ export default config => {
* console.log(stl);
* // {color: 'black', width: '100px', test: 'value'}
*/
- parseStyle(str) {
- var result = {};
- var decls = str.split(';');
- for (var i = 0, len = decls.length; i < len; i++) {
- var decl = decls[i].trim();
+ parseStyle(str: string) {
+ const result: StringObject = {};
+ const decls = str.split(';');
+
+ for (let i = 0, len = decls.length; i < len; i++) {
+ const decl = decls[i].trim();
if (!decl) continue;
- var prop = decl.split(':');
+ const prop = decl.split(':');
result[prop[0].trim()] = prop.slice(1).join(':').trim();
}
+
return result;
},
@@ -82,14 +94,16 @@ export default config => {
* console.log(res);
* // ['test1', 'test2', 'test3']
*/
- parseClass(str) {
+ parseClass(str: string) {
const result = [];
const cls = str.split(' ');
+
for (let i = 0, len = cls.length; i < len; i++) {
const cl = cls[i].trim();
if (!cl) continue;
result.push(cl);
}
+
return result;
},
@@ -98,22 +112,22 @@ export default config => {
* @param {HTMLElement} el DOM element to traverse
* @return {Array