6.1 KiB
Parser
You can customize the initial state of the module from the editor initialization, by passing the following Configuration Object
const editor = grapesjs.init({
parser: {
// options
}
})
Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance
const { Parser } = editor;
Available Events
parse:htmlOn HTML parse, an object containing the input and the output of the parser is passed as an argument.
editor.on('parse:html', ({ input, output }) => { ... });
parse:html:beforeEvent triggered before the HTML parsing starts. An object containing the input is passed as an argument.
editor.on('parse:html:before', (options) => {
console.log('Parser input', options.input);
// You can also process the input and update `options.input`
options.input += '<div>Extra content</div>';
});
parse:cssOn CSS parse, an object containing the input and the output of the parser is passed as an argument.
editor.on('parse:css', ({ input, output }) => { ... });
parse:css:beforeEvent triggered before the CSS parsing starts. An object containing the input is passed as an argument.
editor.on('parse:css:before', (options) => {
console.log('Parser input', options.input);
// You can also process the input and update `options.input`
options.input += '.my-class { color: red; }';
});
parseCatch-all event for all the events mentioned above. An object containing all the available data about the triggered event is passed as an argument to the callback.
editor.on('parse', ({ event, ... }) => { ... });
Methods
getConfig
Get configuration object
Returns Object
parseHtml
Parse HTML string and return the object containing the Component Definition
Parameters
-
inputString HTML string to parse -
optionsObject? Options (optional, default{})options.htmlTypeString? HTML mime type to parseoptions.allowScriptsBoolean Allow<script>tags (optional, defaultfalse)options.allowUnsafeAttrBoolean Allow unsafe HTML attributes (eg.on*inline event handlers) (optional, defaultfalse)options.allowUnsafeAttrValueBoolean Allow unsafe HTML attribute values (eg.src="javascript:...") (optional, defaultfalse)options.keepEmptyTextNodesBoolean Keep whitespaces regardless of whether they are meaningful (optional, defaultfalse)options.asDocumentBoolean? Treat the HTML string as documentoptions.detectDocument(Boolean | Function)? Indicate if or how to detect if the HTML string should be treated as documentoptions.parserCodeString? Use a specific parser from the code parser registry. Pass an empty string to force the built-in/legacy parser path.options.preParserFunction? How to pre-process the HTML string before parsingoptions.convertDataGjsAttributesHyphensBoolean Convertdata-gjs-*attributes from hyphenated to camelCase (eg.data-gjs-my-componenttodata-gjs-myComponent) (optional, defaultfalse)options.convertAttributeValues(Boolean | Array<String> | Function) Convert regular HTML attribute values using the same parser used bydata-gjs-*attributes (optional, defaultfalse)
Examples
const resHtml = Parser.parseHtml(`<table><div>Hi</div></table>`, {
htmlType: 'text/html', // default
});
// By using the `text/html`, this will fix automatically all the HTML syntax issues
// Indeed the final representation, in this case, will be `<div>Hi</div><table></table>`
const resXml = Parser.parseHtml(`<table><div>Hi</div></table>`, {
htmlType: 'application/xml',
});
// This will preserve the original format as, from the XML point of view, is a valid format
Returns Object Object containing the result { html: ..., css: ... }
parseCss
Parse CSS string and return an array of valid definition objects for CSSRules
Parameters
inputString CSS string to parse
Examples
const res = Parser.parseCss('.cls { color: red }');
// [{ ... }]
Returns Array<Object> Array containing the result
addParserCode
Add a new HTML code parser to the registry.
const parser = Parser.addParserCode(
'my-parser',
(input, { editor, options }) => [{ nodeType: 1, tagName: 'section' }],
{ skipSelect: true },
);
Returns Object Added parser definition
getParserCode
Get a registered HTML code parser by id.
removeParserCode
Remove a registered HTML code parser by id.
Properties
parserCode
Get or update the selected HTML code parser id.
Parser.parserCode = 'my-parser';
Parser.parserCode = '';
parsersCode
Object containing the registered HTML code parsers keyed by id.