@stfrigerio/sito-template 0.1.36 → 0.1.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/setup.d.ts +2 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/components/atoms/AllAtoms.stories.d.ts +1 -1
- package/dist/components/atoms/AllAtoms.stories.d.ts.map +1 -1
- package/dist/components/atoms/Button/Button.stories.d.ts +2 -14
- package/dist/components/atoms/Button/Button.stories.d.ts.map +1 -1
- package/dist/components/atoms/Card/Card.stories.d.ts +4 -23
- package/dist/components/atoms/Card/Card.stories.d.ts.map +1 -1
- package/dist/components/atoms/Checkbox/Checkbox.stories.d.ts +1 -1
- package/dist/components/atoms/Checkbox/Checkbox.stories.d.ts.map +1 -1
- package/dist/components/atoms/DateInput/DateInput.d.ts +1 -1
- package/dist/components/atoms/DateInput/DateInput.d.ts.map +1 -1
- package/dist/components/atoms/DateInput/DateInput.stories.d.ts +1 -1
- package/dist/components/atoms/DateInput/DateInput.stories.d.ts.map +1 -1
- package/dist/components/atoms/DecryptedText/DecryptedText.d.ts +50 -0
- package/dist/components/atoms/DecryptedText/DecryptedText.d.ts.map +1 -0
- package/dist/components/atoms/DecryptedText/index.d.ts +3 -0
- package/dist/components/atoms/DecryptedText/index.d.ts.map +1 -0
- package/dist/components/atoms/LoadingSpinner/LoadingSpinner.d.ts.map +1 -1
- package/dist/components/atoms/LoadingSpinner/LoadingSpinner.stories.d.ts +1 -1
- package/dist/components/atoms/LoadingSpinner/LoadingSpinner.stories.d.ts.map +1 -1
- package/dist/components/atoms/NumberStepper/NumberStepper.d.ts.map +1 -1
- package/dist/components/atoms/NumberStepper/NumberStepper.stories.d.ts +1 -1
- package/dist/components/atoms/NumberStepper/NumberStepper.stories.d.ts.map +1 -1
- package/dist/components/atoms/SearchableDropdown/SearchableDropdown.stories.d.ts +1 -1
- package/dist/components/atoms/SearchableDropdown/SearchableDropdown.stories.d.ts.map +1 -1
- package/dist/components/atoms/SelectInput/SelectInput.d.ts +4 -2
- package/dist/components/atoms/SelectInput/SelectInput.d.ts.map +1 -1
- package/dist/components/atoms/Slider/Slider.stories.d.ts +2 -10
- package/dist/components/atoms/Slider/Slider.stories.d.ts.map +1 -1
- package/dist/components/atoms/SoundDemo/SoundDemo.d.ts +11 -0
- package/dist/components/atoms/SoundDemo/SoundDemo.d.ts.map +1 -0
- package/dist/components/atoms/SoundDemo/SoundDemo.stories.d.ts +1 -1
- package/dist/components/atoms/SoundDemo/SoundDemo.stories.d.ts.map +1 -1
- package/dist/components/atoms/TextArea/TextArea.d.ts.map +1 -1
- package/dist/components/atoms/TextArea/TextArea.stories.d.ts +1 -1
- package/dist/components/atoms/TextArea/TextArea.stories.d.ts.map +1 -1
- package/dist/components/atoms/TextInput/TextInput.d.ts +1 -1
- package/dist/components/atoms/TextInput/TextInput.d.ts.map +1 -1
- package/dist/components/atoms/TextInput/TextInput.stories.d.ts +1 -4
- package/dist/components/atoms/TextInput/TextInput.stories.d.ts.map +1 -1
- package/dist/components/atoms/Toggle/Toggle.d.ts +5 -4
- package/dist/components/atoms/Toggle/Toggle.d.ts.map +1 -1
- package/dist/components/atoms/Toggle/Toggle.stories.d.ts +1 -1
- package/dist/components/atoms/Toggle/Toggle.stories.d.ts.map +1 -1
- package/dist/components/atoms/ToggleButton/ToggleButton.stories.d.ts +1 -1
- package/dist/components/atoms/ToggleButton/ToggleButton.stories.d.ts.map +1 -1
- package/dist/components/atoms/index.d.ts +2 -0
- package/dist/components/atoms/index.d.ts.map +1 -1
- package/dist/components/molecules/ArrayInput/ArrayInput.d.ts +3 -3
- package/dist/components/molecules/ArrayInput/ArrayInput.d.ts.map +1 -1
- package/dist/components/molecules/ArrayInput/ArrayInput.stories.d.ts +1 -1
- package/dist/components/molecules/ArrayInput/ArrayInput.stories.d.ts.map +1 -1
- package/dist/components/molecules/Breadcrumb/Breadcrumb.d.ts +28 -0
- package/dist/components/molecules/Breadcrumb/Breadcrumb.d.ts.map +1 -0
- package/dist/components/molecules/Breadcrumb/index.d.ts +3 -0
- package/dist/components/molecules/Breadcrumb/index.d.ts.map +1 -0
- package/dist/components/molecules/EditFAB/EditFAB.stories.d.ts +1 -1
- package/dist/components/molecules/EditFAB/EditFAB.stories.d.ts.map +1 -1
- package/dist/components/molecules/LiquidButton/LiquidButton.d.ts +33 -0
- package/dist/components/molecules/LiquidButton/LiquidButton.d.ts.map +1 -0
- package/dist/components/molecules/LiquidButton/index.d.ts +3 -0
- package/dist/components/molecules/LiquidButton/index.d.ts.map +1 -0
- package/dist/components/molecules/SearchBar/SearchBar.stories.d.ts +1 -1
- package/dist/components/molecules/SearchBar/SearchBar.stories.d.ts.map +1 -1
- package/dist/components/molecules/Tabs/Tabs.d.ts +1 -1
- package/dist/components/molecules/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/molecules/Tabs/Tabs.stories.d.ts +1 -1
- package/dist/components/molecules/Tabs/Tabs.stories.d.ts.map +1 -1
- package/dist/components/molecules/ThemeSwitcher/ThemeSwitcher.d.ts +4 -3
- package/dist/components/molecules/ThemeSwitcher/ThemeSwitcher.d.ts.map +1 -1
- package/dist/components/molecules/ThemeSwitcher/ThemeSwitcher.stories.d.ts +1 -1
- package/dist/components/molecules/ThemeSwitcher/ThemeSwitcher.stories.d.ts.map +1 -1
- package/dist/components/molecules/TimeInput/TimeInput.stories.d.ts +1 -1
- package/dist/components/molecules/TimeInput/TimeInput.stories.d.ts.map +1 -1
- package/dist/components/molecules/Toast/Toast.d.ts +16 -0
- package/dist/components/molecules/Toast/Toast.d.ts.map +1 -0
- package/dist/components/molecules/Toast/index.d.ts +3 -0
- package/dist/components/molecules/Toast/index.d.ts.map +1 -0
- package/dist/components/molecules/index.d.ts +6 -0
- package/dist/components/molecules/index.d.ts.map +1 -1
- package/dist/components/organisms/Calendar/Calendar.d.ts +1 -1
- package/dist/components/organisms/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/organisms/Calendar/Calendar.stories.d.ts +1 -1
- package/dist/components/organisms/Calendar/Calendar.stories.d.ts.map +1 -1
- package/dist/components/organisms/ConfirmationModal/ConfirmationModal.d.ts +30 -0
- package/dist/components/organisms/ConfirmationModal/ConfirmationModal.d.ts.map +1 -0
- package/dist/components/organisms/ConfirmationModal/index.d.ts +3 -0
- package/dist/components/organisms/ConfirmationModal/index.d.ts.map +1 -0
- package/dist/components/organisms/ImageSlideshow/ImageSlideshow.d.ts +1 -1
- package/dist/components/organisms/ImageSlideshow/ImageSlideshow.d.ts.map +1 -1
- package/dist/components/organisms/ImageSlideshow/ImageSlideshow.stories.d.ts +1 -6
- package/dist/components/organisms/ImageSlideshow/ImageSlideshow.stories.d.ts.map +1 -1
- package/dist/components/organisms/Navbar/Navbar.d.ts +3 -2
- package/dist/components/organisms/Navbar/Navbar.d.ts.map +1 -1
- package/dist/components/organisms/Navbar/Navbar.stories.d.ts +1 -1
- package/dist/components/organisms/Navbar/Navbar.stories.d.ts.map +1 -1
- package/dist/components/organisms/Table/Table.d.ts +6 -6
- package/dist/components/organisms/Table/Table.d.ts.map +1 -1
- package/dist/components/organisms/Table/Table.stories.d.ts +26 -14
- package/dist/components/organisms/Table/Table.stories.d.ts.map +1 -1
- package/dist/components/organisms/ThemeProvider/ThemeProvider.d.ts +3 -1
- package/dist/components/organisms/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/components/organisms/charts/BooleansHeatmap/BooleansHeatmap.d.ts.map +1 -1
- package/dist/components/organisms/charts/BooleansHeatmap/BooleansHeatmap.stories.d.ts +1 -1
- package/dist/components/organisms/charts/BooleansHeatmap/BooleansHeatmap.stories.d.ts.map +1 -1
- package/dist/components/organisms/charts/MoodChart/MoodChart.stories.d.ts +1 -1
- package/dist/components/organisms/charts/MoodChart/MoodChart.stories.d.ts.map +1 -1
- package/dist/components/organisms/charts/PieChart/PieChart.d.ts.map +1 -1
- package/dist/components/organisms/charts/PieChart/PieChart.stories.d.ts +1 -1
- package/dist/components/organisms/charts/PieChart/PieChart.stories.d.ts.map +1 -1
- package/dist/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.d.ts +2 -0
- package/dist/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.d.ts.map +1 -1
- package/dist/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.stories.d.ts +1 -1
- package/dist/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.stories.d.ts.map +1 -1
- package/dist/components/organisms/charts/SleepChart/SleepChart.stories.d.ts +1 -1
- package/dist/components/organisms/charts/SleepChart/SleepChart.stories.d.ts.map +1 -1
- package/dist/components/organisms/charts/SunburstChart/SunburstChart.d.ts.map +1 -1
- package/dist/components/organisms/charts/SunburstChart/SunburstChart.stories.d.ts +1 -1
- package/dist/components/organisms/charts/SunburstChart/SunburstChart.stories.d.ts.map +1 -1
- package/dist/components/organisms/index.d.ts +3 -1
- package/dist/components/organisms/index.d.ts.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +791 -490
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +809 -502
- package/dist/index.js.map +1 -1
- package/dist/stories/utils.d.ts +2 -2
- package/dist/stories/utils.d.ts.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/dist/themes/default.css +47 -0
- package/dist/themes/dmood.css +46 -0
- package/dist/themes/globals.css +110 -0
- package/dist/themes/lossito.css +52 -0
- package/dist/tokens/tokens.css +79 -0
- package/dist/utils/formUtils.d.ts +0 -5
- package/dist/utils/formUtils.d.ts.map +1 -1
- package/package.json +32 -10
- package/storybook-static/addon-visual-tests-assets/visual-test-illustration.mp4 +0 -0
- package/storybook-static/assets/3d/bar.glb +0 -0
- package/storybook-static/assets/3d/cube.glb +0 -0
- package/storybook-static/assets/3d/lens.glb +0 -0
- package/storybook-static/assets/ASCIIText.stories-C2xDENP3.js +82 -0
- package/storybook-static/assets/AllAtoms.stories-B6sDWol9.js +109 -0
- package/storybook-static/assets/AnimatedContent.stories-BsmULV3s.js +18 -0
- package/storybook-static/assets/AnimatedList-B3_lNwJZ.css +1 -0
- package/storybook-static/assets/AnimatedList.stories-CpaOS5Tg.js +26 -0
- package/storybook-static/assets/Antigravity.stories-Bt6bMzsu.js +19 -0
- package/storybook-static/assets/ArrayInput-CkUpk1TR.css +1 -0
- package/storybook-static/assets/ArrayInput.stories-DWAGBtBK.js +232 -0
- package/storybook-static/assets/Aurora-JSo3CGBi.css +1 -0
- package/storybook-static/assets/Aurora.stories-D2saYiRk.js +97 -0
- package/storybook-static/assets/Beams-BaZopjLr.css +1 -0
- package/storybook-static/assets/Beams.stories-BnM_wPsm.js +122 -0
- package/storybook-static/assets/BlobCursor-sr9FxN5W.css +1 -0
- package/storybook-static/assets/BlobCursor.stories-DDxFJs49.js +24 -0
- package/storybook-static/assets/BlurText.stories-Bpt2Pxty.js +11 -0
- package/storybook-static/assets/BooleansHeatmap-BV4VTyo6.css +1 -0
- package/storybook-static/assets/BooleansHeatmap.stories-3npXygec.js +123 -0
- package/storybook-static/assets/BorderGlow-BkXv9hP6.css +1 -0
- package/storybook-static/assets/BorderGlow.stories-Ctdci-vM.js +15 -0
- package/storybook-static/assets/BubbleMenu-C856-Amm.css +1 -0
- package/storybook-static/assets/BubbleMenu.stories-D0BfU9Sn.js +57 -0
- package/storybook-static/assets/Button-Bkr9S309.js +37 -0
- package/storybook-static/assets/Button-O-w2-ag3.css +1 -0
- package/storybook-static/assets/Button.stories-9jnfGkHf.js +93 -0
- package/storybook-static/assets/Calendar-BSjjdOp3.css +1 -0
- package/storybook-static/assets/Calendar.stories-Bv76X2vb.js +470 -0
- package/storybook-static/assets/Camera-BM3HOhP6.js +1 -0
- package/storybook-static/assets/Card-BLzDBn78.js +49 -0
- package/storybook-static/assets/Card-BxyVZ-1r.css +1 -0
- package/storybook-static/assets/Card.stories-BbHJW4z7.js +127 -0
- package/storybook-static/assets/CardNav-DJBuAE3a.css +1 -0
- package/storybook-static/assets/CardNav.stories-0AGDiezF.js +55 -0
- package/storybook-static/assets/Carousel-DQYq51gd.css +1 -0
- package/storybook-static/assets/Carousel.stories-TJ2kpedN.js +58 -0
- package/storybook-static/assets/Checkbox-CpADrZij.js +33 -0
- package/storybook-static/assets/Checkbox-DMUHtq9s.css +1 -0
- package/storybook-static/assets/Checkbox.stories-RTwjfwnG.js +83 -0
- package/storybook-static/assets/ChromaGrid-DuVAYWII.css +1 -0
- package/storybook-static/assets/ChromaGrid.stories-BQ3E28Hi.js +59 -0
- package/storybook-static/assets/CircularGallery-Dw0kM5fT.css +1 -0
- package/storybook-static/assets/CircularGallery.stories-DJqMMKX-.js +95 -0
- package/storybook-static/assets/CircularText-DofQkQcn.css +1 -0
- package/storybook-static/assets/CircularText.stories-BFdO2vvu.js +7 -0
- package/storybook-static/assets/ClickSpark.stories-C9eRAhrL.js +12 -0
- package/storybook-static/assets/Color-AVL7NMMY-_tP8XmFH.js +1 -0
- package/storybook-static/assets/Color-YRkaOI4u.js +1 -0
- package/storybook-static/assets/ColorBends-BkbPScKk.css +1 -0
- package/storybook-static/assets/ColorBends.stories-BzjHvboa.js +103 -0
- package/storybook-static/assets/CountUp.stories-C4KGivWd.js +11 -0
- package/storybook-static/assets/Counter-NM41Ofe9.css +1 -0
- package/storybook-static/assets/Counter.stories-D0YBBEvJ.js +15 -0
- package/storybook-static/assets/Crosshair.stories-DM0VkVrQ.js +6 -0
- package/storybook-static/assets/Cubes-BbZLRUsz.css +1 -0
- package/storybook-static/assets/Cubes.stories-CDK6pjAy.js +1 -0
- package/storybook-static/assets/CurvedLoop-DyoDI-mm.css +1 -0
- package/storybook-static/assets/CurvedLoop.stories-gsnw1c_E.js +9 -0
- package/storybook-static/assets/DarkVeil-CeIthsg1.css +1 -0
- package/storybook-static/assets/DarkVeil.stories-C5L7QoIF.js +79 -0
- package/storybook-static/assets/DateInput-C4-Rlnpy.css +1 -0
- package/storybook-static/assets/DateInput-DDPZqyBR.js +38 -0
- package/storybook-static/assets/DateInput.stories-B2N9buuW.js +119 -0
- package/storybook-static/assets/DecayCard-2Nc9J_8G.css +1 -0
- package/storybook-static/assets/DecayCard.stories-YGHrmyBt.js +8 -0
- package/storybook-static/assets/DecryptedText.stories-B5x1eEwu.js +15 -0
- package/storybook-static/assets/Dither-CDTFjgCl.css +1 -0
- package/storybook-static/assets/Dither.stories-1NJxvHAv.js +134 -0
- package/storybook-static/assets/Dock-DwLYexgF.css +1 -0
- package/storybook-static/assets/Dock.stories-BkL_Ddtn.js +40 -0
- package/storybook-static/assets/DocsRenderer-PQXLIZUC-e7izZ1Ax.js +1243 -0
- package/storybook-static/assets/EditFAB-CntUhqRB.css +1 -0
- package/storybook-static/assets/EditFAB.stories-CHva2s7W.js +378 -0
- package/storybook-static/assets/EvilEye-QIF3Ik1Y.css +1 -0
- package/storybook-static/assets/EvilEye.stories-QosS4nGr.js +103 -0
- package/storybook-static/assets/FadeContent.stories-CQDQC3hl.js +14 -0
- package/storybook-static/assets/FaultyTerminal-D6zQXJ-g.css +1 -0
- package/storybook-static/assets/FaultyTerminal.stories-CPrObG0w.js +224 -0
- package/storybook-static/assets/Fbo-CjO1EXQj.js +1 -0
- package/storybook-static/assets/FloatingLines-BPpNRsJk.css +1 -0
- package/storybook-static/assets/FloatingLines.stories-D3I_iw-g.js +187 -0
- package/storybook-static/assets/FlowingMenu-Cff-letA.css +1 -0
- package/storybook-static/assets/FlowingMenu.stories-BmR27_hE.js +27 -0
- package/storybook-static/assets/FluidGlass.stories-CrjfBTV6.js +490 -0
- package/storybook-static/assets/Folder-BFuU52Ao.css +1 -0
- package/storybook-static/assets/Folder.stories-DQJN6c0j.js +13 -0
- package/storybook-static/assets/FuzzyText.stories-zdwwY1Eh.js +22 -0
- package/storybook-static/assets/Galaxy-Cj2Xx-fN.css +1 -0
- package/storybook-static/assets/Galaxy.stories-B3moXy9j.js +184 -0
- package/storybook-static/assets/GhostCursor-CLKgvqwd.css +1 -0
- package/storybook-static/assets/GhostCursor.stories-l58_4Z7e.js +276 -0
- package/storybook-static/assets/GlareHover-D8gfoeb7.css +1 -0
- package/storybook-static/assets/GlareHover.stories-BRGDypMB.js +1 -0
- package/storybook-static/assets/GlassSurface-D51dj98P.css +1 -0
- package/storybook-static/assets/GlassSurface.stories-BghO_KVP.js +43 -0
- package/storybook-static/assets/GlitchText-CsL0nL6_.css +1 -0
- package/storybook-static/assets/GlitchText.stories-rGZAjXwr.js +8 -0
- package/storybook-static/assets/GooeyNav-8BBsSYWJ.css +1 -0
- package/storybook-static/assets/GooeyNav.stories-Ca-d0UXQ.js +24 -0
- package/storybook-static/assets/GradientBlinds-CBpfmlwu.css +1 -0
- package/storybook-static/assets/GradientBlinds.stories-BQDyziZr.js +136 -0
- package/storybook-static/assets/GradientText-Bsx4jZeS.css +1 -0
- package/storybook-static/assets/GradientText.stories-DgmckSCu.js +11 -0
- package/storybook-static/assets/Grainient.stories-8y3SuU8n.js +113 -0
- package/storybook-static/assets/GridMotion-GSkrJvrd.css +1 -0
- package/storybook-static/assets/GridMotion.stories-DbXQdTvS.js +6 -0
- package/storybook-static/assets/ImageSlideshow-CrquLxbj.css +1 -0
- package/storybook-static/assets/ImageSlideshow.stories-BXFPrrNl.js +385 -0
- package/storybook-static/assets/Iridescence-DkXB1G15.css +1 -0
- package/storybook-static/assets/Iridescence.stories-DuPTQ9Fo.js +47 -0
- package/storybook-static/assets/LaserFlow-YpDTX0s9.css +1 -0
- package/storybook-static/assets/LaserFlow.stories-DkwNBv4p.js +253 -0
- package/storybook-static/assets/LetterGlitch.stories-BqwpeJRY.js +1 -0
- package/storybook-static/assets/LightPillar-B1pSzH3x.css +1 -0
- package/storybook-static/assets/LightPillar.stories-BR4beWO5.js +103 -0
- package/storybook-static/assets/LightRays.stories-B3LIIkr4.js +114 -0
- package/storybook-static/assets/Lightning-Duov5diw.css +1 -0
- package/storybook-static/assets/Lightning.stories-DMfFw1rE.js +92 -0
- package/storybook-static/assets/LineWaves-CGZ5Tp0W.css +1 -0
- package/storybook-static/assets/LineWaves.stories-1wQVWsio.js +132 -0
- package/storybook-static/assets/LiquidChrome-C8jkHJD4.css +1 -0
- package/storybook-static/assets/LiquidChrome.stories-DjaXtUK6.js +60 -0
- package/storybook-static/assets/LiquidEther-BTKKmNQk.css +1 -0
- package/storybook-static/assets/LiquidEther.stories-CBrhorPT.js +161 -0
- package/storybook-static/assets/LoadingSpinner-1jvNgxlI.css +1 -0
- package/storybook-static/assets/LoadingSpinner-Cz1P0luX.js +49 -0
- package/storybook-static/assets/LoadingSpinner.stories-Es0dDszY.js +169 -0
- package/storybook-static/assets/MagicRings-B15iCWeD.css +1 -0
- package/storybook-static/assets/MagicRings.stories-BeLXvBv9.js +81 -0
- package/storybook-static/assets/Magnet.stories-CICXGf2j.js +12 -0
- package/storybook-static/assets/MagnetLines-BMVF8tvL.css +1 -0
- package/storybook-static/assets/MagnetLines.stories-D6mS1H0S.js +1 -0
- package/storybook-static/assets/Masonry-JijTuZ6o.css +1 -0
- package/storybook-static/assets/Masonry.stories-DeNkhLqR.js +53 -0
- package/storybook-static/assets/Mesh-CwXV3WjE.js +7 -0
- package/storybook-static/assets/MetaBalls-Do7Vo_Ig.css +1 -0
- package/storybook-static/assets/MetaBalls.stories-CJw3g9l_.js +63 -0
- package/storybook-static/assets/MetallicPaint-rQ3s8Y0v.css +1 -0
- package/storybook-static/assets/MetallicPaint.stories-DXrEd8Sz.js +159 -0
- package/storybook-static/assets/MoodChart-2hr_Y2GI.css +1 -0
- package/storybook-static/assets/MoodChart.stories-DYRAoHr7.js +40 -0
- package/storybook-static/assets/MotionConfigContext-C_Ro_xsO.js +1 -0
- package/storybook-static/assets/Navbar-BPWxCB-U.css +1 -0
- package/storybook-static/assets/Navbar.stories-B0_sa2Hr.js +325 -0
- package/storybook-static/assets/Noise-wMLTuki1.css +1 -0
- package/storybook-static/assets/Noise.stories-CFYN81ep.js +9 -0
- package/storybook-static/assets/NumberStepper-CWsYbCdm.js +110 -0
- package/storybook-static/assets/NumberStepper-C_00aeJp.css +1 -0
- package/storybook-static/assets/NumberStepper.stories-DtsWeT0-.js +436 -0
- package/storybook-static/assets/Orb-CS8T832d.css +1 -0
- package/storybook-static/assets/Orb.stories-CDw4x9GM.js +177 -0
- package/storybook-static/assets/OrbitImages-DqsOGdeH.css +1 -0
- package/storybook-static/assets/OrbitImages.stories-DLeS6BKi.js +26 -0
- package/storybook-static/assets/PieChart-OfDGlJ4g.css +1 -0
- package/storybook-static/assets/PieChart.stories-ByeJD3jM.js +199 -0
- package/storybook-static/assets/PixelBlast-xjKshbH4.css +1 -0
- package/storybook-static/assets/PixelBlast.stories-DZHlNBbC.js +211 -0
- package/storybook-static/assets/PixelCard-dyv8Jzsb.css +1 -0
- package/storybook-static/assets/PixelCard.stories-DD3uedTX.js +6 -0
- package/storybook-static/assets/PixelSnow-Mq8jFd6s.css +1 -0
- package/storybook-static/assets/PixelSnow.stories-GOOKq9Jo.js +155 -0
- package/storybook-static/assets/PixelTransition-4YlpcBIO.css +1 -0
- package/storybook-static/assets/PixelTransition.stories-7l0r4CEg.js +27 -0
- package/storybook-static/assets/Plasma-hc6I4S4K.css +1 -0
- package/storybook-static/assets/Plasma.stories-BNQMi2qs.js +78 -0
- package/storybook-static/assets/Prism-1A7MRUuH.css +1 -0
- package/storybook-static/assets/Prism.stories-DD-1CeHx.js +121 -0
- package/storybook-static/assets/PrismaticBurst-CJEX1JKp.css +1 -0
- package/storybook-static/assets/PrismaticBurst.stories-Bgr0PBrA.js +170 -0
- package/storybook-static/assets/ProfileCard-CO0Gk0e9.css +1 -0
- package/storybook-static/assets/ProfileCard.stories-DAHKcZT1.js +15 -0
- package/storybook-static/assets/QuantifiableHabitsChart-Bam6n9X_.css +1 -0
- package/storybook-static/assets/QuantifiableHabitsChart.stories-6RkqSLP7.js +105 -0
- package/storybook-static/assets/Radar-xwRKh0lP.css +1 -0
- package/storybook-static/assets/Radar.stories-BFyFeDmo.js +88 -0
- package/storybook-static/assets/Ribbons-CjSeVzzZ.css +1 -0
- package/storybook-static/assets/Ribbons.stories-D20uKPGq.js +132 -0
- package/storybook-static/assets/RippleGrid-NvomE-YP.css +1 -0
- package/storybook-static/assets/RippleGrid.stories-BKV-9TCI.js +113 -0
- package/storybook-static/assets/RotatingText-BGK56OzZ.css +1 -0
- package/storybook-static/assets/RotatingText.stories-BnBClUQv.js +12 -0
- package/storybook-static/assets/ScrollFloat-CuaI6iDB.css +1 -0
- package/storybook-static/assets/ScrollFloat.stories-tzqiOgHH.js +12 -0
- package/storybook-static/assets/ScrollReveal-7GSimuFY.css +1 -0
- package/storybook-static/assets/ScrollReveal.stories-4a1gyKmu.js +13 -0
- package/storybook-static/assets/ScrollTrigger-D1XJUMov.js +15 -0
- package/storybook-static/assets/ScrollVelocity-BQllEnJm.css +1 -0
- package/storybook-static/assets/ScrollVelocity.stories-1YFBGtbZ.js +9 -0
- package/storybook-static/assets/SearchBar-CYhuHFt7.css +1 -0
- package/storybook-static/assets/SearchBar.stories-T1tR-GmV.js +169 -0
- package/storybook-static/assets/SearchableDropdown-CLYLzeoj.css +1 -0
- package/storybook-static/assets/SearchableDropdown-DhEHRY6d.js +38 -0
- package/storybook-static/assets/SearchableDropdown.stories-E1pMIVn_.js +282 -0
- package/storybook-static/assets/SelectInput-BTPptV1H.css +1 -0
- package/storybook-static/assets/SelectInput-BrdH7gJ5.js +31 -0
- package/storybook-static/assets/SelectInput.stories-BJ8-v1VC.js +129 -0
- package/storybook-static/assets/ShapeBlur.stories-BD9LHX3y.js +131 -0
- package/storybook-static/assets/ShapeGrid-D5w-KuEm.css +1 -0
- package/storybook-static/assets/ShapeGrid.stories-MtqpqIIh.js +11 -0
- package/storybook-static/assets/ShinyText-D0_UmCBv.css +1 -0
- package/storybook-static/assets/ShinyText.stories-qP5FdChR.js +14 -0
- package/storybook-static/assets/Silk.stories-BHYeNKYP.js +62 -0
- package/storybook-static/assets/SleepChart-DBRb08s_.css +1 -0
- package/storybook-static/assets/SleepChart.stories-BcwHExRn.js +58 -0
- package/storybook-static/assets/Slider-A51SjNTF.js +32 -0
- package/storybook-static/assets/Slider-Bq7zObwV.css +1 -0
- package/storybook-static/assets/Slider.stories-lOqz9gMz.js +99 -0
- package/storybook-static/assets/SoftAurora-2A7ssVQp.css +1 -0
- package/storybook-static/assets/SoftAurora.stories-sSXHgJo6.js +147 -0
- package/storybook-static/assets/SoundDemo.stories-tUFyk4lU.js +3 -0
- package/storybook-static/assets/SplashCursor.stories-DerGqkHm.js +244 -0
- package/storybook-static/assets/SpotlightCard-Bi63T6N0.css +1 -0
- package/storybook-static/assets/SpotlightCard.stories-DBsgFOws.js +6 -0
- package/storybook-static/assets/Stack-CBKeDK5i.css +1 -0
- package/storybook-static/assets/Stack.stories-DAcB1tOU.js +32 -0
- package/storybook-static/assets/StaggeredMenu-DjV6Ra1C.css +1 -0
- package/storybook-static/assets/StaggeredMenu.stories-goFBD6nv.js +45 -0
- package/storybook-static/assets/StarBorder-isNlSycS.css +1 -0
- package/storybook-static/assets/StarBorder.stories-DBM6IkZW.js +9 -0
- package/storybook-static/assets/SunburstChart-ChXvU9py.css +1 -0
- package/storybook-static/assets/SunburstChart.stories-cY39K-7Q.js +285 -0
- package/storybook-static/assets/Table-DnhtoClE.css +1 -0
- package/storybook-static/assets/Table.stories-rAe1I70z.js +227 -0
- package/storybook-static/assets/Tabs-BfJ7skOE.css +1 -0
- package/storybook-static/assets/Tabs.stories-D3bsFZfU.js +64 -0
- package/storybook-static/assets/TargetCursor-CWS-TuGF.css +1 -0
- package/storybook-static/assets/TargetCursor.stories-uvcMTfQh.js +9 -0
- package/storybook-static/assets/TextArea-B2UrQsuf.css +1 -0
- package/storybook-static/assets/TextArea-CbqMjFCN.js +28 -0
- package/storybook-static/assets/TextArea.stories-CuMypTf4.js +155 -0
- package/storybook-static/assets/TextCursor-DDqF-3pV.css +1 -0
- package/storybook-static/assets/TextCursor.stories-Bu6iMunU.js +11 -0
- package/storybook-static/assets/TextInput-BjVJQEYN.css +1 -0
- package/storybook-static/assets/TextInput-BpsPIO3D.js +28 -0
- package/storybook-static/assets/TextInput.stories-C0oXgEQ2.js +203 -0
- package/storybook-static/assets/TextPressure.stories-DNGUmrTD.js +47 -0
- package/storybook-static/assets/TextType-BYHLKnc2.css +1 -0
- package/storybook-static/assets/TextType.stories-BKNycUNL.js +19 -0
- package/storybook-static/assets/Texture-BkQWYNP2.js +1 -0
- package/storybook-static/assets/ThemeSwitcher-XCVQ6hhy.css +1 -0
- package/storybook-static/assets/ThemeSwitcher.stories-D5lsOFPy.js +62 -0
- package/storybook-static/assets/Threads-C5ItmUMV.css +1 -0
- package/storybook-static/assets/Threads.stories-VyvPNiLc.js +121 -0
- package/storybook-static/assets/TimeInput-C3enPYoV.css +1 -0
- package/storybook-static/assets/TimeInput.stories-BC5vDv_Y.js +55 -0
- package/storybook-static/assets/Toggle-BZxwy2el.js +41 -0
- package/storybook-static/assets/Toggle-DhKq5lh5.css +1 -0
- package/storybook-static/assets/Toggle.stories-VQMzqzt7.js +199 -0
- package/storybook-static/assets/ToggleButton-CijvK4iQ.js +32 -0
- package/storybook-static/assets/ToggleButton-DJU3CV_i.css +1 -0
- package/storybook-static/assets/ToggleButton.stories-DY0c1Gny.js +163 -0
- package/storybook-static/assets/Triangle-64ffRKNB.js +1 -0
- package/storybook-static/assets/TrueFocus-C4c7GDsQ.css +1 -0
- package/storybook-static/assets/TrueFocus.stories-DEScRjfz.js +12 -0
- package/storybook-static/assets/VariableProximity-E64p6UBv.css +1 -0
- package/storybook-static/assets/VariableProximity.stories-DbTKbjW_.js +14 -0
- package/storybook-static/assets/Vec2-Cf1C3GIc.js +1 -0
- package/storybook-static/assets/Waves-C7txy_IO.css +1 -0
- package/storybook-static/assets/Waves.stories-tLQsX0Mg.js +1 -0
- package/storybook-static/assets/arc-DgcIQOLP.js +1 -0
- package/storybook-static/assets/array-BKyUJesY.js +1 -0
- package/storybook-static/assets/axis-D3QohQNI.js +1 -0
- package/storybook-static/assets/check-CAskjz10.js +6 -0
- package/storybook-static/assets/chevron-down-BI8IU4ZZ.js +6 -0
- package/storybook-static/assets/chevron-right-DUHx58vO.js +6 -0
- package/storybook-static/assets/client-DFRPWCQR.js +1 -0
- package/storybook-static/assets/createLucideIcon-C7zEcVM7.js +21 -0
- package/storybook-static/assets/defaultLocale-DJ2q5QjE.js +1 -0
- package/storybook-static/assets/demo/cs1.webp +0 -0
- package/storybook-static/assets/demo/cs2.webp +0 -0
- package/storybook-static/assets/demo/cs3.webp +0 -0
- package/storybook-static/assets/folder-CR6tETf-.js +6 -0
- package/storybook-static/assets/iconBase-AISesxwq.js +1 -0
- package/storybook-static/assets/iframe-Cz1R6gKZ.js +1087 -0
- package/storybook-static/assets/iframe-Df7_64QT.css +1 -0
- package/storybook-static/assets/index-C2Ys00st.js +1 -0
- package/storybook-static/assets/index-C8pce-KX.js +15 -0
- package/storybook-static/assets/index-CIvCfZMj.js +9 -0
- package/storybook-static/assets/index-DcRHiSf7.js +128 -0
- package/storybook-static/assets/index-jFY_uKTI.js +24 -0
- package/storybook-static/assets/layout-grid-CE52it1h.js +6 -0
- package/storybook-static/assets/linear-dkJHgUri.js +1 -0
- package/storybook-static/assets/monotone-DHdPkfDP.js +1 -0
- package/storybook-static/assets/path-CbwjOpE9.js +1 -0
- package/storybook-static/assets/preload-helper-C1FmrZbK.js +1 -0
- package/storybook-static/assets/proxy-CAwOFzsk.js +1 -0
- package/storybook-static/assets/react-18-DoKaDswt.js +1 -0
- package/storybook-static/assets/react-three-fiber.esm-t8sCLCER.js +43 -0
- package/storybook-static/assets/search-DcwY6Xta.js +6 -0
- package/storybook-static/assets/sun-DeCJTUMz.js +11 -0
- package/storybook-static/assets/three.module--_vTUKhS.js +4057 -0
- package/storybook-static/assets/transform-BKmuZieF.js +1 -0
- package/storybook-static/assets/use-animation-frame-DhanRv3Z.js +1 -0
- package/storybook-static/assets/use-in-view-D50EZJ4s.js +1 -0
- package/storybook-static/assets/use-motion-value-BgGWOnBX.js +1 -0
- package/storybook-static/assets/use-spring-CKPLi_a5.js +1 -0
- package/storybook-static/assets/use-transform-CJxjUEuh.js +1 -0
- package/storybook-static/assets/useSound-DOpt9DfD.js +1 -0
- package/storybook-static/assets/users-C7jpE6gP.js +6 -0
- package/storybook-static/assets/x-CP8OMUcV.js +6 -0
- package/storybook-static/favicon-wrapper.svg +46 -0
- package/storybook-static/favicon.svg +1 -0
- package/storybook-static/iframe.html +693 -0
- package/storybook-static/index.html +164 -0
- package/storybook-static/index.json +1 -0
- package/storybook-static/nunito-sans-bold-italic.woff2 +0 -0
- package/storybook-static/nunito-sans-bold.woff2 +0 -0
- package/storybook-static/nunito-sans-italic.woff2 +0 -0
- package/storybook-static/nunito-sans-regular.woff2 +0 -0
- package/storybook-static/project.json +1 -0
- package/storybook-static/sb-addons/chromatic-com-storybook-4/manager-bundle.js +356 -0
- package/storybook-static/sb-addons/chromatic-com-storybook-4/manager-bundle.js.LEGAL.txt +40 -0
- package/storybook-static/sb-addons/docs-2/manager-bundle.js +151 -0
- package/storybook-static/sb-addons/links-3/manager-bundle.js +3 -0
- package/storybook-static/sb-addons/onboarding-1/manager-bundle.js +127 -0
- package/storybook-static/sb-addons/storybook-5/manager-bundle.js +3 -0
- package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +971 -0
- package/storybook-static/sb-common-assets/favicon-wrapper.svg +46 -0
- package/storybook-static/sb-common-assets/favicon.svg +1 -0
- package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
- package/storybook-static/sb-manager/globals-module-info.js +797 -0
- package/storybook-static/sb-manager/globals-runtime.js +69653 -0
- package/storybook-static/sb-manager/globals.js +34 -0
- package/storybook-static/sb-manager/runtime.js +13181 -0
- package/storybook-static/vite-inject-mocker-entry.js +18 -0
|
@@ -0,0 +1,490 @@
|
|
|
1
|
+
import{r as V,j as Ee}from"./iframe-Cz1R6gKZ.js";import{u as We,a as yt,c as oo,s as os,b as Ut,e as pa,C as as,d as ss}from"./react-three-fiber.esm-t8sCLCER.js";import{d as qe,e as ke,aa as bt,ab as Ct,ac as is,u as wt,n as Pe,ad as cs,a0 as ma,ae as ls,af as mr,ag as Ba,ah as va,ai as nn,aj as xn,ak as $e,al as us,am as fs,an as ds,ao as hs,ap as ga,O as Ca,aq as Un,ar as As,t as rn,as as ps,at as ya,au as ms,av as Bs,aw as vs,z as In,a5 as gs,ax as Br,ay as Cs,a7 as ys,az as bs,a1 as or,aA as Fs,x as ba,_ as Fa,p as xt,aB as Es,h as Ea,aC as Ms,M as _n,a8 as Ts,aD as Ds,aE as Gs,aF as Rs,aG as ar,P as xs,r as Ma,a as Is,aH as Ss,aI as ws,aJ as Us,aK as _s,aL as Ta,aM as Ls,a2 as cn,aN as ao,aO as so,aP as io,$ as Da,aQ as ks,aR as Gr,aS as Ga,aT as Os,aU as Hs,aV as Ps,j as Ra,aW as Js,aX as Ns,aY as Ks,q as Rr,i as js,N as Qs,Z as Xs,aZ as Ws,a_ as Ys,S as Vs}from"./three.module--_vTUKhS.js";import{_ as st,u as vr}from"./Fbo-CjO1EXQj.js";import{c as zs}from"./client-DFRPWCQR.js";import"./preload-helper-C1FmrZbK.js";import"./index-jFY_uKTI.js";function on(u,t,i){return t in u?Object.defineProperty(u,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):u[t]=i,u}function gr(u,t){(t==null||t>u.length)&&(t=u.length);for(var i=0,c=new Array(t);i<t;i++)c[i]=u[i];return c}function Zs(u,t){if(u){if(typeof u=="string")return gr(u,t);var i=Object.prototype.toString.call(u).slice(8,-1);if(i==="Object"&&u.constructor&&(i=u.constructor.name),i==="Map"||i==="Set")return Array.from(u);if(i==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return gr(u,t)}}function qs(u){if(Array.isArray(u))return gr(u)}function $s(u){if(typeof Symbol<"u"&&u[Symbol.iterator]!=null||u["@@iterator"]!=null)return Array.from(u)}function ei(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
|
2
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ti(u){return qs(u)||$s(u)||Zs(u)||ei()}new qe;new qe;function ni(u,t,i){return Math.max(t,Math.min(i,u))}function ri(u,t){return ni(u-Math.floor(u/t)*t,0,t)}function oi(u,t){var i=ri(t-u,Math.PI*2);return i>Math.PI&&(i-=Math.PI*2),i}function xa(u,t){if(!(u instanceof t))throw new TypeError("Cannot call a class as a function")}var Qe=function u(t,i,c){var n=this;xa(this,u),on(this,"dot2",function(e,r){return n.x*e+n.y*r}),on(this,"dot3",function(e,r,a){return n.x*e+n.y*r+n.z*a}),this.x=t,this.y=i,this.z=c},ai=[new Qe(1,1,0),new Qe(-1,1,0),new Qe(1,-1,0),new Qe(-1,-1,0),new Qe(1,0,1),new Qe(-1,0,1),new Qe(1,0,-1),new Qe(-1,0,-1),new Qe(0,1,1),new Qe(0,-1,1),new Qe(0,1,-1),new Qe(0,-1,-1)],co=[151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180],lo=new Array(512),uo=new Array(512),si=function(t){t>0&&t<1&&(t*=65536),t=Math.floor(t),t<256&&(t|=t<<8);for(var i=0;i<256;i++){var c;i&1?c=co[i]^t&255:c=co[i]^t>>8&255,lo[i]=lo[i+256]=c,uo[i]=uo[i+256]=ai[c%12]}};si(0);function ii(u){if(typeof u=="number")u=Math.abs(u);else if(typeof u=="string"){var t=u;u=0;for(var i=0;i<t.length;i++)u=(u+(i+1)*(t.charCodeAt(i)%96))%2147483647}return u===0&&(u=311),u}function fo(u){var t=ii(u);return function(){var i=t*48271%2147483647;return t=i,i/2147483647}}var ci=function u(t){var i=this;xa(this,u),on(this,"seed",0),on(this,"init",function(c){i.seed=c,i.value=fo(c)}),on(this,"value",fo(this.seed)),this.init(t)};new ci(Math.random());var li=function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.01,c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1/(2*Math.PI);return c/Math.atan(1/i)*Math.atan(Math.sin(2*Math.PI*t*n)/i)},Ia=function(t){return 1/(1+t+.48*t*t+.235*t*t*t)},ui=function(t){return t},fi={in:function(t){return 1-Math.cos(t*Math.PI/2)},out:function(t){return Math.sin(t*Math.PI/2)},inOut:function(t){return-(Math.cos(Math.PI*t)-1)/2}},di={in:function(t){return t*t*t},out:function(t){return 1-Math.pow(1-t,3)},inOut:function(t){return t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2}},hi={in:function(t){return t*t*t*t*t},out:function(t){return 1-Math.pow(1-t,5)},inOut:function(t){return t<.5?16*t*t*t*t*t:1-Math.pow(-2*t+2,5)/2}},Ai={in:function(t){return 1-Math.sqrt(1-Math.pow(t,2))},out:function(t){return Math.sqrt(1-Math.pow(t-1,2))},inOut:function(t){return t<.5?(1-Math.sqrt(1-Math.pow(2*t,2)))/2:(Math.sqrt(1-Math.pow(-2*t+2,2))+1)/2}},pi={in:function(t){return t*t*t*t},out:function(t){return 1- --t*t*t*t},inOut:function(t){return t<.5?8*t*t*t*t:1-8*--t*t*t*t}},mi={in:function(t){return t===0?0:Math.pow(2,10*t-10)},out:function(t){return t===1?1:1-Math.pow(2,-10*t)},inOut:function(t){return t===0?0:t===1?1:t<.5?Math.pow(2,20*t-10)/2:(2-Math.pow(2,-20*t+10))/2}};function Ue(u,t,i){var c=arguments.length>3&&arguments[3]!==void 0?arguments[3]:.25,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:.01,e=arguments.length>5&&arguments[5]!==void 0?arguments[5]:1/0,r=arguments.length>6&&arguments[6]!==void 0?arguments[6]:Ia,a=arguments.length>7&&arguments[7]!==void 0?arguments[7]:.001,o="velocity_"+t;if(u.__damp===void 0&&(u.__damp={}),u.__damp[o]===void 0&&(u.__damp[o]=0),Math.abs(u[t]-i)<=a)return u[t]=i,!1;c=Math.max(1e-4,c);var s=2/c,l=r(s*n),f=u[t]-i,d=i,h=e*c;f=Math.min(Math.max(f,-h),h),i=u[t]-f;var A=(u.__damp[o]+s*f)*n;u.__damp[o]=(u.__damp[o]-s*A)*l;var m=i+(f+A)*l;return d-u[t]>0==m>d&&(m=d,u.__damp[o]=(m-d)/n),u[t]=m,!0}var Bi=function(t){return t&&t.isCamera},vi=function(t){return t&&t.isLight},Xt=new ke,ho=new bt,Ao=new bt,Wt=new Ct,sr=new ke;function gi(u,t,i,c,n,e,r){typeof t=="number"?Xt.setScalar(t):Array.isArray(t)?Xt.set(t[0],t[1],t[2]):Xt.copy(t);var a=u.parent;u.updateWorldMatrix(!0,!1),sr.setFromMatrixPosition(u.matrixWorld),Bi(u)||vi(u)?Wt.lookAt(sr,Xt,u.up):Wt.lookAt(Xt,sr,u.up),Sn(u.quaternion,Ao.setFromRotationMatrix(Wt),i,c,n,e,r),a&&(Wt.extractRotation(a.matrixWorld),ho.setFromRotationMatrix(Wt),Sn(u.quaternion,Ao.copy(u.quaternion).premultiply(ho.invert()),i,c,n,e,r))}function It(u,t,i,c,n,e,r,a){return Ue(u,t,u[t]+oi(u[t],i),c,n,e,r,a)}var Yt=new qe,po,mo;function Ci(u,t,i,c,n,e,r){return typeof t=="number"?Yt.setScalar(t):Array.isArray(t)?Yt.set(t[0],t[1]):Yt.copy(t),po=Ue(u,"x",Yt.x,i,c,n,e,r),mo=Ue(u,"y",Yt.y,i,c,n,e,r),po||mo}var Dt=new ke,Bo,vo,go;function Cr(u,t,i,c,n,e,r){return typeof t=="number"?Dt.setScalar(t):Array.isArray(t)?Dt.set(t[0],t[1],t[2]):Dt.copy(t),Bo=Ue(u,"x",Dt.x,i,c,n,e,r),vo=Ue(u,"y",Dt.y,i,c,n,e,r),go=Ue(u,"z",Dt.z,i,c,n,e,r),Bo||vo||go}var pt=new wt,Co,yo,bo,Fo;function yi(u,t,i,c,n,e,r){return typeof t=="number"?pt.setScalar(t):Array.isArray(t)?pt.set(t[0],t[1],t[2],t[3]):pt.copy(t),Co=Ue(u,"x",pt.x,i,c,n,e,r),yo=Ue(u,"y",pt.y,i,c,n,e,r),bo=Ue(u,"z",pt.z,i,c,n,e,r),Fo=Ue(u,"w",pt.w,i,c,n,e,r),Co||yo||bo||Fo}var Vt=new cs,Eo,Mo,To;function bi(u,t,i,c,n,e,r){return Array.isArray(t)?Vt.set(t[0],t[1],t[2],t[3]):Vt.copy(t),Eo=It(u,"x",Vt.x,i,c,n,e,r),Mo=It(u,"y",Vt.y,i,c,n,e,r),To=It(u,"z",Vt.z,i,c,n,e,r),Eo||Mo||To}var Gt=new Pe,Do,Go,Ro;function Fi(u,t,i,c,n,e,r){return t instanceof Pe?Gt.copy(t):Array.isArray(t)?Gt.setRGB(t[0],t[1],t[2]):Gt.set(t),Do=Ue(u,"r",Gt.r,i,c,n,e,r),Go=Ue(u,"g",Gt.g,i,c,n,e,r),Ro=Ue(u,"b",Gt.b,i,c,n,e,r),Do||Go||Ro}var Ze=new bt,rt=new wt,xo=new wt,zt=new wt,Io,So,wo,Uo;function Sn(u,t,i,c,n,e,r){var a=u;Array.isArray(t)?Ze.set(t[0],t[1],t[2],t[3]):Ze.copy(t);var o=u.dot(Ze)>0?1:-1;return Ze.x*=o,Ze.y*=o,Ze.z*=o,Ze.w*=o,Io=Ue(u,"x",Ze.x,i,c,n,e,r),So=Ue(u,"y",Ze.y,i,c,n,e,r),wo=Ue(u,"z",Ze.z,i,c,n,e,r),Uo=Ue(u,"w",Ze.w,i,c,n,e,r),rt.set(u.x,u.y,u.z,u.w).normalize(),xo.set(a.__damp.velocity_x,a.__damp.velocity_y,a.__damp.velocity_z,a.__damp.velocity_w),zt.copy(rt).multiplyScalar(xo.dot(rt)/rt.dot(rt)),a.__damp.velocity_x-=zt.x,a.__damp.velocity_y-=zt.y,a.__damp.velocity_z-=zt.z,a.__damp.velocity_w-=zt.w,u.set(rt.x,rt.y,rt.z,rt.w),Io||So||wo||Uo}var Zt=new is,_o,Lo,ko;function Ei(u,t,i,c,n,e,r){return Array.isArray(t)?Zt.set(t[0],t[1],t[2]):Zt.copy(t),_o=Ue(u,"radius",Zt.radius,i,c,n,e,r),Lo=It(u,"phi",Zt.phi,i,c,n,e,r),ko=It(u,"theta",Zt.theta,i,c,n,e,r),_o||Lo||ko}var bn=new Ct,Oo=new ke,Ho=new bt,Po=new ke,Jo,No,Ko;function Mi(u,t,i,c,n,e,r){var a=u;return a.__damp===void 0&&(a.__damp={position:new ke,rotation:new bt,scale:new ke},u.decompose(a.__damp.position,a.__damp.rotation,a.__damp.scale)),Array.isArray(t)?bn.set.apply(bn,ti(t)):bn.copy(t),bn.decompose(Oo,Ho,Po),Jo=Cr(a.__damp.position,Oo,i,c,n,e,r),No=Sn(a.__damp.rotation,Ho,i,c,n,e,r),Ko=Cr(a.__damp.scale,Po,i,c,n,e,r),u.compose(a.__damp.position,a.__damp.rotation,a.__damp.scale),Jo||No||Ko}var yr=Object.freeze({__proto__:null,rsqw:li,exp:Ia,linear:ui,sine:fi,cubic:di,quint:hi,circ:Ai,quart:pi,expo:mi,damp:Ue,dampLookAt:gi,dampAngle:It,damp2:Ci,damp3:Cr,damp4:yi,dampE:bi,dampC:Fi,dampQ:Sn,dampS:Ei,dampM:Mi});const xr=V.createContext(null);function Ir(){return V.useContext(xr)}function Ti({eps:u=1e-5,enabled:t=!0,infinite:i,horizontal:c,pages:n=1,distance:e=1,damping:r=.25,maxSpeed:a=1/0,prepend:o=!1,style:s={},children:l}){const{get:f,setEvents:d,gl:h,size:A,invalidate:m,events:p}=We(),[v]=V.useState(()=>document.createElement("div")),[C]=V.useState(()=>document.createElement("div")),[b]=V.useState(()=>document.createElement("div")),g=h.domElement.parentNode,E=V.useRef(0),D=V.useMemo(()=>({el:v,eps:u,fill:C,fixed:b,horizontal:c,damping:r,offset:0,delta:0,scroll:E,pages:n,range(U,x,K=0){const y=U-K,S=y+x+K*2;return this.offset<y?0:this.offset>S?1:(this.offset-y)/(S-y)},curve(U,x,K=0){return Math.sin(this.range(U,x,K)*Math.PI)},visible(U,x,K=0){const y=U-K,S=y+x+K*2;return this.offset>=y&&this.offset<=S}}),[u,r,c,n]);V.useEffect(()=>{v.style.position="absolute",v.style.width="100%",v.style.height="100%",v.style[c?"overflowX":"overflowY"]="auto",v.style[c?"overflowY":"overflowX"]="hidden",v.style.top="0px",v.style.left="0px";for(const x in s)v.style[x]=s[x];b.style.position="sticky",b.style.top="0px",b.style.left="0px",b.style.width="100%",b.style.height="100%",b.style.overflow="hidden",v.appendChild(b),C.style.height=c?"100%":`${n*e*100}%`,C.style.width=c?`${n*e*100}%`:"100%",C.style.pointerEvents="none",v.appendChild(C),o?g.prepend(v):g.appendChild(v),v[c?"scrollLeft":"scrollTop"]=1;const M=p.connected||h.domElement;requestAnimationFrame(()=>p.connect==null?void 0:p.connect(v));const U=f().events.compute;return d({compute(x,K){const{left:y,top:S}=g.getBoundingClientRect(),G=x.clientX-y,j=x.clientY-S;K.pointer.set(G/K.size.width*2-1,-(j/K.size.height)*2+1),K.raycaster.setFromCamera(K.pointer,K.camera)}}),()=>{g.removeChild(v),d({compute:U}),p.connect==null||p.connect(M)}},[n,e,c,v,C,b,g]),V.useEffect(()=>{if(p.connected===v){const M=A[c?"width":"height"],U=v[c?"scrollWidth":"scrollHeight"],x=U-M;let K=0,y=!0,S=!0;const G=()=>{if(!(!t||S)&&(m(),K=v[c?"scrollLeft":"scrollTop"],E.current=K/x,i)){if(!y){if(K>=x){const P=1-D.offset;v[c?"scrollLeft":"scrollTop"]=1,E.current=D.offset=-P,y=!0}else if(K<=0){const P=1+D.offset;v[c?"scrollLeft":"scrollTop"]=U,E.current=D.offset=P,y=!0}}y&&setTimeout(()=>y=!1,40)}};v.addEventListener("scroll",G,{passive:!0}),requestAnimationFrame(()=>S=!1);const j=P=>v.scrollLeft+=P.deltaY/2;return c&&v.addEventListener("wheel",j,{passive:!0}),()=>{v.removeEventListener("scroll",G),c&&v.removeEventListener("wheel",j)}}},[v,p,A,i,D,m,c,t]);let F=0;return yt((M,U)=>{F=D.offset,yr.damp(D,"offset",E.current,r,U,a,void 0,u),yr.damp(D,"delta",Math.abs(F-D.offset),r,U,a,void 0,u),D.delta>u&&m()}),V.createElement(xr.Provider,{value:D},l)}const Di=V.forwardRef(({children:u},t)=>{const i=V.useRef(null);V.useImperativeHandle(t,()=>i.current,[]);const c=Ir(),{width:n,height:e}=We(r=>r.viewport);return yt(()=>{i.current.position.x=c.horizontal?-n*(c.pages-1)*c.offset:0,i.current.position.y=c.horizontal?0:e*(c.pages-1)*c.offset}),V.createElement("group",{ref:i},u)}),Gi=V.forwardRef(({children:u,style:t,...i},c)=>{const n=Ir(),e=V.useRef(null);V.useImperativeHandle(c,()=>e.current,[]);const{width:r,height:a}=We(l=>l.size),o=V.useContext(oo),s=V.useMemo(()=>zs(n.fixed),[n.fixed]);return yt(()=>{n.delta>n.eps&&(e.current.style.transform=`translate3d(${n.horizontal?-r*(n.pages-1)*n.offset:0}px,${n.horizontal?0:a*(n.pages-1)*-n.offset}px,0)`)}),s.render(V.createElement("div",st({ref:e,style:{...t,position:"absolute",top:0,left:0,willChange:"transform"}},i),V.createElement(xr.Provider,{value:n},V.createElement(oo.Provider,{value:o},u)))),null}),jo=V.forwardRef(({html:u,...t},i)=>{const c=u?Gi:Di;return V.createElement(c,st({ref:i},t))}),Ri=parseInt(ma.replace(/\D+/g,""));function Qo(u,t){if(t===ls)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),u;if(t===mr||t===Ba){let i=u.getIndex();if(i===null){const r=[],a=u.getAttribute("position");if(a!==void 0){for(let o=0;o<a.count;o++)r.push(o);u.setIndex(r),i=u.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),u}const c=i.count-2,n=[];if(i)if(t===mr)for(let r=1;r<=c;r++)n.push(i.getX(0)),n.push(i.getX(r)),n.push(i.getX(r+1));else for(let r=0;r<c;r++)r%2===0?(n.push(i.getX(r)),n.push(i.getX(r+1)),n.push(i.getX(r+2))):(n.push(i.getX(r+2)),n.push(i.getX(r+1)),n.push(i.getX(r)));n.length/3!==c&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const e=u.clone();return e.setIndex(n),e.clearGroups(),e}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),u}function wn(u){if(typeof TextDecoder<"u")return new TextDecoder().decode(u);let t="";for(let i=0,c=u.length;i<c;i++)t+=String.fromCharCode(u[i]);try{return decodeURIComponent(escape(t))}catch{return t}}const vt="srgb",at="srgb-linear",Xo=3001,xi=3e3;class Sr extends va{constructor(t){super(t),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(i){return new _i(i)}),this.register(function(i){return new Li(i)}),this.register(function(i){return new Qi(i)}),this.register(function(i){return new Xi(i)}),this.register(function(i){return new Wi(i)}),this.register(function(i){return new Oi(i)}),this.register(function(i){return new Hi(i)}),this.register(function(i){return new Pi(i)}),this.register(function(i){return new Ji(i)}),this.register(function(i){return new Ui(i)}),this.register(function(i){return new Ni(i)}),this.register(function(i){return new ki(i)}),this.register(function(i){return new ji(i)}),this.register(function(i){return new Ki(i)}),this.register(function(i){return new Si(i)}),this.register(function(i){return new Yi(i)}),this.register(function(i){return new Vi(i)})}load(t,i,c,n){const e=this;let r;if(this.resourcePath!=="")r=this.resourcePath;else if(this.path!==""){const s=nn.extractUrlBase(t);r=nn.resolveURL(s,this.path)}else r=nn.extractUrlBase(t);this.manager.itemStart(t);const a=function(s){n?n(s):console.error(s),e.manager.itemError(t),e.manager.itemEnd(t)},o=new xn(this.manager);o.setPath(this.path),o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(t,function(s){try{e.parse(s,r,function(l){i(l),e.manager.itemEnd(t)},a)}catch(l){a(l)}},c,a)}setDRACOLoader(t){return this.dracoLoader=t,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(t){return this.ktx2Loader=t,this}setMeshoptDecoder(t){return this.meshoptDecoder=t,this}register(t){return this.pluginCallbacks.indexOf(t)===-1&&this.pluginCallbacks.push(t),this}unregister(t){return this.pluginCallbacks.indexOf(t)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(t),1),this}parse(t,i,c,n){let e;const r={},a={};if(typeof t=="string")e=JSON.parse(t);else if(t instanceof ArrayBuffer)if(wn(new Uint8Array(t.slice(0,4)))===Sa){try{r[ge.KHR_BINARY_GLTF]=new zi(t)}catch(l){n&&n(l);return}e=JSON.parse(r[ge.KHR_BINARY_GLTF].content)}else e=JSON.parse(wn(new Uint8Array(t)));else e=t;if(e.asset===void 0||e.asset.version[0]<2){n&&n(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const o=new lc(e,{path:i||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});o.fileLoader.setRequestHeader(this.requestHeader);for(let s=0;s<this.pluginCallbacks.length;s++){const l=this.pluginCallbacks[s](o);l.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),a[l.name]=l,r[l.name]=!0}if(e.extensionsUsed)for(let s=0;s<e.extensionsUsed.length;++s){const l=e.extensionsUsed[s],f=e.extensionsRequired||[];switch(l){case ge.KHR_MATERIALS_UNLIT:r[l]=new wi;break;case ge.KHR_DRACO_MESH_COMPRESSION:r[l]=new Zi(e,this.dracoLoader);break;case ge.KHR_TEXTURE_TRANSFORM:r[l]=new qi;break;case ge.KHR_MESH_QUANTIZATION:r[l]=new $i;break;default:f.indexOf(l)>=0&&a[l]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+l+'".')}}o.setExtensions(r),o.setPlugins(a),o.parse(c,n)}parseAsync(t,i){const c=this;return new Promise(function(n,e){c.parse(t,i,n,e)})}}function Ii(){let u={};return{get:function(t){return u[t]},add:function(t,i){u[t]=i},remove:function(t){delete u[t]},removeAll:function(){u={}}}}const ge={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class Si{constructor(t){this.parser=t,this.name=ge.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const t=this.parser,i=this.parser.json.nodes||[];for(let c=0,n=i.length;c<n;c++){const e=i[c];e.extensions&&e.extensions[this.name]&&e.extensions[this.name].light!==void 0&&t._addNodeRef(this.cache,e.extensions[this.name].light)}}_loadLight(t){const i=this.parser,c="light:"+t;let n=i.cache.get(c);if(n)return n;const e=i.json,o=((e.extensions&&e.extensions[this.name]||{}).lights||[])[t];let s;const l=new Pe(16777215);o.color!==void 0&&l.setRGB(o.color[0],o.color[1],o.color[2],at);const f=o.range!==void 0?o.range:0;switch(o.type){case"directional":s=new ds(l),s.target.position.set(0,0,-1),s.add(s.target);break;case"point":s=new fs(l),s.distance=f;break;case"spot":s=new us(l),s.distance=f,o.spot=o.spot||{},o.spot.innerConeAngle=o.spot.innerConeAngle!==void 0?o.spot.innerConeAngle:0,o.spot.outerConeAngle=o.spot.outerConeAngle!==void 0?o.spot.outerConeAngle:Math.PI/4,s.angle=o.spot.outerConeAngle,s.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,s.target.position.set(0,0,-1),s.add(s.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}return s.position.set(0,0,0),s.decay=2,ot(s,o),o.intensity!==void 0&&(s.intensity=o.intensity),s.name=i.createUniqueName(o.name||"light_"+t),n=Promise.resolve(s),i.cache.add(c,n),n}getDependency(t,i){if(t==="light")return this._loadLight(i)}createNodeAttachment(t){const i=this,c=this.parser,e=c.json.nodes[t],a=(e.extensions&&e.extensions[this.name]||{}).light;return a===void 0?null:this._loadLight(a).then(function(o){return c._getNodeRef(i.cache,a,o)})}}class wi{constructor(){this.name=ge.KHR_MATERIALS_UNLIT}getMaterialType(){return xt}extendParams(t,i,c){const n=[];t.color=new Pe(1,1,1),t.opacity=1;const e=i.pbrMetallicRoughness;if(e){if(Array.isArray(e.baseColorFactor)){const r=e.baseColorFactor;t.color.setRGB(r[0],r[1],r[2],at),t.opacity=r[3]}e.baseColorTexture!==void 0&&n.push(c.assignTexture(t,"map",e.baseColorTexture,vt))}return Promise.all(n)}}class Ui{constructor(t){this.parser=t,this.name=ge.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(t,i){const n=this.parser.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const e=n.extensions[this.name].emissiveStrength;return e!==void 0&&(i.emissiveIntensity=e),Promise.resolve()}}class _i{constructor(t){this.parser=t,this.name=ge.KHR_MATERIALS_CLEARCOAT}getMaterialType(t){const c=this.parser.json.materials[t];return!c.extensions||!c.extensions[this.name]?null:$e}extendMaterialParams(t,i){const c=this.parser,n=c.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const e=[],r=n.extensions[this.name];if(r.clearcoatFactor!==void 0&&(i.clearcoat=r.clearcoatFactor),r.clearcoatTexture!==void 0&&e.push(c.assignTexture(i,"clearcoatMap",r.clearcoatTexture)),r.clearcoatRoughnessFactor!==void 0&&(i.clearcoatRoughness=r.clearcoatRoughnessFactor),r.clearcoatRoughnessTexture!==void 0&&e.push(c.assignTexture(i,"clearcoatRoughnessMap",r.clearcoatRoughnessTexture)),r.clearcoatNormalTexture!==void 0&&(e.push(c.assignTexture(i,"clearcoatNormalMap",r.clearcoatNormalTexture)),r.clearcoatNormalTexture.scale!==void 0)){const a=r.clearcoatNormalTexture.scale;i.clearcoatNormalScale=new qe(a,a)}return Promise.all(e)}}class Li{constructor(t){this.parser=t,this.name=ge.KHR_MATERIALS_DISPERSION}getMaterialType(t){const c=this.parser.json.materials[t];return!c.extensions||!c.extensions[this.name]?null:$e}extendMaterialParams(t,i){const n=this.parser.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const e=n.extensions[this.name];return i.dispersion=e.dispersion!==void 0?e.dispersion:0,Promise.resolve()}}class ki{constructor(t){this.parser=t,this.name=ge.KHR_MATERIALS_IRIDESCENCE}getMaterialType(t){const c=this.parser.json.materials[t];return!c.extensions||!c.extensions[this.name]?null:$e}extendMaterialParams(t,i){const c=this.parser,n=c.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const e=[],r=n.extensions[this.name];return r.iridescenceFactor!==void 0&&(i.iridescence=r.iridescenceFactor),r.iridescenceTexture!==void 0&&e.push(c.assignTexture(i,"iridescenceMap",r.iridescenceTexture)),r.iridescenceIor!==void 0&&(i.iridescenceIOR=r.iridescenceIor),i.iridescenceThicknessRange===void 0&&(i.iridescenceThicknessRange=[100,400]),r.iridescenceThicknessMinimum!==void 0&&(i.iridescenceThicknessRange[0]=r.iridescenceThicknessMinimum),r.iridescenceThicknessMaximum!==void 0&&(i.iridescenceThicknessRange[1]=r.iridescenceThicknessMaximum),r.iridescenceThicknessTexture!==void 0&&e.push(c.assignTexture(i,"iridescenceThicknessMap",r.iridescenceThicknessTexture)),Promise.all(e)}}class Oi{constructor(t){this.parser=t,this.name=ge.KHR_MATERIALS_SHEEN}getMaterialType(t){const c=this.parser.json.materials[t];return!c.extensions||!c.extensions[this.name]?null:$e}extendMaterialParams(t,i){const c=this.parser,n=c.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const e=[];i.sheenColor=new Pe(0,0,0),i.sheenRoughness=0,i.sheen=1;const r=n.extensions[this.name];if(r.sheenColorFactor!==void 0){const a=r.sheenColorFactor;i.sheenColor.setRGB(a[0],a[1],a[2],at)}return r.sheenRoughnessFactor!==void 0&&(i.sheenRoughness=r.sheenRoughnessFactor),r.sheenColorTexture!==void 0&&e.push(c.assignTexture(i,"sheenColorMap",r.sheenColorTexture,vt)),r.sheenRoughnessTexture!==void 0&&e.push(c.assignTexture(i,"sheenRoughnessMap",r.sheenRoughnessTexture)),Promise.all(e)}}class Hi{constructor(t){this.parser=t,this.name=ge.KHR_MATERIALS_TRANSMISSION}getMaterialType(t){const c=this.parser.json.materials[t];return!c.extensions||!c.extensions[this.name]?null:$e}extendMaterialParams(t,i){const c=this.parser,n=c.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const e=[],r=n.extensions[this.name];return r.transmissionFactor!==void 0&&(i.transmission=r.transmissionFactor),r.transmissionTexture!==void 0&&e.push(c.assignTexture(i,"transmissionMap",r.transmissionTexture)),Promise.all(e)}}class Pi{constructor(t){this.parser=t,this.name=ge.KHR_MATERIALS_VOLUME}getMaterialType(t){const c=this.parser.json.materials[t];return!c.extensions||!c.extensions[this.name]?null:$e}extendMaterialParams(t,i){const c=this.parser,n=c.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const e=[],r=n.extensions[this.name];i.thickness=r.thicknessFactor!==void 0?r.thicknessFactor:0,r.thicknessTexture!==void 0&&e.push(c.assignTexture(i,"thicknessMap",r.thicknessTexture)),i.attenuationDistance=r.attenuationDistance||1/0;const a=r.attenuationColor||[1,1,1];return i.attenuationColor=new Pe().setRGB(a[0],a[1],a[2],at),Promise.all(e)}}class Ji{constructor(t){this.parser=t,this.name=ge.KHR_MATERIALS_IOR}getMaterialType(t){const c=this.parser.json.materials[t];return!c.extensions||!c.extensions[this.name]?null:$e}extendMaterialParams(t,i){const n=this.parser.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const e=n.extensions[this.name];return i.ior=e.ior!==void 0?e.ior:1.5,Promise.resolve()}}class Ni{constructor(t){this.parser=t,this.name=ge.KHR_MATERIALS_SPECULAR}getMaterialType(t){const c=this.parser.json.materials[t];return!c.extensions||!c.extensions[this.name]?null:$e}extendMaterialParams(t,i){const c=this.parser,n=c.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const e=[],r=n.extensions[this.name];i.specularIntensity=r.specularFactor!==void 0?r.specularFactor:1,r.specularTexture!==void 0&&e.push(c.assignTexture(i,"specularIntensityMap",r.specularTexture));const a=r.specularColorFactor||[1,1,1];return i.specularColor=new Pe().setRGB(a[0],a[1],a[2],at),r.specularColorTexture!==void 0&&e.push(c.assignTexture(i,"specularColorMap",r.specularColorTexture,vt)),Promise.all(e)}}class Ki{constructor(t){this.parser=t,this.name=ge.EXT_MATERIALS_BUMP}getMaterialType(t){const c=this.parser.json.materials[t];return!c.extensions||!c.extensions[this.name]?null:$e}extendMaterialParams(t,i){const c=this.parser,n=c.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const e=[],r=n.extensions[this.name];return i.bumpScale=r.bumpFactor!==void 0?r.bumpFactor:1,r.bumpTexture!==void 0&&e.push(c.assignTexture(i,"bumpMap",r.bumpTexture)),Promise.all(e)}}class ji{constructor(t){this.parser=t,this.name=ge.KHR_MATERIALS_ANISOTROPY}getMaterialType(t){const c=this.parser.json.materials[t];return!c.extensions||!c.extensions[this.name]?null:$e}extendMaterialParams(t,i){const c=this.parser,n=c.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const e=[],r=n.extensions[this.name];return r.anisotropyStrength!==void 0&&(i.anisotropy=r.anisotropyStrength),r.anisotropyRotation!==void 0&&(i.anisotropyRotation=r.anisotropyRotation),r.anisotropyTexture!==void 0&&e.push(c.assignTexture(i,"anisotropyMap",r.anisotropyTexture)),Promise.all(e)}}class Qi{constructor(t){this.parser=t,this.name=ge.KHR_TEXTURE_BASISU}loadTexture(t){const i=this.parser,c=i.json,n=c.textures[t];if(!n.extensions||!n.extensions[this.name])return null;const e=n.extensions[this.name],r=i.options.ktx2Loader;if(!r){if(c.extensionsRequired&&c.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return i.loadTextureImage(t,e.source,r)}}class Xi{constructor(t){this.parser=t,this.name=ge.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(t){const i=this.name,c=this.parser,n=c.json,e=n.textures[t];if(!e.extensions||!e.extensions[i])return null;const r=e.extensions[i],a=n.images[r.source];let o=c.textureLoader;if(a.uri){const s=c.options.manager.getHandler(a.uri);s!==null&&(o=s)}return this.detectSupport().then(function(s){if(s)return c.loadTextureImage(t,r.source,o);if(n.extensionsRequired&&n.extensionsRequired.indexOf(i)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return c.loadTexture(t)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(t){const i=new Image;i.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",i.onload=i.onerror=function(){t(i.height===1)}})),this.isSupported}}class Wi{constructor(t){this.parser=t,this.name=ge.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(t){const i=this.name,c=this.parser,n=c.json,e=n.textures[t];if(!e.extensions||!e.extensions[i])return null;const r=e.extensions[i],a=n.images[r.source];let o=c.textureLoader;if(a.uri){const s=c.options.manager.getHandler(a.uri);s!==null&&(o=s)}return this.detectSupport().then(function(s){if(s)return c.loadTextureImage(t,r.source,o);if(n.extensionsRequired&&n.extensionsRequired.indexOf(i)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return c.loadTexture(t)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(t){const i=new Image;i.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",i.onload=i.onerror=function(){t(i.height===1)}})),this.isSupported}}class Yi{constructor(t){this.name=ge.EXT_MESHOPT_COMPRESSION,this.parser=t}loadBufferView(t){const i=this.parser.json,c=i.bufferViews[t];if(c.extensions&&c.extensions[this.name]){const n=c.extensions[this.name],e=this.parser.getDependency("buffer",n.buffer),r=this.parser.options.meshoptDecoder;if(!r||!r.supported){if(i.extensionsRequired&&i.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return e.then(function(a){const o=n.byteOffset||0,s=n.byteLength||0,l=n.count,f=n.byteStride,d=new Uint8Array(a,o,s);return r.decodeGltfBufferAsync?r.decodeGltfBufferAsync(l,f,d,n.mode,n.filter).then(function(h){return h.buffer}):r.ready.then(function(){const h=new ArrayBuffer(l*f);return r.decodeGltfBuffer(new Uint8Array(h),l,f,d,n.mode,n.filter),h})})}else return null}}class Vi{constructor(t){this.name=ge.EXT_MESH_GPU_INSTANCING,this.parser=t}createNodeMesh(t){const i=this.parser.json,c=i.nodes[t];if(!c.extensions||!c.extensions[this.name]||c.mesh===void 0)return null;const n=i.meshes[c.mesh];for(const s of n.primitives)if(s.mode!==Xe.TRIANGLES&&s.mode!==Xe.TRIANGLE_STRIP&&s.mode!==Xe.TRIANGLE_FAN&&s.mode!==void 0)return null;const r=c.extensions[this.name].attributes,a=[],o={};for(const s in r)a.push(this.parser.getDependency("accessor",r[s]).then(l=>(o[s]=l,o[s])));return a.length<1?null:(a.push(this.parser.createNodeMesh(t)),Promise.all(a).then(s=>{const l=s.pop(),f=l.isGroup?l.children:[l],d=s[0].count,h=[];for(const A of f){const m=new Ct,p=new ke,v=new bt,C=new ke(1,1,1),b=new hs(A.geometry,A.material,d);for(let g=0;g<d;g++)o.TRANSLATION&&p.fromBufferAttribute(o.TRANSLATION,g),o.ROTATION&&v.fromBufferAttribute(o.ROTATION,g),o.SCALE&&C.fromBufferAttribute(o.SCALE,g),b.setMatrixAt(g,m.compose(p,v,C));for(const g in o)if(g==="_COLOR_0"){const E=o[g];b.instanceColor=new ga(E.array,E.itemSize,E.normalized)}else g!=="TRANSLATION"&&g!=="ROTATION"&&g!=="SCALE"&&A.geometry.setAttribute(g,o[g]);Ca.prototype.copy.call(b,A),this.parser.assignFinalMaterial(b),h.push(b)}return l.isGroup?(l.clear(),l.add(...h),l):h[0]}))}}const Sa="glTF",qt=12,Wo={JSON:1313821514,BIN:5130562};class zi{constructor(t){this.name=ge.KHR_BINARY_GLTF,this.content=null,this.body=null;const i=new DataView(t,0,qt);if(this.header={magic:wn(new Uint8Array(t.slice(0,4))),version:i.getUint32(4,!0),length:i.getUint32(8,!0)},this.header.magic!==Sa)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const c=this.header.length-qt,n=new DataView(t,qt);let e=0;for(;e<c;){const r=n.getUint32(e,!0);e+=4;const a=n.getUint32(e,!0);if(e+=4,a===Wo.JSON){const o=new Uint8Array(t,qt+e,r);this.content=wn(o)}else if(a===Wo.BIN){const o=qt+e;this.body=t.slice(o,o+r)}e+=r}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Zi{constructor(t,i){if(!i)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=ge.KHR_DRACO_MESH_COMPRESSION,this.json=t,this.dracoLoader=i,this.dracoLoader.preload()}decodePrimitive(t,i){const c=this.json,n=this.dracoLoader,e=t.extensions[this.name].bufferView,r=t.extensions[this.name].attributes,a={},o={},s={};for(const l in r){const f=br[l]||l.toLowerCase();a[f]=r[l]}for(const l in t.attributes){const f=br[l]||l.toLowerCase();if(r[l]!==void 0){const d=c.accessors[t.attributes[l]],h=St[d.componentType];s[f]=h.name,o[f]=d.normalized===!0}}return i.getDependency("bufferView",e).then(function(l){return new Promise(function(f,d){n.decodeDracoFile(l,function(h){for(const A in h.attributes){const m=h.attributes[A],p=o[A];p!==void 0&&(m.normalized=p)}f(h)},a,s,at,d)})})}}class qi{constructor(){this.name=ge.KHR_TEXTURE_TRANSFORM}extendTexture(t,i){return(i.texCoord===void 0||i.texCoord===t.channel)&&i.offset===void 0&&i.rotation===void 0&&i.scale===void 0||(t=t.clone(),i.texCoord!==void 0&&(t.channel=i.texCoord),i.offset!==void 0&&t.offset.fromArray(i.offset),i.rotation!==void 0&&(t.rotation=i.rotation),i.scale!==void 0&&t.repeat.fromArray(i.scale),t.needsUpdate=!0),t}}class $i{constructor(){this.name=ge.KHR_MESH_QUANTIZATION}}class wa extends ks{constructor(t,i,c,n){super(t,i,c,n)}copySampleValue_(t){const i=this.resultBuffer,c=this.sampleValues,n=this.valueSize,e=t*n*3+n;for(let r=0;r!==n;r++)i[r]=c[e+r];return i}interpolate_(t,i,c,n){const e=this.resultBuffer,r=this.sampleValues,a=this.valueSize,o=a*2,s=a*3,l=n-i,f=(c-i)/l,d=f*f,h=d*f,A=t*s,m=A-s,p=-2*h+3*d,v=h-d,C=1-p,b=v-d+f;for(let g=0;g!==a;g++){const E=r[m+g+a],D=r[m+g+o]*l,F=r[A+g+a],M=r[A+g]*l;e[g]=C*E+b*D+p*F+v*M}return e}}const ec=new bt;class tc extends wa{interpolate_(t,i,c,n){const e=super.interpolate_(t,i,c,n);return ec.fromArray(e).normalize().toArray(e),e}}const Xe={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},St={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Yo={9728:gs,9729:In,9984:vs,9985:Bs,9986:ms,9987:ya},Vo={33071:ys,33648:Cs,10497:Br},ir={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},br={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",...Ri>=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},dt={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},nc={CUBICSPLINE:void 0,LINEAR:Ta,STEP:_s},cr={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function rc(u){return u.DefaultMaterial===void 0&&(u.DefaultMaterial=new ba({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Da})),u.DefaultMaterial}function mt(u,t,i){for(const c in i.extensions)u[c]===void 0&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[c]=i.extensions[c])}function ot(u,t){t.extras!==void 0&&(typeof t.extras=="object"?Object.assign(u.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function oc(u,t,i){let c=!1,n=!1,e=!1;for(let s=0,l=t.length;s<l;s++){const f=t[s];if(f.POSITION!==void 0&&(c=!0),f.NORMAL!==void 0&&(n=!0),f.COLOR_0!==void 0&&(e=!0),c&&n&&e)break}if(!c&&!n&&!e)return Promise.resolve(u);const r=[],a=[],o=[];for(let s=0,l=t.length;s<l;s++){const f=t[s];if(c){const d=f.POSITION!==void 0?i.getDependency("accessor",f.POSITION):u.attributes.position;r.push(d)}if(n){const d=f.NORMAL!==void 0?i.getDependency("accessor",f.NORMAL):u.attributes.normal;a.push(d)}if(e){const d=f.COLOR_0!==void 0?i.getDependency("accessor",f.COLOR_0):u.attributes.color;o.push(d)}}return Promise.all([Promise.all(r),Promise.all(a),Promise.all(o)]).then(function(s){const l=s[0],f=s[1],d=s[2];return c&&(u.morphAttributes.position=l),n&&(u.morphAttributes.normal=f),e&&(u.morphAttributes.color=d),u.morphTargetsRelative=!0,u})}function ac(u,t){if(u.updateMorphTargets(),t.weights!==void 0)for(let i=0,c=t.weights.length;i<c;i++)u.morphTargetInfluences[i]=t.weights[i];if(t.extras&&Array.isArray(t.extras.targetNames)){const i=t.extras.targetNames;if(u.morphTargetInfluences.length===i.length){u.morphTargetDictionary={};for(let c=0,n=i.length;c<n;c++)u.morphTargetDictionary[i[c]]=c}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function sc(u){let t;const i=u.extensions&&u.extensions[ge.KHR_DRACO_MESH_COMPRESSION];if(i?t="draco:"+i.bufferView+":"+i.indices+":"+lr(i.attributes):t=u.indices+":"+lr(u.attributes)+":"+u.mode,u.targets!==void 0)for(let c=0,n=u.targets.length;c<n;c++)t+=":"+lr(u.targets[c]);return t}function lr(u){let t="";const i=Object.keys(u).sort();for(let c=0,n=i.length;c<n;c++)t+=i[c]+":"+u[i[c]]+";";return t}function Fr(u){switch(u){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function ic(u){return u.search(/\.jpe?g($|\?)/i)>0||u.search(/^data\:image\/jpeg/)===0?"image/jpeg":u.search(/\.webp($|\?)/i)>0||u.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const cc=new Ct;class lc{constructor(t={},i={}){this.json=t,this.extensions={},this.plugins={},this.options=i,this.cache=new Ii,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let c=!1,n=!1,e=-1;typeof navigator<"u"&&typeof navigator.userAgent<"u"&&(c=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,n=navigator.userAgent.indexOf("Firefox")>-1,e=n?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap>"u"||c||n&&e<98?this.textureLoader=new Un(this.options.manager):this.textureLoader=new As(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new xn(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(t){this.extensions=t}setPlugins(t){this.plugins=t}parse(t,i){const c=this,n=this.json,e=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(r){return r._markDefs&&r._markDefs()}),Promise.all(this._invokeAll(function(r){return r.beforeRoot&&r.beforeRoot()})).then(function(){return Promise.all([c.getDependencies("scene"),c.getDependencies("animation"),c.getDependencies("camera")])}).then(function(r){const a={scene:r[0][n.scene||0],scenes:r[0],animations:r[1],cameras:r[2],asset:n.asset,parser:c,userData:{}};return mt(e,a,n),ot(a,n),Promise.all(c._invokeAll(function(o){return o.afterRoot&&o.afterRoot(a)})).then(function(){for(const o of a.scenes)o.updateMatrixWorld();t(a)})}).catch(i)}_markDefs(){const t=this.json.nodes||[],i=this.json.skins||[],c=this.json.meshes||[];for(let n=0,e=i.length;n<e;n++){const r=i[n].joints;for(let a=0,o=r.length;a<o;a++)t[r[a]].isBone=!0}for(let n=0,e=t.length;n<e;n++){const r=t[n];r.mesh!==void 0&&(this._addNodeRef(this.meshCache,r.mesh),r.skin!==void 0&&(c[r.mesh].isSkinnedMesh=!0)),r.camera!==void 0&&this._addNodeRef(this.cameraCache,r.camera)}}_addNodeRef(t,i){i!==void 0&&(t.refs[i]===void 0&&(t.refs[i]=t.uses[i]=0),t.refs[i]++)}_getNodeRef(t,i,c){if(t.refs[i]<=1)return c;const n=c.clone(),e=(r,a)=>{const o=this.associations.get(r);o!=null&&this.associations.set(a,o);for(const[s,l]of r.children.entries())e(l,a.children[s])};return e(c,n),n.name+="_instance_"+t.uses[i]++,n}_invokeOne(t){const i=Object.values(this.plugins);i.push(this);for(let c=0;c<i.length;c++){const n=t(i[c]);if(n)return n}return null}_invokeAll(t){const i=Object.values(this.plugins);i.unshift(this);const c=[];for(let n=0;n<i.length;n++){const e=t(i[n]);e&&c.push(e)}return c}getDependency(t,i){const c=t+":"+i;let n=this.cache.get(c);if(!n){switch(t){case"scene":n=this.loadScene(i);break;case"node":n=this._invokeOne(function(e){return e.loadNode&&e.loadNode(i)});break;case"mesh":n=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(i)});break;case"accessor":n=this.loadAccessor(i);break;case"bufferView":n=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(i)});break;case"buffer":n=this.loadBuffer(i);break;case"material":n=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(i)});break;case"texture":n=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(i)});break;case"skin":n=this.loadSkin(i);break;case"animation":n=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(i)});break;case"camera":n=this.loadCamera(i);break;default:if(n=this._invokeOne(function(e){return e!=this&&e.getDependency&&e.getDependency(t,i)}),!n)throw new Error("Unknown type: "+t);break}this.cache.add(c,n)}return n}getDependencies(t){let i=this.cache.get(t);if(!i){const c=this,n=this.json[t+(t==="mesh"?"es":"s")]||[];i=Promise.all(n.map(function(e,r){return c.getDependency(t,r)})),this.cache.add(t,i)}return i}loadBuffer(t){const i=this.json.buffers[t],c=this.fileLoader;if(i.type&&i.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+i.type+" buffer type is not supported.");if(i.uri===void 0&&t===0)return Promise.resolve(this.extensions[ge.KHR_BINARY_GLTF].body);const n=this.options;return new Promise(function(e,r){c.load(nn.resolveURL(i.uri,n.path),e,void 0,function(){r(new Error('THREE.GLTFLoader: Failed to load buffer "'+i.uri+'".'))})})}loadBufferView(t){const i=this.json.bufferViews[t];return this.getDependency("buffer",i.buffer).then(function(c){const n=i.byteLength||0,e=i.byteOffset||0;return c.slice(e,e+n)})}loadAccessor(t){const i=this,c=this.json,n=this.json.accessors[t];if(n.bufferView===void 0&&n.sparse===void 0){const r=ir[n.type],a=St[n.componentType],o=n.normalized===!0,s=new a(n.count*r);return Promise.resolve(new rn(s,r,o))}const e=[];return n.bufferView!==void 0?e.push(this.getDependency("bufferView",n.bufferView)):e.push(null),n.sparse!==void 0&&(e.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),e.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(e).then(function(r){const a=r[0],o=ir[n.type],s=St[n.componentType],l=s.BYTES_PER_ELEMENT,f=l*o,d=n.byteOffset||0,h=n.bufferView!==void 0?c.bufferViews[n.bufferView].byteStride:void 0,A=n.normalized===!0;let m,p;if(h&&h!==f){const v=Math.floor(d/h),C="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+v+":"+n.count;let b=i.cache.get(C);b||(m=new s(a,v*h,n.count*h/l),b=new ps(m,h/l),i.cache.add(C,b)),p=new Ls(b,o,d%h/l,A)}else a===null?m=new s(n.count*o):m=new s(a,d,n.count*o),p=new rn(m,o,A);if(n.sparse!==void 0){const v=ir.SCALAR,C=St[n.sparse.indices.componentType],b=n.sparse.indices.byteOffset||0,g=n.sparse.values.byteOffset||0,E=new C(r[1],b,n.sparse.count*v),D=new s(r[2],g,n.sparse.count*o);a!==null&&(p=new rn(p.array.slice(),p.itemSize,p.normalized));for(let F=0,M=E.length;F<M;F++){const U=E[F];if(p.setX(U,D[F*o]),o>=2&&p.setY(U,D[F*o+1]),o>=3&&p.setZ(U,D[F*o+2]),o>=4&&p.setW(U,D[F*o+3]),o>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return p})}loadTexture(t){const i=this.json,c=this.options,e=i.textures[t].source,r=i.images[e];let a=this.textureLoader;if(r.uri){const o=c.manager.getHandler(r.uri);o!==null&&(a=o)}return this.loadTextureImage(t,e,a)}loadTextureImage(t,i,c){const n=this,e=this.json,r=e.textures[t],a=e.images[i],o=(a.uri||a.bufferView)+":"+r.sampler;if(this.textureCache[o])return this.textureCache[o];const s=this.loadImageSource(i,c).then(function(l){l.flipY=!1,l.name=r.name||a.name||"",l.name===""&&typeof a.uri=="string"&&a.uri.startsWith("data:image/")===!1&&(l.name=a.uri);const d=(e.samplers||{})[r.sampler]||{};return l.magFilter=Yo[d.magFilter]||In,l.minFilter=Yo[d.minFilter]||ya,l.wrapS=Vo[d.wrapS]||Br,l.wrapT=Vo[d.wrapT]||Br,n.associations.set(l,{textures:t}),l}).catch(function(){return null});return this.textureCache[o]=s,s}loadImageSource(t,i){const c=this,n=this.json,e=this.options;if(this.sourceCache[t]!==void 0)return this.sourceCache[t].then(f=>f.clone());const r=n.images[t],a=self.URL||self.webkitURL;let o=r.uri||"",s=!1;if(r.bufferView!==void 0)o=c.getDependency("bufferView",r.bufferView).then(function(f){s=!0;const d=new Blob([f],{type:r.mimeType});return o=a.createObjectURL(d),o});else if(r.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+t+" is missing URI and bufferView");const l=Promise.resolve(o).then(function(f){return new Promise(function(d,h){let A=d;i.isImageBitmapLoader===!0&&(A=function(m){const p=new cn(m);p.needsUpdate=!0,d(p)}),i.load(nn.resolveURL(f,e.path),A,void 0,h)})}).then(function(f){return s===!0&&a.revokeObjectURL(o),ot(f,r),f.userData.mimeType=r.mimeType||ic(r.uri),f}).catch(function(f){throw console.error("THREE.GLTFLoader: Couldn't load texture",o),f});return this.sourceCache[t]=l,l}assignTexture(t,i,c,n){const e=this;return this.getDependency("texture",c.index).then(function(r){if(!r)return null;if(c.texCoord!==void 0&&c.texCoord>0&&(r=r.clone(),r.channel=c.texCoord),e.extensions[ge.KHR_TEXTURE_TRANSFORM]){const a=c.extensions!==void 0?c.extensions[ge.KHR_TEXTURE_TRANSFORM]:void 0;if(a){const o=e.associations.get(r);r=e.extensions[ge.KHR_TEXTURE_TRANSFORM].extendTexture(r,a),e.associations.set(r,o)}}return n!==void 0&&(typeof n=="number"&&(n=n===Xo?vt:at),"colorSpace"in r?r.colorSpace=n:r.encoding=n===vt?Xo:xi),t[i]=r,r})}assignFinalMaterial(t){const i=t.geometry;let c=t.material;const n=i.attributes.tangent===void 0,e=i.attributes.color!==void 0,r=i.attributes.normal===void 0;if(t.isPoints){const a="PointsMaterial:"+c.uuid;let o=this.cache.get(a);o||(o=new bs,or.prototype.copy.call(o,c),o.color.copy(c.color),o.map=c.map,o.sizeAttenuation=!1,this.cache.add(a,o)),c=o}else if(t.isLine){const a="LineBasicMaterial:"+c.uuid;let o=this.cache.get(a);o||(o=new Fs,or.prototype.copy.call(o,c),o.color.copy(c.color),o.map=c.map,this.cache.add(a,o)),c=o}if(n||e||r){let a="ClonedMaterial:"+c.uuid+":";n&&(a+="derivative-tangents:"),e&&(a+="vertex-colors:"),r&&(a+="flat-shading:");let o=this.cache.get(a);o||(o=c.clone(),e&&(o.vertexColors=!0),r&&(o.flatShading=!0),n&&(o.normalScale&&(o.normalScale.y*=-1),o.clearcoatNormalScale&&(o.clearcoatNormalScale.y*=-1)),this.cache.add(a,o),this.associations.set(o,this.associations.get(c))),c=o}t.material=c}getMaterialType(){return ba}loadMaterial(t){const i=this,c=this.json,n=this.extensions,e=c.materials[t];let r;const a={},o=e.extensions||{},s=[];if(o[ge.KHR_MATERIALS_UNLIT]){const f=n[ge.KHR_MATERIALS_UNLIT];r=f.getMaterialType(),s.push(f.extendParams(a,e,i))}else{const f=e.pbrMetallicRoughness||{};if(a.color=new Pe(1,1,1),a.opacity=1,Array.isArray(f.baseColorFactor)){const d=f.baseColorFactor;a.color.setRGB(d[0],d[1],d[2],at),a.opacity=d[3]}f.baseColorTexture!==void 0&&s.push(i.assignTexture(a,"map",f.baseColorTexture,vt)),a.metalness=f.metallicFactor!==void 0?f.metallicFactor:1,a.roughness=f.roughnessFactor!==void 0?f.roughnessFactor:1,f.metallicRoughnessTexture!==void 0&&(s.push(i.assignTexture(a,"metalnessMap",f.metallicRoughnessTexture)),s.push(i.assignTexture(a,"roughnessMap",f.metallicRoughnessTexture))),r=this._invokeOne(function(d){return d.getMaterialType&&d.getMaterialType(t)}),s.push(Promise.all(this._invokeAll(function(d){return d.extendMaterialParams&&d.extendMaterialParams(t,a)})))}e.doubleSided===!0&&(a.side=Fa);const l=e.alphaMode||cr.OPAQUE;if(l===cr.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,l===cr.MASK&&(a.alphaTest=e.alphaCutoff!==void 0?e.alphaCutoff:.5)),e.normalTexture!==void 0&&r!==xt&&(s.push(i.assignTexture(a,"normalMap",e.normalTexture)),a.normalScale=new qe(1,1),e.normalTexture.scale!==void 0)){const f=e.normalTexture.scale;a.normalScale.set(f,f)}if(e.occlusionTexture!==void 0&&r!==xt&&(s.push(i.assignTexture(a,"aoMap",e.occlusionTexture)),e.occlusionTexture.strength!==void 0&&(a.aoMapIntensity=e.occlusionTexture.strength)),e.emissiveFactor!==void 0&&r!==xt){const f=e.emissiveFactor;a.emissive=new Pe().setRGB(f[0],f[1],f[2],at)}return e.emissiveTexture!==void 0&&r!==xt&&s.push(i.assignTexture(a,"emissiveMap",e.emissiveTexture,vt)),Promise.all(s).then(function(){const f=new r(a);return e.name&&(f.name=e.name),ot(f,e),i.associations.set(f,{materials:t}),e.extensions&&mt(n,f,e),f})}createUniqueName(t){const i=Es.sanitizeNodeName(t||"");return i in this.nodeNamesUsed?i+"_"+ ++this.nodeNamesUsed[i]:(this.nodeNamesUsed[i]=0,i)}loadGeometries(t){const i=this,c=this.extensions,n=this.primitiveCache;function e(a){return c[ge.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a,i).then(function(o){return zo(o,a,i)})}const r=[];for(let a=0,o=t.length;a<o;a++){const s=t[a],l=sc(s),f=n[l];if(f)r.push(f.promise);else{let d;s.extensions&&s.extensions[ge.KHR_DRACO_MESH_COMPRESSION]?d=e(s):d=zo(new Ea,s,i),n[l]={primitive:s,promise:d},r.push(d)}}return Promise.all(r)}loadMesh(t){const i=this,c=this.json,n=this.extensions,e=c.meshes[t],r=e.primitives,a=[];for(let o=0,s=r.length;o<s;o++){const l=r[o].material===void 0?rc(this.cache):this.getDependency("material",r[o].material);a.push(l)}return a.push(i.loadGeometries(r)),Promise.all(a).then(function(o){const s=o.slice(0,o.length-1),l=o[o.length-1],f=[];for(let h=0,A=l.length;h<A;h++){const m=l[h],p=r[h];let v;const C=s[h];if(p.mode===Xe.TRIANGLES||p.mode===Xe.TRIANGLE_STRIP||p.mode===Xe.TRIANGLE_FAN||p.mode===void 0)v=e.isSkinnedMesh===!0?new Ms(m,C):new _n(m,C),v.isSkinnedMesh===!0&&v.normalizeSkinWeights(),p.mode===Xe.TRIANGLE_STRIP?v.geometry=Qo(v.geometry,Ba):p.mode===Xe.TRIANGLE_FAN&&(v.geometry=Qo(v.geometry,mr));else if(p.mode===Xe.LINES)v=new Ts(m,C);else if(p.mode===Xe.LINE_STRIP)v=new Ds(m,C);else if(p.mode===Xe.LINE_LOOP)v=new Gs(m,C);else if(p.mode===Xe.POINTS)v=new Rs(m,C);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+p.mode);Object.keys(v.geometry.morphAttributes).length>0&&ac(v,e),v.name=i.createUniqueName(e.name||"mesh_"+t),ot(v,e),p.extensions&&mt(n,v,p),i.assignFinalMaterial(v),f.push(v)}for(let h=0,A=f.length;h<A;h++)i.associations.set(f[h],{meshes:t,primitives:h});if(f.length===1)return e.extensions&&mt(n,f[0],e),f[0];const d=new ar;e.extensions&&mt(n,d,e),i.associations.set(d,{meshes:t});for(let h=0,A=f.length;h<A;h++)d.add(f[h]);return d})}loadCamera(t){let i;const c=this.json.cameras[t],n=c[c.type];if(!n){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return c.type==="perspective"?i=new xs(Ma.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):c.type==="orthographic"&&(i=new Is(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),c.name&&(i.name=this.createUniqueName(c.name)),ot(i,c),Promise.resolve(i)}loadSkin(t){const i=this.json.skins[t],c=[];for(let n=0,e=i.joints.length;n<e;n++)c.push(this._loadNodeShallow(i.joints[n]));return i.inverseBindMatrices!==void 0?c.push(this.getDependency("accessor",i.inverseBindMatrices)):c.push(null),Promise.all(c).then(function(n){const e=n.pop(),r=n,a=[],o=[];for(let s=0,l=r.length;s<l;s++){const f=r[s];if(f){a.push(f);const d=new Ct;e!==null&&d.fromArray(e.array,s*16),o.push(d)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',i.joints[s])}return new Ss(a,o)})}loadAnimation(t){const i=this.json,c=this,n=i.animations[t],e=n.name?n.name:"animation_"+t,r=[],a=[],o=[],s=[],l=[];for(let f=0,d=n.channels.length;f<d;f++){const h=n.channels[f],A=n.samplers[h.sampler],m=h.target,p=m.node,v=n.parameters!==void 0?n.parameters[A.input]:A.input,C=n.parameters!==void 0?n.parameters[A.output]:A.output;m.node!==void 0&&(r.push(this.getDependency("node",p)),a.push(this.getDependency("accessor",v)),o.push(this.getDependency("accessor",C)),s.push(A),l.push(m))}return Promise.all([Promise.all(r),Promise.all(a),Promise.all(o),Promise.all(s),Promise.all(l)]).then(function(f){const d=f[0],h=f[1],A=f[2],m=f[3],p=f[4],v=[];for(let C=0,b=d.length;C<b;C++){const g=d[C],E=h[C],D=A[C],F=m[C],M=p[C];if(g===void 0)continue;g.updateMatrix&&g.updateMatrix();const U=c._createAnimationTracks(g,E,D,F,M);if(U)for(let x=0;x<U.length;x++)v.push(U[x])}return new ws(e,void 0,v)})}createNodeMesh(t){const i=this.json,c=this,n=i.nodes[t];return n.mesh===void 0?null:c.getDependency("mesh",n.mesh).then(function(e){const r=c._getNodeRef(c.meshCache,n.mesh,e);return n.weights!==void 0&&r.traverse(function(a){if(a.isMesh)for(let o=0,s=n.weights.length;o<s;o++)a.morphTargetInfluences[o]=n.weights[o]}),r})}loadNode(t){const i=this.json,c=this,n=i.nodes[t],e=c._loadNodeShallow(t),r=[],a=n.children||[];for(let s=0,l=a.length;s<l;s++)r.push(c.getDependency("node",a[s]));const o=n.skin===void 0?Promise.resolve(null):c.getDependency("skin",n.skin);return Promise.all([e,Promise.all(r),o]).then(function(s){const l=s[0],f=s[1],d=s[2];d!==null&&l.traverse(function(h){h.isSkinnedMesh&&h.bind(d,cc)});for(let h=0,A=f.length;h<A;h++)l.add(f[h]);return l})}_loadNodeShallow(t){const i=this.json,c=this.extensions,n=this;if(this.nodeCache[t]!==void 0)return this.nodeCache[t];const e=i.nodes[t],r=e.name?n.createUniqueName(e.name):"",a=[],o=n._invokeOne(function(s){return s.createNodeMesh&&s.createNodeMesh(t)});return o&&a.push(o),e.camera!==void 0&&a.push(n.getDependency("camera",e.camera).then(function(s){return n._getNodeRef(n.cameraCache,e.camera,s)})),n._invokeAll(function(s){return s.createNodeAttachment&&s.createNodeAttachment(t)}).forEach(function(s){a.push(s)}),this.nodeCache[t]=Promise.all(a).then(function(s){let l;if(e.isBone===!0?l=new Us:s.length>1?l=new ar:s.length===1?l=s[0]:l=new Ca,l!==s[0])for(let f=0,d=s.length;f<d;f++)l.add(s[f]);if(e.name&&(l.userData.name=e.name,l.name=r),ot(l,e),e.extensions&&mt(c,l,e),e.matrix!==void 0){const f=new Ct;f.fromArray(e.matrix),l.applyMatrix4(f)}else e.translation!==void 0&&l.position.fromArray(e.translation),e.rotation!==void 0&&l.quaternion.fromArray(e.rotation),e.scale!==void 0&&l.scale.fromArray(e.scale);return n.associations.has(l)||n.associations.set(l,{}),n.associations.get(l).nodes=t,l}),this.nodeCache[t]}loadScene(t){const i=this.extensions,c=this.json.scenes[t],n=this,e=new ar;c.name&&(e.name=n.createUniqueName(c.name)),ot(e,c),c.extensions&&mt(i,e,c);const r=c.nodes||[],a=[];for(let o=0,s=r.length;o<s;o++)a.push(n.getDependency("node",r[o]));return Promise.all(a).then(function(o){for(let l=0,f=o.length;l<f;l++)e.add(o[l]);const s=l=>{const f=new Map;for(const[d,h]of n.associations)(d instanceof or||d instanceof cn)&&f.set(d,h);return l.traverse(d=>{const h=n.associations.get(d);h!=null&&f.set(d,h)}),f};return n.associations=s(e),e})}_createAnimationTracks(t,i,c,n,e){const r=[],a=t.name?t.name:t.uuid,o=[];dt[e.path]===dt.weights?t.traverse(function(d){d.morphTargetInfluences&&o.push(d.name?d.name:d.uuid)}):o.push(a);let s;switch(dt[e.path]){case dt.weights:s=so;break;case dt.rotation:s=io;break;case dt.position:case dt.scale:s=ao;break;default:switch(c.itemSize){case 1:s=so;break;case 2:case 3:default:s=ao;break}break}const l=n.interpolation!==void 0?nc[n.interpolation]:Ta,f=this._getArrayFromAccessor(c);for(let d=0,h=o.length;d<h;d++){const A=new s(o[d]+"."+dt[e.path],i.array,f,l);n.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(A),r.push(A)}return r}_getArrayFromAccessor(t){let i=t.array;if(t.normalized){const c=Fr(i.constructor),n=new Float32Array(i.length);for(let e=0,r=i.length;e<r;e++)n[e]=i[e]*c;i=n}return i}_createCubicSplineTrackInterpolant(t){t.createInterpolant=function(c){const n=this instanceof io?tc:wa;return new n(this.times,this.values,this.getValueSize()/3,c)},t.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function uc(u,t,i){const c=t.attributes,n=new Gr;if(c.POSITION!==void 0){const a=i.json.accessors[c.POSITION],o=a.min,s=a.max;if(o!==void 0&&s!==void 0){if(n.set(new ke(o[0],o[1],o[2]),new ke(s[0],s[1],s[2])),a.normalized){const l=Fr(St[a.componentType]);n.min.multiplyScalar(l),n.max.multiplyScalar(l)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const e=t.targets;if(e!==void 0){const a=new ke,o=new ke;for(let s=0,l=e.length;s<l;s++){const f=e[s];if(f.POSITION!==void 0){const d=i.json.accessors[f.POSITION],h=d.min,A=d.max;if(h!==void 0&&A!==void 0){if(o.setX(Math.max(Math.abs(h[0]),Math.abs(A[0]))),o.setY(Math.max(Math.abs(h[1]),Math.abs(A[1]))),o.setZ(Math.max(Math.abs(h[2]),Math.abs(A[2]))),d.normalized){const m=Fr(St[d.componentType]);o.multiplyScalar(m)}a.max(o)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}n.expandByVector(a)}u.boundingBox=n;const r=new Ga;n.getCenter(r.center),r.radius=n.min.distanceTo(n.max)/2,u.boundingSphere=r}function zo(u,t,i){const c=t.attributes,n=[];function e(r,a){return i.getDependency("accessor",r).then(function(o){u.setAttribute(a,o)})}for(const r in c){const a=br[r]||r.toLowerCase();a in u.attributes||n.push(e(c[r],a))}if(t.indices!==void 0&&!u.index){const r=i.getDependency("accessor",t.indices).then(function(a){u.setIndex(a)});n.push(r)}return ot(u,t),uc(u,t,i),Promise.all(n).then(function(){return t.targets!==void 0?oc(u,t.targets,i):u})}const ur=new WeakMap;class fc extends va{constructor(t){super(t),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(t){return this.decoderPath=t,this}setDecoderConfig(t){return this.decoderConfig=t,this}setWorkerLimit(t){return this.workerLimit=t,this}load(t,i,c,n){const e=new xn(this.manager);e.setPath(this.path),e.setResponseType("arraybuffer"),e.setRequestHeader(this.requestHeader),e.setWithCredentials(this.withCredentials),e.load(t,r=>{const a={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(r,a).then(i).catch(n)},c,n)}decodeDracoFile(t,i,c,n){const e={attributeIDs:c||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!c};this.decodeGeometry(t,e).then(i)}decodeGeometry(t,i){for(const o in i.attributeTypes){const s=i.attributeTypes[o];s.BYTES_PER_ELEMENT!==void 0&&(i.attributeTypes[o]=s.name)}const c=JSON.stringify(i);if(ur.has(t)){const o=ur.get(t);if(o.key===c)return o.promise;if(t.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let n;const e=this.workerNextTaskID++,r=t.byteLength,a=this._getWorker(e,r).then(o=>(n=o,new Promise((s,l)=>{n._callbacks[e]={resolve:s,reject:l},n.postMessage({type:"decode",id:e,taskConfig:i,buffer:t},[t])}))).then(o=>this._createGeometry(o.geometry));return a.catch(()=>!0).then(()=>{n&&e&&this._releaseTask(n,e)}),ur.set(t,{key:c,promise:a}),a}_createGeometry(t){const i=new Ea;t.index&&i.setIndex(new rn(t.index.array,1));for(let c=0;c<t.attributes.length;c++){const n=t.attributes[c],e=n.name,r=n.array,a=n.itemSize;i.setAttribute(e,new rn(r,a))}return i}_loadLibrary(t,i){const c=new xn(this.manager);return c.setPath(this.decoderPath),c.setResponseType(i),c.setWithCredentials(this.withCredentials),new Promise((n,e)=>{c.load(t,n,void 0,e)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const t=typeof WebAssembly!="object"||this.decoderConfig.type==="js",i=[];return t?i.push(this._loadLibrary("draco_decoder.js","text")):(i.push(this._loadLibrary("draco_wasm_wrapper.js","text")),i.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(i).then(c=>{const n=c[0];t||(this.decoderConfig.wasmBinary=c[1]);const e=dc.toString(),r=["/* draco decoder */",n,"","/* worker */",e.substring(e.indexOf("{")+1,e.lastIndexOf("}"))].join(`
|
|
3
|
+
`);this.workerSourceURL=URL.createObjectURL(new Blob([r]))}),this.decoderPending}_getWorker(t,i){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const n=new Worker(this.workerSourceURL);n._callbacks={},n._taskCosts={},n._taskLoad=0,n.postMessage({type:"init",decoderConfig:this.decoderConfig}),n.onmessage=function(e){const r=e.data;switch(r.type){case"decode":n._callbacks[r.id].resolve(r);break;case"error":n._callbacks[r.id].reject(r);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+r.type+'"')}},this.workerPool.push(n)}else this.workerPool.sort(function(n,e){return n._taskLoad>e._taskLoad?-1:1});const c=this.workerPool[this.workerPool.length-1];return c._taskCosts[t]=i,c._taskLoad+=i,c})}_releaseTask(t,i){t._taskLoad-=t._taskCosts[i],delete t._callbacks[i],delete t._taskCosts[i]}debug(){console.log("Task load: ",this.workerPool.map(t=>t._taskLoad))}dispose(){for(let t=0;t<this.workerPool.length;++t)this.workerPool[t].terminate();return this.workerPool.length=0,this}}function dc(){let u,t;onmessage=function(r){const a=r.data;switch(a.type){case"init":u=a.decoderConfig,t=new Promise(function(l){u.onModuleLoaded=function(f){l({draco:f})},DracoDecoderModule(u)});break;case"decode":const o=a.buffer,s=a.taskConfig;t.then(l=>{const f=l.draco,d=new f.Decoder,h=new f.DecoderBuffer;h.Init(new Int8Array(o),o.byteLength);try{const A=i(f,d,h,s),m=A.attributes.map(p=>p.array.buffer);A.index&&m.push(A.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:A},m)}catch(A){console.error(A),self.postMessage({type:"error",id:a.id,error:A.message})}finally{f.destroy(h),f.destroy(d)}});break}};function i(r,a,o,s){const l=s.attributeIDs,f=s.attributeTypes;let d,h;const A=a.GetEncodedGeometryType(o);if(A===r.TRIANGULAR_MESH)d=new r.Mesh,h=a.DecodeBufferToMesh(o,d);else if(A===r.POINT_CLOUD)d=new r.PointCloud,h=a.DecodeBufferToPointCloud(o,d);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!h.ok()||d.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+h.error_msg());const m={index:null,attributes:[]};for(const p in l){const v=self[f[p]];let C,b;if(s.useUniqueIDs)b=l[p],C=a.GetAttributeByUniqueId(d,b);else{if(b=a.GetAttributeId(d,r[l[p]]),b===-1)continue;C=a.GetAttribute(d,b)}m.attributes.push(n(r,a,d,p,v,C))}return A===r.TRIANGULAR_MESH&&(m.index=c(r,a,d)),r.destroy(d),m}function c(r,a,o){const l=o.num_faces()*3,f=l*4,d=r._malloc(f);a.GetTrianglesUInt32Array(o,f,d);const h=new Uint32Array(r.HEAPF32.buffer,d,l).slice();return r._free(d),{array:h,itemSize:1}}function n(r,a,o,s,l,f){const d=f.num_components(),A=o.num_points()*d,m=A*l.BYTES_PER_ELEMENT,p=e(r,l),v=r._malloc(m);a.GetAttributeDataArrayForAllPoints(o,f,p,m,v);const C=new l(r.HEAPF32.buffer,v,A).slice();return r._free(v),{name:s,array:C,itemSize:d}}function e(r,a){switch(a){case Float32Array:return r.DT_FLOAT32;case Int8Array:return r.DT_INT8;case Int16Array:return r.DT_INT16;case Int32Array:return r.DT_INT32;case Uint8Array:return r.DT_UINT8;case Uint16Array:return r.DT_UINT16;case Uint32Array:return r.DT_UINT32}}}let Fn;const fr=()=>{if(Fn)return Fn;const u="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",t="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",i=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),c=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if(typeof WebAssembly!="object")return{supported:!1};let n=u;WebAssembly.validate(i)&&(n=t);let e;const r=WebAssembly.instantiate(a(n),{}).then(f=>{e=f.instance,e.exports.__wasm_call_ctors()});function a(f){const d=new Uint8Array(f.length);for(let A=0;A<f.length;++A){const m=f.charCodeAt(A);d[A]=m>96?m-71:m>64?m-65:m>47?m+4:m>46?63:62}let h=0;for(let A=0;A<f.length;++A)d[h++]=d[A]<60?c[d[A]]:(d[A]-60)*64+d[++A];return d.buffer.slice(0,h)}function o(f,d,h,A,m,p){const v=e.exports.sbrk,C=h+3&-4,b=v(C*A),g=v(m.length),E=new Uint8Array(e.exports.memory.buffer);E.set(m,g);const D=f(b,h,A,g,m.length);if(D===0&&p&&p(b,C,A),d.set(E.subarray(b,b+h*A)),v(b-v(0)),D!==0)throw new Error(`Malformed buffer data: ${D}`)}const s={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return Fn={ready:r,supported:!0,decodeVertexBuffer(f,d,h,A,m){o(e.exports.meshopt_decodeVertexBuffer,f,d,h,A,e.exports[s[m]])},decodeIndexBuffer(f,d,h,A){o(e.exports.meshopt_decodeIndexBuffer,f,d,h,A)},decodeIndexSequence(f,d,h,A){o(e.exports.meshopt_decodeIndexSequence,f,d,h,A)},decodeGltfBuffer(f,d,h,A,m,p){o(e.exports[l[m]],f,d,h,A,e.exports[s[p]])}},Fn};function hc(){var u=Object.create(null);function t(n,e){var r=n.id,a=n.name,o=n.dependencies;o===void 0&&(o=[]);var s=n.init;s===void 0&&(s=function(){});var l=n.getTransferables;if(l===void 0&&(l=null),!u[r])try{o=o.map(function(d){return d&&d.isWorkerModule&&(t(d,function(h){if(h instanceof Error)throw h}),d=u[d.id].value),d}),s=c("<"+a+">.init",s),l&&(l=c("<"+a+">.getTransferables",l));var f=null;typeof s=="function"?f=s.apply(void 0,o):console.error("worker module init function failed to rehydrate"),u[r]={id:r,value:f,getTransferables:l},e(f)}catch(d){d&&d.noLog||console.error(d),e(d)}}function i(n,e){var r,a=n.id,o=n.args;(!u[a]||typeof u[a].value!="function")&&e(new Error("Worker module "+a+": not found or its 'init' did not return a function"));try{var s=(r=u[a]).value.apply(r,o);s&&typeof s.then=="function"?s.then(l,function(f){return e(f instanceof Error?f:new Error(""+f))}):l(s)}catch(f){e(f)}function l(f){try{var d=u[a].getTransferables&&u[a].getTransferables(f);(!d||!Array.isArray(d)||!d.length)&&(d=void 0),e(f,d)}catch(h){console.error(h),e(h)}}}function c(n,e){var r=void 0;self.troikaDefine=function(o){return r=o};var a=URL.createObjectURL(new Blob(["/** "+n.replace(/\*/g,"")+` **/
|
|
4
|
+
|
|
5
|
+
troikaDefine(
|
|
6
|
+
`+e+`
|
|
7
|
+
)`],{type:"application/javascript"}));try{importScripts(a)}catch(o){console.error(o)}return URL.revokeObjectURL(a),delete self.troikaDefine,r}self.addEventListener("message",function(n){var e=n.data,r=e.messageId,a=e.action,o=e.data;try{a==="registerModule"&&t(o,function(s){s instanceof Error?postMessage({messageId:r,success:!1,error:s.message}):postMessage({messageId:r,success:!0,result:{isCallable:typeof s=="function"}})}),a==="callModule"&&i(o,function(s,l){s instanceof Error?postMessage({messageId:r,success:!1,error:s.message}):postMessage({messageId:r,success:!0,result:s},l||void 0)})}catch(s){postMessage({messageId:r,success:!1,error:s.stack})}})}function Ac(u){var t=function(){for(var i=[],c=arguments.length;c--;)i[c]=arguments[c];return t._getInitResult().then(function(n){if(typeof n=="function")return n.apply(void 0,i);throw new Error("Worker module function was called but `init` did not return a callable function")})};return t._getInitResult=function(){var i=u.dependencies,c=u.init;i=Array.isArray(i)?i.map(function(e){return e&&(e=e.onMainThread||e,e._getInitResult&&(e=e._getInitResult())),e}):[];var n=Promise.all(i).then(function(e){return c.apply(null,e)});return t._getInitResult=function(){return n},n},t}var Ua=function(){var u=!1;if(typeof window<"u"&&typeof window.document<"u")try{var t=new Worker(URL.createObjectURL(new Blob([""],{type:"application/javascript"})));t.terminate(),u=!0}catch(i){console.log("Troika createWorkerModule: web workers not allowed; falling back to main thread execution. Cause: ["+i.message+"]")}return Ua=function(){return u},u},pc=0,mc=0,dr=!1,an=Object.create(null),sn=Object.create(null),Er=Object.create(null);function _t(u){if((!u||typeof u.init!="function")&&!dr)throw new Error("requires `options.init` function");var t=u.dependencies,i=u.init,c=u.getTransferables,n=u.workerId,e=Ac(u);n==null&&(n="#default");var r="workerModule"+ ++pc,a=u.name||r,o=null;t=t&&t.map(function(l){return typeof l=="function"&&!l.workerModuleData&&(dr=!0,l=_t({workerId:n,name:"<"+a+"> function dependency: "+l.name,init:`function(){return (
|
|
8
|
+
`+Gn(l)+`
|
|
9
|
+
)}`}),dr=!1),l&&l.workerModuleData&&(l=l.workerModuleData),l});function s(){for(var l=[],f=arguments.length;f--;)l[f]=arguments[f];if(!Ua())return e.apply(void 0,l);if(!o){o=Zo(n,"registerModule",s.workerModuleData);var d=function(){o=null,sn[n].delete(d)};(sn[n]||(sn[n]=new Set)).add(d)}return o.then(function(h){var A=h.isCallable;if(A)return Zo(n,"callModule",{id:r,args:l});throw new Error("Worker module function was called but `init` did not return a callable function")})}return s.workerModuleData={isWorkerModule:!0,id:r,name:a,dependencies:t,init:Gn(i),getTransferables:c&&Gn(c)},s.onMainThread=e,s}function Bc(u){sn[u]&&sn[u].forEach(function(t){t()}),an[u]&&(an[u].terminate(),delete an[u])}function Gn(u){var t=u.toString();return!/^function/.test(t)&&/^\w+\s*\(/.test(t)&&(t="function "+t),t}function vc(u){var t=an[u];if(!t){var i=Gn(hc);t=an[u]=new Worker(URL.createObjectURL(new Blob(["/** Worker Module Bootstrap: "+u.replace(/\*/g,"")+` **/
|
|
10
|
+
|
|
11
|
+
;(`+i+")()"],{type:"application/javascript"}))),t.onmessage=function(c){var n=c.data,e=n.messageId,r=Er[e];if(!r)throw new Error("WorkerModule response with empty or unknown messageId");delete Er[e],r(n)}}return t}function Zo(u,t,i){return new Promise(function(c,n){var e=++mc;Er[e]=function(r){r.success?c(r.result):n(new Error("Error in worker "+t+" call: "+r.error))},vc(u).postMessage({messageId:e,action:t,data:i})})}function _a(){var u=function(t){function i(O,L,B,T,I,w,R,J){var _=1-R;J.x=_*_*O+2*_*R*B+R*R*I,J.y=_*_*L+2*_*R*T+R*R*w}function c(O,L,B,T,I,w,R,J,_,H){var W=1-_;H.x=W*W*W*O+3*W*W*_*B+3*W*_*_*I+_*_*_*R,H.y=W*W*W*L+3*W*W*_*T+3*W*_*_*w+_*_*_*J}function n(O,L){for(var B=/([MLQCZ])([^MLQCZ]*)/g,T,I,w,R,J;T=B.exec(O);){var _=T[2].replace(/^\s*|\s*$/g,"").split(/[,\s]+/).map(function(H){return parseFloat(H)});switch(T[1]){case"M":R=I=_[0],J=w=_[1];break;case"L":(_[0]!==R||_[1]!==J)&&L("L",R,J,R=_[0],J=_[1]);break;case"Q":{L("Q",R,J,R=_[2],J=_[3],_[0],_[1]);break}case"C":{L("C",R,J,R=_[4],J=_[5],_[0],_[1],_[2],_[3]);break}case"Z":(R!==I||J!==w)&&L("L",R,J,I,w);break}}}function e(O,L,B){B===void 0&&(B=16);var T={x:0,y:0};n(O,function(I,w,R,J,_,H,W,ee,X){switch(I){case"L":L(w,R,J,_);break;case"Q":{for(var N=w,me=R,fe=1;fe<B;fe++)i(w,R,H,W,J,_,fe/(B-1),T),L(N,me,T.x,T.y),N=T.x,me=T.y;break}case"C":{for(var Z=w,te=R,ce=1;ce<B;ce++)c(w,R,H,W,ee,X,J,_,ce/(B-1),T),L(Z,te,T.x,T.y),Z=T.x,te=T.y;break}}})}var r="precision highp float;attribute vec2 aUV;varying vec2 vUV;void main(){vUV=aUV;gl_Position=vec4(mix(vec2(-1.0),vec2(1.0),aUV),0.0,1.0);}",a="precision highp float;uniform sampler2D tex;varying vec2 vUV;void main(){gl_FragColor=texture2D(tex,vUV);}",o=new WeakMap,s={premultipliedAlpha:!1,preserveDrawingBuffer:!0,antialias:!1,depth:!1};function l(O,L){var B=O.getContext?O.getContext("webgl",s):O,T=o.get(B);if(!T){let W=function(Z){var te=w[Z];if(!te&&(te=w[Z]=B.getExtension(Z),!te))throw new Error(Z+" not supported");return te},ee=function(Z,te){var ce=B.createShader(te);return B.shaderSource(ce,Z),B.compileShader(ce),ce},X=function(Z,te,ce,Q){if(!R[Z]){var ne={},$={},k=B.createProgram();B.attachShader(k,ee(te,B.VERTEX_SHADER)),B.attachShader(k,ee(ce,B.FRAGMENT_SHADER)),B.linkProgram(k),R[Z]={program:k,transaction:function(z){B.useProgram(k),z({setUniform:function(Y,ye){for(var oe=[],se=arguments.length-2;se-- >0;)oe[se]=arguments[se+2];var ue=$[ye]||($[ye]=B.getUniformLocation(k,ye));B["uniform"+Y].apply(B,[ue].concat(oe))},setAttribute:function(Y,ye,oe,se,ue){var Ae=ne[Y];Ae||(Ae=ne[Y]={buf:B.createBuffer(),loc:B.getAttribLocation(k,Y),data:null}),B.bindBuffer(B.ARRAY_BUFFER,Ae.buf),B.vertexAttribPointer(Ae.loc,ye,B.FLOAT,!1,0,0),B.enableVertexAttribArray(Ae.loc),I?B.vertexAttribDivisor(Ae.loc,se):W("ANGLE_instanced_arrays").vertexAttribDivisorANGLE(Ae.loc,se),ue!==Ae.data&&(B.bufferData(B.ARRAY_BUFFER,ue,oe),Ae.data=ue)}})}}}R[Z].transaction(Q)},N=function(Z,te){_++;try{B.activeTexture(B.TEXTURE0+_);var ce=J[Z];ce||(ce=J[Z]=B.createTexture(),B.bindTexture(B.TEXTURE_2D,ce),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_MIN_FILTER,B.NEAREST),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_MAG_FILTER,B.NEAREST)),B.bindTexture(B.TEXTURE_2D,ce),te(ce,_)}finally{_--}},me=function(Z,te,ce){var Q=B.createFramebuffer();H.push(Q),B.bindFramebuffer(B.FRAMEBUFFER,Q),B.activeTexture(B.TEXTURE0+te),B.bindTexture(B.TEXTURE_2D,Z),B.framebufferTexture2D(B.FRAMEBUFFER,B.COLOR_ATTACHMENT0,B.TEXTURE_2D,Z,0);try{ce(Q)}finally{B.deleteFramebuffer(Q),B.bindFramebuffer(B.FRAMEBUFFER,H[--H.length-1]||null)}},fe=function(){w={},R={},J={},_=-1,H.length=0};var I=typeof WebGL2RenderingContext<"u"&&B instanceof WebGL2RenderingContext,w={},R={},J={},_=-1,H=[];B.canvas.addEventListener("webglcontextlost",function(Z){fe(),Z.preventDefault()},!1),o.set(B,T={gl:B,isWebGL2:I,getExtension:W,withProgram:X,withTexture:N,withTextureFramebuffer:me,handleContextLoss:fe})}L(T)}function f(O,L,B,T,I,w,R,J){R===void 0&&(R=15),J===void 0&&(J=null),l(O,function(_){var H=_.gl,W=_.withProgram,ee=_.withTexture;ee("copy",function(X,N){H.texImage2D(H.TEXTURE_2D,0,H.RGBA,I,w,0,H.RGBA,H.UNSIGNED_BYTE,L),W("copy",r,a,function(me){var fe=me.setUniform,Z=me.setAttribute;Z("aUV",2,H.STATIC_DRAW,0,new Float32Array([0,0,2,0,0,2])),fe("1i","image",N),H.bindFramebuffer(H.FRAMEBUFFER,J||null),H.disable(H.BLEND),H.colorMask(R&8,R&4,R&2,R&1),H.viewport(B,T,I,w),H.scissor(B,T,I,w),H.drawArrays(H.TRIANGLES,0,3)})})})}function d(O,L,B){var T=O.width,I=O.height;l(O,function(w){var R=w.gl,J=new Uint8Array(T*I*4);R.readPixels(0,0,T,I,R.RGBA,R.UNSIGNED_BYTE,J),O.width=L,O.height=B,f(R,J,0,0,T,I)})}var h=Object.freeze({__proto__:null,withWebGLContext:l,renderImageData:f,resizeWebGLCanvasWithoutClearing:d});function A(O,L,B,T,I,w){w===void 0&&(w=1);var R=new Uint8Array(O*L),J=T[2]-T[0],_=T[3]-T[1],H=[];e(B,function(Z,te,ce,Q){H.push({x1:Z,y1:te,x2:ce,y2:Q,minX:Math.min(Z,ce),minY:Math.min(te,Q),maxX:Math.max(Z,ce),maxY:Math.max(te,Q)})}),H.sort(function(Z,te){return Z.maxX-te.maxX});for(var W=0;W<O;W++)for(var ee=0;ee<L;ee++){var X=me(T[0]+J*(W+.5)/O,T[1]+_*(ee+.5)/L),N=Math.pow(1-Math.abs(X)/I,w)/2;X<0&&(N=1-N),N=Math.max(0,Math.min(255,Math.round(N*255))),R[ee*O+W]=N}return R;function me(Z,te){for(var ce=1/0,Q=1/0,ne=H.length;ne--;){var $=H[ne];if($.maxX+Q<=Z)break;if(Z+Q>$.minX&&te-Q<$.maxY&&te+Q>$.minY){var k=v(Z,te,$.x1,$.y1,$.x2,$.y2);k<ce&&(ce=k,Q=Math.sqrt(ce))}}return fe(Z,te)&&(Q=-Q),Q}function fe(Z,te){for(var ce=0,Q=H.length;Q--;){var ne=H[Q];if(ne.maxX<=Z)break;var $=ne.y1>te!=ne.y2>te&&Z<(ne.x2-ne.x1)*(te-ne.y1)/(ne.y2-ne.y1)+ne.x1;$&&(ce+=ne.y1<ne.y2?1:-1)}return ce!==0}}function m(O,L,B,T,I,w,R,J,_,H){w===void 0&&(w=1),J===void 0&&(J=0),_===void 0&&(_=0),H===void 0&&(H=0),p(O,L,B,T,I,w,R,null,J,_,H)}function p(O,L,B,T,I,w,R,J,_,H,W){w===void 0&&(w=1),_===void 0&&(_=0),H===void 0&&(H=0),W===void 0&&(W=0);for(var ee=A(O,L,B,T,I,w),X=new Uint8Array(ee.length*4),N=0;N<ee.length;N++)X[N*4+W]=ee[N];f(R,X,_,H,O,L,1<<3-W,J)}function v(O,L,B,T,I,w){var R=I-B,J=w-T,_=R*R+J*J,H=_?Math.max(0,Math.min(1,((O-B)*R+(L-T)*J)/_)):0,W=O-(B+H*R),ee=L-(T+H*J);return W*W+ee*ee}var C=Object.freeze({__proto__:null,generate:A,generateIntoCanvas:m,generateIntoFramebuffer:p}),b="precision highp float;uniform vec4 uGlyphBounds;attribute vec2 aUV;attribute vec4 aLineSegment;varying vec4 vLineSegment;varying vec2 vGlyphXY;void main(){vLineSegment=aLineSegment;vGlyphXY=mix(uGlyphBounds.xy,uGlyphBounds.zw,aUV);gl_Position=vec4(mix(vec2(-1.0),vec2(1.0),aUV),0.0,1.0);}",g="precision highp float;uniform vec4 uGlyphBounds;uniform float uMaxDistance;uniform float uExponent;varying vec4 vLineSegment;varying vec2 vGlyphXY;float absDistToSegment(vec2 point,vec2 lineA,vec2 lineB){vec2 lineDir=lineB-lineA;float lenSq=dot(lineDir,lineDir);float t=lenSq==0.0 ? 0.0 : clamp(dot(point-lineA,lineDir)/lenSq,0.0,1.0);vec2 linePt=lineA+t*lineDir;return distance(point,linePt);}void main(){vec4 seg=vLineSegment;vec2 p=vGlyphXY;float dist=absDistToSegment(p,seg.xy,seg.zw);float val=pow(1.0-clamp(dist/uMaxDistance,0.0,1.0),uExponent)*0.5;bool crossing=(seg.y>p.y!=seg.w>p.y)&&(p.x<(seg.z-seg.x)*(p.y-seg.y)/(seg.w-seg.y)+seg.x);bool crossingUp=crossing&&vLineSegment.y<vLineSegment.w;gl_FragColor=vec4(crossingUp ? 1.0/255.0 : 0.0,crossing&&!crossingUp ? 1.0/255.0 : 0.0,0.0,val);}",E="precision highp float;uniform sampler2D tex;varying vec2 vUV;void main(){vec4 color=texture2D(tex,vUV);bool inside=color.r!=color.g;float val=inside ? 1.0-color.a : color.a;gl_FragColor=vec4(val);}",D=new Float32Array([0,0,2,0,0,2]),F=null,M=!1,U={},x=new WeakMap;function K(O){if(!M&&!j(O))throw new Error("WebGL generation not supported")}function y(O,L,B,T,I,w,R){if(w===void 0&&(w=1),R===void 0&&(R=null),!R&&(R=F,!R)){var J=typeof OffscreenCanvas=="function"?new OffscreenCanvas(1,1):typeof document<"u"?document.createElement("canvas"):null;if(!J)throw new Error("OffscreenCanvas or DOM canvas not supported");R=F=J.getContext("webgl",{depth:!1})}K(R);var _=new Uint8Array(O*L*4);l(R,function(X){var N=X.gl,me=X.withTexture,fe=X.withTextureFramebuffer;me("readable",function(Z,te){N.texImage2D(N.TEXTURE_2D,0,N.RGBA,O,L,0,N.RGBA,N.UNSIGNED_BYTE,null),fe(Z,te,function(ce){G(O,L,B,T,I,w,N,ce,0,0,0),N.readPixels(0,0,O,L,N.RGBA,N.UNSIGNED_BYTE,_)})})});for(var H=new Uint8Array(O*L),W=0,ee=0;W<_.length;W+=4)H[ee++]=_[W];return H}function S(O,L,B,T,I,w,R,J,_,H){w===void 0&&(w=1),J===void 0&&(J=0),_===void 0&&(_=0),H===void 0&&(H=0),G(O,L,B,T,I,w,R,null,J,_,H)}function G(O,L,B,T,I,w,R,J,_,H,W){w===void 0&&(w=1),_===void 0&&(_=0),H===void 0&&(H=0),W===void 0&&(W=0),K(R);var ee=[];e(B,function(X,N,me,fe){ee.push(X,N,me,fe)}),ee=new Float32Array(ee),l(R,function(X){var N=X.gl,me=X.isWebGL2,fe=X.getExtension,Z=X.withProgram,te=X.withTexture,ce=X.withTextureFramebuffer,Q=X.handleContextLoss;if(te("rawDistances",function(ne,$){(O!==ne._lastWidth||L!==ne._lastHeight)&&N.texImage2D(N.TEXTURE_2D,0,N.RGBA,ne._lastWidth=O,ne._lastHeight=L,0,N.RGBA,N.UNSIGNED_BYTE,null),Z("main",b,g,function(k){var he=k.setAttribute,z=k.setUniform,ae=!me&&fe("ANGLE_instanced_arrays"),Y=!me&&fe("EXT_blend_minmax");he("aUV",2,N.STATIC_DRAW,0,D),he("aLineSegment",4,N.DYNAMIC_DRAW,1,ee),z.apply(void 0,["4f","uGlyphBounds"].concat(T)),z("1f","uMaxDistance",I),z("1f","uExponent",w),ce(ne,$,function(ye){N.enable(N.BLEND),N.colorMask(!0,!0,!0,!0),N.viewport(0,0,O,L),N.scissor(0,0,O,L),N.blendFunc(N.ONE,N.ONE),N.blendEquationSeparate(N.FUNC_ADD,me?N.MAX:Y.MAX_EXT),N.clear(N.COLOR_BUFFER_BIT),me?N.drawArraysInstanced(N.TRIANGLES,0,3,ee.length/4):ae.drawArraysInstancedANGLE(N.TRIANGLES,0,3,ee.length/4)})}),Z("post",r,E,function(k){k.setAttribute("aUV",2,N.STATIC_DRAW,0,D),k.setUniform("1i","tex",$),N.bindFramebuffer(N.FRAMEBUFFER,J),N.disable(N.BLEND),N.colorMask(W===0,W===1,W===2,W===3),N.viewport(_,H,O,L),N.scissor(_,H,O,L),N.drawArrays(N.TRIANGLES,0,3)})}),N.isContextLost())throw Q(),new Error("webgl context lost")})}function j(O){var L=!O||O===F?U:O.canvas||O,B=x.get(L);if(B===void 0){M=!0;var T=null;try{var I=[97,106,97,61,99,137,118,80,80,118,137,99,61,97,106,97],w=y(4,4,"M8,8L16,8L24,24L16,24Z",[0,0,32,32],24,1,O);B=w&&I.length===w.length&&w.every(function(R,J){return R===I[J]}),B||(T="bad trial run results",console.info(I,w))}catch(R){B=!1,T=R.message}T&&console.warn("WebGL SDF generation not supported:",T),M=!1,x.set(L,B)}return B}var P=Object.freeze({__proto__:null,generate:y,generateIntoCanvas:S,generateIntoFramebuffer:G,isSupported:j});function q(O,L,B,T,I,w){I===void 0&&(I=Math.max(T[2]-T[0],T[3]-T[1])/2),w===void 0&&(w=1);try{return y.apply(P,arguments)}catch(R){return console.info("WebGL SDF generation failed, falling back to JS",R),A.apply(C,arguments)}}function re(O,L,B,T,I,w,R,J,_,H){I===void 0&&(I=Math.max(T[2]-T[0],T[3]-T[1])/2),w===void 0&&(w=1),J===void 0&&(J=0),_===void 0&&(_=0),H===void 0&&(H=0);try{return S.apply(P,arguments)}catch(W){return console.info("WebGL SDF generation failed, falling back to JS",W),m.apply(C,arguments)}}return t.forEachPathCommand=n,t.generate=q,t.generateIntoCanvas=re,t.javascript=C,t.pathToLineSegments=e,t.webgl=P,t.webglUtils=h,Object.defineProperty(t,"__esModule",{value:!0}),t}({});return u}function gc(){var u=function(t){var i={R:"13k,1a,2,3,3,2+1j,ch+16,a+1,5+2,2+n,5,a,4,6+16,4+3,h+1b,4mo,179q,2+9,2+11,2i9+7y,2+68,4,3+4,5+13,4+3,2+4k,3+29,8+cf,1t+7z,w+17,3+3m,1t+3z,16o1+5r,8+30,8+mc,29+1r,29+4v,75+73",EN:"1c+9,3d+1,6,187+9,513,4+5,7+9,sf+j,175h+9,qw+q,161f+1d,4xt+a,25i+9",ES:"17,2,6dp+1,f+1,av,16vr,mx+1,4o,2",ET:"z+2,3h+3,b+1,ym,3e+1,2o,p4+1,8,6u,7c,g6,1wc,1n9+4,30+1b,2n,6d,qhx+1,h0m,a+1,49+2,63+1,4+1,6bb+3,12jj",AN:"16o+5,2j+9,2+1,35,ed,1ff2+9,87+u",CS:"18,2+1,b,2u,12k,55v,l,17v0,2,3,53,2+1,b",B:"a,3,f+2,2v,690",S:"9,2,k",WS:"c,k,4f4,1vk+a,u,1j,335",ON:"x+1,4+4,h+5,r+5,r+3,z,5+3,2+1,2+1,5,2+2,3+4,o,w,ci+1,8+d,3+d,6+8,2+g,39+1,9,6+1,2,33,b8,3+1,3c+1,7+1,5r,b,7h+3,sa+5,2,3i+6,jg+3,ur+9,2v,ij+1,9g+9,7+a,8m,4+1,49+x,14u,2+2,c+2,e+2,e+2,e+1,i+n,e+e,2+p,u+2,e+2,36+1,2+3,2+1,b,2+2,6+5,2,2,2,h+1,5+4,6+3,3+f,16+2,5+3l,3+81,1y+p,2+40,q+a,m+13,2r+ch,2+9e,75+hf,3+v,2+2w,6e+5,f+6,75+2a,1a+p,2+2g,d+5x,r+b,6+3,4+o,g,6+1,6+2,2k+1,4,2j,5h+z,1m+1,1e+f,t+2,1f+e,d+3,4o+3,2s+1,w,535+1r,h3l+1i,93+2,2s,b+1,3l+x,2v,4g+3,21+3,kz+1,g5v+1,5a,j+9,n+v,2,3,2+8,2+1,3+2,2,3,46+1,4+4,h+5,r+5,r+a,3h+2,4+6,b+4,78,1r+24,4+c,4,1hb,ey+6,103+j,16j+c,1ux+7,5+g,fsh,jdq+1t,4,57+2e,p1,1m,1m,1m,1m,4kt+1,7j+17,5+2r,d+e,3+e,2+e,2+10,m+4,w,1n+5,1q,4z+5,4b+rb,9+c,4+c,4+37,d+2g,8+b,l+b,5+1j,9+9,7+13,9+t,3+1,27+3c,2+29,2+3q,d+d,3+4,4+2,6+6,a+o,8+6,a+2,e+6,16+42,2+1i",BN:"0+8,6+d,2s+5,2+p,e,4m9,1kt+2,2b+5,5+5,17q9+v,7k,6p+8,6+1,119d+3,440+7,96s+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+75,6p+2rz,1ben+1,1ekf+1,1ekf+1",NSM:"lc+33,7o+6,7c+18,2,2+1,2+1,2,21+a,1d+k,h,2u+6,3+5,3+1,2+3,10,v+q,2k+a,1n+8,a,p+3,2+8,2+2,2+4,18+2,3c+e,2+v,1k,2,5+7,5,4+6,b+1,u,1n,5+3,9,l+1,r,3+1,1m,5+1,5+1,3+2,4,v+1,4,c+1,1m,5+4,2+1,5,l+1,n+5,2,1n,3,2+3,9,8+1,c+1,v,1q,d,1f,4,1m+2,6+2,2+3,8+1,c+1,u,1n,g+1,l+1,t+1,1m+1,5+3,9,l+1,u,21,8+2,2,2j,3+6,d+7,2r,3+8,c+5,23+1,s,2,2,1k+d,2+4,2+1,6+a,2+z,a,2v+3,2+5,2+1,3+1,q+1,5+2,h+3,e,3+1,7,g,jk+2,qb+2,u+2,u+1,v+1,1t+1,2+6,9,3+a,a,1a+2,3c+1,z,3b+2,5+1,a,7+2,64+1,3,1n,2+6,2,2,3+7,7+9,3,1d+g,1s+3,1d,2+4,2,6,15+8,d+1,x+3,3+1,2+2,1l,2+1,4,2+2,1n+7,3+1,49+2,2+c,2+6,5,7,4+1,5j+1l,2+4,k1+w,2db+2,3y,2p+v,ff+3,30+1,n9x+3,2+9,x+1,29+1,7l,4,5,q+1,6,48+1,r+h,e,13+7,q+a,1b+2,1d,3+3,3+1,14,1w+5,3+1,3+1,d,9,1c,1g,2+2,3+1,6+1,2,17+1,9,6n,3,5,fn5,ki+f,h+f,r2,6b,46+4,1af+2,2+1,6+3,15+2,5,4m+1,fy+3,as+1,4a+a,4x,1j+e,1l+2,1e+3,3+1,1y+2,11+4,2+7,1r,d+1,1h+8,b+3,3,2o+2,3,2+1,7,4h,4+7,m+1,1m+1,4,12+6,4+4,5g+7,3+2,2,o,2d+5,2,5+1,2+1,6n+3,7+1,2+1,s+1,2e+7,3,2+1,2z,2,3+5,2,2u+2,3+3,2+4,78+8,2+1,75+1,2,5,41+3,3+1,5,x+5,3+1,15+5,3+3,9,a+5,3+2,1b+c,2+1,bb+6,2+5,2d+l,3+6,2+1,2+1,3f+5,4,2+1,2+6,2,21+1,4,2,9o+1,f0c+4,1o+6,t5,1s+3,2a,f5l+1,43t+2,i+7,3+6,v+3,45+2,1j0+1i,5+1d,9,f,n+4,2+e,11t+6,2+g,3+6,2+1,2+4,7a+6,c6+3,15t+6,32+6,gzhy+6n",AL:"16w,3,2,e+1b,z+2,2+2s,g+1,8+1,b+m,2+t,s+2i,c+e,4h+f,1d+1e,1bwe+dp,3+3z,x+c,2+1,35+3y,2rm+z,5+7,b+5,dt+l,c+u,17nl+27,1t+27,4x+6n,3+d",LRO:"6ct",RLO:"6cu",LRE:"6cq",RLE:"6cr",PDF:"6cs",LRI:"6ee",RLI:"6ef",FSI:"6eg",PDI:"6eh"},c={},n={};c.L=1,n[1]="L",Object.keys(i).forEach(function(Q,ne){c[Q]=1<<ne+1,n[c[Q]]=Q}),Object.freeze(c);var e=c.LRI|c.RLI|c.FSI,r=c.L|c.R|c.AL,a=c.B|c.S|c.WS|c.ON|c.FSI|c.LRI|c.RLI|c.PDI,o=c.BN|c.RLE|c.LRE|c.RLO|c.LRO|c.PDF,s=c.S|c.WS|c.B|e|c.PDI|o,l=null;function f(){if(!l){l=new Map;var Q=function($){if(i.hasOwnProperty($)){var k=0;i[$].split(",").forEach(function(he){var z=he.split("+"),ae=z[0],Y=z[1];ae=parseInt(ae,36),Y=Y?parseInt(Y,36):0,l.set(k+=ae,c[$]);for(var ye=0;ye<Y;ye++)l.set(++k,c[$])})}};for(var ne in i)Q(ne)}}function d(Q){return f(),l.get(Q.codePointAt(0))||c.L}function h(Q){return n[d(Q)]}var A={pairs:"14>1,1e>2,u>2,2wt>1,1>1,1ge>1,1wp>1,1j>1,f>1,hm>1,1>1,u>1,u6>1,1>1,+5,28>1,w>1,1>1,+3,b8>1,1>1,+3,1>3,-1>-1,3>1,1>1,+2,1s>1,1>1,x>1,th>1,1>1,+2,db>1,1>1,+3,3>1,1>1,+2,14qm>1,1>1,+1,4q>1,1e>2,u>2,2>1,+1",canonical:"6f1>-6dx,6dy>-6dx,6ec>-6ed,6ee>-6ed,6ww>2jj,-2ji>2jj,14r4>-1e7l,1e7m>-1e7l,1e7m>-1e5c,1e5d>-1e5b,1e5c>-14qx,14qy>-14qx,14vn>-1ecg,1ech>-1ecg,1edu>-1ecg,1eci>-1ecg,1eda>-1ecg,1eci>-1ecg,1eci>-168q,168r>-168q,168s>-14ye,14yf>-14ye"};function m(Q,ne){var $=36,k=0,he=new Map,z=ne&&new Map,ae;return Q.split(",").forEach(function Y(ye){if(ye.indexOf("+")!==-1)for(var oe=+ye;oe--;)Y(ae);else{ae=ye;var se=ye.split(">"),ue=se[0],Ae=se[1];ue=String.fromCodePoint(k+=parseInt(ue,$)),Ae=String.fromCodePoint(k+=parseInt(Ae,$)),he.set(ue,Ae),ne&&z.set(Ae,ue)}}),{map:he,reverseMap:z}}var p,v,C;function b(){if(!p){var Q=m(A.pairs,!0),ne=Q.map,$=Q.reverseMap;p=ne,v=$,C=m(A.canonical,!1).map}}function g(Q){return b(),p.get(Q)||null}function E(Q){return b(),v.get(Q)||null}function D(Q){return b(),C.get(Q)||null}var F=c.L,M=c.R,U=c.EN,x=c.ES,K=c.ET,y=c.AN,S=c.CS,G=c.B,j=c.S,P=c.ON,q=c.BN,re=c.NSM,O=c.AL,L=c.LRO,B=c.RLO,T=c.LRE,I=c.RLE,w=c.PDF,R=c.LRI,J=c.RLI,_=c.FSI,H=c.PDI;function W(Q,ne){for(var $=125,k=new Uint32Array(Q.length),he=0;he<Q.length;he++)k[he]=d(Q[he]);var z=new Map;function ae(Ne,ze){var Ke=k[Ne];k[Ne]=ze,z.set(Ke,z.get(Ke)-1),Ke&a&&z.set(a,z.get(a)-1),z.set(ze,(z.get(ze)||0)+1),ze&a&&z.set(a,(z.get(a)||0)+1)}for(var Y=new Uint8Array(Q.length),ye=new Map,oe=[],se=null,ue=0;ue<Q.length;ue++)se||oe.push(se={start:ue,end:Q.length-1,level:ne==="rtl"?1:ne==="ltr"?0:no(ue,!1)}),k[ue]&G&&(se.end=ue,se=null);for(var Ae=I|T|B|L|e|H|w|G,Me=function(Ne){return Ne+(Ne&1?1:2)},xe=function(Ne){return Ne+(Ne&1?2:1)},Be=0;Be<oe.length;Be++){se=oe[Be];var ve=[{_level:se.level,_override:0,_isolate:0}],le=void 0,Ie=0,De=0,Je=0;z.clear();for(var Te=se.start;Te<=se.end;Te++){var de=k[Te];if(le=ve[ve.length-1],z.set(de,(z.get(de)||0)+1),de&a&&z.set(a,(z.get(a)||0)+1),de&Ae)if(de&(I|T)){Y[Te]=le._level;var be=(de===I?xe:Me)(le._level);be<=$&&!Ie&&!De?ve.push({_level:be,_override:0,_isolate:0}):Ie||De++}else if(de&(B|L)){Y[Te]=le._level;var it=(de===B?xe:Me)(le._level);it<=$&&!Ie&&!De?ve.push({_level:it,_override:de&B?M:F,_isolate:0}):Ie||De++}else if(de&e){de&_&&(de=no(Te+1,!0)===1?J:R),Y[Te]=le._level,le._override&&ae(Te,le._override);var Fe=(de===J?xe:Me)(le._level);Fe<=$&&Ie===0&&De===0?(Je++,ve.push({_level:Fe,_override:0,_isolate:1,_isolInitIndex:Te})):Ie++}else if(de&H){if(Ie>0)Ie--;else if(Je>0){for(De=0;!ve[ve.length-1]._isolate;)ve.pop();var Ce=ve[ve.length-1]._isolInitIndex;Ce!=null&&(ye.set(Ce,Te),ye.set(Te,Ce)),ve.pop(),Je--}le=ve[ve.length-1],Y[Te]=le._level,le._override&&ae(Te,le._override)}else de&w?(Ie===0&&(De>0?De--:!le._isolate&&ve.length>1&&(ve.pop(),le=ve[ve.length-1])),Y[Te]=le._level):de&G&&(Y[Te]=se.level);else Y[Te]=le._level,le._override&&de!==q&&ae(Te,le._override)}for(var Se=[],Ge=null,pe=se.start;pe<=se.end;pe++){var Re=k[pe];if(!(Re&o)){var Oe=Y[pe],Le=Re&e,we=Re===H;Ge&&Oe===Ge._level?(Ge._end=pe,Ge._endsWithIsolInit=Le):Se.push(Ge={_start:pe,_end:pe,_level:Oe,_startsWithPDI:we,_endsWithIsolInit:Le})}}for(var Ye=[],ct=0;ct<Se.length;ct++){var tt=Se[ct];if(!tt._startsWithPDI||tt._startsWithPDI&&!ye.has(tt._start)){for(var lt=[Ge=tt],ht=void 0;Ge&&Ge._endsWithIsolInit&&(ht=ye.get(Ge._end))!=null;)for(var nt=ct+1;nt<Se.length;nt++)if(Se[nt]._start===ht){lt.push(Ge=Se[nt]);break}for(var He=[],At=0;At<lt.length;At++)for(var Lr=lt[At],On=Lr._start;On<=Lr._end;On++)He.push(On);for(var qa=Y[He[0]],kr=se.level,ln=He[0]-1;ln>=0;ln--)if(!(k[ln]&o)){kr=Y[ln];break}var Hn=He[He.length-1],$a=Y[Hn],Or=se.level;if(!(k[Hn]&e)){for(var un=Hn+1;un<=se.end;un++)if(!(k[un]&o)){Or=Y[un];break}}Ye.push({_seqIndices:He,_sosType:Math.max(kr,qa)%2?M:F,_eosType:Math.max(Or,$a)%2?M:F})}}for(var Pn=0;Pn<Ye.length;Pn++){var Jn=Ye[Pn],ie=Jn._seqIndices,Lt=Jn._sosType,es=Jn._eosType,Ft=Y[ie[0]]&1?M:F;if(z.get(re))for(var fn=0;fn<ie.length;fn++){var Hr=ie[fn];if(k[Hr]&re){for(var Nn=Lt,dn=fn-1;dn>=0;dn--)if(!(k[ie[dn]]&o)){Nn=k[ie[dn]];break}ae(Hr,Nn&(e|H)?P:Nn)}}if(z.get(U))for(var hn=0;hn<ie.length;hn++){var Pr=ie[hn];if(k[Pr]&U)for(var An=hn-1;An>=-1;An--){var Jr=An===-1?Lt:k[ie[An]];if(Jr&r){Jr===O&&ae(Pr,y);break}}}if(z.get(O))for(var Kn=0;Kn<ie.length;Kn++){var Nr=ie[Kn];k[Nr]&O&&ae(Nr,M)}if(z.get(x)||z.get(S))for(var kt=1;kt<ie.length-1;kt++){var jn=ie[kt];if(k[jn]&(x|S)){for(var Et=0,Qn=0,Xn=kt-1;Xn>=0&&(Et=k[ie[Xn]],!!(Et&o));Xn--);for(var Wn=kt+1;Wn<ie.length&&(Qn=k[ie[Wn]],!!(Qn&o));Wn++);Et===Qn&&(k[jn]===x?Et===U:Et&(U|y))&&ae(jn,Et)}}if(z.get(U))for(var et=0;et<ie.length;et++){var ts=ie[et];if(k[ts]&U){for(var pn=et-1;pn>=0&&k[ie[pn]]&(K|o);pn--)ae(ie[pn],U);for(et++;et<ie.length&&k[ie[et]]&(K|o|U);et++)k[ie[et]]!==U&&ae(ie[et],U)}}if(z.get(K)||z.get(x)||z.get(S))for(var Ot=0;Ot<ie.length;Ot++){var Kr=ie[Ot];if(k[Kr]&(K|x|S)){ae(Kr,P);for(var mn=Ot-1;mn>=0&&k[ie[mn]]&o;mn--)ae(ie[mn],P);for(var Bn=Ot+1;Bn<ie.length&&k[ie[Bn]]&o;Bn++)ae(ie[Bn],P)}}if(z.get(U))for(var Yn=0,jr=Lt;Yn<ie.length;Yn++){var Qr=ie[Yn],Vn=k[Qr];Vn&U?jr===F&&ae(Qr,F):Vn&r&&(jr=Vn)}if(z.get(a)){var Ht=M|U|y,Xr=Ht|F,vn=[];{for(var Mt=[],Tt=0;Tt<ie.length;Tt++)if(k[ie[Tt]]&a){var Pt=Q[ie[Tt]],Wr=void 0;if(g(Pt)!==null)if(Mt.length<63)Mt.push({char:Pt,seqIndex:Tt});else break;else if((Wr=E(Pt))!==null)for(var Jt=Mt.length-1;Jt>=0;Jt--){var zn=Mt[Jt].char;if(zn===Wr||zn===E(D(Pt))||g(D(zn))===Pt){vn.push([Mt[Jt].seqIndex,Tt]),Mt.length=Jt;break}}}vn.sort(function(Ne,ze){return Ne[0]-ze[0]})}for(var Zn=0;Zn<vn.length;Zn++){for(var Yr=vn[Zn],gn=Yr[0],qn=Yr[1],Vr=!1,Ve=0,$n=gn+1;$n<qn;$n++){var zr=ie[$n];if(k[zr]&Xr){Vr=!0;var Zr=k[zr]&Ht?M:F;if(Zr===Ft){Ve=Zr;break}}}if(Vr&&!Ve){Ve=Lt;for(var er=gn-1;er>=0;er--){var qr=ie[er];if(k[qr]&Xr){var $r=k[qr]&Ht?M:F;$r!==Ft?Ve=$r:Ve=Ft;break}}}if(Ve){if(k[ie[gn]]=k[ie[qn]]=Ve,Ve!==Ft){for(var Nt=gn+1;Nt<ie.length;Nt++)if(!(k[ie[Nt]]&o)){d(Q[ie[Nt]])&re&&(k[ie[Nt]]=Ve);break}}if(Ve!==Ft){for(var Kt=qn+1;Kt<ie.length;Kt++)if(!(k[ie[Kt]]&o)){d(Q[ie[Kt]])&re&&(k[ie[Kt]]=Ve);break}}}}for(var ut=0;ut<ie.length;ut++)if(k[ie[ut]]&a){for(var eo=ut,tr=ut,nr=Lt,jt=ut-1;jt>=0;jt--)if(k[ie[jt]]&o)eo=jt;else{nr=k[ie[jt]]&Ht?M:F;break}for(var to=es,Qt=ut+1;Qt<ie.length;Qt++)if(k[ie[Qt]]&(a|o))tr=Qt;else{to=k[ie[Qt]]&Ht?M:F;break}for(var rr=eo;rr<=tr;rr++)k[ie[rr]]=nr===to?nr:Ft;ut=tr}}}for(var je=se.start;je<=se.end;je++){var ns=Y[je],Cn=k[je];if(ns&1?Cn&(F|U|y)&&Y[je]++:Cn&M?Y[je]++:Cn&(y|U)&&(Y[je]+=2),Cn&o&&(Y[je]=je===0?se.level:Y[je-1]),je===se.end||d(Q[je])&(j|G))for(var yn=je;yn>=0&&d(Q[yn])&s;yn--)Y[yn]=se.level}}return{levels:Y,paragraphs:oe};function no(Ne,ze){for(var Ke=Ne;Ke<Q.length;Ke++){var ft=k[Ke];if(ft&(M|O))return 1;if(ft&(G|F)||ze&&ft===H)return 0;if(ft&e){var ro=rs(Ke);Ke=ro===-1?Q.length:ro}}return 0}function rs(Ne){for(var ze=1,Ke=Ne+1;Ke<Q.length;Ke++){var ft=k[Ke];if(ft&G)break;if(ft&H){if(--ze===0)return Ke}else ft&e&&ze++}return-1}}var ee="14>1,j>2,t>2,u>2,1a>g,2v3>1,1>1,1ge>1,1wd>1,b>1,1j>1,f>1,ai>3,-2>3,+1,8>1k0,-1jq>1y7,-1y6>1hf,-1he>1h6,-1h5>1ha,-1h8>1qi,-1pu>1,6>3u,-3s>7,6>1,1>1,f>1,1>1,+2,3>1,1>1,+13,4>1,1>1,6>1eo,-1ee>1,3>1mg,-1me>1mk,-1mj>1mi,-1mg>1mi,-1md>1,1>1,+2,1>10k,-103>1,1>1,4>1,5>1,1>1,+10,3>1,1>8,-7>8,+1,-6>7,+1,a>1,1>1,u>1,u6>1,1>1,+5,26>1,1>1,2>1,2>2,8>1,7>1,4>1,1>1,+5,b8>1,1>1,+3,1>3,-2>1,2>1,1>1,+2,c>1,3>1,1>1,+2,h>1,3>1,a>1,1>1,2>1,3>1,1>1,d>1,f>1,3>1,1a>1,1>1,6>1,7>1,13>1,k>1,1>1,+19,4>1,1>1,+2,2>1,1>1,+18,m>1,a>1,1>1,lk>1,1>1,4>1,2>1,f>1,3>1,1>1,+3,db>1,1>1,+3,3>1,1>1,+2,14qm>1,1>1,+1,6>1,4j>1,j>2,t>2,u>2,2>1,+1",X;function N(){if(!X){var Q=m(ee,!0),ne=Q.map,$=Q.reverseMap;$.forEach(function(k,he){ne.set(he,k)}),X=ne}}function me(Q){return N(),X.get(Q)||null}function fe(Q,ne,$,k){var he=Q.length;$=Math.max(0,$==null?0:+$),k=Math.min(he-1,k==null?he-1:+k);for(var z=new Map,ae=$;ae<=k;ae++)if(ne[ae]&1){var Y=me(Q[ae]);Y!==null&&z.set(ae,Y)}return z}function Z(Q,ne,$,k){var he=Q.length;$=Math.max(0,$==null?0:+$),k=Math.min(he-1,k==null?he-1:+k);var z=[];return ne.paragraphs.forEach(function(ae){var Y=Math.max($,ae.start),ye=Math.min(k,ae.end);if(Y<ye){for(var oe=ne.levels.slice(Y,ye+1),se=ye;se>=Y&&d(Q[se])&s;se--)oe[se]=ae.level;for(var ue=ae.level,Ae=1/0,Me=0;Me<oe.length;Me++){var xe=oe[Me];xe>ue&&(ue=xe),xe<Ae&&(Ae=xe|1)}for(var Be=ue;Be>=Ae;Be--)for(var ve=0;ve<oe.length;ve++)if(oe[ve]>=Be){for(var le=ve;ve+1<oe.length&&oe[ve+1]>=Be;)ve++;ve>le&&z.push([le+Y,ve+Y])}}}),z}function te(Q,ne,$,k){var he=ce(Q,ne,$,k),z=[].concat(Q);return he.forEach(function(ae,Y){z[Y]=(ne.levels[ae]&1?me(Q[ae]):null)||Q[ae]}),z.join("")}function ce(Q,ne,$,k){for(var he=Z(Q,ne,$,k),z=[],ae=0;ae<Q.length;ae++)z[ae]=ae;return he.forEach(function(Y){for(var ye=Y[0],oe=Y[1],se=z.slice(ye,oe+1),ue=se.length;ue--;)z[oe-ue]=se[ue]}),z}return t.closingToOpeningBracket=E,t.getBidiCharType=d,t.getBidiCharTypeName=h,t.getCanonicalBracket=D,t.getEmbeddingLevels=W,t.getMirroredCharacter=me,t.getMirroredCharactersMap=fe,t.getReorderSegments=Z,t.getReorderedIndices=ce,t.getReorderedString=te,t.openingToClosingBracket=g,Object.defineProperty(t,"__esModule",{value:!0}),t}({});return u}const La=/\bvoid\s+main\s*\(\s*\)\s*{/g;function Mr(u){const t=/^[ \t]*#include +<([\w\d./]+)>/gm;function i(c,n){let e=Js[n];return e?Mr(e):c}return u.replace(t,i)}const _e=[];for(let u=0;u<256;u++)_e[u]=(u<16?"0":"")+u.toString(16);function Cc(){const u=Math.random()*4294967295|0,t=Math.random()*4294967295|0,i=Math.random()*4294967295|0,c=Math.random()*4294967295|0;return(_e[u&255]+_e[u>>8&255]+_e[u>>16&255]+_e[u>>24&255]+"-"+_e[t&255]+_e[t>>8&255]+"-"+_e[t>>16&15|64]+_e[t>>24&255]+"-"+_e[i&63|128]+_e[i>>8&255]+"-"+_e[i>>16&255]+_e[i>>24&255]+_e[c&255]+_e[c>>8&255]+_e[c>>16&255]+_e[c>>24&255]).toUpperCase()}const Bt=Object.assign||function(){let u=arguments[0];for(let t=1,i=arguments.length;t<i;t++){let c=arguments[t];if(c)for(let n in c)Object.prototype.hasOwnProperty.call(c,n)&&(u[n]=c[n])}return u},yc=Date.now(),qo=new WeakMap,$o=new Map;let bc=1e10;function Tr(u,t){const i=Tc(t);let c=qo.get(u);if(c||qo.set(u,c=Object.create(null)),c[i])return new c[i];const n=`_onBeforeCompile${i}`,e=function(s,l){u.onBeforeCompile.call(this,s,l);const f=this.customProgramCacheKey()+"|"+s.vertexShader+"|"+s.fragmentShader;let d=$o[f];if(!d){const h=Fc(this,s,t,i);d=$o[f]=h}s.vertexShader=d.vertexShader,s.fragmentShader=d.fragmentShader,Bt(s.uniforms,this.uniforms),t.timeUniform&&(s.uniforms[t.timeUniform]={get value(){return Date.now()-yc}}),this[n]&&this[n](s)},r=function(){return a(t.chained?u:u.clone())},a=function(s){const l=Object.create(s,o);return Object.defineProperty(l,"baseMaterial",{value:u}),Object.defineProperty(l,"id",{value:bc++}),l.uuid=Cc(),l.uniforms=Bt({},s.uniforms,t.uniforms),l.defines=Bt({},s.defines,t.defines),l.defines[`TROIKA_DERIVED_MATERIAL_${i}`]="",l.extensions=Bt({},s.extensions,t.extensions),l._listeners=void 0,l},o={constructor:{value:r},isDerivedMaterial:{value:!0},type:{get:()=>u.type,set:s=>{u.type=s}},isDerivedFrom:{writable:!0,configurable:!0,value:function(s){const l=this.baseMaterial;return s===l||l.isDerivedMaterial&&l.isDerivedFrom(s)||!1}},customProgramCacheKey:{writable:!0,configurable:!0,value:function(){return u.customProgramCacheKey()+"|"+i}},onBeforeCompile:{get(){return e},set(s){this[n]=s}},copy:{writable:!0,configurable:!0,value:function(s){return u.copy.call(this,s),!u.isShaderMaterial&&!u.isDerivedMaterial&&(Bt(this.extensions,s.extensions),Bt(this.defines,s.defines),Bt(this.uniforms,Ra.clone(s.uniforms))),this}},clone:{writable:!0,configurable:!0,value:function(){const s=new u.constructor;return a(s).copy(this)}},getDepthMaterial:{writable:!0,configurable:!0,value:function(){let s=this._depthMaterial;return s||(s=this._depthMaterial=Tr(u.isDerivedMaterial?u.getDepthMaterial():new Hs({depthPacking:Ps}),t),s.defines.IS_DEPTH_MATERIAL="",s.uniforms=this.uniforms),s}},getDistanceMaterial:{writable:!0,configurable:!0,value:function(){let s=this._distanceMaterial;return s||(s=this._distanceMaterial=Tr(u.isDerivedMaterial?u.getDistanceMaterial():new Os,t),s.defines.IS_DISTANCE_MATERIAL="",s.uniforms=this.uniforms),s}},dispose:{writable:!0,configurable:!0,value(){const{_depthMaterial:s,_distanceMaterial:l}=this;s&&s.dispose(),l&&l.dispose(),u.dispose.call(this)}}};return c[i]=r,new r}function Fc(u,{vertexShader:t,fragmentShader:i},c,n){let{vertexDefs:e,vertexMainIntro:r,vertexMainOutro:a,vertexTransform:o,fragmentDefs:s,fragmentMainIntro:l,fragmentMainOutro:f,fragmentColorTransform:d,customRewriter:h,timeUniform:A}=c;if(e=e||"",r=r||"",a=a||"",s=s||"",l=l||"",f=f||"",(o||h)&&(t=Mr(t)),(d||h)&&(i=i.replace(/^[ \t]*#include <((?:tonemapping|encodings|colorspace|fog|premultiplied_alpha|dithering)_fragment)>/gm,`
|
|
12
|
+
//!BEGIN_POST_CHUNK $1
|
|
13
|
+
$&
|
|
14
|
+
//!END_POST_CHUNK
|
|
15
|
+
`),i=Mr(i)),h){let m=h({vertexShader:t,fragmentShader:i});t=m.vertexShader,i=m.fragmentShader}if(d){let m=[];i=i.replace(/^\/\/!BEGIN_POST_CHUNK[^]+?^\/\/!END_POST_CHUNK/gm,p=>(m.push(p),"")),f=`${d}
|
|
16
|
+
${m.join(`
|
|
17
|
+
`)}
|
|
18
|
+
${f}`}if(A){const m=`
|
|
19
|
+
uniform float ${A};
|
|
20
|
+
`;e=m+e,s=m+s}return o&&(t=`vec3 troika_position_${n};
|
|
21
|
+
vec3 troika_normal_${n};
|
|
22
|
+
vec2 troika_uv_${n};
|
|
23
|
+
${t}
|
|
24
|
+
`,e=`${e}
|
|
25
|
+
void troikaVertexTransform${n}(inout vec3 position, inout vec3 normal, inout vec2 uv) {
|
|
26
|
+
${o}
|
|
27
|
+
}
|
|
28
|
+
`,r=`
|
|
29
|
+
troika_position_${n} = vec3(position);
|
|
30
|
+
troika_normal_${n} = vec3(normal);
|
|
31
|
+
troika_uv_${n} = vec2(uv);
|
|
32
|
+
troikaVertexTransform${n}(troika_position_${n}, troika_normal_${n}, troika_uv_${n});
|
|
33
|
+
${r}
|
|
34
|
+
`,t=t.replace(/\b(position|normal|uv)\b/g,(m,p,v,C)=>/\battribute\s+vec[23]\s+$/.test(C.substr(0,v))?p:`troika_${p}_${n}`),u.map&&u.map.channel>0||(t=t.replace(/\bMAP_UV\b/g,`troika_uv_${n}`))),t=ea(t,n,e,r,a),i=ea(i,n,s,l,f),{vertexShader:t,fragmentShader:i}}function ea(u,t,i,c,n){return(c||n||i)&&(u=u.replace(La,`
|
|
35
|
+
${i}
|
|
36
|
+
void troikaOrigMain${t}() {`),u+=`
|
|
37
|
+
void main() {
|
|
38
|
+
${c}
|
|
39
|
+
troikaOrigMain${t}();
|
|
40
|
+
${n}
|
|
41
|
+
}`),u}function Ec(u,t){return u==="uniforms"?void 0:typeof t=="function"?t.toString():t}let Mc=0;const ta=new Map;function Tc(u){const t=JSON.stringify(u,Ec);let i=ta.get(t);return i==null&&ta.set(t,i=++Mc),i}/*!
|
|
42
|
+
Custom build of Typr.ts (https://github.com/fredli74/Typr.ts) for use in Troika text rendering.
|
|
43
|
+
Original MIT license applies: https://github.com/fredli74/Typr.ts/blob/master/LICENSE
|
|
44
|
+
*/function Dc(){return typeof window>"u"&&(self.window=self),function(u){var t={parse:function(n){var e=t._bin,r=new Uint8Array(n);if(e.readASCII(r,0,4)=="ttcf"){var a=4;e.readUshort(r,a),a+=2,e.readUshort(r,a),a+=2;var o=e.readUint(r,a);a+=4;for(var s=[],l=0;l<o;l++){var f=e.readUint(r,a);a+=4,s.push(t._readFont(r,f))}return s}return[t._readFont(r,0)]},_readFont:function(n,e){var r=t._bin,a=e;r.readFixed(n,e),e+=4;var o=r.readUshort(n,e);e+=2,r.readUshort(n,e),e+=2,r.readUshort(n,e),e+=2,r.readUshort(n,e),e+=2;for(var s=["cmap","head","hhea","maxp","hmtx","name","OS/2","post","loca","glyf","kern","CFF ","GDEF","GPOS","GSUB","SVG "],l={_data:n,_offset:a},f={},d=0;d<o;d++){var h=r.readASCII(n,e,4);e+=4,r.readUint(n,e),e+=4;var A=r.readUint(n,e);e+=4;var m=r.readUint(n,e);e+=4,f[h]={offset:A,length:m}}for(d=0;d<s.length;d++){var p=s[d];f[p]&&(l[p.trim()]=t[p.trim()].parse(n,f[p].offset,f[p].length,l))}return l},_tabOffset:function(n,e,r){for(var a=t._bin,o=a.readUshort(n,r+4),s=r+12,l=0;l<o;l++){var f=a.readASCII(n,s,4);s+=4,a.readUint(n,s),s+=4;var d=a.readUint(n,s);if(s+=4,a.readUint(n,s),s+=4,f==e)return d}return 0}};t._bin={readFixed:function(n,e){return(n[e]<<8|n[e+1])+(n[e+2]<<8|n[e+3])/65540},readF2dot14:function(n,e){return t._bin.readShort(n,e)/16384},readInt:function(n,e){return t._bin._view(n).getInt32(e)},readInt8:function(n,e){return t._bin._view(n).getInt8(e)},readShort:function(n,e){return t._bin._view(n).getInt16(e)},readUshort:function(n,e){return t._bin._view(n).getUint16(e)},readUshorts:function(n,e,r){for(var a=[],o=0;o<r;o++)a.push(t._bin.readUshort(n,e+2*o));return a},readUint:function(n,e){return t._bin._view(n).getUint32(e)},readUint64:function(n,e){return 4294967296*t._bin.readUint(n,e)+t._bin.readUint(n,e+4)},readASCII:function(n,e,r){for(var a="",o=0;o<r;o++)a+=String.fromCharCode(n[e+o]);return a},readUnicode:function(n,e,r){for(var a="",o=0;o<r;o++){var s=n[e++]<<8|n[e++];a+=String.fromCharCode(s)}return a},_tdec:typeof window<"u"&&window.TextDecoder?new window.TextDecoder:null,readUTF8:function(n,e,r){var a=t._bin._tdec;return a&&e==0&&r==n.length?a.decode(n):t._bin.readASCII(n,e,r)},readBytes:function(n,e,r){for(var a=[],o=0;o<r;o++)a.push(n[e+o]);return a},readASCIIArray:function(n,e,r){for(var a=[],o=0;o<r;o++)a.push(String.fromCharCode(n[e+o]));return a},_view:function(n){return n._dataView||(n._dataView=n.buffer?new DataView(n.buffer,n.byteOffset,n.byteLength):new DataView(new Uint8Array(n).buffer))}},t._lctf={},t._lctf.parse=function(n,e,r,a,o){var s=t._bin,l={},f=e;s.readFixed(n,e),e+=4;var d=s.readUshort(n,e);e+=2;var h=s.readUshort(n,e);e+=2;var A=s.readUshort(n,e);return e+=2,l.scriptList=t._lctf.readScriptList(n,f+d),l.featureList=t._lctf.readFeatureList(n,f+h),l.lookupList=t._lctf.readLookupList(n,f+A,o),l},t._lctf.readLookupList=function(n,e,r){var a=t._bin,o=e,s=[],l=a.readUshort(n,e);e+=2;for(var f=0;f<l;f++){var d=a.readUshort(n,e);e+=2;var h=t._lctf.readLookupTable(n,o+d,r);s.push(h)}return s},t._lctf.readLookupTable=function(n,e,r){var a=t._bin,o=e,s={tabs:[]};s.ltype=a.readUshort(n,e),e+=2,s.flag=a.readUshort(n,e),e+=2;var l=a.readUshort(n,e);e+=2;for(var f=s.ltype,d=0;d<l;d++){var h=a.readUshort(n,e);e+=2;var A=r(n,f,o+h,s);s.tabs.push(A)}return s},t._lctf.numOfOnes=function(n){for(var e=0,r=0;r<32;r++)n>>>r&1&&e++;return e},t._lctf.readClassDef=function(n,e){var r=t._bin,a=[],o=r.readUshort(n,e);if(e+=2,o==1){var s=r.readUshort(n,e);e+=2;var l=r.readUshort(n,e);e+=2;for(var f=0;f<l;f++)a.push(s+f),a.push(s+f),a.push(r.readUshort(n,e)),e+=2}if(o==2){var d=r.readUshort(n,e);for(e+=2,f=0;f<d;f++)a.push(r.readUshort(n,e)),e+=2,a.push(r.readUshort(n,e)),e+=2,a.push(r.readUshort(n,e)),e+=2}return a},t._lctf.getInterval=function(n,e){for(var r=0;r<n.length;r+=3){var a=n[r],o=n[r+1];if(n[r+2],a<=e&&e<=o)return r}return-1},t._lctf.readCoverage=function(n,e){var r=t._bin,a={};a.fmt=r.readUshort(n,e),e+=2;var o=r.readUshort(n,e);return e+=2,a.fmt==1&&(a.tab=r.readUshorts(n,e,o)),a.fmt==2&&(a.tab=r.readUshorts(n,e,3*o)),a},t._lctf.coverageIndex=function(n,e){var r=n.tab;if(n.fmt==1)return r.indexOf(e);if(n.fmt==2){var a=t._lctf.getInterval(r,e);if(a!=-1)return r[a+2]+(e-r[a])}return-1},t._lctf.readFeatureList=function(n,e){var r=t._bin,a=e,o=[],s=r.readUshort(n,e);e+=2;for(var l=0;l<s;l++){var f=r.readASCII(n,e,4);e+=4;var d=r.readUshort(n,e);e+=2;var h=t._lctf.readFeatureTable(n,a+d);h.tag=f.trim(),o.push(h)}return o},t._lctf.readFeatureTable=function(n,e){var r=t._bin,a=e,o={},s=r.readUshort(n,e);e+=2,s>0&&(o.featureParams=a+s);var l=r.readUshort(n,e);e+=2,o.tab=[];for(var f=0;f<l;f++)o.tab.push(r.readUshort(n,e+2*f));return o},t._lctf.readScriptList=function(n,e){var r=t._bin,a=e,o={},s=r.readUshort(n,e);e+=2;for(var l=0;l<s;l++){var f=r.readASCII(n,e,4);e+=4;var d=r.readUshort(n,e);e+=2,o[f.trim()]=t._lctf.readScriptTable(n,a+d)}return o},t._lctf.readScriptTable=function(n,e){var r=t._bin,a=e,o={},s=r.readUshort(n,e);e+=2,s>0&&(o.default=t._lctf.readLangSysTable(n,a+s));var l=r.readUshort(n,e);e+=2;for(var f=0;f<l;f++){var d=r.readASCII(n,e,4);e+=4;var h=r.readUshort(n,e);e+=2,o[d.trim()]=t._lctf.readLangSysTable(n,a+h)}return o},t._lctf.readLangSysTable=function(n,e){var r=t._bin,a={};r.readUshort(n,e),e+=2,a.reqFeature=r.readUshort(n,e),e+=2;var o=r.readUshort(n,e);return e+=2,a.features=r.readUshorts(n,e,o),a},t.CFF={},t.CFF.parse=function(n,e,r){var a=t._bin;(n=new Uint8Array(n.buffer,e,r))[e=0],n[++e],n[++e],n[++e],e++;var o=[];e=t.CFF.readIndex(n,e,o);for(var s=[],l=0;l<o.length-1;l++)s.push(a.readASCII(n,e+o[l],o[l+1]-o[l]));e+=o[o.length-1];var f=[];e=t.CFF.readIndex(n,e,f);var d=[];for(l=0;l<f.length-1;l++)d.push(t.CFF.readDict(n,e+f[l],e+f[l+1]));e+=f[f.length-1];var h=d[0],A=[];e=t.CFF.readIndex(n,e,A);var m=[];for(l=0;l<A.length-1;l++)m.push(a.readASCII(n,e+A[l],A[l+1]-A[l]));if(e+=A[A.length-1],t.CFF.readSubrs(n,e,h),h.CharStrings){e=h.CharStrings,A=[],e=t.CFF.readIndex(n,e,A);var p=[];for(l=0;l<A.length-1;l++)p.push(a.readBytes(n,e+A[l],A[l+1]-A[l]));h.CharStrings=p}if(h.ROS){e=h.FDArray;var v=[];for(e=t.CFF.readIndex(n,e,v),h.FDArray=[],l=0;l<v.length-1;l++){var C=t.CFF.readDict(n,e+v[l],e+v[l+1]);t.CFF._readFDict(n,C,m),h.FDArray.push(C)}e+=v[v.length-1],e=h.FDSelect,h.FDSelect=[];var b=n[e];if(e++,b!=3)throw b;var g=a.readUshort(n,e);for(e+=2,l=0;l<g+1;l++)h.FDSelect.push(a.readUshort(n,e),n[e+2]),e+=3}return h.Encoding&&(h.Encoding=t.CFF.readEncoding(n,h.Encoding,h.CharStrings.length)),h.charset&&(h.charset=t.CFF.readCharset(n,h.charset,h.CharStrings.length)),t.CFF._readFDict(n,h,m),h},t.CFF._readFDict=function(n,e,r){var a;for(var o in e.Private&&(a=e.Private[1],e.Private=t.CFF.readDict(n,a,a+e.Private[0]),e.Private.Subrs&&t.CFF.readSubrs(n,a+e.Private.Subrs,e.Private)),e)["FamilyName","FontName","FullName","Notice","version","Copyright"].indexOf(o)!=-1&&(e[o]=r[e[o]-426+35])},t.CFF.readSubrs=function(n,e,r){var a=t._bin,o=[];e=t.CFF.readIndex(n,e,o);var s,l=o.length;s=l<1240?107:l<33900?1131:32768,r.Bias=s,r.Subrs=[];for(var f=0;f<o.length-1;f++)r.Subrs.push(a.readBytes(n,e+o[f],o[f+1]-o[f]))},t.CFF.tableSE=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,0,111,112,113,114,0,115,116,117,118,119,120,121,122,0,123,0,124,125,126,127,128,129,130,131,0,132,133,0,134,135,136,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,0,139,0,0,0,0,140,141,142,143,0,0,0,0,0,144,0,0,0,145,0,0,146,147,148,149,0,0,0,0],t.CFF.glyphByUnicode=function(n,e){for(var r=0;r<n.charset.length;r++)if(n.charset[r]==e)return r;return-1},t.CFF.glyphBySE=function(n,e){return e<0||e>255?-1:t.CFF.glyphByUnicode(n,t.CFF.tableSE[e])},t.CFF.readEncoding=function(n,e,r){t._bin;var a=[".notdef"],o=n[e];if(e++,o!=0)throw"error: unknown encoding format: "+o;var s=n[e];e++;for(var l=0;l<s;l++)a.push(n[e+l]);return a},t.CFF.readCharset=function(n,e,r){var a=t._bin,o=[".notdef"],s=n[e];if(e++,s==0)for(var l=0;l<r;l++){var f=a.readUshort(n,e);e+=2,o.push(f)}else{if(s!=1&&s!=2)throw"error: format: "+s;for(;o.length<r;){f=a.readUshort(n,e),e+=2;var d=0;for(s==1?(d=n[e],e++):(d=a.readUshort(n,e),e+=2),l=0;l<=d;l++)o.push(f),f++}}return o},t.CFF.readIndex=function(n,e,r){var a=t._bin,o=a.readUshort(n,e)+1,s=n[e+=2];if(e++,s==1)for(var l=0;l<o;l++)r.push(n[e+l]);else if(s==2)for(l=0;l<o;l++)r.push(a.readUshort(n,e+2*l));else if(s==3)for(l=0;l<o;l++)r.push(16777215&a.readUint(n,e+3*l-1));else if(o!=1)throw"unsupported offset size: "+s+", count: "+o;return(e+=o*s)-1},t.CFF.getCharString=function(n,e,r){var a=t._bin,o=n[e],s=n[e+1];n[e+2],n[e+3],n[e+4];var l=1,f=null,d=null;o<=20&&(f=o,l=1),o==12&&(f=100*o+s,l=2),21<=o&&o<=27&&(f=o,l=1),o==28&&(d=a.readShort(n,e+1),l=3),29<=o&&o<=31&&(f=o,l=1),32<=o&&o<=246&&(d=o-139,l=1),247<=o&&o<=250&&(d=256*(o-247)+s+108,l=2),251<=o&&o<=254&&(d=256*-(o-251)-s-108,l=2),o==255&&(d=a.readInt(n,e+1)/65535,l=5),r.val=d??"o"+f,r.size=l},t.CFF.readCharString=function(n,e,r){for(var a=e+r,o=t._bin,s=[];e<a;){var l=n[e],f=n[e+1];n[e+2],n[e+3],n[e+4];var d=1,h=null,A=null;l<=20&&(h=l,d=1),l==12&&(h=100*l+f,d=2),l!=19&&l!=20||(h=l,d=2),21<=l&&l<=27&&(h=l,d=1),l==28&&(A=o.readShort(n,e+1),d=3),29<=l&&l<=31&&(h=l,d=1),32<=l&&l<=246&&(A=l-139,d=1),247<=l&&l<=250&&(A=256*(l-247)+f+108,d=2),251<=l&&l<=254&&(A=256*-(l-251)-f-108,d=2),l==255&&(A=o.readInt(n,e+1)/65535,d=5),s.push(A??"o"+h),e+=d}return s},t.CFF.readDict=function(n,e,r){for(var a=t._bin,o={},s=[];e<r;){var l=n[e],f=n[e+1];n[e+2],n[e+3],n[e+4];var d=1,h=null,A=null;if(l==28&&(A=a.readShort(n,e+1),d=3),l==29&&(A=a.readInt(n,e+1),d=5),32<=l&&l<=246&&(A=l-139,d=1),247<=l&&l<=250&&(A=256*(l-247)+f+108,d=2),251<=l&&l<=254&&(A=256*-(l-251)-f-108,d=2),l==255)throw A=a.readInt(n,e+1)/65535,d=5,"unknown number";if(l==30){var m=[];for(d=1;;){var p=n[e+d];d++;var v=p>>4,C=15&p;if(v!=15&&m.push(v),C!=15&&m.push(C),C==15)break}for(var b="",g=[0,1,2,3,4,5,6,7,8,9,".","e","e-","reserved","-","endOfNumber"],E=0;E<m.length;E++)b+=g[m[E]];A=parseFloat(b)}l<=21&&(h=["version","Notice","FullName","FamilyName","Weight","FontBBox","BlueValues","OtherBlues","FamilyBlues","FamilyOtherBlues","StdHW","StdVW","escape","UniqueID","XUID","charset","Encoding","CharStrings","Private","Subrs","defaultWidthX","nominalWidthX"][l],d=1,l==12&&(h=["Copyright","isFixedPitch","ItalicAngle","UnderlinePosition","UnderlineThickness","PaintType","CharstringType","FontMatrix","StrokeWidth","BlueScale","BlueShift","BlueFuzz","StemSnapH","StemSnapV","ForceBold",0,0,"LanguageGroup","ExpansionFactor","initialRandomSeed","SyntheticBase","PostScript","BaseFontName","BaseFontBlend",0,0,0,0,0,0,"ROS","CIDFontVersion","CIDFontRevision","CIDFontType","CIDCount","UIDBase","FDArray","FDSelect","FontName"][f],d=2)),h!=null?(o[h]=s.length==1?s[0]:s,s=[]):s.push(A),e+=d}return o},t.cmap={},t.cmap.parse=function(n,e,r){n=new Uint8Array(n.buffer,e,r),e=0;var a=t._bin,o={};a.readUshort(n,e),e+=2;var s=a.readUshort(n,e);e+=2;var l=[];o.tables=[];for(var f=0;f<s;f++){var d=a.readUshort(n,e);e+=2;var h=a.readUshort(n,e);e+=2;var A=a.readUint(n,e);e+=4;var m="p"+d+"e"+h,p=l.indexOf(A);if(p==-1){var v;p=o.tables.length,l.push(A);var C=a.readUshort(n,A);C==0?v=t.cmap.parse0(n,A):C==4?v=t.cmap.parse4(n,A):C==6?v=t.cmap.parse6(n,A):C==12?v=t.cmap.parse12(n,A):console.debug("unknown format: "+C,d,h,A),o.tables.push(v)}if(o[m]!=null)throw"multiple tables for one platform+encoding";o[m]=p}return o},t.cmap.parse0=function(n,e){var r=t._bin,a={};a.format=r.readUshort(n,e),e+=2;var o=r.readUshort(n,e);e+=2,r.readUshort(n,e),e+=2,a.map=[];for(var s=0;s<o-6;s++)a.map.push(n[e+s]);return a},t.cmap.parse4=function(n,e){var r=t._bin,a=e,o={};o.format=r.readUshort(n,e),e+=2;var s=r.readUshort(n,e);e+=2,r.readUshort(n,e),e+=2;var l=r.readUshort(n,e);e+=2;var f=l/2;o.searchRange=r.readUshort(n,e),e+=2,o.entrySelector=r.readUshort(n,e),e+=2,o.rangeShift=r.readUshort(n,e),e+=2,o.endCount=r.readUshorts(n,e,f),e+=2*f,e+=2,o.startCount=r.readUshorts(n,e,f),e+=2*f,o.idDelta=[];for(var d=0;d<f;d++)o.idDelta.push(r.readShort(n,e)),e+=2;for(o.idRangeOffset=r.readUshorts(n,e,f),e+=2*f,o.glyphIdArray=[];e<a+s;)o.glyphIdArray.push(r.readUshort(n,e)),e+=2;return o},t.cmap.parse6=function(n,e){var r=t._bin,a={};a.format=r.readUshort(n,e),e+=2,r.readUshort(n,e),e+=2,r.readUshort(n,e),e+=2,a.firstCode=r.readUshort(n,e),e+=2;var o=r.readUshort(n,e);e+=2,a.glyphIdArray=[];for(var s=0;s<o;s++)a.glyphIdArray.push(r.readUshort(n,e)),e+=2;return a},t.cmap.parse12=function(n,e){var r=t._bin,a={};a.format=r.readUshort(n,e),e+=2,e+=2,r.readUint(n,e),e+=4,r.readUint(n,e),e+=4;var o=r.readUint(n,e);e+=4,a.groups=[];for(var s=0;s<o;s++){var l=e+12*s,f=r.readUint(n,l+0),d=r.readUint(n,l+4),h=r.readUint(n,l+8);a.groups.push([f,d,h])}return a},t.glyf={},t.glyf.parse=function(n,e,r,a){for(var o=[],s=0;s<a.maxp.numGlyphs;s++)o.push(null);return o},t.glyf._parseGlyf=function(n,e){var r=t._bin,a=n._data,o=t._tabOffset(a,"glyf",n._offset)+n.loca[e];if(n.loca[e]==n.loca[e+1])return null;var s={};if(s.noc=r.readShort(a,o),o+=2,s.xMin=r.readShort(a,o),o+=2,s.yMin=r.readShort(a,o),o+=2,s.xMax=r.readShort(a,o),o+=2,s.yMax=r.readShort(a,o),o+=2,s.xMin>=s.xMax||s.yMin>=s.yMax)return null;if(s.noc>0){s.endPts=[];for(var l=0;l<s.noc;l++)s.endPts.push(r.readUshort(a,o)),o+=2;var f=r.readUshort(a,o);if(o+=2,a.length-o<f)return null;s.instructions=r.readBytes(a,o,f),o+=f;var d=s.endPts[s.noc-1]+1;for(s.flags=[],l=0;l<d;l++){var h=a[o];if(o++,s.flags.push(h),(8&h)!=0){var A=a[o];o++;for(var m=0;m<A;m++)s.flags.push(h),l++}}for(s.xs=[],l=0;l<d;l++){var p=(2&s.flags[l])!=0,v=(16&s.flags[l])!=0;p?(s.xs.push(v?a[o]:-a[o]),o++):v?s.xs.push(0):(s.xs.push(r.readShort(a,o)),o+=2)}for(s.ys=[],l=0;l<d;l++)p=(4&s.flags[l])!=0,v=(32&s.flags[l])!=0,p?(s.ys.push(v?a[o]:-a[o]),o++):v?s.ys.push(0):(s.ys.push(r.readShort(a,o)),o+=2);var C=0,b=0;for(l=0;l<d;l++)C+=s.xs[l],b+=s.ys[l],s.xs[l]=C,s.ys[l]=b}else{var g;s.parts=[];do{g=r.readUshort(a,o),o+=2;var E={m:{a:1,b:0,c:0,d:1,tx:0,ty:0},p1:-1,p2:-1};if(s.parts.push(E),E.glyphIndex=r.readUshort(a,o),o+=2,1&g){var D=r.readShort(a,o);o+=2;var F=r.readShort(a,o);o+=2}else D=r.readInt8(a,o),o++,F=r.readInt8(a,o),o++;2&g?(E.m.tx=D,E.m.ty=F):(E.p1=D,E.p2=F),8&g?(E.m.a=E.m.d=r.readF2dot14(a,o),o+=2):64&g?(E.m.a=r.readF2dot14(a,o),o+=2,E.m.d=r.readF2dot14(a,o),o+=2):128&g&&(E.m.a=r.readF2dot14(a,o),o+=2,E.m.b=r.readF2dot14(a,o),o+=2,E.m.c=r.readF2dot14(a,o),o+=2,E.m.d=r.readF2dot14(a,o),o+=2)}while(32&g);if(256&g){var M=r.readUshort(a,o);for(o+=2,s.instr=[],l=0;l<M;l++)s.instr.push(a[o]),o++}}return s},t.GDEF={},t.GDEF.parse=function(n,e,r,a){var o=e;e+=4;var s=t._bin.readUshort(n,e);return{glyphClassDef:s===0?null:t._lctf.readClassDef(n,o+s)}},t.GPOS={},t.GPOS.parse=function(n,e,r,a){return t._lctf.parse(n,e,r,a,t.GPOS.subt)},t.GPOS.subt=function(n,e,r,a){var o=t._bin,s=r,l={};if(l.fmt=o.readUshort(n,r),r+=2,e==1||e==2||e==3||e==7||e==8&&l.fmt<=2){var f=o.readUshort(n,r);r+=2,l.coverage=t._lctf.readCoverage(n,f+s)}if(e==1&&l.fmt==1){var d=o.readUshort(n,r);r+=2,d!=0&&(l.pos=t.GPOS.readValueRecord(n,r,d))}else if(e==2&&l.fmt>=1&&l.fmt<=2){d=o.readUshort(n,r),r+=2;var h=o.readUshort(n,r);r+=2;var A=t._lctf.numOfOnes(d),m=t._lctf.numOfOnes(h);if(l.fmt==1){l.pairsets=[];var p=o.readUshort(n,r);r+=2;for(var v=0;v<p;v++){var C=s+o.readUshort(n,r);r+=2;var b=o.readUshort(n,C);C+=2;for(var g=[],E=0;E<b;E++){var D=o.readUshort(n,C);C+=2,d!=0&&(y=t.GPOS.readValueRecord(n,C,d),C+=2*A),h!=0&&(S=t.GPOS.readValueRecord(n,C,h),C+=2*m),g.push({gid2:D,val1:y,val2:S})}l.pairsets.push(g)}}if(l.fmt==2){var F=o.readUshort(n,r);r+=2;var M=o.readUshort(n,r);r+=2;var U=o.readUshort(n,r);r+=2;var x=o.readUshort(n,r);for(r+=2,l.classDef1=t._lctf.readClassDef(n,s+F),l.classDef2=t._lctf.readClassDef(n,s+M),l.matrix=[],v=0;v<U;v++){var K=[];for(E=0;E<x;E++){var y=null,S=null;d!=0&&(y=t.GPOS.readValueRecord(n,r,d),r+=2*A),h!=0&&(S=t.GPOS.readValueRecord(n,r,h),r+=2*m),K.push({val1:y,val2:S})}l.matrix.push(K)}}}else if(e==4&&l.fmt==1)l.markCoverage=t._lctf.readCoverage(n,o.readUshort(n,r)+s),l.baseCoverage=t._lctf.readCoverage(n,o.readUshort(n,r+2)+s),l.markClassCount=o.readUshort(n,r+4),l.markArray=t.GPOS.readMarkArray(n,o.readUshort(n,r+6)+s),l.baseArray=t.GPOS.readBaseArray(n,o.readUshort(n,r+8)+s,l.markClassCount);else if(e==6&&l.fmt==1)l.mark1Coverage=t._lctf.readCoverage(n,o.readUshort(n,r)+s),l.mark2Coverage=t._lctf.readCoverage(n,o.readUshort(n,r+2)+s),l.markClassCount=o.readUshort(n,r+4),l.mark1Array=t.GPOS.readMarkArray(n,o.readUshort(n,r+6)+s),l.mark2Array=t.GPOS.readBaseArray(n,o.readUshort(n,r+8)+s,l.markClassCount);else{if(e==9&&l.fmt==1){var G=o.readUshort(n,r);r+=2;var j=o.readUint(n,r);if(r+=4,a.ltype==9)a.ltype=G;else if(a.ltype!=G)throw"invalid extension substitution";return t.GPOS.subt(n,a.ltype,s+j)}console.debug("unsupported GPOS table LookupType",e,"format",l.fmt)}return l},t.GPOS.readValueRecord=function(n,e,r){var a=t._bin,o=[];return o.push(1&r?a.readShort(n,e):0),e+=1&r?2:0,o.push(2&r?a.readShort(n,e):0),e+=2&r?2:0,o.push(4&r?a.readShort(n,e):0),e+=4&r?2:0,o.push(8&r?a.readShort(n,e):0),e+=8&r?2:0,o},t.GPOS.readBaseArray=function(n,e,r){var a=t._bin,o=[],s=e,l=a.readUshort(n,e);e+=2;for(var f=0;f<l;f++){for(var d=[],h=0;h<r;h++)d.push(t.GPOS.readAnchorRecord(n,s+a.readUshort(n,e))),e+=2;o.push(d)}return o},t.GPOS.readMarkArray=function(n,e){var r=t._bin,a=[],o=e,s=r.readUshort(n,e);e+=2;for(var l=0;l<s;l++){var f=t.GPOS.readAnchorRecord(n,r.readUshort(n,e+2)+o);f.markClass=r.readUshort(n,e),a.push(f),e+=4}return a},t.GPOS.readAnchorRecord=function(n,e){var r=t._bin,a={};return a.fmt=r.readUshort(n,e),a.x=r.readShort(n,e+2),a.y=r.readShort(n,e+4),a},t.GSUB={},t.GSUB.parse=function(n,e,r,a){return t._lctf.parse(n,e,r,a,t.GSUB.subt)},t.GSUB.subt=function(n,e,r,a){var o=t._bin,s=r,l={};if(l.fmt=o.readUshort(n,r),r+=2,e!=1&&e!=2&&e!=4&&e!=5&&e!=6)return null;if(e==1||e==2||e==4||e==5&&l.fmt<=2||e==6&&l.fmt<=2){var f=o.readUshort(n,r);r+=2,l.coverage=t._lctf.readCoverage(n,s+f)}if(e==1&&l.fmt>=1&&l.fmt<=2){if(l.fmt==1)l.delta=o.readShort(n,r),r+=2;else if(l.fmt==2){var d=o.readUshort(n,r);r+=2,l.newg=o.readUshorts(n,r,d),r+=2*l.newg.length}}else if(e==2&&l.fmt==1){d=o.readUshort(n,r),r+=2,l.seqs=[];for(var h=0;h<d;h++){var A=o.readUshort(n,r)+s;r+=2;var m=o.readUshort(n,A);l.seqs.push(o.readUshorts(n,A+2,m))}}else if(e==4)for(l.vals=[],d=o.readUshort(n,r),r+=2,h=0;h<d;h++){var p=o.readUshort(n,r);r+=2,l.vals.push(t.GSUB.readLigatureSet(n,s+p))}else if(e==5&&l.fmt==2){if(l.fmt==2){var v=o.readUshort(n,r);r+=2,l.cDef=t._lctf.readClassDef(n,s+v),l.scset=[];var C=o.readUshort(n,r);for(r+=2,h=0;h<C;h++){var b=o.readUshort(n,r);r+=2,l.scset.push(b==0?null:t.GSUB.readSubClassSet(n,s+b))}}}else if(e==6&&l.fmt==3){if(l.fmt==3){for(h=0;h<3;h++){d=o.readUshort(n,r),r+=2;for(var g=[],E=0;E<d;E++)g.push(t._lctf.readCoverage(n,s+o.readUshort(n,r+2*E)));r+=2*d,h==0&&(l.backCvg=g),h==1&&(l.inptCvg=g),h==2&&(l.ahedCvg=g)}d=o.readUshort(n,r),r+=2,l.lookupRec=t.GSUB.readSubstLookupRecords(n,r,d)}}else{if(e==7&&l.fmt==1){var D=o.readUshort(n,r);r+=2;var F=o.readUint(n,r);if(r+=4,a.ltype==9)a.ltype=D;else if(a.ltype!=D)throw"invalid extension substitution";return t.GSUB.subt(n,a.ltype,s+F)}console.debug("unsupported GSUB table LookupType",e,"format",l.fmt)}return l},t.GSUB.readSubClassSet=function(n,e){var r=t._bin.readUshort,a=e,o=[],s=r(n,e);e+=2;for(var l=0;l<s;l++){var f=r(n,e);e+=2,o.push(t.GSUB.readSubClassRule(n,a+f))}return o},t.GSUB.readSubClassRule=function(n,e){var r=t._bin.readUshort,a={},o=r(n,e),s=r(n,e+=2);e+=2,a.input=[];for(var l=0;l<o-1;l++)a.input.push(r(n,e)),e+=2;return a.substLookupRecords=t.GSUB.readSubstLookupRecords(n,e,s),a},t.GSUB.readSubstLookupRecords=function(n,e,r){for(var a=t._bin.readUshort,o=[],s=0;s<r;s++)o.push(a(n,e),a(n,e+2)),e+=4;return o},t.GSUB.readChainSubClassSet=function(n,e){var r=t._bin,a=e,o=[],s=r.readUshort(n,e);e+=2;for(var l=0;l<s;l++){var f=r.readUshort(n,e);e+=2,o.push(t.GSUB.readChainSubClassRule(n,a+f))}return o},t.GSUB.readChainSubClassRule=function(n,e){for(var r=t._bin,a={},o=["backtrack","input","lookahead"],s=0;s<o.length;s++){var l=r.readUshort(n,e);e+=2,s==1&&l--,a[o[s]]=r.readUshorts(n,e,l),e+=2*a[o[s]].length}return l=r.readUshort(n,e),e+=2,a.subst=r.readUshorts(n,e,2*l),e+=2*a.subst.length,a},t.GSUB.readLigatureSet=function(n,e){var r=t._bin,a=e,o=[],s=r.readUshort(n,e);e+=2;for(var l=0;l<s;l++){var f=r.readUshort(n,e);e+=2,o.push(t.GSUB.readLigature(n,a+f))}return o},t.GSUB.readLigature=function(n,e){var r=t._bin,a={chain:[]};a.nglyph=r.readUshort(n,e),e+=2;var o=r.readUshort(n,e);e+=2;for(var s=0;s<o-1;s++)a.chain.push(r.readUshort(n,e)),e+=2;return a},t.head={},t.head.parse=function(n,e,r){var a=t._bin,o={};return a.readFixed(n,e),e+=4,o.fontRevision=a.readFixed(n,e),e+=4,a.readUint(n,e),e+=4,a.readUint(n,e),e+=4,o.flags=a.readUshort(n,e),e+=2,o.unitsPerEm=a.readUshort(n,e),e+=2,o.created=a.readUint64(n,e),e+=8,o.modified=a.readUint64(n,e),e+=8,o.xMin=a.readShort(n,e),e+=2,o.yMin=a.readShort(n,e),e+=2,o.xMax=a.readShort(n,e),e+=2,o.yMax=a.readShort(n,e),e+=2,o.macStyle=a.readUshort(n,e),e+=2,o.lowestRecPPEM=a.readUshort(n,e),e+=2,o.fontDirectionHint=a.readShort(n,e),e+=2,o.indexToLocFormat=a.readShort(n,e),e+=2,o.glyphDataFormat=a.readShort(n,e),e+=2,o},t.hhea={},t.hhea.parse=function(n,e,r){var a=t._bin,o={};return a.readFixed(n,e),e+=4,o.ascender=a.readShort(n,e),e+=2,o.descender=a.readShort(n,e),e+=2,o.lineGap=a.readShort(n,e),e+=2,o.advanceWidthMax=a.readUshort(n,e),e+=2,o.minLeftSideBearing=a.readShort(n,e),e+=2,o.minRightSideBearing=a.readShort(n,e),e+=2,o.xMaxExtent=a.readShort(n,e),e+=2,o.caretSlopeRise=a.readShort(n,e),e+=2,o.caretSlopeRun=a.readShort(n,e),e+=2,o.caretOffset=a.readShort(n,e),e+=2,e+=8,o.metricDataFormat=a.readShort(n,e),e+=2,o.numberOfHMetrics=a.readUshort(n,e),e+=2,o},t.hmtx={},t.hmtx.parse=function(n,e,r,a){for(var o=t._bin,s={aWidth:[],lsBearing:[]},l=0,f=0,d=0;d<a.maxp.numGlyphs;d++)d<a.hhea.numberOfHMetrics&&(l=o.readUshort(n,e),e+=2,f=o.readShort(n,e),e+=2),s.aWidth.push(l),s.lsBearing.push(f);return s},t.kern={},t.kern.parse=function(n,e,r,a){var o=t._bin,s=o.readUshort(n,e);if(e+=2,s==1)return t.kern.parseV1(n,e-2,r,a);var l=o.readUshort(n,e);e+=2;for(var f={glyph1:[],rval:[]},d=0;d<l;d++){e+=2,r=o.readUshort(n,e),e+=2;var h=o.readUshort(n,e);e+=2;var A=h>>>8;if((A&=15)!=0)throw"unknown kern table format: "+A;e=t.kern.readFormat0(n,e,f)}return f},t.kern.parseV1=function(n,e,r,a){var o=t._bin;o.readFixed(n,e),e+=4;var s=o.readUint(n,e);e+=4;for(var l={glyph1:[],rval:[]},f=0;f<s;f++){o.readUint(n,e),e+=4;var d=o.readUshort(n,e);e+=2,o.readUshort(n,e),e+=2;var h=d>>>8;if((h&=15)!=0)throw"unknown kern table format: "+h;e=t.kern.readFormat0(n,e,l)}return l},t.kern.readFormat0=function(n,e,r){var a=t._bin,o=-1,s=a.readUshort(n,e);e+=2,a.readUshort(n,e),e+=2,a.readUshort(n,e),e+=2,a.readUshort(n,e),e+=2;for(var l=0;l<s;l++){var f=a.readUshort(n,e);e+=2;var d=a.readUshort(n,e);e+=2;var h=a.readShort(n,e);e+=2,f!=o&&(r.glyph1.push(f),r.rval.push({glyph2:[],vals:[]}));var A=r.rval[r.rval.length-1];A.glyph2.push(d),A.vals.push(h),o=f}return e},t.loca={},t.loca.parse=function(n,e,r,a){var o=t._bin,s=[],l=a.head.indexToLocFormat,f=a.maxp.numGlyphs+1;if(l==0)for(var d=0;d<f;d++)s.push(o.readUshort(n,e+(d<<1))<<1);if(l==1)for(d=0;d<f;d++)s.push(o.readUint(n,e+(d<<2)));return s},t.maxp={},t.maxp.parse=function(n,e,r){var a=t._bin,o={},s=a.readUint(n,e);return e+=4,o.numGlyphs=a.readUshort(n,e),e+=2,s==65536&&(o.maxPoints=a.readUshort(n,e),e+=2,o.maxContours=a.readUshort(n,e),e+=2,o.maxCompositePoints=a.readUshort(n,e),e+=2,o.maxCompositeContours=a.readUshort(n,e),e+=2,o.maxZones=a.readUshort(n,e),e+=2,o.maxTwilightPoints=a.readUshort(n,e),e+=2,o.maxStorage=a.readUshort(n,e),e+=2,o.maxFunctionDefs=a.readUshort(n,e),e+=2,o.maxInstructionDefs=a.readUshort(n,e),e+=2,o.maxStackElements=a.readUshort(n,e),e+=2,o.maxSizeOfInstructions=a.readUshort(n,e),e+=2,o.maxComponentElements=a.readUshort(n,e),e+=2,o.maxComponentDepth=a.readUshort(n,e),e+=2),o},t.name={},t.name.parse=function(n,e,r){var a=t._bin,o={};a.readUshort(n,e),e+=2;var s=a.readUshort(n,e);e+=2,a.readUshort(n,e);for(var l,f=["copyright","fontFamily","fontSubfamily","ID","fullName","version","postScriptName","trademark","manufacturer","designer","description","urlVendor","urlDesigner","licence","licenceURL","---","typoFamilyName","typoSubfamilyName","compatibleFull","sampleText","postScriptCID","wwsFamilyName","wwsSubfamilyName","lightPalette","darkPalette"],d=e+=2,h=0;h<s;h++){var A=a.readUshort(n,e);e+=2;var m=a.readUshort(n,e);e+=2;var p=a.readUshort(n,e);e+=2;var v=a.readUshort(n,e);e+=2;var C=a.readUshort(n,e);e+=2;var b=a.readUshort(n,e);e+=2;var g,E=f[v],D=d+12*s+b;if(A==0)g=a.readUnicode(n,D,C/2);else if(A==3&&m==0)g=a.readUnicode(n,D,C/2);else if(m==0)g=a.readASCII(n,D,C);else if(m==1)g=a.readUnicode(n,D,C/2);else if(m==3)g=a.readUnicode(n,D,C/2);else{if(A!=1)throw"unknown encoding "+m+", platformID: "+A;g=a.readASCII(n,D,C),console.debug("reading unknown MAC encoding "+m+" as ASCII")}var F="p"+A+","+p.toString(16);o[F]==null&&(o[F]={}),o[F][E!==void 0?E:v]=g,o[F]._lang=p}for(var M in o)if(o[M].postScriptName!=null&&o[M]._lang==1033)return o[M];for(var M in o)if(o[M].postScriptName!=null&&o[M]._lang==0)return o[M];for(var M in o)if(o[M].postScriptName!=null&&o[M]._lang==3084)return o[M];for(var M in o)if(o[M].postScriptName!=null)return o[M];for(var M in o){l=M;break}return console.debug("returning name table with languageID "+o[l]._lang),o[l]},t["OS/2"]={},t["OS/2"].parse=function(n,e,r){var a=t._bin.readUshort(n,e);e+=2;var o={};if(a==0)t["OS/2"].version0(n,e,o);else if(a==1)t["OS/2"].version1(n,e,o);else if(a==2||a==3||a==4)t["OS/2"].version2(n,e,o);else{if(a!=5)throw"unknown OS/2 table version: "+a;t["OS/2"].version5(n,e,o)}return o},t["OS/2"].version0=function(n,e,r){var a=t._bin;return r.xAvgCharWidth=a.readShort(n,e),e+=2,r.usWeightClass=a.readUshort(n,e),e+=2,r.usWidthClass=a.readUshort(n,e),e+=2,r.fsType=a.readUshort(n,e),e+=2,r.ySubscriptXSize=a.readShort(n,e),e+=2,r.ySubscriptYSize=a.readShort(n,e),e+=2,r.ySubscriptXOffset=a.readShort(n,e),e+=2,r.ySubscriptYOffset=a.readShort(n,e),e+=2,r.ySuperscriptXSize=a.readShort(n,e),e+=2,r.ySuperscriptYSize=a.readShort(n,e),e+=2,r.ySuperscriptXOffset=a.readShort(n,e),e+=2,r.ySuperscriptYOffset=a.readShort(n,e),e+=2,r.yStrikeoutSize=a.readShort(n,e),e+=2,r.yStrikeoutPosition=a.readShort(n,e),e+=2,r.sFamilyClass=a.readShort(n,e),e+=2,r.panose=a.readBytes(n,e,10),e+=10,r.ulUnicodeRange1=a.readUint(n,e),e+=4,r.ulUnicodeRange2=a.readUint(n,e),e+=4,r.ulUnicodeRange3=a.readUint(n,e),e+=4,r.ulUnicodeRange4=a.readUint(n,e),e+=4,r.achVendID=[a.readInt8(n,e),a.readInt8(n,e+1),a.readInt8(n,e+2),a.readInt8(n,e+3)],e+=4,r.fsSelection=a.readUshort(n,e),e+=2,r.usFirstCharIndex=a.readUshort(n,e),e+=2,r.usLastCharIndex=a.readUshort(n,e),e+=2,r.sTypoAscender=a.readShort(n,e),e+=2,r.sTypoDescender=a.readShort(n,e),e+=2,r.sTypoLineGap=a.readShort(n,e),e+=2,r.usWinAscent=a.readUshort(n,e),e+=2,r.usWinDescent=a.readUshort(n,e),e+=2},t["OS/2"].version1=function(n,e,r){var a=t._bin;return e=t["OS/2"].version0(n,e,r),r.ulCodePageRange1=a.readUint(n,e),e+=4,r.ulCodePageRange2=a.readUint(n,e),e+=4},t["OS/2"].version2=function(n,e,r){var a=t._bin;return e=t["OS/2"].version1(n,e,r),r.sxHeight=a.readShort(n,e),e+=2,r.sCapHeight=a.readShort(n,e),e+=2,r.usDefault=a.readUshort(n,e),e+=2,r.usBreak=a.readUshort(n,e),e+=2,r.usMaxContext=a.readUshort(n,e),e+=2},t["OS/2"].version5=function(n,e,r){var a=t._bin;return e=t["OS/2"].version2(n,e,r),r.usLowerOpticalPointSize=a.readUshort(n,e),e+=2,r.usUpperOpticalPointSize=a.readUshort(n,e),e+=2},t.post={},t.post.parse=function(n,e,r){var a=t._bin,o={};return o.version=a.readFixed(n,e),e+=4,o.italicAngle=a.readFixed(n,e),e+=4,o.underlinePosition=a.readShort(n,e),e+=2,o.underlineThickness=a.readShort(n,e),e+=2,o},t==null&&(t={}),t.U==null&&(t.U={}),t.U.codeToGlyph=function(n,e){var r=n.cmap,a=-1;if(r.p0e4!=null?a=r.p0e4:r.p3e1!=null?a=r.p3e1:r.p1e0!=null?a=r.p1e0:r.p0e3!=null&&(a=r.p0e3),a==-1)throw"no familiar platform and encoding!";var o=r.tables[a];if(o.format==0)return e>=o.map.length?0:o.map[e];if(o.format==4){for(var s=-1,l=0;l<o.endCount.length;l++)if(e<=o.endCount[l]){s=l;break}return s==-1||o.startCount[s]>e?0:65535&(o.idRangeOffset[s]!=0?o.glyphIdArray[e-o.startCount[s]+(o.idRangeOffset[s]>>1)-(o.idRangeOffset.length-s)]:e+o.idDelta[s])}if(o.format==12){if(e>o.groups[o.groups.length-1][1])return 0;for(l=0;l<o.groups.length;l++){var f=o.groups[l];if(f[0]<=e&&e<=f[1])return f[2]+(e-f[0])}return 0}throw"unknown cmap table format "+o.format},t.U.glyphToPath=function(n,e){var r={cmds:[],crds:[]};if(n.SVG&&n.SVG.entries[e]){var a=n.SVG.entries[e];return a==null?r:(typeof a=="string"&&(a=t.SVG.toPath(a),n.SVG.entries[e]=a),a)}if(n.CFF){var o={x:0,y:0,stack:[],nStems:0,haveWidth:!1,width:n.CFF.Private?n.CFF.Private.defaultWidthX:0,open:!1},s=n.CFF,l=n.CFF.Private;if(s.ROS){for(var f=0;s.FDSelect[f+2]<=e;)f+=2;l=s.FDArray[s.FDSelect[f+1]].Private}t.U._drawCFF(n.CFF.CharStrings[e],o,s,l,r)}else n.glyf&&t.U._drawGlyf(e,n,r);return r},t.U._drawGlyf=function(n,e,r){var a=e.glyf[n];a==null&&(a=e.glyf[n]=t.glyf._parseGlyf(e,n)),a!=null&&(a.noc>-1?t.U._simpleGlyph(a,r):t.U._compoGlyph(a,e,r))},t.U._simpleGlyph=function(n,e){for(var r=0;r<n.noc;r++){for(var a=r==0?0:n.endPts[r-1]+1,o=n.endPts[r],s=a;s<=o;s++){var l=s==a?o:s-1,f=s==o?a:s+1,d=1&n.flags[s],h=1&n.flags[l],A=1&n.flags[f],m=n.xs[s],p=n.ys[s];if(s==a)if(d){if(!h){t.U.P.moveTo(e,m,p);continue}t.U.P.moveTo(e,n.xs[l],n.ys[l])}else h?t.U.P.moveTo(e,n.xs[l],n.ys[l]):t.U.P.moveTo(e,(n.xs[l]+m)/2,(n.ys[l]+p)/2);d?h&&t.U.P.lineTo(e,m,p):A?t.U.P.qcurveTo(e,m,p,n.xs[f],n.ys[f]):t.U.P.qcurveTo(e,m,p,(m+n.xs[f])/2,(p+n.ys[f])/2)}t.U.P.closePath(e)}},t.U._compoGlyph=function(n,e,r){for(var a=0;a<n.parts.length;a++){var o={cmds:[],crds:[]},s=n.parts[a];t.U._drawGlyf(s.glyphIndex,e,o);for(var l=s.m,f=0;f<o.crds.length;f+=2){var d=o.crds[f],h=o.crds[f+1];r.crds.push(d*l.a+h*l.b+l.tx),r.crds.push(d*l.c+h*l.d+l.ty)}for(f=0;f<o.cmds.length;f++)r.cmds.push(o.cmds[f])}},t.U._getGlyphClass=function(n,e){var r=t._lctf.getInterval(e,n);return r==-1?0:e[r+2]},t.U._applySubs=function(n,e,r,a){for(var o=n.length-e-1,s=0;s<r.tabs.length;s++)if(r.tabs[s]!=null){var l,f=r.tabs[s];if(!f.coverage||(l=t._lctf.coverageIndex(f.coverage,n[e]))!=-1){if(r.ltype==1)n[e],f.fmt==1?n[e]=n[e]+f.delta:n[e]=f.newg[l];else if(r.ltype==4)for(var d=f.vals[l],h=0;h<d.length;h++){var A=d[h],m=A.chain.length;if(!(m>o)){for(var p=!0,v=0,C=0;C<m;C++){for(;n[e+v+(1+C)]==-1;)v++;A.chain[C]!=n[e+v+(1+C)]&&(p=!1)}if(p){for(n[e]=A.nglyph,C=0;C<m+v;C++)n[e+C+1]=-1;break}}}else if(r.ltype==5&&f.fmt==2)for(var b=t._lctf.getInterval(f.cDef,n[e]),g=f.cDef[b+2],E=f.scset[g],D=0;D<E.length;D++){var F=E[D],M=F.input;if(!(M.length>o)){for(p=!0,C=0;C<M.length;C++){var U=t._lctf.getInterval(f.cDef,n[e+1+C]);if(b==-1&&f.cDef[U+2]!=M[C]){p=!1;break}}if(p){var x=F.substLookupRecords;for(h=0;h<x.length;h+=2)x[h],x[h+1]}}}else if(r.ltype==6&&f.fmt==3){if(!t.U._glsCovered(n,f.backCvg,e-f.backCvg.length)||!t.U._glsCovered(n,f.inptCvg,e)||!t.U._glsCovered(n,f.ahedCvg,e+f.inptCvg.length))continue;var K=f.lookupRec;for(D=0;D<K.length;D+=2){b=K[D];var y=a[K[D+1]];t.U._applySubs(n,e+b,y,a)}}}}},t.U._glsCovered=function(n,e,r){for(var a=0;a<e.length;a++)if(t._lctf.coverageIndex(e[a],n[r+a])==-1)return!1;return!0},t.U.glyphsToPath=function(n,e,r){for(var a={cmds:[],crds:[]},o=0,s=0;s<e.length;s++){var l=e[s];if(l!=-1){for(var f=s<e.length-1&&e[s+1]!=-1?e[s+1]:0,d=t.U.glyphToPath(n,l),h=0;h<d.crds.length;h+=2)a.crds.push(d.crds[h]+o),a.crds.push(d.crds[h+1]);for(r&&a.cmds.push(r),h=0;h<d.cmds.length;h++)a.cmds.push(d.cmds[h]);r&&a.cmds.push("X"),o+=n.hmtx.aWidth[l],s<e.length-1&&(o+=t.U.getPairAdjustment(n,l,f))}}return a},t.U.P={},t.U.P.moveTo=function(n,e,r){n.cmds.push("M"),n.crds.push(e,r)},t.U.P.lineTo=function(n,e,r){n.cmds.push("L"),n.crds.push(e,r)},t.U.P.curveTo=function(n,e,r,a,o,s,l){n.cmds.push("C"),n.crds.push(e,r,a,o,s,l)},t.U.P.qcurveTo=function(n,e,r,a,o){n.cmds.push("Q"),n.crds.push(e,r,a,o)},t.U.P.closePath=function(n){n.cmds.push("Z")},t.U._drawCFF=function(n,e,r,a,o){for(var s=e.stack,l=e.nStems,f=e.haveWidth,d=e.width,h=e.open,A=0,m=e.x,p=e.y,v=0,C=0,b=0,g=0,E=0,D=0,F=0,M=0,U=0,x=0,K={val:0,size:0};A<n.length;){t.CFF.getCharString(n,A,K);var y=K.val;if(A+=K.size,y=="o1"||y=="o18")s.length%2!=0&&!f&&(d=s.shift()+a.nominalWidthX),l+=s.length>>1,s.length=0,f=!0;else if(y=="o3"||y=="o23")s.length%2!=0&&!f&&(d=s.shift()+a.nominalWidthX),l+=s.length>>1,s.length=0,f=!0;else if(y=="o4")s.length>1&&!f&&(d=s.shift()+a.nominalWidthX,f=!0),h&&t.U.P.closePath(o),p+=s.pop(),t.U.P.moveTo(o,m,p),h=!0;else if(y=="o5")for(;s.length>0;)m+=s.shift(),p+=s.shift(),t.U.P.lineTo(o,m,p);else if(y=="o6"||y=="o7")for(var S=s.length,G=y=="o6",j=0;j<S;j++){var P=s.shift();G?m+=P:p+=P,G=!G,t.U.P.lineTo(o,m,p)}else if(y=="o8"||y=="o24"){S=s.length;for(var q=0;q+6<=S;)v=m+s.shift(),C=p+s.shift(),b=v+s.shift(),g=C+s.shift(),m=b+s.shift(),p=g+s.shift(),t.U.P.curveTo(o,v,C,b,g,m,p),q+=6;y=="o24"&&(m+=s.shift(),p+=s.shift(),t.U.P.lineTo(o,m,p))}else{if(y=="o11")break;if(y=="o1234"||y=="o1235"||y=="o1236"||y=="o1237")y=="o1234"&&(C=p,b=(v=m+s.shift())+s.shift(),x=g=C+s.shift(),D=g,M=p,m=(F=(E=(U=b+s.shift())+s.shift())+s.shift())+s.shift(),t.U.P.curveTo(o,v,C,b,g,U,x),t.U.P.curveTo(o,E,D,F,M,m,p)),y=="o1235"&&(v=m+s.shift(),C=p+s.shift(),b=v+s.shift(),g=C+s.shift(),U=b+s.shift(),x=g+s.shift(),E=U+s.shift(),D=x+s.shift(),F=E+s.shift(),M=D+s.shift(),m=F+s.shift(),p=M+s.shift(),s.shift(),t.U.P.curveTo(o,v,C,b,g,U,x),t.U.P.curveTo(o,E,D,F,M,m,p)),y=="o1236"&&(v=m+s.shift(),C=p+s.shift(),b=v+s.shift(),x=g=C+s.shift(),D=g,F=(E=(U=b+s.shift())+s.shift())+s.shift(),M=D+s.shift(),m=F+s.shift(),t.U.P.curveTo(o,v,C,b,g,U,x),t.U.P.curveTo(o,E,D,F,M,m,p)),y=="o1237"&&(v=m+s.shift(),C=p+s.shift(),b=v+s.shift(),g=C+s.shift(),U=b+s.shift(),x=g+s.shift(),E=U+s.shift(),D=x+s.shift(),F=E+s.shift(),M=D+s.shift(),Math.abs(F-m)>Math.abs(M-p)?m=F+s.shift():p=M+s.shift(),t.U.P.curveTo(o,v,C,b,g,U,x),t.U.P.curveTo(o,E,D,F,M,m,p));else if(y=="o14"){if(s.length>0&&!f&&(d=s.shift()+r.nominalWidthX,f=!0),s.length==4){var re=s.shift(),O=s.shift(),L=s.shift(),B=s.shift(),T=t.CFF.glyphBySE(r,L),I=t.CFF.glyphBySE(r,B);t.U._drawCFF(r.CharStrings[T],e,r,a,o),e.x=re,e.y=O,t.U._drawCFF(r.CharStrings[I],e,r,a,o)}h&&(t.U.P.closePath(o),h=!1)}else if(y=="o19"||y=="o20")s.length%2!=0&&!f&&(d=s.shift()+a.nominalWidthX),l+=s.length>>1,s.length=0,f=!0,A+=l+7>>3;else if(y=="o21")s.length>2&&!f&&(d=s.shift()+a.nominalWidthX,f=!0),p+=s.pop(),m+=s.pop(),h&&t.U.P.closePath(o),t.U.P.moveTo(o,m,p),h=!0;else if(y=="o22")s.length>1&&!f&&(d=s.shift()+a.nominalWidthX,f=!0),m+=s.pop(),h&&t.U.P.closePath(o),t.U.P.moveTo(o,m,p),h=!0;else if(y=="o25"){for(;s.length>6;)m+=s.shift(),p+=s.shift(),t.U.P.lineTo(o,m,p);v=m+s.shift(),C=p+s.shift(),b=v+s.shift(),g=C+s.shift(),m=b+s.shift(),p=g+s.shift(),t.U.P.curveTo(o,v,C,b,g,m,p)}else if(y=="o26")for(s.length%2&&(m+=s.shift());s.length>0;)v=m,C=p+s.shift(),m=b=v+s.shift(),p=(g=C+s.shift())+s.shift(),t.U.P.curveTo(o,v,C,b,g,m,p);else if(y=="o27")for(s.length%2&&(p+=s.shift());s.length>0;)C=p,b=(v=m+s.shift())+s.shift(),g=C+s.shift(),m=b+s.shift(),p=g,t.U.P.curveTo(o,v,C,b,g,m,p);else if(y=="o10"||y=="o29"){var w=y=="o10"?a:r;if(s.length==0)console.debug("error: empty stack");else{var R=s.pop(),J=w.Subrs[R+w.Bias];e.x=m,e.y=p,e.nStems=l,e.haveWidth=f,e.width=d,e.open=h,t.U._drawCFF(J,e,r,a,o),m=e.x,p=e.y,l=e.nStems,f=e.haveWidth,d=e.width,h=e.open}}else if(y=="o30"||y=="o31"){var _=s.length,H=(q=0,y=="o31");for(q+=_-(S=-3&_);q<S;)H?(C=p,b=(v=m+s.shift())+s.shift(),p=(g=C+s.shift())+s.shift(),S-q==5?(m=b+s.shift(),q++):m=b,H=!1):(v=m,C=p+s.shift(),b=v+s.shift(),g=C+s.shift(),m=b+s.shift(),S-q==5?(p=g+s.shift(),q++):p=g,H=!0),t.U.P.curveTo(o,v,C,b,g,m,p),q+=4}else{if((y+"").charAt(0)=="o")throw console.debug("Unknown operation: "+y,n),y;s.push(y)}}}e.x=m,e.y=p,e.nStems=l,e.haveWidth=f,e.width=d,e.open=h};var i=t,c={Typr:i};return u.Typr=i,u.default=c,Object.defineProperty(u,"__esModule",{value:!0}),u}({}).Typr}/*!
|
|
45
|
+
Custom bundle of woff2otf (https://github.com/arty-name/woff2otf) with fflate
|
|
46
|
+
(https://github.com/101arrowz/fflate) for use in Troika text rendering.
|
|
47
|
+
Original licenses apply:
|
|
48
|
+
- fflate: https://github.com/101arrowz/fflate/blob/master/LICENSE (MIT)
|
|
49
|
+
- woff2otf.js: https://github.com/arty-name/woff2otf/blob/master/woff2otf.js (Apache2)
|
|
50
|
+
*/function Gc(){return function(u){var t=Uint8Array,i=Uint16Array,c=Uint32Array,n=new t([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),e=new t([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),r=new t([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),a=function(y,S){for(var G=new i(31),j=0;j<31;++j)G[j]=S+=1<<y[j-1];var P=new c(G[30]);for(j=1;j<30;++j)for(var q=G[j];q<G[j+1];++q)P[q]=q-G[j]<<5|j;return[G,P]},o=a(n,2),s=o[0],l=o[1];s[28]=258,l[258]=28;for(var f=a(e,0)[0],d=new i(32768),h=0;h<32768;++h){var A=(43690&h)>>>1|(21845&h)<<1;A=(61680&(A=(52428&A)>>>2|(13107&A)<<2))>>>4|(3855&A)<<4,d[h]=((65280&A)>>>8|(255&A)<<8)>>>1}var m=function(y,S,G){for(var j=y.length,P=0,q=new i(S);P<j;++P)++q[y[P]-1];var re,O=new i(S);for(P=0;P<S;++P)O[P]=O[P-1]+q[P-1]<<1;{re=new i(1<<S);var L=15-S;for(P=0;P<j;++P)if(y[P])for(var B=P<<4|y[P],T=S-y[P],I=O[y[P]-1]++<<T,w=I|(1<<T)-1;I<=w;++I)re[d[I]>>>L]=B}return re},p=new t(288);for(h=0;h<144;++h)p[h]=8;for(h=144;h<256;++h)p[h]=9;for(h=256;h<280;++h)p[h]=7;for(h=280;h<288;++h)p[h]=8;var v=new t(32);for(h=0;h<32;++h)v[h]=5;var C=m(p,9),b=m(v,5),g=function(y){for(var S=y[0],G=1;G<y.length;++G)y[G]>S&&(S=y[G]);return S},E=function(y,S,G){var j=S/8|0;return(y[j]|y[j+1]<<8)>>(7&S)&G},D=function(y,S){var G=S/8|0;return(y[G]|y[G+1]<<8|y[G+2]<<16)>>(7&S)},F=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],M=function(y,S,G){var j=new Error(S||F[y]);if(j.code=y,Error.captureStackTrace&&Error.captureStackTrace(j,M),!G)throw j;return j},U=function(y,S,G){var j=y.length;if(!j||G&&!G.l&&j<5)return S||new t(0);var P=!S||G,q=!G||G.i;G||(G={}),S||(S=new t(3*j));var re,O=function(le){var Ie=S.length;if(le>Ie){var De=new t(Math.max(2*Ie,le));De.set(S),S=De}},L=G.f||0,B=G.p||0,T=G.b||0,I=G.l,w=G.d,R=G.m,J=G.n,_=8*j;do{if(!I){G.f=L=E(y,B,1);var H=E(y,B+1,3);if(B+=3,!H){var W=y[($=((re=B)/8|0)+(7&re&&1)+4)-4]|y[$-3]<<8,ee=$+W;if(ee>j){q&&M(0);break}P&&O(T+W),S.set(y.subarray($,ee),T),G.b=T+=W,G.p=B=8*ee;continue}if(H==1)I=C,w=b,R=9,J=5;else if(H==2){var X=E(y,B,31)+257,N=E(y,B+10,15)+4,me=X+E(y,B+5,31)+1;B+=14;for(var fe=new t(me),Z=new t(19),te=0;te<N;++te)Z[r[te]]=E(y,B+3*te,7);B+=3*N;var ce=g(Z),Q=(1<<ce)-1,ne=m(Z,ce);for(te=0;te<me;){var $,k=ne[E(y,B,Q)];if(B+=15&k,($=k>>>4)<16)fe[te++]=$;else{var he=0,z=0;for($==16?(z=3+E(y,B,3),B+=2,he=fe[te-1]):$==17?(z=3+E(y,B,7),B+=3):$==18&&(z=11+E(y,B,127),B+=7);z--;)fe[te++]=he}}var ae=fe.subarray(0,X),Y=fe.subarray(X);R=g(ae),J=g(Y),I=m(ae,R),w=m(Y,J)}else M(1);if(B>_){q&&M(0);break}}P&&O(T+131072);for(var ye=(1<<R)-1,oe=(1<<J)-1,se=B;;se=B){var ue=(he=I[D(y,B)&ye])>>>4;if((B+=15&he)>_){q&&M(0);break}if(he||M(2),ue<256)S[T++]=ue;else{if(ue==256){se=B,I=null;break}var Ae=ue-254;if(ue>264){var Me=n[te=ue-257];Ae=E(y,B,(1<<Me)-1)+s[te],B+=Me}var xe=w[D(y,B)&oe],Be=xe>>>4;if(xe||M(3),B+=15&xe,Y=f[Be],Be>3&&(Me=e[Be],Y+=D(y,B)&(1<<Me)-1,B+=Me),B>_){q&&M(0);break}P&&O(T+131072);for(var ve=T+Ae;T<ve;T+=4)S[T]=S[T-Y],S[T+1]=S[T+1-Y],S[T+2]=S[T+2-Y],S[T+3]=S[T+3-Y];T=ve}}G.l=I,G.p=se,G.b=T,I&&(L=1,G.m=R,G.d=w,G.n=J)}while(!L);return T==S.length?S:function(le,Ie,De){(De==null||De>le.length)&&(De=le.length);var Je=new(le instanceof i?i:le instanceof c?c:t)(De-Ie);return Je.set(le.subarray(Ie,De)),Je}(S,0,T)},x=new t(0),K=typeof TextDecoder<"u"&&new TextDecoder;try{K.decode(x,{stream:!0})}catch{}return u.convert_streams=function(y){var S=new DataView(y),G=0;function j(){var X=S.getUint16(G);return G+=2,X}function P(){var X=S.getUint32(G);return G+=4,X}function q(X){W.setUint16(ee,X),ee+=2}function re(X){W.setUint32(ee,X),ee+=4}for(var O={signature:P(),flavor:P(),length:P(),numTables:j(),reserved:j(),totalSfntSize:P(),majorVersion:j(),minorVersion:j(),metaOffset:P(),metaLength:P(),metaOrigLength:P(),privOffset:P(),privLength:P()},L=0;Math.pow(2,L)<=O.numTables;)L++;L--;for(var B=16*Math.pow(2,L),T=16*O.numTables-B,I=12,w=[],R=0;R<O.numTables;R++)w.push({tag:P(),offset:P(),compLength:P(),origLength:P(),origChecksum:P()}),I+=16;var J,_=new Uint8Array(12+16*w.length+w.reduce(function(X,N){return X+N.origLength+4},0)),H=_.buffer,W=new DataView(H),ee=0;return re(O.flavor),q(O.numTables),q(B),q(L),q(T),w.forEach(function(X){re(X.tag),re(X.origChecksum),re(I),re(X.origLength),X.outOffset=I,(I+=X.origLength)%4!=0&&(I+=4-I%4)}),w.forEach(function(X){var N,me=y.slice(X.offset,X.offset+X.compLength);if(X.compLength!=X.origLength){var fe=new Uint8Array(X.origLength);N=new Uint8Array(me,2),U(N,fe)}else fe=new Uint8Array(me);_.set(fe,X.outOffset);var Z=0;(I=X.outOffset+X.origLength)%4!=0&&(Z=4-I%4),_.set(new Uint8Array(Z).buffer,X.outOffset+X.origLength),J=I+Z}),H.slice(0,J)},Object.defineProperty(u,"__esModule",{value:!0}),u}({}).convert_streams}function Rc(u,t){const i={M:2,L:2,Q:4,C:6,Z:0},c={C:"18g,ca,368,1kz",D:"17k,6,2,2+4,5+c,2+6,2+1,10+1,9+f,j+11,2+1,a,2,2+1,15+2,3,j+2,6+3,2+8,2,2,2+1,w+a,4+e,3+3,2,3+2,3+5,23+w,2f+4,3,2+9,2,b,2+3,3,1k+9,6+1,3+1,2+2,2+d,30g,p+y,1,1+1g,f+x,2,sd2+1d,jf3+4,f+3,2+4,2+2,b+3,42,2,4+2,2+1,2,3,t+1,9f+w,2,el+2,2+g,d+2,2l,2+1,5,3+1,2+1,2,3,6,16wm+1v",R:"17m+3,2,2,6+3,m,15+2,2+2,h+h,13,3+8,2,2,3+1,2,p+1,x,5+4,5,a,2,2,3,u,c+2,g+1,5,2+1,4+1,5j,6+1,2,b,2+2,f,2+1,1s+2,2,3+1,7,1ez0,2,2+1,4+4,b,4,3,b,42,2+2,4,3,2+1,2,o+3,ae,ep,x,2o+2,3+1,3,5+1,6",L:"x9u,jff,a,fd,jv",T:"4t,gj+33,7o+4,1+1,7c+18,2,2+1,2+1,2,21+a,2,1b+k,h,2u+6,3+5,3+1,2+3,y,2,v+q,2k+a,1n+8,a,p+3,2+8,2+2,2+4,18+2,3c+e,2+v,1k,2,5+7,5,4+6,b+1,u,1n,5+3,9,l+1,r,3+1,1m,5+1,5+1,3+2,4,v+1,4,c+1,1m,5+4,2+1,5,l+1,n+5,2,1n,3,2+3,9,8+1,c+1,v,1q,d,1f,4,1m+2,6+2,2+3,8+1,c+1,u,1n,3,7,6+1,l+1,t+1,1m+1,5+3,9,l+1,u,21,8+2,2,2j,3+6,d+7,2r,3+8,c+5,23+1,s,2,2,1k+d,2+4,2+1,6+a,2+z,a,2v+3,2+5,2+1,3+1,q+1,5+2,h+3,e,3+1,7,g,jk+2,qb+2,u+2,u+1,v+1,1t+1,2+6,9,3+a,a,1a+2,3c+1,z,3b+2,5+1,a,7+2,64+1,3,1n,2+6,2,2,3+7,7+9,3,1d+d,1,1+1,1s+3,1d,2+4,2,6,15+8,d+1,x+3,3+1,2+2,1l,2+1,4,2+2,1n+7,3+1,49+2,2+c,2+6,5,7,4+1,5j+1l,2+4,ek,3+1,r+4,1e+4,6+5,2p+c,1+3,1,1+2,1+b,2db+2,3y,2p+v,ff+3,30+1,n9x,1+2,2+9,x+1,29+1,7l,4,5,q+1,6,48+1,r+h,e,13+7,q+a,1b+2,1d,3+3,3+1,14,1w+5,3+1,3+1,d,9,1c,1g,2+2,3+1,6+1,2,17+1,9,6n,3,5,fn5,ki+f,h+f,5s,6y+2,ea,6b,46+4,1af+2,2+1,6+3,15+2,5,4m+1,fy+3,as+1,4a+a,4x,1j+e,1l+2,1e+3,3+1,1y+2,11+4,2+7,1r,d+1,1h+8,b+3,3,2o+2,3,2+1,7,4h,4+7,m+1,1m+1,4,12+6,4+4,5g+7,3+2,2,o,2d+5,2,5+1,2+1,6n+3,7+1,2+1,s+1,2e+7,3,2+1,2z,2,3+5,2,2u+2,3+3,2+4,78+8,2+1,75+1,2,5,41+3,3+1,5,x+9,15+5,3+3,9,a+5,3+2,1b+c,2+1,bb+6,2+5,2,2b+l,3+6,2+1,2+1,3f+5,4,2+1,2+6,2,21+1,4,2,9o+1,470+8,at4+4,1o+6,t5,1s+3,2a,f5l+1,2+3,43o+2,a+7,1+7,3+6,v+3,45+2,1j0+1i,5+1d,9,f,n+4,2+e,11t+6,2+g,3+6,2+1,2+4,7a+6,c6+3,15t+6,32+6,1,gzau,v+2n,3l+6n"},n=1,e=2,r=4,a=8,o=16,s=32;let l;function f(F){if(!l){const M={R:e,L:n,D:r,C:o,U:s,T:a};l=new Map;for(let U in c){let x=0;c[U].split(",").forEach(K=>{let[y,S]=K.split("+");y=parseInt(y,36),S=S?parseInt(S,36):0,l.set(x+=y,M[U]);for(let G=S;G--;)l.set(++x,M[U])})}}return l.get(F)||s}const d=1,h=2,A=3,m=4,p=[null,"isol","init","fina","medi"];function v(F){const M=new Uint8Array(F.length);let U=s,x=d,K=-1;for(let y=0;y<F.length;y++){const S=F.codePointAt(y);let G=f(S)|0,j=d;G&a||(U&(n|r|o)?G&(e|r|o)?(j=A,(x===d||x===A)&&M[K]++):G&(n|s)&&(x===h||x===m)&&M[K]--:U&(e|s)&&(x===h||x===m)&&M[K]--,x=M[y]=j,U=G,K=y,S>65535&&y++)}return M}function C(F,M){const U=[];for(let K=0;K<M.length;K++){const y=M.codePointAt(K);y>65535&&K++,U.push(u.U.codeToGlyph(F,y))}const x=F.GSUB;if(x){const{lookupList:K,featureList:y}=x;let S;const G=/^(rlig|liga|mset|isol|init|fina|medi|half|pres|blws|ccmp)$/,j=[];y.forEach(P=>{if(G.test(P.tag))for(let q=0;q<P.tab.length;q++){if(j[P.tab[q]])continue;j[P.tab[q]]=!0;const re=K[P.tab[q]],O=/^(isol|init|fina|medi)$/.test(P.tag);O&&!S&&(S=v(M));for(let L=0;L<U.length;L++)(!S||!O||p[S[L]]===P.tag)&&u.U._applySubs(U,L,re,K)}})}return U}function b(F,M){const U=new Int16Array(M.length*3);let x=0;for(;x<M.length;x++){const G=M[x];if(G===-1)continue;U[x*3+2]=F.hmtx.aWidth[G];const j=F.GPOS;if(j){const P=j.lookupList;for(let q=0;q<P.length;q++){const re=P[q];for(let O=0;O<re.tabs.length;O++){const L=re.tabs[O];if(re.ltype===1){if(u._lctf.coverageIndex(L.coverage,G)!==-1&&L.pos){S(L.pos,x);break}}else if(re.ltype===2){let B=null,T=K();if(T!==-1){const I=u._lctf.coverageIndex(L.coverage,M[T]);if(I!==-1){if(L.fmt===1){const w=L.pairsets[I];for(let R=0;R<w.length;R++)w[R].gid2===G&&(B=w[R])}else if(L.fmt===2){const w=u.U._getGlyphClass(M[T],L.classDef1),R=u.U._getGlyphClass(G,L.classDef2);B=L.matrix[w][R]}if(B){B.val1&&S(B.val1,T),B.val2&&S(B.val2,x);break}}}}else if(re.ltype===4){const B=u._lctf.coverageIndex(L.markCoverage,G);if(B!==-1){const T=K(y),I=T===-1?-1:u._lctf.coverageIndex(L.baseCoverage,M[T]);if(I!==-1){const w=L.markArray[B],R=L.baseArray[I][w.markClass];U[x*3]=R.x-w.x+U[T*3]-U[T*3+2],U[x*3+1]=R.y-w.y+U[T*3+1];break}}}else if(re.ltype===6){const B=u._lctf.coverageIndex(L.mark1Coverage,G);if(B!==-1){const T=K();if(T!==-1){const I=M[T];if(g(F,I)===3){const w=u._lctf.coverageIndex(L.mark2Coverage,I);if(w!==-1){const R=L.mark1Array[B],J=L.mark2Array[w][R.markClass];U[x*3]=J.x-R.x+U[T*3]-U[T*3+2],U[x*3+1]=J.y-R.y+U[T*3+1];break}}}}}}}}else if(F.kern&&!F.cff){const P=K();if(P!==-1){const q=F.kern.glyph1.indexOf(M[P]);if(q!==-1){const re=F.kern.rval[q].glyph2.indexOf(G);re!==-1&&(U[P*3+2]+=F.kern.rval[q].vals[re])}}}}return U;function K(G){for(let j=x-1;j>=0;j--)if(M[j]!==-1&&(!G||G(M[j])))return j;return-1}function y(G){return g(F,G)===1}function S(G,j){for(let P=0;P<3;P++)U[j*3+P]+=G[P]||0}}function g(F,M){const U=F.GDEF&&F.GDEF.glyphClassDef;return U?u.U._getGlyphClass(M,U):0}function E(...F){for(let M=0;M<F.length;M++)if(typeof F[M]=="number")return F[M]}function D(F){const M=Object.create(null),U=F["OS/2"],x=F.hhea,K=F.head.unitsPerEm,y=E(U&&U.sTypoAscender,x&&x.ascender,K),S={unitsPerEm:K,ascender:y,descender:E(U&&U.sTypoDescender,x&&x.descender,0),capHeight:E(U&&U.sCapHeight,y),xHeight:E(U&&U.sxHeight,y),lineGap:E(U&&U.sTypoLineGap,x&&x.lineGap),supportsCodePoint(G){return u.U.codeToGlyph(F,G)>0},forEachGlyph(G,j,P,q){let re=0;const O=1/S.unitsPerEm*j,L=C(F,G);let B=0;const T=b(F,L);return L.forEach((I,w)=>{if(I!==-1){let R=M[I];if(!R){const{cmds:J,crds:_}=u.U.glyphToPath(F,I);let H="",W=0;for(let fe=0,Z=J.length;fe<Z;fe++){const te=i[J[fe]];H+=J[fe];for(let ce=1;ce<=te;ce++)H+=(ce>1?",":"")+_[W++]}let ee,X,N,me;if(_.length){ee=X=1/0,N=me=-1/0;for(let fe=0,Z=_.length;fe<Z;fe+=2){let te=_[fe],ce=_[fe+1];te<ee&&(ee=te),ce<X&&(X=ce),te>N&&(N=te),ce>me&&(me=ce)}}else ee=N=X=me=0;R=M[I]={index:I,advanceWidth:F.hmtx.aWidth[I],xMin:ee,yMin:X,xMax:N,yMax:me,path:H}}q.call(null,R,re+T[w*3]*O,T[w*3+1]*O,B),re+=T[w*3+2]*O,P&&(re+=P*j)}B+=G.codePointAt(B)>65535?2:1}),re}};return S}return function(M){const U=new Uint8Array(M,0,4),x=u._bin.readASCII(U,0,4);if(x==="wOFF")M=t(M);else if(x==="wOF2")throw new Error("woff2 fonts not supported");return D(u.parse(M)[0])}}const xc=_t({name:"Typr Font Parser",dependencies:[Dc,Gc,Rc],init(u,t,i){const c=u(),n=t();return i(c,n)}});/*!
|
|
51
|
+
Custom bundle of @unicode-font-resolver/client v1.0.2 (https://github.com/lojjic/unicode-font-resolver)
|
|
52
|
+
for use in Troika text rendering.
|
|
53
|
+
Original MIT license applies
|
|
54
|
+
*/function Ic(){return function(u){var t=function(){this.buckets=new Map};t.prototype.add=function(b){var g=b>>5;this.buckets.set(g,(this.buckets.get(g)||0)|1<<(31&b))},t.prototype.has=function(b){var g=this.buckets.get(b>>5);return g!==void 0&&(g&1<<(31&b))!=0},t.prototype.serialize=function(){var b=[];return this.buckets.forEach(function(g,E){b.push((+E).toString(36)+":"+g.toString(36))}),b.join(",")},t.prototype.deserialize=function(b){var g=this;this.buckets.clear(),b.split(",").forEach(function(E){var D=E.split(":");g.buckets.set(parseInt(D[0],36),parseInt(D[1],36))})};var i=Math.pow(2,8),c=i-1,n=~c;function e(b){var g=function(D){return D&n}(b).toString(16),E=function(D){return(D&n)+i-1}(b).toString(16);return"codepoint-index/plane"+(b>>16)+"/"+g+"-"+E+".json"}function r(b,g){var E=b&c,D=g.codePointAt(E/6|0);return((D=(D||48)-48)&1<<E%6)!=0}function a(b,g){var E;(E=b,E.replace(/U\+/gi,"").replace(/^,+|,+$/g,"").split(/,+/).map(function(D){return D.split("-").map(function(F){return parseInt(F.trim(),16)})})).forEach(function(D){var F=D[0],M=D[1];M===void 0&&(M=F),g(F,M)})}function o(b,g){a(b,function(E,D){for(var F=E;F<=D;F++)g(F)})}var s={},l={},f=new WeakMap,d="https://cdn.jsdelivr.net/gh/lojjic/unicode-font-resolver@v1.0.1/packages/data";function h(b){var g=f.get(b);return g||(g=new t,o(b.ranges,function(E){return g.add(E)}),f.set(b,g)),g}var A,m=new Map;function p(b,g,E){return b[g]?g:b[E]?E:function(D){for(var F in D)return F}(b)}function v(b,g){var E=g;if(!b.includes(E)){E=1/0;for(var D=0;D<b.length;D++)Math.abs(b[D]-g)<Math.abs(E-g)&&(E=b[D])}return E}function C(b){return A||(A=new Set,o("9-D,20,85,A0,1680,2000-200A,2028-202F,205F,3000",function(g){A.add(g)})),A.has(b)}return u.CodePointSet=t,u.clearCache=function(){s={},l={}},u.getFontsForString=function(b,g){g===void 0&&(g={});var E,D=g.lang;D===void 0&&(D=new RegExp("\\p{Script=Hangul}","u").test(E=b)?"ko":new RegExp("\\p{Script=Hiragana}|\\p{Script=Katakana}","u").test(E)?"ja":"en");var F=g.category;F===void 0&&(F="sans-serif");var M=g.style;M===void 0&&(M="normal");var U=g.weight;U===void 0&&(U=400);var x=(g.dataUrl||d).replace(/\/$/g,""),K=new Map,y=new Uint8Array(b.length),S={},G={},j=new Array(b.length),P=new Map,q=!1;function re(B){var T=m.get(B);return T||(T=fetch(x+"/"+B).then(function(I){if(!I.ok)throw new Error(I.statusText);return I.json().then(function(w){if(!Array.isArray(w)||w[0]!==1)throw new Error("Incorrect schema version; need 1, got "+w[0]);return w[1]})}).catch(function(I){if(x!==d)return q||(console.error('unicode-font-resolver: Failed loading from dataUrl "'+x+'", trying default CDN. '+I.message),q=!0),x=d,m.delete(B),re(B);throw I}),m.set(B,T)),T}for(var O=function(B){var T=b.codePointAt(B),I=e(T);j[B]=I,s[I]||P.has(I)||P.set(I,re(I).then(function(w){s[I]=w})),T>65535&&(B++,L=B)},L=0;L<b.length;L++)O(L);return Promise.all(P.values()).then(function(){P.clear();for(var B=function(I){var w=b.codePointAt(I),R=null,J=s[j[I]],_=void 0;for(var H in J){var W=G[H];if(W===void 0&&(W=G[H]=new RegExp(H).test(D||"en")),W){for(var ee in _=H,J[H])if(r(w,J[H][ee])){R=ee;break}break}}if(!R){e:for(var X in J)if(X!==_){for(var N in J[X])if(r(w,J[X][N])){R=N;break e}}}R||(console.debug("No font coverage for U+"+w.toString(16)),R="latin"),j[I]=R,l[R]||P.has(R)||P.set(R,re("font-meta/"+R+".json").then(function(me){l[R]=me})),w>65535&&(I++,T=I)},T=0;T<b.length;T++)B(T);return Promise.all(P.values())}).then(function(){for(var B,T=null,I=0;I<b.length;I++){var w=b.codePointAt(I);if(T&&(C(w)||h(T).has(w)))y[I]=y[I-1];else{T=l[j[I]];var R=S[T.id];if(!R){var J=T.typeforms,_=p(J,F,"sans-serif"),H=p(J[_],M,"normal"),W=v((B=J[_])===null||B===void 0?void 0:B[H],U);R=S[T.id]=x+"/font-files/"+T.id+"/"+_+"."+H+"."+W+".woff"}var ee=K.get(R);ee==null&&(ee=K.size,K.set(R,ee)),y[I]=ee}w>65535&&(I++,y[I]=y[I-1])}return{fontUrls:Array.from(K.keys()),chars:y}})},Object.defineProperty(u,"__esModule",{value:!0}),u}({})}function Sc(u,t){const i=Object.create(null),c=Object.create(null);function n(r,a){const o=s=>{console.error(`Failure loading font ${r}`,s)};try{const s=new XMLHttpRequest;s.open("get",r,!0),s.responseType="arraybuffer",s.onload=function(){if(s.status>=400)o(new Error(s.statusText));else if(s.status>0)try{const l=u(s.response);l.src=r,a(l)}catch(l){o(l)}},s.onerror=o,s.send()}catch(s){o(s)}}function e(r,a){let o=i[r];o?a(o):c[r]?c[r].push(a):(c[r]=[a],n(r,s=>{s.src=r,i[r]=s,c[r].forEach(l=>l(s)),delete c[r]}))}return function(r,a,{lang:o,fonts:s=[],style:l="normal",weight:f="normal",unicodeFontsURL:d}={}){const h=new Uint8Array(r.length),A=[];r.length||C();const m=new Map,p=[];if(l!=="italic"&&(l="normal"),typeof f!="number"&&(f=f==="bold"?700:400),s&&!Array.isArray(s)&&(s=[s]),s=s.slice().filter(g=>!g.lang||g.lang.test(o)).reverse(),s.length){let F=0;(function M(U=0){for(let x=U,K=r.length;x<K;x++){const y=r.codePointAt(x);if(F===1&&A[h[x-1]].supportsCodePoint(y)||x>0&&/\s/.test(r[x]))h[x]=h[x-1],F===2&&(p[p.length-1][1]=x);else for(let S=h[x],G=s.length;S<=G;S++)if(S===G){const j=F===2?p[p.length-1]:p[p.length]=[x,x];j[1]=x,F=2}else{h[x]=S;const{src:j,unicodeRange:P}=s[S];if(!P||b(y,P)){const q=i[j];if(!q){e(j,()=>{M(x)});return}if(q.supportsCodePoint(y)){let re=m.get(q);typeof re!="number"&&(re=A.length,A.push(q),m.set(q,re)),h[x]=re,F=1;break}}}y>65535&&x+1<K&&(h[x+1]=h[x],x++,F===2&&(p[p.length-1][1]=x))}v()})()}else p.push([0,r.length-1]),v();function v(){if(p.length){const g=p.map(E=>r.substring(E[0],E[1]+1)).join(`
|
|
55
|
+
`);t.getFontsForString(g,{lang:o||void 0,style:l,weight:f,dataUrl:d}).then(({fontUrls:E,chars:D})=>{const F=A.length;let M=0;p.forEach(x=>{for(let K=0,y=x[1]-x[0];K<=y;K++)h[x[0]+K]=D[M++]+F;M++});let U=0;E.forEach((x,K)=>{e(x,y=>{A[K+F]=y,++U===E.length&&C()})})})}else C()}function C(){a({chars:h,fonts:A})}function b(g,E){for(let D=0;D<E.length;D++){const[F,M=F]=E[D];if(F<=g&&g<=M)return!0}return!1}}}const wc=_t({name:"FontResolver",dependencies:[Sc,xc,Ic],init(u,t,i){return u(t,i())}});function Uc(u,t){const c=/[\u00AD\u034F\u061C\u115F-\u1160\u17B4-\u17B5\u180B-\u180E\u200B-\u200F\u202A-\u202E\u2060-\u206F\u3164\uFE00-\uFE0F\uFEFF\uFFA0\uFFF0-\uFFF8]/,n="[^\\S\\u00A0]",e=new RegExp(`${n}|[\\-\\u007C\\u00AD\\u2010\\u2012-\\u2014\\u2027\\u2056\\u2E17\\u2E40]`);function r({text:A,lang:m,fonts:p,style:v,weight:C,preResolvedFonts:b,unicodeFontsURL:g},E){const D=({chars:F,fonts:M})=>{let U,x;const K=[];for(let y=0;y<F.length;y++)F[y]!==x?(x=F[y],K.push(U={start:y,end:y,fontObj:M[F[y]]})):U.end=y;E(K)};b?D(b):u(A,D,{lang:m,fonts:p,style:v,weight:C,unicodeFontsURL:g})}function a({text:A="",font:m,lang:p,sdfGlyphSize:v=64,fontSize:C=400,fontWeight:b=1,fontStyle:g="normal",letterSpacing:E=0,lineHeight:D="normal",maxWidth:F=1/0,direction:M,textAlign:U="left",textIndent:x=0,whiteSpace:K="normal",overflowWrap:y="normal",anchorX:S=0,anchorY:G=0,metricsOnly:j=!1,unicodeFontsURL:P,preResolvedFonts:q=null,includeCaretPositions:re=!1,chunkedBoundsSize:O=8192,colorRanges:L=null},B){const T=f(),I={fontLoad:0,typesetting:0};A.indexOf("\r")>-1&&(console.info("Typesetter: got text with \\r chars; normalizing to \\n"),A=A.replace(/\r\n/g,`
|
|
56
|
+
`).replace(/\r/g,`
|
|
57
|
+
`)),C=+C,E=+E,F=+F,D=D||"normal",x=+x,r({text:A,lang:p,style:g,weight:b,fonts:typeof m=="string"?[{src:m}]:m,unicodeFontsURL:P,preResolvedFonts:q},w=>{I.fontLoad=f()-T;const R=isFinite(F);let J=null,_=null,H=null,W=null,ee=null,X=null,N=null,me=null,fe=0,Z=0,te=K!=="nowrap";const ce=new Map,Q=f();let ne=x,$=0,k=new d;const he=[k];w.forEach(oe=>{const{fontObj:se}=oe,{ascender:ue,descender:Ae,unitsPerEm:Me,lineGap:xe,capHeight:Be,xHeight:ve}=se;let le=ce.get(se);if(!le){const de=C/Me,be=D==="normal"?(ue-Ae+xe)*de:D*C,it=(be-(ue-Ae)*de)/2,Fe=Math.min(be,(ue-Ae)*de),Ce=(ue+Ae)/2*de+Fe/2;le={index:ce.size,src:se.src,fontObj:se,fontSizeMult:de,unitsPerEm:Me,ascender:ue*de,descender:Ae*de,capHeight:Be*de,xHeight:ve*de,lineHeight:be,baseline:-it-ue*de,caretTop:Ce,caretBottom:Ce-Fe},ce.set(se,le)}const{fontSizeMult:Ie}=le,De=A.slice(oe.start,oe.end+1);let Je,Te;se.forEachGlyph(De,C,E,(de,be,it,Fe)=>{be+=$,Fe+=oe.start,Je=be,Te=de;const Ce=A.charAt(Fe),Se=de.advanceWidth*Ie,Ge=k.count;let pe;if("isEmpty"in de||(de.isWhitespace=!!Ce&&new RegExp(n).test(Ce),de.canBreakAfter=!!Ce&&e.test(Ce),de.isEmpty=de.xMin===de.xMax||de.yMin===de.yMax||c.test(Ce)),!de.isWhitespace&&!de.isEmpty&&Z++,te&&R&&!de.isWhitespace&&be+Se+ne>F&&Ge){if(k.glyphAt(Ge-1).glyphObj.canBreakAfter)pe=new d,ne=-be;else for(let Oe=Ge;Oe--;)if(Oe===0&&y==="break-word"){pe=new d,ne=-be;break}else if(k.glyphAt(Oe).glyphObj.canBreakAfter){pe=k.splitAt(Oe+1);const Le=pe.glyphAt(0).x;ne-=Le;for(let we=pe.count;we--;)pe.glyphAt(we).x-=Le;break}pe&&(k.isSoftWrapped=!0,k=pe,he.push(k),fe=F)}let Re=k.glyphAt(k.count);Re.glyphObj=de,Re.x=be+ne,Re.y=it,Re.width=Se,Re.charIndex=Fe,Re.fontData=le,Ce===`
|
|
58
|
+
`&&(k=new d,he.push(k),ne=-(be+Se+E*C)+x)}),$=Je+Te.advanceWidth*Ie+E*C});let z=0;he.forEach(oe=>{let se=!0;for(let ue=oe.count;ue--;){const Ae=oe.glyphAt(ue);se&&!Ae.glyphObj.isWhitespace&&(oe.width=Ae.x+Ae.width,oe.width>fe&&(fe=oe.width),se=!1);let{lineHeight:Me,capHeight:xe,xHeight:Be,baseline:ve}=Ae.fontData;Me>oe.lineHeight&&(oe.lineHeight=Me);const le=ve-oe.baseline;le<0&&(oe.baseline+=le,oe.cap+=le,oe.ex+=le),oe.cap=Math.max(oe.cap,oe.baseline+xe),oe.ex=Math.max(oe.ex,oe.baseline+Be)}oe.baseline-=z,oe.cap-=z,oe.ex-=z,z+=oe.lineHeight});let ae=0,Y=0;if(S&&(typeof S=="number"?ae=-S:typeof S=="string"&&(ae=-fe*(S==="left"?0:S==="center"?.5:S==="right"?1:s(S)))),G&&(typeof G=="number"?Y=-G:typeof G=="string"&&(Y=G==="top"?0:G==="top-baseline"?-he[0].baseline:G==="top-cap"?-he[0].cap:G==="top-ex"?-he[0].ex:G==="middle"?z/2:G==="bottom"?z:G==="bottom-baseline"?-he[he.length-1].baseline:s(G)*z)),!j){const oe=t.getEmbeddingLevels(A,M);J=new Uint16Array(Z),_=new Uint8Array(Z),H=new Float32Array(Z*2),W={},N=[1/0,1/0,-1/0,-1/0],me=[],re&&(X=new Float32Array(A.length*4)),L&&(ee=new Uint8Array(Z*3));let se=0,ue=-1,Ae=-1,Me,xe;if(he.forEach((Be,ve)=>{let{count:le,width:Ie}=Be;if(le>0){let De=0;for(let Fe=le;Fe--&&Be.glyphAt(Fe).glyphObj.isWhitespace;)De++;let Je=0,Te=0;if(U==="center")Je=(fe-Ie)/2;else if(U==="right")Je=fe-Ie;else if(U==="justify"&&Be.isSoftWrapped){let Fe=0;for(let Ce=le-De;Ce--;)Be.glyphAt(Ce).glyphObj.isWhitespace&&Fe++;Te=(fe-Ie)/Fe}if(Te||Je){let Fe=0;for(let Ce=0;Ce<le;Ce++){let Se=Be.glyphAt(Ce);const Ge=Se.glyphObj;Se.x+=Je+Fe,Te!==0&&Ge.isWhitespace&&Ce<le-De&&(Fe+=Te,Se.width+=Te)}}const de=t.getReorderSegments(A,oe,Be.glyphAt(0).charIndex,Be.glyphAt(Be.count-1).charIndex);for(let Fe=0;Fe<de.length;Fe++){const[Ce,Se]=de[Fe];let Ge=1/0,pe=-1/0;for(let Re=0;Re<le;Re++)if(Be.glyphAt(Re).charIndex>=Ce){let Oe=Re,Le=Re;for(;Le<le;Le++){let we=Be.glyphAt(Le);if(we.charIndex>Se)break;Le<le-De&&(Ge=Math.min(Ge,we.x),pe=Math.max(pe,we.x+we.width))}for(let we=Oe;we<Le;we++){const Ye=Be.glyphAt(we);Ye.x=pe-(Ye.x+Ye.width-Ge)}break}}let be;const it=Fe=>be=Fe;for(let Fe=0;Fe<le;Fe++){const Ce=Be.glyphAt(Fe);be=Ce.glyphObj;const Se=be.index,Ge=oe.levels[Ce.charIndex]&1;if(Ge){const pe=t.getMirroredCharacter(A[Ce.charIndex]);pe&&Ce.fontData.fontObj.forEachGlyph(pe,0,0,it)}if(re){const{charIndex:pe,fontData:Re}=Ce,Oe=Ce.x+ae,Le=Ce.x+Ce.width+ae;X[pe*4]=Ge?Le:Oe,X[pe*4+1]=Ge?Oe:Le,X[pe*4+2]=Be.baseline+Re.caretBottom+Y,X[pe*4+3]=Be.baseline+Re.caretTop+Y;const we=pe-ue;we>1&&l(X,ue,we),ue=pe}if(L){const{charIndex:pe}=Ce;for(;pe>Ae;)Ae++,L.hasOwnProperty(Ae)&&(xe=L[Ae])}if(!be.isWhitespace&&!be.isEmpty){const pe=se++,{fontSizeMult:Re,src:Oe,index:Le}=Ce.fontData,we=W[Oe]||(W[Oe]={});we[Se]||(we[Se]={path:be.path,pathBounds:[be.xMin,be.yMin,be.xMax,be.yMax]});const Ye=Ce.x+ae,ct=Ce.y+Be.baseline+Y;H[pe*2]=Ye,H[pe*2+1]=ct;const tt=Ye+be.xMin*Re,lt=ct+be.yMin*Re,ht=Ye+be.xMax*Re,nt=ct+be.yMax*Re;tt<N[0]&&(N[0]=tt),lt<N[1]&&(N[1]=lt),ht>N[2]&&(N[2]=ht),nt>N[3]&&(N[3]=nt),pe%O===0&&(Me={start:pe,end:pe,rect:[1/0,1/0,-1/0,-1/0]},me.push(Me)),Me.end++;const He=Me.rect;if(tt<He[0]&&(He[0]=tt),lt<He[1]&&(He[1]=lt),ht>He[2]&&(He[2]=ht),nt>He[3]&&(He[3]=nt),J[pe]=Se,_[pe]=Le,L){const At=pe*3;ee[At]=xe>>16&255,ee[At+1]=xe>>8&255,ee[At+2]=xe&255}}}}}),X){const Be=A.length-ue;Be>1&&l(X,ue,Be)}}const ye=[];ce.forEach(({index:oe,src:se,unitsPerEm:ue,ascender:Ae,descender:Me,lineHeight:xe,capHeight:Be,xHeight:ve})=>{ye[oe]={src:se,unitsPerEm:ue,ascender:Ae,descender:Me,lineHeight:xe,capHeight:Be,xHeight:ve}}),I.typesetting=f()-Q,B({glyphIds:J,glyphFontIndices:_,glyphPositions:H,glyphData:W,fontData:ye,caretPositions:X,glyphColors:ee,chunkedBounds:me,fontSize:C,topBaseline:Y+he[0].baseline,blockBounds:[ae,Y-z,ae+fe,Y],visibleBounds:N,timings:I})})}function o(A,m){a({...A,metricsOnly:!0},p=>{const[v,C,b,g]=p.blockBounds;m({width:b-v,height:g-C})})}function s(A){let m=A.match(/^([\d.]+)%$/),p=m?parseFloat(m[1]):NaN;return isNaN(p)?0:p/100}function l(A,m,p){const v=A[m*4],C=A[m*4+1],b=A[m*4+2],g=A[m*4+3],E=(C-v)/p;for(let D=0;D<p;D++){const F=(m+D)*4;A[F]=v+E*D,A[F+1]=v+E*(D+1),A[F+2]=b,A[F+3]=g}}function f(){return(self.performance||Date).now()}function d(){this.data=[]}const h=["glyphObj","x","y","width","charIndex","fontData"];return d.prototype={width:0,lineHeight:0,baseline:0,cap:0,ex:0,isSoftWrapped:!1,get count(){return Math.ceil(this.data.length/h.length)},glyphAt(A){let m=d.flyweight;return m.data=this.data,m.index=A,m},splitAt(A){let m=new d;return m.data=this.data.splice(A*h.length),m}},d.flyweight=h.reduce((A,m,p,v)=>(Object.defineProperty(A,m,{get(){return this.data[this.index*h.length+p]},set(C){this.data[this.index*h.length+p]=C}}),A),{data:null,index:0}),{typeset:a,measure:o}}const gt=()=>(self.performance||Date).now(),Ln=_a();let na;function _c(u,t,i,c,n,e,r,a,o,s,l=!0){return l?kc(u,t,i,c,n,e,r,a,o,s).then(null,f=>(na||(console.warn("WebGL SDF generation failed, falling back to JS",f),na=!0),oa(u,t,i,c,n,e,r,a,o,s))):oa(u,t,i,c,n,e,r,a,o,s)}const Rn=[],Lc=5;let Dr=0;function ka(){const u=gt();for(;Rn.length&>()-u<Lc;)Rn.shift()();Dr=Rn.length?setTimeout(ka,0):0}const kc=(...u)=>new Promise((t,i)=>{Rn.push(()=>{const c=gt();try{Ln.webgl.generateIntoCanvas(...u),t({timing:gt()-c})}catch(n){i(n)}}),Dr||(Dr=setTimeout(ka,0))}),Oc=4,Hc=2e3,ra={};let Pc=0;function oa(u,t,i,c,n,e,r,a,o,s){const l="TroikaTextSDFGenerator_JS_"+Pc++%Oc;let f=ra[l];return f||(f=ra[l]={workerModule:_t({name:l,workerId:l,dependencies:[_a,gt],init(d,h){const A=d().javascript.generate;return function(...m){const p=h();return{textureData:A(...m),timing:h()-p}}},getTransferables(d){return[d.textureData.buffer]}}),requests:0,idleTimer:null}),f.requests++,clearTimeout(f.idleTimer),f.workerModule(u,t,i,c,n,e).then(({textureData:d,timing:h})=>{const A=gt(),m=new Uint8Array(d.length*4);for(let p=0;p<d.length;p++)m[p*4+s]=d[p];return Ln.webglUtils.renderImageData(r,m,a,o,u,t,1<<3-s),h+=gt()-A,--f.requests===0&&(f.idleTimer=setTimeout(()=>{Bc(l)},Hc)),{timing:h}})}function Jc(u){u._warm||(Ln.webgl.isSupported(u),u._warm=!0)}const Nc=Ln.webglUtils.resizeWebGLCanvasWithoutClearing,tn={unicodeFontsURL:null,sdfGlyphSize:64,sdfMargin:1/16,sdfExponent:9,textureWidth:2048},Kc=new Pe;function Rt(){return(self.performance||Date).now()}const aa=Object.create(null);function Oa(u,t){u=Xc({},u);const i=Rt(),c=[];if(u.font&&c.push({label:"user",src:Wc(u.font)}),u.font=c,u.text=""+u.text,u.sdfGlyphSize=u.sdfGlyphSize||tn.sdfGlyphSize,u.unicodeFontsURL=u.unicodeFontsURL||tn.unicodeFontsURL,u.colorRanges!=null){let d={};for(let h in u.colorRanges)if(u.colorRanges.hasOwnProperty(h)){let A=u.colorRanges[h];typeof A!="number"&&(A=Kc.set(A).getHex()),d[h]=A}u.colorRanges=d}Object.freeze(u);const{textureWidth:n,sdfExponent:e}=tn,{sdfGlyphSize:r}=u,a=n/r*4;let o=aa[r];if(!o){const d=document.createElement("canvas");d.width=n,d.height=r*256/a,o=aa[r]={glyphCount:0,sdfGlyphSize:r,sdfCanvas:d,sdfTexture:new cn(d,void 0,void 0,void 0,In,In),contextLost:!1,glyphsByFont:new Map},o.sdfTexture.generateMipmaps=!1,jc(o)}const{sdfTexture:s,sdfCanvas:l}=o;Ja(u).then(d=>{const{glyphIds:h,glyphFontIndices:A,fontData:m,glyphPositions:p,fontSize:v,timings:C}=d,b=[],g=new Float32Array(h.length*4);let E=0,D=0;const F=Rt(),M=m.map(S=>{let G=o.glyphsByFont.get(S.src);return G||o.glyphsByFont.set(S.src,G=new Map),G});h.forEach((S,G)=>{const j=A[G],{src:P,unitsPerEm:q}=m[j];let re=M[j].get(S);if(!re){const{path:I,pathBounds:w}=d.glyphData[P][S],R=Math.max(w[2]-w[0],w[3]-w[1])/r*(tn.sdfMargin*r+.5),J=o.glyphCount++,_=[w[0]-R,w[1]-R,w[2]+R,w[3]+R];M[j].set(S,re={path:I,atlasIndex:J,sdfViewBox:_}),b.push(re)}const{sdfViewBox:O}=re,L=p[D++],B=p[D++],T=v/q;g[E++]=L+O[0]*T,g[E++]=B+O[1]*T,g[E++]=L+O[2]*T,g[E++]=B+O[3]*T,h[G]=re.atlasIndex}),C.quads=(C.quads||0)+(Rt()-F);const U=Rt();C.sdf={};const x=l.height,K=Math.ceil(o.glyphCount/a),y=Math.pow(2,Math.ceil(Math.log2(K*r)));y>x&&(console.info(`Increasing SDF texture size ${x}->${y}`),Nc(l,n,y),s.dispose()),Promise.all(b.map(S=>Ha(S,o,u.gpuAccelerateSDF).then(({timing:G})=>{C.sdf[S.atlasIndex]=G}))).then(()=>{b.length&&!o.contextLost&&(Pa(o),s.needsUpdate=!0),C.sdfTotal=Rt()-U,C.total=Rt()-i,t(Object.freeze({parameters:u,sdfTexture:s,sdfGlyphSize:r,sdfExponent:e,glyphBounds:g,glyphAtlasIndices:h,glyphColors:d.glyphColors,caretPositions:d.caretPositions,chunkedBounds:d.chunkedBounds,ascender:d.ascender,descender:d.descender,lineHeight:d.lineHeight,capHeight:d.capHeight,xHeight:d.xHeight,topBaseline:d.topBaseline,blockBounds:d.blockBounds,visibleBounds:d.visibleBounds,timings:d.timings}))})}),Promise.resolve().then(()=>{o.contextLost||Jc(l)})}function Ha({path:u,atlasIndex:t,sdfViewBox:i},{sdfGlyphSize:c,sdfCanvas:n,contextLost:e},r){if(e)return Promise.resolve({timing:-1});const{textureWidth:a,sdfExponent:o}=tn,s=Math.max(i[2]-i[0],i[3]-i[1]),l=Math.floor(t/4),f=l%(a/c)*c,d=Math.floor(l/(a/c))*c,h=t%4;return _c(c,c,u,i,s,o,n,f,d,h,r)}function jc(u){const t=u.sdfCanvas;t.addEventListener("webglcontextlost",i=>{console.log("Context Lost",i),i.preventDefault(),u.contextLost=!0}),t.addEventListener("webglcontextrestored",i=>{console.log("Context Restored",i),u.contextLost=!1;const c=[];u.glyphsByFont.forEach(n=>{n.forEach(e=>{c.push(Ha(e,u,!0))})}),Promise.all(c).then(()=>{Pa(u),u.sdfTexture.needsUpdate=!0})})}function Qc({font:u,characters:t,sdfGlyphSize:i},c){let n=Array.isArray(t)?t.join(`
|
|
59
|
+
`):""+t;Oa({font:u,sdfGlyphSize:i,text:n},c)}function Xc(u,t){for(let i in t)t.hasOwnProperty(i)&&(u[i]=t[i]);return u}let En;function Wc(u){return En||(En=typeof document>"u"?{}:document.createElement("a")),En.href=u,En.href}function Pa(u){if(typeof createImageBitmap!="function"){console.info("Safari<15: applying SDF canvas workaround");const{sdfCanvas:t,sdfTexture:i}=u,{width:c,height:n}=t,e=u.sdfCanvas.getContext("webgl");let r=i.image.data;(!r||r.length!==c*n*4)&&(r=new Uint8Array(c*n*4),i.image={width:c,height:n,data:r},i.flipY=!1,i.isDataTexture=!0),e.readPixels(0,0,c,n,e.RGBA,e.UNSIGNED_BYTE,r)}}const Yc=_t({name:"Typesetter",dependencies:[Uc,wc,gc],init(u,t,i){return u(t,i())}}),Ja=_t({name:"Typesetter",dependencies:[Yc],init(u){return function(t){return new Promise(i=>{u.typeset(t,i)})}},getTransferables(u){const t=[];for(let i in u)u[i]&&u[i].buffer&&t.push(u[i].buffer);return t}});Ja.onMainThread;const sa={};function Vc(u){let t=sa[u];return t||(t=sa[u]=new Rr(1,1,u,u).translate(.5,.5,0)),t}const zc="aTroikaGlyphBounds",ia="aTroikaGlyphIndex",Zc="aTroikaGlyphColor";class qc extends Ns{constructor(){super(),this.detail=1,this.curveRadius=0,this.groups=[{start:0,count:1/0,materialIndex:0},{start:0,count:1/0,materialIndex:1}],this.boundingSphere=new Ga,this.boundingBox=new Gr}computeBoundingSphere(){}computeBoundingBox(){}set detail(t){if(t!==this._detail){this._detail=t,(typeof t!="number"||t<1)&&(t=1);let i=Vc(t);["position","normal","uv"].forEach(c=>{this.attributes[c]=i.attributes[c].clone()}),this.setIndex(i.getIndex().clone())}}get detail(){return this._detail}set curveRadius(t){t!==this._curveRadius&&(this._curveRadius=t,this._updateBounds())}get curveRadius(){return this._curveRadius}updateGlyphs(t,i,c,n,e){this.updateAttributeData(zc,t,4),this.updateAttributeData(ia,i,1),this.updateAttributeData(Zc,e,3),this._blockBounds=c,this._chunkedBounds=n,this.instanceCount=i.length,this._updateBounds()}_updateBounds(){const t=this._blockBounds;if(t){const{curveRadius:i,boundingBox:c}=this;if(i){const{PI:n,floor:e,min:r,max:a,sin:o,cos:s}=Math,l=n/2,f=n*2,d=Math.abs(i),h=t[0]/d,A=t[2]/d,m=e((h+l)/f)!==e((A+l)/f)?-d:r(o(h)*d,o(A)*d),p=e((h-l)/f)!==e((A-l)/f)?d:a(o(h)*d,o(A)*d),v=e((h+n)/f)!==e((A+n)/f)?d*2:a(d-s(h)*d,d-s(A)*d);c.min.set(m,t[1],i<0?-v:0),c.max.set(p,t[3],i<0?0:v)}else c.min.set(t[0],t[1],0),c.max.set(t[2],t[3],0);c.getBoundingSphere(this.boundingSphere)}}applyClipRect(t){let i=this.getAttribute(ia).count,c=this._chunkedBounds;if(c)for(let n=c.length;n--;){i=c[n].end;let e=c[n].rect;if(e[1]<t.w&&e[3]>t.y&&e[0]<t.z&&e[2]>t.x)break}this.instanceCount=i}updateAttributeData(t,i,c){const n=this.getAttribute(t);i?n&&n.array.length===i.length?(n.array.set(i),n.needsUpdate=!0):(this.setAttribute(t,new ga(i,c)),delete this._maxInstanceCount,this.dispose()):n&&this.deleteAttribute(t)}}const $c=`
|
|
60
|
+
uniform vec2 uTroikaSDFTextureSize;
|
|
61
|
+
uniform float uTroikaSDFGlyphSize;
|
|
62
|
+
uniform vec4 uTroikaTotalBounds;
|
|
63
|
+
uniform vec4 uTroikaClipRect;
|
|
64
|
+
uniform mat3 uTroikaOrient;
|
|
65
|
+
uniform bool uTroikaUseGlyphColors;
|
|
66
|
+
uniform float uTroikaEdgeOffset;
|
|
67
|
+
uniform float uTroikaBlurRadius;
|
|
68
|
+
uniform vec2 uTroikaPositionOffset;
|
|
69
|
+
uniform float uTroikaCurveRadius;
|
|
70
|
+
attribute vec4 aTroikaGlyphBounds;
|
|
71
|
+
attribute float aTroikaGlyphIndex;
|
|
72
|
+
attribute vec3 aTroikaGlyphColor;
|
|
73
|
+
varying vec2 vTroikaGlyphUV;
|
|
74
|
+
varying vec4 vTroikaTextureUVBounds;
|
|
75
|
+
varying float vTroikaTextureChannel;
|
|
76
|
+
varying vec3 vTroikaGlyphColor;
|
|
77
|
+
varying vec2 vTroikaGlyphDimensions;
|
|
78
|
+
`,el=`
|
|
79
|
+
vec4 bounds = aTroikaGlyphBounds;
|
|
80
|
+
bounds.xz += uTroikaPositionOffset.x;
|
|
81
|
+
bounds.yw -= uTroikaPositionOffset.y;
|
|
82
|
+
|
|
83
|
+
vec4 outlineBounds = vec4(
|
|
84
|
+
bounds.xy - uTroikaEdgeOffset - uTroikaBlurRadius,
|
|
85
|
+
bounds.zw + uTroikaEdgeOffset + uTroikaBlurRadius
|
|
86
|
+
);
|
|
87
|
+
vec4 clippedBounds = vec4(
|
|
88
|
+
clamp(outlineBounds.xy, uTroikaClipRect.xy, uTroikaClipRect.zw),
|
|
89
|
+
clamp(outlineBounds.zw, uTroikaClipRect.xy, uTroikaClipRect.zw)
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
vec2 clippedXY = (mix(clippedBounds.xy, clippedBounds.zw, position.xy) - bounds.xy) / (bounds.zw - bounds.xy);
|
|
93
|
+
|
|
94
|
+
position.xy = mix(bounds.xy, bounds.zw, clippedXY);
|
|
95
|
+
|
|
96
|
+
uv = (position.xy - uTroikaTotalBounds.xy) / (uTroikaTotalBounds.zw - uTroikaTotalBounds.xy);
|
|
97
|
+
|
|
98
|
+
float rad = uTroikaCurveRadius;
|
|
99
|
+
if (rad != 0.0) {
|
|
100
|
+
float angle = position.x / rad;
|
|
101
|
+
position.xz = vec2(sin(angle) * rad, rad - cos(angle) * rad);
|
|
102
|
+
normal.xz = vec2(sin(angle), cos(angle));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
position = uTroikaOrient * position;
|
|
106
|
+
normal = uTroikaOrient * normal;
|
|
107
|
+
|
|
108
|
+
vTroikaGlyphUV = clippedXY.xy;
|
|
109
|
+
vTroikaGlyphDimensions = vec2(bounds[2] - bounds[0], bounds[3] - bounds[1]);
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
float txCols = uTroikaSDFTextureSize.x / uTroikaSDFGlyphSize;
|
|
113
|
+
vec2 txUvPerSquare = uTroikaSDFGlyphSize / uTroikaSDFTextureSize;
|
|
114
|
+
vec2 txStartUV = txUvPerSquare * vec2(
|
|
115
|
+
mod(floor(aTroikaGlyphIndex / 4.0), txCols),
|
|
116
|
+
floor(floor(aTroikaGlyphIndex / 4.0) / txCols)
|
|
117
|
+
);
|
|
118
|
+
vTroikaTextureUVBounds = vec4(txStartUV, vec2(txStartUV) + txUvPerSquare);
|
|
119
|
+
vTroikaTextureChannel = mod(aTroikaGlyphIndex, 4.0);
|
|
120
|
+
`,tl=`
|
|
121
|
+
uniform sampler2D uTroikaSDFTexture;
|
|
122
|
+
uniform vec2 uTroikaSDFTextureSize;
|
|
123
|
+
uniform float uTroikaSDFGlyphSize;
|
|
124
|
+
uniform float uTroikaSDFExponent;
|
|
125
|
+
uniform float uTroikaEdgeOffset;
|
|
126
|
+
uniform float uTroikaFillOpacity;
|
|
127
|
+
uniform float uTroikaBlurRadius;
|
|
128
|
+
uniform vec3 uTroikaStrokeColor;
|
|
129
|
+
uniform float uTroikaStrokeWidth;
|
|
130
|
+
uniform float uTroikaStrokeOpacity;
|
|
131
|
+
uniform bool uTroikaSDFDebug;
|
|
132
|
+
varying vec2 vTroikaGlyphUV;
|
|
133
|
+
varying vec4 vTroikaTextureUVBounds;
|
|
134
|
+
varying float vTroikaTextureChannel;
|
|
135
|
+
varying vec2 vTroikaGlyphDimensions;
|
|
136
|
+
|
|
137
|
+
float troikaSdfValueToSignedDistance(float alpha) {
|
|
138
|
+
// Inverse of exponential encoding in webgl-sdf-generator
|
|
139
|
+
|
|
140
|
+
float maxDimension = max(vTroikaGlyphDimensions.x, vTroikaGlyphDimensions.y);
|
|
141
|
+
float absDist = (1.0 - pow(2.0 * (alpha > 0.5 ? 1.0 - alpha : alpha), 1.0 / uTroikaSDFExponent)) * maxDimension;
|
|
142
|
+
float signedDist = absDist * (alpha > 0.5 ? -1.0 : 1.0);
|
|
143
|
+
return signedDist;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
float troikaGlyphUvToSdfValue(vec2 glyphUV) {
|
|
147
|
+
vec2 textureUV = mix(vTroikaTextureUVBounds.xy, vTroikaTextureUVBounds.zw, glyphUV);
|
|
148
|
+
vec4 rgba = texture2D(uTroikaSDFTexture, textureUV);
|
|
149
|
+
float ch = floor(vTroikaTextureChannel + 0.5); //NOTE: can't use round() in WebGL1
|
|
150
|
+
return ch == 0.0 ? rgba.r : ch == 1.0 ? rgba.g : ch == 2.0 ? rgba.b : rgba.a;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
float troikaGlyphUvToDistance(vec2 uv) {
|
|
154
|
+
return troikaSdfValueToSignedDistance(troikaGlyphUvToSdfValue(uv));
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
float troikaGetAADist() {
|
|
158
|
+
|
|
159
|
+
#if defined(GL_OES_standard_derivatives) || __VERSION__ >= 300
|
|
160
|
+
return length(fwidth(vTroikaGlyphUV * vTroikaGlyphDimensions)) * 0.5;
|
|
161
|
+
#else
|
|
162
|
+
return vTroikaGlyphDimensions.x / 64.0;
|
|
163
|
+
#endif
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
float troikaGetFragDistValue() {
|
|
167
|
+
vec2 clampedGlyphUV = clamp(vTroikaGlyphUV, 0.5 / uTroikaSDFGlyphSize, 1.0 - 0.5 / uTroikaSDFGlyphSize);
|
|
168
|
+
float distance = troikaGlyphUvToDistance(clampedGlyphUV);
|
|
169
|
+
|
|
170
|
+
// Extrapolate distance when outside bounds:
|
|
171
|
+
distance += clampedGlyphUV == vTroikaGlyphUV ? 0.0 :
|
|
172
|
+
length((vTroikaGlyphUV - clampedGlyphUV) * vTroikaGlyphDimensions);
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
return distance;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
float troikaGetEdgeAlpha(float distance, float distanceOffset, float aaDist) {
|
|
180
|
+
#if defined(IS_DEPTH_MATERIAL) || defined(IS_DISTANCE_MATERIAL)
|
|
181
|
+
float alpha = step(-distanceOffset, -distance);
|
|
182
|
+
#else
|
|
183
|
+
|
|
184
|
+
float alpha = smoothstep(
|
|
185
|
+
distanceOffset + aaDist,
|
|
186
|
+
distanceOffset - aaDist,
|
|
187
|
+
distance
|
|
188
|
+
);
|
|
189
|
+
#endif
|
|
190
|
+
|
|
191
|
+
return alpha;
|
|
192
|
+
}
|
|
193
|
+
`,nl=`
|
|
194
|
+
float aaDist = troikaGetAADist();
|
|
195
|
+
float fragDistance = troikaGetFragDistValue();
|
|
196
|
+
float edgeAlpha = uTroikaSDFDebug ?
|
|
197
|
+
troikaGlyphUvToSdfValue(vTroikaGlyphUV) :
|
|
198
|
+
troikaGetEdgeAlpha(fragDistance, uTroikaEdgeOffset, max(aaDist, uTroikaBlurRadius));
|
|
199
|
+
|
|
200
|
+
#if !defined(IS_DEPTH_MATERIAL) && !defined(IS_DISTANCE_MATERIAL)
|
|
201
|
+
vec4 fillRGBA = gl_FragColor;
|
|
202
|
+
fillRGBA.a *= uTroikaFillOpacity;
|
|
203
|
+
vec4 strokeRGBA = uTroikaStrokeWidth == 0.0 ? fillRGBA : vec4(uTroikaStrokeColor, uTroikaStrokeOpacity);
|
|
204
|
+
if (fillRGBA.a == 0.0) fillRGBA.rgb = strokeRGBA.rgb;
|
|
205
|
+
gl_FragColor = mix(fillRGBA, strokeRGBA, smoothstep(
|
|
206
|
+
-uTroikaStrokeWidth - aaDist,
|
|
207
|
+
-uTroikaStrokeWidth + aaDist,
|
|
208
|
+
fragDistance
|
|
209
|
+
));
|
|
210
|
+
gl_FragColor.a *= edgeAlpha;
|
|
211
|
+
#endif
|
|
212
|
+
|
|
213
|
+
if (edgeAlpha == 0.0) {
|
|
214
|
+
discard;
|
|
215
|
+
}
|
|
216
|
+
`;function rl(u){const t=Tr(u,{chained:!0,extensions:{derivatives:!0},uniforms:{uTroikaSDFTexture:{value:null},uTroikaSDFTextureSize:{value:new qe},uTroikaSDFGlyphSize:{value:0},uTroikaSDFExponent:{value:0},uTroikaTotalBounds:{value:new wt(0,0,0,0)},uTroikaClipRect:{value:new wt(0,0,0,0)},uTroikaEdgeOffset:{value:0},uTroikaFillOpacity:{value:1},uTroikaPositionOffset:{value:new qe},uTroikaCurveRadius:{value:0},uTroikaBlurRadius:{value:0},uTroikaStrokeWidth:{value:0},uTroikaStrokeColor:{value:new Pe},uTroikaStrokeOpacity:{value:1},uTroikaOrient:{value:new Ks},uTroikaUseGlyphColors:{value:!0},uTroikaSDFDebug:{value:!1}},vertexDefs:$c,vertexTransform:el,fragmentDefs:tl,fragmentColorTransform:nl,customRewriter({vertexShader:i,fragmentShader:c}){let n=/\buniform\s+vec3\s+diffuse\b/;return n.test(c)&&(c=c.replace(n,"varying vec3 vTroikaGlyphColor").replace(/\bdiffuse\b/g,"vTroikaGlyphColor"),n.test(i)||(i=i.replace(La,`uniform vec3 diffuse;
|
|
217
|
+
$&
|
|
218
|
+
vTroikaGlyphColor = uTroikaUseGlyphColors ? aTroikaGlyphColor / 255.0 : diffuse;
|
|
219
|
+
`))),{vertexShader:i,fragmentShader:c}}});return t.transparent=!0,t.forceSinglePass=!0,Object.defineProperties(t,{isTroikaTextMaterial:{value:!0},shadowSide:{get(){return this.side},set(){}}}),t}const wr=new xt({color:16777215,side:Fa,transparent:!0}),ca=8421504,la=new Ct,Mn=new ke,hr=new ke,$t=[],ol=new ke,Ar="+x+y";function ua(u){return Array.isArray(u)?u[0]:u}let Na=()=>{const u=new _n(new Rr(1,1),wr);return Na=()=>u,u},Ka=()=>{const u=new _n(new Rr(1,1,32,1),wr);return Ka=()=>u,u};const al={type:"syncstart"},sl={type:"synccomplete"},ja=["font","fontSize","fontStyle","fontWeight","lang","letterSpacing","lineHeight","maxWidth","overflowWrap","text","direction","textAlign","textIndent","whiteSpace","anchorX","anchorY","colorRanges","sdfGlyphSize"],il=ja.concat("material","color","depthOffset","clipRect","curveRadius","orientation","glyphGeometryDetail");let Qa=class extends _n{constructor(){const t=new qc;super(t,null),this.text="",this.anchorX=0,this.anchorY=0,this.curveRadius=0,this.direction="auto",this.font=null,this.unicodeFontsURL=null,this.fontSize=.1,this.fontWeight="normal",this.fontStyle="normal",this.lang=null,this.letterSpacing=0,this.lineHeight="normal",this.maxWidth=1/0,this.overflowWrap="normal",this.textAlign="left",this.textIndent=0,this.whiteSpace="normal",this.material=null,this.color=null,this.colorRanges=null,this.outlineWidth=0,this.outlineColor=0,this.outlineOpacity=1,this.outlineBlur=0,this.outlineOffsetX=0,this.outlineOffsetY=0,this.strokeWidth=0,this.strokeColor=ca,this.strokeOpacity=1,this.fillOpacity=1,this.depthOffset=0,this.clipRect=null,this.orientation=Ar,this.glyphGeometryDetail=1,this.sdfGlyphSize=null,this.gpuAccelerateSDF=!0,this.debugSDF=!1}sync(t){this._needsSync&&(this._needsSync=!1,this._isSyncing?(this._queuedSyncs||(this._queuedSyncs=[])).push(t):(this._isSyncing=!0,this.dispatchEvent(al),Oa({text:this.text,font:this.font,lang:this.lang,fontSize:this.fontSize||.1,fontWeight:this.fontWeight||"normal",fontStyle:this.fontStyle||"normal",letterSpacing:this.letterSpacing||0,lineHeight:this.lineHeight||"normal",maxWidth:this.maxWidth,direction:this.direction||"auto",textAlign:this.textAlign,textIndent:this.textIndent,whiteSpace:this.whiteSpace,overflowWrap:this.overflowWrap,anchorX:this.anchorX,anchorY:this.anchorY,colorRanges:this.colorRanges,includeCaretPositions:!0,sdfGlyphSize:this.sdfGlyphSize,gpuAccelerateSDF:this.gpuAccelerateSDF,unicodeFontsURL:this.unicodeFontsURL},i=>{this._isSyncing=!1,this._textRenderInfo=i,this.geometry.updateGlyphs(i.glyphBounds,i.glyphAtlasIndices,i.blockBounds,i.chunkedBounds,i.glyphColors);const c=this._queuedSyncs;c&&(this._queuedSyncs=null,this._needsSync=!0,this.sync(()=>{c.forEach(n=>n&&n())})),this.dispatchEvent(sl),t&&t()})))}onBeforeRender(t,i,c,n,e,r){this.sync(),e.isTroikaTextMaterial&&this._prepareForRender(e)}dispose(){this.geometry.dispose()}get textRenderInfo(){return this._textRenderInfo||null}createDerivedMaterial(t){return rl(t)}get material(){let t=this._derivedMaterial;const i=this._baseMaterial||this._defaultMaterial||(this._defaultMaterial=wr.clone());if((!t||!t.isDerivedFrom(i))&&(t=this._derivedMaterial=this.createDerivedMaterial(i),i.addEventListener("dispose",function c(){i.removeEventListener("dispose",c),t.dispose()})),this.hasOutline()){let c=t._outlineMtl;return c||(c=t._outlineMtl=Object.create(t,{id:{value:t.id+.1}}),c.isTextOutlineMaterial=!0,c.depthWrite=!1,c.map=null,t.addEventListener("dispose",function n(){t.removeEventListener("dispose",n),c.dispose()})),[c,t]}else return t}set material(t){t&&t.isTroikaTextMaterial?(this._derivedMaterial=t,this._baseMaterial=t.baseMaterial):this._baseMaterial=t}hasOutline(){return!!(this.outlineWidth||this.outlineBlur||this.outlineOffsetX||this.outlineOffsetY)}get glyphGeometryDetail(){return this.geometry.detail}set glyphGeometryDetail(t){this.geometry.detail=t}get curveRadius(){return this.geometry.curveRadius}set curveRadius(t){this.geometry.curveRadius=t}get customDepthMaterial(){return ua(this.material).getDepthMaterial()}set customDepthMaterial(t){}get customDistanceMaterial(){return ua(this.material).getDistanceMaterial()}set customDistanceMaterial(t){}_prepareForRender(t){const i=t.isTextOutlineMaterial,c=t.uniforms,n=this.textRenderInfo;if(n){const{sdfTexture:a,blockBounds:o}=n;c.uTroikaSDFTexture.value=a,c.uTroikaSDFTextureSize.value.set(a.image.width,a.image.height),c.uTroikaSDFGlyphSize.value=n.sdfGlyphSize,c.uTroikaSDFExponent.value=n.sdfExponent,c.uTroikaTotalBounds.value.fromArray(o),c.uTroikaUseGlyphColors.value=!i&&!!n.glyphColors;let s=0,l=0,f=0,d,h,A,m=0,p=0;if(i){let{outlineWidth:C,outlineOffsetX:b,outlineOffsetY:g,outlineBlur:E,outlineOpacity:D}=this;s=this._parsePercent(C)||0,l=Math.max(0,this._parsePercent(E)||0),d=D,m=this._parsePercent(b)||0,p=this._parsePercent(g)||0}else f=Math.max(0,this._parsePercent(this.strokeWidth)||0),f&&(A=this.strokeColor,c.uTroikaStrokeColor.value.set(A??ca),h=this.strokeOpacity,h==null&&(h=1)),d=this.fillOpacity;c.uTroikaEdgeOffset.value=s,c.uTroikaPositionOffset.value.set(m,p),c.uTroikaBlurRadius.value=l,c.uTroikaStrokeWidth.value=f,c.uTroikaStrokeOpacity.value=h,c.uTroikaFillOpacity.value=d??1,c.uTroikaCurveRadius.value=this.curveRadius||0;let v=this.clipRect;if(v&&Array.isArray(v)&&v.length===4)c.uTroikaClipRect.value.fromArray(v);else{const C=(this.fontSize||.1)*100;c.uTroikaClipRect.value.set(o[0]-C,o[1]-C,o[2]+C,o[3]+C)}this.geometry.applyClipRect(c.uTroikaClipRect.value)}c.uTroikaSDFDebug.value=!!this.debugSDF,t.polygonOffset=!!this.depthOffset,t.polygonOffsetFactor=t.polygonOffsetUnits=this.depthOffset||0;const e=i?this.outlineColor||0:this.color;if(e==null)delete t.color;else{const a=t.hasOwnProperty("color")?t.color:t.color=new Pe;(e!==a._input||typeof e=="object")&&a.set(a._input=e)}let r=this.orientation||Ar;if(r!==t._orientation){let a=c.uTroikaOrient.value;r=r.replace(/[^-+xyz]/g,"");let o=r!==Ar&&r.match(/^([-+])([xyz])([-+])([xyz])$/);if(o){let[,s,l,f,d]=o;Mn.set(0,0,0)[l]=s==="-"?1:-1,hr.set(0,0,0)[d]=f==="-"?-1:1,la.lookAt(ol,Mn.cross(hr),hr),a.setFromMatrix4(la)}else a.identity();t._orientation=r}}_parsePercent(t){if(typeof t=="string"){let i=t.match(/^(-?[\d.]+)%$/),c=i?parseFloat(i[1]):NaN;t=(isNaN(c)?0:c/100)*this.fontSize}return t}localPositionToTextCoords(t,i=new qe){i.copy(t);const c=this.curveRadius;return c&&(i.x=Math.atan2(t.x,Math.abs(c)-Math.abs(t.z))*Math.abs(c)),i}worldPositionToTextCoords(t,i=new qe){return Mn.copy(t),this.localPositionToTextCoords(this.worldToLocal(Mn),i)}raycast(t,i){const{textRenderInfo:c,curveRadius:n}=this;if(c){const e=c.blockBounds,r=n?Ka():Na(),a=r.geometry,{position:o,uv:s}=a.attributes;for(let l=0;l<s.count;l++){let f=e[0]+s.getX(l)*(e[2]-e[0]);const d=e[1]+s.getY(l)*(e[3]-e[1]);let h=0;n&&(h=n-Math.cos(f/n)*n,f=Math.sin(f/n)*n),o.setXYZ(l,f,d,h)}a.boundingSphere=this.geometry.boundingSphere,a.boundingBox=this.geometry.boundingBox,r.matrixWorld=this.matrixWorld,r.material.side=this.material.side,$t.length=0,r.raycast(t,$t);for(let l=0;l<$t.length;l++)$t[l].object=this,i.push($t[l])}}copy(t){const i=this.geometry;return super.copy(t),this.geometry=i,il.forEach(c=>{this[c]=t[c]}),this}clone(){return new this.constructor().copy(this)}};ja.forEach(u=>{const t="_private_"+u;Object.defineProperty(Qa.prototype,u,{get(){return this[t]},set(i){i!==this[t]&&(this[t]=i,this._needsSync=!0)}})});new Gr;new Pe;const Xa=V.forwardRef(({sdfGlyphSize:u=64,anchorX:t="center",anchorY:i="middle",font:c,fontSize:n=1,children:e,characters:r,onSync:a,...o},s)=>{const l=We(({invalidate:A})=>A),[f]=V.useState(()=>new Qa),[d,h]=V.useMemo(()=>{const A=[];let m="";return V.Children.forEach(e,p=>{typeof p=="string"||typeof p=="number"?m+=p:A.push(p)}),[A,m]},[e]);return os(()=>new Promise(A=>Qc({font:c,characters:r},A)),["troika-text",c,r]),V.useLayoutEffect(()=>void f.sync(()=>{l(),a&&a(f)})),V.useEffect(()=>()=>f.dispose(),[f]),V.createElement("primitive",st({object:f,ref:s,font:c,text:h,anchorX:t,anchorY:i,fontSize:n,sdfGlyphSize:u},o),d)});function Wa(u,t,i,c){const n=class extends js{constructor(r={}){const a=Object.entries(u);super({uniforms:a.reduce((o,[s,l])=>{const f=Ra.clone({[s]:{value:l}});return{...o,...f}},{}),vertexShader:t,fragmentShader:i}),this.key="",a.forEach(([o])=>Object.defineProperty(this,o,{get:()=>this.uniforms[o].value,set:s=>this.uniforms[o].value=s})),Object.assign(this,r)}};return n.key=Ma.generateUUID(),n}const pr=u=>u===Object(u)&&!Array.isArray(u)&&typeof u!="function";function Ur(u,t){const i=We(e=>e.gl),c=Ut(Un,pr(u)?Object.values(u):u);return V.useLayoutEffect(()=>{t==null||t(c)},[t]),V.useEffect(()=>{if("initTexture"in i){let e=[];Array.isArray(c)?e=c:c instanceof cn?e=[c]:pr(c)&&(e=Object.values(c)),e.forEach(r=>{r instanceof cn&&i.initTexture(r)})}},[i,c]),V.useMemo(()=>{if(pr(u)){const e={};let r=0;for(const a in u)e[a]=c[r++];return e}else return c},[u,c])}Ur.preload=u=>Ut.preload(Un,u);Ur.clear=u=>Ut.clear(Un,u);const cl=()=>parseInt(ma.replace(/\D+/g,"")),ll=cl(),fa=Wa({color:new Pe("white"),scale:new qe(1,1),imageBounds:new qe(1,1),resolution:1024,map:null,zoom:1,radius:0,grayscale:0,opacity:1},`
|
|
220
|
+
varying vec2 vUv;
|
|
221
|
+
varying vec2 vPos;
|
|
222
|
+
void main() {
|
|
223
|
+
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);
|
|
224
|
+
vUv = uv;
|
|
225
|
+
vPos = position.xy;
|
|
226
|
+
}
|
|
227
|
+
`,`
|
|
228
|
+
// mostly from https://gist.github.com/statico/df64c5d167362ecf7b34fca0b1459a44
|
|
229
|
+
varying vec2 vUv;
|
|
230
|
+
varying vec2 vPos;
|
|
231
|
+
uniform vec2 scale;
|
|
232
|
+
uniform vec2 imageBounds;
|
|
233
|
+
uniform float resolution;
|
|
234
|
+
uniform vec3 color;
|
|
235
|
+
uniform sampler2D map;
|
|
236
|
+
uniform float radius;
|
|
237
|
+
uniform float zoom;
|
|
238
|
+
uniform float grayscale;
|
|
239
|
+
uniform float opacity;
|
|
240
|
+
const vec3 luma = vec3(.299, 0.587, 0.114);
|
|
241
|
+
vec4 toGrayscale(vec4 color, float intensity) {
|
|
242
|
+
return vec4(mix(color.rgb, vec3(dot(color.rgb, luma)), intensity), color.a);
|
|
243
|
+
}
|
|
244
|
+
vec2 aspect(vec2 size) {
|
|
245
|
+
return size / min(size.x, size.y);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
const float PI = 3.14159265;
|
|
249
|
+
|
|
250
|
+
// from https://iquilezles.org/articles/distfunctions
|
|
251
|
+
float udRoundBox( vec2 p, vec2 b, float r ) {
|
|
252
|
+
return length(max(abs(p)-b+r,0.0))-r;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
void main() {
|
|
256
|
+
vec2 s = aspect(scale);
|
|
257
|
+
vec2 i = aspect(imageBounds);
|
|
258
|
+
float rs = s.x / s.y;
|
|
259
|
+
float ri = i.x / i.y;
|
|
260
|
+
vec2 new = rs < ri ? vec2(i.x * s.y / i.y, s.y) : vec2(s.x, i.y * s.x / i.x);
|
|
261
|
+
vec2 offset = (rs < ri ? vec2((new.x - s.x) / 2.0, 0.0) : vec2(0.0, (new.y - s.y) / 2.0)) / new;
|
|
262
|
+
vec2 uv = vUv * s / new + offset;
|
|
263
|
+
vec2 zUv = (uv - vec2(0.5, 0.5)) / zoom + vec2(0.5, 0.5);
|
|
264
|
+
|
|
265
|
+
vec2 res = vec2(scale * resolution);
|
|
266
|
+
vec2 halfRes = 0.5 * res;
|
|
267
|
+
float b = udRoundBox(vUv.xy * res - halfRes, halfRes, resolution * radius);
|
|
268
|
+
vec3 a = mix(vec3(1.0,0.0,0.0), vec3(0.0,0.0,0.0), smoothstep(0.0, 1.0, b));
|
|
269
|
+
gl_FragColor = toGrayscale(texture2D(map, zUv) * vec4(color, opacity * a), grayscale);
|
|
270
|
+
|
|
271
|
+
#include <tonemapping_fragment>
|
|
272
|
+
#include <${ll>=154?"colorspace_fragment":"encodings_fragment"}>
|
|
273
|
+
}
|
|
274
|
+
`),Ya=V.forwardRef(({children:u,color:t,segments:i=1,scale:c=1,zoom:n=1,grayscale:e=0,opacity:r=1,radius:a=0,texture:o,toneMapped:s,transparent:l,side:f,...d},h)=>{pa({ImageMaterial:fa});const A=V.useRef(null),m=We(b=>b.size),p=Array.isArray(c)?[c[0],c[1]]:[c,c],v=[o.image.width,o.image.height],C=Math.max(m.width,m.height);return V.useImperativeHandle(h,()=>A.current,[]),V.useLayoutEffect(()=>{A.current.geometry.parameters&&A.current.material.scale.set(p[0]*A.current.geometry.parameters.width,p[1]*A.current.geometry.parameters.height)},[p[0],p[1]]),V.createElement("mesh",st({ref:A,scale:Array.isArray(c)?[...c,1]:c},d),V.createElement("planeGeometry",{args:[1,1,i,i]}),V.createElement("imageMaterial",{color:t,map:o,zoom:n,grayscale:e,opacity:r,scale:p,imageBounds:v,resolution:C,radius:a,toneMapped:s,transparent:l,side:f,key:fa.key}),u)}),ul=V.forwardRef(({url:u,...t},i)=>{const c=Ur(u);return V.createElement(Ya,st({},t,{texture:c,ref:i}))}),fl=V.forwardRef(({url:u,...t},i)=>V.createElement(Ya,st({},t,{ref:i}))),en=V.forwardRef((u,t)=>{if(u.url)return V.createElement(ul,st({},u,{ref:t}));if(u.texture)return V.createElement(fl,st({},u,{ref:t}));throw new Error("<Image /> requires a url or texture")});let Tn=null,Va="https://www.gstatic.com/draco/versioned/decoders/1.5.5/";function za(u=!0,t=!0,i){return c=>{i&&i(c),u&&(Tn||(Tn=new fc),Tn.setDecoderPath(typeof u=="string"?u:Va),c.setDRACOLoader(Tn)),t&&c.setMeshoptDecoder(typeof fr=="function"?fr():fr)}}const kn=(u,t,i,c)=>Ut(Sr,u,za(t,i,c));kn.preload=(u,t,i,c)=>Ut.preload(Sr,u,za(t,i,c));kn.clear=u=>Ut.clear(Sr,u);kn.setDecoderPath=u=>{Va=u};const dl=Wa({},"void main() { }","void main() { gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); discard; }");class hl extends $e{constructor(t=6,i=!1){super(),this.uniforms={chromaticAberration:{value:.05},transmission:{value:0},_transmission:{value:1},transmissionMap:{value:null},roughness:{value:0},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:1/0},attenuationColor:{value:new Pe("white")},anisotropicBlur:{value:.1},time:{value:0},distortion:{value:0},distortionScale:{value:.5},temporalDistortion:{value:0},buffer:{value:null}},this.onBeforeCompile=c=>{c.uniforms={...c.uniforms,...this.uniforms},this.anisotropy>0&&(c.defines.USE_ANISOTROPY=""),i?c.defines.USE_SAMPLER="":c.defines.USE_TRANSMISSION="",c.fragmentShader=`
|
|
275
|
+
uniform float chromaticAberration;
|
|
276
|
+
uniform float anisotropicBlur;
|
|
277
|
+
uniform float time;
|
|
278
|
+
uniform float distortion;
|
|
279
|
+
uniform float distortionScale;
|
|
280
|
+
uniform float temporalDistortion;
|
|
281
|
+
uniform sampler2D buffer;
|
|
282
|
+
|
|
283
|
+
vec3 random3(vec3 c) {
|
|
284
|
+
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
285
|
+
vec3 r;
|
|
286
|
+
r.z = fract(512.0*j);
|
|
287
|
+
j *= .125;
|
|
288
|
+
r.x = fract(512.0*j);
|
|
289
|
+
j *= .125;
|
|
290
|
+
r.y = fract(512.0*j);
|
|
291
|
+
return r-0.5;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
uint hash( uint x ) {
|
|
295
|
+
x += ( x << 10u );
|
|
296
|
+
x ^= ( x >> 6u );
|
|
297
|
+
x += ( x << 3u );
|
|
298
|
+
x ^= ( x >> 11u );
|
|
299
|
+
x += ( x << 15u );
|
|
300
|
+
return x;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// Compound versions of the hashing algorithm I whipped together.
|
|
304
|
+
uint hash( uvec2 v ) { return hash( v.x ^ hash(v.y) ); }
|
|
305
|
+
uint hash( uvec3 v ) { return hash( v.x ^ hash(v.y) ^ hash(v.z) ); }
|
|
306
|
+
uint hash( uvec4 v ) { return hash( v.x ^ hash(v.y) ^ hash(v.z) ^ hash(v.w) ); }
|
|
307
|
+
|
|
308
|
+
// Construct a float with half-open range [0:1] using low 23 bits.
|
|
309
|
+
// All zeroes yields 0.0, all ones yields the next smallest representable value below 1.0.
|
|
310
|
+
float floatConstruct( uint m ) {
|
|
311
|
+
const uint ieeeMantissa = 0x007FFFFFu; // binary32 mantissa bitmask
|
|
312
|
+
const uint ieeeOne = 0x3F800000u; // 1.0 in IEEE binary32
|
|
313
|
+
m &= ieeeMantissa; // Keep only mantissa bits (fractional part)
|
|
314
|
+
m |= ieeeOne; // Add fractional part to 1.0
|
|
315
|
+
float f = uintBitsToFloat( m ); // Range [1:2]
|
|
316
|
+
return f - 1.0; // Range [0:1]
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
// Pseudo-random value in half-open range [0:1].
|
|
320
|
+
float randomBase( float x ) { return floatConstruct(hash(floatBitsToUint(x))); }
|
|
321
|
+
float randomBase( vec2 v ) { return floatConstruct(hash(floatBitsToUint(v))); }
|
|
322
|
+
float randomBase( vec3 v ) { return floatConstruct(hash(floatBitsToUint(v))); }
|
|
323
|
+
float randomBase( vec4 v ) { return floatConstruct(hash(floatBitsToUint(v))); }
|
|
324
|
+
float rand(float seed) {
|
|
325
|
+
float result = randomBase(vec3(gl_FragCoord.xy, seed));
|
|
326
|
+
return result;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
const float F3 = 0.3333333;
|
|
330
|
+
const float G3 = 0.1666667;
|
|
331
|
+
|
|
332
|
+
float snoise(vec3 p) {
|
|
333
|
+
vec3 s = floor(p + dot(p, vec3(F3)));
|
|
334
|
+
vec3 x = p - s + dot(s, vec3(G3));
|
|
335
|
+
vec3 e = step(vec3(0.0), x - x.yzx);
|
|
336
|
+
vec3 i1 = e*(1.0 - e.zxy);
|
|
337
|
+
vec3 i2 = 1.0 - e.zxy*(1.0 - e);
|
|
338
|
+
vec3 x1 = x - i1 + G3;
|
|
339
|
+
vec3 x2 = x - i2 + 2.0*G3;
|
|
340
|
+
vec3 x3 = x - 1.0 + 3.0*G3;
|
|
341
|
+
vec4 w, d;
|
|
342
|
+
w.x = dot(x, x);
|
|
343
|
+
w.y = dot(x1, x1);
|
|
344
|
+
w.z = dot(x2, x2);
|
|
345
|
+
w.w = dot(x3, x3);
|
|
346
|
+
w = max(0.6 - w, 0.0);
|
|
347
|
+
d.x = dot(random3(s), x);
|
|
348
|
+
d.y = dot(random3(s + i1), x1);
|
|
349
|
+
d.z = dot(random3(s + i2), x2);
|
|
350
|
+
d.w = dot(random3(s + 1.0), x3);
|
|
351
|
+
w *= w;
|
|
352
|
+
w *= w;
|
|
353
|
+
d *= w;
|
|
354
|
+
return dot(d, vec4(52.0));
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
float snoiseFractal(vec3 m) {
|
|
358
|
+
return 0.5333333* snoise(m)
|
|
359
|
+
+0.2666667* snoise(2.0*m)
|
|
360
|
+
+0.1333333* snoise(4.0*m)
|
|
361
|
+
+0.0666667* snoise(8.0*m);
|
|
362
|
+
}
|
|
363
|
+
`+c.fragmentShader,c.fragmentShader=c.fragmentShader.replace("#include <transmission_pars_fragment>",`
|
|
364
|
+
#ifdef USE_TRANSMISSION
|
|
365
|
+
// Transmission code is based on glTF-Sampler-Viewer
|
|
366
|
+
// https://github.com/KhronosGroup/glTF-Sample-Viewer
|
|
367
|
+
uniform float _transmission;
|
|
368
|
+
uniform float thickness;
|
|
369
|
+
uniform float attenuationDistance;
|
|
370
|
+
uniform vec3 attenuationColor;
|
|
371
|
+
#ifdef USE_TRANSMISSIONMAP
|
|
372
|
+
uniform sampler2D transmissionMap;
|
|
373
|
+
#endif
|
|
374
|
+
#ifdef USE_THICKNESSMAP
|
|
375
|
+
uniform sampler2D thicknessMap;
|
|
376
|
+
#endif
|
|
377
|
+
uniform vec2 transmissionSamplerSize;
|
|
378
|
+
uniform sampler2D transmissionSamplerMap;
|
|
379
|
+
uniform mat4 modelMatrix;
|
|
380
|
+
uniform mat4 projectionMatrix;
|
|
381
|
+
varying vec3 vWorldPosition;
|
|
382
|
+
vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {
|
|
383
|
+
// Direction of refracted light.
|
|
384
|
+
vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );
|
|
385
|
+
// Compute rotation-independant scaling of the model matrix.
|
|
386
|
+
vec3 modelScale;
|
|
387
|
+
modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );
|
|
388
|
+
modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );
|
|
389
|
+
modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
|
|
390
|
+
// The thickness is specified in local space.
|
|
391
|
+
return normalize( refractionVector ) * thickness * modelScale;
|
|
392
|
+
}
|
|
393
|
+
float applyIorToRoughness( const in float roughness, const in float ior ) {
|
|
394
|
+
// Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
|
|
395
|
+
// an IOR of 1.5 results in the default amount of microfacet refraction.
|
|
396
|
+
return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
|
|
397
|
+
}
|
|
398
|
+
vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {
|
|
399
|
+
float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
|
|
400
|
+
#ifdef USE_SAMPLER
|
|
401
|
+
#ifdef texture2DLodEXT
|
|
402
|
+
return texture2DLodEXT(transmissionSamplerMap, fragCoord.xy, framebufferLod);
|
|
403
|
+
#else
|
|
404
|
+
return texture2D(transmissionSamplerMap, fragCoord.xy, framebufferLod);
|
|
405
|
+
#endif
|
|
406
|
+
#else
|
|
407
|
+
return texture2D(buffer, fragCoord.xy);
|
|
408
|
+
#endif
|
|
409
|
+
}
|
|
410
|
+
vec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {
|
|
411
|
+
if ( isinf( attenuationDistance ) ) {
|
|
412
|
+
// Attenuation distance is +∞, i.e. the transmitted color is not attenuated at all.
|
|
413
|
+
return radiance;
|
|
414
|
+
} else {
|
|
415
|
+
// Compute light attenuation using Beer's law.
|
|
416
|
+
vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;
|
|
417
|
+
vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); // Beer's law
|
|
418
|
+
return transmittance * radiance;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,
|
|
422
|
+
const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,
|
|
423
|
+
const in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,
|
|
424
|
+
const in vec3 attenuationColor, const in float attenuationDistance ) {
|
|
425
|
+
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
426
|
+
vec3 refractedRayExit = position + transmissionRay;
|
|
427
|
+
// Project refracted vector on the framebuffer, while mapping to normalized device coordinates.
|
|
428
|
+
vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );
|
|
429
|
+
vec2 refractionCoords = ndcPos.xy / ndcPos.w;
|
|
430
|
+
refractionCoords += 1.0;
|
|
431
|
+
refractionCoords /= 2.0;
|
|
432
|
+
// Sample framebuffer to get pixel the refracted ray hits.
|
|
433
|
+
vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );
|
|
434
|
+
vec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );
|
|
435
|
+
// Get the specular component.
|
|
436
|
+
vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );
|
|
437
|
+
return vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );
|
|
438
|
+
}
|
|
439
|
+
#endif
|
|
440
|
+
`),c.fragmentShader=c.fragmentShader.replace("#include <transmission_fragment>",`
|
|
441
|
+
// Improve the refraction to use the world pos
|
|
442
|
+
material.transmission = _transmission;
|
|
443
|
+
material.transmissionAlpha = 1.0;
|
|
444
|
+
material.thickness = thickness;
|
|
445
|
+
material.attenuationDistance = attenuationDistance;
|
|
446
|
+
material.attenuationColor = attenuationColor;
|
|
447
|
+
#ifdef USE_TRANSMISSIONMAP
|
|
448
|
+
material.transmission *= texture2D( transmissionMap, vUv ).r;
|
|
449
|
+
#endif
|
|
450
|
+
#ifdef USE_THICKNESSMAP
|
|
451
|
+
material.thickness *= texture2D( thicknessMap, vUv ).g;
|
|
452
|
+
#endif
|
|
453
|
+
|
|
454
|
+
vec3 pos = vWorldPosition;
|
|
455
|
+
float runningSeed = 0.0;
|
|
456
|
+
vec3 v = normalize( cameraPosition - pos );
|
|
457
|
+
vec3 n = inverseTransformDirection( normal, viewMatrix );
|
|
458
|
+
vec3 transmission = vec3(0.0);
|
|
459
|
+
float transmissionR, transmissionB, transmissionG;
|
|
460
|
+
float randomCoords = rand(runningSeed++);
|
|
461
|
+
float thickness_smear = thickness * max(pow(roughnessFactor, 0.33), anisotropicBlur);
|
|
462
|
+
vec3 distortionNormal = vec3(0.0);
|
|
463
|
+
vec3 temporalOffset = vec3(time, -time, -time) * temporalDistortion;
|
|
464
|
+
if (distortion > 0.0) {
|
|
465
|
+
distortionNormal = distortion * vec3(snoiseFractal(vec3((pos * distortionScale + temporalOffset))), snoiseFractal(vec3(pos.zxy * distortionScale - temporalOffset)), snoiseFractal(vec3(pos.yxz * distortionScale + temporalOffset)));
|
|
466
|
+
}
|
|
467
|
+
for (float i = 0.0; i < ${t}.0; i ++) {
|
|
468
|
+
vec3 sampleNorm = normalize(n + roughnessFactor * roughnessFactor * 2.0 * normalize(vec3(rand(runningSeed++) - 0.5, rand(runningSeed++) - 0.5, rand(runningSeed++) - 0.5)) * pow(rand(runningSeed++), 0.33) + distortionNormal);
|
|
469
|
+
transmissionR = getIBLVolumeRefraction(
|
|
470
|
+
sampleNorm, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,
|
|
471
|
+
pos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness + thickness_smear * (i + randomCoords) / float(${t}),
|
|
472
|
+
material.attenuationColor, material.attenuationDistance
|
|
473
|
+
).r;
|
|
474
|
+
transmissionG = getIBLVolumeRefraction(
|
|
475
|
+
sampleNorm, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,
|
|
476
|
+
pos, modelMatrix, viewMatrix, projectionMatrix, material.ior * (1.0 + chromaticAberration * (i + randomCoords) / float(${t})) , material.thickness + thickness_smear * (i + randomCoords) / float(${t}),
|
|
477
|
+
material.attenuationColor, material.attenuationDistance
|
|
478
|
+
).g;
|
|
479
|
+
transmissionB = getIBLVolumeRefraction(
|
|
480
|
+
sampleNorm, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,
|
|
481
|
+
pos, modelMatrix, viewMatrix, projectionMatrix, material.ior * (1.0 + 2.0 * chromaticAberration * (i + randomCoords) / float(${t})), material.thickness + thickness_smear * (i + randomCoords) / float(${t}),
|
|
482
|
+
material.attenuationColor, material.attenuationDistance
|
|
483
|
+
).b;
|
|
484
|
+
transmission.r += transmissionR;
|
|
485
|
+
transmission.g += transmissionG;
|
|
486
|
+
transmission.b += transmissionB;
|
|
487
|
+
}
|
|
488
|
+
transmission /= ${t}.0;
|
|
489
|
+
totalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );
|
|
490
|
+
`)},Object.keys(this.uniforms).forEach(c=>Object.defineProperty(this,c,{get:()=>this.uniforms[c].value,set:n=>this.uniforms[c].value=n}))}}const Al=V.forwardRef(({buffer:u,transmissionSampler:t=!1,backside:i=!1,side:c=Da,transmission:n=1,thickness:e=0,backsideThickness:r=0,backsideEnvMapIntensity:a=1,samples:o=10,resolution:s,backsideResolution:l,background:f,anisotropy:d,anisotropicBlur:h,...A},m)=>{pa({MeshTransmissionMaterial:hl});const p=V.useRef(null),[v]=V.useState(()=>new dl),C=vr(l||s),b=vr(s);let g,E,D,F;return yt(M=>{p.current.time=M.clock.elapsedTime,p.current.buffer===b.texture&&!t&&(F=p.current.__r3f.parent,F&&(D=M.gl.toneMapping,g=M.scene.background,E=p.current.envMapIntensity,M.gl.toneMapping=Qs,f&&(M.scene.background=f),F.material=v,i&&(M.gl.setRenderTarget(C),M.gl.render(M.scene,M.camera),F.material=p.current,F.material.buffer=C.texture,F.material.thickness=r,F.material.side=Xs,F.material.envMapIntensity=a),M.gl.setRenderTarget(b),M.gl.render(M.scene,M.camera),F.material=p.current,F.material.thickness=e,F.material.side=c,F.material.buffer=b.texture,F.material.envMapIntensity=E,M.scene.background=g,M.gl.setRenderTarget(null),M.gl.toneMapping=D))}),V.useImperativeHandle(m,()=>p.current,[]),V.createElement("meshTransmissionMaterial",st({args:[o,t],ref:p},A,{buffer:u||b.texture,_transmission:n,anisotropicBlur:h??d,transmission:t?n:0,thickness:e,side:c}))});function pl({all:u,scene:t,camera:i}){const c=We(({gl:r})=>r),n=We(({camera:r})=>r),e=We(({scene:r})=>r);return V.useLayoutEffect(()=>{const r=[];u&&(t||e).traverse(s=>{s.visible===!1&&(r.push(s),s.visible=!0)}),c.compile(t||e,i||n);const a=new Ws(128);new Ys(.01,1e5,a).update(c,t||e),a.dispose(),r.forEach(s=>s.visible=!1)},[]),null}function Za({mode:u="lens",lensProps:t={},barProps:i={},cubeProps:c={}}){const n=u==="bar"?vl:u==="cube"?Bl:ml,e=u==="bar"?i:u==="cube"?c:t,{navItems:r=[{label:"Home",link:""},{label:"About",link:""},{label:"Contact",link:""}],...a}=e;return Ee.jsx(as,{camera:{position:[0,0,20],fov:15},gl:{alpha:!0},children:Ee.jsxs(Ti,{damping:.2,pages:3,distance:.4,children:[u==="bar"&&Ee.jsx(gl,{items:r}),Ee.jsxs(n,{modeProps:a,children:[Ee.jsxs(jo,{children:[Ee.jsx(yl,{}),Ee.jsx(Cl,{})]}),Ee.jsx(jo,{html:!0}),Ee.jsx(pl,{})]})]})})}const _r=V.memo(function({children:t,glb:i,geometryKey:c,lockToBottom:n=!1,followPointer:e=!0,modeProps:r={},...a}){var g;const o=V.useRef(),{nodes:s}=kn(i),l=vr(),{viewport:f}=We(),[d]=V.useState(()=>new Vs),h=V.useRef(1);V.useEffect(()=>{var D;const E=(D=s[c])==null?void 0:D.geometry;E.computeBoundingBox(),h.current=E.boundingBox.max.x-E.boundingBox.min.x||1},[s,c]),yt((E,D)=>{const{gl:F,viewport:M,pointer:U,camera:x}=E,K=M.getCurrentViewport(x,[0,0,15]),y=e?U.x*K.width/2:0,S=n?-K.height/2+.2:e?U.y*K.height/2:0;if(yr.damp3(o.current.position,[y,S,15],.15,D),r.scale==null){const j=K.width*.9/h.current;o.current.scale.setScalar(Math.min(.15,j))}F.setRenderTarget(l),F.render(d,x),F.setRenderTarget(null),F.setClearColor(5384191,1)});const{scale:A,ior:m,thickness:p,anisotropy:v,chromaticAberration:C,...b}=r;return Ee.jsxs(Ee.Fragment,{children:[ss(t,d),Ee.jsxs("mesh",{scale:[f.width,f.height,1],children:[Ee.jsx("planeGeometry",{}),Ee.jsx("meshBasicMaterial",{map:l.texture,transparent:!0})]}),Ee.jsx("mesh",{ref:o,scale:A??.15,"rotation-x":Math.PI/2,geometry:(g=s[c])==null?void 0:g.geometry,...a,children:Ee.jsx(Al,{buffer:l.texture,ior:m??1.15,thickness:p??5,anisotropy:v??.01,chromaticAberration:C??.1,...b})})]})});function ml({modeProps:u,...t}){return Ee.jsx(_r,{glb:"/assets/3d/lens.glb",geometryKey:"Cylinder",followPointer:!0,modeProps:u,...t})}function Bl({modeProps:u,...t}){return Ee.jsx(_r,{glb:"/assets/3d/cube.glb",geometryKey:"Cube",followPointer:!0,modeProps:u,...t})}function vl({modeProps:u={},...t}){const i={transmission:1,roughness:0,thickness:10,ior:1.15,color:"#ffffff",attenuationColor:"#ffffff",attenuationDistance:.25};return Ee.jsx(_r,{glb:"/assets/3d/bar.glb",geometryKey:"Cube",lockToBottom:!0,followPointer:!1,modeProps:{...i,...u},...t})}function gl({items:u}){const t=V.useRef(),{viewport:i,camera:c}=We(),n={mobile:{max:639,spacing:.2,fontSize:.035},tablet:{max:1023,spacing:.24,fontSize:.035},desktop:{max:1/0,spacing:.3,fontSize:.035}},e=()=>{const f=window.innerWidth;return f<=n.mobile.max?"mobile":f<=n.tablet.max?"tablet":"desktop"},[r,a]=V.useState(e());V.useEffect(()=>{const f=()=>a(e());return window.addEventListener("resize",f),()=>window.removeEventListener("resize",f)},[]);const{spacing:o,fontSize:s}=n[r];yt(()=>{if(!t.current)return;const f=i.getCurrentViewport(c,[0,0,15]);t.current.position.set(0,-f.height/2+.2,15.1),t.current.children.forEach((d,h)=>{d.position.x=(h-(u.length-1)/2)*o})});const l=f=>{f&&(f.startsWith("#")?window.location.hash=f:window.location.href=f)};return Ee.jsx("group",{ref:t,renderOrder:10,children:u.map(({label:f,link:d})=>Ee.jsx(Xa,{fontSize:s,color:"white",anchorX:"center",anchorY:"middle",depthWrite:!1,outlineWidth:0,outlineBlur:"20%",outlineColor:"#000",outlineOpacity:.5,depthTest:!1,renderOrder:10,onClick:h=>{h.stopPropagation(),l(d)},onPointerOver:()=>document.body.style.cursor="pointer",onPointerOut:()=>document.body.style.cursor="auto",children:f},f))})}function Cl(){const u=V.useRef(),t=Ir(),{height:i}=We(c=>c.viewport);return yt(()=>{u.current.children[0].material.zoom=1+t.range(0,1/3)/3,u.current.children[1].material.zoom=1+t.range(0,1/3)/3,u.current.children[2].material.zoom=1+t.range(1.15/3,1/3)/2,u.current.children[3].material.zoom=1+t.range(1.15/3,1/3)/2,u.current.children[4].material.zoom=1+t.range(1.15/3,1/3)/2}),Ee.jsxs("group",{ref:u,children:[Ee.jsx(en,{position:[-2,0,0],scale:[3,i/1.1,1],url:"/assets/demo/cs1.webp"}),Ee.jsx(en,{position:[2,0,3],scale:3,url:"/assets/demo/cs2.webp"}),Ee.jsx(en,{position:[-2.05,-i,6],scale:[1,3,1],url:"/assets/demo/cs3.webp"}),Ee.jsx(en,{position:[-.6,-i,9],scale:[1,2,1],url:"/assets/demo/cs1.webp"}),Ee.jsx(en,{position:[.75,-i,10.5],scale:1.5,url:"/assets/demo/cs2.webp"})]})}function yl(){const u={mobile:{fontSize:.2},tablet:{fontSize:.4},desktop:{fontSize:.6}},t=()=>{const e=window.innerWidth;return e<=639?"mobile":e<=1023?"tablet":"desktop"},[i,c]=V.useState(t());V.useEffect(()=>{const e=()=>c(t());return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const{fontSize:n}=u[i];return Ee.jsx(Xa,{position:[0,0,12],fontSize:n,letterSpacing:-.05,outlineWidth:0,outlineBlur:"20%",outlineColor:"#000",outlineOpacity:.5,color:"white",anchorX:"center",anchorY:"middle",children:"React Bits"})}Za.__docgenInfo={description:"",methods:[],displayName:"FluidGlass",props:{mode:{defaultValue:{value:"'lens'",computed:!1},required:!1},lensProps:{defaultValue:{value:"{}",computed:!1},required:!1},barProps:{defaultValue:{value:"{}",computed:!1},required:!1},cubeProps:{defaultValue:{value:"{}",computed:!1},required:!1}}};const Il={title:"ReactBits/Components/FluidGlass",component:Za,parameters:{layout:"fullscreen"},tags:["autodocs"]},Dn={};var da,ha,Aa;Dn.parameters={...Dn.parameters,docs:{...(da=Dn.parameters)==null?void 0:da.docs,source:{originalSource:"{}",...(Aa=(ha=Dn.parameters)==null?void 0:ha.docs)==null?void 0:Aa.source}}};const Sl=["Default"];export{Dn as Default,Sl as __namedExportsOrder,Il as default};
|