{"version":3,"file":"index.mjs","sources":["../../../../../../../internal/style-injector/src/index.ts"],"sourcesContent":["// Custom style injector runtime implementation\n// For reference, this is the default that rollup-plugin-styler comes with\n// https://github.com/plumelo/rollup-plugin-styler/blob/main/runtime/inject-css.js\n//\n// Ours is much simpler, we use a simple event bus to handle injecting styles to both global\n// and shadow DOM. A custom injector also allows us to implement some additional features in\n// the future, such as @layer support.\n//\n// This small file is its own package so we can rely on node-resolve plugin to resolve the\n// import rather than adding additional alias plugin config.\n\nconst collected: string[] = [];\nconst handlers = new Set<(css: string) => void>();\n\n/**\n * Used by Rollup config to collect CSS strings\n */\nexport function collectCss(css: string) {\n  collected.push(css);\n  handlers.forEach((handler) => handler(css));\n}\n\nfunction addHandler(handler: (css: string) => void) {\n  handler(collected.join('\\n'));\n  handlers.add(handler);\n  return () => handlers.delete(handler);\n}\n\nexport function injectCssIntoNode() {\n  const node = document.createElement('style');\n  let firstRender = true;\n  const unsubscribe = addHandler((css) => {\n    if (firstRender || document.contains(node)) {\n      node.textContent += css;\n      firstRender = false;\n    } else {\n      unsubscribe();\n    }\n  });\n  return node;\n}\n\nlet globalStyleNode: HTMLStyleElement;\nexport function injectGlobalStyle() {\n  if (!globalStyleNode) {\n    globalStyleNode = injectCssIntoNode();\n    document.head.appendChild(globalStyleNode);\n  }\n}\n"],"names":["collected","handlers","Set","collectCss","css","push","forEach","handler","addHandler","join","add","delete","injectCssIntoNode","node","document","createElement","firstRender","unsubscribe","contains","textContent","globalStyleNode","injectGlobalStyle","head","appendChild"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMA,YAAsB,EAAE;AAC9B,MAAMC,WAAW,IAAIC,GAAAA,EAAAA;AAErB;;IAGO,SAASC,UAAAA,CAAWC,GAAW,EAAA;AACpCJ,IAAAA,SAAAA,CAAUK,IAAI,CAACD,GAAAA,CAAAA;AACfH,IAAAA,QAAAA,CAASK,OAAO,CAAC,CAACC,OAAAA,GAAYA,OAAAA,CAAQH,GAAAA,CAAAA,CAAAA;AACxC;AAEA,SAASI,WAAWD,OAA8B,EAAA;IAChDA,OAAAA,CAAQP,SAAAA,CAAUS,IAAI,CAAC,IAAA,CAAA,CAAA;AACvBR,IAAAA,QAAAA,CAASS,GAAG,CAACH,OAAAA,CAAAA;IACb,OAAO,IAAMN,QAAAA,CAASU,MAAM,CAACJ,OAAAA,CAAAA;AAC/B;AAEO,SAASK,iBAAAA,GAAAA;IACd,MAAMC,IAAAA,GAAOC,QAAAA,CAASC,aAAa,CAAC,OAAA,CAAA;AACpC,IAAA,IAAIC,WAAAA,GAAc,IAAA;IAClB,MAAMC,WAAAA,GAAcT,WAAW,CAACJ,GAAAA,GAAAA;AAC9B,QAAA,IAAIY,WAAAA,IAAeF,QAAAA,CAASI,QAAQ,CAACL,IAAAA,CAAAA,EAAO;AAC1CA,YAAAA,IAAAA,CAAKM,WAAW,IAAIf,GAAAA;YACpBY,WAAAA,GAAc,KAAA;QAChB,CAAA,MAAO;AACLC,YAAAA,WAAAA,EAAAA;AACF,QAAA;AACF,IAAA,CAAA,CAAA;IACA,OAAOJ,IAAAA;AACT;AAEA,IAAIO,eAAAA;AACG,SAASC,iBAAAA,GAAAA;AACd,IAAA,IAAI,CAACD,eAAAA,EAAiB;QACpBA,eAAAA,GAAkBR,iBAAAA,EAAAA;QAClBE,QAAAA,CAASQ,IAAI,CAACC,WAAW,CAACH,eAAAA,CAAAA;AAC5B,IAAA;AACF;;;;"}