UNPKG

babelute-html-dom-pragmatics

Version:

Pure DOM engine for babelue-html-lexicon

1 lines 5.63 kB
{"version":3,"file":"index.mjs","sources":["../../src/index.js"],"sourcesContent":["/**\n ************** HTML to DOM Actions (just for demo) ***********\n *\n * @author Gilles Coomans\n * @licence MIT\n * @copyright 2016-2017 Gilles Coomans\n */\n\nimport babelute from 'babelute';\nimport { insertHTML } from 'nomocas-webutils/lib/dom-utils';\nimport htmlLexicon from 'babelute-html-lexicon'; // external\n\n/**\n * @external {FacadePragmatics} https://github.com/nomocas/babelute\n */\nconst $baseOutput = babelute.FacadePragmatics.prototype.$output;\n\n/**\n * Dom Pragmatics\n * @type {FacadePragmatics}\n * @public\n * @example\n * import domPragmas from 'babelute-html/src/html-to-dom.js';\n * import htmlLexicon from 'babelute-html/src/html-lexicon.js';\n *\n * const h = htmlLexicon.initializer;\n * const sentence = h.div(state.intro).section(h.class('my-section').h1(state.title));\n * const $root = document.getElementById('foo');\n * \n * domPragmas.$output($root, sentence);\n */\nconst domPragmas = babelute.createFacadePragmatics({\n\thtml: true\n}, {\n\n\t// we only need to provides language atoms implementations.\n\n\ttag($tag, args /* tagName, babelutes */ ) {\n\t\tconst child = document.createElement(args[0]),\n\t\t\tbabelutes = args[1];\n\t\tlet templ;\n\n\t\t$tag.appendChild(child);\n\n\t\tfor (let i = 0, len = babelutes.length; i < len; ++i) {\n\t\t\ttempl = babelutes[i];\n\t\t\tif (typeof templ === 'undefined')\n\t\t\t\tcontinue;\n\t\t\tif (templ && templ.__babelute__)\n\t\t\t\tthis.$output(child, templ);\n\t\t\telse\n\t\t\t\tchild.appendChild(document.createTextNode(templ)); // auto escaped when added to dom.\n\t\t}\n\t},\n\n\ttext($tag, args /* value */ ) {\n\t\t$tag.appendChild(document.createTextNode(args[0])); // auto escaped when added to dom.\n\t},\n\n\tclass($tag, args /* className, flag */ ) {\n\t\tif (args[0] && (args.length === 1 || args[1]))\n\t\t\t$tag.classList.add(args[0]);\n\t},\n\tclasses($tag, args /* classes */ ) {\n\t\tconst splitted = args[0].split(/\\s+/);\n\t\tsplitted.forEach((cl) => {\n\t\t\t$tag.classList.add(cl);\n\t\t});\n\t},\n\tstyle($tag, args /* name, value */ ) {\n\t\t$tag.style[args[0]] = args[1];\n\t},\n\n\tattr($tag, args /* name, value */ ) {\n\t\t$tag.setAttribute(args[0], args[1]);\n\t},\n\n\tprop($tag, args /* name, value */ ) {\n\t\t$tag[args[0]] = args[1];\n\t},\n\n\tdata($tag, args /* name, value */ ) {\n\t\t$tag.dataset[args[0]] = args[1];\n\t},\n\n\tid($tag, args /* value */ ) {\n\t\t$tag.id = args[0];\n\t},\n\n\ton($tag, args /* eventName, callback */ ) {\n\t\t$tag.addEventListener(args[0], args[1]);\n\t},\n\t// custom output\n\tonDom($tag, args /* render */ ) {\n\t\tconst onRender = args[0];\n\t\tif (onRender)\n\t\t\tonRender($tag, null);\n\t},\n\n\t$output($tag, babelute) {\n\t\treturn $baseOutput.call(this, $tag, babelute).children;\n\t},\n\n\thtml($tag, args) {\n\t\tif (args[0])\n\t\t\tinsertHTML(args[0], $tag);\n\t}\n});\n\nhtmlLexicon.addAliases({\n\t$toDOM(domElement) {\n\t\treturn domPragmas.$output(domElement, this);\n\t}\n});\n\nexport default domPragmas;\n\n"],"names":["$baseOutput","babelute","FacadePragmatics","prototype","$output","domPragmas","createFacadePragmatics","$tag","args","child","document","createElement","babelutes","templ","appendChild","i","len","length","__babelute__","createTextNode","classList","add","splitted","split","forEach","cl","style","setAttribute","dataset","id","addEventListener","onRender","call","children","insertHTML","htmlLexicon","addAliases","domElement"],"mappings":";;;;AAAA;;;;;;;;AAQA,AACA,AACA,AAEA;;;AAGA,IAAMA,cAAcC,SAASC,gBAAT,CAA0BC,SAA1B,CAAoCC,OAAxD;;;;;;;;;;;;;;;;AAgBA,IAAMC,aAAaJ,SAASK,sBAAT,CAAgC;OAC5C;CADY,EAEhB;;;;IAAA,eAIEC,IAJF,EAIQC,IAJR,2BAIwC;MACnCC,QAAQC,SAASC,aAAT,CAAuBH,KAAK,CAAL,CAAvB,CAAd;MACCI,YAAYJ,KAAK,CAAL,CADb;MAEIK,cAAJ;;OAEKC,WAAL,CAAiBL,KAAjB;;OAEK,IAAIM,IAAI,CAAR,EAAWC,MAAMJ,UAAUK,MAAhC,EAAwCF,IAAIC,GAA5C,EAAiD,EAAED,CAAnD,EAAsD;WAC7CH,UAAUG,CAAV,CAAR;OACI,OAAOF,KAAP,KAAiB,WAArB,EACC;OACGA,SAASA,MAAMK,YAAnB,EACC,KAAKd,OAAL,CAAaK,KAAb,EAAoBI,KAApB,EADD,KAGCJ,MAAMK,WAAN,CAAkBJ,SAASS,cAAT,CAAwBN,KAAxB,CAAlB,EAPoD;;EAXrD;KAAA,gBAsBGN,IAtBH,EAsBSC,IAtBT,cAsB4B;OACxBM,WAAL,CAAiBJ,SAASS,cAAT,CAAwBX,KAAK,CAAL,CAAxB,CAAjB,EAD6B;EAtB5B;MAAA,kBA0BID,IA1BJ,EA0BUC,IA1BV,wBA0BuC;MACpCA,KAAK,CAAL,MAAYA,KAAKS,MAAL,KAAgB,CAAhB,IAAqBT,KAAK,CAAL,CAAjC,CAAJ,EACCD,KAAKa,SAAL,CAAeC,GAAf,CAAmBb,KAAK,CAAL,CAAnB;EA5BA;QAAA,mBA8BMD,IA9BN,EA8BYC,IA9BZ,gBA8BiC;MAC5Bc,WAAWd,KAAK,CAAL,EAAQe,KAAR,CAAc,KAAd,CAAjB;WACSC,OAAT,CAAiB,UAACC,EAAD,EAAQ;QACnBL,SAAL,CAAeC,GAAf,CAAmBI,EAAnB;GADD;EAhCC;MAAA,iBAoCIlB,IApCJ,EAoCUC,IApCV,qBAoCoC;OAChCkB,KAAL,CAAWlB,KAAK,CAAL,CAAX,IAAsBA,KAAK,CAAL,CAAtB;EArCC;KAAA,gBAwCGD,IAxCH,EAwCSC,IAxCT,oBAwCkC;OAC9BmB,YAAL,CAAkBnB,KAAK,CAAL,CAAlB,EAA2BA,KAAK,CAAL,CAA3B;EAzCC;KAAA,gBA4CGD,IA5CH,EA4CSC,IA5CT,oBA4CkC;OAC9BA,KAAK,CAAL,CAAL,IAAgBA,KAAK,CAAL,CAAhB;EA7CC;KAAA,gBAgDGD,IAhDH,EAgDSC,IAhDT,oBAgDkC;OAC9BoB,OAAL,CAAapB,KAAK,CAAL,CAAb,IAAwBA,KAAK,CAAL,CAAxB;EAjDC;GAAA,cAoDCD,IApDD,EAoDOC,IApDP,cAoD0B;OACtBqB,EAAL,GAAUrB,KAAK,CAAL,CAAV;EArDC;GAAA,cAwDCD,IAxDD,EAwDOC,IAxDP,4BAwDwC;OACpCsB,gBAAL,CAAsBtB,KAAK,CAAL,CAAtB,EAA+BA,KAAK,CAAL,CAA/B;EAzDC;;;MAAA,iBA4DID,IA5DJ,EA4DUC,IA5DV,eA4D8B;MACzBuB,WAAWvB,KAAK,CAAL,CAAjB;MACIuB,QAAJ,EACCA,SAASxB,IAAT,EAAe,IAAf;EA/DA;QAAA,mBAkEMA,IAlEN,EAkEYN,WAlEZ,EAkEsB;SAChBD,YAAYgC,IAAZ,CAAiB,IAAjB,EAAuBzB,IAAvB,EAA6BN,WAA7B,EAAuCgC,QAA9C;EAnEC;KAAA,gBAsEG1B,IAtEH,EAsESC,IAtET,EAsEe;MACZA,KAAK,CAAL,CAAJ,EACC0B,WAAW1B,KAAK,CAAL,CAAX,EAAoBD,IAApB;;CA1EgB,CAAnB;;AA8EA4B,YAAYC,UAAZ,CAAuB;OAAA,kBACfC,UADe,EACH;SACXhC,WAAWD,OAAX,CAAmBiC,UAAnB,EAA+B,IAA/B,CAAP;;CAFF,EAMA;;"}