{"version":3,"file":"static/chunks/app/layout-3b6fd905ac53a049.js","mappings":"+EAAA,4CAAiN,CAEjN,4CAAwP,CAExP,4CAA+O,CAE/O,uCAAkK,CAElK,uCAA8K,CAE9K,sCAAsK,CAEtK,uCAAgJ,CAEhJ,uCAAyJ,CAEzJ,uCAA6J,CAE7J,uCAAiK,CAEjK,uCAAsK,CAEtK,uCAA0K,CAE1K,uCAAqK,CAErK,uCAAgK,CAEhK,qCAAgK,CAEhK,uCAAkK,CAElK,uCAAsK,CAEtK,uCAA0J,CAE1J,uCAAsJ,CAEtJ,uCAA8I,CAE9I,uCAA+J,CAE/J,uCAA8J,CAE9J,uCAA4L,CAE5L,uCAAqO,CAErO,uCAAmJ,CAEnJ,uCAAmK,CAEnK,uCAAqJ,CAErJ,uCAAgK,CAEhK,uCAAyK,CAEzK,uCAAiJ,CAEjJ,uCAAmJ,CAEnJ,sCAA6J,CAE7J,sCAA2J,CAE3J,uCAAmK,CAEnK,uCAA+K,CAE/K,uCAA+J,CAE/J,uCAAqJ,CAErJ,uCAA+J,CAE/J,uCAAyJ,CAEzJ,uCAAuJ,CAEvJ,uCAAmJ,CAEnJ,4CAA8I,mLEuS9I,OAAqB,mBAArB,GA7NgBA,sBAAsB,mBAAtBA,GAgCAC,gBAAgB,mBAAhBA,kDA1LK,gBAC0C,YAE5B,WACI,WACH,OAE9BC,EAAc,IAAIC,IAClBC,EAAY,IAAIC,IAiBhBC,EAAoB,IAOxB,GAAIC,EAAAA,OAAQ,CAACC,OAAO,CAAE,CACpBC,EAAYC,OAAO,CAAC,IAClBH,EAAAA,OAAQ,CAACC,OAAO,CAACG,EAAY,CAAEC,GAAI,OAAQ,EAC7C,GAEA,MACF,CAMmC,CACjC,IAAIC,EAAOC,SAASD,IAAI,CACxBJ,EAAYC,OAAO,CAAC,IAClB,IAAIK,EAAOD,SAASE,aAAa,CAAC,QAElCD,EAAKE,IAAI,CAAG,WACZF,EAAKG,GAAG,CAAG,aACXH,EAAKI,IAAI,CAAGR,EAEZE,EAAKO,WAAW,CAACL,EACnB,EACF,CACF,EAEMM,EAAa,IACjB,GAAM,KACJC,CAAG,IACHC,CAAE,QACFC,EAAS,KAAO,CAAC,SACjBC,EAAU,IAAI,yBACdC,CAAuB,UACvBC,EAAW,EAAE,UACbC,EAAW,kBAAkB,SAC7BC,CAAO,aACPpB,CAAW,CACZ,CAAGqB,EAEEC,EAAWR,GAAMD,EAGvB,GAAIS,GAAY3B,EAAU4B,GAAG,CAACD,GAC5B,OAIF,CALyC,EAKrC7B,EAAY8B,GAAG,CAACV,GAAM,CACxBlB,EAAU6B,GAAG,CAACF,GAGd7B,EAAYgC,GAAG,CAACZ,GAAKa,IAAI,CAACX,EAAQK,GAClC,MACF,CAGA,IAAMO,EAAY,KAEZX,GACFA,IAGFrB,EAJa,GAIA,CAAC2B,EAChB,EAEMM,EAAKvB,SAASE,aAAa,CAAC,UAE5BsB,EAAc,IAAIC,QAAc,CAACC,EAASC,KAC9CJ,EAAGK,gBAAgB,CAAC,OAAQ,SAAUC,CAAC,EACrCH,IACIhB,GACFA,EAAOoB,GADG,CACC,CAAC,IAAI,CAAED,GAEpBP,GACF,GACAC,EAAGK,gBAAgB,CAAC,QAAS,SAAUC,CAAC,EACtCF,EAAOE,EACT,EACF,GAAGE,KAAK,CAAC,SAAUF,CAAC,EACdd,GACFA,EAAQc,EAEZ,EAHe,CAKXjB,GAEFW,EAAGS,SAAS,CAAIpB,EAAwBqB,MAAM,EAAe,GAE7DX,KACST,GACTU,EAAGW,KADgB,MACL,CACQ,UAApB,OAAOrB,EACHA,EACAsB,MAAMC,OAAO,CAACvB,GACZA,EAASwB,IAAI,CAAC,IACd,GAERf,KACSd,IACTe,CADc,CACXf,GAAG,CAAGA,EAITpB,EAAYkD,GAAG,CAAC9B,EAAKgB,IAGvBe,GAAAA,EAAAA,sBAAAA,EAAuBhB,EAAIP,GAEV,UAAU,CAAvBF,GACFS,EAAGiB,YAAY,CAAC,OAAQ,kBAG1BjB,EAAGiB,YAAY,CAAC,eAAgB1B,GAG5BnB,GACFH,EAAkBG,GAGpBK,KAJiB,IAIRyC,IAAI,CAACnC,WAAW,CAACiB,EAC5B,EAEO,SAASrC,EAAuB8B,CAAkB,EACvD,GAAM,UAAEF,EAAW,kBAAkB,CAAE,CAAGE,EACzB,cAAc,CAA3BF,EACF4B,OAAOd,gBAAgB,CAAC,OAAQ,KAC9Be,GAAAA,EAAAA,mBAAAA,EAAoB,IAAMpC,EAAWS,GACvC,GAEAT,EAAWS,EAEf,CAuBO,SAAS7B,EAAiByD,CAAgC,EAC/DA,EAAkBhD,OAAO,CAACV,GAP1B2D,IAHK7C,SAAS8C,gBAAgB,CAAC,yCAC1B9C,SAAS8C,gBAAgB,CAAC,qCAC9B,CACOlD,OAAO,CAAC,IACd,IAAMqB,EAAW8B,EAAOtC,EAAE,EAAIsC,EAAOC,YAAY,CAAC,OAClD1D,EAAU6B,GAAG,CAACF,EAChB,EAMF,CAOA,SAASgC,EAAOjC,CAAkB,EAChC,GAAM,IACJP,CAAE,KACFD,EAAM,EAAE,QACRE,EAAS,KAAO,CAAC,SACjBC,EAAU,IAAI,UACdG,EAAW,kBAAkB,CAC7BC,SAAO,aACPpB,CAAW,CACX,GAAGuD,EACJ,CAAGlC,EAGE,eAAEmC,CAAa,SAAEN,CAAO,UAAEO,CAAQ,QAAEC,CAAM,OAAEC,CAAK,CAAE,CACvDC,CAAAA,EAAAA,EAAAA,UAAAA,EAAWC,EAAAA,kBAAkB,EA4BzBC,EAAyBC,CAAAA,EAAAA,EAAAA,MAAAA,EAAO,IAEtCC,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,KACR,IAAM1C,EAAWR,GAAMD,EAClBiD,EAAuBG,OAAO,EAAE,CAE/BjD,GAAWM,GAAY3B,EAAU4B,GAAG,CAACD,IACvCN,IAGF8C,EAAuBG,CAJ6B,MAItB,EAAG,EAErC,EAAG,CAACjD,EAASF,EAAID,EAAI,EAErB,IAAMqD,EAA4BH,CAAAA,EAAAA,EAAAA,MAAAA,GAAO,GAoCzC,GAlCAC,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,KACR,GAAI,CAACE,EAA0BD,OAAO,CAAE,CACtC,GAAI9C,oBAAiC,GACnCP,EAAWS,QACN,GAAiB,cAAc,CAA3BF,EA5Fa,YAAY,CAApCd,SAAS8D,UAAU,CACrBnB,GAAAA,EAAAA,mBAAAA,EAAoB,IAAMpC,EA4FPS,IA1FnB0B,KAFqC1B,EAE9BY,gBAAgB,CAAC,OAAQ,KAC9Be,CAAAA,EAAAA,EAAAA,mBAAAA,EAAoB,IAAMpC,KAC5B,GA2FEsD,EAA0BD,CA5FW5C,MA4FJ,EAAG,CACtC,CACF,EAAG,CAACA,EAAOF,EAAS,GAEH,sBAAbA,GAAiD,WAAbA,CAAa,GAAU,CACzDqC,GACFN,CAAO,CAAC/B,EAAS,CAAI+B,EAAO,CAAC/B,EAAS,EADrB,EACyB,EAAIiD,MAAM,CAAC,CACnD,IACEtD,MACAD,SACAE,UACAC,EACAI,UACA,GAAGmC,CAAS,EAEf,EACDC,EAAcN,IACLO,GAAYA,IAErB9D,EAAU6B,GAAG,CAACV,EAFmB,CAEbD,GACX4C,GAAY,CAACA,KACtB7C,EAAWS,IAKXqC,CANkC,CAM1B,CAkBV,GARI1D,GACFA,EAAYC,OAAO,CADJ,IAEbH,EAAAA,OAAQ,CAACC,OAAO,CAACsE,EAAU,CAAElE,GAAI,OAAQ,EAC3C,GAKe,qBAAqB,CAAlCgB,SACF,GAsBErB,CAtBE,CAAM,OAsBA,CAACwE,OAAO,CACdzD,EACA0C,EAAUgB,SAAS,CACf,CACEpE,GAAI,SACJoE,UAAWhB,EAAUgB,SAAS,OAC9BZ,EACAa,YAAajB,EAAUiB,WAAW,EAEpC,CAAErE,GAAI,eAAUwD,EAAOa,YAAajB,EAAUiB,WAAW,GAG7D,UAACpB,SAAAA,CACCO,MAAOA,EACP1C,wBAAyB,CACvBqB,OAAS,0CAAyCmC,KAAKC,SAAS,CAAC,CAC/D7D,EACA,CAAE,GAAG0C,CAAS,IAAEzC,CAAG,EACpB,EAAE,GACL,MAvCAyC,EAAUtC,uBAAuB,EAAE,CAErCsC,EAAUrC,QAAQ,CAAGqC,EAAUtC,uBAAuB,CACnDqB,MAAM,CACT,OAAOiB,EAAUtC,uBAAuB,EAIxC,UAACmC,SAAAA,CACCO,MAAOA,EACP1C,wBAAyB,CACvBqB,OAAS,0CAAyCmC,KAAKC,SAAS,CAAC,CAC/D,EACA,CAAE,GAAGnB,CAAS,IAAEzC,CAAG,EACpB,EAAE,GACL,KA4BgB,oBAAoB,CAAjCK,GACLN,GAEFf,EAAAA,OAAQ,CAACwE,OAAO,CACdzD,EACA0C,EAAUgB,SAAS,CACf,CACEpE,GAAI,SACJoE,UAAWhB,EAAUgB,SAAS,OAC9BZ,EACAa,YAAajB,EAAUiB,WAAW,EAEpC,CAAErE,GAAI,eAAUwD,EAAOa,YAAajB,EAAUiB,WAAW,EAIrE,CAEA,OAAO,IACT,CAEAG,OAAOC,cAAc,CAACtB,EAAQ,eAAgB,CAAEuB,MAAO,EAAK,OAE5D,EAAevB,4XCzWFwB,kBAAkB,mBAAlBA,GAhBA9B,mBAAmB,mBAAnBA,KAAN,IAAMA,EACV,oBAAO+B,MACNA,KAAK/B,mBAAmB,EACxB+B,KAAK/B,mBAAmB,CAACgC,IAAI,CAACjC,SAChC,SAAUkC,CAAuB,EAC/B,IAAIC,EAAQC,KAAKC,GAAG,GACpB,OAAOL,KAAKM,UAAU,CAAC,WACrBJ,EAAG,CACDK,YAAY,EACZC,cAAe,WACb,OAAOC,KAAKC,GAAG,CAAC,EAAG,IAAMN,CAAAA,IAAKC,GAAG,GAAKF,CAAAA,CAAAA,CAAI,CAE9C,EACF,EAAG,EACL,EAEWJ,EACM,aAAhB,OAAOC,MACNA,KAAKD,kBAAkB,EACvBC,KAAKD,kBAAkB,CAACE,IAAI,CAACjC,SAC/B,SAAUjC,CAAU,EAClB,OAAO4E,aAAa5E,EACtB,uVCEc8B,qCAAAA,KAxBhB,IAAM+C,EAA4C,CAChDC,cAAe,iBACfC,UAAW,QACXC,QAAS,MACTC,UAAW,aACXC,SAAU,UACZ,EAEMC,EAAc,CAClB,SACA,UACA,0BACA,WACA,UACA,WACA,cACD,CAED,SAASC,EACPC,CAAY,EAEZ,MAAO,CAAC,QAAS,QAAS,WAAW,CAACC,QAAQ,CAACD,EACjD,CAEO,SAASvD,EAAuBhB,CAAe,CAAEP,CAAa,EACnE,IAAK,GAAM,CAACgF,EAAGxB,EAAM,GAAIF,OAAO2B,OAAO,CAACjF,GAAQ,CAC9C,GAAI,CAACA,EAAMkF,cAAc,CAACF,IACtBJ,EAAYG,QAAQ,CAACC,IAAI,KAGfG,IAAV3B,EAJ0B,KAIL,IAIzB,IAAMsB,EAAOR,CAAiB,CAACU,EAAE,EAAIA,EAAEI,WAAW,GAE/B,WAAf7E,EAAG8E,OAAO,EAAiBR,EAAyBC,GAGpDvE,CAAwB,CAACuE,EAHkC,CAG1B,CAAC,CAACtB,EAErCjD,EAAGiB,YAAY,CAACsD,EAAMQ,OAAO9B,MAMnB,IAAVA,GACgB,WAAfjD,EAAG8E,OAAO,EACTR,EAAyBC,IACxB,EAACtB,GAAD,WAAoB,EAAM,EAC7B,CAGAjD,EAAGiB,YAAY,CAACsD,EAAM,IACtBvE,EAAGgF,eAAe,CAACT,GAEvB,CACF","sources":["webpack://_N_E/?efcb","webpack://_N_E/../ui-library/src/styles/globals.css?f55d","webpack://_N_E/../../src/client/script.tsx","webpack://_N_E/../../src/client/request-idle-callback.ts","webpack://_N_E/../../src/client/set-attributes-from-props.ts","webpack://_N_E/../../node_modules/.pnpm/@fontsource-variable+open-sans@5.1.1/node_modules/@fontsource-variable/open-sans/index.css"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/node_modules/.pnpm/@fontsource-variable+open-sans@5.1.1/node_modules/@fontsource-variable/open-sans/index.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/node_modules/.pnpm/next@15.2.4_@opentelemetry+api@1.9.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/next/dist/client/image-component.js\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/node_modules/.pnpm/next@15.2.4_@opentelemetry+api@1.9.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/next/dist/client/script.js\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/assets/resources/BBA/BBA_Winner_Best_British_bank.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/assets/resources/BBA/BBA_Winner_Best_current_account_provider.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/assets/resources/BBA/BBA_Winner_Best_savings_provider.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/assets/resources/CASS/CASS_logo.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/components/animations/error-404.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/components/animations/generic-error.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/components/animations/phone-permissions.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/components/app-store-button/app-store-button.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/components/assert-rehydration/assert-rehydration.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/components/consent-modal/consent-modal-link.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/components/consent-modal/consent-modal.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/components/download-link/download-link.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/components/download-panel/download-panel.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/components/download-qr-code/download-qr-code.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/components/header-cta/header-cta.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/components/insights/insights.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/components/link/link.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/components/notifications/notification.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/components/share-widget/share-widget.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/components/skip-to-main-content-button/skip-to-main-content-button.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"InlineFeatureFlag\"] */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/next/src/lib/parse-content/components/inline-feature-flag/inline-feature-flag.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/atoms/dialog/dialog.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/atoms/hamburger-icon/hamburger-icon.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/atoms/qr-code/qr-code.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/atoms/screen-reader/screen-reader.ts\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/atoms/scroll-top-button/scroll-top-button.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/atoms/toast/toast.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/atoms/toggle/toggle.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/molecules/accordion/accordion.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/molecules/carousel/carousel.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/molecules/feature-text/feature-text.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/molecules/full-width-feature/full-width-feature.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/molecules/info-block/info-block.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/molecules/modal/modal.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/molecules/navigation/navigation.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/molecules/popover/popover.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/molecules/select/select.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/molecules/tabs/tabs.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/jenkins/agent/workspace/artech_chaseweb-ui-gatsby_master/packages/ui-library/src/styles/globals.css\");\n","// extracted by mini-css-extract-plugin","'use client'\n\nimport ReactDOM from 'react-dom'\nimport React, { useEffect, useContext, useRef, type JSX } from 'react'\nimport type { ScriptHTMLAttributes } from 'react'\nimport { HeadManagerContext } from '../shared/lib/head-manager-context.shared-runtime'\nimport { setAttributesFromProps } from './set-attributes-from-props'\nimport { requestIdleCallback } from './request-idle-callback'\n\nconst ScriptCache = new Map()\nconst LoadCache = new Set()\n\nexport interface ScriptProps extends ScriptHTMLAttributes {\n strategy?: 'afterInteractive' | 'lazyOnload' | 'beforeInteractive' | 'worker'\n id?: string\n onLoad?: (e: any) => void\n onReady?: () => void | null\n onError?: (e: any) => void\n children?: React.ReactNode\n stylesheets?: string[]\n}\n\n/**\n * @deprecated Use `ScriptProps` instead.\n */\nexport type Props = ScriptProps\n\nconst insertStylesheets = (stylesheets: string[]) => {\n // Case 1: Styles for afterInteractive/lazyOnload with appDir injected via handleClientScriptLoad\n //\n // Using ReactDOM.preinit to feature detect appDir and inject styles\n // Stylesheets might have already been loaded if initialized with Script component\n // Re-inject styles here to handle scripts loaded via handleClientScriptLoad\n // ReactDOM.preinit handles dedup and ensures the styles are loaded only once\n if (ReactDOM.preinit) {\n stylesheets.forEach((stylesheet: string) => {\n ReactDOM.preinit(stylesheet, { as: 'style' })\n })\n\n return\n }\n\n // Case 2: Styles for afterInteractive/lazyOnload with pages injected via handleClientScriptLoad\n //\n // We use this function to load styles when appdir is not detected\n // TODO: Use React float APIs to load styles once available for pages dir\n if (typeof window !== 'undefined') {\n let head = document.head\n stylesheets.forEach((stylesheet: string) => {\n let link = document.createElement('link')\n\n link.type = 'text/css'\n link.rel = 'stylesheet'\n link.href = stylesheet\n\n head.appendChild(link)\n })\n }\n}\n\nconst loadScript = (props: ScriptProps): void => {\n const {\n src,\n id,\n onLoad = () => {},\n onReady = null,\n dangerouslySetInnerHTML,\n children = '',\n strategy = 'afterInteractive',\n onError,\n stylesheets,\n } = props\n\n const cacheKey = id || src\n\n // Script has already loaded\n if (cacheKey && LoadCache.has(cacheKey)) {\n return\n }\n\n // Contents of this script are already loading/loaded\n if (ScriptCache.has(src)) {\n LoadCache.add(cacheKey)\n // It is possible that multiple `next/script` components all have same \"src\", but has different \"onLoad\"\n // This is to make sure the same remote script will only load once, but \"onLoad\" are executed in order\n ScriptCache.get(src).then(onLoad, onError)\n return\n }\n\n /** Execute after the script first loaded */\n const afterLoad = () => {\n // Run onReady for the first time after load event\n if (onReady) {\n onReady()\n }\n // add cacheKey to LoadCache when load successfully\n LoadCache.add(cacheKey)\n }\n\n const el = document.createElement('script')\n\n const loadPromise = new Promise((resolve, reject) => {\n el.addEventListener('load', function (e) {\n resolve()\n if (onLoad) {\n onLoad.call(this, e)\n }\n afterLoad()\n })\n el.addEventListener('error', function (e) {\n reject(e)\n })\n }).catch(function (e) {\n if (onError) {\n onError(e)\n }\n })\n\n if (dangerouslySetInnerHTML) {\n // Casting since lib.dom.d.ts doesn't have TrustedHTML yet.\n el.innerHTML = (dangerouslySetInnerHTML.__html as string) || ''\n\n afterLoad()\n } else if (children) {\n el.textContent =\n typeof children === 'string'\n ? children\n : Array.isArray(children)\n ? children.join('')\n : ''\n\n afterLoad()\n } else if (src) {\n el.src = src\n // do not add cacheKey into LoadCache for remote script here\n // cacheKey will be added to LoadCache when it is actually loaded (see loadPromise above)\n\n ScriptCache.set(src, loadPromise)\n }\n\n setAttributesFromProps(el, props)\n\n if (strategy === 'worker') {\n el.setAttribute('type', 'text/partytown')\n }\n\n el.setAttribute('data-nscript', strategy)\n\n // Load styles associated with this script\n if (stylesheets) {\n insertStylesheets(stylesheets)\n }\n\n document.body.appendChild(el)\n}\n\nexport function handleClientScriptLoad(props: ScriptProps) {\n const { strategy = 'afterInteractive' } = props\n if (strategy === 'lazyOnload') {\n window.addEventListener('load', () => {\n requestIdleCallback(() => loadScript(props))\n })\n } else {\n loadScript(props)\n }\n}\n\nfunction loadLazyScript(props: ScriptProps) {\n if (document.readyState === 'complete') {\n requestIdleCallback(() => loadScript(props))\n } else {\n window.addEventListener('load', () => {\n requestIdleCallback(() => loadScript(props))\n })\n }\n}\n\nfunction addBeforeInteractiveToCache() {\n const scripts = [\n ...document.querySelectorAll('[data-nscript=\"beforeInteractive\"]'),\n ...document.querySelectorAll('[data-nscript=\"beforePageRender\"]'),\n ]\n scripts.forEach((script) => {\n const cacheKey = script.id || script.getAttribute('src')\n LoadCache.add(cacheKey)\n })\n}\n\nexport function initScriptLoader(scriptLoaderItems: ScriptProps[]) {\n scriptLoaderItems.forEach(handleClientScriptLoad)\n addBeforeInteractiveToCache()\n}\n\n/**\n * Load a third-party scripts in an optimized way.\n *\n * Read more: [Next.js Docs: `next/script`](https://nextjs.org/docs/app/api-reference/components/script)\n */\nfunction Script(props: ScriptProps): JSX.Element | null {\n const {\n id,\n src = '',\n onLoad = () => {},\n onReady = null,\n strategy = 'afterInteractive',\n onError,\n stylesheets,\n ...restProps\n } = props\n\n // Context is available only during SSR\n const { updateScripts, scripts, getIsSsr, appDir, nonce } =\n useContext(HeadManagerContext)\n\n /**\n * - First mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script hasn't loaded yet (not in LoadCache)\n * onReady is skipped, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. hasLoadScriptEffectCalled.current is false, loadScript executes\n * Once the script is loaded, the onLoad and onReady will be called by then\n * [If strict mode is enabled / is wrapped in component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n *\n * - Second mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script has already loaded (found in LoadCache)\n * onReady is called, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. The script is already loaded, loadScript bails out\n * [If strict mode is enabled / is wrapped in component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n */\n const hasOnReadyEffectCalled = useRef(false)\n\n useEffect(() => {\n const cacheKey = id || src\n if (!hasOnReadyEffectCalled.current) {\n // Run onReady if script has loaded before but component is re-mounted\n if (onReady && cacheKey && LoadCache.has(cacheKey)) {\n onReady()\n }\n\n hasOnReadyEffectCalled.current = true\n }\n }, [onReady, id, src])\n\n const hasLoadScriptEffectCalled = useRef(false)\n\n useEffect(() => {\n if (!hasLoadScriptEffectCalled.current) {\n if (strategy === 'afterInteractive') {\n loadScript(props)\n } else if (strategy === 'lazyOnload') {\n loadLazyScript(props)\n }\n\n hasLoadScriptEffectCalled.current = true\n }\n }, [props, strategy])\n\n if (strategy === 'beforeInteractive' || strategy === 'worker') {\n if (updateScripts) {\n scripts[strategy] = (scripts[strategy] || []).concat([\n {\n id,\n src,\n onLoad,\n onReady,\n onError,\n ...restProps,\n },\n ])\n updateScripts(scripts)\n } else if (getIsSsr && getIsSsr()) {\n // Script has already loaded during SSR\n LoadCache.add(id || src)\n } else if (getIsSsr && !getIsSsr()) {\n loadScript(props)\n }\n }\n\n // For the app directory, we need React Float to preload these scripts.\n if (appDir) {\n // Injecting stylesheets here handles beforeInteractive and worker scripts correctly\n // For other strategies injecting here ensures correct stylesheet order\n // ReactDOM.preinit handles loading the styles in the correct order,\n // also ensures the stylesheet is loaded only once and in a consistent manner\n //\n // Case 1: Styles for beforeInteractive/worker with appDir - handled here\n // Case 2: Styles for beforeInteractive/worker with pages dir - Not handled yet\n // Case 3: Styles for afterInteractive/lazyOnload with appDir - handled here\n // Case 4: Styles for afterInteractive/lazyOnload with pages dir - handled in insertStylesheets function\n if (stylesheets) {\n stylesheets.forEach((styleSrc) => {\n ReactDOM.preinit(styleSrc, { as: 'style' })\n })\n }\n\n // Before interactive scripts need to be loaded by Next.js' runtime instead\n // of native