{"version":3,"file":"silentium-morphdom.min.mjs","sources":["../src/index.ts"],"sourcesContent":["import morphdom from \"morphdom\";\nimport { All, Applied, Message, MessageType, Shared } from \"silentium\";\n\n/**\n * Represents a function that renders HTML string into an element\n */\nexport function Render(\n  $root: MessageType<HTMLElement>,\n  $html: MessageType<string>,\n) {\n  const $rootChild = Applied($root, (root) => {\n    const div = document.createElement(\"div\");\n    root.appendChild(div);\n    return div;\n  });\n  const $all = All($html, $rootChild);\n  return Shared(\n    Message<HTMLElement>(function RenderImpl(resolve, reject) {\n      let updatedDiv: HTMLElement | null = null;\n      $all.then(([html, div]) => {\n        try {\n          updatedDiv = morphdom(updatedDiv ?? div, html, {\n            childrenOnly: false,\n            onBeforeElUpdated: function (fromEl, toEl) {\n              if (fromEl.isEqualNode(toEl)) {\n                return false;\n              }\n\n              return true;\n            },\n          }) as HTMLElement;\n          resolve(updatedDiv);\n        } catch (e: any) {\n          reject(\"Error in Render function from morphdom \" + e.message);\n        }\n      });\n    }),\n  );\n}\n"],"names":["Render","$root","$html","$rootChild","Applied","root","div","document","createElement","appendChild","$all","All","Shared","Message","resolve","reject","updatedDiv","then","html","morphdom","childrenOnly","onBeforeElUpdated","fromEl","toEl","isEqualNode","e","message"],"mappings":"8FAMO,SAASA,EACdC,EACAC,GAEA,MAAMC,EAAaC,EAAQH,EAAQI,IACjC,MAAMC,EAAMC,SAASC,cAAc,OAEnC,OADAH,EAAKI,YAAYH,GACVA,IAEHI,EAAOC,EAAIT,EAAOC,GACxB,OAAOS,EACLC,EAAqB,SAAoBC,EAASC,GAChD,IAAIC,EAAiC,KACrCN,EAAKO,KAAK,EAAEC,EAAMZ,MAChB,IACEU,EAAaG,EAASH,GAAcV,EAAKY,EAAM,CAC7CE,cAAc,EACdC,kBAAmB,SAAUC,EAAQC,GACnC,OAAID,EAAOE,YAAYD,EAKzB,IAEFT,EAAQE,EACV,OAASS,GACPV,EAAO,0CAA4CU,EAAEC,QACvD,GAEJ,GAEJ"}