UNPKG

4.39 kBPlain TextView Raw
1{"code":"const $insertInto$ = Symbol.for('#insertInto'), $removeFrom$ = Symbol.for('#removeFrom');\n\n/*body*/\nimport {renderContext,RenderContext} from './context';\nimport {scheduler} from '../scheduler';\n\nexport function render(blk,ctx = {}){\n\t\n\tlet prev = renderContext.context;\n\trenderContext.context = ctx;\n\tlet res = blk(ctx);\n\tif (renderContext.context == ctx) {\n\t\t\n\t\trenderContext.context = prev;\n\t};\n\treturn res;\n};\n\nexport function mount(mountable,into){\n\t\n\tif (false) {};\n\t\n\tlet parent = into || globalThis.document.body;\n\tlet element = mountable;\n\tif (mountable instanceof Function) {\n\t\t\n\t\tlet ctx = new RenderContext(parent,null);\n\t\tlet tick = function() {\n\t\t\t\n\t\t\tlet prev = renderContext.context;\n\t\t\trenderContext.context = ctx;\n\t\t\tlet res = mountable(ctx);\n\t\t\tif (renderContext.context == ctx) {\n\t\t\t\t\n\t\t\t\trenderContext.context = prev;\n\t\t\t};\n\t\t\treturn res;\n\t\t};\n\t\telement = tick();\n\t\t// TODO Allow unscheduling this?\n\t\tscheduler.listen('commit',tick);\n\t} else {\n\t\t\n\t\t// automatic scheduling of element\n\t\telement.__F |= 64;\n\t};\n\t\n\telement[$insertInto$](parent);\n\treturn element;\n};\n\nexport function unmount(el){\n\t\n\tif (el && el[$removeFrom$]) {\n\t\t\n\t\tel[$removeFrom$](el.parentNode);\n\t};\n\treturn el;\n};\n\nlet instance = globalThis.imba ||= {};\ninstance.mount = mount;\ninstance.unmount = unmount;\n","map":{"version":3,"file":"mount.js","sourceRoot":"","sources":["/Users/abdellah/workspace/scrimba/imba/packages/imba/src/imba/dom/mount.imba"],"sourcesContent":["import {renderContext,RenderContext} from './context'\nimport {scheduler} from '../scheduler'\n\nexport def render blk, ctx = {}\n\tlet prev = renderContext.context\n\trenderContext.context = ctx\n\tlet res = blk(ctx)\n\tif renderContext.context == ctx\n\t\trenderContext.context = prev\n\treturn res\n\nexport def mount mountable, into\n\tif $node$\n\t\tconsole.error \"imba.mount not supported on server.\\nTo spawn a dev-server for an imba client run:\\n > imba serve my-imba-file.imba\"\n\t\t# if mountable isa Function\t\n\t\t# console.log String(mountable)\n\t\treturn String(mountable)\n\n\tlet parent = into or global.document.body\n\tlet element = mountable\n\tif mountable isa Function\n\t\tlet ctx = new RenderContext(parent,null)\n\t\tlet tick = do\n\t\t\tlet prev = renderContext.context\n\t\t\trenderContext.context = ctx\n\t\t\tlet res = mountable(ctx)\n\t\t\tif renderContext.context == ctx\n\t\t\t\trenderContext.context = prev\n\t\t\treturn res\n\t\telement = tick()\n\t\t# TODO Allow unscheduling this?\n\t\tscheduler.listen('commit',tick)\n\telse\n\t\t# automatic scheduling of element\n\t\telement.__F |= $EL_SCHEDULE$\n\n\telement.#insertInto(parent)\n\treturn element\n\nexport def unmount el\n\tif el and el.#removeFrom\n\t\tel.#removeFrom(el.parentNode)\n\treturn el\n\nlet instance = global.imba ||= {}\ninstance.mount = mount\ninstance.unmount = unmount"],"names":[],"mappings":";;;AAAA,MAAM,EAAE,aAAa,CAAC,aAAa,OAAO,WAAW;AACrD,MAAM,EAAE,SAAS,OAAO,cAAc;;AAEtC,MAAM,CAAC,QAAG,CAAC,MAAM,CAAC,GAAG,CAAE,GAAG,GAAG,EAAE,CAAA;;KAC1B,IAAI,GAAG,aAAa,CAAC,OAAO;CAChC,aAAa,CAAC,OAAO,GAAG,GAAG;KACvB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;CAClB,EAAE,EAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAA;;EAC9B,aAAa,CAAC,OAAO,GAAG,IAAI;EAAA;CAC7B,MAAM,CAAC,GAAG;CAAA;;AAEX,MAAM,CAAC,QAAG,CAAC,KAAK,CAAC,SAAS,CAAE,IAAI,CAAA;;CAC/B,EAAE,EAAC,KAAM;;KAML,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,UAAM,CAAC,QAAQ,CAAC,IAAI;KACrC,OAAO,GAAG,SAAS;CACvB,EAAE,EAAC,SAAS,YAAK,QAAQ,EAAA;;MACpB,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;MACpC,IAAI,GAAG,QAAE,GAAA;;OACR,IAAI,GAAG,aAAa,CAAC,OAAO;GAChC,aAAa,CAAC,OAAO,GAAG,GAAG;OACvB,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;GACxB,EAAE,EAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAA;;IAC9B,aAAa,CAAC,OAAO,GAAG,IAAI;IAAA;GAC7B,MAAM,CAAC,GAAG;GAAA;EACX,OAAO,GAAG,IAAI,EAAE;;EAEhB,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;EAAA,MAC5B;;;EAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAa;EAAA;;CAE7B,OAAO,cAAY,CAAC,MAAM,CAAC;CAC3B,MAAM,CAAC,OAAO;CAAA;;AAEf,MAAM,CAAC,QAAG,CAAC,OAAO,CAAC,EAAE,CAAA;;CACpB,EAAE,EAAC,EAAE,CAAC,EAAG,CAAC,EAAE,cAAY,EAAA;;EACvB,EAAE,cAAY,CAAC,EAAE,CAAC,UAAU,CAAC;EAAA;CAC9B,MAAM,CAAC,EAAE;CAAA;;IAEN,QAAQ,GAAG,UAAM,CAAC,IAAI,KAAK,EAAE;AACjC,QAAQ,CAAC,KAAK,GAAG,KAAK;AACtB,QAAQ,CAAC,OAAO,GAAG,OAAO;AAAA;"},"dependencies":[],"meta":{"vite":{"lang":"js"}}}
\No newline at end of file